示例#1
0
        /// <summary>
        /// Will resend update packet of the given object
        /// </summary>
        public void InvalidateKnowledgeOf(WorldObject obj)
        {
            KnownObjects.Remove(obj);
            NearbyObjects.Remove(obj);

            obj.SendDestroyToPlayer(this);
        }
示例#2
0
		/// <summary>
		/// Is called whenever an object leaves this Character's sight
		/// </summary>
		public void OnOutOfRange(WorldObject obj)
		{
			obj.AreaCharCount--;
			if (obj is Character && m_observers != null)
			{
				if (m_observers.Remove((Character)obj))
				{
					// Character was observing: Now destroy items for him
					for (var i = (InventorySlot)0; i < InventorySlot.Bag1; i++)
					{
						var item = m_inventory[i];
						if (item != null)
						{
							item.SendDestroyToPlayer((Character)obj);
						}
					}
				}
			}

			if (obj == DuelOpponent && !Duel.IsActive)
			{
				// opponent vanished before Duel started: Cancel duel
				Duel.Dispose();
			}

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

				// send the destroy packet
				obj.SendDestroyToPlayer(this);
			}
		}
示例#3
0
		/// <summary>
		/// Will resend update packet of the given object
		/// </summary>
		public void InvalidateKnowledgeOf(WorldObject obj)
		{
			KnownObjects.Remove(obj);
			NearbyObjects.Remove(obj);

			obj.SendDestroyToPlayer(this);
		}