80 lines
No EOL
2.1 KiB
C#
80 lines
No EOL
2.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server.Network;
|
|
using Server.Items;
|
|
using Server.Mobiles;
|
|
using Server.Targeting;
|
|
using Server.SkillHandlers;
|
|
|
|
namespace Server.Spells.Ninjitsu
|
|
{
|
|
public class Backstab : NinjaMove
|
|
{
|
|
public Backstab()
|
|
{
|
|
}
|
|
|
|
public override int BaseMana{ get{ return 30; } }
|
|
public override double RequiredSkill{ get{ return Core.ML ? 40.0 : 20.0; } }
|
|
|
|
public override TextDefinition AbilityMessage{ get{ return new TextDefinition( 1063089 ); } } // You prepare to Backstab your opponent.
|
|
|
|
public override double GetDamageScalar( Mobile attacker, Mobile defender )
|
|
{
|
|
double ninjitsu = attacker.Skills[SkillName.Ninjitsu].Value;
|
|
|
|
return 1.0 + (ninjitsu / 360) + Tracking.GetStalkingBonus( attacker, defender ) / 100;
|
|
}
|
|
|
|
public override bool Validate( Mobile from )
|
|
{
|
|
if( !from.Hidden || from.AllowedStealthSteps <= 0 )
|
|
{
|
|
from.SendLocalizedMessage( 1063087 ); // You must be in stealth mode to use this ability.
|
|
return false;
|
|
}
|
|
|
|
return base.Validate( from );
|
|
}
|
|
|
|
public override bool OnBeforeSwing( Mobile attacker, Mobile defender )
|
|
{
|
|
bool valid = Validate( attacker ) && CheckMana( attacker, true );
|
|
|
|
if( valid )
|
|
{
|
|
attacker.BeginAction( typeof( Stealth ) );
|
|
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), delegate { attacker.EndAction( typeof( Stealth ) ); } );
|
|
}
|
|
|
|
return valid;
|
|
|
|
}
|
|
|
|
public override bool ValidatesDuringHit { get { return false; } }
|
|
|
|
public override void OnHit( Mobile attacker, Mobile defender, int damage )
|
|
{
|
|
//Validates before swing
|
|
|
|
ClearCurrentMove( attacker );
|
|
|
|
attacker.SendLocalizedMessage( 1063090 ); // You quickly stab your opponent as you come out of hiding!
|
|
|
|
defender.FixedParticles( 0x37B9, 1, 5, 0x251D, 0x651, 0, EffectLayer.Waist );
|
|
|
|
attacker.RevealingAction();
|
|
|
|
CheckGain( attacker );
|
|
}
|
|
|
|
public override void OnMiss( Mobile attacker, Mobile defender )
|
|
{
|
|
ClearCurrentMove( attacker );
|
|
|
|
attacker.SendLocalizedMessage( 1063161 ); // You failed to properly use the element of surprise.
|
|
|
|
attacker.RevealingAction();
|
|
}
|
|
}
|
|
} |