From 23726927ea3d48c6e01261bf0de9a456dbae0ad6 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 22 Apr 2018 16:01:51 -0400 Subject: [PATCH] Core/Entities: Change Armor Penetration --- Source/Game/Entities/Unit/Unit.Combat.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index 51a72d92a..74d254c00 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -2599,18 +2599,21 @@ namespace Game.Entities // Apply Player CR_ARMOR_PENETRATION rating if (IsTypeId(TypeId.Player)) { - float maxArmorPen = 0; + float arpPct = ToPlayer().GetRatingBonusValue(CombatRating.ArmorPenetration); + + // no more than 100% + MathFunctions.RoundToInterval(ref arpPct, 0.0f, 100.0f); + + float maxArmorPen = 0.0f; if (victim.GetLevelForTarget(attacker) < 60) maxArmorPen = 400 + 85 * victim.GetLevelForTarget(attacker); else maxArmorPen = 400 + 85 * victim.GetLevelForTarget(attacker) + 4.5f * 85 * (victim.GetLevelForTarget(attacker) - 59); // Cap armor penetration to this number - maxArmorPen = Math.Min((armor + maxArmorPen) / 3, armor); + maxArmorPen = Math.Min((armor + maxArmorPen) / 3.0f, armor); // Figure out how much armor do we ignore - float armorPen = MathFunctions.CalculatePct(maxArmorPen, ToPlayer().GetRatingBonusValue(CombatRating.ArmorPenetration)); - // Got the value, apply it - armor -= Math.Min(armorPen, maxArmorPen); + armor -= MathFunctions.CalculatePct(maxArmorPen, arpPct); } if (MathFunctions.fuzzyLe(armor, 0.0f))