namespace Server.Items { /// /// Available on some crossbows, this special move allows archers to fire while on the move. /// This shot is somewhat less accurate than normal, but the ability to fire while running is a clear advantage. /// public class MovingShot : WeaponAbility { public override int BaseMana => 15; public override int AccuracyBonus => -25; public override bool ValidatesDuringHit => false; // Mana is only checked here; OnHit/OnMiss charge it, since they run only for a shot that actually fired. public override bool OnBeforeSwing(Mobile attacker, Mobile defender) => Validate(attacker) && CheckMana(attacker, false); public override void OnMiss(Mobile attacker, Mobile defender) { // Validates in OnSwing for accuracy scalar ClearCurrentAbility(attacker); if (CheckMana(attacker, true)) { attacker.SendLocalizedMessage(1060089); // You fail to execute your special move } } public override void OnHit(Mobile attacker, Mobile defender, int damage, WorldLocation worldLocation) { // Validates in OnSwing for accuracy scalar ClearCurrentAbility(attacker); if (CheckMana(attacker, true)) { attacker.SendLocalizedMessage(1060216); // Your shot was successful } } } }