From 9c743449c51f97efca235d6942e47f4b15c1a7f7 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Tue, 17 Sep 2019 12:00:05 +0200 Subject: [PATCH] Reset all ammo fields for when they join/respawn in MP games. --- src/server/valve/client.c | 2 ++ src/server/valve/item_weaponbox.cpp | 24 ++++++++++++------------ src/server/valve/player.c | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/server/valve/client.c b/src/server/valve/client.c index bea820eb..359688bc 100644 --- a/src/server/valve/client.c +++ b/src/server/valve/client.c @@ -330,6 +330,8 @@ Game_PutClientInServer(void) } Weapons_RefreshAmmo(pl); } else { + Game_SetNewParms(); + Game_DecodeChangeParms(); spot = Spawn_SelectRandom("info_player_deathmatch"); setorigin(pl, spot.origin); pl.angles = spot.angles; diff --git a/src/server/valve/item_weaponbox.cpp b/src/server/valve/item_weaponbox.cpp index 680c7ca5..16fd187b 100644 --- a/src/server/valve/item_weaponbox.cpp +++ b/src/server/valve/item_weaponbox.cpp @@ -59,18 +59,18 @@ void item_weaponbox::touch(void) pl.ammo_hornet += ammo_hornet; /* cull */ - pl.ammo_9mm = max(pl.ammo_9mm, MAX_A_9MM); - pl.ammo_357 = max(pl.ammo_357, MAX_A_357); - pl.ammo_buckshot = max(pl.ammo_buckshot, MAX_A_BUCKSHOT); - pl.ammo_m203_grenade = max(pl.ammo_m203_grenade, MAX_A_M203_GRENADE); - pl.ammo_bolt = max(pl.ammo_bolt, MAX_A_BOLT); - pl.ammo_rocket = max(pl.ammo_rocket, MAX_A_ROCKET); - pl.ammo_uranium = max(pl.ammo_uranium, MAX_A_URANIUM); - pl.ammo_handgrenade = max(pl.ammo_handgrenade, MAX_A_HANDGRENADE); - pl.ammo_satchel = max(pl.ammo_satchel, MAX_A_SATCHEL); - pl.ammo_tripmine = max(pl.ammo_tripmine, MAX_A_TRIPMINE); - pl.ammo_snark = max(pl.ammo_snark, MAX_A_SNARK); - pl.ammo_hornet = max(pl.ammo_hornet, MAX_A_HORNET); + pl.ammo_9mm = min(pl.ammo_9mm, MAX_A_9MM); + pl.ammo_357 = min(pl.ammo_357, MAX_A_357); + pl.ammo_buckshot = min(pl.ammo_buckshot, MAX_A_BUCKSHOT); + pl.ammo_m203_grenade = min(pl.ammo_m203_grenade, MAX_A_M203_GRENADE); + pl.ammo_bolt = min(pl.ammo_bolt, MAX_A_BOLT); + pl.ammo_rocket = min(pl.ammo_rocket, MAX_A_ROCKET); + pl.ammo_uranium = min(pl.ammo_uranium, MAX_A_URANIUM); + pl.ammo_handgrenade = min(pl.ammo_handgrenade, MAX_A_HANDGRENADE); + pl.ammo_satchel = min(pl.ammo_satchel, MAX_A_SATCHEL); + pl.ammo_tripmine = min(pl.ammo_tripmine, MAX_A_TRIPMINE); + pl.ammo_snark = min(pl.ammo_snark, MAX_A_SNARK); + pl.ammo_hornet = min(pl.ammo_hornet, MAX_A_HORNET); pl.g_items |= weapon_items; Weapons_RefreshAmmo(pl); diff --git a/src/server/valve/player.c b/src/server/valve/player.c index adf67c01..10967843 100644 --- a/src/server/valve/player.c +++ b/src/server/valve/player.c @@ -29,7 +29,7 @@ void Player_Death(int hit) pl.takedamage = DAMAGE_NO; pl.flags &= ~FL_FLASHLIGHT; pl.armor = pl.activeweapon = pl.g_items = 0; - + pl.think = PutClientInServer; pl.nextthink = time + 4.0f; sound(pl, CHAN_AUTO, "fvox/flatline.wav", 1.0, ATTN_NORM);