Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
                }
            }
        }