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

Uli

Member
Odd, that's what I was using. Am I saving it as the wrong file type? I just open it in Notepad, make the changes, save it, then that error pops up.
 

Winterbay

Active member
Ugh, I change those lines out, save it, and now I just get "Script parsing error (bumcheekascendbeta.ash, line 1)".

Change the entire buMax()-function to this and it should work:
Code:
boolean buMax(string maxme, int maxMainstat) {
    if (get_property("bcasc_dontTouchStuff") == "true") {
        print("BCC: Not changing outfit as bcasc_dontTouchStuff is true", "purple");
        return true;
    }
    print("BCC: Maximizing '"+maxme+"'", "blue");
    
    if (my_path() == "Way of the Suprising Fist") maxme += " -weapon -offhand";
    if (my_path() == "Avatar of Boris" && !contains_text(maxme, "outfit")) {
        if (i_a("Boris's Helm") > 0) maxme += " +equip Boris's Helm";
        else if (i_a("Boris's Helm (askew)") > 0) maxme += " +equip Boris's Helm (askew)";
    }

    if (!in_hardcore()) {
        if (cli_execute("outfit bumcheekascend")) {}
        if (contains_text(maxme, "+outfit") && contains_text(maxme, "+equip")) {
            string [int] strs = split_string(maxme, "\\+");
            foreach i in strs {
                if (strs[i] != "") {
                    //print(strs[i], "green");
                    cli_execute(strs[i]);
                }
            }
            return true;
        }
        if (contains_text(maxme, "+outfit")) {
            cli_execute("outfit "+maxme.replace_string("+outfit ", ""));
            return true;
        }
        if (contains_text(maxme, "pirate fledges")) {
            cli_execute("equip acc3 pirate fledges");
            return true;
        }
        if (contains_text(maxme, "mega gem")) {
            cli_execute("equip acc3 mega gem");
            cli_execute("equip acc2 talisman o' nam");
            return true;
        }
        if (contains_text(maxme, "talisman")) {
            cli_execute("equip acc3 talisman o' nam");
            return true;
        }
        if (contains_text(maxme, "nuns")) {
            cli_execute("outfit "+bcasc_warOutfit);
            return true;
        }
        return true;
    }

    //We should sell these to avoid hassle with muscle classes.
    foreach i in $items[antique helmet, antique shield, antique greaves, antique spear, drowsy sword] {
        autosell(item_amount(i), i);
    }

    //Just a quick check for this.
    if (contains_text(maxme, "continuum transfunctioner") && my_primestat() == $stat[Muscle]) {
        cli_execute("maximize "+max_bees+" beeosity, mainstat "+maxme+(my_path() == "Way of the Surprising Fist" ? "" : " +melee -ml")); 
        return true;
    }
    if (contains_text(maxme, "knob goblin elite") && !(my_path() == "Way of the Surprising Fist")) {
        if (my_basestat($stat[Muscle]) < 15) abort("You need 15 base muscle to equip the KGE outfit.");
        if (my_basestat($stat[Moxie]) < 15) abort("You need 15 base moxie to equip the KGE outfit.");
        cli_execute("maximize "+max_bees+" beeosity, mainstat "+maxme+" -ml"); 
        return true;
    }
    if (maxme.contains_text("item") && have_path_familiar($familiar[Mad Hatrack])) {
        maxme += " -equip spangly sombrero";
    }
    
    //The hilarious comedy prop is basically never the good choice.
    if (available_amount($item[hilarious comedy prop]) > 0 && !contains_text(maxme, "hp regen")) {
        maxme = maxme + " -equip hilarious comedy prop";
    }

    //Manual override for the nuns.
    if (contains_text(maxme, "nuns")) {
        cli_execute("maximize mainstat " + ((bcasc_AllowML) ? "" : "-10 ml") + " +outfit "+bcasc_warOutfit);
        switch (my_primestat()) {
            case $stat[Muscle] :         cli_execute("maximize "+max_bees+" beeosity, " + (my_path() == "Zombie Slayer" ? "" : "0.5 mp regen max") + ", mainstat " + ((bcasc_AllowML) ? "" : "-10 ml") + (my_path() == "Way of the Surprising Fist" ? "" : " +melee ")+((anHero()) ? "+shield" : "")+" +outfit "+bcasc_warOutfit); break;
            case $stat[Mysticality] :     cli_execute("maximize "+max_bees+" beeosity, 0.5 mp regen max, mainstat " + ((bcasc_AllowML) ? "" : "-10 ml") + " +outfit "+bcasc_warOutfit); break;
            case $stat[Moxie] :         cli_execute("maximize "+max_bees+" beeosity, 0.5 mp regen max, mainstat " + ((bcasc_AllowML) ? "" : "-10 ml") + (my_path() == "Way of the Surprising Fist" ? "" : " -melee +outfit ")+bcasc_warOutfit); break;
        }
        string sns = prepSNS();
        if (sns != "") {
            equip(to_item(sns.replace_string("+equip ", "")));
        }
        return true;
    }
    
    //Basically, we ALWAYS want and -ml, for ALL classes. Otherwise we let an override happen. 
    switch (my_primestat()) {
        case $stat[Muscle] :         cli_execute("maximize "+max_bees+" beeosity, mainstat "+maxMainstat+" max, "+maxme+(my_path() == "Way of the Surprising Fist" ? "" : " +melee ")+((anHero()) ? "+shield" : "") + ((bcasc_AllowML) ? "" : " -10 ml") + " +muscle experience " + (my_path() == "Zombie Slayer" ? "" : "+0.5 mp regen min +0.5 mp regen max ")); break;
        case $stat[Mysticality] :     cli_execute("maximize "+max_bees+" beeosity, mainstat "+maxMainstat+" max, "+maxme+" +10spell damage +mysticality experience +5 mp regen min +5 mp regen max " + ((bcasc_AllowML) ? "" : "-10 ml")); break;
        case $stat[Moxie] :         cli_execute("maximize "+max_bees+" beeosity, mainstat "+maxMainstat+" max, "+maxme+(my_path() == "Way of the Surprising Fist" ? "" : " -melee ") + ((bcasc_AllowML) ? "" : "-10 ml") + " +moxie experience +0.5 mp regen min +0.5 mp regen max "); break;
    }
    return true;
}

(unless you are using something like word to edit it with I guess)
 
When doing the Hidden City I get this :

[730] Hidden City (Square 23)
Encounter: Altared Perceptions
BCC: You aren't in a combat (or something to do with Ed which I can't work out), so bumRunCombat() doesn't need to do anything.
BCC: Finished the combat. Let's carry on.
spheres : 4 / 4
altars : 4 / 4
Altars and temple all found!
BCC: We have to get the triangular stones.

[730] Hidden City (Square 14)
Encounter: Altared Perceptions
Unable to deduce correct stone. You may have to identify them yourself.
 

Uli

Member
Awesome, that worked. I think I had used your first suggestion properly, but I don't think I was saving the file as the right type. When I made Notepad save it as an ANSI code file and made sure to add .ash at the end of the file name, it seemed to save properly. The first couple times I put in your long code into my file and saved it, I was getting that same parsing error. But all good now! Thanks for your patience.
 

Uli

Member
Just an fyi, the new revision (192) with the Fist changes missed a -melee during the junkyard quest. Thanks to the help here, I was able to fix it in my copy, just letting you know for the one that you have posted. Thanks again.
 

fronobulax

Developer
Staff member
You need to identify the stone spheres. For some reason it didn't get done.

The "some reason" has not yet been identified and fixed ;-(. In my case I suspect WHAM and BCCAscend are each deferring to something else to do the id and it isn't happening. It may be as simple as WHAM deciding it is suboptimal or too risky to identify the spheres in the zones that BCCAscend is choosing.
 

Winterbay

Active member
WHAM will do it if the autoSphereID setting is set to true (part of SmartStasis). BCA will not do anything specific to do it for you, but is, I guess, relying on the same setting and letting Mafia do it for you.

So... Check if autoSphereID is "true", if not changing that should help very much. I'm not sure what BCA could do to actually identify them for you, although I guess the script could set your setting to true if it isn't.
 
WHAM will do it if the autoSphereID setting is set to true (part of SmartStasis). BCA will not do anything specific to do it for you, but is, I guess, relying on the same setting and letting Mafia do it for you.

So... Check if autoSphereID is "true", if not changing that should help very much. I'm not sure what BCA could do to actually identify them for you, although I guess the script could set your setting to true if it isn't.

Winterbay how do I set this option in Smartstatis?
 

Theraze

Active member
If you type the top line, no >, you should get the bottom line.
> get autoSphereID

true
If the bottom line says false, then you need to set autoSphereID=true, like this, again, no > because that's just mafia telling us we ran a command.
> set autoSphereID=true

autoSphereID => true
 

Winterbay

Active member
How should the script be amended to handle Skeleton Skiff?


Is this a zlib var which can be manually adjusted by the user?

Are you using the SVN-version or the "official" release? That should work just fine in the SVN-version, but I have no skeletons to test with...
 

shabob

New member
Are you using the SVN-version or the "official" release? That should work just fine in the SVN-version, but I have no skeletons to test with...

At the time of the query: The official release.

As of this writing: The SVN-version. Many thanks Winterbay.
 

CKtheFat

Member
I've been through two hardcore runs using this script now, both times as a Disco Bandit. On my first run, it took me nearly a month (though in retrospect, I could have made it go by much faster by using Disco Face Stab on harder bosses). I had 0 HC skills for that first run.

Then last night I completed my second HC Disco Bandit run, and managed to reduce how long it took to 14 days / 1546 turns, probably the fastest I have ever personally ascended, even when I used dj__d's ascension script on softcore. I had Moxious Madrigal and Disco Power Nap permed from the first run, and now I've permed Ode to Booze and Advanced Cocktail Crafting as well.

All in all, great job on this script; it definitely is a time-saver. My only complaints at this point are that it doesn't handle your lack of money at the beginning very well, but that is fairly minor. The other thing I noticed is that when making the wand to fight the Naughty Sorceress, the script doesn't find the lowercase n.

A couple more runs as a Disco Bandit and I will probably move on to being a pastamancer. I've had a much worse experience with this script with my alt softcore pastamancer (trying to adventure in places way out of my moxie range while setting Detuned Radio to 10, mainly), but I know the script wasn't designed for that, and chances are I have not tweaked settings in the relay appropriately.
 
Last edited:

fronobulax

Developer
Staff member
It missed the ruby W for me but I think there is a deliberate design decision to not spend turns getting Tower Items. If you get to the Tower and need something the script lets you figure out how to get it.

Turning off moods helps with money management as does putting some thought into HP and MP restore techniques. Doing a 100% NPZR run seems to help in times of low meat because it will generate meat or restore HP and MP which are the major meat drain for me.
 

Theraze

Active member
And for the new player who hasn't pulled together the million meat for the NPZR yet, the Cocoabo is a reasonable alternative, with slightly lower gains, but not terribly so, and missing the large quantity of bonus stun-toastings.
 

CKtheFat

Member
Only one million meat? The mall makes it look like it'll take around 3 million for just the head :) And I assume the only way to outright buy it is to be in a softcore run.
 
Top