Beispiel #1
0
        protected void PlayerDied(DOLEvent e, object sender, EventArgs args)
        {
            DyingEventArgs arg = args as DyingEventArgs;

            if (arg == null)
            {
                return;
            }
            GameObject killer       = arg.Killer as GameObject;
            GamePlayer playerKiller = null;

            if (killer is GamePlayer)
            {
                playerKiller = killer as GamePlayer;
            }
            else if (killer is GameNPC && (killer as GameNPC).Brain != null && (killer as GameNPC).Brain is AI.Brain.IControlledBrain)
            {
                playerKiller = ((killer as GameNPC).Brain as AI.Brain.IControlledBrain).Owner as GamePlayer;
            }

            Stop();
            m_player.Guild.SendMessageToGuildMembers(m_player.Name + " has dropped the guild banner!", eChatType.CT_Guild, eChatLoc.CL_SystemWindow);

            gameItem = new WorldInventoryItem(m_item);
            var point = m_player.GetPointFromHeading(m_player.Heading, 30);

            gameItem.Position        = new Vector3(point, m_player.Position.Z);
            gameItem.Heading         = m_player.Heading;
            gameItem.CurrentRegionID = m_player.CurrentRegionID;
            gameItem.AddOwner(m_player);

            if (playerKiller != null)
            {
                // Guild banner can be picked up by anyone in the enemy group
                if (playerKiller.Group != null)
                {
                    foreach (GamePlayer player in playerKiller.Group.GetPlayersInTheGroup())
                    {
                        gameItem.AddOwner(player);
                    }
                }
                else
                {
                    gameItem.AddOwner(playerKiller);
                }
            }

            // Guild banner can be picked up by anyone in the dead players group
            if (m_player.Group != null)
            {
                foreach (GamePlayer player in m_player.Group.GetPlayersInTheGroup())
                {
                    gameItem.AddOwner(player);
                }
            }

            gameItem.StartPickupTimer(10);
            m_item.OnLose(m_player);
            gameItem.AddToWorld();
        }
Beispiel #2
0
        protected void PlayerDied(DOLEvent e, object sender, EventArgs args)
        {
            DyingEventArgs arg = args as DyingEventArgs;
            if (arg == null) return;
            GameObject killer = arg.Killer as GameObject;
			GamePlayer playerKiller = null;

			if (killer is GamePlayer)
			{
				playerKiller = killer as GamePlayer;
			}
			else if (killer is GameNPC && (killer as GameNPC).Brain != null && (killer as GameNPC).Brain is AI.Brain.IControlledBrain)
			{
				playerKiller = ((killer as GameNPC).Brain as AI.Brain.IControlledBrain).Owner as GamePlayer;
			}

			Stop();
			m_player.Guild.SendMessageToGuildMembers(m_player.Name + " has dropped the guild banner!", eChatType.CT_Guild, eChatLoc.CL_SystemWindow);

			gameItem = new WorldInventoryItem(m_item);
			Point2D point = m_player.GetPointFromHeading(m_player.Heading, 30);
            gameItem.X = point.X;
            gameItem.Y = point.Y;
            gameItem.Z = m_player.Z;
            gameItem.Heading = m_player.Heading;
            gameItem.CurrentRegionID = m_player.CurrentRegionID;
			gameItem.AddOwner(m_player);

			if (playerKiller != null)
			{
				// Guild banner can be picked up by anyone in the enemy group
				if (playerKiller.Group != null)
				{
					foreach (GamePlayer player in playerKiller.Group.GetPlayersInTheGroup())
					{
						gameItem.AddOwner(player);
					}
				}
				else
				{
					gameItem.AddOwner(playerKiller);
				}
			}

			// Guild banner can be picked up by anyone in the dead players group
			if (m_player.Group != null)
			{
				foreach (GamePlayer player in m_player.Group.GetPlayersInTheGroup())
				{
					gameItem.AddOwner(player);
				}
			}

            gameItem.StartPickupTimer(10);
			m_item.OnLose(m_player);
            gameItem.AddToWorld();
        }