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