From 90e67323ec52519e8f630d373b515fb409c226bc Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 28 Mar 2016 16:00:07 +1100 Subject: [PATCH] Better handling of referee players in zombie survival. --- Commands/Fun/ZombieSurvival/CmdReferee.cs | 25 ++++++----------------- Games/ZombieSurvival/ZombieGame.Core.cs | 2 +- Games/ZombieSurvival/ZombieGame.cs | 9 ++++---- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/Commands/Fun/ZombieSurvival/CmdReferee.cs b/Commands/Fun/ZombieSurvival/CmdReferee.cs index 16eb0363f..d61f0620c 100644 --- a/Commands/Fun/ZombieSurvival/CmdReferee.cs +++ b/Commands/Fun/ZombieSurvival/CmdReferee.cs @@ -31,29 +31,16 @@ namespace MCGalaxy.Commands { public override void Use(Player p, string message) { if (p == null) { MessageInGameOnly(p); return; } if (p.referee) { - p.referee = false; - LevelPermission perm = Group.findPlayerGroup(name).Permission; Player.SendChatFrom(p, p.FullName + " %Sis no longer a referee", false); - - if (Server.zombie.RoundInProgress) { - Server.zombie.InfectPlayer(p); - } else { - Player.GlobalDespawn(p, false); - Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], false); - Server.zombie.Infected.Remove(p); - Server.zombie.Alive.Add(p); - Server.zombie.UpdateAllPlayerStatus(); - } + if (p.level == Server.zombie.CurLevel) + Server.zombie.PlayerJoinedLevel(p, Server.zombie.CurLevel, Server.zombie.CurLevel); + Player.GlobalSpawn(p, p.pos[0], p.pos[1], p.pos[2], p.rot[0], p.rot[1], true, ""); } else { - p.referee = true; - Player.SendChatFrom(p, p.FullName + " %Sis now a referee", false); + Player.SendChatFrom(p, p.FullName + " %Sis now a referee", false); + Server.zombie.PlayerLeftServer(p); Player.GlobalDespawn(p, false); - Server.zombie.Alive.Remove(p); - Server.zombie.Infected.Remove(p); - Server.zombie.UpdateAllPlayerStatus(); - if (Server.zombie.RoundInProgress) - Server.zombie.AssignFirstZombie(); } + p.referee = !p.referee; } public override void Help(Player p) { diff --git a/Games/ZombieSurvival/ZombieGame.Core.cs b/Games/ZombieSurvival/ZombieGame.Core.cs index 66531e943..e8590062f 100644 --- a/Games/ZombieSurvival/ZombieGame.Core.cs +++ b/Games/ZombieSurvival/ZombieGame.Core.cs @@ -83,7 +83,7 @@ namespace MCGalaxy.Games { Player[] online = PlayerInfo.Online.Items; foreach (Player p in online) { - if (p.level == null || p.level != CurLevel) continue; + if (p.level == null || p.level != CurLevel || p.referee) continue; if (p != first) Alive.Add(p); } diff --git a/Games/ZombieSurvival/ZombieGame.cs b/Games/ZombieSurvival/ZombieGame.cs index 8ac248973..3cf136a04 100644 --- a/Games/ZombieSurvival/ZombieGame.cs +++ b/Games/ZombieSurvival/ZombieGame.cs @@ -231,12 +231,11 @@ namespace MCGalaxy.Games { internal void UpdateAllPlayerStatus(string timespan) { string message = GetStatusMessage(timespan); - Player[] players = Alive.Items; - foreach (Player p in players) - p.SendCpeMessage(CpeMessageType.Status1, message, true); - players = Infected.Items; - foreach (Player p in players) + Player[] players = PlayerInfo.Online.Items; + foreach (Player p in players) { + if (p.level != CurLevel) continue; p.SendCpeMessage(CpeMessageType.Status1, message, true); + } } string GetStatusMessage(string timespan) {