]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/mutators/mutator/buffs/sv_buffs.qc
Prevent picking up buffs immediately after spawning
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / buffs / sv_buffs.qc
index b458f735e1301108cab62f6fdf9ea5f3e9f363eb..a65d57d729b615fde18d66c6d62fc61cac0baa82 100644 (file)
@@ -558,6 +558,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerSpawn)
 
        player.buffs = 0;
        player.buff_time = 0;
+       player.buff_shield = time + 0.5; // prevent picking up buffs immediately
        // reset timers here to prevent them continuing after re-spawn
        player.buff_disability_time = 0;
        player.buff_disability_effect_time = 0;
@@ -629,7 +630,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerDies)
 
 MUTATOR_HOOKFUNCTION(buffs, PlayerUseKey, CBC_ORDER_FIRST)
 {
-       if(MUTATOR_RETURNVALUE || game_stopped) return;
+       if(MUTATOR_RETURNVALUE || game_stopped || !autocvar_g_buffs_drop) return;
 
        entity player = M_ARGV(0, entity);
 
@@ -795,7 +796,7 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink)
 {
        entity player = M_ARGV(0, entity);
 
-       if(game_stopped || IS_DEAD(player)) return;
+       if(game_stopped || IS_DEAD(player) || frametime || !IS_PLAYER(player)) return;
 
        if(player.buffs & BUFF_FLIGHT.m_itemid)
        {
@@ -970,7 +971,8 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink)
                }
                else
                {
-                       delete(player.buff_model);
+                       if(player.buff_model)
+                               delete(player.buff_model);
                        player.buff_model = NULL;
 
                        player.effects &= ~(EF_NOSHADOW);
@@ -996,6 +998,7 @@ MUTATOR_HOOKFUNCTION(buffs, SpectateCopy)
        entity client = M_ARGV(1, entity);
 
        client.buffs = spectatee.buffs;
+       client.buff_time = spectatee.buff_time;
 }
 
 MUTATOR_HOOKFUNCTION(buffs, VehicleEnter)