### Summary - [X] Lightning arrow no longer allows SDI - [X] Lightning arrow now proc's even without arrows - [X] Fixed NPE with lightning arrow when a monster is already killed.
66 lines
2.1 KiB
C#
66 lines
2.1 KiB
C#
namespace Server.Items
|
|
{
|
|
/// <summary>
|
|
/// This powerful ability requires secondary skills to activate.
|
|
/// Successful use of Shadowstrike deals extra damage to the target and renders the attacker invisible!
|
|
/// Only those who are adept at the art of stealth will be able to use this ability.
|
|
/// </summary>
|
|
public class ShadowStrike : WeaponAbility
|
|
{
|
|
public override int BaseMana => 20;
|
|
public override double DamageScalar => 1.25;
|
|
|
|
public override bool RequiresTactics(Mobile from) => false;
|
|
|
|
public override bool RequiresSecondarySkill(Mobile from) => true;
|
|
public override double GetRequiredSecondarySkill(Mobile from) => 80;
|
|
public override SkillName GetSecondarySkillName(Mobile from) => SkillName.Stealth;
|
|
|
|
public override bool CheckSkills(Mobile from)
|
|
{
|
|
if (!base.CheckSkills(from))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var skill = from.Skills.Stealth;
|
|
|
|
if (skill?.Value >= 80.0)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
from.SendLocalizedMessage(1060183); // You lack the required stealth to perform that attack
|
|
|
|
return false;
|
|
}
|
|
|
|
public override void OnHit(Mobile attacker, Mobile defender, int damage, WorldLocation worldLocation)
|
|
{
|
|
if (!Validate(attacker) || !CheckMana(attacker, true))
|
|
{
|
|
return;
|
|
}
|
|
|
|
ClearCurrentAbility(attacker);
|
|
|
|
attacker.SendLocalizedMessage(1060078); // You strike and hide in the shadows!
|
|
defender.SendLocalizedMessage(1060079); // You are dazed by the attack and your attacker vanishes!
|
|
|
|
Effects.SendLocationParticles(
|
|
EffectItem.Create(attacker.Location, attacker.Map, EffectItem.DefaultDuration),
|
|
0x376A,
|
|
8,
|
|
12,
|
|
9943
|
|
);
|
|
attacker.PlaySound(0x482);
|
|
|
|
defender.FixedEffect(0x37BE, 20, 25);
|
|
|
|
attacker.Combatant = null;
|
|
attacker.Warmode = false;
|
|
attacker.Hidden = true;
|
|
}
|
|
}
|
|
}
|