diff --git a/src/game/interaction.c b/src/game/interaction.c index afc2839f..f224dc1d 100644 --- a/src/game/interaction.c +++ b/src/game/interaction.c @@ -700,7 +700,7 @@ u32 determine_knockback_action(struct MarioState *m, UNUSED s32 arg) { m->vel[2] = -mag * coss(m->interactObj->oFaceAngleYaw); m->slideVelX = m->vel[0]; m->slideVelZ = m->vel[2]; - m->knockbackTimer = 3; + m->knockbackTimer = 10; m->faceAngle[1] = m->interactObj->oFaceAngleYaw + (sign == 1.0f ? 0 : 0x8000); } @@ -1377,6 +1377,10 @@ u32 interact_player(struct MarioState* m, UNUSED u32 interactType, struct Object return false; } + if (m2->knockbackTimer > 0) { + return false; + } + // determine if slide attack should be ignored if ((interaction & INT_ATTACK_SLIDE) || player_is_sliding(m2)) { // determine the difference in velocities diff --git a/src/game/mario_actions_airborne.c b/src/game/mario_actions_airborne.c index 75b7ea6d..a0f91579 100644 --- a/src/game/mario_actions_airborne.c +++ b/src/game/mario_actions_airborne.c @@ -1110,7 +1110,7 @@ u32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFall mario_set_forward_vel(m, speed); } } else { - m->knockbackTimer = 3; + m->knockbackTimer = 10; } stepResult = perform_air_step(m, 0); diff --git a/src/game/mario_actions_moving.c b/src/game/mario_actions_moving.c index 733e4b45..f403ec9a 100644 --- a/src/game/mario_actions_moving.c +++ b/src/game/mario_actions_moving.c @@ -1625,7 +1625,7 @@ s32 common_ground_knockback_action(struct MarioState *m, s32 animation, s32 arg2 } } } else { - m->knockbackTimer = 3; + m->knockbackTimer = 10; } animFrame = set_mario_animation(m, animation);