bumcheekcend.ash - A zero setup semi-automated ascension script!

Theraze

Active member
Well, BCA doesn't actually have a run_choice() currently. But the majority of the heart of the temple adventure should be something like:
Code:
			visit_url("choice.php?whichchoice=580&option=2&pwd");
			visit_url("choice.php?whichchoice=584&option=4&pwd");
			visit_url("choice.php?whichchoice=580&option=1&pwd");
			visit_url("choice.php?whichchoice=123&option=2&pwd");
			cli_execute("dvorak");
			visit_url("choice.php?whichchoice=125&option=3&pwd");
Note that I think you need to check for > 2 adventures first and do some other adventure if you don't have that much and end up in the heart... if you don't have nostril of the serpent, you're going to have a painful series of back/forth randomness also.
 

Winterbay

Active member
The Hidden Temple unlock currently sets the appropriate choice adventure settings and then adventures for a choice adventure and checking the result of said adventure against some set condition. In the case of the hidden temple the conditions are all items that you gain. In this case there is at least one item (the serpent thingie) but I guess one could just as well check for the name of the last adventure after having encountered the choice adventure.

That said, part of the problem may be that the name of the choice adventure isn't different enough to separate them (there are 4 of the same name but different image I think?).
 

Theraze

Active member
The problem with those 4 is that they're all the same choice NUMBER. So, like with the temple unlock...
Code:
		while (item_amount($item[spooky sapling]) == 0) {
			cli_execute("mood execute");
			if (contains_text(visit_url("adventure.php?snarfblat=15"), "Combat")) {
				bumRunCombat();
			} else {
				visit_url("choice.php?whichchoice=502&option=1&pwd="+my_hash());
				visit_url("choice.php?whichchoice=503&option=3&pwd="+my_hash());
				if (item_amount($item[bar skin]) > 0) visit_url("choice.php?whichchoice=504&option=2&pwd="+my_hash());
				visit_url("choice.php?whichchoice=504&option=3&pwd="+my_hash());
				visit_url("choice.php?whichchoice=504&option=4&pwd="+my_hash());
			}
		}
where you have 2-3 choices in the same choiceadv 504, you can't just set them and have it intelligently decide between them, you have to use visit_url. In the case of the hidden temple, you can set choice 580 to 2 and go back to decide on a new location... but every time you return from choosing, you go back to 580 and leave to choose a new location again. Over and over and over again. :)
 

Bale

Minion
BumCheekCity: Every now and then someone comes into the CounterChecker thread to ask me to fix a bug caused by your script.

bumcheekcend does not stop adventuring to allow people to collect their semi-rare manually. Apparently lots of people want to do this and they think that it is a bug in CounterChecker that prevents it. CounterChecker will allow adventure() to end so that they can collect their semi-rare. However bumcheekcend then loops back to keep on adventuring with a while() loop without detecting the rather important reason that adventure() ended. Obviously this is YOUR BUG, not mine.

Please fix this bug so that people will stop troubling me about it.
 

slyz

Developer
Or people should stop using CounterChecker when automating HC runs and use this counterScript instead:
PHP:
boolean main(string name, int remain)
{
	if ( name == "Fortune Cookie" ) abort();
	return true;
}
 

Theraze

Active member
This is due to bumAdv capturing all adventure results, here, so it controls its return code:
Code:
	if (can_interact()) {
		if (adventure(my_adventures(), loc, "consultCasual")) {}
	} else if (consultScript != "") {
		if (adventure(my_adventures(), loc, consultScript)) {}
	} else if (my_primestat() == $stat[Mysticality] && in_hardcore()) {
		if (adventure(my_adventures(), loc, "consultMyst")) {}
	} else {
		if (adventure(my_adventures(), loc)) {}
	}
	
	if(my_adventures() == 0)
		return false;
	else
		return true;
This makes it return true anytime there are still adventures left, but also means that if mafia aborts for manually collecting semirares or something similar, it keeps going as long as you still have adventures.
 

bumcheekcity

Active member
Interesting. My first thought is that slyz is right. My second is that I have a nasty feeling that because we capture out adventure results in bumAdv() then the abort in the counterChecker script wouldn't do anything at all.

My third is the knowledge that I'm sure I had a damn good reason for wrapping everything in while() loops but I forgot what it was.

Is there a way we could have an opt-in option to abort for semi-rares, regardless of whether a counterChecker script is used?
 

slyz

Developer
Why is that a bug?

Compare what your "Exp" is on Mafia's left pane when equipping your scarecrow with the leotarrrd, then with the spangly pants. What value does Mafia give you for each?

EDIT: Oh, I see. We have the scarecrow with spangly pants as a 2x volley, not "2.25x or 2.5x" as the Wiki now states.

EDIT2: I was reading everything wrong. The scarecrow with spangly pants is NOT a volley. Why would the maximizer equip spangly pants on your scarecrow when you want to maximize mainstat?

EDIT3: wow, this isn't even a new bug report thread, it's a post in BCAscend's thread. I should really get some sleep.
 
Last edited:

Theraze

Active member
Since the script already uses adventures one by one, why not add a check for semi rares?

Yeah, as BCC says just above this post and my quote of the code above in post 2328 shows, in the cases of the captured bumAdv, it tries to run all of your adventures, not one at a time...
 

morgad

Member
would there be any interest in my posting a patch to SF to automatically train up Boris skills, and deal with Clancy?
Code:
BCC: We have completed the stage [guild].
bcasc_lastCouncilVisit => 89001
BCC: Training Feasting
You learned a new skill: Demand Sandwich
BCC: Training Feasting
You learned a new skill: Legendary Girth
BCC: Training Feasting
You learned a new skill: Song of the Glorious Lunch
BCC: Training Feasting
You learned a new skill: Big Boned
BCC: Training Feasting
You learned a new skill: Legendary Appetite
BCC: Training Feasting
You learned a new skill: Heroic Belch
BCC: Training Feasting
You learned a new skill: Hungry Eyes
BCC: Training Feasting
You learned a new skill: More to Love
BCC: Training Feasting
You learned a new skill: Barrel Chested
BCC: Training Feasting
You learned a new skill: Gourmand
BCC: Training Shouting
You learned a new skill: Intimidating Bellow
BCC: Training Shouting
You learned a new skill: Legendary Bravado
BCC: Training Shouting
You learned a new skill: Song of Accompaniment
BCC: Unable to train - no room for any more Boris
BCC: We have not completed the stage [knob].

...

Level 9 Starting
bcasc_lastCouncilVisit => 89009
You acquire an item: strange leaflet
BCC: Training Fighting
You learned a new skill: Cleave
BCC: Unable to train - no room for any more Boris
BCC: stopping so you can pay attention to Clancy.

It is not ready for release yet as the training order is curently hard coded as feast/shout/fight, and I need to make
it configuarable to be feast, shout, fight, and manual in any order the user wants.

best regards
Dave
 

bumcheekcity

Active member
Yes, but I would just want to consider how the options would work. How would you propose the user set the option, what options would be available and what do you want them to be called?
 

bumcheekcity

Active member
Just to note, there's very little I'm not willing to have added in. The worst is that I make it opt-in, and then people can choose.
 

morgad

Member
BCC,
I was thinking of one option string for Boris

blank = no change from current behavior
321 = feast/shout/fight
123 = fight/shout/feast
30 = feast/then stop allow user to do rest manually
0 = fully manual

and one for Clancy
blank = no change
0 = stop every time Clancy needs attention
1 = automatically level up Clancy (but someone else will have to write the code for this)

these checks are called from my (modifed) bccouncil() a *maximum* of once per level, per ascension.
(BCA can go up more than one level between council checks)

best regards
Dave
 

Winterbay

Active member
As long as we can detect/deduce when the levelupping should occur we can run
Code:
bumAdv(correct location, "", "", "1 autostop", "Levelling Clancy")
to get the adventure.
 

morgad

Member
my current work-in-progress is
Code:
void bcAutoBoris() {
/// needs re-write !!

/// we want the user to be able to configure the priority of fight/shout/feast
/// (prioity 0 = abort so user can train manually), blank = do nothing at all
/// e.g. 321 = feast/shout/fight, 123 = fight/shout/feast, 30=feast then manual abort
	string defaultPriority = "321";
	string borisResult = visit_url("da.php?place=gate1");
	while (contains_text(borisResult, "hungering for knowledge")) {
/// can this be written better? array of text vs skill numbers?

		if (contains_text(borisResult, "Study Feasting")) {
			print("BCC: Training Feasting", "purple");
			visit_url("da.php?whichtree=3&action=borisskill");
		} else {
			if (contains_text(borisResult, "Study Shouting")) {
				print("BCC: Training Shouting", "purple");
				visit_url("da.php?whichtree=2&action=borisskill");
			} else {
				if (contains_text(borisResult, "Study Fighting")) {
					print("BCC: Training Fighting" ,"purple");
					visit_url("da.php?whichtree=1&action=borisskill");
				} else {
					print("BCC: You are a fully trained Boris." ,"purple");
					return;
				}
			}
		}
		borisResult = visit_url("da.php?place=gate1");
	}
	print("BCC: Unable to train - no room for any more Boris", ,"purple");
	return;
}


void bcAutoClancy() {
/// got to be a better way than this, needs a config option as well
	string charpane = visit_url("charpane.php");
	if (contains_text(charpane, "_att.gif")) abort("BCC: stopping so you can pay attention to Clancy.");	
/// do we eventually want to do this automatically?
/// what about buying the instrument from Uncle P's?	

}

void bcAutoGuild() {
/// eventually the code to check and buy guild skills will go here ...

}


void bcCouncil() {
	int lastVisit = get_property("bcasc_lastCouncilVisit").to_int();
	int thisVisit = 1000*my_ascensions()+my_level();
	if (lastVisit < thisVisit) {

		string visitString = thisVisit.to_string();

		set_property("bcasc_lastCouncilVisit", visitString);

		visit_url("council.php");
		if (my_path() == "Avatar of Boris") {
			bcAutoBoris();
			bcAutoClancy();
		} else {
			bcAutoGuild();
		}
	}
	return;

}

(with trivial fixes to bcs1() and bcs12() routines)

I would appreciate some eyeballs on the bccCouncil() changes t make sure I have not buggered up BCC's code.

(work-in-progress file is 'bumcheekascend.ash.drm' on my server, changes from svn version is 'diff.txt')

best regards
Dave
 
Last edited:
Top