/// <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); } } }