using System; namespace Server.Items { /// /// This attack allows you to disarm your foe. /// Now in Age of Shadows, a successful Disarm leaves the victim unable to re-arm another weapon for several seconds. /// public class Disarm : WeaponAbility { public static readonly TimeSpan BlockEquipDuration = TimeSpan.FromSeconds(5.0); public override int BaseMana => 20; // No longer active in pub21: /*public override bool CheckSkills( Mobile from ) { if (!base.CheckSkills( from )) return false; if (!(from.Weapon is Fists)) return true; Skill skill = from.Skills.ArmsLore; if (skill?.Base >= 80.0) return true; from.SendLocalizedMessage( 1061812 ); // You lack the required skill in armslore to perform that attack! return false; }*/ public override bool RequiresTactics(Mobile from) { if (!(from.Weapon is BaseWeapon weapon)) return false; return weapon.Skill != SkillName.Wrestling; } public override void OnHit(Mobile attacker, Mobile defender, int damage) { if (!Validate(attacker)) return; ClearCurrentAbility(attacker); Item toDisarm = defender.FindItemOnLayer(Layer.OneHanded); if (toDisarm?.Movable == false) toDisarm = defender.FindItemOnLayer(Layer.TwoHanded); Container pack = defender.Backpack; if (pack == null || toDisarm?.Movable == false) { attacker.SendLocalizedMessage(1004001); // You cannot disarm your opponent. } else if ((!Core.ML && toDisarm == null) || toDisarm is BaseShield || toDisarm is Spellbook) { attacker.SendLocalizedMessage(1060849); // Your target is already unarmed! } else if (CheckMana(attacker, true)) { attacker.SendLocalizedMessage(1060092); // You disarm their weapon! defender.SendLocalizedMessage(1060093); // Your weapon has been disarmed! defender.PlaySound(0x3B9); defender.FixedParticles(0x37BE, 232, 25, 9948, EffectLayer.LeftHand); pack.DropItem(toDisarm); BaseWeapon.BlockEquip(defender, BlockEquipDuration); } } } }