]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/gamemode_freezetag.qc
#include this
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / gamemode_freezetag.qc
index 9034887d82712e61b1144d312a424ea5812694b9..d6285cdafd112509b99e8c9ffcacd6b0430e3abe 100644 (file)
@@ -1,10 +1,17 @@
 .float freezetag_frozen_time;
 .float freezetag_frozen_timeout;
-.float freezetag_revive_progress;
-#define ICE_MAX_ALPHA 1
-#define ICE_MIN_ALPHA 0.1
+const float ICE_MAX_ALPHA = 1;
+const float ICE_MIN_ALPHA = 0.1;
 float freezetag_teams;
 
+const float SP_FREEZETAG_REVIVALS = 4;
+void freezetag_ScoreRules(float teams)
+{
+       ScoreRules_basics(teams, SFL_SORT_PRIO_PRIMARY, SFL_SORT_PRIO_PRIMARY, true); // SFL_SORT_PRIO_PRIMARY
+       ScoreInfo_SetLabel_PlayerScore(SP_FREEZETAG_REVIVALS, "revivals", 0);
+       ScoreRules_basics_end();
+}
+
 void freezetag_count_alive_players()
 {
        entity e;
@@ -32,9 +39,9 @@ void freezetag_count_alive_players()
 #define FREEZETAG_ALIVE_TEAMS() ((redalive > 0) + (bluealive > 0) + (yellowalive > 0) + (pinkalive > 0))
 #define FREEZETAG_ALIVE_TEAMS_OK() (FREEZETAG_ALIVE_TEAMS() == freezetag_teams)
 
-float prev_missing_teams_mask;
 float freezetag_CheckTeams()
 {
+       static float prev_missing_teams_mask;
        if(FREEZETAG_ALIVE_TEAMS_OK())
        {
                if(prev_missing_teams_mask > 0)
@@ -181,7 +188,7 @@ void freezetag_Freeze(entity attacker)
        if(autocvar_g_freezetag_frozen_maxtime > 0)
                self.freezetag_frozen_timeout = time + autocvar_g_freezetag_frozen_maxtime;
 
-       Freeze(self, 0, 1, TRUE);
+       Freeze(self, 0, 1, true);
 
        freezetag_count_alive_players();
 
@@ -198,9 +205,9 @@ void freezetag_Unfreeze(entity attacker)
 
 float freezetag_isEliminated(entity e)
 {
-       if(e.frozen == 1 || e.deadflag != DEAD_NO)
-               return TRUE;
-       return FALSE;
+       if(IS_PLAYER(e) && (e.frozen == 1 || e.deadflag != DEAD_NO))
+               return true;
+       return false;
 }
 
 
@@ -458,7 +465,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                        if(!o)
                                o = other;
                        if(self.frozen == 1)
-                               other.reviving = TRUE;
+                               other.reviving = true;
                        ++n;
                }
        }
@@ -502,7 +509,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                        if(other.reviving)
                        {
                                other.revive_progress = self.revive_progress;
-                               other.reviving = FALSE;
+                               other.reviving = false;
                        }
                }
        }
@@ -529,7 +536,7 @@ MUTATOR_HOOKFUNCTION(freezetag_BotRoles)
                        self.havocbot_role = havocbot_role_ft_offense;
        }
 
-       return TRUE;
+       return true;
 }
 
 MUTATOR_HOOKFUNCTION(freezetag_GetTeamCount)
@@ -544,7 +551,7 @@ void freezetag_Initialize()
        if(freezetag_teams < 2)
                freezetag_teams = autocvar_g_freezetag_teams;
        freezetag_teams = bound(2, freezetag_teams, 4);
-       ScoreRules_freezetag(freezetag_teams);
+       freezetag_ScoreRules(freezetag_teams);
 
        round_handler_Spawn(freezetag_CheckTeams, freezetag_CheckWinner, func_null);
        round_handler_Init(5, autocvar_g_freezetag_warmup, autocvar_g_freezetag_round_timelimit);