Convert movement, actions (lift/use), combat, and spells to use Core.TickCount and avoid DateTime caveats (performance, system time dependency, etc) Refactor DateTime.Now to DateTime.UtcNow Add LOS check for Iron Maiden addon
57 lines
No EOL
1.6 KiB
C#
57 lines
No EOL
1.6 KiB
C#
using System;
|
|
|
|
namespace Server.Items
|
|
{
|
|
/// <summary>
|
|
/// The highly skilled warrior can use this special attack to make two quick swings in succession.
|
|
/// Landing both blows would be devastating!
|
|
/// </summary>
|
|
public class DoubleStrike : WeaponAbility
|
|
{
|
|
public DoubleStrike()
|
|
{
|
|
}
|
|
|
|
public override int BaseMana{ get{ return 30; } }
|
|
public override double DamageScalar{ get{ return 0.9; } }
|
|
|
|
public override void OnHit( Mobile attacker, Mobile defender, int damage )
|
|
{
|
|
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
|
|
return;
|
|
|
|
ClearCurrentAbility( attacker );
|
|
|
|
attacker.SendLocalizedMessage( 1060084 ); // You attack with lightning speed!
|
|
defender.SendLocalizedMessage( 1060085 ); // Your attacker strikes with lightning speed!
|
|
|
|
defender.PlaySound( 0x3BB );
|
|
defender.FixedEffect( 0x37B9, 244, 25 );
|
|
|
|
// Swing again:
|
|
|
|
// If no combatant, wrong map, one of us is a ghost, or cannot see, or deleted, then stop combat
|
|
if ( defender == null || defender.Deleted || attacker.Deleted || defender.Map != attacker.Map || !defender.Alive || !attacker.Alive || !attacker.CanSee( defender ) )
|
|
{
|
|
attacker.Combatant = null;
|
|
return;
|
|
}
|
|
|
|
IWeapon weapon = attacker.Weapon;
|
|
|
|
if ( weapon == null )
|
|
return;
|
|
|
|
if ( !attacker.InRange( defender, weapon.MaxRange ) )
|
|
return;
|
|
|
|
if ( attacker.InLOS( defender ) )
|
|
{
|
|
BaseWeapon.InDoubleStrike = true;
|
|
attacker.RevealingAction();
|
|
attacker.NextCombatTime = Core.TickCount + weapon.OnSwing(attacker, defender).TotalMilliseconds;
|
|
BaseWeapon.InDoubleStrike = false;
|
|
}
|
|
}
|
|
}
|
|
} |