Ascend.ash: hands-off ascension script

dj_d

Member

See http://kolmafia.us/showthread.php?1...ascension-script&p=92177&viewfull=1#post92177. dj_d has given permission for the code to be released and that post has an open copy of the last release.


Ascend.ash
An invisible choir sings, and you are bathed in radiance.

Ascend.ash is a script that ascends your character, automatically. It's the product of more than a year's labor. It's contained in the zip file attached to this message, which has a password. If you'd like to use it, please PM a Mr. Accessory to username dj_d. A script runs once a day about an hour before rollover that will auto-reply to you with the password to the zip file. If you need to reach me, just PM me on the board here. Please do not share the password or the included files.

Huge thanks to all the scripters, mods, and developers here. In particular, thanks to Zarqon, whose scripts take care of the two hardest levels in the game. If you're a major contributor to Mafia (dev, mod, or a scripter who posts more than I do) just PM me and I will send you the password posthaste.

FAQ:
1) How does it work?
Simple! Just configure it, then run it every day till you ascend. Repeat as needed.

2) Really?
Sort of. You do have to configure it. Actually, it'll probably run fine out of the box, but you have to configure other, included scripts. Check the threads for each of these to learn how to configure them:
eatdrink
buycrap
macguffin
wossname
The default configurations probably aren't what you want and may be detrimental to your character's health and finances. Ascend.ash and ascend status.ash have lots of configurability but should be functional out of the gate.

3) So I just have to configure the scripts?
Sort of. You also have to make sure you can kill anything you come across with Mafia's default settings. Ascend.ash will make sure you don't fight anything too tough, but if your default attack is your forehead of fury, you may find yourself in a tough spot. You'll need to configure your CCS (I recommend smartstasis) and your restore settings (bale's recovery script is awesome but I'm lazy and just use mafia's built in functionality).

4) So I just have to configure the scripts and the default adventuring stuff?
Sort of. You also will need to make sure you're equipping whatever you want equipped. I usually set up the best outfit for the day before I run the script, and name that "melee". The script will use that outfit unless anther one is required.

Let me repeat, because some people missed this: make sure you have an outfit called "melee" (which will be equipped by default while adventuring).

5) So what DOES it do again?
It includes automation for 50 distinct quests, and intelligence to figure out the order in which to do them. It's robust against being interrupted and restarted. It eats, drinks, spleens, pulls, shops, and insults pirates. It's pretty neat. I'm perming skills on a multi, and on a typical day, I just run the script and then check out the results. It completes most ascensions in less than a week without intervention. Oh - it also meatfarms in aftercore if you decide not to ascend.

6) What if I have problems?

Report them here and I'll do my best to help.

7) What kind of warranty is included? What if I hate it?

Sorry! No returns, exchanges, etc. Happy to try and help, though.

8) Does it work for hardcore?
It's helpful but not comprehensive for hardcore. It works nicely in tandem with Zarqon's hardcore checklist - when this runs out of steam, use that, and vice versa.

9) What doesn't it do?

Besides what's mentioned above, it doesn't kill the sorceress, and it doesn't step through the gash. That's about it.

10) Can I send you a ______ instead of a Mr. A?

No, the process is automatic. You send a Mr. A, you get the password. You send anything else, thank you! But no password. :)

11) Can I share this with my multis?

Yes.

12) Can I share this with my clannies?

No.

13) I am a visitor from THE FUTURE. You, your children, and your children's children are like dust. The world has changed and the continents have shifted. Can I have the password please? You're not answering your mail.

Call in a KolMafia moderator. Moderators - if you suspect I may be dead (to the world of mafia, or otherwise), email me at ascend-dot-ash-at-gmail-dot-com, and PM me on the board and in-game (dj_d). If I don't reply in 30 days, go ahead and post the password and/or unzipped files here (all the mods should have the password already).

14) How does it actually work?
It goes through the >40 queststeps and sees if you can do any of them. If it can't, it goes through the 10 levelupsteps and does whichever of those it can. If none of those work, it uses levelup.ash to level up. Before adventuring, it checks to see if the location is safe, and if not it adventures somewhere safe until you gain a moxie point (and then repeats). It also uses pullcrap, eatdrink, and other assorted scripts for the obvious purposes. If you want to reorder the quest steps, it's pretty easy - just change the order in ascend status.ash. This is a very reasonable thing to do to optimize ascension speed, although be careful that you are doing the prerequisite quests in the right order.

15) How do I get it?
As mentioned above, you just kmail one Mr. Accessory to character name "dj_d" in game. A script will automatically receive the Mr. A and reply to you with the password about one hour before rollover each day. Other messages to that character may take a while to get read, so don't PM questions to that account - post them here in this thread.

Alternately, contribute a widely-used script to the community or make major rewrite-type improvements to any of the ascend.ash components (eatdrink, levelup, etc) and I'll give it to you for free! Just ask Bale, Zarqon, etc.

16) Has anyone else bought it?
As you can see from this thread, the mods and prolific scripters got it for free, and about two dozen players have paid a Mr. A for it.

Note: I expected there might be some controversy over this. There was a nice discussion over in "Scripting discussion", plus a bunch of PM conversations. After listening to all viewpoints, I decided to go ahead. If you have concerns about this, please put them in the scripting discussion thread, not here - use this thread for discussion about the actual script. Thanks!

17) I have a Mac and it's not prompting me for a password.
From Veracity: if you go and control-click on the .zip file from the Finder, you can specify that you want to open the .zip file with Stuffit Expander - which will prompt you for the password.

Ascend 1.4.1

2011_03_19 - see Release notes inside of zip file. Highlights include Tavern, Spooky Forest and Steel Organ revamps and untested Untinker support.

2011_05_29/1.4.0 - Fixed a couple of typos. Version checking should work. Don't equip pool cue for library as long as you have one. Crypt should complete although sub-optimally.

2011_07_31/.4.0 - Updated farm.ash with Winterbay's mods to handle familiars better than before. Changed capitalization of "buycrap" in PullCrap so it plays nicely with the mafia's recent script MRU list. Meatcar cannot be untinkered anymore so don't try that in Ascend.

2012_03_17/1.4.1 - Updated Ascend to handle Untinker, Guild and Tavern Quests "better". Added return values where warning might become Error. See this post for more information.
 

Attachments

Last edited by a moderator:
I'm in the process of reading through it now, too. I have an L30+ char who will begin the tweaking process soon.
 
To answer a very good question from a PM: If those who have access to the script find any bugs, please feel free to quote the relevant section of code in this post as you would for a normal script - no need for passwords or obfuscation. I'll roll bug fixes in to the first post just like I (and most others) do for scripts that I maintain.
 
Thank you for using the word "posthaste." As an English teacher, the cockles of my heart are warmed.

And thanks for the kind words. To tweakers: I recommend SmartStasis as an improved extension of FirstThingsFirst. If you ever have a restoring or producing familiar equipped, it will save you meat on restores, and earn you more meat. But even if you don't use a stasis-worthy familiar, it will also intelligently handle gremlins, something which OCW soon won't.
 
I love that word. Because, it's not like I'm going to get to it first. First I'm going to do some hasty things that I'm probably going to regret. But just as soon as I get done with those regrettable, impulsive indiscretions, I'm going to get to this as the very next thing. After the hasty stuff.

Yeah, yeah, I know it's from "hurry this package through the mail". But I like my interpretation better.
 
Just a suggestion:
When you try to create the meatcar is it possible to change the script so that it tries to pull a clockwork maid and the dope wheels from storage.
Then tries to untinker the maid, make the meatcar and reassemble the maid?

And if the above isn't possible change it to the default behavior?
 
Neat script, nice work! How long (in terms of daycount/turncount) does an ascension typically take when using this script? I'd like to know before I buy it.
 
Neat script, nice work! How long (in terms of daycount/turncount) does an ascension typically take when using this script? I'd like to know before I buy it.

Good question. I spent lots of time working to optimize it, but there's a whole bunch more work to do (like quest order, outfits and item usage that accelerates certain things, etc). If I'm in a hurry, I usually interrupt it at a few key points to speed things up, mostly by manually changing outfits and moods based on the quest at hand.

But on full autopilot (which is what I usually do) it ascends after less than 1500 turns, if I recall, which is 5-6 days.
 
From some PM conversations, and inspired by Zarqon's 'Goals of OCW' post:

The goal of ascend.ash is to handle the details of repeated ascension without interruption. If you find a bug that causes it to stop execution, please let me know and I will do my best to fix it. There are a few known bugs like this that I've decided to let slide - for example, when wossname.ash runs out of adventures, it doesn't automatically continue with dinner and pajamas, you have to rerun the script - but for the most part these are bugs and I will try to fix them.

The script is NOT optimal. I'd love to hear your suggestions or, better yet, patches for taking fewer turns and/or less meat. But there's a ton of these, and I haven't (and don't plan to) spend the time to implement them all. Even without that, it's pretty darn fast!

One more issue: it's very hard to do QA on a script this big. For example, I'm updating right now to include some changes that will, I hope, improve the behavior of the script in farming for a meat engine. But it would take me a week (and add a bunch of time to my ascension run) to test this. I might be inadvertently wrecking the whole meatcar quest.

Because of the difficulty of doing QA, I'm going to be inclined to fix things that either a) are about to be executed by one of my characters in the course of a normal ascension (so I can verify the fix worked) or b) are very bad. Beyond that, I will likely let a lot of nonoptimal behavior slide, for a while or permanently, unless someone's kind enough to post a tested patch.

And again, feel free to tell me about optimization ideas (I may get around to implementing them), or quoting code here (I don't mind having fragments shared in the thread). I just might not do anything with the information. :)

Thanks to those who are using it and providing feedback!
 
I always get this message:
Code:
Checking if a version newer than this one (LevelUp.ash 1.01) is available.
Adventuring to level=9, or you're out of adventures. Processing all locations...
Nowhere to adventure that's safe right now!
I configured it with these settings:
int threshold = 6;
int AcceptableDmgPercent = 50;

and my safetyThreshold=6

I'm level 8 with 76 moxie.
And I forgot to mention that I can hit nearly everything with shieldbut.

any idea?
 
Last edited:
If that's what you're actually seeing and not a truncated output (i.e. there's no list of locations in the middle), then levelup can't find its map files, locs_by_xp and locs_by_meat. Try putting them in the mafia dir or in the scripts subdir.
 
Last edited:
I've also had the same problem, I'm running the script from a sub-directory. Moving the map files to the main mafia script directory solved this. Can I make a plea again for the default directory for the map command be the current directory rather that the script root? Either that or make backslashes work again, please...

Other than that, I'm very impressed with the script so far, I've had it loop a few times but have been unable to reproduce this, on restarting it's run through OK . One time when this happened was due to running out of turns trying to open up the hidden city at the spooky temple.

The other major problem I've found is it doesn't seem to handle the case when you zodiac sign does not match your class, I've a DB I've just ascended with a muscle sign, as I want to get the hobo glyph there and it's trying to adventure in Degrassi Knoll
 
If that's what you're actually seeing and not a truncated output (i.e. there's no list of locations in the middle), then levelup can't find its map files, locs_by_xp and locs_by_meat. Try putting them in the mafia dir or in the scripts subdir.

Ah, that explains the problem I was having as well. I've changed the import links to lead to the subdirectory I made, but I missed the ones referring to the .txt files.

Another thing, it appears you forgot to update the version number after updating it.
 
Thanks for the feedback. I'll try to take a look a the sign disconnect thing; I've never tested that.

You're right about it ending early during wossname.ash (I think I mentioned that earlier) as well as a few other places. Some of those are fixable and will be fixed with time; I can't easily fix the wossname one without changing wossname.ash itself, which makes it hard to keep in sync with Z's releases.

You're right about the version numbers. I get lazy about that on all my scripts.

ANd I'm with you on changing default directory handling.
 
What are the situations where OCW is causing an unwanted abort? I should think that the only aborts it generates are caused by either running out of adventures, or improper setup on the part of the container script (i.e. quest not yet available, already drunk, etc).

FYI, if calling a script in a chain of multiple CLI commands, i.e.

cli_execute("call wossname; call logout");

then the second CLI command is executed regardless of whether the called script aborted or not. Perhaps you could use that to your advantage.

But, it would be a simple matter to make OCW exit without calling abort(), since I already have a container function for abort() calls. I'll put this in the next update.
 
I thought about asking but didn't want to be a pest. :)

Z: If it runs out of adventures, then I want control to return to ascend.ash so I can have it eat & put on pajamas before exiting. The approach that comes to mind for me would be if OCW was broken in to sub-functions like macguffin. Then OCW main could call the sub-functions and abort on failure; I could include OCW and call the subfunctions directly, catching error conditions. I don't like the current convetion of calling it from the CLI; it seems a little squirrly.

Off topic: Z, it would be good if wossname.ash uneffected deodorant at the start of the lighthouse, and reodorant at the start of the flyers quest.
 
Back
Top