diff --git a/src/k_terrain.c b/src/k_terrain.c index 4140afd58..666cc9e53 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -504,8 +504,13 @@ void K_ProcessTerrainEffect(mobj_t *mo) if (dmg & DMG_STUMBLE && !G_CompatLevel(0x0010)) { - if (player->mo->hitlag == 0 && (player->mo->momz >= 0) == (P_MobjFlip(player->mo) >= 0)) - K_StumblePlayer(player); + if (player->mo->hitlag == 0 && + (player->mo->momz == 0 || (player->mo->momz > 0) != (P_MobjFlip(player->mo) > 0))) + { + player->pflags2 |= PF2_ALWAYSDAMAGED; + P_DamageMobj(mo, NULL, NULL, 1, dmg); + player->pflags2 &= ~PF2_ALWAYSDAMAGED; + } } else { diff --git a/src/p_spec.c b/src/p_spec.c index b4fcdaf68..d23b19b7d 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -5430,9 +5430,12 @@ static void P_EvaluateDamageType(player_t *player, sector_t *sector, boolean isT } else { - if (isTouching && player->mo->hitlag == 0 && (player->mo->momz >= 0) == (P_MobjFlip(player->mo) >= 0)) + if (isTouching && player->mo->hitlag == 0 && + (player->mo->momz == 0 || (player->mo->momz > 0) != (P_MobjFlip(player->mo) > 0))) { - K_StumblePlayer(player); + player->pflags2 |= PF2_ALWAYSDAMAGED; + P_DamageMobj(player->mo, NULL, NULL, 1, DMG_STUMBLE); + player->pflags2 &= ~PF2_ALWAYSDAMAGED; } }