CODE |
in the AbsorbDamageAOS method around line 1173 of BaseWeapon.cs change if (armor != null) { armor.OnHit(this, damage); // call OnHit to lose durability } } return damage; } to if (armor != null) { armor.OnHit(this, damage); // call OnHit to lose durability // XmlAttachment check for OnArmorHit damage -= Server.Engines.XmlSpawner2.XmlAttach.OnArmorHit(attacker, defender, armorItem, this, originaldamage); } } return damage; } |
QUOTE |
public virtual int AbsorbDamageAOS( Mobile attacker, Mobile defender, int damage ) { bool blocked = false; if ( defender.Player || defender.Body.IsHuman ) { blocked = CheckParry( defender ); if ( blocked ) { defender.FixedEffect( 0x37B9, 10, 16 ); damage = 0; // Successful block removes the Honorable Execution penalty. HonorableExecution.RemovePenalty( defender ); if ( CounterAttack.IsCountering( defender ) ) { BaseWeapon weapon = defender.Weapon as BaseWeapon; if ( weapon != null ) weapon.OnSwing( defender, attacker ); CounterAttack.StopCountering( defender ); } if ( Confidence.IsConfident( defender ) ) { defender.SendLocalizedMessage( 1063117 ); // Your confidence reassures you as you successfully block your opponent's blow. double bushido = defender.Skills.Bushido.Value; defender.Hits += Utility.RandomMinMax( 1, (int)(bushido / 12) ); defender.Stam += Utility.RandomMinMax( 1, (int)(bushido / 5) ); } BaseShield shield = defender.FindItemOnLayer( Layer.TwoHanded ) as BaseShield; if ( shield != null ) { shield.OnHit( this, damage ); } } } if ( !blocked ) { double positionChance = Utility.RandomDouble(); Item armorItem; if( positionChance < 0.07 ) armorItem = defender.NeckArmor; else if( positionChance < 0.14 ) armorItem = defender.HandArmor; else if( positionChance < 0.28 ) armorItem = defender.ArmsArmor; else if( positionChance < 0.43 ) armorItem = defender.HeadArmor; else if( positionChance < 0.65 ) armorItem = defender.LegsArmor; else armorItem = defender.ChestArmor; IWearableDurability armor = armorItem as IWearableDurability; if ( armor != null ) armor.OnHit( this, damage ); // call OnHit to lose durability } return damage; } |