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

Code:
ash set_property("bcasc_stage_innaboxen", my_ascensions( )-1)
should set that setting back to not finished.

So, that said:

When running into the HitS as a muscle class you set the familiar to "items" and the mood to "i" and then try to level up to the safe point. This leads to tying to level up with a muscle class in the Gallery with +items only. I think that perhaps -combat and +stats would be a better combination.

Also, for some reason the script gathered 8 of each castle item before I stopped it and used the castle map manually.
 
Last edited:
Using "ash import <bumcheekascend v0.16.ash>; bcascFriarsSteel()" to force the friarsteel to run as Winterbay suggested, it returned the value False.
Apparently it have not even set foot in Pandemonium, so manually going there and entering Azazel's temple, then running that command, it worked.
It hit a bump though:
Code:
[541] Belilafs Comedy Club
Encounter: Larry of the Field of Signs
Strategy: attack with weapon
Round 0: ferdawoon wins initiative!
Round 1: ferdawoon executes a macro!
Round 1: ferdawoon attacks!
Round 2: ferdawoon attacks!
Round 3: ferdawoon attacks!
Round 4: ferdawoon wins the fight!
You acquire an item: observational glasses
You gain 4 Strengthliness
You gain 6 Mysteriousness
You gain 10 Smarm

Conditions satisfied after 13 adventures.
You can't equip an off-hand item while wielding a 2-handed weapon.
Returned: false
.

I guess it tried to equip the Victor, the Insult Comic Hellhound Puppet with a Linoleum crossbow still equipped, but it is the Observational glasses, Accessory, that give Azazel's lollipop which is needed for the Steel item.
Equipping the glasses manually and talking to Mourn, then restarting the script using the command Winterbay gave me, the rest worked out just fine.
 
Last edited:
The first time (after day-1) I run V16 each day I get the following:
Code:
BCC: We have completed the stage [knobking].
BCC: We have not completed the stage [dinghy].
Resetting mind control device...
Mind control device reset.
BCC: We don't have the HeBo equipped, so we're either on a 100% run or you just don't have one. Trying a pumpkin bomb. If you have one, we'll use it.

Harvesting your garden
Conditions list cleared.
Condition set: Knob Goblin firecracker
Knob Goblin firecracker

I have a HeBo. Though, today I figured I'd be using it for the Miner, which I don't have access to just yet. Obviously I have no desire to farm a firecracker.

(if it makes an difference this is an AT run)
 
After getting the Ballroom key from the bedroom (V16, AT run):
Code:
BCC: We have completed the stage [manorbedroom].
Need     to Level up a bit to get at least 53 base Primestat
Conditions     list cleared.
Condition added: Substats: 0 / 0 / 247
Substats: 0 / 0     / 247
[buffing]
BCC: Switching Familiar for General Use
BCC:     Going to try to use some spleen items if you have them.
Using 1     agua de vida...
You gain 8 Adventures
You acquire an item: empty     agua de vida bottle
Finished using 1 agua de vida.
Spleen:     8 Agua: 0 Stick: 0 Token: 0
Total Spleen: 8
Maximizing...
402     combinations checked, best score 101.0

Request 1 of 57 (Island:     Barrrney's Barrr) in progress...

[350] Barrrney's Barrr
Encounter: toothy pirate
Strategy:     F:\kol\ccs\autoascend.ccs [default]
Round 0: NardoLoopa wins initiative!
(unable     to macrofy due to action: consult SmartStasis.ash)
Round 1: NardoLoopa     tries to steal an item!
Round 2: NardoLoopa attacks!
Round 3: toothy     pirate takes 23 damage.
Round 3: NardoLoopa attacks!
Round 4: toothy     pirate takes 41 damage.
Round 4: NardoLoopa attacks!
Round 5: toothy     pirate takes 23 damage.
Round 5: NardoLoopa wins the fight!
You gain     59 Meat
After Battle: Muadib smiles a three-lipped smile from beneath     the shade of his little sombrero.
You gain 4 Strongness
You gain 4     Wizardliness
You gain 15 Smarm

Okay, the problems are
1) i have 102 buffed mainstat, which is plenty for the Ballroom.
2) I haven't purchased the insult book. So after 10 adv in that zone I have 0 insults.
 
Small issue. When getting the digital key and attempting as a MOX class to equip a ranged weapon with the transfunctioner... if you don't have a 1H ranged weapon it carries on with no weapon, which promptly gets your ass kicked every round!

I went and grabbed one from the Spooky Forest. Couldn't think of anything better and quicker.
 
The quickest 1H ranged weapon is the slingshot form the armory and leggery which I do believe the script should buy if you don't have a 1-handed ranged weapon. Did it fail to do this?
 
Did it fail to do this?
The script doesn't check if cli_execute("buy slingshot") worked, so it might go ahead if the player didn't have enough meat or has "buy from NPC stores" turned off.

Will executing cli_execute() or adventure() from a ternary expression trap the return value in the same way that if(adventure()) does?
 
The script doesn't check if cli_execute("buy slingshot") worked, so it might go ahead if the player didn't have enough meat or has "buy from NPC stores" turned off.
I don't think the "buy" command requires "buy from NPC stores" since you are specifically telling it to buy something, rather than KoLmafia deciding on its own that it needs to buy something.

Will executing cli_execute() or adventure() from a ternary expression trap the return value in the same way that if(adventure()) does?
Oooh. Looking at the code, my guess is that it will not. I'll test and fix that...
 
I don't think it needs a fix: executing adventure() in an if/else structure doesn't trap the return value either.

On the other hand, it would be great if this:
PHP:
( adventure(1,$location[8-Bit Realm]) ? print( "All good" ) : print( "Uh-ho" ) );
prevented the script from aborting.

Apparently, it's not the case currently:
Code:
> ashq ( adventure(1,$location[8-Bit Realm]) ? print( "All good" ) : print( "Uh-ho" ) );

[COLOR="#ff0000"]You are too drunk to continue.[/COLOR]

> ashq if( adventure(1,$location[8-Bit Realm]) ) print( "All good" ); else print( "Uh-ho" );

[COLOR="#ff0000"]You are too drunk to continue.[/COLOR]
Uh-ho

I have no idea how difficult it is to change, though. It's just good to be aware that it works this way.
 
I don't think it needs a fix: executing adventure() in an if/else structure doesn't trap the return value either.
...
> ashq if( adventure(1,$location[8-Bit Realm]) ) print( "All good" ); else print( "Uh-ho" );

You are too drunk to continue.
Uh-ho
I think you just demonstrated that if DOES trap the return value of adventure.

On the other hand, it would be great if this:

( adventure(1,$location[8-Bit Realm]) ? print( "All good" ) : print( "Uh-ho" ) );

prevented the script from aborting.

Apparently, it's not the case currently:

> ashq ( adventure(1,$location[8-Bit Realm]) ? print( "All good" ) : print( "Uh-ho" ) );

You are too drunk to continue.

Revision 9009:

> ashq ( adventure(1,$location[8-Bit Realm]) ? print( "All good" ) : print( "Uh-ho" ) );

You are too drunk to continue.
Uh-ho
 
Last edited:
I think you just demonstrated that if DOES trap the return value of adventure.
I realized afterwards that I hadn't been clear: I simply meant that doing
Code:
if( condition ) adventure();
else dostuff();
doesn't trap the return value, so
Code:
( condition ? adventure() : dostuff() );
shouldn't either.

With your change, the ternary now acts exactly like an if/else, thanks!

In the case of BCC's code, on line 1103:
PHP:
(my_primestat() == $stat[Muscle] ? cli_execute("buy cool whip") : cli_execute("buy slingshot"));
cli_execute("buy slingshot") doesn't abort the script if you don't have enough meat on hand anyway:
Code:
> closet put * meat

Placing meat into closet...
Requests complete.

> ashq (my_primestat() == $stat[Muscle] ? cli_execute("buy cool whip") : cli_execute("buy slingshot")); print( "done" );

Searching for "slingshot"...
Desired purchase quantity not reached (wanted 1, got 0)
done

I guess you need to add a check ^^
 
I realized afterwards that I hadn't been clear: I simply meant that doing
Code:
if( condition ) adventure();
else dostuff();
doesn't trap the return value, so
Code:
( condition ? adventure() : dostuff() );
shouldn't either.
Ah, yes. You are correct. If the result of ?: is used in further expressions, those will capture the value; ?: shouldn't capture it itself. Hmm.
 
I think I didn't understand ternary expressions at all - I just discovered both options needed to have the same return value. I just thought of it like an abbreviated if/else, but a value is returned from the ternary.

I really shouldn't post after coming back from the pub... you could just let it capture, unless it sounds like an interesting or challenging problem for you. I don't think it will bother scripters.
 
I don't think it makes sense that you're always passing in -tie to every call to maximize, it basically ensures better equipment won't be equipped as it drops. I see that you're trying to prevent removing necessary equipment, I think you oversolved the issue.
 
The -tie doesn't mean you won't equip better gear... just that if it doesn't match the maximizer line, don't try to force it in there.
 
A loop again:
Code:
BCC: Painting Gnasir's Door

Visit to Beach: Desert (Ultrahydrated) in progress...

[825] Desert (Ultrahydrated)
Encounter: swarm of fire ants
Strategy: attack with weapon
Round 0: ferdawoon wins initiative!
Round 1: ferdawoon executes a macro!
Round 1: ferdawoon tries to steal an item!
Round 2: ferdawoon attacks!
Round 3: ferdawoon attacks!
Round 4: ferdawoon attacks!
Round 5: ferdawoon attacks!
Round 6: ferdawoon wins the fight!
You gain 79 Meat
You acquire an item: ant agonist
You gain 10 Fortitude
You gain 11 Wizardliness
You gain 17 Sarcasm
You gain a Moxie point!

BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
BCC: Painting Gnasir's Door
Ran out of adventures.
KoLmafia declares world peace.
 
I'm running this for the first time so I'm going to watch it and give you some notes as I do this ascension.

  • At first I didn't have it sell a pork gem and the script instantly aborted because it couldn't afford to acquire a stolen accordion to cast madigral.
  • You should change the tavern quest to use the updated mafia functionality.
  • It tried to acquire a pine-fresh air freshener even though I have elemental saucesphere permed.

- Yep, it'll do that.
- Good point, I'll do that.
- Feature. I can see it using a LOT of MP to keep elemental up at 5 turns/time and then burning through all ones meat, so I made a decision to do that right at the start.

Awesome script--it's great to have it ascend me while I work.

Minor bug - it stops at Mourn if you are wearing a two-handed weapon, since it can't equip Victory and show it to him. You have to take it off and re-run the script for it to continue.
Minor bug - it stops when it tries to do the 8-bit realm, as listed by PadainFain above.
Feature request - it currently goes up and down doing the entire tavern, even though doing the edge first is almost always faster. Change to the latter behavior?

Glad you're finding the script useful - thanks for your bug reports :D

The 2-handed thing at mourn should be fixed in 0.17. I'm not able to replicate the 8-bit problem, so I'll check it out at my next ascension. I also changed to use mafia's tavern ability, as above, so that should be fixed.

Still won't start the friarsteel part =(
Using the new v16 as AT.

Is there a way to reset a flag btw? Innaboxen is set as Complete even though it is not, probably due to lack of Clovers to get the parts (since it have spent the adv to get the beer lenses it feels like a waste to not get the innaboxen) and I want to check if setting it as not completed will make the script try to get them now in a new version.
Owh and yeh, add a line to use the House after completing the Strange Leaflet. I always forget to do it manually =S

Arse, I thought I'd got it. If anyone has any suggestions, let me know. If you hit pandamonium.php, I thought it started the quest, but apparantly not. It'll complete the quest without hitch once it's started in your questlog.

Reset the flag as indicated in the post previous - I have to go over the innaboxen anyway. And yeah, I'll use the house.
 
Just some notes.

Thanks for the info on the slingshot - hadn't thought of that. I probably didn't have enough meat for it. Meat is in fact a real problem for me in the first 2 days of a new ascension. With all the hermit and casino visits along with my healing script of choice using up quite a lot for Doc G visits I keep running out. I might just edit Universal_Recovery and stop it using meat if I have less than 500 left.

When running a MUS class in hardcore I don't have access to putty, camera, fax machine etc and I don't have a HeBoulder. So I find myself without a Shield. Can I suggest that the script makes a Barskin Buckler during the Spooky Forest section if it doesn't find one in your inventory? Or has a switch for it maybe?

Oh and for your softcore notes... The Azazel quest checks fail because of items available from previous runs. I'm thinking that a simple way to fix any and all issues caused by softcore access to items that the quest checks for is to call a function that registers the total number of each available at the start of the first invocation of the script per ascension. Then write out the available amounts to a file and compare to those instead of to zero.
 
Last edited:
A few minor suggestions on slight optimizations:

1) use a hipster for the temple
2) use the cupid tracker arrow on the Lobster Frogmen (and adv somewhere else), Astro. (okay, this isn't exactly 'slight')
3) use the hatter for +mox at least once you get the star hat. (if you fall short of a moxie requirement)
4) Don't buy a paint can for the +elem-resist if you have Elemental and are low on meat (3,000?)
 
- Feature. I can see it using a LOT of MP to keep elemental up at 5 turns/time and then burning through all ones meat, so I made a decision to do that right at the start.

You don't clover for the first 2 sonar, and then avoid guano junction altogether? This is generally the best option in HC; in fact, you should never stay in in guano junction if you've opened one of the side areas, as beanbats at least give beans, and ratbat / batrats have a higher sonar drop rate. So even if you're running astral / elemental at 5 turns a pop, it shouldn't be too bad to do so until you get 1 sonar.
 
Back
Top