// 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)
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()
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);
}
{
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;
}
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)
}
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
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;
}