Damage over time
CombatFire/spirit add remaining damage and redistribute over floor(ttl/interval) ticks; a new effect below .2 damage/tick is rejected. Wet accelerates burning effect age by an extra 5*dt. Poison replaces only when incoming>=remaining and sets ttl=base+pow(damage*factor,power). Frost duration=max remaining versus clamp01(damage/maxHP)*target freezeTime; slow uses age² and resolved resistance-specific multipliers.

