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

bumcheekcity

Active member
bumcheekcity's Ascension Script 0.55

With special mention and continued thanks to Winterbay for the commitment to the script!

This script just completed a 4/946 ascension! (2012-02-16)

Please note that v0.40 includes some logging of settings and actions into the script. These include:
- Username
- Script Settings
- Everything from api.php?what=status except your password hash, which would be useless but I strip out anyway.


This is bumcheekascend, a semi-automated hardcore ascension script. Its stated intent is to:
1) Ascend Moxie characters through HCNP ascensions to get karma.
2) Ascend Muscle and Myst characters mostly, so you can finish off ascensions started with them.

It is NOT a softcore, challenge path or Bad Moon script. If it works for them, fine, but bugs with them will probably remain bugs.

Please use the relay script located here to change settings for your characters.

Recommended CSS
Code:
[ blooper ]
special action
skill transcendent olfaction
attack with weapon

[ dairy goat ]
special action
skill transcendent olfaction
attack with weapon

[ default ]
try to steal an item
special action
attack with weapon

[ zombie waltzers ]
special action
skill transcendent olfaction
attack with weapon

The above is all I need to see me through a 5-day Trendy 100% familiar ascension.

Casual Information
This script will do a one-day casual, and a future hope is that it will become much better. It is advised to:

  1. Set bcasc_defaultCasualAction to "item tattered scrap of paper" or similar.
  2. Set bcasc_doCasualAsHC to "false".
  3. Make a custom outfit called "bumcheekascend" for your ascending. I recommend some +elemental damage and a MP/HP regen element, and importantly a lot of +moxie.
  4. Keep a CCS that uses tatterered scraps (or whatever) against everything, except monsters you know you need to kill. Also ensure you have a sufficient quantity of tattered scraps. There are a couple of areas in the script (tavern for example) where the custom combat which uses bcasc_defaultCasualAction is not used.
  5. Get to level 13 (or at least 12) yourself before running the script. That you'll have to do manually. You might want to hit the council and immediately use the leaflet. Your call.
  6. Manually fax and arrow a lobsterfrogman as you start.
  7. I highly recommend to manually do the Nook (where you require evil eyes). It takes a LONG time to pickpocket them all, and that will be expensive in tattered scraps, so for the sake of a few turns you can save quite a bit of meat.
  8. Getting the keys is your responsibility. I recommend three pieces of jewelery and a PYEC/wand, but take your pick.

Softcore Information
The script will equip a custom outfit of your choice, if you call it "bumcheekascend". It will use your CCS and a VERY limited amount of pulls. Please note that without the outfit called "bumcheekascend", it'll probably fail VERY badly. Just pull your IOTMs turn 1, put the JuJu mask in the first accessory slot and spend one turn to get the mainstat JuJu buff. The script will pull a limited amount of items, but not many.

Challenge Path Information
Bees Hate You - There is support for this path.
Way of the Surprising Fist - This path is supported poorly. If you set your CCS to use drunken baby, drink before adventuring and get the Teachings of the Fists manually, it should work OK.
Trendy - This path is 100% supported as it's pretty easy to do.
Avatar of Boris - Limited support. It won't get boris skills for you, and is fairly good in softcore. Hardcore is, to be honest, barely supported. It's going to be rough.
Bugbear Invasion - Supported
Zombie Slayer - There have been some tweaks, but like with AoB, it's going to be sketchy at best. Not officially supported.

Testimonials
darTHdUD (hardcore) 2011-11-15 21:22:02 said:
An account I'm playing can automate 5-dayers on about a dozen skills, with only a slimeling.
Overall, this script is MAGIC. I'm laid up with a broken leg on enough opioid analgesics to make it hard to care enough to manage my ascensions properly myself. This is a perfect stopgap until I'm back to normal. Thanks BCC! :D
Erich said:
I got into a fascinating debate with someone in my clan about using mafia. He was discussing the idea that you'll never know how to play the game if all you do is use a third party program to do it, and I ran him over with my car multiple times and then had sex with his girlfriend. I had enough time thanks to bumcheeckcity's ascending script.

How do I Install this?
You'll need an up-to-date version of mafia, and then type the following into the CLI:

Code:
svn checkout https://svn.code.sf.net/p/bumcheekascend/code/bumcheekascend
 
Last edited:
This edited in:
In order for the script to work well you may need some skills. This thread discusses things and even though it's a while since it was posted it's still more or less a good guide to follow:
http://kolmafia.us/showthread.php?4963-bumcheekcend-ash-A-zero-setup-semi-automated-ascension-script!&p=48685&viewfull=1#post48685

The if-statement starting at line 211 looks really funky, is that just a way to avoid the guild quest since it is not implemented yet? And in that case wouldn't that mean tha doind the second challenge later on will fail?
 
Last edited:
I'm not sure where you're up to in terms of checking-status/level etc, but running it on my account (DB, HCO, Lvl6) made me continuously buy spooky saplings to try and complete the quest (which I'd already finished).

edit. yeah - 79 spooky saplings in inventory >.> that's all my HC meat gone, hahaha
 
Last edited:
I'm not sure where you're up to in terms of checking-status/level etc, but running it on my account (DB, HCO, Lvl6) made me continuously buy spooky saplings to try and complete the quest (which I'd already finished).

edit. yeah - 79 spooky saplings in inventory >.> that's all my HC meat gone, hahaha

Odd. The code as it is written should not do that... What does "ash contains_text(visit_url("woods.php"), "temple.gif")" return if you paste it into the CLI?

Also: The script asumes that you can get the steel margharita and not one of the other steel items. This should perhaps be stated somewhere I guess.
 
I'm not sure where you're up to in terms of checking-status/level etc, but running it on my account (DB, HCO, Lvl6) made me continuously buy spooky saplings to try and complete the quest (which I'd already finished).

edit. yeah - 79 spooky saplings in inventory >.> that's all my HC meat gone, hahaha

Known issue with the spooky sapling buying (which MIGHT be a mafia bug, I don't know), but it certainly shouldn't have tried to buy any if you've unlocked the temple.
 
I mentioned that bug on the goals page in the bug reports, when it was listed as implemented... though I ended up with under 20 saplings. Basically, if you set the choice adventure to sapling, it will just keep buying them over and over forever until the meat runs out completely... While the basic choiceadventure is automatable, it's not implemented very well currently, as it has the infinite money-drain (like that), several mislabels (often says skip adventure when it really means end adventure... only one path is actually a skip adventure), and goals don't implement through the choice system properly.
 
I guess you could change line 267 to something like
Code:
while item_amount(to_item("spooky sampling")<1
     adventure(1,$location[Spooky Forest]);

in order to avoid that and skip the goal-setting all together.
 
Last edited:
Isn't the problem with Mafia not leaving the adventure? What I understand is that Mafia keeps choosing the "buy sapling" option until the choice disappears - is that right? If so, the problem isn't with the script but with Mafia, and should be fixed. You could avoid it by manually navigating the Forest choice adventure though.

EDIT: and by 'manually', I mean by using visit_url() in the script.
 
Last edited:
Isn't the problem with Mafia not leaving the adventure? What I understand is that Mafia keeps choosing the "buy sapling" option until the choice disappears - is that right? If so, the problem isn't with the script but with Mafia, and should be fixed. You could avoid it by manually navigating the Forest choice adventure though.

EDIT: and by 'manually', I mean by using visit_url() in the script.

That might be it yes. I guess you could solve the problem by closeting all meat but what you need for 1 sapling as well that way the option will disappear when you have bought one sapling.
 
http://kolmafia.us/showthread.php?4964-Buying-Spooky-Saplings

The problem is not with the ash script. I can only recommend watching the script and/or buying the sapling manually.

With that said, stuff can be sped up by running a couple of fights manually. The knob king, for example with the +7 Mox accessory can be fought at very low moxie if you have divines, but I'm not going to make the script do that. Probably.
 
Last edited:
Here's the current open_temple() function I'm using. It uses visit_url until you have the sapling.

You can see that before the changes it was only a few lines long. Once KoLmafia features enhanced goal handling for the Spooky Forest it will be short again.

I'm off to school, but I think you can get the needed parts to prevent extra sapling purchases from the function below without me having to edit out all the other stuff.

Code:
boolean open_temple_aq(){
    if(status contains "Unlocked Hidden Temple") return true;
        
    if(!contains_text(visit_url("woods.php"), "temple.gif")){
        vprint("", 2);
        vprint("Attempting to reveal the hidden temple...", "blue", 2);
        /*
        foreach itm in $items[spooky sapling, Spooky-Gro fertilizer, Spooky Temple map]
            if(!obtain(1, itm, $location[Spooky Forest])){
                vprint("Unable to find the hidden temple.", -2);
                sum_end = "You ran out of adventures trying to reveal the Hidden Temple.";
                bedtime();
            }
        */
        
        if(item_amount($item[spooky sapling]) == 0){            
            while(item_amount($item[spooky sapling]) == 0){
                if(my_adventures() == 0){
                    vprint("Unable to find the hidden temple.", -2);
                    sum_end = "You ran out of adventures trying to reveal the Hidden Temple.";
                    bedtime();                
                }
                
                string page;
                page = visit_url("adventure.php?snarfblat=15");
                if(page.contains_text("Arboreal Respite")){
                    visit_url("choice.php?pwd&whichchoice=502&option=1&choiceform1=Follow+the+old+road");
                    visit_url("choice.php?pwd&whichchoice=503&option=3&choiceform3=Talk+to+the+hunter");
                    visit_url("choice.php?pwd&whichchoice=504&option=3&choiceform3=Buy+a+tree+for+100+Meat");
                    visit_url("choice.php?pwd&whichchoice=504&option=4&choiceform4=Take+your+leave");
                }
                else run_combat();
            }
        }
        
        if(item_amount($item[Spooky-Gro fertilizer]) == 0){
            set_property("choiceAdventure502", "3");
            set_property("choiceAdventure506", "2");
            if(!obtain(1, "Spooky-Gro fertilizer", $location[Spooky Forest])){
                vprint("Unable to find the hidden temple.", -2);
                sum_end = "You ran out of adventures trying to reveal the Hidden Temple.";
                bedtime();
            }
        }
        
        if(item_amount($item[Spooky Temple map]) == 0){
            set_property("choiceAdventure502", "2");
            set_property("choiceAdventure505", "2");
            if(!obtain(1, "tree-holed coin", $location[Spooky Forest])){
                vprint("Unable to find the hidden temple.", -2);
                sum_end = "You ran out of adventures trying to reveal the Hidden Temple.";
                bedtime();
            }

            set_property("choiceAdventure502", "3");
            set_property("choiceAdventure506", "3");
            set_property("choiceAdventure507", "1");            
            if(!obtain(1, "Spooky Temple map", $location[Spooky Forest])){
                vprint("Unable to find the hidden temple.", -2);
                sum_end = "You ran out of adventures trying to reveal the Hidden Temple.";
                bedtime();
            }
        }
        
        use(1, $item[Spooky Temple map]);
        vprint("Hidden Temple revealed!", "green", 2);
        
        set_property("choiceAdventure502", "1");
        set_property("choiceAdventure503", "1");        
        
        sum[count(sum)] = "You unlocked the Hidden Temple.";
        map_to_file(sum, "aq_daily_" + replace_string(my_name(), " ", "_") + ".txt");
    }
    
    status["Unlocked Hidden Temple"].date = today_to_string();
    status["Unlocked Hidden Temple"].turncount = my_turncount();
    map_to_file(status, "aq_status_" + replace_string(my_name(), " ", "_") + "_" + run + ".txt");        
    return true;
}
 
I'll spin that change into v0.3. Might depend on if it gets changed in Mafia. Version 0.2 released, implementing stuff right up to level 11.
 
Spun version 0.3, ascending one completely up to Level 13. Goal for 0.4 is to have it fully automate the lair too, as well as move Zarqon's macgiffin.ash into the actual text of the script, importing hiddencity.ash and Wossname.ash. If I can't import them both because of conflicting variable names, I'll import both macgiffin.ash AND Wossname.ash into the text of the script, and only import hiddencity.ash.
 
Last edited:
I get the following error while attempting to run the newest script, after getting all of Zarqon's scripts properly setup;

Bad familiar value: "Knob Goblin Organ Grinder" (bumcheekascend v0.3.ash, line 104)


EDIT: When commenting out all of the familiar equipment changes, it works just fine.
 
Last edited:
Yep. Always use the most recent build. They make you cool. Also, the recent (brilliant!) sewer changes have caused the script to break. Just comment out line 395 as a short-term solution.
 
Spinning version 0.4. This is a massive bugfix release, and I've moved all of Zarqon's Level 11 and some of the Level 12 scripts into this one, and relatively extensively modified them.

There's also basic support for the he-boulder.
 
I've been trying this out and it's pretty studly. A couple of observations:

- The maximize commands keep equipping my sugar shield (and thus burning through it).
- The item familiar keeps switching to hound even in locations where its +combat ends up penalizing you (Airship, arguably the Ballroom etc.)

-Th3y thank you
 
The sugar shield thing is kind of a feature. I'm unsure how to deal with it. I'd like the script to automatically equip sugar shirts, particularly day 1 and 2, but that means it equips sugar shields as well.

And good call on the hound thing. I'll make that change for 0.5.
 
Noting a potentially major issue... you're repeatedly calling maximize mox, often with other things attached, but never define what TYPE of weapon to use. This means that once the drywall axe is available, it will often be used for moxie classes, causing some major trauma.

I tend to use the following maximizes for normal adventuring. First for ranged classes, then melee:
maximize 4 item, 3 meat, 2 moxie, ranged damage, .1 initiative, -melee
maximize 4 item, 3 meat, 2 muscle, weapon damage, .1 moxie, melee

In general, item drops will speed up farming and missions the most, so if they're available, do that. Meat is nice too, so if there's some wonderful modifier, I'll take it.
For moxie classes, I want tons of moxie if possible, and ranged damage will help too. Sometimes you get tiny moxie boosts that have major initiative droppers though, and that screws with my pickpocket chances, so I want initiative to be considered, but not much. Finally, but possibly the most important thing, only equip ranged weapons.
For muscle/myst classes, I want muscle for weapon damage, and if it's all the same, some more damage won't hurt. If there's nothing else to decide between, moxie is good. And be sure you use a melee weapon...

Only real changes throughout characters and ascensions are that turtle tamers (and during digital farming) it usually gets ", 1 hand" thrown on the end there so they have a hand free for their taming rod, and when I hit the upper levels and need an outfit ", outfit swash" gets tossed on there as I decided at some point to use the swashbuckling outfit as a choice that wouldn't screw up my weapons and at least had a tiny bonus to useful stats.

If you ignore the rest of this though, I would like to request that +melee/-melee gets added based on primestat. :)

Edit: Regarding sugar shields, couldn't you add ", -item sugar shield" to the end of the maximizer line? Or does that fail?

Edit2: Got bored regarding my maximizer line and decided to simplify typing for myself. Now have this "mymax" alias:
alias mymax => ashq string maxstring; if (my_primestat() == $stat[Moxie]) maxstring = "2 moxie, ranged damage, .1 initiative, -melee, %%"; else maxstring = "2 muscle, weapon damage, .1 moxie, melee, %%"; CLI_Execute("maximize 4 item, 3 meat, " + maxstring);
Basically, it makes a string named maxstring. If I'm moxie, give me the moxie/ranged/initiative set with a ranged weapon, otherwise give me muscle/weapon/moxie with a melee weapon set. If there's more text given, put it after the weapon selection, so I can set outfits or special requirements. :D Unless I'm VERY barely passing a safe check for an area, this should provide optimal gear for any circumstance. :)
 
Last edited:
Back
Top