]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/gamemode_freezetag.qc
Merge remote branch 'origin/fruitiex/gamemode_freezetag' into fruitiex/gamemode_freezetag
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / gamemode_freezetag.qc
index 1e034b9ff2c4e61e3f30cdf03e86c36caa03cdb5..28c408acecd35cf94cb0be85017e4fe63794f9e6 100644 (file)
@@ -1,12 +1,12 @@
 void freezetag_Initialize()
 {
        precache_model("models/ice/ice.md3");
-       next_round = time + 5;
+       warmup = time + cvar("g_freezetag_warmup");
 }
 
 void freezetag_CheckWinner()
 {
-       if(next_round)
+       if(next_round || (time > warmup - cvar("g_freezetag_warmup") && time < warmup))
                return; // already waiting for next round to start
 
        if((redalive >= 1 && bluealive >= 1) // counted in arena.qc
@@ -78,8 +78,6 @@ void freezetag_Freeze()
        if(self.waypointsprite_attached)
        {
                WaypointSprite_UpdateTeamRadar(self.waypointsprite_attached, RADARICON_WAYPOINT, '0.25 0.90 1');
-               //WaypointSprite_UpdateMaxHealth(self.waypointsprite_attached, ITEM_RESPAWN_TICKS + 1);
-               //WaypointSprite_UpdateBuildFinished(self.waypointsprite_attached, time + ITEM_RESPAWN_TICKS);
        }
 }
 
@@ -171,7 +169,8 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                        if(other.team == self.team)
                        {
                                teammate_nearby = boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, other.absmin, other.absmax);
-                               break;
+                               if(teammate_nearby)
+                                       break;
                        }
                }
        }
@@ -181,9 +180,13 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                if(self.freezetag_beginrevive_time == -9999)
                {
                        self.freezetag_beginrevive_time = time;
+                       self.freezetag_revive_progress = 0;
+                       other.freezetag_revive_progress = 0;
                }
                else
                {
+                       self.freezetag_revive_progress = (time - self.freezetag_beginrevive_time) / cvar("g_freezetag_revive_time");
+                       other.freezetag_revive_progress = (time - self.freezetag_beginrevive_time) / cvar("g_freezetag_revive_time");
                        if(time - self.freezetag_beginrevive_time >= cvar("g_freezetag_revive_time"))
                        {
                                freezetag_Unfreeze();
@@ -193,12 +196,16 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                                bprint("^7", other.netname, "^5 revived ^7", self.netname, ".\n");
 
                                self.freezetag_beginrevive_time = -9999;
+                               self.freezetag_revive_progress = 0;
+                               other.freezetag_revive_progress = 0;
                        }
                }
        }
        else
        {
                self.freezetag_beginrevive_time = -9999;
+               self.freezetag_revive_progress = 0;
+               other.freezetag_revive_progress = 0;
        }
 
        return 1;