public bool playerPortal(Player player, LioInfo.Portal portal)
        {
            _arena.sendArenaMessage("Portal ID: " + portal.GeneralData.Id);

            Vector2 SpawnLocation =
                caverns.GetNextWarp(player._team._id, portal.GeneralData.Id);

            if (SpawnLocation != null)
            {
                //Just warp them there and ignore everything else
                //   player.warp(SpawnLocation.x, SpawnLocation.y);
                return(false);
            }

            List <Arena.FlagState> carried = _arena._flags.Values.Where(flag => flag.carrier == player).ToList();

            foreach (Arena.FlagState carry in carried)
            {   //If the terrain number is 0-15
                int terrainNum = player._arena.getTerrainID(player._state.positionX, player._state.positionY);
                if (terrainNum >= 0 && terrainNum <= 15)
                {   //Check the FlagDroppableTerrains for that specific terrain id
                    if (carry.flag.FlagData.FlagDroppableTerrains[terrainNum] == 0)
                    {
                        _arena.flagResetPlayer(player);
                    }
                }
            }

            return(true);
        }
Beispiel #2
0
        public bool playerPortal(Player player, LioInfo.Portal portal)
        {
            if (portal.GeneralData.Name.Contains("DS Portal"))
            {
                if ((!_arena._bGameRunning) && (bGameLocked))
                {
                    _playersReady[player._alias] = true;

                    player.sendMessage(0, "You have marked yourself ready for the next game! Game will start early when all other players ready up.");
                }
            }
            return(false);
        }
        public bool playerPortal(Player player, LioInfo.Portal portal)
        {
            if (portal.GeneralData.Name.Contains("DS Portal"))
            {
                Helpers.ObjectState flagPoint;
                Helpers.ObjectState warpPoint;

                flagPoint = _baseScript.findFlagWarp(player, true);

                if (flagPoint == null)
                {
                    Log.write(TLog.Normal, String.Format("Could not find suitable flag warp for {0}", player._alias));

                    if (!_baseScript._lastSpawn.ContainsKey(player._alias))
                    {
                        player.sendMessage(-1, "Could not find suitable warp, warped to landing ship!");
                        return(true);
                    }
                    else
                    {
                        warpPoint = _baseScript._lastSpawn[player._alias];
                    }
                }
                else
                {
                    warpPoint = _baseScript.findOpenWarp(player, _arena, flagPoint.positionX, 1744, _baseScript._playerWarpRadius);
                }

                if (warpPoint == null)
                {
                    Log.write(TLog.Normal, String.Format("Could not find open warp for {0} (Warp Blocked)", player._alias));
                    player.sendMessage(-1, "Warp was blocked, please try again");
                    return(false);
                }

                _baseScript.warp(player, warpPoint);

                if (_baseScript._lastSpawn.ContainsKey(player._alias))
                {
                    _baseScript._lastSpawn[player._alias] = warpPoint;
                }
                else
                {
                    _baseScript._lastSpawn.Add(player._alias, warpPoint);
                }
                return(false);
            }
            return(false);
        }
Beispiel #4
0
        public bool playerPortal(Player player, LioInfo.Portal portal)
        {
            List <Arena.FlagState> carried = _arena._flags.Values.Where(flag => flag.carrier == player).ToList();

            foreach (Arena.FlagState carry in carried)
            {   //If the terrain number is 0-15
                int terrainNum = player._arena.getTerrainID(player._state.positionX, player._state.positionY);
                if (terrainNum >= 0 && terrainNum <= 15)
                {   //Check the FlagDroppableTerrains for that specific terrain id
                    if (carry.flag.FlagData.FlagDroppableTerrains[terrainNum] == 0)
                    {
                        _arena.flagResetPlayer(player);
                    }
                }
            }

            return(true);
        }
Beispiel #5
0
 public bool playerPortal(Player player, LioInfo.Portal portal)
 {
     if (portal.GeneralData.Name.Contains("DS Portal"))
     {
         if (player._alias.ToLower() == _owner)
         {
             Vehicle command = _arena.Vehicles.FirstOrDefault(v => v._type.Id == 414);
             if (command != null)
             {
                 player.warp(Helpers.ResetFlags.ResetNone, command._state, 200, -1, 0);
             }
             else
             {
                 player.warp(12260, 7460);
             }
         }
         else
         {
             player.warp(12260, 7460);
         }
     }
     return(false);
 }
Beispiel #6
0
        /// <summary>
        /// Handles an portal warp request from a client
        /// </summary>
        static public void Handle_CS_PlayerPortal(CS_PlayerPortal pkt, Player player)
        {               //Allow the player's arena to handle it
            if (player._arena == null)
            {
                Log.write(TLog.Error, "Player {0} sent update packet with no arena.", player);
                return;
            }

            if (player.IsSpectator)
            {
                Log.write(TLog.Warning, "Player {0} attempted to use a portal from spec.", player);
                return;
            }

            if (player.IsDead)
            {
                Log.write(TLog.Warning, "Player {0} attempted to use a portal while dead.", player);
                return;
            }

            //Find the associated portal
            LioInfo.Portal portal = player._server._assets.getLioByID(pkt.portalID) as LioInfo.Portal;

            //If it doesn't exist, nevermind
            if (portal == null)
            {
                Log.write(TLog.Warning, "Player {0} attempted to use portal which doesn't exist.", player);
            }
            else
            {
                player._arena.handleEvent(delegate(Arena arena)
                {
                    player._arena.handlePlayerPortal(player, portal);
                }
                                          );
            }
        }
Beispiel #7
0
 /// <summary>
 /// Handles a player's portal request
 /// </summary>
 public virtual void handlePlayerPortal(Player from, LioInfo.Portal portal)
 {
 }
 public bool playerPortal(Player player, LioInfo.Portal portal)
 {
     return(true);
 }
Beispiel #9
0
        public bool playerPortal(Player player, LioInfo.Portal portal)
        {
            List <Arena.FlagState> carried = _arena._flags.Values.Where(flag => flag.carrier == player).ToList();

            foreach (Arena.FlagState carry in carried)
            {   //If the terrain number is 0-15
                int terrainNum = player._arena.getTerrainID(player._state.positionX, player._state.positionY);
                if (terrainNum >= 0 && terrainNum <= 15)
                {
                    //Check the FlagDroppableTerrains for that specific terrain id
                    //Carried flag resets to its original position if on default bad terrain (0)
                    if ((carry.flag.FlagData.FlagDroppableTerrains[terrainNum] == 0))
                    {
                        _arena.flagResetPlayer(player);
                    }
                }
            }

            //*************************************************//
            //              SCORING MECHANISM                  //
            //*************************************************//

            //TODO: Add mvp checking
            if (player._team == teamOne.arenaTeam &&                             //player is on team one
                portal == player._server._assets.getLioByID(teamOne.portalId) && //player is on team one's portal (his own)
                player == teamTwo.flag.carrier)                                  //player is carrying enemy's flag
            {
                //Let the arena know
                _arena.sendArenaMessage(teamOne.arenaTeam._name + " has captured a flag!", 0);

                //Add one point to the team
                teamOne.points++;

                //Update tickers
                updateTickers();

                //Reset the flag to the original position
                _arena.flagResetPlayer(player);
                return(false);
            }

            if (player._team == teamOne.arenaTeam &&                             //player is on team one
                portal == player._server._assets.getLioByID(teamOne.portalId) && //player is on team one's portal (his own)
                player == teamOne.flag.carrier)                                  //player is carrying his own TEAM'S flag
            {
                //Let arena know
                _arena.sendArenaMessage(player + " has returned a flag!", 0);

                //Reset the flag
                _arena.flagResetPlayer(player);
                return(false);
            }

            if (player._team == teamTwo.arenaTeam &&                             //player is on team two
                portal == player._server._assets.getLioByID(teamTwo.portalId) && //player is on team two's portal (his own)
                player == teamOne.flag.carrier)                                  //player is carrying enemy's flag
            {
                //Let arena know
                _arena.sendArenaMessage(teamTwo.arenaTeam._name + " has captured a flag!", 0);

                //Add one point to the team
                teamTwo.points++;

                //Update tickers
                updateTickers();

                //Reset the flag to the original position
                _arena.flagResetPlayer(player);
                return(false);
            }

            if (player._team == teamTwo.arenaTeam &&                             //player is on team two
                portal == player._server._assets.getLioByID(teamTwo.portalId) && //player is on team two's portal (his own)
                player == teamTwo.flag.carrier)                                  //player is carrying his own TEAM'S flag
            {
                //Let arena know
                _arena.sendArenaMessage(player + " has returned a flag!", 0);

                //Reset the flag
                _arena.flagResetPlayer(player);
                return(false);
            }

            return(true);
        }