public static void Damage(Spell spell, Mobile target, double damage, int phys, int fire, int cold, int pois, int nrgy) { //Most (All) Damage spells start here if (spell.CheckResisted(target)) { damage *= 0.75; target.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } //KENSAI AVOIDANCE bool KensaiAvoided = false; bool KensaiAvoidable = true; Type[] m_NotAvoidable = new Type[] { //typeof( Fifth.MindBlastSpell ), typeof(Seventh.MeteorSwarmSpell), typeof(Eighth.EarthquakeSpell), typeof(Seventh.ChainLightningSpell), typeof(Fourth.FireFieldSpell) }; for (int i = 0; i < m_NotAvoidable.Length; i++) { if (m_NotAvoidable[i] == spell.GetType()) { KensaiAvoidable = false; break; } } if (target is TeiravonMobile) { TeiravonMobile m_Player = (TeiravonMobile)target; if (Spells.Third.BlessSpell.gruumsh.Contains(m_Player) || Spells.Third.BlessSpell.gruumsh.Contains(target)) { damage *= 1.30; } if (m_Player.GetActiveFeats(TeiravonMobile.Feats.DisruptingPresence) && m_Player.HasFeat(TeiravonMobile.Feats.DisruptingPresence)) { damage *= 0.75; m_Player.SendMessage("Your disrupting presense dulls the potency of the spell"); } if (m_Player.HasFeat(TeiravonMobile.Feats.MagicResistance)) { damage *= 0.75; target.SendLocalizedMessage(501783); } int cntmith = 0; ArrayList mithitems = new ArrayList(); BaseArmor tmpitem; tmpitem = m_Player.FindItemOnLayer(Layer.InnerTorso) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.Pants) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.Arms) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.Gloves) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.Helm) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.Neck) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } tmpitem = m_Player.FindItemOnLayer(Layer.TwoHanded) as BaseArmor; if (tmpitem != null) { if (tmpitem.Resource == CraftResource.Mithril) { mithitems.Add(tmpitem); cntmith++; } } if (target.VirtualArmorMod >= 1) { if (Utility.Random(3) > 1) { double amount = damage - target.VirtualArmorMod; target.VirtualArmorMod -= (int)damage; if (amount < 0) { amount = 0; } damage = amount; if (target.VirtualArmorMod < 1) { target.VirtualArmorMod = 0; target.FixedParticles(14276, 10, 20, 14276, EffectLayer.Waist); target.PlaySound(0x38F); } else { string shield = target.VirtualArmorMod.ToString(); target.LocalOverheadMessage(MessageType.Emote, 90, true, shield); target.FixedParticles(14265, 10, 20, 14276, EffectLayer.Waist); target.PlaySound(0x525); } } } if (Utility.RandomMinMax(1, 100) < cntmith) { m_Player.SendMessage("Your mithril arbsorbs the spell damage!"); int armordam = (int)((damage / 2) / cntmith); int tmphits; damage = 0; for (int i = 0; i < mithitems.Count; ++i) { BaseArmor tmparm = (BaseArmor)mithitems[i]; if (tmparm.HitPoints > armordam) { tmparm.HitPoints -= armordam; } else { tmphits = tmparm.HitPoints; tmparm.HitPoints = 0; tmparm.MaxHitPoints = tmparm.MaxHitPoints - (armordam - tmphits); if (tmparm.MaxHitPoints < 1) { tmparm.Delete(); m_Player.SendMessage("Your mithril armor has been destroyed!"); } else { m_Player.SendMessage("Your mithril armor has been severely damaged!"); } } } } } if (!KensaiAvoided) { damage = CloakOfDarknessCheck(spell, target, damage); } // TimeSpan ts = GetDamageDelayForSpell(spell); Damage(ts, target, spell.Caster, damage, phys, fire, cold, pois, nrgy); }