From c4b814cc074cc00ec7890e6c13643c87bbb6a319 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 28 Jul 2022 17:39:21 -0700 Subject: [PATCH] fix: Fixes damage from AR (#1134) --- Projects/UOContent/Items/Armor/BaseArmor.cs | 29 ++++--------------- .../UOContent/Items/Weapons/BaseWeapon.cs | 5 ++-- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/Projects/UOContent/Items/Armor/BaseArmor.cs b/Projects/UOContent/Items/Armor/BaseArmor.cs index 2cb758847..4aa3191e7 100644 --- a/Projects/UOContent/Items/Armor/BaseArmor.cs +++ b/Projects/UOContent/Items/Armor/BaseArmor.cs @@ -752,15 +752,10 @@ namespace Server.Items var halfar = ArmorRating / 2.0; var absorbed = (int)(halfar + halfar * Utility.RandomDouble()); - // Don't go below zero - damageTaken = Math.Min(absorbed, damageTaken); + damageTaken = Math.Max(0, damageTaken - absorbed); - if (absorbed < 2) - { - absorbed = 2; - } - - if (Utility.Random(100) < 25) // 25% chance to lower durability + // 25% chance to lower durability + if (Utility.Random(4) == 0) { if (Core.AOS && ArmorAttributes.SelfRepair > Utility.Random(10)) { @@ -768,16 +763,7 @@ namespace Server.Items } else { - int wear; - - if (weapon.Type == WeaponType.Bashing) - { - wear = absorbed / 2; - } - else - { - wear = Utility.Random(2); - } + var wear = weapon.Type == WeaponType.Bashing ? Math.Max(1, absorbed / 2) : Utility.Random(2); if (wear > 0 && _maxHitPoints > 0) { @@ -800,11 +786,8 @@ namespace Server.Items if (Parent is Mobile mobile) { - mobile.LocalOverheadMessage( - MessageType.Regular, - 0x3B2, - 1061121 - ); // Your equipment is severely damaged. + // Your equipment is severely damaged. + mobile.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1061121); } } else diff --git a/Projects/UOContent/Items/Weapons/BaseWeapon.cs b/Projects/UOContent/Items/Weapons/BaseWeapon.cs index 0ff93751b..03dfa60a2 100644 --- a/Projects/UOContent/Items/Weapons/BaseWeapon.cs +++ b/Projects/UOContent/Items/Weapons/BaseWeapon.cs @@ -1963,10 +1963,11 @@ namespace Server.Items } } + var isAcidMonster = m_MaxHits > 0 && MaxRange <= 1 && defender is Slime or AcidElemental; // Stratics says 50% chance, seems more like 4%.. - if (m_MaxHits > 0 && MaxRange <= 1 && defender is Slime or AcidElemental |Utility.RandomDouble() < .04) + if (isAcidMonster || Utility.RandomDouble() < 0.04) { - if (MaxRange <= 1 && defender is Slime or AcidElemental) + if (isAcidMonster) { attacker.LocalOverheadMessage(MessageType.Regular, 0x3B2, 500263); // *Acid blood scars your weapon!* }