From 049665e03e23b9a59c228b434d2ea0d83fd0f89d Mon Sep 17 00:00:00 2001 From: carnivoroussociety <38839485+carnivoroussociety@users.noreply.github.com> Date: Sat, 28 Aug 2021 05:38:02 +1000 Subject: [PATCH] Fixed bug collecting lifeleech with ignited tnt/spray --- source/games/blood/src/misc.h | 1 + source/games/blood/src/triggers.cpp | 5 ++++- source/games/blood/src/weapon.cpp | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/source/games/blood/src/misc.h b/source/games/blood/src/misc.h index 96914d50f..f889ce817 100644 --- a/source/games/blood/src/misc.h +++ b/source/games/blood/src/misc.h @@ -43,6 +43,7 @@ void HookReplaceFunctions(); struct PLAYER; +bool checkFired6or7(PLAYER *pPlayer); void WeaponInit(void); void WeaponDraw(PLAYER *pPlayer, int a2, double a3, double a4, int a5); void WeaponRaise(PLAYER *pPlayer); diff --git a/source/games/blood/src/triggers.cpp b/source/games/blood/src/triggers.cpp index ade5acbcf..28aa333de 100644 --- a/source/games/blood/src/triggers.cpp +++ b/source/games/blood/src/triggers.cpp @@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #include "compat.h" #include "blood.h" +#include "misc.h" #include "d_net.h" BEGIN_BLD_NS @@ -206,14 +207,16 @@ void LifeLeechOperate(spritetype *pSprite, XSPRITE *pXSprite, EVENT event) PLAYER *pPlayer = &gPlayer[nPlayer]; if (pPlayer->pXSprite->health > 0) { + evKill(pSprite->index, 3); pPlayer->ammoCount[8] = ClipHigh(pPlayer->ammoCount[8]+pXSprite->data3, gAmmoInfo[8].max); pPlayer->hasWeapon[9] = 1; if (pPlayer->curWeapon != kWeapLifeLeech) { + if (!VanillaMode() && checkFired6or7(pPlayer)) // if tnt/spray is actively used, do not switch weapon + break; pPlayer->weaponState = 0; pPlayer->nextWeapon = 9; } - evKill(pSprite->index, 3); } } break; diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index 8e07d2111..714028243 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -140,7 +140,7 @@ enum nClientAltFireNapalm, }; -static bool checkFired6or7(PLAYER *pPlayer) +bool checkFired6or7(PLAYER *pPlayer) { switch (pPlayer->curWeapon) {