From 4a47b66990d09d91946d2fb1681daac0bcadf039 Mon Sep 17 00:00:00 2001 From: lachwright Date: Mon, 30 Sep 2019 03:05:08 +0800 Subject: [PATCH] (Hopefully) cover all cases for resetting rock usability --- src/p_map.c | 1 + src/p_user.c | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/p_map.c b/src/p_map.c index 14b69b575..39f7d1c54 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -975,6 +975,7 @@ static boolean PIT_CheckThing(mobj_t *thing) P_SetPlayerMobjState(tmthing, S_PLAY_WALK); tmthing->player->powers[pw_carry] = CR_ROLLOUT; P_SetTarget(&tmthing->tracer, thing); + P_SetObjectMomZ(thing, tmthing->momz, true); return false; } } diff --git a/src/p_user.c b/src/p_user.c index ec431a86a..5ce582dfc 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -948,17 +948,6 @@ void P_DoPlayerPain(player_t *player, mobj_t *source, mobj_t *inflictor) if (player->powers[pw_carry] == CR_ROPEHANG) P_SetTarget(&player->mo->tracer, NULL); - if (player->powers[pw_carry] == CR_ROLLOUT) - { - if (player->mo->tracer && !P_MobjWasRemoved(player->mo->tracer)) - { - player->mo->tracer->flags |= MF_PUSHABLE; - P_SetTarget(&player->mo->tracer->target, NULL); - } - P_SetTarget(&player->mo->tracer, NULL); - player->powers[pw_carry] = CR_NONE; - } - { angle_t ang; fixed_t fallbackspeed; @@ -1042,6 +1031,17 @@ void P_ResetPlayer(player_t *player) { player->pflags &= ~(PF_SPINNING|PF_STARTDASH|PF_STARTJUMP|PF_JUMPED|PF_NOJUMPDAMAGE|PF_GLIDING|PF_THOKKED|PF_CANCARRY|PF_SHIELDABILITY|PF_BOUNCING); + if (player->powers[pw_carry] == CR_ROLLOUT) + { + if (player->mo->tracer && !P_MobjWasRemoved(player->mo->tracer)) + { + player->mo->tracer->flags |= MF_PUSHABLE; + P_SetTarget(&player->mo->tracer->target, NULL); + } + P_SetTarget(&player->mo->tracer, NULL); + player->powers[pw_carry] = CR_NONE; + } + if (!(player->powers[pw_carry] == CR_NIGHTSMODE || player->powers[pw_carry] == CR_NIGHTSFALL || player->powers[pw_carry] == CR_BRAKGOOP || player->powers[pw_carry] == CR_MINECART)) player->powers[pw_carry] = CR_NONE;