protected virtual int EndCast(RegionTimer timer)
 {
     bool castWasSuccess = player.TempProperties.getProperty(NM_CAST_SUCCESS, false);
     player.TempProperties.removeProperty(IS_CASTING);
     GameEventMgr.RemoveHandler(player, GamePlayerEvent.Moving, new DOLEventHandler(CastInterrupted));
     GameEventMgr.RemoveHandler(player, GamePlayerEvent.AttackFinished, new DOLEventHandler(CastInterrupted));
     GameEventMgr.RemoveHandler(player, GamePlayerEvent.Dying, new DOLEventHandler(CastInterrupted));
     if (player.IsMezzed || player.IsStunned || player.IsSitting)
         return 0;
     if (!castWasSuccess)
         return 0;
     Statics.NegativeMaelstromBase nm = new Statics.NegativeMaelstromBase(dmgValue);
     nm.CreateStatic(player, player.GroundTarget, duration, 5, 350);
     DisableSkill(player);
     timer.Stop();
     timer = null;
     return 0;
 }