From c197d41bdc32af5c813c75431cd8bb6409e7f419 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Thu, 25 Jan 2024 15:14:32 -0700 Subject: [PATCH] Bumper inflate refinements part 69 --- src/k_kart.c | 9 +++++++-- src/k_kart.h | 2 +- src/p_map.c | 4 +++- src/p_mobj.c | 7 ++++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index e84ff8aec..597762186 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4554,6 +4554,7 @@ void K_BumperInflate(player_t *player) return; player->bumperinflate = 3; + S_StartSound(player->mo, sfx_cdpcm9); } static void K_HandleTumbleBounce(player_t *player) @@ -8783,10 +8784,14 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd) if (player->bumperinflate && player->mo->health > 1 && player->mo->hitlag == 0) { - if (player->speed < K_GetKartSpeed(player, false, false)/2) - P_Thrust(player->mo, K_MomentumAngle(player->mo), BUMPER_THRUST); if (player->tumbleBounces && player->tumbleBounces <= TUMBLEBOUNCES) + { player->mo->momz += BUMPER_FLOAT; + } + else if (player->speed < K_GetKartSpeed(player, false, false)/2) + { + P_Thrust(player->mo, K_MomentumAngle(player->mo), BUMPER_THRUST); + } player->bumperinflate--; } diff --git a/src/k_kart.h b/src/k_kart.h index c2b02ef01..7b9793c77 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -37,7 +37,7 @@ Make sure this matches the actual number of states #define INSTAWHIP_TETHERBLOCK (TICRATE*4) #define PUNISHWINDOW (7*TICRATE/10) -#define BUMPER_FLOAT (4*mapobjectscale) +#define BUMPER_FLOAT (8*mapobjectscale) #define BUMPER_THRUST (10*mapobjectscale) #define FLAMESHIELD_MAX (120) diff --git a/src/p_map.c b/src/p_map.c index 957d376df..edd9cd993 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -4180,8 +4180,10 @@ static void P_BouncePlayerMove(mobj_t *mo, TryMoveResult_t *result) // Combo avoidance! if (mo->player && P_PlayerInPain(mo->player) && gametyperules & GTR_BUMPERS && mo->health > 1) { - P_DamageMobj(mo, NULL, NULL, 1, DMG_STUMBLE); + K_StumblePlayer(mo->player); + K_BumperInflate(mo->player); mo->player->tumbleBounces = TUMBLEBOUNCES; + mo->hitlag = max(mo->hitlag, 6); } mo->momx = tmxmove; diff --git a/src/p_mobj.c b/src/p_mobj.c index 6e687971a..3f5cdcb80 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6366,7 +6366,12 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (mobj->target->player->bumperinflate) { - P_SetScale(mobj, mobj->target->scale + (mobj->target->scale * mobj->target->player->bumperinflate / 2)); + mobj->frame |= FF_INVERT; + P_SetScale(mobj, mobj->target->scale + (mobj->target->scale * 3 * mobj->target->player->bumperinflate / 4)); + } + else + { + mobj->frame &= ~FF_INVERT; } P_UnsetThingPosition(mobj);