I commited the best patch of my damage changes.
moved preventDamage to GameEntity and refactor it a bit.
no need to have the same code in Card and Player.
i added TriggerDamagePrevented, with that
Selfless Squire can be coded.
currently i didn't updated the cards yet on that place like i need to for
Ajani Steadfast, but the tests does all pass and the cards should work like before.
PS: i did changed the order in preventDamage how the different parts are applied. i thought it now makes more sense (ShieldEffect after Static and ReplacementEffects)