autoBasement.ash - Better basement automation

The combat has been working for me, but... you might want to set your combat stat to Prime instead, to auto-target whatever your class happens to be. It makes a wonderful general choice.

But I'll look into what's going on with manual moxies probably tonight. Not that I expect to see anything different from my current prime selection...

The prime thing seems to have fixed it so thanks!

However there's still an issue where it can't manually pass the MP drain test as it doesn't switch to the 'MPDrain' outfit, leaving my max MP too low to pass.

EDIT: Also I've encountered another weird issue. On the muscle test this came up...

> call scripts\autoBasement.ash

mpAutoRecovery => -0.05
mpAutoRecoveryTarget => -0.05
Basement level 364: Muscle Test
Putting on outfit: Muscle
Equipment changed.
Maximizing...
2340 combinations checked, best score 4,314.00
Holding scratch 'n' sniff sword...
That's not an item, or it's not something you own.
unable to buff Muscle to 4159, quitting
mpAutoRecovery => 0.75
mpAutoRecoveryTarget => 1.0
Basement sucessfully automated for 0 out of 27 adventures. If the script failed due to being unable to buff you high enough you can either try to level up some or raise "autoBasement_max_potion_price" to a higher value.

It equips the sword so I'm not sure what's going on unless I screwed something up again somehow.
 
Last edited:

Theraze

Active member
Some other part of the outfit apparently doesn't exist anymore. Might be a sugar shield if you don't have auto retrieval configured or something else similar, but...
 
Some other part of the outfit apparently doesn't exist anymore. Might be a sugar shield if you don't have auto retrieval configured or something else similar, but...

I dunno, I have sugar stuff set to auto retrieve so I dunno what it could be. Unless it has something to do with the Scratch 'n' Sniff sword.
 

heeheehee

Developer
Staff member
It looks like you don't have a scratch 'n' sniff sword. If this is a new ascension, you can get one by using any scratch 'n' sniff sticker (probably wrestler if it's used for combat). If you want to use the CLI, I think "stickers wrestler, wrestler, wrestler" should do the trick.
 

Theraze

Active member
Not really being used for combat, because it's the "I just equipped my muscle outfit and still fail to hit my target, so I'm maximizing again" bit.

If it happens again, try "available_amount scratch, refresh inv, available_amount scratch" and you'll probably find that somehow mafia's info got out of sync. Maybe some part of your last fight corrupted the info with haiku or anapests or something else known to cause problems. If you ever figure out what it was, please post a good, replicable method of showing how it happened.

But the maximizer trying to equip something you don't have is something we can't actually script well around, without a LOT of wasted server hits.
 

Lhefriel

New member
Hey, the script is working great for me for the most part, but it seems to freeze every time it encounters an HP test, not happy that I don't have a familiar or something. Anyone know what's going wrong?

[1765] Fernswarthy's Basement (Level 250)
Encounter: Take the Red Pill/Take the Blue Pill
You gain 1009 Magicalness
You gain a Mysticality point!
Basement level 251: HP Test
Putting on outfit: Gauntlet
Equipment changed.
Maximizing...
1320 combinations checked, best score 26,428.85
Putting on hazmat helmet...
Equipment changed.
Wielding lawn dart...
Equipment changed.
Holding keg shield...
Equipment changed.
Putting on Mer-kin breastplate...
Equipment changed.
Putting on stainless steel suspenders...
Equipment changed.
You have no familiar with you.
 

Theraze

Active member
Well, first question is why you don't have a familiar selected. Is that a lifestyle choice or something?

The entire HP test runs from lines 997 to 1095.
1008-1012 are the cached lines and we pass the familiar strip in there because we get to the maximizer.
The word 'familiar' comes up another 5 times in the HP test section, mostly where it decides to use whatever is a benefit (4 times) and once where it decides to not suggest changing familiars if you don't have a disembodied hand, which eliminates two of the earlier-mentioned checks. The final 2 speculative checks allow for familiars despite them not being hands, but you never get there.

Sounds like it's just being caused by the decision to not have a familiar, despite you owning familiar gear that would potentially raise your max health.
 

Lhefriel

New member
The thing is, when I picked a familiar and restarted the script, it put that familiar back in my terrarium and quit because I didn't have a familiar after that. I'm in normal aftercore after a Standard ascension, so there shouldn't be any restrictions on my using familiars. Maybe I have some setting wrong?
 
Just a random guess, but do you happen to have anything set for is_100_run? Theoretically that shouldn't be leaving you with no familiar, but it's a thought.
 

Winterbay

Active member
Could you check your autobasement settings (zlib autobasement) so ghat there isn't any familiar settings that mess with things?
 

Theraze

Active member
How about running the familiar drop code and seeing if it's acting up?
> ash import <autoBasement.ash> if(to_familiar(vars["is_100_run"]) == $familiar[none]) { int mushrooms = (have_familiar($familiar[astral badger]) == true ? to_int(get_property( "_astralDrops" )) : 5); int absinths = (have_familiar($familiar[green pixie]) == true ? to_int(get_property( "_absintheDrops" )) : 5); int gongs = (have_familiar($familiar[llama lama]) == true ? to_int(get_property( "_gongDrops" )) : 5); int tokens = (have_familiar($familiar[rogue program]) == true ? to_int(get_property( "_tokenDrops" )) : 5); int transponders = (have_familiar($familiar[li'l xenomorph]) == true ? to_int(get_property( "_transponderDrops" )) : 5); int aguas = (have_familiar($familiar[baby sandworm]) == true ? to_int(get_property( "_aguaDrops" )) : 5); int folios = (have_familiar($familiar[blavious kloop]) == true ? to_int(get_property( "_kloopDrops" )) : 5); int greases = (have_familiar($familiar[bloovian groose]) == true ? to_int(get_property( "_grooseDrops" )) : 5); int item_drop = min(5,min(mushrooms,min(absinths,min(gongs, min(tokens, min(transponders, min(aguas, min(folios, greases)))))))); if (get_familiar_drops && item_drop != 5) { if (mushrooms <= item_drop && mushrooms < 5) { use_familiar($familiar[astral badger]); } else if (absinths <= item_drop && absinths < 5) { use_familiar($familiar[green pixie]); } else if (gongs <= item_drop && gongs < 5) { use_familiar($familiar[llama lama]); } else if (tokens <= item_drop && tokens < 5) { use_familiar($familiar[rogue program]); } else if (transponders <= item_drop && transponders < 5) { use_familiar($familiar[li'l xenomorph]); } else if (aguas <= item_drop || aguas < 5) { use_familiar($familiar[baby sandworm]); } else if (folios <= item_drop || folios < 5) { use_familiar($familiar[blavious kloop]); } else if (greases <= item_drop || greases < 5) { use_familiar($familiar[bloovian groose]); } } else if (have_familiar($familiar[baby sandworm])) { use_familiar($familiar[baby sandworm]); } else if (have_familiar($familiar[hovering sombrero])) { use_familiar($familiar[hovering sombrero]); } } else use_familiar(to_familiar(vars["is_100_run"]));

Returned: true
Run the part after the > and it should return true, like mine.
 

Lhefriel

New member
That command does return true. Also, I ascended since my last post and the bug appears to be happening less frequently now, though it still happens sometimes: I burned ~160 adventures with the script and the bug only came up once.
 

Theraze

Active member
Well, right after the bug happens, try running that bit. One of the familiar drop bits might be off or something similar...
 

DoctorWeebl

New member
So, I've searched a little, and I'm not really seeing an option to set my own "default" familiar. Am I correct in this? It looks like it will only default to Sombrero or Sandworm, and only if autoBasement_get_familiar_drops is set to true.

Is there a way to change this default to something like, oh, the Puck Man? I tried editing lines 1197-1199 to swap "hovering sombrero" for "puck man", but it doesn't seem to work. Just unequips Puck Man and goes into combat without a familiar.
 

Theraze

Active member
The only suggestion really is to do what you already did. Unless for some reason have_familiar returned false on your puck man check, that should have equipped it...

For non-drop stat gains, what familiars do we want to add in which order? We should probably add the rat to the end of the list as the final-drop-through, since it's a slight bonus and everyone gets one as a required part of ascension (whether or not you grow it), but... what other familiars, in which order, and why?

For that matter, if the reason you're adding it is because of a drop, then we should be putting it into the drop farming section instead. The lower default bit should be used for familiars that provide an ongoing bonus or some general combat benefit.
 

DoctorWeebl

New member
I am not doing it for a drop, but instead because it blocks AND drops AND restores HP/MP. I figured out that [ms puck man] and [puck man] are totally different variables. But I never considered the need for stat boosting....in which case I will use Galloping Grill. Thanks for the help.
 

Theraze

Active member
Yep, two different familiars. Glad you got yours sorted. If we want to add more for the main defaults, the offer still stands.
 

DoctorWeebl

New member
If we want to add more for the main defaults, the offer still stands.

I didn't have anything in mind, as just the one familiar works perfectly for me. :)

Though I am pretty stumped on the next part I've come to. I'm needing it to maximize spell damage during combat, so my CCS works properly. However, I cannot seem to set the variables correctly or something. I guess I have a rudimentary understanding of what each var is actually affecting.

My current settings (that do not work):
Code:
zlib autoBasement_combat_equipment = Lens of Hatred,Staff of Simmering Hatred,big bumboozer marble,sea salt scrubs,Pantaloons of Hatred,Girdle of Hatred,Fuzzy Slippers of Hatred,stainless steel scarf
zlib autoBasement_combat_maximizer_string = spell damage, 1 mysticality
zlib autoBasement_combat_stat = Mysticality

So, first I tried to just override the "Damage" outfit, which it switches to before combat, with a spell damage maximized outfit. No dice. The script is smarter than that, and remaximizes for (what seems to be) Mysticality, based on my set variable above. However, I would think it would be overridden by the combat_equipment variable...but either I've set it completely wrong, or my assumption is incorrect.

I also tried
Code:
zlib autoBasement_combat_maximizer_string = 2 spell damage, 1 mysticality
That did not work either. I am not really sure what the above variable is good for, or actually does. No matter what I put there, it seems to default to maximizing Myst.

All I want is either to maximize for spell damage when it fights a monster, or use my Spell Damage outfit when entering combat.
 

Theraze

Active member
Remove the mysticality part from your maximizer string. It isn't helping - at best you're maximizing twice and it's wiping one of the mysticality zones out. Second, you almost certainly want as much spell damage as you can get, not just even with or twice as much as mysticality. You probably want to set 10 spell damage or even 50 spell damage. Look at what you get in vanilla maximizer... at what point do you like what the maximizer does? That's what you want (minus the 1 mysticality) in your combat maximizer string.
 

DoctorWeebl

New member
Currently this is what the variables look like:

Code:
zlib autoBasement_combat_equipment = navel ring of navel gazing
zlib autoBasement_combat_maximizer_string = 50 spell damage
zlib autoBasement_combat_stat = Mysticality

It still tries to switch into Damage costume, which is mainly Myst-boosting gear. Putting "maximize 50 spell damage" into the maximizer shows a very different set of equipment than what it actually tries to equip with the above settings - which is instead what happens when I check "maximize mysticality". If I just switch the combat_stat variable to Muscle, it just maximizes for that, and ignores combat_maximizer_string. As far as I can tell, combat_stat variable is doing the right thing, but setting combat_equipment and combat_maximizer_string don't seem to do what I want.
 
Top