public override int ApplyEffect(EffectCast CastInfos) { foreach (var Target in CastInfos.Targets) { var SubInfos = new EffectCast(CastInfos.EffectType, CastInfos.SpellId, CastInfos.CellId, CastInfos.GenerateJet(Target), CastInfos.Value2, CastInfos.Value3, CastInfos.Chance, CastInfos.Duration, CastInfos.Caster, CastInfos.Targets); var BuffStats = new BuffStats(SubInfos, Target); var DamageValue = 0; if (BuffStats.ApplyEffect(ref DamageValue) == -3) { return(-3); } Target.Buffs.AddBuff(BuffStats); } return(-1); }
public override int ApplyEffect(ref int DamageValue, EffectCast DamageInfos = null) { var BuffValue = DamageValue / 2; // Divise par deux les stats a boost car c'est un personnage. var StatsType = (EffectEnum)this.CastInfos.Value1 == EffectEnum.Heal ? EffectEnum.AddVitalite : (EffectEnum)this.CastInfos.Value1; var MaxValue = this.CastInfos.Value2; var Duration = this.CastInfos.Value3; if (this.Target.Fight.CurrentFighter.ActorId == this.CastInfos.FakeValue) { if (this.CastInfos.DamageValue < MaxValue) { if (this.CastInfos.DamageValue + BuffValue > MaxValue) { BuffValue = MaxValue - this.CastInfos.DamageValue; } } else { BuffValue = 0; } } else { this.CastInfos.DamageValue = 0; this.CastInfos.FakeValue = (int)this.Target.Fight.CurrentFighter.ActorId; if (this.CastInfos.DamageValue + BuffValue > MaxValue) { BuffValue = MaxValue; } } if (BuffValue != 0) { this.CastInfos.DamageValue += BuffValue; var BuffStats = new BuffStats(new EffectCast(StatsType, this.CastInfos.SpellId, this.CastInfos.SpellId, BuffValue, 0, 0, 0, Duration, this.CastInfos.Caster, null), this.Target); BuffStats.ApplyEffect(ref BuffValue); this.Target.Buffs.AddBuff(BuffStats); } return(base.ApplyEffect(ref DamageValue, DamageInfos)); }
public override int ApplyEffect(ref int DamageValue, EffectCast DamageInfos = null) { var LostAP = CastInfos.Value1 > Target.AP ? Target.AP : CastInfos.Value1; CastInfos.Value1 = Target.CalculDodgeAPMP(CastInfos.Caster, LostAP); if (CastInfos.Value1 != LostAP) { Target.Fight.SendToFight(new GameActionMessage((int)GameActionTypeEnum.FIGHT_DODGE_SUBPA, Target.ActorId, Target.ActorId + "," + (LostAP - CastInfos.Value1))); } if (CastInfos.Value1 > 0) { var BuffStats = new BuffStats(new EffectCast(this.CastInfos.EffectType, this.CastInfos.SpellId, this.CastInfos.SpellId, CastInfos.Value1, 0, 0, 0, Duration, this.CastInfos.Caster, null), this.Target); BuffStats.ApplyEffect(ref LostAP); this.Target.Buffs.AddBuff(BuffStats); } return(base.ApplyEffect(ref DamageValue, DamageInfos)); }
public override int ApplyEffect(EffectCast CastInfos) { var MalusType = TargetMalus[CastInfos.EffectType]; var BonusType = CasterBonus[CastInfos.EffectType]; var MalusInfos = new EffectCast(MalusType, CastInfos.SpellId, CastInfos.CellId, CastInfos.Value1, CastInfos.Value2, CastInfos.Value3, CastInfos.Chance, CastInfos.Duration, CastInfos.Caster, CastInfos.Targets); var BonusInfos = new EffectCast(BonusType, CastInfos.SpellId, CastInfos.CellId, CastInfos.Value1, CastInfos.Value2, CastInfos.Value3, CastInfos.Chance, CastInfos.Duration - 1, CastInfos.Caster, CastInfos.Targets); var DamageValue = 0; foreach (var Target in CastInfos.Targets) { if (Target == CastInfos.Caster) { continue; } // Malus a la cible var BuffStats = new BuffStats(MalusInfos, Target); if (BuffStats.ApplyEffect(ref DamageValue) == -3) { return(-3); } Target.Buffs.AddBuff(BuffStats); // Bonus au lanceur BuffStats = new BuffStats(BonusInfos, CastInfos.Caster); if (BuffStats.ApplyEffect(ref DamageValue) == -3) { return(-3); } CastInfos.Caster.Buffs.AddBuff(BuffStats); } return(-1); }