private void OnDartHit(object state) { object[] states = (object[])state; Mobile from = (Mobile)states[0]; Mobile target = (Mobile)states[1]; if (!from.CanBeHarmful(target)) { return; } from.DoHarmful(target); AOS.Damage(target, from, Utility.RandomMinMax(4, 6), 100, 0, 0, 0, 0); if (m_Poison != null && m_PoisonCharges > 0) { Poison p = m_Poison; int maxLevel = from.Skills[SkillName.Poisoning].Fixed / 200; if (p.Level > maxLevel) { p = Poison.GetPoison(maxLevel); } if (target.ApplyPoison(from, p) != ApplyPoisonResult.Immune) { if (p.Name == "Parasitic") { ParasiticPotion.AddInfo(target, from); } else if (p.Name == "Darkglow") { DarkglowPotion.AddInfo(target, from); } } } ConsumeUse(); }
public override void OnHit(Mobile attacker, Mobile defender, int damage) { if (!Validate(attacker)) { return; } ClearCurrentAbility(attacker); BaseWeapon weapon = attacker.Weapon as BaseWeapon; if (weapon == null) { return; } Poison p = weapon.Poison; if (p == null || weapon.PoisonCharges <= 0) { attacker.SendLocalizedMessage(1061141); // Your weapon must have a dose of poison to perform an infectious strike! return; } if (!CheckMana(attacker, true)) { return; } --weapon.PoisonCharges; // Infectious strike special move now uses poisoning skill to help determine potency int maxLevel = attacker.Skills[SkillName.Poisoning].Fixed / 200; if (maxLevel < 0) { maxLevel = 0; } if (p.Level > maxLevel) { p = Poison.GetPoison(maxLevel); } Poison oldPoison = p; if ((attacker.Skills[SkillName.Poisoning].Value / 100.0) > Utility.RandomDouble()) { int level = p.Level + 1; Poison newPoison = Poison.GetPoison(level); if (newPoison != null) { p = newPoison; attacker.SendLocalizedMessage(1060080); // Your precise strike has increased the level of the poison by 1 defender.SendLocalizedMessage(1060081); // The poison seems extra effective! } } defender.PlaySound(0xDD); defender.FixedParticles(0x3728, 244, 25, 9941, 1266, 0, EffectLayer.Waist); if (defender.ApplyPoison(attacker, p) != ApplyPoisonResult.Immune) { attacker.SendLocalizedMessage(1008096, true, defender.Name); // You have poisoned your target : defender.SendLocalizedMessage(1008097, false, attacker.Name); // : poisoned you! Titles.AwardKarma(attacker, -10, true); if (oldPoison.Name == "Parasitic") { ParasiticPotion.AddInfo(defender, attacker); } else if (oldPoison.Name == "Darkglow") { DarkglowPotion.AddInfo(defender, attacker); } } }