/// <summary>
        /// 
        /// </summary>
        /// <param name="buff"></param>
        public void AddState(AbstractSpellBuff buff)
        {
            buff.CastInfos.SubEffect = EffectEnum.AddState;

            if (buff.Caster.Fight.State == FightStateEnum.STATE_FIGHTING)
            {
                switch (buff.CastInfos.EffectType)
                {
                    case EffectEnum.Stealth:

                        if (HasState(FighterStateEnum.STATE_STEALTH))
                            return;

                        m_fighter.Fight.Dispatch(WorldMessage.GAME_ACTION(EffectEnum.Stealth, m_fighter.Id, m_fighter.Id + "," + buff.Duration));

                        m_states.Add(FighterStateEnum.STATE_STEALTH, buff);

                        return;

                    default:

                        m_fighter.Fight.Dispatch(WorldMessage.GAME_ACTION(EffectEnum.AddState, m_fighter.Id, m_fighter.Id + "," + buff.CastInfos.Value3 + ",1"));

                        break;
                }

                if (HasState((FighterStateEnum)buff.CastInfos.Value3))
                    return;

                m_states.Add((FighterStateEnum)buff.CastInfos.Value3, buff);
            }
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="Buff"></param>
 public void AddBuff(AbstractSpellBuff Buff)
 {
     ActiveBuffs[Buff.ActiveType].Add(Buff);
     DecrementBuffs[Buff.DecrementType].Add(Buff);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="buff"></param>
        public void RemoveState(AbstractSpellBuff buff)
        {
            if (buff.Caster.Fight.State == FightStateEnum.STATE_FIGHTING)
            {
                switch (buff.CastInfos.EffectType)
                {
                    case EffectEnum.Stealth:

                        m_fighter.Fight.Dispatch(WorldMessage.GAME_ACTION(EffectEnum.Stealth, m_fighter.Id, m_fighter.Id.ToString()));
                        m_fighter.Fight.Dispatch(WorldMessage.GAME_ACTION(GameActionTypeEnum.MAP_TELEPORT, m_fighter.Id, m_fighter.Id + "," + m_fighter.Cell.Id));

                        m_states.Remove(FighterStateEnum.STATE_STEALTH);

                        return;

                    default:

                        m_fighter.Fight.Dispatch(WorldMessage.GAME_ACTION(EffectEnum.AddState, m_fighter.Id, m_fighter.Id + "," + buff.CastInfos.Value3 + ",0"));

                        break;
                }
            }

            m_states.Remove((FighterStateEnum)buff.CastInfos.Value3);
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="buff"></param>
 public void RemoveBuff(AbstractSpellBuff buff)
 {
     ActiveBuffs[buff.ActiveType].Remove(buff);
     DecrementBuffs[buff.DecrementType].Remove(buff);
 }