public override void OnHit(Mobile attacker, Mobile defender, double damageBonus) { base.OnHit(attacker, defender, damageBonus); if (attacker != null && defender != null) { // No special effects 90% of the time for players if (attacker.Player && attacker.AccessLevel == AccessLevel.Player && Utility.RandomDouble() < 0.90) { return; } // Always bleed. if (!BleedAttack.IsBleeding(defender)) { // Necromancers under Lich or Wraith Form are immune to Bleed Attacks. TransformContext context = TransformationSpellHelper.GetContext(defender); if ((context != null && (context.Type == typeof(LichFormSpell) || context.Type == typeof(WraithFormSpell))) || (defender is BaseCreature && ((BaseCreature)defender).BleedImmune)) { return; } else if (defender is PlayerMobile) { defender.LocalOverheadMessage(MessageType.Regular, 0x21, 1060757); // You are bleeding profusely defender.NonlocalOverheadMessage(MessageType.Regular, 0x21, 1060758, defender.Name); // ~1_NAME~ is bleeding profusely } defender.PlaySound(0x133); defender.FixedParticles(0x377A, 244, 25, 9950, 31, 0, EffectLayer.Waist); BleedAttack.BeginBleed(defender, attacker, true); } // 20% chance of Mortal Strike, costs 10 stam each use but cannot be used if you have < 80 stam. if (Utility.RandomDouble() > 0.80 && attacker.Stam > 79 && !MortalStrike.IsWounded(defender)) { MortalStrike.BeginWound(defender, TimeSpan.FromSeconds(6.0)); attacker.SendLocalizedMessage(1060086); // You deliver a mortal wound! defender.SendLocalizedMessage(1060087); // You have been mortally wounded! defender.PlaySound(0x1E1); defender.FixedParticles(0x37B9, 244, 25, 9944, 31, 0, EffectLayer.Waist); attacker.Stam -= 15; } } }
public override void OnHit(Mobile attacker, Mobile defender, int damage) { if (!Validate(attacker) || !CheckMana(attacker, true)) { return; } ClearCurrentMove(attacker); attacker.SendLocalizedMessage(1060086); // You deliver a mortal wound! defender.SendLocalizedMessage(1060087); // You have been mortally wounded! defender.PlaySound(0x1E1); defender.FixedParticles(0x37B9, 244, 25, 9944, 31, 0, EffectLayer.Waist); // Do not reset timer if one is already in place. if (!MortalStrike.IsWounded(defender)) { MortalStrike.BeginWound(defender, defender.Player ? PlayerDuration : NPCDuration); } }