public static void ServerEvents_RespawningTeam(Exiled.Events.EventArgs.RespawningTeamEventArgs ev)
        {
            // Default game logic
            var spawningPlayers      = ev.Players;
            var spawningPlayersCount = spawningPlayers.Count;

            if (spawningPlayersCount == 0)
            {
                return;
            }

            FilterSpawns(ev.NextKnownTeam == SpawnableTeamType.ChaosInsurgency
                                ? RoleType.ChaosInsurgency
                                : RoleType.NtfCadet,
                         spawningPlayersCount);
        }
Exemple #2
0
        private void Server_RespawningTeam(Exiled.Events.EventArgs.RespawningTeamEventArgs ev)
        {
            if (!_useZombies || UnityEngine.Random.Range(0, 101) > Config.PercentChanceToSpawnZombies || ev.Players.Count == 0)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(Config.ZombieAnnounceMessage))
            {
                Cassie.Message(Config.ZombieAnnounceMessage);
            }

            LoadedZombieSpawns.UnityShuffle();

            var index             = 0;
            var loadedSpawnsCount = LoadedZombieSpawns.Count;

            var spawns     = ev.Players;
            var spawnCount = spawns.Count;

            for (int i = 0; i < spawnCount; i++)
            {
                var spawn = spawns[i];

                spawn.SetRole(RoleType.Scp0492);

                var spawnPosition = LoadedZombieSpawns[index].Position;
                Timing.CallDelayed(0.3f, () => spawn.Position = spawnPosition);

                index++;
                if (index == loadedSpawnsCount)
                {
                    index = 0;
                }
            }

            spawns.Clear();
        }