From 1bf9c263d586fdebfe54a536e654551f2de93086 Mon Sep 17 00:00:00 2001 From: Crome696 Date: Sat, 11 Jul 2026 23:53:08 +0200 Subject: [PATCH] fix(items): normalize Reactive Paralyze values --- .../Weapons/ReactiveParalyzePropertyTests.cs | 27 +++++++++++++++++++ Projects/UOContent/Misc/AOS.cs | 4 +-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Projects/UOContent.Tests/Tests/Items/Weapons/ReactiveParalyzePropertyTests.cs b/Projects/UOContent.Tests/Tests/Items/Weapons/ReactiveParalyzePropertyTests.cs index 47161f3e5..abfa41a5c 100644 --- a/Projects/UOContent.Tests/Tests/Items/Weapons/ReactiveParalyzePropertyTests.cs +++ b/Projects/UOContent.Tests/Tests/Items/Weapons/ReactiveParalyzePropertyTests.cs @@ -61,6 +61,33 @@ public class ReactiveParalyzePropertyTests AssertStaffEditable(typeof(AosWeaponAttributes), nameof(AosWeaponAttributes.ReactiveParalyze)); } + [Fact] + public void Attributes_NormalizeReactiveParalyzeToBinaryPresence() + { + var shield = new BronzeShield(); + var weapon = new Halberd(); + + try + { + shield.ArmorAttributes.ReactiveParalyze = -1; + weapon.WeaponAttributes.ReactiveParalyze = 2; + + Assert.Equal(1, shield.ArmorAttributes.ReactiveParalyze); + Assert.Equal(1, weapon.WeaponAttributes.ReactiveParalyze); + + shield.ArmorAttributes.ReactiveParalyze = 0; + weapon.WeaponAttributes.ReactiveParalyze = 0; + + Assert.Equal(0, shield.ArmorAttributes.ReactiveParalyze); + Assert.Equal(0, weapon.WeaponAttributes.ReactiveParalyze); + } + finally + { + shield.Delete(); + weapon.Delete(); + } + } + [Fact] public void GetProperties_GatesReactiveParalyzeToStygianAbyssAndSupportedHosts() { diff --git a/Projects/UOContent/Misc/AOS.cs b/Projects/UOContent/Misc/AOS.cs index fc4d808ca..b5c64e8b5 100644 --- a/Projects/UOContent/Misc/AOS.cs +++ b/Projects/UOContent/Misc/AOS.cs @@ -1121,7 +1121,7 @@ namespace Server ? this[AosWeaponAttribute.ReactiveParalyze] : 0; set => this[AosWeaponAttribute.ReactiveParalyze] = - Owner is BaseWeapon { Layer: Layer.TwoHanded } weapon && weapon is not BaseRanged ? value : 0; + Owner is BaseWeapon { Layer: Layer.TwoHanded } weapon && weapon is not BaseRanged && value != 0 ? 1 : 0; } public static int GetValue(Mobile m, AosWeaponAttribute attribute) @@ -1975,7 +1975,7 @@ namespace Server public int ReactiveParalyze { get => Owner is BaseShield ? this[AosArmorAttribute.ReactiveParalyze] : 0; - set => this[AosArmorAttribute.ReactiveParalyze] = Owner is BaseShield ? value : 0; + set => this[AosArmorAttribute.ReactiveParalyze] = Owner is BaseShield && value != 0 ? 1 : 0; } public static int GetValue(Mobile m, AosArmorAttribute attribute)