public override bool Apply()
 {
     foreach (FightActor current in base.GetAffectedActors())
     {
         if (this.Effect.Duration > 0)
         {
             base.AddTriggerBuff(current, true, BuffTriggerType.TURN_BEGIN, new TriggerBuffApplyHandler(DamagePercent.DamageBuffTrigger));
         }
         else
         {
             Fights.Damage damage = new Fights.Damage(base.Dice, DamagePercent.GetEffectSchool(base.Dice.EffectId), base.Caster, base.Spell);
             damage.GenerateDamages();
             damage.Amount            = (int)((double)current.MaxLifePoints * ((double)damage.Amount / 100.0));
             damage.IgnoreDamageBoost = true;
             damage.MarkTrigger       = base.MarkTrigger;
             SpellReflectionBuff bestReflectionBuff = current.GetBestReflectionBuff();
             if (bestReflectionBuff != null && bestReflectionBuff.ReflectedLevel >= (int)base.Spell.CurrentLevel && base.Spell.Template.Id != 0)
             {
                 this.NotifySpellReflected(current);
                 damage.Source           = current;
                 damage.ReflectedDamages = true;
                 base.Caster.InflictDamage(damage);
                 current.RemoveAndDispellBuff(bestReflectionBuff);
             }
             else
             {
                 current.InflictDamage(damage);
             }
         }
     }
     return(true);
 }
        private static void DamageBuffTrigger(TriggerBuff buff, BuffTriggerType trigger, object token)
        {
            EffectInteger left = buff.GenerateEffect();

            if (!(left == null))
            {
                Fights.Damage damage = new Fights.Damage(buff.Dice, DamagePercent.GetEffectSchool(buff.Dice.EffectId), buff.Caster, buff.Spell)
                {
                    Buff = buff
                };
                damage.GenerateDamages();
                damage.Amount            = (int)((double)buff.Target.MaxLifePoints * ((double)damage.Amount / 100.0));
                damage.IgnoreDamageBoost = true;
                buff.Target.InflictDamage(damage);
            }
        }