From 6fd5fc9c6ce2123df4ec26a3700eb9b390b0ccbc Mon Sep 17 00:00:00 2001 From: terencehill Date: Thu, 21 Jul 2022 22:18:44 +0200 Subject: [PATCH] When the match is over notify that the vote in progress is canceled --- qcsrc/server/command/vote.qc | 32 +++++++++++++++++++++----------- qcsrc/server/command/vote.qh | 2 +- qcsrc/server/world.qc | 4 ++-- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index 6af0a28e4..5ee0ebfb3 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -124,8 +124,15 @@ string OriginalCallerName() // Game logic for voting // ======================= -void VoteReset() +void VoteStop(entity stopper, bool show_name); +void VoteReset(bool verbose) { + if (verbose && vote_called) + { + VoteStop(NULL, true); + return; + } + FOREACH_CLIENT(true, { it.vote_selection = 0; }); if (vote_called) @@ -145,13 +152,16 @@ void VoteReset() Nagger_VoteChanged(); } -void VoteStop(entity stopper) +void VoteStop(entity stopper, bool canceled) { - bprint("\{1}^2* ^3", GetCallerName(stopper), "^2 stopped ^3", OriginalCallerName(), "^2's vote\n"); + if (canceled) + bprint("\{1}^2* ^3", OriginalCallerName(), "^2's vote was canceled\n"); + else + bprint("\{1}^2* ^3", GetCallerName(stopper), "^2 stopped ^3", OriginalCallerName(), "^2's vote\n"); if (autocvar_sv_eventlog) GameLogEcho(strcat(":vote:vstop:", ftos(stopper.playerid))); // Don't force them to wait for next vote, this way they can e.g. correct their vote. if ((vote_caller) && (stopper == vote_caller)) vote_caller.vote_waittime = time + autocvar_sv_vote_stop; - VoteReset(); + VoteReset(false); } void VoteAccept() @@ -163,21 +173,21 @@ void VoteAccept() if (vote_caller) vote_caller.vote_waittime = 0; // people like your votes, you don't need to wait to vote again - VoteReset(); + VoteReset(false); Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_VOTE_ACCEPT); } void VoteReject() { bprint("\{1}^2* ^3", OriginalCallerName(), "^2's vote for ", vote_called_display, "^2 was rejected\n"); - VoteReset(); + VoteReset(false); Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_VOTE_FAIL); } void VoteTimeout() { bprint("\{1}^2* ^3", OriginalCallerName(), "^2's vote for ", vote_called_display, "^2 timed out\n"); - VoteReset(); + VoteReset(false); Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, ANNCE_VOTE_FAIL); } @@ -243,7 +253,7 @@ void VoteCount(float first_count) { if (vote_caller) vote_caller.vote_waittime = 0; print_to(vote_caller, "^1There are not enough players on this server to allow you to become vote master."); - VoteReset(); + VoteReset(false); return; } @@ -427,7 +437,7 @@ void ReadyRestart_force(bool is_fake_round_start) if (!is_fake_round_start && !autocvar_g_campaign) Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_COUNTDOWN_RESTART); - VoteReset(); + VoteReset(true); // clear overtime, we have to decrease timelimit to its original value again. if (checkrules_overtimesadded > 0 && g_race_qualifying != 2) @@ -1134,7 +1144,7 @@ void VoteCommand_no(int request, entity caller) // CLIENT ONLY } else if (((caller == vote_caller) || caller.vote_master) && autocvar_sv_vote_no_stops_vote) { - VoteStop(caller); + VoteStop(caller, true); } else // everything went okay, continue changing vote @@ -1188,7 +1198,7 @@ void VoteCommand_stop(int request, entity caller) // BOTH case CMD_REQUEST_COMMAND: { if (!vote_called) print_to(caller, "^1No vote called."); - else if ((caller == vote_caller) || !caller || caller.vote_master) VoteStop(caller); + else if ((caller == vote_caller) || !caller || caller.vote_master) VoteStop(caller, false); else print_to(caller, "^1You are not allowed to stop that vote."); return; } diff --git a/qcsrc/server/command/vote.qh b/qcsrc/server/command/vote.qh index 3e8aaa33f..3f555ed8d 100644 --- a/qcsrc/server/command/vote.qh +++ b/qcsrc/server/command/vote.qh @@ -56,7 +56,7 @@ string vote_parsed_display; // visual string which is fixed after being parsed // allow functions to be used in other code like world.qc and teamplay.qc void VoteThink(); -void VoteReset(); +void VoteReset(bool verbose); void VoteCommand(int request, entity caller, int argc, string vote_command); // warmup and nagger stuff diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index b3b31ff1b..56d293f98 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -687,7 +687,7 @@ void GameplayMode_DelayedInit(entity this) void InitGameplayMode() { - VoteReset(); + VoteReset(false); // find out good world mins/maxs bounds, either the static bounds found by looking for solid, or the mapinfo specified bounds get_mi_min_max(1); @@ -1337,7 +1337,7 @@ void NextLevel() //pos = FindIntermission (); - VoteReset(); + VoteReset(true); DumpStats(true); -- 2.39.2