Yet another ascension zcript

mapledyne

Member
I really like Cheese's ascension script (I've not ran bumcheek's, but have looked at the code now and then and it also looks great), but I wanted it to do things a bit differently and, over time, I've built something new.

As currently structured, it's not nearly as focused on ascension optimization (though it's heading that way) and instead intended to be a script that will run regardless of prerequisites. If you don't have an IotM, it'll work around it.

While built for Hardcore, it has some basic Softcore support to help out with that.

To compare to Cheese's, here my quick pro/con:

Pro:
It's designed to ascend a no-skill, no-iotm character
It's far more verbose as it works to let you know what's happening
It has some side functionality (see below)

Con:
Not as fast (turn-wise)
It's far more verbose and has several wait() pauses. If you're in a hurry, this is not going to be helpful
Newer (likely bugs and corner cases that aren't as well considered, especially under Path runs)

To install:
Code:
svn checkout https://github.com/mapledyne/yaaz/branches/master/

If you go to that site (https://github.com/mapledyne/yaaz) you can also see current issues and such being worked on.

The scripts:
  • yaaz : The main ascension script. Run this and ascend
  • yaaz-progress : A simple progress sheet of the state of your character
  • yaaz-trophy : Progress towards some trophies and related goals

If you're curious about it, install it and run yaaz-progress (and maybe yaaz-trophy). It doesn't take any turns and will give you a quick eye toward the look and feel of the script.

Options to configure the script a bit can be found here: yaaz-options

Does the world need another ascension script? Probably not. I mainly made this for myself but feel it's coming together well enough to maybe help a handful of others, and no sense in not sharing.

-- mapledyne (here), degrassi (in kol)

Edit: Because this uses some of the newer spacegate functionality, it requires a reasonably current mafia. I've added a 'since' in there, which probably should have been in there from the beginning.

Revision history:
1.4 Ed the Undying: Pirate PvP season. Banish improvement.
1.3 Demoninja: add yz_do_lovetunnel flag, don't override mood, misc fixes (esp. around NC choices)
1.2 Cactuary: add yz_always_daily_dungeon flag to get daily dung. rewards. Add support for Lights Out questline. Add yz_pool_skill to get the pool skill semi-rare.
1.1 Baa'baa'bu'ran: add yz_no_dispose flag, several more NC options are managed, a handful of checks around fighting in areas you shouldn't.
1.0 Alphabet Giant: Initial release
 
Last edited:

VladYvhuce

Member
The quests list is longer than the screen. Perhaps that should be chopped into seperate sections, for the L and M quests?
 

Pazleysox

Member
This is pretty cool. I have a multi that has very few ascensions, and some VERY old IoTM's Cheesecookie's script didn't seem to care for it. I will definitely try this!

Try 1 & 2 (& more)

Code:
> call scripts\yaaz\util\yaaz-trophy.ash

Invalid field name 'name' (yz_print.ash, line 30)

> call scripts\yaaz\util\yaaz-progress.ash

Invalid field name 'name' (yz_print.ash, line 30)

I get this error no matter which script I run.

** EDIT **
I removed both cases of ".name" from the script, and it came up with this:
> call scripts\yaaz\util\yaaz-trophy.ash

Invalid type name ']' (yz_monsters.ash, line 47)
 
Last edited:
Does the world need another ascension script? Probably not. I mainly made this for myself but feel it's coming together well enough to maybe help a handful of others, and no sense in not sharing.

We always need more scripts. More code for everyone. Yay, code!
 

mapledyne

Member
This is pretty cool. I have a multi that has very few ascensions, and some VERY old IoTM's Cheesecookie's script didn't seem to care for it. I will definitely try this!

Try 1 & 2 (& more)

Code:
> call scripts\yaaz\util\yaaz-trophy.ash

Invalid field name 'name' (yz_print.ash, line 30)

> call scripts\yaaz\util\yaaz-progress.ash

Invalid field name 'name' (yz_print.ash, line 30)

I get this error no matter which script I run.

** EDIT **
I removed both cases of ".name" from the script, and it came up with this:
> call scripts\yaaz\util\yaaz-trophy.ash

Invalid type name ']' (yz_monsters.ash, line 47)

I use that field name in the script, yes, but it's a pretty straightforward field. Is your mafia up to date?

Can you try this and let me know what you see as a result:
Code:
ash print($item[cast].name);

That's a simple version of what that line is doing. I'd be curious if it comes back for you as well.
 

mapledyne

Member
The quests list is longer than the screen. Perhaps that should be chopped into seperate sections, for the L and M quests?

Huh. It isn't for me, but that may just be a screen resolution thing. Breaking that list out wouldn't be to hard to do and may make the organization a bit easier to read through.
 

Pazleysox

Member
I use that field name in the script, yes, but it's a pretty straightforward field. Is your mafia up to date?

Can you try this and let me know what you see as a result:
Code:
ash print($item[cast].name);

That's a simple version of what that line is doing. I'd be curious if it comes back for you as well.

with V-17648
Invalid field name 'name' ()
Returned: void

with V-17983
cast
Returned: void

I received THIS error...
> call scripts\yaaz\util\yaaz-trophy.ash

Type given but not used to declare anything (yz_monsters.ash, line 47)

so I updated to V-18003, and updated svn, then made sure I had an un-paz-afied version of your script... and got the same error
 

mapledyne

Member
I received THIS error...
> call scripts\yaaz\util\yaaz-trophy.ash

Type given but not used to declare anything (yz_monsters.ash, line 47)

Huh. That function is working on my app, but I made the variable declaration more explicit there. Can you run an svn update and see if it clears that one up? If so, I'll go through the rest of the code to make sure there aren't similar declarations in other places, but I can't reproduce it here so I don't want to go down that trail unless the more explicit declaration works on your end. If that doesn't fix it, then it'll really be a mystery.
 

Pazleysox

Member
I did the SVN UPDATE. It updated 1 file, but not the one in question. I'm still getting the same error.

line 47 says:

monster() monsters = get_monsters(loc);
 

mapledyne

Member
I did the SVN UPDATE. It updated 1 file, but not the one in question. I'm still getting the same error.

line 47 says:

monster() monsters = get_monsters(loc);

Here's what the code is on line 47 on my end:
Code:
monster[int] monsters = get_monsters(loc);

I checked github directly to see what it said for that file, and the line is the same as what I have there, too. If SVN update doesn't pick it up, and a delete/checkout doesn't, I really don't know how to get you past that. You can at a minimum change that line of code to what I've already change it to (above), but not picking up changes is a mafia/svn problem I don't have nearly the experience with. For reference, there were eight files changed in that update since I pushed the other changes I had there, too. If you only picked up one file changed, it'd be suspicious, and not in a way I can straightforwardly help with. I've been testing with a few other players and they've been getting updates as they get pushed. Weird all around.
 

Pazleysox

Member
Here's what the code is on line 47 on my end:
Code:
monster[int] monsters = get_monsters(loc);

I checked github directly to see what it said for that file, and the line is the same as what I have there, too. If SVN update doesn't pick it up, and a delete/checkout doesn't, I really don't know how to get you past that. You can at a minimum change that line of code to what I've already change it to (above), but not picking up changes is a mafia/svn problem I don't have nearly the experience with. For reference, there were eight files changed in that update since I pushed the other changes I had there, too. If you only picked up one file changed, it'd be suspicious, and not in a way I can straightforwardly help with. I've been testing with a few other players and they've been getting updates as they get pushed. Weird all around.

Originally my line 47 said
Code:
monster[] monsters = get_monsters(loc);
I changed the [] to (). I remember doing this. I switched it to what you said it should be, and got another error. I deleted everything, and redownloaded fresh, and the script is currently working! :) Much thanks for writing this!
 

mapledyne

Member
Originally my line 47 said
Code:
monster[] monsters = get_monsters(loc);
I changed the [] to (). I remember doing this. I switched it to what you said it should be, and got another error. I deleted everything, and redownloaded fresh, and the script is currently working! :) Much thanks for writing this!

Glad it's working!

I have a small handful of accounts I'm testing with, and a couple of other people I know that are helping, but I'm sure there are big swaths of code that doesn't have rigorous testing on it at this point. Improvements there, or suggestions on helping it make better choices as it works is very much appreciated.
 

VladYvhuce

Member
Is there a function I can turn off to stop the script from selling stuff? Or am I going to have to comment out all of those individually?
 

mapledyne

Member
Is there a function I can turn off to stop the script from selling stuff? Or am I going to have to comment out all of those individually?

I've added a flag to allow this more easily:
Code:
set yz_no_dispose=true

It'll block all of the functions that would otherwise dispose of an item in anyway (except any quest required things). Doing this during a regular run will require you to sell things and otherwise generate meat - this flag doesn't cause the script to meat farm outside of what it was already doing, so there'll likely be a shortage (especially on a HC run).

If you're just trying to protect a couple of items, but don't mind the script trying to clean up after itself, you can mark the items as 'memento' in mafia and make sure you have the option "prevent destruction of memento items" on. The script will also respect that.

Both paths are, admittedly, not heavily tested, but worked reasonably well in the accounts I have here to test with.
 

VladYvhuce

Member
I've added a flag to allow this more easily:
Code:
set yz_no_dispose=true

It'll block all of the functions that would otherwise dispose of an item in anyway (except any quest required things). Doing this during a regular run will require you to sell things and otherwise generate meat - this flag doesn't cause the script to meat farm outside of what it was already doing, so there'll likely be a shortage (especially on a HC run).

If you're just trying to protect a couple of items, but don't mind the script trying to clean up after itself, you can mark the items as 'memento' in mafia and make sure you have the option "prevent destruction of memento items" on. The script will also respect that.

Both paths are, admittedly, not heavily tested, but worked reasonably well in the accounts I have here to test with.
Hmm.... Still sold a few things and pulverized some others... Unless I'm using that wrong... I assumed it was something to type into the CLI?

I generally prefer to sell things my own way. And sometimes I run across someone wanting to trade X amount of Y items for either Z meat or A amount of B items that I want. I also like keeping various items for later use, such as my clockwork meat maid stash (or all of those white pixels the script sold). I also tend not to do HC runs, as I like using my various "softcore only" items that make my gaming experience less of a hassle.
 
Last edited:

Pazleysox

Member
Glad it's working!

I have a small handful of accounts I'm testing with, and a couple of other people I know that are helping, but I'm sure there are big swaths of code that doesn't have rigorous testing on it at this point. Improvements there, or suggestions on helping it make better choices as it works is very much appreciated.

Ran into an endless loop last night with the script trying to use Ferrigno's which I didn't have in my inventory. I ended up aborting the script, and manually buying one.

It ended up in a second endless loop trying to get to an area that was not currently available. I don't know what the area was, the script didn't say. I am level 10, was working on the level 9 quest, level 10 quest started, but not complete.

**EDIT**
Off to kill Groar.
Buying 1 Jarlsberg's key from the Vending Machine.
Visiting the Vending Machine...
You acquire an item: Jarlsberg's key
Vending Machine successfully looted!

That area is not available.

Looks like it was trying to get to Groar, but I don't have any cold gear available. It went into an endless loop saying "That area is not available."

**EDIT2**
I killed Groar manually, after buying the outfit. I'm out of ronin. The script is stuck on me having Ferrigno's available at all times though. I tried to find where it was in the script, but there was too many for me to look into.
 
Last edited:

mapledyne

Member
Looks like it was trying to get to Groar, but I don't have any cold gear available. It went into an endless loop saying "That area is not available."


I forgot that the peak needed the cold resistance even after ascending the first time (and apparently my test accounts were getting the right equipment set up even without it making a specific check for it). It checks this now, here and some similar checks throughout.

Hmm.... Still sold a few things and pulverized some others... Unless I'm using that wrong... I assumed it was something to type into the CLI?

I generally prefer to sell things my own way. And sometimes I run across someone wanting to trade X amount of Y items for either Z meat or A amount of B items that I want. I also like keeping various items for later use, such as my clockwork meat maid stash (or all of those white pixels the script sold). I also tend not to do HC runs, as I like using my various "softcore only" items that make my gaming experience less of a hassle.

Weird. I set the variable ('set yz_no_dispose=true') and tried to manually run the functions that sell things, like so:
Code:
ash import yz_inventory.ash; sell_all($item[cast])
(obviously only do this on a test item you don't mind accidentally selling)

With the flag on, it didn't sell it, and with the flag off, it sold it.

Are you getting the no-dispose warning at the start? When I added the flag, I also added a warning at the beginning saying essentially "hey, you'll have to manage your own inventory now". If you're not getting that, you likely either have the variable set incorrectly, or need to update the script. I checked everywhere it sells white pixels and it all goes through sell_all, which checks that flag before doing anything, so while it could be a code thing, I'm leaning towards the flag or needing an SVN update. I'll go back over things if you check both on your end and they both look good (and you're getting that no-dispose warning at the beginning).

Related: I've added in the newest version a version tag at the top so it's more clear what version it's on. Should have done that from the start.
 

VladYvhuce

Member
I forgot that the peak needed the cold resistance even after ascending the first time (and apparently my test accounts were getting the right equipment set up even without it making a specific check for it). It checks this now, here and some similar checks throughout.



Weird. I set the variable ('set yz_no_dispose=true') and tried to manually run the functions that sell things, like so:
Code:
ash import yz_inventory.ash; sell_all($item[cast])
(obviously only do this on a test item you don't mind accidentally selling)

With the flag on, it didn't sell it, and with the flag off, it sold it.

Are you getting the no-dispose warning at the start? When I added the flag, I also added a warning at the beginning saying essentially "hey, you'll have to manage your own inventory now". If you're not getting that, you likely either have the variable set incorrectly, or need to update the script. I checked everywhere it sells white pixels and it all goes through sell_all, which checks that flag before doing anything, so while it could be a code thing, I'm leaning towards the flag or needing an SVN update. I'll go back over things if you check both on your end and they both look good (and you're getting that no-dispose warning at the beginning).

Related: I've added in the newest version a version tag at the top so it's more clear what version it's on. Should have done that from the start.

from the CLI, after I updated again.
Code:
> ash import yz_inventory.ash; sell_all($item[white candy heart])

Returned: void
I'm too drunk to adventure, so I'll try one of the adventure scripts again after rollover.

EDIT: It's still selling stuff.
Code:
> ash import yz_inventory.ash; sell_all($item[cast])

You have the latest use_for_items.txt. Will not check again today.
Checking for updates (running ZLib rev. 31)...
Selling 4 casts
Autoselling items to NPCs...
You gain 128 Meat
Items sold.
Returned: void

Another edit: Had to delete the whole set out of the Scripts and the SVN folders and reinstall. It works, now.
 
Last edited:
Top