Winterbay's Helpful Automatic Monsterbasher (WHAM)

At the start of a new HC Big! Sauceror run WHAM's love of Candyblast got me beaten up at the Icy Peak -vs- a Yeti.
Is there any way I can weight Candyblast to be less preferred without completely excluding it?
 
Last edited:
At the start of a new HC Big! Sauceror run WHAM's love of Candyblast got me beaten up at the Icy Peak -vs- a Yeti.
Is there any way I can weight Candyblast to be less preferred without completely excluding it?
Edit batfactors.txt and replace the list of candy it drops with a dried face. This will be evaluated at about the same value as the candy drops. While it's a total hack, it works very well for now. I've been thinking about how to write a patch for BatBrain to fix it and finally have an idea, but I need to write up my faster-but-not-too-fast killing idea first.

EDIT: That will solve the over use of candyblast. Being beaten up is a different problem, since candyblast shouldn't be used if you'll get beaten up no matter now much candy it drops.
 
Okay, I've been thinking about the trade-off between meat-optimal killing and round-optimal killing for a while. I think I found a step in the right direction.

The problem: WHAM currently tries to kill spending as little meat as possible. This is awesome in hardcore and pretty nice in softcore, but wastes a lot of time saving very little meat in aftercore. It also means cutting most combats very close to the edge of losing and thus sometimes losing thanks to unaccounted for effect and very bad RNG.

The old method tried to spend as little meat as possible killing the monster (more or less, there's some problems there I don't want to get into). Recently, WHAM_killit was added which always tries to kill in the fewest number of rounds (it picks the cheapest option for that many round, but it could be very expensive when there are few options for the quickest kill). What I felt was lacking was a way to specify how much meat you were willing to pay to save a round. I think I figured out how to do that.

Instead of this:
Code:
        sort opts by kill_rounds(value.dmg)* (vars["WHAM_killit"] == "true" || my_location() == $location[Fernswarthy's Basement]? 1 : -(min(value.profit,-1)));
I propose something like this:
Code:
sort opts by kill_rounds(value.dmg)* -(min(value.profit-(can_interact()?50:5),-1));

Basically this says, I'm willing to spend 50 meat to save a round of combat in aftercore and during a run, I'm only willing to spend 5 meat to save a round.

I've been trying it out and it does seem to work as expected (other plans didn't). Note, this should be a middle ground between the previous two options. If 0 is used, it's the same as meat-optimized WHAM. If a large number is used, it's the same as WHAM_killit. In between, it will kill faster for more meat, but hopefully not too much.

I'm believe the actually value should be a user controlled variable. I'm not sure what good defaults would be. I did much of my softcore run at 15 and kills were a little faster and meat was used a little more, but neither effect was very large. I'm thinking somewhere around 0 or 5 for ronin. I'm thinking at least 50 meat for aftercore, maybe even 150 or more.

Only slightly related: I really don't like the "min(x,-1)" part of this heuristic, but when I tried to remove it bad things happen. I believe I know why, but it would require significant changes to remove that. And it's really not that big a deal. Most of the options removed by that min are just stasis options that should have already been considered during the stasis phase.

Anyway, I'm looking for feedback and hoping others feel gutsy enough to try this out. I'm going to do some aftercore testing tomorrow.
 
Okay, I've been thinking about the trade-off between meat-optimal killing and round-optimal killing for a while. I think I found a step in the right direction.

The problem: WHAM currently tries to kill spending as little meat as possible. This is awesome in hardcore and pretty nice in softcore, but wastes a lot of time saving very little meat in aftercore. It also means cutting most combats very close to the edge of losing and thus sometimes losing thanks to unaccounted for effect and very bad RNG.

The old method tried to spend as little meat as possible killing the monster (more or less, there's some problems there I don't want to get into). Recently, WHAM_killit was added which always tries to kill in the fewest number of rounds (it picks the cheapest option for that many round, but it could be very expensive when there are few options for the quickest kill). What I felt was lacking was a way to specify how much meat you were willing to pay to save a round. I think I figured out how to do that.

Instead of this:
Code:
        sort opts by kill_rounds(value.dmg)* (vars["WHAM_killit"] == "true" || my_location() == $location[Fernswarthy's Basement]? 1 : -(min(value.profit,-1)));
I propose something like this:
Code:
sort opts by kill_rounds(value.dmg)* -(min(value.profit-(can_interact()?50:5),-1));

Basically this says, I'm willing to spend 50 meat to save a round of combat in aftercore and during a run, I'm only willing to spend 5 meat to save a round.

I've been trying it out and it does seem to work as expected (other plans didn't). Note, this should be a middle ground between the previous two options. If 0 is used, it's the same as meat-optimized WHAM. If a large number is used, it's the same as WHAM_killit. In between, it will kill faster for more meat, but hopefully not too much.

I'm believe the actually value should be a user controlled variable. I'm not sure what good defaults would be. I did much of my softcore run at 15 and kills were a little faster and meat was used a little more, but neither effect was very large. I'm thinking somewhere around 0 or 5 for ronin. I'm thinking at least 50 meat for aftercore, maybe even 150 or more.

Only slightly related: I really don't like the "min(x,-1)" part of this heuristic, but when I tried to remove it bad things happen. I believe I know why, but it would require significant changes to remove that. And it's really not that big a deal. Most of the options removed by that min are just stasis options that should have already been considered during the stasis phase.

Anyway, I'm looking for feedback and hoping others feel gutsy enough to try this out. I'm going to do some aftercore testing tomorrow.

Thanks a lot. A stated previously I completely suck at using sort so any help is appreciated :)
I'll look into that tomorrow as well.

Edit: Do we think this should be handled by two variables (one for ronin, one for aftercore) or just one that is up the the user to change? I sort of feel that two variables makes the most sense to limit the amount of fuss for people who don't want to bother with changing things.

So, WHAM_ronin_roundcost and WHAM_aftercore_roundcost (or something) and then the script forces the second one to a pretty high value should WHAM_killit be set to true. Or should we retire that setting when we have a more granular system?
 
Last edited:
I'd suggest putting the two roundcost values next to each other so that people get less confused later. WHAM_roundcost_ronin and WHAM_roundcost_aftercore... and I'd probably remove WHAM_killit later. Possibly use that to default the initial setting for aftercore (500 if killit, 50 if not), but after it's been set once, I'd remove that variable and update/save vars.
 
I haven't noticed any adverse effect from changing line 485. I also haven't noticed any real change in behavior. To test:

I've been running for 10 turns with values between 0 and 50 for the in-ronin meat/round value
10 turns run with each change of the value
In the same adventure location
Then 10 turns run with the unmodified line 485

No matter what WHAM chooses the same combat strategy.

I've also tried to "cure" WHAM of it's love of Candyblast by increasing the value by, for certain monsters, A-Boo-Peak ghosts for example, it insists on trying to Candyblast ghosts to death. In fact WHAM just got me beaten up in A-Boo-Peak by trying to Candyblast a ghost. This is the same thing that got the character beaten up at the Icy Peak yesterday. (This is a WHAM/Batbrain issue) and has nothing to do with Crowther's change.

Unmodified WHAM just did the following:
Stasis with Candyblast to the round-limit cut-off (25 in my case)
Discovered that it had depleted the character's HP and MP to a point where there were was no way to kill the A-Boo-Peak ghost and then gave up.
Sigh.

Still testing. Will try values above 50 now.
Even with values as high as 500 for the in-ronin value WHAM consistently Candyblasts the character to death in the Boo Peak. There's something very wrong with the handling of physically resistant monsters.

Here's a representative combat from unmodified WHAM with verbosity set to 10:

Code:
[574] A-Boo Peak
Encounter: Whatsian Commando Ghost
Round 0: Arbos wins initiative!
Running ZLib version: r37 (current)
Running ZLib version: r37 (current)
1 HP costs 1.455μ. ( 96 / 277 )
1 MP costs 3.448μ. ( 159 / 486 )
Running BatBrain version: 1.38 (current)
Running SmartStasis version: 3.21 (current)
WHAM: We currently think that the round number is: 0 and that the turn number is 573.
WHAM: Checking to see if WHAM sould adjust the unknown_ml for Whatsian Commando Ghost.
WHAM: No need to do anything with Whatsian Commando Ghost.
WHAM: Setting up variables via BatBrain
Factoring in Scarysauce: (6) damage, retal
Value of stat gain: 520.63μ
Value of stat gain: 520.63μ
ATT: 236 (94% × (8.02), death in 96)
DEF: 221 (8.8% × 98.65 (5) (48), win in 51)
HP: 202, Value: 520.63 μ, RES: 1 (-1) (1) (-1)
Parsed round number: 1
Building options...
Evaluating '-max(1,0.075*10.0)'...
Evaluating '-max(1,0.075*10.0)'...
Evaluating 'min(29.0+3,10)+floor(sqrt(max(29.0-7,0)))'...
Evaluating '325.5*zone(sea)'...
Evaluating '1.0*(2.5+min(35.0,5)+0.0)'...
Evaluating '1.0*(12+min(0.15*221.0,20)+min(35.0,40))'...
Evaluating '1.0*(28+min(0.25*221.0,30)+min(35.0,60)+0.0)*1.5'...
Evaluating '1.0*(5.5+min(0.07*221.0,15)+min(35.0,25)+0.0)'...
Evaluating '1.0*(12+min(0.15*221.0,20)+min(35.0,40)+0.0)'...
Evaluating '1.0*(28+min(0.25*221.0,30)+min(35.0,60)+0.0)'...
Evaluating '1.0*(2.5+min(45.0+5.0,5))'...
Evaluating '(1+0.5*min(1,effect(sugar rush)))*1.0*(16+min(0.2*221.0,25)+min(45.0+0.0,15))'...
Evaluating '1.0*(16+min(0.2*221.0,25)+min(45.0+0.0,15))'...
Evaluating '-min(1,effect(jalape))*1.12*10.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*10.0)'...
Evaluating '1.0*(3.5+min(0.1*221.0,10)+min(45.0+2.5,10))'...
Evaluating '-min(1,effect(jalape))*1.12*3.0'...
Evaluating 'min(1,effect(jabanero))'...
Evaluating '1.0*(16+min(0.2*221.0,25)+min(45.0+2.5,15))'...
Evaluating '-min(1,effect(jalape))*1.12*10.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*10.0)'...
Evaluating '1.0*(22+min(0.3*221.0,30)+min(45.0+2.5,25))'...
Evaluating '-min(1,effect(jalape))*1.12*16.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*16.0)'...
Evaluating '-min(1,effect(jalape))*1.12*28.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*28.0)'...
Options built! (71 actions)
WHAM: We currently think that the round number is: 1 and that the turn number is 573.
WHAM: Current MP = 159 out of 486.
WHAM: You have no profitable MP restoratives.
WHAM: Current HP = 96 out of 277.
WHAM: Your most profitable healing option is use 5988.
WHAM: Your most profitable healing option is use 5988.
WHAM: Your best HP restoring option available is: use 5988
WHAM: You are fighting a Whatsian Commando Ghost. Mafia considers that this monster has an attack of 236 or 238 when given a monster name.
WHAM: Mafia further considers that this monster has a defense value of 221 or 222 when given a monster name.
WHAM: Mafia further further considers that this monster has a HP value of 202 or 200 when given a monster name.
WHAM: Your current ML-adjustment is: 10.
WHAM: You have muscle = 180, mysticality = 221, and moxie = 223
WHAM: Monster HP is 202.0.
WHAM: WHAM added the following to BatRound: if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; 
skill 4020 does hurt the monster for 15.0 and is ok.
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 1, profit: -1.45)
WHAM: We currently think that the round number is: 1 and that the turn number is 573.
WHAM: Starting evaluation and performing of attack
WHAM: We currently think that the round number is: 1 and that the turn number is 573.
skill 4020 does hurt the monster for 15.0 and is ok.
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 1, profit: -1.45)
WHAM: No need to stun this monster
Monster HP is 202 according to Mafia and 202.0 according to BatBrain.
WHAM: We can do a hot Saucesplash.
WHAM: We can saucesplash and so will do that.
Parsed round number: 1
Building options...
Evaluating '-max(1,0.075*10.0)'...
Evaluating '-max(1,0.075*10.0)'...
Evaluating 'min(29.0+3,10)+floor(sqrt(max(29.0-7,0)))'...
Evaluating '325.5*zone(sea)'...
Evaluating '1.0*(2.5+min(35.0,5)+0.0)'...
Evaluating '1.0*(12+min(0.15*221.0,20)+min(35.0,40))'...
Evaluating '1.0*(28+min(0.25*221.0,30)+min(35.0,60)+0.0)*1.5'...
Evaluating '1.0*(5.5+min(0.07*221.0,15)+min(35.0,25)+0.0)'...
Evaluating '1.0*(12+min(0.15*221.0,20)+min(35.0,40)+0.0)'...
Evaluating '1.0*(28+min(0.25*221.0,30)+min(35.0,60)+0.0)'...
Evaluating '1.0*(2.5+min(45.0+5.0,5))'...
Evaluating '(1+0.5*min(1,effect(sugar rush)))*1.0*(16+min(0.2*221.0,25)+min(45.0+0.0,15))'...
Evaluating '1.0*(16+min(0.2*221.0,25)+min(45.0+0.0,15))'...
Evaluating '-min(1,effect(jalape))*1.12*10.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*10.0)'...
Evaluating '1.0*(3.5+min(0.1*221.0,10)+min(45.0+2.5,10))'...
Evaluating '-min(1,effect(jalape))*1.12*3.0'...
Evaluating 'min(1,effect(jabanero))'...
Evaluating '1.0*(16+min(0.2*221.0,25)+min(45.0+2.5,15))'...
Evaluating '-min(1,effect(jalape))*1.12*10.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*10.0)'...
Evaluating '1.0*(22+min(0.3*221.0,30)+min(45.0+2.5,25))'...
Evaluating '-min(1,effect(jalape))*1.12*16.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*16.0)'...
Evaluating '-min(1,effect(jalape))*1.12*28.0'...
Evaluating 'max(1,min(1,effect(jabanero))*0.29*28.0)'...
Options built! (71 actions)
WHAM: Evaluating the attack but not performing it took 0.69 seconds.
WHAM: Debug printing the damage dealt by your options.

WHAM: Saucegeyser: 202.00 potential damage (raw damage: 164.85) and a hitchance of 100.00%.
WHAM: Awesome Balls of Fire: 202.00 potential damage (raw damage: 157.35) and a hitchance of 100.00%.
WHAM: Eggsplosion: 202.00 potential damage (raw damage: 152.35) and a hitchance of 100.00%.
WHAM: Snowclone: 152.35 potential damage (raw damage: 152.35) and a hitchance of 100.00%.
WHAM: Grease Lightning: 152.35 potential damage (raw damage: 152.35) and a hitchance of 100.00%.
WHAM: Wave of Sauce: 115.50 potential damage (raw damage: 77.00) and a hitchance of 100.00%.
WHAM: Käsesoßesturm: 112.00 potential damage (raw damage: 56.00) and a hitchance of 100.00%.
WHAM: Stuffed Mortar Shell: 93.00 potential damage (raw damage: 93.00) and a hitchance of 100.00%.
WHAM: Saucestorm: 84.00 potential damage (raw damage: 56.00) and a hitchance of 100.00%.
WHAM: Weapon of the Pastalord: 81.18 potential damage (raw damage: 160.35) and a hitchance of 100.00%.
WHAM: Cannelloni Cannon: 67.00 potential damage (raw damage: 67.00) and a hitchance of 100.00%.
WHAM: Ravioli Shurikens: 45.50 potential damage (raw damage: 45.50) and a hitchance of 100.00%.
WHAM: Chronic Indigestion: 45.00 potential damage (raw damage: 22.50) and a hitchance of 100.00%.
WHAM: Stream of Sauce: 35.25 potential damage (raw damage: 23.50) and a hitchance of 100.00%.
WHAM: Offensive Joke: 35.00 potential damage (raw damage: 35.00) and a hitchance of 100.00%.
WHAM: Salsaball: 15.00 potential damage (raw damage: 7.50) and a hitchance of 100.00%.
WHAM: flaregun: 14.20 potential damage (raw damage: 19.80) and a hitchance of 100.00%.
WHAM: Lunging Thrust-Smack: 12.00 potential damage (raw damage: 348.94) and a hitchance of 100.00%.
WHAM: Clobber: 8.00 potential damage (raw damage: 21.00) and a hitchance of 100.00%.
WHAM: Thrust-Smack: 7.04 potential damage (raw damage: 126.06) and a hitchance of 50.36%.
WHAM: Kneebutt: 7.04 potential damage (raw damage: 106.59) and a hitchance of 50.36%.
WHAM: Attack with your weapon: 3.00 potential damage (raw damage: 13.34) and a hitchance of 8.80%.
WHAM: Headbutt: 3.00 potential damage (raw damage: 17.16) and a hitchance of 9.00%.
WHAM: Candyblast: 1.00 potential damage (raw damage: 67.00) and a hitchance of 100.00%.
WHAM: seal tooth: 1.00 potential damage (raw damage: 1.00) and a hitchance of 100.00%.
WHAM: Toss: 1.00 potential damage (raw damage: 14.00) and a hitchance of 100.00%.
WHAM: Spaghetti Spear: 1.00 potential damage (raw damage: 7.50) and a hitchance of 100.00%.
WHAM: Suckerpunch: 1.00 potential damage (raw damage: 1.00) and a hitchance of 100.00%.
WHAM: Sing: 1.00 potential damage (raw damage: 2.50) and a hitchance of 100.00%.
WHAM: terrible poem: 1.00 potential damage (raw damage: 5.00) and a hitchance of 100.00%.
WHAM: Disco Eye-Poke: 1.00 potential damage (raw damage: 2.00) and a hitchance of 100.00%.
WHAM: Silent Slam: 1.00 potential damage (raw damage: 1.50) and a hitchance of 100.00%.
WHAM: Silent Slice: 1.00 potential damage (raw damage: 1.50) and a hitchance of 100.00%.
WHAM: Disco Dance of Doom: 1.00 potential damage (raw damage: 7.00) and a hitchance of 100.00%.
WHAM: Disco Dance II: Electric Boogaloo: 1.00 potential damage (raw damage: 9.00) and a hitchance of 100.00%.
WHAM: Tango of Terror: 1.00 potential damage (raw damage: 16.50) and a hitchance of 100.00%.
WHAM: Duskwalker syringe: 1.00 potential damage (raw damage: 38.00) and a hitchance of 100.00%.
WHAM: Silent Squirt: 1.00 potential damage (raw damage: 55.00) and a hitchance of 100.00%.
WHAM: Surge of Icing: 1.00 potential damage (raw damage: 84.00) and a hitchance of 100.00%.
WHAM: Disco Face Stab: 1.00 potential damage (raw damage: 16.50) and a hitchance of 100.00%.
WHAM: Stringozzi Serpent: 1.00 potential damage (raw damage: 139.50) and a hitchance of 100.00%.
WHAM: Battlie Light Saver: 1.00 potential damage (raw damage: 49.00) and a hitchance of 100.00%.
WHAM: Spectral Snapper: 1.00 potential damage (raw damage: 61.00) and a hitchance of 100.00%.
WHAM: Fearful Fettucini: 1.00 potential damage (raw damage: 160.35) and a hitchance of 100.00%.
WHAM: razor-sharp can lid: 1.00 potential damage (raw damage: 2.50) and a hitchance of 100.00%.
WHAM: grouchy restless spirit: 1.00 potential damage (raw damage: 42.00) and a hitchance of 100.00%.
WHAM: Raise Backup Dancer: 1.00 potential damage (raw damage: 152.35) and a hitchance of 100.00%.
WHAM: Toynado: 1.00 potential damage (raw damage: 152.35) and a hitchance of 100.00%.
WHAM: Knob Goblin firecracker: 1.00 potential damage (raw damage: 3.00) and a hitchance of 100.00%.
WHAM: baseball: 1.00 potential damage (raw damage: 7.00) and a hitchance of 100.00%.
WHAM: magical mystery juice: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Saucy Salve: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Lasagna Bandages: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Entangling Noodles: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Stealth Mistletoe: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: CSA obedience grenade: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: wussiness potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: patchouli incense stick: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: inkwell: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Doc Galaktik's Homeopathic Elixir: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: effervescent potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: Summon Leviatuga: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: disease: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: milky potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: bubbly potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: fizzy potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: murky potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: swirly potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: smoky potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: red potion: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.
WHAM: tropical orchid: 0.00 potential damage (raw damage: 0.00) and a hitchance of 100.00%.

WHAM: Evaluating the attack but not performing it took 3.97 seconds.
Round 1: Arbos executes a macro!
KoLmafia thinks it is round 2 but KoL thinks it is round 1
WHAM: Verbosity of 10 or more is set. Data files for debugging have been generated. Aborting.
You're on your own, partner.

Here's the same combat with verbosity set to 9:

Code:
Running ZLib version: r37 (current)
Previous value of verbosity: 10
Changed to 9.
Running ZLib version: r37 (current)
1 HP costs 1.455μ. ( 96 / 277 )
1 MP costs 3.448μ. ( 159 / 486 )
Running BatBrain version: 1.38 (current)
Running SmartStasis version: 3.21 (current)
WHAM: We currently think that the round number is: 0 and that the turn number is 573.
WHAM: Checking to see if WHAM sould adjust the unknown_ml for Whatsian Commando Ghost.
WHAM: No need to do anything with Whatsian Commando Ghost.
WHAM: Setting up variables via BatBrain
Factoring in Scarysauce: (6) damage, retal
Value of stat gain: 520.63μ
Value of stat gain: 520.63μ
ATT: 236 (94% × (8.02), death in 96)
DEF: 221 (8.8% × 98.65 (5) (48), win in 51)
HP: 202, Value: 520.63 μ, RES: 1 (-1) (1) (-1)
Parsed round number: 1
Building options...
Options built! (71 actions)
WHAM: We currently think that the round number is: 1 and that the turn number is 573.
WHAM: Current MP = 159 out of 486.
WHAM: You have no profitable MP restoratives.
WHAM: Current HP = 96 out of 277.
WHAM: Your most profitable healing option is use 5988.
WHAM: Your most profitable healing option is use 5988.
WHAM: Your best HP restoring option available is: use 5988
WHAM: You are fighting a Whatsian Commando Ghost. Mafia considers that this monster has an attack of 236 or 238 when given a monster name.
WHAM: Mafia further considers that this monster has a defense value of 221 or 222 when given a monster name.
WHAM: Mafia further further considers that this monster has a HP value of 202 or 200 when given a monster name.
WHAM: Your current ML-adjustment is: 10.
WHAM: You have muscle = 180, mysticality = 221, and moxie = 223
WHAM: Monster HP is 202.0.
WHAM: WHAM added the following to BatRound: if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; 
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 1, profit: -1.45)
WHAM: Running SmartStasis
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
Building custom WHAM actions...
Custom WHAM actions built! (0 actions)
Building custom actions...
Custom actions built! (1 actions)
Value of stat gain: 520.63μ
Attack action chosen: skill 4020 (round 1, profit: -1.45)
Stun action chosen: skill 3004 (round 1, profit: -10.34)
Custom action: skill 4014 (no stun)
Queued: skill 4014
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 2, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 2, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (71 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; skill 4014; call batround; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 108.0 && hpbelow 277 && !mpbelow 155.0 && !pastround 26)
Round 2: Arbos executes a macro!
Round 2: Arbos casts SAUCY SALVE!
KoLmafia thinks it is round 3 but KoL thinks it is round 1
You gain 14 hit points
Round 3: Arbos casts CANDYBLAST!
Round 4: whatsian commando ghost takes 1 damage.
Round 4: whatsian commando ghost takes 1 damage.
Round 4: whatsian commando ghost takes 1 damage.
Round 4: whatsian commando ghost takes 1 damage.
You lose 3 hit points
Happened: skill 4014
Happened: skill 3022
Parsed round number: 2
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 2, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 2, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (71 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 107.0 && hpbelow 277 && !mpbelow 149.0 && !pastround 23)
Round 4: Arbos executes a macro!
Round 4: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 5 but KoL thinks it is round 3
Round 5: whatsian commando ghost takes 1 damage.
Round 5: whatsian commando ghost takes 1 damage.
Round 5: whatsian commando ghost takes 1 damage.
Round 5: whatsian commando ghost takes 1 damage.
You lose 4 hit points
Happened: skill 3022
Parsed round number: 3
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 3, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 3, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (71 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 103.0 && hpbelow 277 && !mpbelow 143.0 && !pastround 23)
Round 5: Arbos executes a macro!
Round 5: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 6 but KoL thinks it is round 4
Round 6: whatsian commando ghost takes 1 damage.
Round 6: whatsian commando ghost takes 1 damage.
Round 6: whatsian commando ghost takes 1 damage.
Round 6: whatsian commando ghost takes 1 damage.
You lose 8 hit points
Happened: skill 3022
Parsed round number: 4
Happened: crit
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 4, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 4, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (71 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 95.0 && hpbelow 277 && !mpbelow 137.0 && !pastround 23)
Round 6: Arbos executes a macro!
Round 6: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 7 but KoL thinks it is round 5
Round 7: whatsian commando ghost takes 1 damage.
Round 7: whatsian commando ghost takes 1 damage.
Round 7: whatsian commando ghost takes 1 damage.
Round 7: whatsian commando ghost takes 1 damage.
You lose 7 hit points
Happened: skill 3022
Parsed round number: 5
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 5, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 5, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (71 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 88.0 && hpbelow 277 && !mpbelow 131.0 && !pastround 23)
Round 7: Arbos executes a macro!
Round 7: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 8 but KoL thinks it is round 6
Round 8: whatsian commando ghost takes 1 damage.
Round 8: whatsian commando ghost takes 1 damage.
Round 8: whatsian commando ghost takes 1 damage.
Round 8: whatsian commando ghost takes 1 damage.
You lose 5 hit points
Happened: skill 3022
Parsed round number: 6
Building options...
Options built! (71 actions)
WHAM: Stasis option chosen: skill 3022 (round 6, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 6, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 83.0 && hpbelow 277 && !mpbelow 125.0 && !pastround 23)
Round 8: Arbos executes a macro!
Round 8: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 9 but KoL thinks it is round 7
Round 9: whatsian commando ghost takes 1 damage.
Round 9: whatsian commando ghost takes 1 damage.
Round 9: whatsian commando ghost takes 1 damage.
Round 9: whatsian commando ghost takes 1 damage.
You lose 8 hit points
Happened: skill 3022
Parsed round number: 7
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 7, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4003 (round 7, profit: -3.46)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 75.0 && hpbelow 277 && !mpbelow 119.0 && mpbelow 120 && !pastround 23)
Round 9: Arbos executes a macro!
Round 9: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 10 but KoL thinks it is round 8
Round 10: whatsian commando ghost takes 1 damage.
You acquire an item: Daffy Taffy
Round 10: whatsian commando ghost takes 1 damage.
Round 10: whatsian commando ghost takes 1 damage.
Round 10: whatsian commando ghost takes 1 damage.
You lose 4 hit points
Happened: skill 3022
Parsed round number: 8
Look! You found 1 Daffy Taffy (30μ)!
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 8, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 8, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 71.0 && hpbelow 277 && !mpbelow 113.0 && mpbelow 120 && !pastround 23)
Round 10: Arbos executes a macro!
Round 10: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 11 but KoL thinks it is round 9
Round 11: whatsian commando ghost takes 1 damage.
Round 11: whatsian commando ghost takes 1 damage.
Round 11: whatsian commando ghost takes 1 damage.
Round 11: whatsian commando ghost takes 1 damage.
You lose 4 hit points
Happened: skill 3022
Parsed round number: 9
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 9, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 9, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 67.0 && hpbelow 277 && !mpbelow 107.0 && mpbelow 120 && !pastround 23)
Round 11: Arbos executes a macro!
Round 11: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 12 but KoL thinks it is round 10
Round 12: whatsian commando ghost takes 1 damage.
Round 12: whatsian commando ghost takes 1 damage.
Round 12: whatsian commando ghost takes 1 damage.
Round 12: whatsian commando ghost takes 1 damage.
You lose 8 hit points
Happened: skill 3022
Parsed round number: 10
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 10, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 10, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 59.0 && hpbelow 277 && !mpbelow 101.0 && mpbelow 120 && !pastround 23)
Round 12: Arbos executes a macro!
Round 12: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 13 but KoL thinks it is round 11
Round 13: whatsian commando ghost takes 1 damage.
You acquire an item: Mr. Mediocrebar
Round 13: whatsian commando ghost takes 1 damage.
Round 13: whatsian commando ghost takes 1 damage.
Round 13: whatsian commando ghost takes 1 damage.
You lose 4 hit points
Happened: skill 3022
Parsed round number: 11
Look! You found 1 Mr. Mediocrebar (50μ)!
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 11, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 11, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 55.0 && hpbelow 277 && !mpbelow 95.0 && mpbelow 120 && !pastround 23)
Round 13: Arbos executes a macro!
Round 13: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 14 but KoL thinks it is round 12
Round 14: whatsian commando ghost takes 1 damage.
You acquire an item: Mr. Mediocrebar
Round 14: whatsian commando ghost takes 1 damage.
Round 14: whatsian commando ghost takes 1 damage.
Round 14: whatsian commando ghost takes 1 damage.
You lose 4 hit points
Happened: skill 3022
Parsed round number: 12
Look! You found 1 Mr. Mediocrebar (50μ)!
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 12, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 12, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 51.0 && hpbelow 277 && !mpbelow 89.0 && mpbelow 120 && !pastround 23)
Round 14: Arbos executes a macro!
Round 14: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 15 but KoL thinks it is round 13
Round 15: whatsian commando ghost takes 1 damage.
You acquire an item: Senior Mints
Happened: skill 3022
Parsed round number: 13
Look! You found 1 Senior Mints (50μ)!
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 13, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 13, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 51.0 && hpbelow 277 && !mpbelow 83.0 && mpbelow 120 && !pastround 23)
Round 15: Arbos executes a macro!
Round 15: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 16 but KoL thinks it is round 14
Round 16: whatsian commando ghost takes 1 damage.
You acquire an item: Cold Hots candy
Round 16: whatsian commando ghost takes 1 damage.
Round 16: whatsian commando ghost takes 1 damage.
Round 16: whatsian commando ghost takes 1 damage.
You lose 10 hit points
Happened: skill 3022
Parsed round number: 14
Look! You found 1 Cold Hots candy (50μ)!
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 14, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 14, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 41.0 && hpbelow 277 && !mpbelow 77.0 && mpbelow 120 && !pastround 23)
Round 16: Arbos executes a macro!
Round 16: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 17 but KoL thinks it is round 15
Round 17: whatsian commando ghost takes 1 damage.
Round 17: whatsian commando ghost takes 1 damage.
Round 17: whatsian commando ghost takes 1 damage.
Round 17: whatsian commando ghost takes 1 damage.
You lose 9 hit points
Happened: skill 3022
Parsed round number: 15
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 15, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 15, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 32.0 && hpbelow 277 && !mpbelow 71.0 && mpbelow 120 && !pastround 23)
Round 17: Arbos executes a macro!
Round 17: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 18 but KoL thinks it is round 16
Round 18: whatsian commando ghost takes 1 damage.
Happened: skill 3022
Parsed round number: 16
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 16, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 16, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 32.0 && hpbelow 277 && !mpbelow 65.0 && mpbelow 120 && !pastround 23)
Round 18: Arbos executes a macro!
Round 18: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 19 but KoL thinks it is round 17
Round 19: whatsian commando ghost takes 1 damage.
Round 19: whatsian commando ghost takes 1 damage.
Round 19: whatsian commando ghost takes 1 damage.
Round 19: whatsian commando ghost takes 1 damage.
You lose 7 hit points
Happened: skill 3022
Parsed round number: 17
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 17, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 17, profit: -1.45)
Top of the stasis loop.
Queued: skill 3022
Building options...
Options built! (65 actions)
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; sub finito; skill 3022; call batround; endsub; call finito; repeat hasskill 3022 && (!hpbelow 25.0 && hpbelow 277 && !mpbelow 59.0 && mpbelow 120 && !pastround 23)
Round 19: Arbos executes a macro!
Round 19: Arbos casts CANDYBLAST!
KoLmafia thinks it is round 20 but KoL thinks it is round 18
Round 20: whatsian commando ghost takes 1 damage.
Round 20: whatsian commando ghost takes 1 damage.
Round 20: whatsian commando ghost takes 1 damage.
Round 20: whatsian commando ghost takes 1 damage.
You lose 9 hit points
Happened: skill 3022
Parsed round number: 18
Building options...
Options built! (65 actions)
WHAM: Stasis option chosen: skill 3022 (round 18, profit: 23.86)
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 18, profit: -1.45)
Stasis loop complete.
WHAM: SmartStasis complete.
WHAM: Running SmartStasis took 50.66 seconds.
WHAM: SS did not finish the fight, continuing with script execution. 
WHAM: We currently think that the round number is: 18 and that the turn number is 573.
WHAM: Starting evaluation and performing of attack
WHAM: We currently think that the round number is: 18 and that the turn number is 573.
Value of stat gain: 520.63μ
WHAM: Attack option chosen: skill 4020 (round 18, profit: -1.45)
WHAM: No need to stun this monster
Monster HP is 140 according to Mafia and 140.0 according to BatBrain.
WHAM: We can do a hot Saucesplash.
WHAM: We can saucesplash and so will do that.
Happened: skill 3022
Parsed round number: 18
Building options...
Options built! (65 actions)
WHAM: Evaluating the attack but not performing it took 1.64 seconds.
WHAM: We can do a hot Saucesplash.
Queued: skill 4009
Building options...
Options built! (65 actions)
WHAM: Enqueueing Wave of Sauce.
Queued: skill 4012
Building options...
Options built! (61 actions)
WHAM: Enqueueing Saucegeyser.
WHAM: We are going to Saucesplash with Wave of Sauce and Saucegeyser
Constructed macro: scrollwhendone; sub batround; if pastround 27; abort "Stopping fight because it has gone on for too long (set WHAM_maxround to a higher value if you think this was in error)"; endif; endsub; skill 4009; call batround; skill 4012; call batround; 
Round 20: Arbos executes a macro!
Round 20: Arbos casts WAVE OF SAUCE!
KoLmafia thinks it is round 21 but KoL thinks it is round 19
Round 21: whatsian commando ghost takes 150 damage.
You gain 17 hit points
You gain 5 Mana Points
You acquire an effect: Burning Soul (duration: 1 Adventure)
Round 21: Arbos wins the fight!
After Battle: With a plop!, Arthur hops onto the corpse of your foe, which begins to smoke and dissolve in a rather gruesome fashion. After a minute, the cheezling crawls back up onto your shoulder, burbling happily; it's much warmer than before, and as the heat spreads through your body, you feel much better. And kind of creeped out.
You gain 41 hit points
You gain 48 Mana Points
You gain 16 Strongness
You gain 33 Wizardliness
You gain 13 Cheek
You gain a Moxie point!
Running ZLib version: r37 (current)
Happened: skill 4009
Parsed round number: 0
WHAM: Evaluating the attack and performing it took 54.66 seconds.
WHAM: We currently think that the round number is: 31 and that the turn number is 574.
WHAM: We currently think that the round number is: 31 and that the turn number is 574.
Running ZLib version: r37 (current)

In this one the character survived but it's the only time that's happened in 6 attempts. Is it possible that WHAM/Batbrain is over-estimating the effects of the running Saucespheres to keep my HP and MP at survivable levels?
 
Last edited:
It seems more like SmartStasis is ignoring the fact that you need to have some method to kill the monster when it's done, because BatBrain properly reports that the monster will only take 1 damage from your Candyblast, and WHAM would saucesplash the monster to death, given the chance. Similar to when WHAM gets stymied in killing a monster early in a run because SS cast entangling noodles and now you no longer have enough MP to kill it. Oops.

Your need steps seem to be:
1) Report the issue on the SmartStasis thread, since it's a problem there, not with BatBrain nor WHAM.
2) Decide what you want your next step to be.
2a) Devalue Candyblast per above suggestions so it doesn't always use it.
2b) Start using a MP restorative familiar like the Cocoabo or NPZR that will support extended Candyblasting.
2c) Put Candyblast into the blacklist.
2d) Wait and be frustrated while the problem continues to pop up irregularly for some time.
 
Theraze, that's a pretty good summary. He could also increase the setting for what SmartStasis considers profitable enough so that Candyblast is no longer used.

I've been playing with my WHAM adjustment. The differences are very subtle, but I think I found a way to show what's happening. Cut and paste killed my formatting, so here's a stupid screen shot. . .
example.gif

What you see is the action considered, the profit from doing that action (which is negative, because they cost meat), the damage done, the rounds taken to kill the monster and the value of the cost function that WHAM is trying to minimize. That last column (cost) includes the proposed per round cost. You see a trio of options with a number before each set. That number on the line by itself is the per round cost and ranges from 0 to 150 meat.

The first section shows what WHAM used to do (0 meat). Attack is the cheapest option with the fastest kill. Killing for free in two rounds. The second and third choices are also free, but take more rounds (3 and 7).

Now if we increase the per round cost to 25 meat. Attack is still chosen for free at two rounds, but the second choice is now Stringozzi Serpent (3023 13mp), which can kill in one round, but costs 45 more meat. We didn't agree to pay that much more, so attack is still the best.

However when we increase the per round cost to 50 meat, now Stringozzi Serpent moves up to number one for a one-hit-kill and attack is now second.

As we continue to increase the amount we're willing to pay to save rounds, Stringozzi Serpent stays the best (that's good) and attack (at 2 rounds) falls down the ranking list and is replaced by Saucegeyser (4012 24mp) and Fearful Fettucini (3019 28mp) which are both one hit kills and more expensive than Stringozzi Serpent.
 
Using a physical skill against a physically resistant monster is a really good stasis option since it won't kill the monster. I think the problem is really that it overuses it and thus leaving the player with no way to kill the monster.
I've committed a change that should try to save enough MP to perform a killing strategy, revision 8.

Edit: Please let me know if it works because I don't have candyblast myself. I guess I should perm that so I could test this stupidity myself :)
 
Last edited:
Using a physical skill against a physically resistant monster is a really good stasis option since it won't kill the monster.

I have no idea if BatBrain's been adjusted to note that Pinch Ghost (and I assume other +damage to ghost sources) now don't suck at their job.
 
Edit: Please let me know if it works because I don't have candyblast myself. I guess I should perm that so I could test this stupidity myself :)
I was going to joke about sending every dev here A Crimbo Carol, Ch. 3, but then I checked the prices: 7.8 million!
 
I have no idea if BatBrain's been adjusted to note that Pinch Ghost (and I assume other +damage to ghost sources) now don't suck at their job.

I don't think so. Has the new formula been spaded?

Edit: The wiki says it works against:
Code:
Some eligible monsters include [URL="http://kol.coldfront.net/thekolwiki/index.php/Banshee_librarian"]banshee librarians[/URL], [URL="http://kol.coldfront.net/thekolwiki/index.php/Chalkdust_wraith"]chalkdust wraiths[/URL], the spirits from [URL="http://kol.coldfront.net/thekolwiki/index.php/The_Maelstrom_of_Lovers"]the Maelstrom of Lovers[/URL], the ghosts at [URL="http://kol.coldfront.net/thekolwiki/index.php/A-boo_Peak"]A-boo Peak[/URL], [URL="http://kol.coldfront.net/thekolwiki/index.php/Ancient_protector_spirit"]ancient protector spirits[/URL], the [URL="http://kol.coldfront.net/thekolwiki/index.php/Protector_Spectre"]Protector Spectre[/URL], the [URL="http://kol.coldfront.net/thekolwiki/index.php/Ghost_of_Fernswarthy%27s_Grandfather"]Ghost of Fernswarthy's Grandfather[/URL] and naturally, [URL="http://kol.coldfront.net/thekolwiki/index.php/Ghost"]ghosts[/URL].

What other monsters does it work against (i.e. which others are classified as ghosts). "some eligible monsters" is no way to base something on :)

I was going to joke about sending every dev here A Crimbo Carol, Ch. 3, but then I checked the prices: 7.8 million!

Yep, that is the reason why those crimbo skills are one of the very few I don't have. EVery now and again I take a look and curse the fact that that crimbo was the one I was inactive for.
 
Last edited:
I don't think so. Has the new formula been spaded?

Edit: The wiki says it works against:
Code:
Some eligible monsters include banshee librarians, chalkdust wraiths, the spirits from the Maelstrom of Lovers, the ghosts at A-boo Peak, ancient protector spirits, the Protector Spectre, the Ghost of Fernswarthy's Grandfather and naturally, ghosts.

What other monsters does it work against (i.e. which others are classified as ghosts). "some eligible monsters" is no way to base something on :)

It's unfortunate that there's no phylum (type?) for ghost (instead, there's "undead", which has too many false positives) :P

Also, for the new formula, I assume said damage just bypasses physical immunity, not multiplied by anything (as is the case with bonus weapon damage).
 
Wellyes, it should auto-funk items via batbrain. Do you have more than one destroyerbot?

I just checked, and mafia says I have 2 (and I've had two for years...since before I started HC runs).

:confused:

Here's another example from today. Also note the bag of tricks craziness..."WHAM: We are going to 8-shot with Entangling Noodles, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks and attack with your weapon."

I thought you can only open it once per combat.

Also, it funkslings a gob of wet hair with a miniborg, but not two miniborgs.


Code:
[1582] Giant's Castle (Top Floor)
Encounter: Steampunk Giant
Strategy: /~/.kolmafia/ccs/HC.ccs [default]
Round 0: chef_rannos wins initiative!
Round 1: Items-Meat produces a tubular red firecracker labeled M-68, lights the long fuse, and tosses it behind your opponent.
ATT: 193 (94% × 16.34, death in 19)
DEF: 183 (49.22% × 39.51, win in 11)
HP: 203, Value: 938.81 μ, RES: 0
WHAM: Monster HP is 203.0.
WHAM: Running SmartStasis
Profit per round: ActionProfitDamageOtherbase (0μ)0μ--
WHAM: Starting evaluation and performing of attack
WHAM: Enqueuing a stun to help with the battle
WHAM: We are going to 8-shot with Entangling Noodles, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks, Open the Bag o' Tricks and attack with your weapon.
Round 1: chef_rannos executes a macro!
Round 1: chef_rannos casts ENTANGLING NOODLES!
Round 2: chef_rannos casts OPEN THE BAG O' TRICKS!
Round 3: steampunk giant takes 63 damage.
bagOTricksCharges => 0
WHAM: Current monster HP is calculated to 140.0
WHAM: Starting evaluation and performing of attack
Auto-funk: merging 'use 1922' and 'use 3114'.
WHAM: Enqueuing a stun to help with the battle
Auto-funk: merging 'use 1922' and 'use 3114'.
WHAM: We are going to 5-shot with gob of wet hair, Miniborg Destroy-O-Bot, Miniborg Destroy-O-Bot, attack with your weapon and attack with your weapon.
Round 3: chef_rannos executes a macro!
Round 3: chef_rannos uses the gob of wet hair and uses the Miniborg Destroy-O-Bot!
Round 4: steampunk giant drops 2 attack power.
Round 4: steampunk giant drops 3 defense.
Round 4: steampunk giant takes 22 damage.
Round 4: steampunk giant drops 3 attack power.
Round 4: steampunk giant drops 4 defense.
Round 4: steampunk giant takes 68 damage.
Round 4: chef_rannos uses the Miniborg Destroy-O-Bot!
Round 5: steampunk giant takes 25 damage.
Round 5: steampunk giant drops 4 attack power.
Round 5: steampunk giant drops 4 defense.
Round 5: chef_rannos attacks!
Round 6: steampunk giant takes 52 damage.
Round 6: chef_rannos wins the fight!
After Battle: Items-Meat sets off a lovely little cluster rocket, and smiles broadly as it explodes.
You gain 14 Mana Points
You gain 3 hit points
You gain 5 Mana Points
After Battle: Items-Meat dances so fast he trips himself and falls to the ground in slow motion. After the long, strange trip, he dusts himself off and winks at you.
You gain 518 Meat
You acquire an item: brown felt tophat
You acquire an item: brass gear
You gain 12 Fortitude
You gain 33 Wizardliness
You gain 10 Sarcasm
Look! You found 1 brass gear (55μ)!
Look! You found 1 brown felt tophat (215μ)!

> inv miniborg

Miniborg Destroy-O-Bot (2)
 
Last edited:
Code:
U https://svn.code.sf.net/p/winterbay-mafia/wham/code/scripts/WHAM.ash
https://svn.code.sf.net/p/winterbay-mafia/wham/code/scripts
https://svn.code.sf.net/p/winterbay-mafia/wham/code
At revision 8
Pushing local updates...
WHAM.ash => /home/andreas/Dropbox/KoLMafia/scripts/WHAM.ash
Done.
Validating repo...
The requested repo failed validation. Complain to the script's author.
Done.

Winterbay, I just made an SVN update command, and got the above. Temporary problem?
 
Code:
U https://svn.code.sf.net/p/winterbay-mafia/wham/code/scripts/WHAM.ash
https://svn.code.sf.net/p/winterbay-mafia/wham/code/scripts
https://svn.code.sf.net/p/winterbay-mafia/wham/code
At revision 8
Pushing local updates...
WHAM.ash => /home/andreas/Dropbox/KoLMafia/scripts/WHAM.ash
Done.
Validating repo...
The requested repo failed validation. Complain to the script's author.
Done.

Winterbay, I just made an SVN update command, and got the above. Temporary problem?

That error came out of the script after WHAM.
 
Getting the following message with WHAM:
The string "skill 2015" is not an integer; returning 2015 (WHAM.ash, line 1275)
It SEEMS to work properly, but...

Edit: This is a bit more worrying though.
The string "attack" is not an integer; returning 0 (WHAM.ash, line 1275)
 
Last edited:
Getting the following message with WHAM:It SEEMS to work properly, but...

Edit: This is a bit more worrying though.

It will work jus tfine, it's an annoyance I'll grant that but since what it does is "mp_cost(to_skill(returned number))" that should work fine. The problem would occur when you get an item instead of a skill or atack or jiggle... I'll fix it :)

Edit: Revision 9
 
Last edited:
If a large number is used, it's the same as WHAM_killit.

With a value of 500 for the in-ronin value I expected WHAM to behave as if WHAM_killit had been set (don't stasis and kill it fast). Is that number too low or is my understanding of WHAM_killit incorrect?

I'm trying the current release of WHAM and I flipped the comments around to try Winterbay's experimental support for Crowther's suggested change. WHAM_roundcost_inrun is set to 15.

I'm noticing a distinct behavior change with Crowther's change in place. Faster kills and more frequent use of spells that are slightly higher in mana cost than usual.

I think it might have been my choice of adventure locations that threw things off yesterday.

Got the following when auto-adventuring in the hidden city:

Code:
[810] Hidden City (Square 11)
Encounter: ancient protector spirit
Strategy: G:\software\Kol\ccs\default.ccs [default]
Round 0: Arbos wins initiative!
WHAM: Running SmartStasis
No match attempted or previous match failed (WHAM.ash, line 1277)
You're on your own, partner.
Click here to continue in the relay browser.

It looks like there's an error in the new check inserted in the latest release. The error only occurred when fighting physically resistant monsters (Boo Peak ghosts, protector spirits, etc..)
 
Last edited:
Back
Top