diff --git a/source/games/blood/src/qav.cpp b/source/games/blood/src/qav.cpp index b4533c323..1604f4d18 100644 --- a/source/games/blood/src/qav.cpp +++ b/source/games/blood/src/qav.cpp @@ -286,7 +286,7 @@ void qavProcessTicker(QAV* const pQAV, int* duration, int* lastTick) *duration = ClipLow(*duration, 0); } -void qavProcessTimer(PLAYER* const pPlayer, QAV* const pQAV, int* duration, double* smoothratio, bool const fixedduration) +void qavProcessTimer(PLAYER* const pPlayer, QAV* const pQAV, int* duration, double* smoothratio, bool const fixedduration, bool const ignoreWeaponTimer) { // Process if not paused. if (!paused) @@ -294,7 +294,7 @@ void qavProcessTimer(PLAYER* const pPlayer, QAV* const pQAV, int* duration, doub // Process clock based on QAV's ticrate and last tick value. qavProcessTicker(pQAV, &pPlayer->qavTimer, &pPlayer->qavLastTick); - if (pPlayer->weaponTimer == 0) + if (pPlayer->weaponTimer == 0 && !ignoreWeaponTimer) { // Check if we're playing an idle QAV as per the ticker's weapon timer. *duration = fixedduration ? pQAV->duration - 1 : I_GetBuildTime() % pQAV->duration; diff --git a/source/games/blood/src/qav.h b/source/games/blood/src/qav.h index aca60789a..aa0e2bad5 100644 --- a/source/games/blood/src/qav.h +++ b/source/games/blood/src/qav.h @@ -240,7 +240,7 @@ struct QAV QAV* getQAV(int res_id); void qavProcessTicker(QAV* const pQAV, int* duration, int* lastTick); -void qavProcessTimer(PLAYER* const pPlayer, QAV* const pQAV, int* duration, double* smoothratio, bool const fixedduration = false); +void qavProcessTimer(PLAYER* const pPlayer, QAV* const pQAV, int* duration, double* smoothratio, bool const fixedduration = false, bool const ignoreWeaponTimer = false); inline bool qavIsOriginal(const int& res_id) { diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index 6c15ac795..5b4361b35 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -256,7 +256,7 @@ void WeaponDraw(PLAYER *pPlayer, int shade, double xpos, double ypos, int palnum int duration; double smoothratio; - qavProcessTimer(pPlayer, pQAV, &duration, &smoothratio, pPlayer->weaponState == -1 || (pPlayer->curWeapon == kWeapShotgun && pPlayer->weaponState == 7)); + qavProcessTimer(pPlayer, pQAV, &duration, &smoothratio, pPlayer->weaponState == -1, pPlayer->curWeapon == kWeapShotgun && pPlayer->weaponState == 7); pQAV->x = int(xpos); pQAV->y = int(ypos);