]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Added lead announcer
authorz411 <z411@omaera.org>
Fri, 12 Jun 2020 23:51:43 +0000 (19:51 -0400)
committerz411 <z411@omaera.org>
Fri, 12 Jun 2020 23:51:43 +0000 (19:51 -0400)
qcsrc/common/notifications/all.inc
qcsrc/server/g_world.qc
qcsrc/server/scores.qc
qcsrc/server/scores.qh

index beb05d959a44d3a1b4dbe403ddae0032a06c8af7..42feaea8190aac6a137b02ac038c91bf40c3c735 100644 (file)
     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
index a7b071fcdb7416f55aa08ca9d65365e30224a18e..32b2f3350dafb1be9b3272e5fe2c0f164ba785bf 100644 (file)
@@ -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);
 
index 12175bb764f036435c1f745c0ac2ddc12fe74777..d7e82164fcc42e6fedb2061a33c741f350be712a 100644 (file)
@@ -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;
index ad406196635a55b1ecf60667d653eba8a21c27bc..a5eb2ec04b09cdbb87b47177702d05c09e91f79d 100644 (file)
@@ -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