Well found an interesting solution:
Code: Select all
if pTarget.stagger>pTarget.hp*.2 and pTarget.ar>pTarget.getValue("Defense")/5:
pTarget.stagger=0;pTarget.ar-=1
self.notes.append(("Because of all the hits taken, %s has lost 1 Defense!" % pTarget.name))
in practice each character has a stagger counter, every time it gets damaged for 20% of its CURRENT HP, loses 1 defense (up to 1/5 of initial defense).
This way as you damage someone, it loses defense, and as it loses defense, gets damaged more

I tried a few fights and seems fun, since this also applies to your party, so there's some more strategy involved. Also now I think the defense/speed tradeoff is good, since before if you had a super armored character was really hard to bring him/her down. Now it's still hard but possible
Also has some interesting applications like having enemies with a lot of HP but less defense, or few HP but very high defense, and the play is more different now.