Or else I just didn't realize the Niefels had a fire vulnerability.
That makes it even worse, and probably explains why the in-game test went so much more harshly for them than my simulation.
My understanding is that vulnerability comes before protection, so yes, it should be against(9,9+cold/2). Thanks for the catch.
-Max
Edit: No, actually I think that's still wrong because the multiplier applies to the DRN, too. (6+DRN)*1.50 - (9+DRN). Ouch for the giants. against() won't do this without a new parameter.