From 0e40299f3e254b7ec30c2d7e8c56759d560c9cec Mon Sep 17 00:00:00 2001 From: toasterbabe Date: Mon, 6 Feb 2017 20:36:21 +0000 Subject: [PATCH] Replace hacky flag abuse with timer (which can be used later when developing pushing sprites). --- src/d_player.h | 1 + src/dehacked.c | 1 + src/p_mobj.c | 2 +- src/p_user.c | 5 +++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index 01c8ee38e..dd6855786 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -241,6 +241,7 @@ typedef enum pw_underwater, // underwater timer pw_spacetime, // In space, no one can hear you spin! pw_extralife, // Extra Life timer + pw_pushing, pw_super, // Are you super? pw_gravityboots, // gravity boots diff --git a/src/dehacked.c b/src/dehacked.c index c71c55ac1..dda17a2e5 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -7118,6 +7118,7 @@ static const char *const POWERS_LIST[] = { "UNDERWATER", // underwater timer "SPACETIME", // In space, no one can hear you spin! "EXTRALIFE", // Extra Life timer + "PUSHING", "SUPER", // Are you super? "GRAVITYBOOTS", // gravity boots diff --git a/src/p_mobj.c b/src/p_mobj.c index cc4c2d2a4..23d917689 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -2190,7 +2190,7 @@ void P_XYMovement(mobj_t *mo) P_SlideMove(mo); if (player) - mo->flags |= MF_SLIDEME; + player->powers[pw_pushing] = 3; xmove = ymove = 0; #ifdef ESLOPE diff --git a/src/p_user.c b/src/p_user.c index f7c57df50..1a87c92da 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9229,7 +9229,7 @@ void P_PlayerThink(player_t *player) else if (cmd->forwardmove || cmd->sidemove) // only when you're pressing movement keys { if ((player->mo->movefactor < FRACUNIT) // hilarious absence of traction! - || (player->mo->flags & MF_SLIDEME) + || (player->powers[pw_pushing]) || !(player->rmomx || player->rmomy)) // adjust to new angle player->drawangle = player->mo->angle + R_PointToAngle2(0, 0, cmd->forwardmove<sidemove<mo->flags &= ~MF_SLIDEME; + if (player->powers[pw_pushing]) + player->powers[pw_pushing]--; player->mo->movefactor = FRACUNIT; // We're not going to do any more with this, so let's change it back for the next frame. // Unset statis flags after moving.