From 140f9846aa944005c0ce1af53c77a7231a87eab7 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Sat, 27 Sep 2025 05:58:50 -0400 Subject: [PATCH 1/2] Use damage stumble for stumble sectors / terrain again (allows DI) --- src/k_terrain.c | 6 +++++- src/p_spec.c | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/k_terrain.c b/src/k_terrain.c index 4140afd58..1fa93ab13 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -505,7 +505,11 @@ 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); + { + 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..47d15dd8f 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -5432,7 +5432,9 @@ static void P_EvaluateDamageType(player_t *player, sector_t *sector, boolean isT { if (isTouching && player->mo->hitlag == 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; } } From bf901fddb3d3717aebfc7712116136c8d9bcce2c Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Sat, 27 Sep 2025 06:11:34 -0400 Subject: [PATCH 2/2] Actually check the correct momentum, idiot --- src/k_terrain.c | 3 ++- src/p_spec.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/k_terrain.c b/src/k_terrain.c index 1fa93ab13..666cc9e53 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -504,7 +504,8 @@ 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)) + 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); diff --git a/src/p_spec.c b/src/p_spec.c index 47d15dd8f..d23b19b7d 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -5430,7 +5430,8 @@ 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))) { player->pflags2 |= PF2_ALWAYSDAMAGED; P_DamageMobj(player->mo, NULL, NULL, 1, DMG_STUMBLE);