protected override void OnTick()
{
if (m_Spell == null || m_Spell.m_Caster == null)
{
return;
}
else if (m_Spell.m_State == SpellState.Casting && m_Spell.m_Caster.Spell == m_Spell)
{
m_Spell.m_State = SpellState.Sequencing;
m_Spell.m_CastTimer = null;
m_Spell.m_Caster.OnSpellCast(m_Spell);
if (m_Spell.m_Caster.Region != null)
{
m_Spell.m_Caster.Region.OnSpellCast(m_Spell.m_Caster, m_Spell);
}
m_Spell.m_Caster.NextSpellTime = DateTime.UtcNow + m_Spell.GetCastRecovery(); // Spell.NextSpellDelay;
if (m_Spell.PlayerCaster != null && !(m_Spell is PaladinSpell) && !(m_Spell is NecromancerSpell))
{
int mana = m_Spell.ScaleMana(m_Spell.GetMana());
if (m_Spell.m_Caster.Mana < mana)
{
m_Spell.m_Caster.LocalOverheadMessage(MessageType.Regular, 0x22, 502625); // Insufficient mana for this spell.
m_Spell.DoFizzle();
return;
}
m_Spell.OnPlayerCast();
}
else
{
Target originalTarget = m_Spell.m_Caster.Target;
m_Spell.OnCast();
if (m_Spell.m_Caster.Player && m_Spell.m_Caster.Target != originalTarget && m_Spell.Caster.Target != null)
{
m_Spell.m_Caster.Target.BeginTimeout(m_Spell.m_Caster, TimeSpan.FromSeconds(30.0));
}
m_Spell.m_CastTimer = null;
}
}
}