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

I don't think any of this is new, but I will throw it out there in case it jogs someone elses memory.

1)BCCA will try and adventure in the HITS even though the quest to open it has not been completed. For HC, I suspect the thing to do is just always and unconditionally try and open it when you are already dealing with the Castle. Make HITS an option and then the SC players can turn it off, pull the star gear and identify bang potions elsewhere.

2)BCCA kept trying to go to the Barrr without the swashbuckling getup equipped. This puzzles me because it was clearly trying to maximize with "+outfit swashbuckling getup". The string did not seem to have been recorded in the mazimizer's MRU and one of my strings was still there so I wonder if the mazimizer didn't actually get called. But this is one of those weird things that won't get fixed or looked at until it is repeatable and its not there yet.

3)BCCA seems to unconditionally want a box of matches to unlock the Hidden Tavern. That might be worth making an option. Certainly it is not needed for an Oxy run, right? Maybe I have just annoyed the RNG but it seems as if adventuring in one place to get the matches when all of the other conditions of interest in that place have been met and it could go for a sphere and move on, takes longer. An observation, not a complaint, since I know the support for the revised Hidden City is not complete.

4) BCCA could do a better job of realizing that it just tried to do something and failed, and moving on to something else. Examples include the Barr and HITS above as well as any area where KoL wants you to confirm that your stats are low for the area. All three cases generated infinite loops for me today :-)

1) As Theraze noted, this is because there can sometimes be some RNG screwage in trying to open the HITS. The HITS stage only fires in hardcore, so firing in SC is not a concern. What we should do is add a check at the top of the bcascHoleInTheSky() function for if you haven't opened the HITS yet. I've done this.

2) Fixed by Theraze.

3) I believe you're right. Maybe the Hidden City adventuring can be optimised. The Bowling alley requires the tavern to optimise, so can't do that first. We could probably do the office first, and then if a book of matches just drops, use it. The apartment needs the tavern to optimise if you can drink. The hospital doesn't appear to need anything from the tavern. We could do the bowling alley and hospital first, then see if a book of matches drops?

With that said, I'm not planning on doing a lot of work to optimise small areas of the script for oxy or teet runs. The above should optimise for all runs.

4) The script should disable that warning. I've updated the script for that.
 
On the Hidden City. My sense of fairness requires me to note that the Hidden City support is clearly marked as "under development". I did not see that message until after I got the matches. Speaking of which I burned 63 turns not getting them in the hospital and then exactly one turn getting them in the park. I think getting the matches is probably a reasonable thing to do but I wonder if the Hospital is the best place to do that. More spading?
 
On the Hidden City. My sense of fairness requires me to note that the Hidden City support is clearly marked as "under development". I did not see that message until after I got the matches. Speaking of which I burned 63 turns not getting them in the hospital and then exactly one turn getting them in the park. I think getting the matches is probably a reasonable thing to do but I wonder if the Hospital is the best place to do that. More spading?

Apparently janitors got moved to the park (using the noncombat there), and the script doesn't know that. Being unable to track that sounds like a good reason to not try for a book of matches. Especially if the script doesn't use the booze for Thrice-Cursed (maybe it does though).
 
The script should probably try to get janitors from the park, because you can eliminate them from all the other areas, saving those wasted adventures fighting janitors, as well as getting a free bowling ball every time the janitor-dump NC comes up again after the first time. Every time we end up with a bowling ball before getting our matches, we should go to the alley, since that eliminates ~4 adventures needed there, possibly more if your item drop isn't great.

Regarding area primalcy, since you can get the accountants in the apartment, I tend to prefer to go there first. Since you should only need 1-2 trips through the apartment NC depending on if you're drinking for cursed or have olfaction, and I usually end it with about 3 of the pages if I get it on my first one (and done if it took both), which makes the 2 required NCs for the office building a little sad since the pages are collected before the first NC comes up, but... eh, what can you do?

Edit: Additional reasons to get janitors from the park: In the 5 or so adventures I just burned looking for my camera boaraffe, I got the NC twice. Both times I got a surgeon outfit piece. If that NC can both avoid the bowling and hospital effort, that makes it a great place in general to burn turns.
 
Last edited:
Yeah. If you want to see them as they get applied, you can turn Show commit messages after update (property svnShowCommitMessages) on. But afterwards, your best bet is checking on sourceforge or wherever the SVN is stored.
 
Thank you, both.

I will add to the Book of Matches thing: I have had two runs now where the script attempts to get the Book of Matches indefinitely from the hospital, even though the janitors aren't there. I have had to stop the script to get the Book of Matches from the park, and when I do get it and use it, the script stops and won't run anymore until I tell the script that I have completed the Hidden Temple quest. Not sure if that's where the script is supposed to be as far as the progress on scripting this part of the quest, so just figured I'd give some feedback.
 
Last edited:
I have no idea why the janitors were sent to the park in my case, since BCCA was burning turns for me, but my guess is that either NewLife or BCCA itself set the choice for me and I hit it. Regardless, until KoLmafia tracks that, if it ever does, it seems as if the safest thing to do is not set matches as a goal unless we know where the janitors are lurking.
 
Believe that mafia does already track it. Yep:
> pref janitor

relocatePygmyJanitor (user, now '68', default -1)
But yes, we should look for janitors at the park rather than in the hospital.
 
For now, can you just do the first 40 adventures in the high school and run it - that should work fine.
The script handles KoLHS pretty well if you do the high school yourself. I've done two runs and it saved me lots of time.

I've been too distracted by dread and real life, but I was thinking it would be nice and fairly simple to add a few lines to the script to use some of the craftable quest items at the right time. I'm thinking of things like the claymore and superwater, which are optimal to use at a specific ponit. Someone who's played more KoLHS would know which items are that simple. Stuff like erasers is probably never going to happen.

It would also be nice to abort when the 100-meat after-school booze drops. I'm not sure how to do that, especially since you can have some leftover from the previous day. Right now, I have to monitor the script and manually abort and drink when each one drops if I want those adventures.
 
Why you no entangle? :(

Code:
[990] Wartime Frat House
Encounter: War Pledge
Round 0: chef_rannos wins     initiative!
BCC: We are using the hebo against the     right monster.
Round 1: chef_rannos casts SPAGHETTI SPEAR!
Round     2: war pledge takes 10 damage.
Round 2: Ray's red eye glances at a bird     flying overhead. It drops out of the sky, smelling delicious as it lands.
You     lose 39 hit points
BCC: We are using the hebo     against the right monster.
Round 2: chef_rannos casts SPAGHETTI     SPEAR!
Round 3: war pledge takes 12 damage.
Round 3: Ray glares at a     passing penguin with his blue eye. The penguin nods, and says, "thanks,     youse guys; I was sweatin' my tail feathers off."
You lose 38 hit     points
BCC: We are using the hebo against the     right monster.
Round 3: chef_rannos casts SPAGHETTI SPEAR!
Round     4: war pledge takes 10 damage.
Round 4: Ray's red eye glances at an ant     crawling at your feet. The ant turns red and begins to smoke. Not, like,     cigarettes... Like something that's about to burst into flames.
You     lose 51 hit points
BCC: We are using the hebo     against the right monster.
Round 4: chef_rannos casts SPAGHETTI     SPEAR!
Round 5: war pledge takes 12 damage.
Round 5: Ray's yellow     eye gazes upon a pie cooling on a windowsill. The pie doesn't vanish, but     the hobo who was trying to steal it does.
You lose 52 hit points

Health     fell below 0. Auto-abort triggered.

Entangle and then saucey salve would be my preferred choices to waiting for the yellow ray when fighting a big guy like that.
 
The manor aliases aren't working, since the functions are bcascManorBedroom() not bcascBedroom(), etc. Since these aren't hosted on zarqon's server, I don't think I can fix these.
 
Cheese sauce storm is still causing the script to abort whenever it tries to use it, fyi.

This. I don't know why, but there seems to be a problem with the umlauts. Instead of "Käsesoßesturm", the script uses "Käsesoßesturm", which is correct HTML. But it will apparently cause KoLmafia to abort when used in combat.

As a workaround, I manually remove the occurences of it in the script (emphasis mine):

Code:
		foreach s in $skills[Spaghetti Spear, Ravioli Shurikens, Cannelloni Cannon, Stuffed Mortar Shell, Weapon of the Pastalord, Fearful Fettucini,
			Salsaball, Stream of Sauce, Saucestorm, Wave of Sauce, Saucegeyser, [B]Käsesoßesturm,[/B] Surge of Icing] {
			if (have_skill(s)) { allmyskills[s] = true; }
Code:
[B]			case $skill[Käsesoßesturm] :
				return (16*bPer + 0.20*myst*bPer + min(15, bAbs) + bElm)*isWeak($element[stench]);[/B]

Then of course the spell is useless since it will never be casted, but at least the script will run without problems.
 
Another thing:
I wanted to do a 100% Li'l Xenomorph run. If I enter Li'l Xenomorph in the relay script though and try to save it, it will cut off most of the name. Probably the apostrophe is interpreted as the end of the string, instead of as a part of it.

As a workaround, I did this:
Code:
string bcasc_doWarAs = get_property("bcasc_doWarAs"), bcasc_100familiar = [B]"Li'l Xenomorph"[/B], bcasc_warOutfit;
 
Last edited:
Back
Top