예제 #1
0
        /// <summary>
        /// Is called whenever an object leaves this Character's sight
        /// </summary>
        public void OnOutOfRange(WorldObject obj)
        {
            obj.AreaCharCount--;
            if (obj == Asda2DuelingOponent)
            {
                if (Asda2Duel != null)
                {
                    Asda2Duel.StopPvp();
                }
            }
            if (obj == m_target)
            {
                // unset current Target
                ClearTarget();
            }

            if (obj == m_activePet)
            {
                ActivePet = null;
            }

            if (GossipConversation != null && obj == GossipConversation.Speaker && GossipConversation.Character == this)
            {
                // stop conversation with a vanished object
                GossipConversation.Dispose();
            }

            if (!(obj is Transport))
            {
                KnownObjects.Remove(obj);
            }
            var chr = obj as Character;

            if (chr != null)
            {
                if (EnemyCharacters.Contains(chr))
                {
                    EnemyCharacters.Remove(chr);
                    CheckEnemysCount();
                }
                GlobalHandler.SendCharacterDeleteResponse(chr, Client);
            }
            else
            {
                var loot = obj as Asda2Loot;
                if (loot != null)
                {
                    GlobalHandler.SendRemoveLootResponse(this, loot);
                }
            }
        }