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

Does it prevent the script from winning fights?

Yeah, it won't finish the fight even though I can clear win.

[850] Cobb's Knob Barracks
Encounter: off-duty Knob Goblin Elite Guard
Strategy: C:\Users\X\Desktop\KOL\ccs\Attack.ccs [default]
Round 0: X wins initiative!
WHAM: Running SmartStasis
Round 1: X executes a macro!
Round 1: X tries to steal an item!
WHAM: Starting evaluation and performing of attack
WHAM: We are going to 6-shot with attack with your weapon, attack with your weapon, attack with your weapon, attack with your weapon, attack with your weapon and attack with your weapon.
Round 2: X executes a macro!
Round 2: X attacks!
Round 3: off-duty knob goblin elite guard takes 17 damage.
Round 3: X attacks!
Round 4: off-duty knob goblin elite guard takes 11 damage.
Round 4: X attacks!
You lose 2 hit points
Round 5: X attacks!
Round 6: off-duty knob goblin elite guard takes 11 damage.
Round 6: X attacks!
Round 7: off-duty knob goblin elite guard takes 12 damage.
Round 7: X attacks!
Round 8: off-duty knob goblin elite guard takes 11 damage.
WHAM: Starting evaluation and performing of attack
WHAM: Unable to delevel until you can kill the monster without it killing you. Try it yourself.
WHAM: Unable to determine a valid combat strategy. For your benefit here are the numbers for your combat options.
WHAM: Attack with your weapon: 10.45 potential damage (raw damage: 13.79) and a hitchance of 95.45%.
WHAM: Cannelloni Cannon: 10.45 potential damage (raw damage: 20.25) and a hitchance of 100.00%.
WHAM: Moxious Maneuver: 10.45 potential damage (raw damage: 72.44) and a hitchance of 100.00%.
WHAM: sonar-in-a-biscuit: 6.00 potential damage (raw damage: 6.00) and a hitchance of 100.00%.
WHAM: terrible poem: 5.00 potential damage (raw damage: 5.00) and a hitchance of 100.00%.
WHAM: razor-sharp can lid: 2.50 potential damage (raw damage: 2.50) and a hitchance of 100.00%.
WHAM: Suckerpunch: 1.00 potential damage (raw damage: 1.00) and a hitchance of 100.00%.
WHAM: Entangling Noodles: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: disease: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: wussiness potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: patchouli incense stick: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Mountain Stream soda: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: spider web: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: 8-ball: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: bottle of Monsieur Bubble: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: scented massage oil: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: You now have the knowledge needed to go forward and be victorious
Round 8: X executes a macro!
KoLmafia thinks it is round 9 but KoL thinks it is round 8
WHAM: Unable to figure out a combat strategy. Helpful information regarding your skills have been printed to the CLI
You're on your own, partner.
Click here to continue in the relay browser.

It keeps trying to max monster level, but won't end a fight.

EDIT: Fixed by updating the SVN version, not sure what went wrong in that last one..
EDIT: Same thing happening again :l
 
Last edited:
Hey I'm running into this problem when running on the Hole in the sky

Verifying ingredients for star hat (1)...
You need 5 more star to continue.
Star chart crafting was unsuccessful.

Using mafia version 12074 and latest svn version of bcc
 
Two changes I'm tempted to commit (since I think I have commit access here and I'm finally switching over from updating the Rinn scripts) both related in the Level 6 quest.

Lines 4909 and 4917 both use item_amount to validate your comedy items. If you've worn something like the glasses though, that check fails and BCA loops... forever...

I've changed my personal copy to use available_amount instead, but... any objections?

Also, 4744 and 5089 both use the unicode character for the Sledgehammer improperly instead of æ like mafia does. I'd be tempted to fix those, as this is the major reason why people who try to edit their own copies have it get corrupted. :)

So... do I start being productive, or should I run changes here first so stuff doesn't need to get reverted if it was done for some good reason?
 
I can't imagine why those changes would cause any problems. Feel free to commit those. If it turns out you don't have commit privs, just let me know your sourceforge username and you will do.
 
Succeeded, got this message:
Modified: C:\Program Files (x86)\KoLmafia\scripts\bumcheekascend\bumcheekascend.ash
Sending content: C:\Program Files (x86)\KoLmafia\scripts\bumcheekascend\bumcheekascend.ash
Completed: At revision: 256
Error: post-commit hook failed (exit code 1) with output:
Error: **********************************************************************
Error: NOTE: This is an informational message only; your commit has
Error: been processed normally.
Error:
Error: We've released a new version of our "forge" software. We'll be
Error: upgrading your project starting April 22.
Error: See http://sourceforge.net/blog/upgrades-april22/ for details.
Error:
Error: Project admins can visit https://sourceforge.net/p/upgrade/ to
Error: upgrade today.
Error: **********************************************************************
Error:
 
Ah, I've been meaning to do that for a while. I don't think that has any effect on the updating via SVN, just to the sourceforge.net site itself. Fingers crossed...
 
Nifty. Anyways, note for myself or if someone else wants to fix this: when you abort after the Level 3 quest, sometimes BCA forgets to talk to the council and unlock the Level 4 quest. This sucks, because it keeps trying to adventure in the entryway without ever unlocking the quest. Check the lastCouncilVisit value to make sure it's unlocked the council for that level, since mafia automatically updates that as it goes. :)
 
Two changes I'm tempted to commit (since I think I have commit access here and I'm finally switching over from updating the Rinn scripts) both related in the Level 6 quest.

Lines 4909 and 4917 both use item_amount to validate your comedy items. If you've worn something like the glasses though, that check fails and BCA loops... forever...

I've changed my personal copy to use available_amount instead, but... any objections?

Also, 4744 and 5089 both use the unicode character for the Sledgehammer improperly instead of æ like mafia does. I'd be tempted to fix those, as this is the major reason why people who try to edit their own copies have it get corrupted. :)

So... do I start being productive, or should I run changes here first so stuff doesn't need to get reverted if it was done for some good reason?

You could change it to use i_a() which is a wrapper function that is basically the same as available_amount I guess (but shorter) that includes item_amount, closet_amount (if allowed) and equipped_amount (and also, in case it should ever be needed familiar_equipped_amount).
 
True... using i_a instead wouldn't be terrible. Though available_amount already checks all those. :)

Regarding the council... bccouncil uses its own value (bcasc_lastCouncilVisit) and ignores the official mafia value (lastCouncilVisit). This would normally be fine, but with PERFECT timing, which I apparently had, it sets bcasc_lCV JUST before it actually DOES the visit.
Code:
	if (lastVisit < thisVisit) {
		string visitString = thisVisit.to_string();
		set_property("bcasc_lastCouncilVisit", visitString);
		visit_url("council.php");
That means if your timing sucks, BCA thinks that the council is done and always skips it, but can't go to the desired zone because you aborted instead of having it actually unlock. :( I think I'll put the visit_url above those two setting lines. It's no good marking them done if it hasn't actually happened yet. That's somewhere around 918-920.
And based on Winterbay's suggestion, changing 1084, 4909, and 4917 from available_amount to i_a. There's several other available_amounts left in the script, including a few where it does an i_a check first and then available_amount later (dentures, for example), but I won't muck with those for now.
 
Last edited:
i_a has the clear benefit (to me at least) of being a lot shorter to write and takes a string which also saves a few keystrokes, especially those for $ and [] :-)
 
Which is amusing, because there's a BUNCH of spots where it does i_a($item[something]). :) Ah well. The item gets converted back to a string, so no major harm there.
 
Another "BCA forgot to go to the council for the Cyrpt even though the function starts with bcCouncil" abort. Is there a good reason why we do visit_url("council.php"); instead of council();?
 
It's likely that I didn't know that function existed, as visiting the council is something that was need day-one, and visit_url(council.php) was just what first came into my head.

It could be that we're in combat, and the visit_url() fails because it just shows fight.php or something. In short, there is no specific reason why we don't use council().
 
I'll try leaving them on council() locally for a few hits, and if it seems to fix my "why did the council not happen" problems, I'll commit.

Edit: Seems something else is wrong. This character has, well:
> pref council

lastCouncilVisit (user, now '3', default 0)

> my_ascensions

Returned: 55

> get bcasc_lastCouncilVisit

55007

> my_level

Returned: 4
How the freak did it register as visiting the council at level 7 on this ascension when I'm only level 4? Something is VERY wrong here. :) And... I'll stare at it more at work.
 
Last edited:
I think my fix there is going to be adding sanity checking.
> ash (1000 * my_ascensions()+my_level()).to_string()

Returned: 55004

> ash (get_property("bcasc_lastCouncilVisit").to_int() % 1000);

Returned: 7

> ash (get_property("bcasc_lastCouncilVisit").to_int() / 1000);

Returned: 55
If lastVisit matches my current ascension and is higher than my current level, lastVisit=0. Or alternatively, just put that into the
Code:
	if (lastVisit < thisVisit) {
block. Something like:
Code:
	if (lastVisit < thisVisit || (lastVisit / 1000 == my_ascensions() && lastVisit % 1000 > my_level())) {
Neither of those extra checks should take a server hit, so it's just a bit more processing that should hopefully stop the weirdness where it doesn't properly unlock the spooky forest or cyrpt.

Edit: Validated that did properly unlock the Bat Hole, while before BCA was looping forever and wasting server hits. Going to commit it.
 
So... we don't currently use the abridged dictionary to speed up the bridge, even though it's the equivalent of ~10 or so adventures. Do we want to use that?

Also commited a few tweaks to the bcCouncil sanity checker. Instead of checking for ascensions matching and level being less, checking for ascensions NOT matching (if the ascensions are off, you need to go to the council) or level being lower, either one. This helps when you get weird preference-bleed and bcasc_lastCouncilVisit gets set to 2 ascensions higher than your actual ascensions. :)

Also committed some AoB/AoJ item penalty checks for the Twin Peaks. The code removed familiars, but ignored Clancy's lute and the Eggman entirely, causing the quest handling to fail miserably. Also, the check ignored food drops, which meant that it wouldn't use the friars for an easy success. Validated that it worked for AoJ.

Edit: What I currently have from the Rinn-scripts for the bridge, and something similar would get committed if we want it in BCA:
Code:
if (have_outfit("swashbuckling getup"))
{
	cli_execute("checkpoint");
	outfit("swashbuckling getup");
	buy(1, $item[abridged dictionary]);
	cli_execute("outfit checkpoint");
	cli_execute("untinker abridged dictionary");
}
if (available_amount($item[bridge]) > 0)
{
	page = visit_url("place.php?whichplace=orc_chasm&action=bridge"+(get_property("chasmBridgeProgress").to_int()));
}
 
Last edited:
I didn't capture it, but the script did indeed purchase an abridged dictionary, then go get the screwdriver for the tinker just yesterday for me. I didn't actually see it use the dictionary, but I wasn't watching super-closely. I'm pretty sure it did use it.
 
Back
Top