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