From 8952a4d56bd5f9e519d736d8a782238683e3b6d7 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 17 Sep 2023 20:47:58 -0700 Subject: [PATCH] don't allow toggling spectator flag in a spectator team --- src/ChatCommands.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ChatCommands.cc b/src/ChatCommands.cc index 80ed9529..37245970 100644 --- a/src/ChatCommands.cc +++ b/src/ChatCommands.cc @@ -680,7 +680,7 @@ static void server_command_password(shared_ptr, shared_ptr l } } -static void server_command_spec(shared_ptr, shared_ptr l, +static void server_command_toggle_spectator_flag(shared_ptr, shared_ptr l, shared_ptr c, const std::u16string&) { check_is_game(l, true); check_is_leader(l, c); @@ -689,6 +689,10 @@ static void server_command_spec(shared_ptr, shared_ptr l, throw logic_error("Episode 3 client in non-Episode 3 game"); } + if (l->flags & Lobby::Flag::IS_SPECTATOR_TEAM) { + send_text_message(c, u"$C6This command cannot\nbe used in a spectator\nteam"); + } + if (l->flags & Lobby::Flag::SPECTATORS_FORBIDDEN) { l->flags &= ~Lobby::Flag::SPECTATORS_FORBIDDEN; send_text_message(l, u"$C6Spectators allowed"); @@ -1373,7 +1377,7 @@ static const unordered_map chat_commands({ {u"$secid", {server_command_secid, proxy_command_secid}}, {u"$silence", {server_command_silence, nullptr}}, {u"$song", {server_command_song, proxy_command_song}}, - {u"$spec", {server_command_spec, nullptr}}, + {u"$spec", {server_command_toggle_spectator_flag, nullptr}}, {u"$ss", {nullptr, proxy_command_send_server}}, {u"$surrender", {server_command_surrender, nullptr}}, {u"$swa", {server_command_switch_assist, proxy_command_switch_assist}},