public override void StartGame() { CTFArena arena = ActiveArena as CTFArena; foreach (var player in Players) { if (RedTeam.Count < BlueTeam.Count) { RedTeam.Add(player); player.SetGamemodeSpawnPoint(arena.RedSpawn); player.SetTeam(1); } else { BlueTeam.Add(player); player.SetGamemodeSpawnPoint(arena.BlueSpawn); player.SetTeam(3); } } }
public override void OnPlayerData(TerrariaPacket e) { CTFArena arena = ActiveArena as CTFArena; PlayerTeamArgs playerTeam = e as PlayerTeamArgs; if (playerTeam != null) { if (RedTeam.Contains(e.Player)) { e.Player.SetTeam(1); } else if (BlueTeam.Contains(e.Player)) { e.Player.SetTeam(3); } } PlayerUpdateArgs playerUpdate = e as PlayerUpdateArgs; if (playerUpdate != null) { // Picking up flags if (_redFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && BlueTeam.Contains(e.Player)) { _redFlagHolder = e.Player; SendMessageToAllPlayers($"{_redFlagHolder.Name} has picked up the red flag!", Color.OrangeRed); } else if (_blueFlagHolder == null && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && RedTeam.Contains(e.Player)) { _blueFlagHolder = e.Player; SendMessageToAllPlayers($"{_blueFlagHolder.Name} has picked up the blue flag!", Color.Turquoise); } // Placing flags at base flag if (_redFlagHolder != null && _redFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.BlueFlag) < 2 * 16 && BlueTeam.Contains(e.Player) && !e.Player.TPlayer.dead) { SendMessageToAllPlayers($"{_redFlagHolder.Name} has scored for the blue team!", Color.Turquoise); _redFlagHolder = null; _blueScore += 1; SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan); } else if (_blueFlagHolder != null && _blueFlagHolder == e.Player && Vector2.Distance(new Vector2(playerUpdate.PositionX, playerUpdate.PositionY), arena.RedFlag) < 2 * 16 && RedTeam.Contains(e.Player) && !e.Player.TPlayer.dead) { SendMessageToAllPlayers($"{_blueFlagHolder.Name} has scored for the red team!", Color.OrangeRed); _blueFlagHolder = null; _redScore += 1; SendMessageToAllPlayers($"Score: {_scoreText}", Color.Cyan); } } PlayerDeathArgs playerDeath = e as PlayerDeathArgs; if (playerDeath != null) { if (e.Player == _redFlagHolder) { _redFlagHolder = null; SendMessageToAllPlayers($"{e.Player.Name} has dropped the red flag!", Color.OrangeRed); } if (e.Player == _blueFlagHolder) { _blueFlagHolder = null; SendMessageToAllPlayers($"{e.Player.Name} has dropped the blue flag!", Color.Turquoise); } } }