diff options
Diffstat (limited to 'src/heretic/p_user.c')
-rw-r--r-- | src/heretic/p_user.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/heretic/p_user.c b/src/heretic/p_user.c index 79620630..4c9ae4c6 100644 --- a/src/heretic/p_user.c +++ b/src/heretic/p_user.c @@ -988,11 +988,18 @@ boolean P_UseArtifact(player_t * player, artitype_t arti) break; case arti_firebomb: angle = player->mo->angle >> ANGLETOFINESHIFT; + + // Vanilla bug here: + // Original code here looks like: + // (player->mo->flags2 & MF2_FEETARECLIPPED != 0), + // Which under C's operator precedence is: + // (player->mo->flags2 & (MF2_FEETARECLIPPED != 0)), + // Which simplifies to: + // (player->mo->flags2 & 1), mo = P_SpawnMobj(player->mo->x + 24 * finecosine[angle], player->mo->y + 24 * finesine[angle], player->mo->z - - 15 * FRACUNIT * - (player->mo->flags2 & MF2_FEETARECLIPPED) != 0, + 15 * FRACUNIT * (player->mo->flags2 & 1), MT_FIREBOMB); mo->target = player->mo; break; |