namespace Server.Spells.Necromancy; public abstract class TransformationSpell : NecromancerSpell, ITransformationSpell { public TransformationSpell(Mobile caster, Item scroll, SpellInfo info) : base(caster, scroll, info) { } public override bool BlockedByHorrificBeast => false; public abstract int Body { get; } public virtual int Hue => 0; public virtual int PhysResistOffset => 0; public virtual int FireResistOffset => 0; public virtual int ColdResistOffset => 0; public virtual int PoisResistOffset => 0; public virtual int NrgyResistOffset => 0; public virtual double TickRate => 1.0; public virtual void OnTick(Mobile m) { } public virtual void DoEffect(Mobile m) { } public virtual void RemoveEffect(Mobile m) { } public override bool CheckCast() => TransformationSpellHelper.CheckCast(Caster, this) && base.CheckCast(); public override void OnCast() { TransformationSpellHelper.OnCast(Caster, this); FinishSequence(); } }