From: z411 <z411@omaera.org>
Date: Mon, 7 Sep 2020 05:10:02 +0000 (-0300)
Subject: Fixed Freeze Tag non-respawn behavior (weapons/ammo)
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=015b17d7bac0141a7f961f1cd5e7a54c0acff104;p=xonotic%2Fxonotic-data.pk3dir.git

Fixed Freeze Tag non-respawn behavior (weapons/ammo)
---

diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc
index 02a34c8006..82bf8f682e 100644
--- a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc
+++ b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc
@@ -446,6 +446,8 @@ MUTATOR_HOOKFUNCTION(ft, reset_map_players)
 		if(autocvar_g_freezetag_round_respawn) {
 			it.freezetag_frozen_timeout = -1;
 			PutClientInServer(it);
+		} else {
+			ResetPlayerResources(it);
 		}
 		
 		it.freezetag_frozen_timeout = 0;
diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc
index e4a6e72a6e..d1ac2b8ddb 100644
--- a/qcsrc/server/client.qc
+++ b/qcsrc/server/client.qc
@@ -532,6 +532,36 @@ void FixPlayermodel(entity player)
 				setcolor(player, stof(autocvar_sv_defaultplayercolors));
 }
 
+void ResetPlayerResources(entity this)
+{
+	if (warmup_stage) {
+		SetResource(this, RES_SHELLS, warmup_start_ammo_shells);
+		SetResource(this, RES_BULLETS, warmup_start_ammo_nails);
+		SetResource(this, RES_ROCKETS, warmup_start_ammo_rockets);
+		SetResource(this, RES_CELLS, warmup_start_ammo_cells);
+		SetResource(this, RES_PLASMA, warmup_start_ammo_plasma);
+		SetResource(this, RES_FUEL, warmup_start_ammo_fuel);
+		SetResource(this, RES_HEALTH, warmup_start_health);
+		SetResource(this, RES_ARMOR, warmup_start_armorvalue);
+		STAT(WEAPONS, this) = WARMUP_START_WEAPONS;
+	} else {
+		SetResource(this, RES_SHELLS, start_ammo_shells);
+		SetResource(this, RES_BULLETS, start_ammo_nails);
+		SetResource(this, RES_ROCKETS, start_ammo_rockets);
+		SetResource(this, RES_CELLS, start_ammo_cells);
+		SetResource(this, RES_PLASMA, start_ammo_plasma);
+		SetResource(this, RES_FUEL, start_ammo_fuel);
+		SetResource(this, RES_HEALTH, start_health);
+		SetResource(this, RES_ARMOR, start_armorvalue);
+		STAT(WEAPONS, this) = start_weapons;
+		if (MUTATOR_CALLHOOK(ForbidRandomStartWeapons, this) == false)
+		{
+			GiveRandomWeapons(this, random_start_weapons_count,
+				autocvar_g_random_start_weapons, random_start_ammo);
+		}
+	}
+}
+
 void PutPlayerInServer(entity this)
 {
 	if (this.vehicle) vehicles_exit(this.vehicle, VHEF_RELEASE);
@@ -571,32 +601,8 @@ void PutPlayerInServer(entity this)
 	this.takedamage = DAMAGE_AIM;
 	this.effects = EF_TELEPORT_BIT | EF_RESTARTANIM_BIT;
 
-	if (warmup_stage) {
-		SetResource(this, RES_SHELLS, warmup_start_ammo_shells);
-		SetResource(this, RES_BULLETS, warmup_start_ammo_nails);
-		SetResource(this, RES_ROCKETS, warmup_start_ammo_rockets);
-		SetResource(this, RES_CELLS, warmup_start_ammo_cells);
-		SetResource(this, RES_PLASMA, warmup_start_ammo_plasma);
-		SetResource(this, RES_FUEL, warmup_start_ammo_fuel);
-		SetResource(this, RES_HEALTH, warmup_start_health);
-		SetResource(this, RES_ARMOR, warmup_start_armorvalue);
-		STAT(WEAPONS, this) = WARMUP_START_WEAPONS;
-	} else {
-		SetResource(this, RES_SHELLS, start_ammo_shells);
-		SetResource(this, RES_BULLETS, start_ammo_nails);
-		SetResource(this, RES_ROCKETS, start_ammo_rockets);
-		SetResource(this, RES_CELLS, start_ammo_cells);
-		SetResource(this, RES_PLASMA, start_ammo_plasma);
-		SetResource(this, RES_FUEL, start_ammo_fuel);
-		SetResource(this, RES_HEALTH, start_health);
-		SetResource(this, RES_ARMOR, start_armorvalue);
-		STAT(WEAPONS, this) = start_weapons;
-		if (MUTATOR_CALLHOOK(ForbidRandomStartWeapons, this) == false)
-		{
-			GiveRandomWeapons(this, random_start_weapons_count,
-				autocvar_g_random_start_weapons, random_start_ammo);
-		}
-	}
+	ResetPlayerResources(this);
+	
 	SetSpectatee_status(this, 0);
 
 	PS(this).dual_weapons = '0 0 0';