public override bool Apply() { bool result; foreach (FightActor current in base.GetAffectedActors()) { EffectInteger effectInteger = base.GenerateEffect(); if (effectInteger == null) { result = false; return(result); } FightActor fightActor = current; SpellReflectionBuff bestReflectionBuff = current.GetBestReflectionBuff(); if (bestReflectionBuff != null && bestReflectionBuff.ReflectedLevel >= (int)base.Spell.CurrentLevel && base.Spell.Template.Id != 0) { this.NotifySpellReflected(current); current.RemoveAndDispellBuff(bestReflectionBuff); fightActor = base.Caster; } if (this.Effect.Duration > 1) { base.AddStatBuff(fightActor, Convert.ToInt16(-effectInteger.Value), PlayerFields.AP, true, 168); } else { fightActor.LostAP(effectInteger.Value); } } result = true; return(result); }
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); }
protected override bool InternalApply() { foreach (var actor in GetAffectedActors()) { if (Effect.Duration == 0 || Effect.Delay != 0) { return(false); } var buffId = actor.PopNextBuffId(); var buff = new SpellReflectionBuff(buffId, actor, Caster, this, Spell, Critical, FightDispellableEnum.DISPELLABLE); actor.AddBuff(buff); } return(true); }
public override bool Apply() { bool result; foreach (FightActor current in base.GetAffectedActors()) { if (this.Effect.Duration <= 0) { result = false; return(result); } int id = current.PopNextBuffId(); SpellReflectionBuff buff = new SpellReflectionBuff(id, current, base.Caster, base.Dice, base.Spell, base.Critical, true); current.AddAndApplyBuff(buff, true); } result = true; return(result); }
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); }
public override bool Apply() { foreach (FightActor current in base.GetAffectedActors()) { Fights.Damage damage = new Fights.Damage(base.Dice); damage.MarkTrigger = base.MarkTrigger; damage.GenerateDamages(); double num = 0.0; double num2 = (double)base.Caster.LifePoints / (double)base.Caster.MaxLifePoints; if (num2 <= 0.5) { num = 2.0 * num2; } else { if (num2 > 0.5) { num = 1.0 + (num2 - 0.5) * -2.0; } } damage.Amount = (int)((double)base.Caster.LifePoints * num * (double)damage.Amount / 100.0); 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; damage.IgnoreDamageBoost = true; base.Caster.InflictDamage(damage); current.RemoveAndDispellBuff(bestReflectionBuff); } else { current.InflictDamage(damage); } } return(true); }