Winterbay's Helpful Automatic Monsterbasher (WHAM)

Winterbay

Active member
Well, that number comes from BatBrain so something confused BatBrain to return that number instead of the real one somewhere after the initial load of WHAM and BatBrain parsing monster stats.
 

Theraze

Active member
Usually when I've experienced that it was because two fights happened with the same turn-count. Usually through optimal OCRS. But... yeah, not a WHAM problem, it's something about BatBrain and its round parsing. Unless WHAM is doing its own version of the round parsing somehow. :)
 

Cool12309

Member
Something has been spamming "- is out of range, returning 0" after I complete a combat, and I suspect it's WHAM though it could be BatBrain or some such. I can't seem to reproduce it 100%, but a good way I've found is to use an autoattack that kills the monster. Verbosity on 11, though this was showing at 3.

Code:
[787] Wartime Hippy Camp (Frat Disguise)
Encounter: War Hippy (space) cadet
Round 0: Cool12309 loses initiative!
Round 0: Cool12309 casts SUMMON LOVE MOSQUITO!
Round 1: You lose 61 hit points
Round 1: Cool12309 casts SUMMON LOVE GNATS!
Round 2: War Hippy (space) cadet takes 19 damage.
Round 2: You gain 19 hit points
Round 2: Your opponent accidentally gets behind Stulliam, who sprays him for for 1 damage.
Round 2: War Hippy (space) cadet takes 1 damage.
Round 2: Cool12309 casts SUMMON LOVE STINKBUG!
Round 3: Your opponent accidentally gets behind Stulliam, who sprays him for for 1 damage.
Round 3: War Hippy (space) cadet takes 1 damage.
Round 3: Cool12309 attacks!
Round 4: Your opponent accidentally gets behind Stulliam, who sprays him for for 1 damage.
Round 4: War Hippy (space) cadet takes 1 damage.
After Battle: unspecified macro action?
After Battle: War Hippy (space) cadet takes 183 damage.
After Battle: War Hippy (space) cadet takes 3 damage.
After Battle: Cool12309 wins the fight!
After Battle: Stulliam brushes against your ankles, purring softly.
After Battle: You gain 25 hit points
After Battle: You gain 25 Strengthliness
After Battle: You gain 7 Wizardliness
After Battle: You gain 17 Sarcasm
1 HP costs 5.505μ. ( 320 / 419 )
1 MP costs 8μ. ( 105 / 105 )
Setting monster to War Hippy (space) cadet...
round purple sunglasses (5.0 @ +24): 750μ * 6.2% = 46.5
reinforced beaded headband (5.0 @ +24): 338μ * 6.2% = 20.96
bullet-proof corduroys (5.0 @ +24): 320μ * 6.2% = 19.84
Value of stat gain: 473.7μ
Base round: damage, player damage, 0 meat
ATT: 175 (94% × (49.27), death in 7)
DEF: 158 (95.45% × 235.19 (9), win in 1)
HP: 4, Value: 560.99 μ, RES: 0.04 (-1) (-1) (1), Happenings: 0, ID: 481
Happened turn 267900 round 0: skill 7245
Happened turn 267900 round 1: skill 7247
Happened turn 267900 round 2: skill 7246
Happened turn 267900 round 3: attack
Parsed round number: 3 (real: 4)
1 HP costs 5.86μ. ( 326 / 419 )
1 MP costs 8μ. ( 105 / 105 )
Adjusting turncount by -1.
Setting monster to War Hippy (space) cadet...
round purple sunglasses (5.0 @ +24): 750μ * 6.2% = 46.5
reinforced beaded headband (5.0 @ +24): 338μ * 6.2% = 20.96
bullet-proof corduroys (5.0 @ +24): 320μ * 6.2% = 19.84
Value of stat gain: 473.7μ
Base round: damage, player damage, 0 meat
ATT: 175 (94% × (49.27), death in 8)
DEF: 158 (95.45% × 235.19 (9), win in 1)
HP: 4, Value: 560.99 μ, RES: 0.04 (-1) (-1) (1), Happenings: 4, ID: 481
Parsed round number: 3 (real: 4)
7- is out of range, returning 0
7- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
7- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
7- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
7- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
-- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
7- is out of range, returning 0
--- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
- is out of range, returning 0
 

fronobulax

Developer
Staff member
short calculator.

Something in the WHAM/Smartstasis/BatBrain universe thinks using a short calculator in combat is A Good Idea. I disagree and cite numerous combats that end in Beaten Up or max round triggered losses as my evidence. While I can certainly assist in helping someone who is committed to doing so track down the logic or data error that is probably behind this choice I am also willing to just tell WHAM to never, ever use it. I seem to recall that there is some kind of prohibited items list that I could add it to but I am not finding it. A pointer please? Thank you.
 

Theraze

Active member
Code:
item	6714	short calculator	monsterhp*0.3	0	!! chance of not working?
So WHAM gets told by BatBrain that the short calculator is always just 30% damage to the monsters. It's a GREAT choice. Except it never is. Sometimes I just delete short calculator from my batfactors, but a better solution would be to add it to the skip code in SVN, like this:
Code:
			case "use 3391":	//Frosty's Iceball, should not be used but is anyway so disallow it
			case "use 6714":	//Short calculator is just evil so...
				return false;
 

Magus_Prime

Well-known member
I seem to recall that there is some kind of prohibited items list that I could add it to but I am not finding it. A pointer please?

Installing WHAM also installs a relay browser script "WHAM dontuse". Run it from the scripts drop-down in the relay browser and add item number 6714 to the list.
 

Crowther

Active member
I've never seen the short calculator do anything (I tried it a lot one day). I see on the wiki there is a message for it. The OCD competitionist in me would really like to know what it actually does and see that entered into BatBrain, because the line that currently exists in batfactors is clearly wrong.
 

zarqon

Well-known member
There are several options when an action is being performed when you don't want it to be. Neither involve editing the script.

1. If the information is incorrect in batfactors, edit batfactors.txt to contain correct information (or at least less harmful information) and upload the fixed file. Anyone can do this, and it benefits everyone.

2. If the information is correct but you don't like the action being used anyway, add the action to BatBrain's blacklist. BatMan RE has a built in blacklist editor, and I believe WHAM also offers a relay script which lets you add actions to the blacklist. Optionally, you can directly edit your blacklist file.
 

Bale

Minion
1. If the information is incorrect in batfactors, edit batfactors.txt to contain correct information (or at least less harmful information) and upload the fixed file. Anyone can do this, and it benefits everyone.

In this instance I believe the correct option would be to edit batfactors? What is the chance of the action taking place? Multiply damage by that percentage. Does anyone know? Does this need spading?
 

Bale

Minion
B7VsR6s.jpg


Have some bats in little sleeping bags. That makes everything better.
 

Crowther

Active member
Awwww. That's too cute. Some spading is certainly needed, as is updating batfactors. Hopefully I can get around to it, but I'm going slow today. I fear script changes might be needed, but without knowing how the item really works, I won't say more.
 

Hellno

Member
Awesome script, wish I found out about this sooner. I ran into one issue my first time trying it-

Code:
[612] Uncle Gator's Country Fun-Time Liquid Waste Sluice
Encounter: Gurgle the Turgle
Round 0: hellno wins initiative!
Round 1: You lose 84 hit points
[COLOR="#EE82EE"]WHAM: Running SmartStasis
WHAM: Starting evaluation and performing of attack
WHAM: We are going to 1-shot with Stuffed Mortar Shell.[/COLOR]
Round 1: hellno executes a macro!
Round 1: hellno casts STUFFED MORTAR SHELL!
Round 2: Mahulda Shoemaker spits a well-done hamburger patty at your opponent, charring it for 5 damage. You ponder the mystery of why anyone would eat well-done meat.
Round 2: Gurgle the Turgle takes 5 damage.
Round 2: You gain 5 Mojo Points
Round 2: Gurgle the Turgle drops 4 attack power.
Round 2: Gurgle the Turgle drops 3 defense.
Round 2: Gurgle the Turgle takes 4 damage.
Round 2: Gurgle the Turgle takes 1 damage.
Round 2: Gurgle the Turgle takes 5 damage.
Round 2: You lose 12 hit points
[COLOR="#EE82EE"]WHAM: Starting evaluation and performing of attack
WHAM: We are going to 1-shot with Saucegeyser.[/COLOR]
Round 2: hellno executes a macro!
Round 2: hellno casts SAUCEGEYSER!
Round 3: Gurgle the Turgle takes 506 damage.
Round 3: Gurgle the Turgle takes 532 damage.
Round 3: Gurgle the Turgle takes 3 damage.
Round 3: hellno wins the fight!
After Battle: You lose 37 hit points
After Battle: A love cockroach trundles out from under a nearby pile of garbage and gives you a wadded-up bill.
You acquire an item: FunFunds™
After Battle: You gain 10 hit points
After Battle: Mahulda Shoemaker bends her lid in an approximation of a smile, with glowing coals for teeth. (+39 Stats)
After Battle: You gain 84 Muscleboundness
After Battle: You gain 88 Magicalness
You gain a Mysticality point!
After Battle: You gain 167 Roguishness

It decides to one shot with Mortar, but then it casts Saucegeyser the next turn anyway (which was overkill as the monster had about 420 health) and wastes 24 mana.
 

Theraze

Active member
That's actually a BatBrain issue, I believe... BB doesn't know that some skills take multiple turns to take effect, so it uses SMS to OHKO, and then when that 'fails' it runs SG.
 

Crowther

Active member
Okay, I'm still gushing over that bat picture. I never got around to spading short calculators. It's hard to be motivated over an item that can only help you win against one easy to beat monster (for me). I've deleted the totally wrong line from batfactors. There was no reason to keep that in there and it was forcing everyone to black list the item, which means when it is fixed, no one will automatically use it.
 

Crowther

Active member
Since you liked that so much, here's another bat sleeping bag:
And you made me Google for more images. There's even a live bat cam out there!

I've done a bunch of spading and the short calculator is pretty fun. I'll report back in a few hours. Sadly, it most certainly will require changes to batbrain.ash to make it work.
 

Crowther

Active member
So here's the run down on the short calculator. It only works on pygmies. I tried it on a spirit just in case, but no.

The damage is not random at all! It is based off the pygmy's current hp. If all digits are 5 or less, damage will be done. The damage is the hundreds digit times 64 plus the tens digit times 4.

Since there's no way to put that into batfactors, right? Maybe it's possible, but it sounds ugly.

Here's my nearly working patch: View attachment short.patch

What's wrong is that my code computes 84 damage (151 hp) and WHAM reports this:
Code:
WHAM: short calculator: 77.28 potential damage (raw damage: 77.28) and a hitchance of 100.00%.

So I'm clearly not using fields.dmg right as some of the damage is being removed.
 
Top