summaryrefslogtreecommitdiff
path: root/src/heretic/p_pspr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/heretic/p_pspr.c')
-rw-r--r--src/heretic/p_pspr.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/heretic/p_pspr.c b/src/heretic/p_pspr.c
index c0abf559..66f50ef3 100644
--- a/src/heretic/p_pspr.c
+++ b/src/heretic/p_pspr.c
@@ -1070,9 +1070,17 @@ void A_FireMacePL1B(player_t * player, pspdef_t * psp)
}
player->ammo[am_mace] -= USE_MACE_AMMO_1;
pmo = player->mo;
+
+ // Vanilla bug here:
+ // Original code here looks like:
+ // (pmo->flags2 & MF2_FEETARECLIPPED != 0)
+ // C's operator precedence interprets this as:
+ // (pmo->flags2 & (MF2_FEETARECLIPPED != 0))
+ // Which simplifies to:
+ // (pmo->flags2 & 1)
ball = P_SpawnMobj(pmo->x, pmo->y, pmo->z + 28 * FRACUNIT
- - FOOTCLIPSIZE * ((pmo->flags2 & MF2_FEETARECLIPPED) !=
- 0), MT_MACEFX2);
+ - FOOTCLIPSIZE * (pmo->flags2 & 1), MT_MACEFX2);
+
ball->momz = 2 * FRACUNIT + ((player->lookdir) << (FRACBITS - 5));
angle = pmo->angle;
ball->target = pmo;