From: terencehill <piuntn@gmail.com>
Date: Mon, 20 Feb 2023 18:09:12 +0000 (+0100)
Subject: Use a temp entity to avoid linking kh_controller to the world with setmodel
X-Git-Tag: xonotic-v0.8.6~165
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=fb8628779b7cacf7b14eb7a1611e9f5b0b476746;p=xonotic%2Fxonotic-data.pk3dir.git

Use a temp entity to avoid linking kh_controller to the world with setmodel
---

diff --git a/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc b/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc
index eaed75089..1553bf5b4 100644
--- a/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc
+++ b/qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc
@@ -979,27 +979,24 @@ void kh_Initialize()  // sets up th KH environment
 		kh_teams = cvar("g_keyhunt_teams"); // read the cvar directly as it gets written earlier in the same frame
 	kh_teams = BITS(bound(2, kh_teams, 4));
 
-	// make a KH entity for controlling the game
-	kh_controller = new_pure(kh_controller);
-	setthink(kh_controller, kh_Controller_Think);
-	kh_Controller_SetThink(0, kh_WaitForPlayers);
+	// use a temp entity to avoid linking kh_controller to the world with setmodel
+	entity tmp_ent = spawn();
+	setmodel(tmp_ent, MDL_KH_KEY);
+	kh_key_dropped = tmp_ent.modelindex;
 
-	setmodel(kh_controller, MDL_KH_KEY);
-	kh_key_dropped = kh_controller.modelindex;
-	/*
-	dprint(vtos(kh_controller.mins));
-	dprint(vtos(kh_controller.maxs));
-	dprint("\n");
-	*/
 #ifdef KH_PLAYER_USE_CARRIEDMODEL
-	setmodel(kh_controller, MDL_KH_KEY_CARRIED);
-	kh_key_carried = kh_controller.modelindex;
+	setmodel(tmp_ent, MDL_KH_KEY_CARRIED);
+	kh_key_carried = tmp_ent.modelindex;
 #else
 	kh_key_carried = kh_key_dropped;
 #endif
 
-	kh_controller.model = "";
-	kh_controller.modelindex = 0;
+	delete(tmp_ent);
+
+	// make a KH entity for controlling the game
+	kh_controller = new_pure(kh_controller);
+	setthink(kh_controller, kh_Controller_Think);
+	kh_Controller_SetThink(0, kh_WaitForPlayers);
 
 	kh_ScoreRules(kh_teams);
 }