From be220905f4046c959a7678ed65c440a6e572e081 Mon Sep 17 00:00:00 2001 From: MauroFoti <42967448+MauroFoti@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:06:10 +0100 Subject: [PATCH] SERVER: fix free perk powerup crashing game in Gun Game if player had all perks but Mule Kick --- source/server/entities/powerups.qc | 8 ++++++-- source/shared/shared_defs.qc | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/source/server/entities/powerups.qc b/source/server/entities/powerups.qc index 262e263..d8e8667 100644 --- a/source/server/entities/powerups.qc +++ b/source/server/entities/powerups.qc @@ -655,7 +655,11 @@ void() PU_FreePerk = while(players) { - if (players.downed || players.perks >= 255) { + // don't to anything if any of these conditions is true + // 1. player is down + // 2. player has already all perks + // 3. player has all perks useful for Gun Game mode (all but mule kick) + if (players.downed || players.perks >= P_ALL || (cvar("sv_gamemode") == GAMEMODE_GUNGAME && players.perks >= P_ALL_GUNGAME)) { players = find(players, classname, "player"); continue; } @@ -673,7 +677,7 @@ void() PU_FreePerk = else if (perk_rand < (5/8) && !(players.perks & P_STAMIN)) { self.sequence = 5; perk_to_give = P_STAMIN; } else if (perk_rand < (6/8) && !(players.perks & P_FLOP)) { self.sequence = 6; perk_to_give = P_FLOP; } else if (perk_rand < (7/8) && !(players.perks & P_DEAD)) { self.sequence = 7; perk_to_give = P_DEAD; } - else if (!(players.perks & P_MULE) && cvar("sv_gamemode") != 2) { self.sequence = 8; perk_to_give = P_MULE; } + else if (!(players.perks & P_MULE) && cvar("sv_gamemode") != GAMEMODE_GUNGAME) { self.sequence = 8; perk_to_give = P_MULE; } if (perk_to_give != 0) found_perk_for_player = true; diff --git a/source/shared/shared_defs.qc b/source/shared/shared_defs.qc index 01ee1e1..ef2d092 100644 --- a/source/shared/shared_defs.qc +++ b/source/shared/shared_defs.qc @@ -312,6 +312,11 @@ float map_compatibility_mode; #define P_DEAD 64 #define P_MULE 128 +// all perks +#define P_ALL (P_JUG | P_DOUBLE | P_SPEED | P_REVIVE | P_FLOP | P_STAMIN | P_DEAD | P_MULE) +// all perks useful in Gun Game (all but no mule kick) +#define P_ALL_GUNGAME (P_JUG | P_DOUBLE | P_SPEED | P_REVIVE | P_FLOP | P_STAMIN | P_DEAD) + #define STAT_VIEWZOOM 21 #define STAT_CURRENTMAG 50