public void Handle(ref DamageEvent arg) { var defendType = GetType(arg.DamageType); if (defendType == null || Math.Abs(defendType.Amount) < 0.01f) { return; } var amtDefended = GameOptions.GetDefenseAmount(arg.Amount, defendType.Amount); arg.Amount = MathEx.Max(0, arg.Amount - amtDefended); if (defendType.DefendLimit < 0) { return; } defendType.DefendLimit -= amtDefended; if (defendType.DefendLimit <= 0) { defendType.Amount = 0; } }
public void Handle(ref DamageEvent arg) { if (arg.Amount <= 0) { return; } var statEntry = FindStat(arg.DamageType); if (statEntry == null) { return; } if (statEntry.Stat == null) { statEntry.Stat = this.GetEntity().Stats.Get(statEntry.Id); } if (statEntry.Stat == null || statEntry.Stat.Value <= 0) { return; } var amtDefended = GameOptions.GetDefenseAmount(arg.Amount, statEntry.Stat.Value); arg.Amount = MathEx.Max(0, arg.Amount - amtDefended); }