1.26 Update!
Hi everyone! I feel like I'm finally catching up with things in the KoL world. All the various setbacks (and by setbacks of course I mean awesome things that I chose to do instead, such as joining the pit orchestra for a musical, taking on some more teaching work, joining a Pathfinder gaming group, and reading a pile of books) meant that I'm only now starting to get to the end of my first Zombiecore run (about a month long perhaps? far too many missed days), and making BatBrain work correctly with it.
The major updates for Zombiecore:
- BatBrain completely ignores MP for Zombie Slayers. It doesn't even evaluate the MP specified in batfactors. The only times when it considers MP are skill costs (those still cost MP) and infection (the only way to gain MP in combat). For now, BatBrain doesn't make the >50% HP calculations to determine infection success -- it simply assumes that casting Infectious Bite (specified as once-only since even though it's still available, I saw no reason anyone would ever want to cast it twice) will grant you +1 MP. And, if Infectious Bite has already happened, it also treats Plague Claws as granting +1 MP as well, which is of course not correct but may help your scripts to decide to claw if growing your horde in this way is profitable. It does filter monsters appropriately by phylum, however, so objects and plants and such will not be seen as granting MP. It's also possible to insta-zombify qualifying monsters using Bear Hug, so I added that as well. This is overall a very important change, which if accompanied by UR wising up about meatpermp, will lead to BatBrain behaving more responsibly with your horde.
- Infectious Bite's ongoing damage is now accounted for. Augmenting this damage by Plague Claws is not yet accounted for -- the mechanic for allowing this doesn't currently exist, given that said damage can be reduced back to its starting level.
- Thanks to Winterbay, BatBrain now includes support for Ravenous Pounce, Howl of the Alpha, Bear Hug, and Grizzly Scene. The only skill I did not steal support for was Kodiak Moment, since I haven't looked into that skill yet and his implementation was rather complex. I was away from KoL long enough that I missed that IotM entirely, so farming towards buying that, and then will test and add. I feel there might be a simpler way to implement that one, or it may well be that I end up completely stealing his work there as well.
Also appearing in this update:
- Misses are now glancing blows. Woohoo!
- When I was adding support for that, I noticed that somehow the idiot who wrote this script decided he would not factor the onhit event by hitchance, but he would factor fumbles and criticals by hitchance. That is the exact opposite of what should happen. Fixed that.
- QWOPped Up grants clumsiness (thanks Winterbay!).
- Skeletal scabbard doubles damage from swords.
- Move declarations outside foreach loop for greater efficiency (thanks Catch-22!).
The only fairly serious problem I'm having now is with the Lost Glasses. I haven't yet hit on a good way to account for them -- but not accounting for them results in extremely inefficient results when wearing them as a muscle class. Part of the problem is Manuel -- when he's reporting stats, he tells you the Glasses-adjusted stat, which mafia then also faithfully reports -- but before learning them mafia reports the unadjusted stat. Since BatBrain could be called at any round number, even after other deleveling, how do I know whether mafia's stat is accounting for the Glasses or not? I can't just check monster_defense() <> monster_defense(m). Sigh. 어떡해? I dislike when KoL adds items that are complicated to account for in BatBrain -- although I must admit these items are also often some of the coolest!
Enjoy the update!
And now, some responses to previous posts:
So far, no. I look forward to the day when I am asked to provide a voice for a bat, although perhaps I will be too excited to do it properly.
Was it in English or in Korean?
English. If they wanted Korean, there are plenty of native speakers around.
Any chance you could save the result of this in a new map (eg. batfactors_sane.txt) and only run through it again when a change to batfactors is detected? It would save a lot of execution time in the long run.
Sadly no, since you can certainly change equipment (and thus change your elemental damage tuning) between batfactors updates. Monster elements can even change mid-combat (a la shards of double-ice). I've had the same thought -- that section always strikes me as repeating a lot of tedious work which ought to be avoidable somehow. I could see a case for a range-less batfactors, especially as no other scripts seem to be sharing batfactors and availing themselves of these ranges, which was the original reason for implementing them.
I did make the other changes you suggested. I think I somehow automatically rejected the idea of placing short-term variables at top level, and therefore decided it was much better to declare them inside some brackets where they would be indented and not-top-level, never mind the fact that the brackets belonged to a loop! Thanks for bringing that silliness to my attention.
Anyway, glad to be back! I've played my turns for today, now going to catch up (and vote) on my friend's
excellent Let's Play of a highly modded Baldur's Gate.