public void ResetState() { Status = ZombieGameStatus.NotStarted; MaxRounds = 0; RoundInProgress = false; RoundStart = DateTime.MinValue; RoundEnd = DateTime.MinValue; Player[] online = PlayerInfo.Online.Items; Alive.Clear(); Infected.Clear(); Lottery.Clear(); Bounties.Clear(); RecentMaps.Clear(); foreach (Player pl in online) { pl.Game.Referee = false; pl.Game.RatedMap = false; pl.Game.ResetZombieState(); ResetInvisibility(pl); pl.SetPrefix(); if (pl.level == null || !pl.level.name.CaselessEq(CurLevelName)) { continue; } HUD.Reset(pl); } LastLevelName = ""; CurLevelName = ""; CurLevel = null; }
void DoRound() { if (!Running) { return; } List <Player> players = DoRoundCountdown(); if (players == null) { return; } Random random = new Random(); RoundInProgress = true; int roundMins = random.Next(CurLevel.MinRoundTime, CurLevel.MaxRoundTime); string suffix = roundMins == 1 ? " %Sminute!" : " %Sminutes!"; CurLevel.ChatLevel("This round will last for &a" + roundMins + suffix); RoundEnd = DateTime.UtcNow.AddMinutes(roundMins); Player[] online = PlayerInfo.Online.Items; foreach (Player p in online) { if (p.level == null || p.level != CurLevel || p.Game.Referee) { continue; } Alive.Add(p); } Infected.Clear(); Player first = PickFirstZombie(random, players); CurLevel.ChatLevel("&c" + first.DisplayName + " %Sstarted the infection!"); InfectPlayer(first, null); DoCoreGame(random); if (!Running) { Status = ZombieGameStatus.LastRound; return; } EndRound(); if (RecentMaps.Count > 20) { RecentMaps.RemoveAt(0); } RecentMaps.Add(CurLevelName); }