protected override void OnTick() { try { if (m_Spell != null && m_Spell.Caster != null && m_Spell.State == SpellState.Casting && m_Spell.Caster.Spell == m_Spell) { m_Spell.State = SpellState.Sequencing; m_Spell.m_CastTimer = null; m_Spell.Caster.OnSpellCast(m_Spell); m_Spell.Caster.Region.OnSpellCast(m_Spell.Caster, m_Spell); m_Spell.Caster.NextSpellTime = Core.TickCount + Core.GetTicks(m_Spell.GetCastRecovery()); Target originalTarget = m_Spell.Caster.Target; m_Spell.OnCast(); if (m_Spell.Caster.Player && m_Spell.Caster.Target != originalTarget && m_Spell.Caster.Target != null) { m_Spell.Caster.Target.BeginTimeout(m_Spell.Caster, TimeSpan.FromSeconds(30.0)); } m_Spell.m_CastTimer = null; m_Spell.OnEndCast(); } } catch { m_Spell.m_CastTimer = null; if (m_Spell != null && m_Spell.Caster != null) { m_Spell.Caster.NextSpellTime = Core.TickCount; } } }