From d6c1d67662ee1e2ab2b2065be8e39188fb1563b7 Mon Sep 17 00:00:00 2001 From: TehRealSalt Date: Tue, 10 Jul 2018 19:34:45 -0400 Subject: [PATCH] Allow K_MomentumToFacing to work when you just hit the floor (also prevent a crash when Ballhog balls die) --- src/dehacked.c | 1 + src/info.c | 3 ++- src/info.h | 1 + src/k_kart.c | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/dehacked.c b/src/dehacked.c index 93d39ba9..1007e497 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -6415,6 +6415,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_BALLHOG6", "S_BALLHOG7", "S_BALLHOG8", + "S_BALLHOG_DEAD", // Self-Propelled Bomb - just an explosion for now... "S_BLUELIGHTNING1", diff --git a/src/info.c b/src/info.c index b71a93de..dca6f868 100644 --- a/src/info.c +++ b/src/info.c @@ -2735,6 +2735,7 @@ state_t states[NUMSTATES] = {SPR_BHOG, 5, 2, {NULL}, 0, 0, S_BALLHOG7}, // S_BALLHOG6 {SPR_BHOG, 6, 1, {NULL}, 0, 0, S_BALLHOG8}, // S_BALLHOG7 {SPR_BHOG, 7, 1, {NULL}, 0, 0, S_BALLHOG1}, // S_BALLHOG8 + {SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_BALLHOG_DEAD {SPR_BLIG, 0, 2, {NULL}, 0, 0, S_BLUELIGHTNING2}, // S_BLUELIGHTNING1 {SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2 @@ -14907,7 +14908,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate - S_NULL, // deathstate + S_BALLHOG_DEAD, // deathstate S_NULL, // xdeathstate sfx_mario1, // deathsound 0, // speed diff --git a/src/info.h b/src/info.h index 3445e222..56dd4b19 100644 --- a/src/info.h +++ b/src/info.h @@ -3253,6 +3253,7 @@ typedef enum state S_BALLHOG6, S_BALLHOG7, S_BALLHOG8, + S_BALLHOG_DEAD, // Self-Propelled Bomb - just an explosion for now... S_BLUELIGHTNING1, diff --git a/src/k_kart.c b/src/k_kart.c index 5496c7da..aed853f8 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1300,7 +1300,8 @@ void K_MomentumToFacing(player_t *player) dangle = InvAngle(dangle); // If you aren't on the ground or are moving in too different of a direction don't do this - if (!P_IsObjectOnGround(player->mo) || dangle > ANGLE_90) + if ((!P_IsObjectOnGround(player->mo)) + || (dangle > ANGLE_90 && !(player->mo->eflags & MFE_JUSTHITFLOOR))) return; P_Thrust(player->mo, player->mo->angle, player->speed - FixedMul(player->speed, player->mo->friction));