BatBrain -- a central nervous system for consult scripts

Any chance this will ever be updated to not require the Monster Manuel to fight procedural skeletons? WHAM kept calculating their stat values incorrectly and was giving me quite a bit a grief until I figured out that BatBrain couldn't send it the correct values without the MM.
 
Any chance this will ever be updated to not require the Monster Manuel to fight procedural skeletons? WHAM kept calculating their stat values incorrectly and was giving me quite a bit a grief until I figured out that BatBrain couldn't send it the correct values without the MM.

Probably not as there is no way of knowing the stats without it as the formula for how they vary with floor level and attributes isn't, as far as I know, spaded in any way.
 
Probably not as there is no way of knowing the stats without it as the formula for how they vary with floor level and attributes isn't, as far as I know, spaded in any way.

The wiki has the following formula, but I'm not sure how accurate it is.

Hit Points 1.4 * (145 + 5*floor)
Attack 145 + 5*floor
Defense 145 + 5*floor

At the very least, it seems like it might be worth throwing these values in in absence of a Monster Manuel, rather than just spitting out the following values for each floor:

ATT: 170
DEF: 153
HP: 171

Which leads to a lot of painful combats when those values are not anywhere close to correct.
 
There's no way to tell what floor you are on without seeing stats from MM, so those formulas don't actually help.

I guess Mafia could track fights won against skeletons and you could use that as the floor variable but I'm not sure how reliable that would be. Also, I've no idea how much work it would be to add that.
 
And it would be entirely inaccurate if you ever did a fight outside that specific instance of mafia, whether on Vanilla KoL or on a non-synced mafia installation.
 
I don't feel much incentive to add the Catchphrase and Insult to batfactors, but can we get an audience or love/hate fvar based on my_audience()? Adding it early might prevent a few people from getting errors when such formulas are added.

Of all the combat skills, Pop Wheelie looks most promising for WHAM and isn't based on love or hate.
 
Klungar, you can specify a value for BatBrain to use for unknown monster stats with the unknown_ml ZLib setting. Not super helpful given that the numbers change every floor, but if you enter in numbers a bit tougher than where you are, it would work for a while. It still wouldn't work for the stat-adjustment attributes though.

Also ugh, bunches more new skills. I mean yay new challenge path.

EDIT: What's going on with Saucestorm? For me, BatBrain now guesses that it will deal 100 each hot/cold, when it's really dealing 50 each for 100 total. Should I upload a batfactors that halves that value?
 
Last edited:
I think that's my fault. You have to list the total damage in batfactors and so I started doubling every part of the formula, which was ugly, so I just added a "2*" to the start to account for both elements. When I did that, I probably failed to turn the cap back to 50. Anyway, I've updated batfactors, with the correct cap.
 
I added Pop Wheelie to batfactors, because I was having trouble without it. The formula I used is .3*buffedmox damage and reducing monster attack and defense by 15%. It seems to be working pretty well. I see no way to account for the motorcycle upgrade Spiky Tires, but most people aren't going to take that anyway.
 
Doesn't batfactors have some way to check properties? I'd thought that you could do something with pref("peteMotorbikeTires") but it appears to be rejecting currently - like the pref lookup got removed from zlib but the definition stub remained. *shrugs*
 
The pref() text function for modifier_eval() is a mafia thing, not something added by ZLib. And it must be used with caution, because it can actually corrupt your preferences file if you use it on integers... or floats. I forget which.

EDIT: Yep, it can only be used with preferences containing a float. DO NOT USE with integers.
 
Last edited:
I did not invent the claim, nor do I have proof of its truth; it's from Jason's explanatory notes when he first implemented modifier_eval(). My search fu is so far not finding that post. Continuing the search...

EDIT: Found it.
 
Last edited:
r7981 | veracity0 | 2010-01-16 15:53:35 -0500 (Sat, 16 Jan 2010) | 3 lines

When evaluating modifier expressions, get preferences as string and parse as
float manually, to avoid forcing preference to be rewritten as a float
I forgot about that because I fixed it over 4 years ago.

Not that jason's "parsing 10.0 as an integer will throw away non-numeric characters and result in 100" reflects current code, either: when StringUtilities.parseInt detects that the string has non-numeric characters, if the string looks like a float, it will parse it as a float and give you the integer part, scaled by 1000 or 1000000, if it ends with a "k" or "m".
 
r32 brings us proper support for the revamped Entangling Noodles. BatBrain now understands:

1) Noodles multi-round stuns as before, but only for Pastamancers.
2) Noodles delevels and staggers for non-Pastamancers.
3) Noodles can be used more than once against the Spaghetti Demon.

EDIT: Also, just went through and added recent familiars and skills (including AoSP skills) to batfactors, although I put very pessimistic placeholder numbers in for all of the skills which lacked formulas on the Wiki.
 
Last edited:
Back
Top