]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator_spawn_near_teammate.qc
Hook: merge offhand and weapon behaviour
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator_spawn_near_teammate.qc
index c3ab07a72635271dec43b04e0a87e1982361d8a6..e3178b338874f9892eb174afdffa6800e2c3c8a7 100644 (file)
@@ -7,9 +7,11 @@
 .float msnt_timer;
 .vector msnt_deathloc;
 
+.float cvar_cl_spawn_near_teammate;
+
 MUTATOR_HOOKFUNCTION(msnt_Spawn_Score)
-{
-       if(autocvar_g_spawn_near_teammate_ignore_spawnpoint)
+{SELFPARAM();
+       if(autocvar_g_spawn_near_teammate_ignore_spawnpoint == 1 || (autocvar_g_spawn_near_teammate_ignore_spawnpoint == 2 && self.cvar_cl_spawn_near_teammate))
                return 0;
 
        entity p;
@@ -44,9 +46,9 @@ MUTATOR_HOOKFUNCTION(msnt_Spawn_Score)
 }
 
 MUTATOR_HOOKFUNCTION(msnt_PlayerSpawn)
-{
+{SELFPARAM();
        // Note: when entering this, fixangle is already set.
-       if(autocvar_g_spawn_near_teammate_ignore_spawnpoint)
+       if(autocvar_g_spawn_near_teammate_ignore_spawnpoint == 1 || (autocvar_g_spawn_near_teammate_ignore_spawnpoint == 2 && self.cvar_cl_spawn_near_teammate))
        {
                if(autocvar_g_spawn_near_teammate_ignore_spawnpoint_delay_death)
                        self.msnt_timer = time + autocvar_g_spawn_near_teammate_ignore_spawnpoint_delay_death;
@@ -153,16 +155,23 @@ MUTATOR_HOOKFUNCTION(msnt_PlayerSpawn)
 }
 
 MUTATOR_HOOKFUNCTION(msnt_PlayerDies)
-{
+{SELFPARAM();
        self.msnt_deathloc = self.origin;
        return 0;
 }
 
+MUTATOR_HOOKFUNCTION(msnt_GetCvars)
+{
+       GetCvars_handleFloat(get_cvars_s, get_cvars_f, cvar_cl_spawn_near_teammate, "cl_spawn_near_teammate");
+       return false;
+}
+
 MUTATOR_DEFINITION(mutator_spawn_near_teammate)
 {
        MUTATOR_HOOK(Spawn_Score, msnt_Spawn_Score, CBC_ORDER_ANY);
        MUTATOR_HOOK(PlayerSpawn, msnt_PlayerSpawn, CBC_ORDER_ANY);
        MUTATOR_HOOK(PlayerDies, msnt_PlayerDies, CBC_ORDER_ANY);
+       MUTATOR_HOOK(GetCvars, msnt_GetCvars, CBC_ORDER_ANY);
 
        return 0;
 }