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); }