Let's suppose my Hipster deals 300 damage at a 5% rate. That means that BatBrain presently would assume that any monster with 15 or less HP will die in a single round, even if my action does no damage. That is Bad Predicting.
BTW: does BatBrain consider that hipster will never attack in the first round? (it has that +stats thing going on as its first action)
ETA: another thing to consider is that you should not just cap the average damage. Consider:
action A does 10-40 damage (uncapped average = 25).
Monster has
a) 30 hp left - above average so you don't cap and say that it takes 30/25=1.2 rounds to kill
b) 20 hp left - you cap the average to 20 and say that it takes 20/20=1 rounds to kill
If you instead simply cap the spread, you get wrong results:
a) to 10-30, average 20, 30/20=1.5 rounds to kill
b) to 10-20, average 15, 20/15=1.3333 rounds to kill
Slightly closer to exact:
a) 10-40 spread with ceil of 30: (31 possible different rolls, presumable with the same probability of happening) 21/31 of the time (rolls 10-30), damage is equal to roll; remaining 10/31 of the time (rolls 31-40), damage is equal to cap;
average = 21/31*(average of rolls from 10-30) + 10/31*(30) = (20*21+10*30)/31 = 720/31 =~ 23.2258, making it 1.2917 rounds to kill
b) 10-40 spread with ceil of 20 ... average = 11/31*(average of rolls from 10-20) + 20/31*20 = (15*11 + 20*20)/31 = 455/31 =~ 14.6774 and 1.3626 rounds to kill
The above is still wrong, of course, because it doesn't adjust the ceil after the first round if that round doesn't kill the monster. That doesn't matter much for things that fire 100% of the time, but the interaction might be interesting.
But then we are getting into event trees that have "opponent has at least X hp and at most Y hp" and split events when the value of (X > 0) or the value of (Y > 0) changes (opponent *might* be dead, opponent *definitely is* dead).