private static void Shoot(PlayerMobile from, Mobile target, INinjaWeapon weapon) { if (from != target && CanUseWeapon(from, weapon) && from.CanBeHarmful(target)) { if (weapon.WeaponMinRange == 0 || !from.InRange(target, weapon.WeaponMinRange)) { from.NinjaWepCooldown = true; from.Direction = from.GetDirectionTo(target); from.RevealingAction(); weapon.AttackAnimation(from, target); ConsumeUse(weapon); if (CombatCheck(from, target)) { Timer.DelayCall(TimeSpan.FromSeconds(1.0), new TimerStateCallback <object[]>(OnHit), new object[] { from, target, weapon }); } Timer.DelayCall(TimeSpan.FromSeconds(2.5), new TimerStateCallback <PlayerMobile>(ResetUsing), from); } else { from.SendLocalizedMessage(1063303); // Your target is too close! } } }
public static void Shoot(Mobile from, Mobile target, INinjaWeapon weapon) { if (from != target && (!(from is PlayerMobile) || CanUseWeapon((PlayerMobile)from, weapon)) && from.CanBeHarmful(target)) { if (weapon.WeaponMinRange == 0 || !from.InRange(target, weapon.WeaponMinRange)) { if (from is PlayerMobile) { ((PlayerMobile)from).NinjaWepCooldown = true; } from.Direction = from.GetDirectionTo(target); from.RevealingAction(); weapon.AttackAnimation(from, target); ConsumeUse(weapon); if (CombatCheck(from, target)) { Timer.DelayCall(TimeSpan.FromSeconds(1.0), OnHit, new object[] { from, target, weapon }); } if (from is PlayerMobile) { Timer.DelayCall(TimeSpan.FromSeconds(2.5), ResetUsing, (PlayerMobile)from); } } else { from.SendLocalizedMessage(1063303); // Your target is too close! } } }
private static void Shoot(PlayerMobile from, Mobile target, INinjaWeapon weapon) { if (from != target && CanUseWeapon(from, weapon) && from.CanBeHarmful(target)) { if (weapon.WeaponMinRange == 0 || !from.InRange(target, weapon.WeaponMinRange)) { from.NinjaWepCooldown = true; from.Direction = from.GetDirectionTo(target); from.RevealingAction(); weapon.AttackAnimation(from, target); ConsumeUse(weapon); if (CombatCheck(from, target)) { Timer.DelayCall(TimeSpan.FromSeconds(1.0), new TimerStateCallback<object[]>(OnHit), new object[] { from, target, weapon }); } Timer.DelayCall(TimeSpan.FromSeconds(2.5), new TimerStateCallback<PlayerMobile>(ResetUsing), from); } else { from.SendLocalizedMessage(1063303); // Your target is too close! } } }
private static void Shoot(PlayerMobile from, Mobile target, INinjaWeapon weapon) { if (from != target && CanUseWeapon(from, weapon) && from.CanBeHarmful(target)) { if (weapon.WeaponMinRange == 0 || !from.InRange(target, weapon.WeaponMinRange)) { from.NinjaWepCooldown = true; from.Direction = from.GetDirectionTo(target); from.RevealingAction(); weapon.AttackAnimation(from, target); ConsumeUse(weapon); if (CombatCheck(from, target)) { Timer.StartTimer(TimeSpan.FromSeconds(1.0), () => OnHit(from, target, weapon)); } Timer.StartTimer(TimeSpan.FromSeconds(2.5), () => from.NinjaWepCooldown = false); } else { from.SendLocalizedMessage(1063303); // Your target is too close! } } }