private static void DamageBuffTrigger(TriggerBuff buff, BuffTriggerType trigger, object token)
 {
     Fights.Damage damage = new Fights.Damage(buff.Dice, DirectDamage.GetEffectSchool(buff.Dice.EffectId), buff.Caster, buff.Spell)
     {
         Buff = buff
     };
     buff.Target.InflictDamage(damage);
 }
 public override bool Apply()
 {
     if (this.Spell.SpellType.Id == (int)SpellTypesEnum.Sadida)
     {
         var isTargetEnnemy = this.Fight.GetOneFighter(this.TargetedCell).Team != this.Caster.Team;
         if (isTargetEnnemy)
         {
             var affectedActors = this.Fight.GetAllFighters((x) => x.Team != this.Caster.Team && x.HasState(SpellStatesEnum.Infected));
             this.SetAffectedActors(affectedActors);
         }
     }
     foreach (FightActor current in base.GetAffectedActors())
     {
         if (this.Effect.Duration > 0)
         {
             base.AddTriggerBuff(current, true, this.BuffTriggerType, new TriggerBuffApplyHandler(DirectDamage.DamageBuffTrigger));
         }
         else
         {
             SpellReflectionBuff bestReflectionBuff = current.GetBestReflectionBuff();
             if (bestReflectionBuff != null && bestReflectionBuff.ReflectedLevel >= (int)base.Spell.CurrentLevel && base.Spell.Template.Id != 0)
             {
                 this.NotifySpellReflected(current);
                 base.Caster.InflictDamage(new Fights.Damage(base.Dice, DirectDamage.GetEffectSchool(base.Dice.EffectId), current, base.Spell)
                 {
                     ReflectedDamages = true,
                     MarkTrigger      = base.MarkTrigger
                 });
                 current.RemoveAndDispellBuff(bestReflectionBuff);
             }
             else
             {
                 current.InflictDamage(new Fights.Damage(base.Dice, DirectDamage.GetEffectSchool(base.Dice.EffectId), base.Caster, base.Spell)
                 {
                     MarkTrigger = base.MarkTrigger
                 });
             }
         }
     }
     return(true);
 }