]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/gamemodes/gamemode/keyhunt/sv_keyhunt.qc
Fix area grid linking/unlinking of triggers and gametype ents in DP master
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / keyhunt / sv_keyhunt.qc
index 1553bf5b4bc90f5f1319ae98a24519cac7108733..8396c1e619d0f80c1fca39db7197f224fbee26db 100644 (file)
@@ -215,6 +215,7 @@ vector kh_AttachedOrigin(entity e)  // runs when a team captures the flag, it ca
 
 void kh_Key_Attach(entity key)  // runs when a player picks up a key and several times when a key is assigned to a player at the start of a round
 {
+       key.solid = SOLID_NOT; // before setorigin to prevent area grid linking
 #ifdef KH_PLAYER_USE_ATTACHMENT
        entity first = key.owner.kh_next;
        if(key == first)
@@ -248,7 +249,6 @@ void kh_Key_Attach(entity key)  // runs when a player picks up a key and several
        key.flags = 0;
        if(IL_CONTAINS(g_items, key))
                IL_REMOVE(g_items, key);
-       key.solid = SOLID_NOT;
        set_movetype(key, MOVETYPE_NONE);
        key.team = key.owner.team;
        key.nextthink = time;
@@ -260,6 +260,7 @@ void kh_Key_Attach(entity key)  // runs when a player picks up a key and several
 
 void kh_Key_Detach(entity key) // runs every time a key is dropped or lost. Runs several times times when all the keys are captured
 {
+       key.solid = SOLID_TRIGGER; // before setorigin to ensure area grid linking
 #ifdef KH_PLAYER_USE_ATTACHMENT
        entity first = key.owner.kh_next;
        if(key == first)
@@ -289,7 +290,6 @@ void kh_Key_Detach(entity key) // runs every time a key is dropped or lost. Runs
        key.flags = FL_ITEM;
        if(!IL_CONTAINS(g_items, key))
                IL_PUSH(g_items, key);
-       key.solid = SOLID_TRIGGER;
        set_movetype(key, MOVETYPE_TOSS);
        key.pain_finished = time + autocvar_g_balance_keyhunt_delay_return;
        key.damageforcescale = autocvar_g_balance_keyhunt_damageforcescale;