public static void DispatchHealing(this GameObject critter, DispIoDamage dispIo)
    {
        var dispatcher = critter.GetDispatcher();

        dispatcher?.Process(DispatcherType.ReceiveHealing, D20DispatcherKey.NONE, dispIo);
    }
    public static void DispatchDamage(this GameObject critter, DispatcherType type, DispIoDamage dispIo)
    {
        var dispatcher = critter.GetDispatcher();

        dispatcher?.Process(type, D20DispatcherKey.NONE, dispIo);
    }
 public static void DispatchDealingDamage2(this GameObject attacker, DispIoDamage dispIo)
 {
     attacker.DispatchDamage(DispatcherType.DealingDamage2, dispIo);
 }
 public static void DispatchTakingDamageFinal(this GameObject victim, DispIoDamage dispIo)
 {
     EnsureMinimumDamage1(dispIo.damage);
     victim.DispatchDamage(DispatcherType.TakingDamage2, dispIo);
 }
 public static void DispatchTakingDamage(this GameObject victim, DispIoDamage dispIo)
 {
     victim.DispatchDamage(DispatcherType.TakingDamage, dispIo);
 }