using Server.Items; using Server.Misc; using Server.Targeting; namespace Server.Spells.Fifth { public class DispelFieldSpell : MagerySpell, ISpellTargetingItem { private static readonly SpellInfo m_Info = new( "Dispel Field", "An Grav", 206, 9002, Reagent.BlackPearl, Reagent.SpidersSilk, Reagent.SulfurousAsh, Reagent.Garlic ); public DispelFieldSpell(Mobile caster, Item scroll = null) : base(caster, scroll, m_Info) { } public override SpellCircle Circle => SpellCircle.Fifth; public void Target(Item item) { if (item == null) { Caster.SendLocalizedMessage(1005049); // That cannot be dispelled. } else if (!Caster.CanSee(item)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (!item.GetType().IsDefined(typeof(DispellableFieldAttribute), false)) { Caster.SendLocalizedMessage(1005049); // That cannot be dispelled. } else if (item is Moongate moongate && !moongate.Dispellable) { Caster.SendLocalizedMessage(1005047); // That magic is too chaotic } else if (CheckSequence()) { SpellHelper.Turn(Caster, item); Effects.SendLocationParticles( EffectItem.Create(item.Location, item.Map, EffectItem.DefaultDuration), 0x376A, 9, 20, 5042 ); Effects.PlaySound(item.GetWorldLocation(), item.Map, 0x201); item.Delete(); } FinishSequence(); } public override void OnCast() { Caster.Target = new SpellTargetItem(this, TargetFlags.None, Core.ML ? 10 : 12); } } }