From: z411 Date: Fri, 12 Jun 2020 23:51:43 +0000 (-0400) Subject: Added lead announcer X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=209ee162b33897038fd1b7bc7af8e932ad6670f5;p=xonotic%2Fxonotic-data.pk3dir.git Added lead announcer --- diff --git a/qcsrc/common/notifications/all.inc b/qcsrc/common/notifications/all.inc index beb05d959..42feaea81 100644 --- a/qcsrc/common/notifications/all.inc +++ b/qcsrc/common/notifications/all.inc @@ -208,6 +208,10 @@ MSG_ANNCE_NOTIF(VOTE_ACCEPT, N__ALWAYS, "voteaccept", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) MSG_ANNCE_NOTIF(VOTE_CALL, N__ALWAYS, "votecall", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) MSG_ANNCE_NOTIF(VOTE_FAIL, N__ALWAYS, "votefail", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) + + MSG_ANNCE_NOTIF(LEAD_GAINED, N__ALWAYS, "leadgained", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) + MSG_ANNCE_NOTIF(LEAD_LOST, N__ALWAYS, "leadlost", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) + MSG_ANNCE_NOTIF(LEAD_TIED, N__ALWAYS, "leadtied", CH_INFO, VOL_BASEVOICE, ATTEN_NONE) #undef N___NEVER #undef N_GNTLOFF diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index a7b071fcd..32b2f3350 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -1778,7 +1778,24 @@ float WinningCondition_Scores(float limit, float leadlimit) fragsleft_last = fragsleft; } } - + + // z411 + if (WinningConditionHelper_winner != WinningConditionHelper_winner_last && (WinningConditionHelper_second || WinningConditionHelper_equality)) + { + if (WinningConditionHelper_equality) + { + Send_Notification(NOTIF_ONE, WinningConditionHelper_equality_one, MSG_ANNCE, ANNCE_LEAD_TIED); + Send_Notification(NOTIF_ONE, WinningConditionHelper_equality_two, MSG_ANNCE, ANNCE_LEAD_TIED); + } + else + { + Send_Notification(NOTIF_ONE, WinningConditionHelper_winner, MSG_ANNCE, ANNCE_LEAD_GAINED); + Send_Notification(NOTIF_ONE, WinningConditionHelper_second, MSG_ANNCE, ANNCE_LEAD_LOST); + } + + WinningConditionHelper_winner_last = WinningConditionHelper_winner; + } + bool fraglimit_reached = (limit && WinningConditionHelper_topscore >= limit); bool leadlimit_reached = (leadlimit && WinningConditionHelper_topscore - WinningConditionHelper_secondscore >= leadlimit); diff --git a/qcsrc/server/scores.qc b/qcsrc/server/scores.qc index 12175bb76..d7e82164f 100644 --- a/qcsrc/server/scores.qc +++ b/qcsrc/server/scores.qc @@ -512,7 +512,15 @@ void WinningConditionHelper(entity this) WinningConditionHelper_equality = (PlayerScore_Compare(winnerscorekeeper, secondscorekeeper, 0) == 0); if(WinningConditionHelper_equality) + { + WinningConditionHelper_equality_one = WinningConditionHelper_winner; + WinningConditionHelper_equality_two = WinningConditionHelper_second; WinningConditionHelper_winner = WinningConditionHelper_second = NULL; + } + else + { + WinningConditionHelper_equality_one = WinningConditionHelper_equality_two = NULL; + } WinningConditionHelper_topscore = winnerscorekeeper.scores_primary; WinningConditionHelper_secondscore = secondscorekeeper.scores_primary; diff --git a/qcsrc/server/scores.qh b/qcsrc/server/scores.qh index ad4061966..a5eb2ec04 100644 --- a/qcsrc/server/scores.qh +++ b/qcsrc/server/scores.qh @@ -110,6 +110,9 @@ float WinningConditionHelper_secondteam; ///< the color of the second team, o float WinningConditionHelper_equality; ///< we have no winner entity WinningConditionHelper_winner; ///< the winning player, or NULL if none entity WinningConditionHelper_second; ///< the second player, or NULL if none +entity WinningConditionHelper_winner_last; +entity WinningConditionHelper_equality_one; +entity WinningConditionHelper_equality_two; float WinningConditionHelper_lowerisbetter; ///< lower is better, duh float WinningConditionHelper_zeroisworst; ///< zero is worst, duh #define WINNINGCONDITIONHELPER_LOWERISBETTER_WORST 999999999