Updates mixed with assorted responses.
I
added Theraze's changes to hitchance for those additional skills, with a few tiny tweaks. Thanks! While I was at it, I made
fumbles only apply to actual attacks with your weapon, and slightly altered the attack line to
account for the attack chance being a percent of non-criticals, as xKiv mentioned. Moved the
booty crab to the 25% resistance section. Didn't add elemental resistance for top-tier bees yet since the Wiki only mentions elemental "spell resistance", not vanilla "resistance."
@Theraze: BatBrain does not consider bonus turtlegear damage for the various butts. I remember thinking about that for 0.11 seconds before immediately getting a headache and deciding to postpone that for another day -- but that was back before the data files had all been consolidated into batfactors. If this can't be added programmatically, it's another good thing to add to batfactors.
You're mostly right about checking stats against ML adjustment to determine unknown stats. It's not needed anymore -- except for basement monsters, which still have their stats equal to ML adjustment. However, since presently consult scripts don't even work in the basement, I
removed those checks.
Are the top-tier bees the only known monsters with delevel resistance? This isn't difficult to add.
@Winterbay: Re: Harpoon! Thanks for fleshing out that placeholder formula. I'm reluctant to add so many fvars just for a single skill, so instead
I hardcoded Harpoon a la Clobber. Consider that skills are completely rebuilt between each server hit -- and the entire map of fvars is submitted to
eval() for every formula evaluated, even if the formula is as simple as "10".
Re: Spiciness. Thanks for bringing this up again, it reminded me to look into this. Your solution isn't quite correct, since Spiciness doesn't actually add a flat 10 damage at lower levels. So instead I
accounted for Spiciness by moving the assignment of that particular fvar into the skills-building loop; it should do nicely, without requiring a separate fvar:
PHP:
fvars["spelldmg"] = numeric_modifier("Spell Damage");
if (have_skill($skill[intrinsic spiciness]) && to_class(to_skill(sk).class) != $class[sauceror]) fvars["spelldmg"] -= min(my_level(),10);
Aside: Evidently the 'class' field for skills returns a string. Not sure if this is an oversight or not, so I mentioned it in my latest bug report.
@garjon: Quite the opposite, actually. The "break" command means that the following code in the switch statement will not be executed.
@xKiv: Thanks, but that's a lots-of-server-hits method. Right now this works:
PHP:
boolean is_spell(skill s) {
if ($classes[pastamancer,sauceror] contains to_class(s.class)) return true;
if (s.to_int() > 27 && s.to_int() < 44) return true; // hobopolis spells
return ($skills[lasagna bandages,volcanometeor showeruption] contains s);
}
But I'm considering just adding this as a keyword in batfactors instead. I guess I'll start figuring out which monsters have spell resistance/immunity. So far, all I've done with this is
add the Beer Golem's spell blocking, but that doesn't work yet since mafia can't recognize that monster. Others to follow.
I also
accounted for the Clockwork Apparatus transforming fumbles into various beneficial effects.
I'll be starting my first Beecore run tomorrow, so more likely than not I'll finally get more aggressive about support for bees.
Enjoy!