From 8d1dbdd79c87bf5f0ac84db0c2925427b6c2a347 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 3 Jan 2022 16:45:24 -0800 Subject: [PATCH] Shared: Go over the weapon pickup logic for all the weapons to ensure we guarantee new pickups properly. --- src/shared/w_crossbow.qc | 15 +++++++++------ src/shared/w_egon.qc | 3 ++- src/shared/w_gauss.qc | 3 ++- src/shared/w_glock.qc | 10 ++++++---- src/shared/w_handgrenade.qc | 3 ++- src/shared/w_mp5.qc | 10 ++++++---- src/shared/w_python.qc | 10 ++++++---- src/shared/w_rpg.qc | 10 ++++++---- src/shared/w_satchel.qc | 3 ++- src/shared/w_shotgun.qc | 10 ++++++---- src/shared/w_snark.qc | 3 ++- src/shared/w_tripmine.qc | 3 ++- 12 files changed, 51 insertions(+), 32 deletions(-) diff --git a/src/shared/w_crossbow.qc b/src/shared/w_crossbow.qc index 53f7297..d5cde01 100644 --- a/src/shared/w_crossbow.qc +++ b/src/shared/w_crossbow.qc @@ -87,13 +87,16 @@ w_crossbow_pickup(int new, int startammo) if (new) { pl.crossbow_mag = 5; - } else { - if (pl.ammo_bolt < MAX_A_BOLT) { - pl.ammo_bolt = bound(0, pl.ammo_bolt + 5, MAX_A_BOLT); - } else { - return (0); - } + return (1); } + + if (pl.ammo_bolt < MAX_A_BOLT) { + pl.ammo_bolt = bound(0, pl.ammo_bolt + 5, MAX_A_BOLT); + } else { + if (!new) + return (0); + } + #endif return (1); } diff --git a/src/shared/w_egon.qc b/src/shared/w_egon.qc index b4b4078..79eaec4 100644 --- a/src/shared/w_egon.qc +++ b/src/shared/w_egon.qc @@ -92,7 +92,8 @@ int w_egon_pickup(int new, int startammo) if (pl.ammo_uranium < MAX_A_URANIUM) { pl.ammo_uranium = bound(0, pl.ammo_uranium + 20, MAX_A_URANIUM); } else { - return (0); + if (!new) + return (0); } #endif return (1); diff --git a/src/shared/w_gauss.qc b/src/shared/w_gauss.qc index e0617e6..ca17abe 100644 --- a/src/shared/w_gauss.qc +++ b/src/shared/w_gauss.qc @@ -79,7 +79,8 @@ int w_gauss_pickup(int new, int startammo) if (pl.ammo_uranium < MAX_A_URANIUM) { pl.ammo_uranium = bound(0, pl.ammo_uranium + 20, MAX_A_URANIUM); } else { - return (0); + if (!new) + return (0); } #endif return (1); diff --git a/src/shared/w_glock.qc b/src/shared/w_glock.qc index 9c6b66c..bc97530 100644 --- a/src/shared/w_glock.qc +++ b/src/shared/w_glock.qc @@ -126,12 +126,14 @@ w_glock_pickup(int new, int startammo) if (new) { pl.glock_mag = 18; + return (1); + } + + if (pl.ammo_9mm < MAX_A_9MM) { + pl.ammo_9mm = bound(0, pl.ammo_9mm + 18, MAX_A_9MM); } else { - if (pl.ammo_9mm < MAX_A_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 18, MAX_A_9MM); - } else { + if (!new) return (0); - } } #endif return (1); diff --git a/src/shared/w_handgrenade.qc b/src/shared/w_handgrenade.qc index 35175d1..e55cf04 100644 --- a/src/shared/w_handgrenade.qc +++ b/src/shared/w_handgrenade.qc @@ -70,7 +70,8 @@ int w_handgrenade_pickup(int new, int startammo) if (pl.ammo_handgrenade < MAX_A_HANDGRENADE) { pl.ammo_handgrenade = bound(0, pl.ammo_handgrenade + 1, MAX_A_HANDGRENADE); } else { - return (0); + if (!new) + return (0); } #endif return (1); diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc index 12366ea..7060ec1 100644 --- a/src/shared/w_mp5.qc +++ b/src/shared/w_mp5.qc @@ -72,12 +72,14 @@ w_mp5_pickup(int new, int startammo) if (new) { pl.mp5_mag = 25; + return (1); + } + + if (pl.ammo_9mm < MAX_A_9MM) { + pl.ammo_9mm = bound(0, pl.ammo_9mm + 25, MAX_A_9MM); } else { - if (pl.ammo_9mm < MAX_A_9MM) { - pl.ammo_9mm = bound(0, pl.ammo_9mm + 25, MAX_A_9MM); - } else { + if (!new) return (0); - } } #endif return (1); diff --git a/src/shared/w_python.qc b/src/shared/w_python.qc index 68caf7a..9dee9d4 100644 --- a/src/shared/w_python.qc +++ b/src/shared/w_python.qc @@ -67,12 +67,14 @@ w_python_pickup(int new, int startammo) if (new) { pl.python_mag = 6; + return (1); + } + + if (pl.ammo_357 < MAX_A_357) { + pl.ammo_357 = bound(0, pl.ammo_357 + 6, MAX_A_357); } else { - if (pl.ammo_357 < MAX_A_357) { - pl.ammo_357 = bound(0, pl.ammo_357 + 6, MAX_A_357); - } else { + if (!new) return (0); - } } #endif return (1); diff --git a/src/shared/w_rpg.qc b/src/shared/w_rpg.qc index ffba713..19aff01 100644 --- a/src/shared/w_rpg.qc +++ b/src/shared/w_rpg.qc @@ -74,12 +74,14 @@ int w_rpg_pickup(int new, int startammo) if (new) { pl.rpg_mag = 1; + return (1); + } + + if (pl.ammo_rocket < MAX_A_ROCKET) { + pl.ammo_rocket = bound(0, pl.ammo_rocket + 1, MAX_A_ROCKET); } else { - if (pl.ammo_rocket < MAX_A_ROCKET) { - pl.ammo_rocket = bound(0, pl.ammo_rocket + 1, MAX_A_ROCKET); - } else { + if (!new) return (0); - } } #endif return (1); diff --git a/src/shared/w_satchel.qc b/src/shared/w_satchel.qc index e8a911f..3565ad1 100644 --- a/src/shared/w_satchel.qc +++ b/src/shared/w_satchel.qc @@ -130,7 +130,8 @@ w_satchel_pickup(int new, int startammo) if (pl.ammo_satchel < MAX_A_SATCHEL) { pl.ammo_satchel = bound(0, pl.ammo_satchel + 1, MAX_A_SATCHEL); } else { - return (0); + if (!new) + return (0); } #endif return (1); diff --git a/src/shared/w_shotgun.qc b/src/shared/w_shotgun.qc index fd98d56..facf42a 100644 --- a/src/shared/w_shotgun.qc +++ b/src/shared/w_shotgun.qc @@ -127,12 +127,14 @@ w_shotgun_pickup(int new, int startammo) if (new) { pl.shotgun_mag = 8; + return (1); + } + + if (pl.ammo_buckshot < MAX_A_BUCKSHOT) { + pl.ammo_buckshot = bound(0, pl.ammo_buckshot + 8, MAX_A_BUCKSHOT); } else { - if (pl.ammo_buckshot < MAX_A_BUCKSHOT) { - pl.ammo_buckshot = bound(0, pl.ammo_buckshot + 8, MAX_A_BUCKSHOT); - } else { + if (!new) return (0); - } } #endif return (1); diff --git a/src/shared/w_snark.qc b/src/shared/w_snark.qc index ef170cd..342c867 100644 --- a/src/shared/w_snark.qc +++ b/src/shared/w_snark.qc @@ -155,7 +155,8 @@ int w_snark_pickup(int new, int startammo) if (pl.ammo_snark < MAX_A_SNARK) { pl.ammo_snark = bound(0, pl.ammo_snark + 5, MAX_A_SNARK); } else { - return (0); + if (!new) + return (0); } #endif return (1); diff --git a/src/shared/w_tripmine.qc b/src/shared/w_tripmine.qc index 6a6f2d7..421a9d3 100644 --- a/src/shared/w_tripmine.qc +++ b/src/shared/w_tripmine.qc @@ -240,7 +240,8 @@ int w_tripmine_pickup(int new, int startammo) if (pl.ammo_tripmine < MAX_A_TRIPMINE) { pl.ammo_tripmine = bound(0, pl.ammo_tripmine + 1, MAX_A_TRIPMINE); } else { - return (0); + if (!new) + return (0); } #endif return (1);