Winterbay's Helpful Automatic Monsterbasher (WHAM)

Crowther

Active member
That's interesting. I got my multi a burrowgrub thingie just to have it try to get the loops but it couldn't. It used the skill three times and then moved on. I would like to see some level 8 or 9 output of that if at all possible.
Yeah, sorry about posting without a log. I'll try to get one. It's not reliable, but I get a loop about half the time at the start of the day (aftercore only). I'm done for today, but I'll bump up the verbosity now so maybe I'll catch it tomorrow.
 

Donavin69

Member
The Bear Hug will zombify, up to 10 times a day, so I would usually try to use it on the 'group mobs' only...(a group size 20 gets you 20 zombies, where a single mob gets you 1), it also works well to kill something that is way over your level (like hugging a lvl 1000 butt at turn 1, for an instant lvl 4)

line 959 is a howl of the alpha line...not sure that is where you meant for me to but the edit (I've changed to Zarqon's current version, not sure if that's where it belongs)
 

Winterbay

Active member
Right, I think I did upload a fixed version in the first post that should hopefully resolve that issue. What monsters are group size 20? I can restrict the usage to only group monsters, there is after all a check for that in BatBrain already, any specific cutoff you think would be good?

Also, I found out that the reason WHAM/SS wasn't stasising for the Gremlin tools was the modified sort-algorithm that was intended to let the script not get stuck in infinite loops of healing, but seems to have the byproduct of stopping correct stasising during the gremlin quest as well. I've thus changed back both the BatBrain posted and WHAM to use the original sort-call to fix that issue.
 

Winterbay

Active member
I currently have my local copy coded to only use bear hug if howmanymonsters > 1, is there a better cut-off than just slightly above 1 that people want to use instead?
 

Donavin69

Member
I've found that in a 'good run' I don't hit enough 'groups' to use all of my hugs in a day....so >1 should be good

Like I said earlier, it is also very useful for fighting mobs you shouldn't be fighting yet...like your daily faxes...
 

Rinn

Developer
I'm getting this in a fistcore run, not sure if it's a WHAM, BatBrain, or zlib issue:

Code:
[COLOR=red]Expression syntax errors for 'modifier_eval()':
Can't understand fistskills+5*effect(salamanderenity)+min(1,effect(earthen))*10+0 (zlib.ash, line 162)
[/COLOR]
 

Crowther

Active member
I currently have my local copy coded to only use bear hug if howmanymonsters > 1, is there a better cut-off than just slightly above 1 that people want to use instead?
I was hugging at 10 and up while doing my softcore zombie runs. If I only saved them for 20+ I had lots of hugs left over. I don't care what you use, since I don't expect to be doing more of those, just adding info.
 

Crowther

Active member
Yeah, sorry about posting without a log. I'll try to get one. It's not reliable, but I get a loop about half the time at the start of the day (aftercore only). I'm done for today, but I'll bump up the verbosity now so maybe I'll catch it tomorrow.
No luck. I'd still suggest people watch the first few combats each day. One day I looped for hours. I don't know if it was hitting the server. I'll post if I see it again.
 

Winterbay

Active member
I'm getting this in a fistcore run, not sure if it's a WHAM, BatBrain, or zlib issue:

Code:
[COLOR=red]Expression syntax errors for 'modifier_eval()':
Can't understand fistskills+5*effect(salamanderenity)+min(1,effect(earthen))*10+0 (zlib.ash, line 162)
[/COLOR]

Seeing as when I put that line into modifier_eval (changing fistskills to 1 or 0) it works just fine, but I get the same message when fistskills is left in there, somehow the fistskills didn't get replaced by the actual value of said property. Did you at the time have 0 fistskills?
 

Rinn

Developer
I had a bunch, it was at the end of a run. I've broken the prism though so I can't try it again at the moment.
 

Crowther

Active member
Darn it!!!! First combat today, but verbosity was only at 5.
Code:
[656596] Giant's Castle
Encounter: Raver Giant
Strategy: /root/.kolmafia/ccs/Destroy.ccs [default]
Round 0: WhimOrClutters wins initiative!
Checking for updates (running ZLib ver. r37)...
Running ZLib version: r37 (current)
You have the latest batfactors.txt. Will not check again today.
You have plastic pumpkin bucket equipped: (11.81) damage,
Checking for updates (running BatBrain ver. 1.28)...
Running BatBrain version: 1.28 (current)
Checking for updates (running SmartStasis ver. 3.15)...
Running SmartStasis version: 3.15 (current)
Checking for updates (running WHAM ver. 4.1.2)...
Running WHAM version: 4.1.2 (current)
You have the latest pluralMonsters.txt. Will not check again today.
ATT: 167 (6% × 8.51, death in 22370)
DEF: 158 (97.73% × 15,416.42 (25), win in 1)
HP: 188, Value: 1,680.65 μ
WHAM: Monster HP is 188.0.
WHAM: Running SmartStasis
Profit per round: ActionProfitDamageOtherbase; plastic pumpkin bucket; Hobo Monkey (75μ)75μ0 (11.81) Actual: 11.81 (-6.35 μ/dmg)
Round 1: WhimOrClutters executes a macro!
Round 1: WhimOrClutters tries to steal an item!
Round 2: WhimOrClutters executes a macro!
Round 2: WhimOrClutters casts FIRE ORANGE BOTTLE-ROCKET!
Round 3: WhimOrClutters executes a macro!
Round 3: WhimOrClutters casts CONSUME BURROWGRUB!
You gain 30 hit points
You gain 15 Mojo Points
Round 4: WhimOrClutters casts CONSUME BURROWGRUB!
You gain 30 hit points
You gain 15 Mojo Points
Round 5: WhimOrClutters executes a macro!
KoLmafia thinks it is round 6 but KoL thinks it is round 5
Round 6: WhimOrClutters executes a macro!
KoLmafia thinks it is round 7 but KoL thinks it is round 5
Round 7: WhimOrClutters executes a macro!
KoLmafia thinks it is round 8 but KoL thinks it is round 5
Round 8: WhimOrClutters executes a macro!
KoLmafia thinks it is round 9 but KoL thinks it is round 5
Round 9: WhimOrClutters executes a macro!
KoLmafia thinks it is round 10 but KoL thinks it is round 5
KoLmafia declares world peace.
You're on your own, partner.
Click here to continue in the relay browser.
I hit escape or it would have gone forever.

EDIT: Just realized that the loop is during stasis.

EDIT: Just looped 8555 times on Crowther after using a BURROWGRUB. I'd already turned verbosity down and stopped watching, because that was my 37 turn of the day.
 
Last edited:

Winterbay

Active member
Hmmm. I think I may have found the issue, possibly, probably. Try 4.2 which also takes the script up to date with the changes done by zarqon in the latest SmartStasis.
 

Crowther

Active member
*sigh*
Try this one?
Thanks, Winterbay. I couldn't get a bug log myself. Turns out since I'm using a hobo monkey, stasis can end quick enough for that bug to be rarer. I should have thought to try a starfish to force it once I knew it was in stasis. Fingers crossed that's the last infinite looper.
 

Rinn

Developer
I found the fistcore issue:

Code:
   if (factors[te,it].dmg.contains_text("fistskills"))
      factors[te,it].dmg = factors[te,it].dmg.replace_string("fistskills",fvars["fistskills"]);

Nothing was replacing the batfactors fistskills placeholder with fvars["fistskills"]. I added the above to the loop in BatBrain that removes placeholders to fix it.
 

Winterbay

Active member
You don't
Code:
if (to_int(get_property("fistSkillsKnown")) > 0) fvars["fistskills"] = to_int(get_property("fistSkillsKnown"));
at the top? I think, if I read the code correct, that eval() gets called with fvars as a list of potential variables which then gets replaced in much the same way you have up there in said eval-function.
 

Catch-22

Active member
I think BatBrain already parses fight.php for available skills each time it is loaded, so what Catch-22 is suggesting probably already exists, in a way.

When checking suitability of skill consideration, it actually parses fight.php for unavailable skills and it doesn't break if it finds that the skill is unavailable... It doesn't work at all.

I changed:
Code:
if (skillsbit == "" ? !have_skill(to_skill(sk)) : !contains_text(skillsbit,"value=\""+sk+"\"")) continue;
to
Code:
if (skillsbit == "" ? !have_skill(to_skill(sk)) : !contains_text(skillsbit,"value=\""+sk+"\"")) break;
and now WHAM runs a heck of a lot better for me.

Now it's properly excluding skills that aren't available, which probably solves a bunch of problems that Winterbay has had to write around for a long time now.

Edit: Unsure if this is all that needs to be changed, I will update the post accordingly if I find other weirdness, but I dislike reading through BatBrain.ash.
 
Last edited:
Top