diff --git a/Projects/UOContent.Tests/Tests/Items/Weapons/ResonancePropertyTests.cs b/Projects/UOContent.Tests/Tests/Items/Weapons/ResonancePropertyTests.cs index 7c6eeaf4c..cf35ebc44 100644 --- a/Projects/UOContent.Tests/Tests/Items/Weapons/ResonancePropertyTests.cs +++ b/Projects/UOContent.Tests/Tests/Items/Weapons/ResonancePropertyTests.cs @@ -147,37 +147,41 @@ public class ResonancePropertyTests public void ResonanceAggregation_UsesOnlyMatchingEligibleEquipmentAndCapsAtFortyPercent() { var previousExpansion = Core.Expansion; - var mobile = CreateMobile(player: true); + var shieldBearer = CreateMobile(player: true); + var weaponBearer = CreateMobile(player: true); var shield = new BronzeShield { Layer = Layer.TwoHanded }; var weapon = new WarHammer(); + var armor = new LeatherChest(); var oneHandedWeapon = new Katana(); try { - shield.AbsorptionAttributes.FireResonance = 25; + shield.AbsorptionAttributes.FireResonance = 50; shield.AbsorptionAttributes.ColdResonance = 16; weapon.AbsorptionAttributes.FireResonance = 25; weapon.AbsorptionAttributes.PoisonResonance = 19; - oneHandedWeapon.AbsorptionAttributes.FireResonance = 99; + armor.AbsorptionAttributes[AbsorptionAttribute.FireResonance] = 99; + oneHandedWeapon.AbsorptionAttributes[AbsorptionAttribute.FireResonance] = 99; - mobile.AddItem(shield); - mobile.AddItem(weapon); - mobile.AddItem(oneHandedWeapon); + shieldBearer.AddItem(shield); + shieldBearer.AddItem(armor); + weaponBearer.AddItem(weapon); + weaponBearer.AddItem(oneHandedWeapon); - Assert.Contains(shield, mobile.Items); - Assert.Contains(weapon, mobile.Items); - Assert.Contains(oneHandedWeapon, mobile.Items); - Assert.Equal(Layer.TwoHanded, shield.Layer); - Assert.Equal(Layer.TwoHanded, weapon.Layer); + Assert.Same(shield, shieldBearer.FindItemOnLayer(Layer.TwoHanded)); + Assert.Same(weapon, weaponBearer.FindItemOnLayer(Layer.TwoHanded)); Core.Expansion = Expansion.ML; - Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(mobile, DamageType.Fire)); + Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(shieldBearer, DamageType.Fire)); + Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(weaponBearer, DamageType.Fire)); Core.Expansion = Expansion.SA; - Assert.Equal(AOS.ResonanceChanceCap, AbsorptionAttributes.GetResonanceValue(mobile, DamageType.Fire)); - Assert.Equal(16, AbsorptionAttributes.GetResonanceValue(mobile, DamageType.Cold)); - Assert.Equal(19, AbsorptionAttributes.GetResonanceValue(mobile, DamageType.Poison)); - Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(mobile, DamageType.Energy)); + Assert.Equal(AOS.ResonanceChanceCap, AbsorptionAttributes.GetResonanceValue(shieldBearer, DamageType.Fire)); + Assert.Equal(16, AbsorptionAttributes.GetResonanceValue(shieldBearer, DamageType.Cold)); + Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(shieldBearer, DamageType.Poison)); + Assert.Equal(25, AbsorptionAttributes.GetResonanceValue(weaponBearer, DamageType.Fire)); + Assert.Equal(19, AbsorptionAttributes.GetResonanceValue(weaponBearer, DamageType.Poison)); + Assert.Equal(0, AbsorptionAttributes.GetResonanceValue(weaponBearer, DamageType.Energy)); Assert.Equal(0, oneHandedWeapon.AbsorptionAttributes.FireResonance); } finally @@ -185,8 +189,10 @@ public class ResonancePropertyTests Core.Expansion = previousExpansion; shield.Delete(); weapon.Delete(); + armor.Delete(); oneHandedWeapon.Delete(); - mobile.Delete(); + shieldBearer.Delete(); + weaponBearer.Delete(); } } diff --git a/Projects/UOContent/Misc/AOS.cs b/Projects/UOContent/Misc/AOS.cs index 173397f08..add34e7d6 100644 --- a/Projects/UOContent/Misc/AOS.cs +++ b/Projects/UOContent/Misc/AOS.cs @@ -1535,18 +1535,20 @@ namespace Server { var obj = items[i]; - if (obj is BaseArmor armor) + if (IsResonance(attribute)) { - var attrs = armor.AbsorptionAttributes; - - if (attrs != null) + if (obj is BaseShield shield) { - value += attrs[attribute]; + value += shield.AbsorptionAttributes[attribute]; + } + else if (obj is BaseWeapon { Layer: Layer.TwoHanded } weapon) + { + value += weapon.AbsorptionAttributes[attribute]; } } - else if (IsResonance(attribute) && obj is BaseWeapon weapon) + else if (obj is BaseArmor armor) { - var attrs = weapon.AbsorptionAttributes; + var attrs = armor.AbsorptionAttributes; if (attrs != null) {