]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/arena.qc
Merge remote branch 'origin/terencehill/powerups_respawntime_fix'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / arena.qc
index 0262b89b896fa769f541b4e3620bb8cb1fc9e6df..ef81fd92bad7db138edb2fa1e1067d252bae875b 100644 (file)
@@ -47,7 +47,7 @@ void reset_map(float dorespawn)
        race_ReadyRestart();
 
        for(self = world; (self = nextent(self)); )
-       if(clienttype(self) == CLIENTTYPE_NOTACLIENT && self.items != IT_STRENGTH && self.items != IT_INVINCIBLE) // don't respawn strength or shield, that will only lead to them spawning very early each match
+       if(clienttype(self) == CLIENTTYPE_NOTACLIENT)
        {
                if(self.reset)
                {
@@ -197,6 +197,12 @@ void Arena_Warmup()
 
        if(gameover)
        {
+               if(warmup && time < warmup)
+               {
+                       FOR_EACH_REALCLIENT(e)
+                               Send_CSQC_Centerprint_Generic_Expire(e, CPID_ROUND_STARTING);
+                       warmup = 0;
+               }
                if(champion && g_arena)
                {
                        FOR_EACH_REALCLIENT(e)
@@ -250,10 +256,7 @@ void Arena_Warmup()
                        FOR_EACH_CLIENT(e)
                        {
                                if(e.spawned && e.classname == "player")
-                                       e.movetype = MOVETYPE_NONE;
-                               e.velocity = '0 0 0';
-                               e.avelocity = '0 0 0';
-                               e.movement = '0 0 0';
+                                       e.player_blocked = 1;
                        }
                }
        }
@@ -272,10 +275,10 @@ void Arena_Warmup()
                }
 
                if(g_arena) {
-                       FOR_EACH_PLAYER(e)
+                       FOR_EACH_CLIENT(e)
                        {
-                               if(e.health > 0 && e.movetype == MOVETYPE_NONE)
-                                       e.movetype = MOVETYPE_WALK;
+                               if(e.player_blocked)
+                                       e.player_blocked = 0;
                        }
                }
        }
@@ -379,7 +382,7 @@ void count_alive_players()
  */
 void Spawnqueue_Check()
 {
-       if(warmup == 0 && g_ca)
+       if(warmup == 0 && g_ca && !inWarmupStage)
        {
                if(red_players || blue_players)
                        reset_map(TRUE);