fix(items): restrict resonance aggregation hosts
This commit is contained in:
parent
7d50457e4a
commit
c71bf47be8
2 changed files with 32 additions and 24 deletions
|
|
@ -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<BaseShield>(Layer.TwoHanded));
|
||||
Assert.Same(weapon, weaponBearer.FindItemOnLayer<BaseWeapon>(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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue