diff --git a/src/k_respawn.c b/src/k_respawn.c index 748b9aaaee6b89403551fe19a10ed6878c0876f8..127dc7a3cfa94e0c2878a2e940e3e9bbc103ec80 100644 --- a/src/k_respawn.c +++ b/src/k_respawn.c @@ -724,14 +724,7 @@ static void K_DropDashWait(player_t *player) player->respawn.timer--; if (player->pflags & PF_FAULT) - return; - - // if player got trapped inside a bubble but lost its bubble object in a unintended way, remove no gravity flag - if (((P_MobjWasRemoved(player->mo->tracer) || player->mo->tracer == NULL) && player->carry == CR_TRAPBUBBLE) && (player->mo->flags & MF_NOGRAVITY)) - { - player->mo->flags &= ~MF_NOGRAVITY; - player->carry = CR_NONE; - } + return; if (leveltime % 8 == 0) { @@ -878,6 +871,12 @@ static void K_HandleDropDash(player_t *player) { player->mo->colorized = false; } + // if player got trapped inside a bubble but lost its bubble object in a unintended way, remove no gravity flag + if (((P_MobjWasRemoved(player->mo->tracer) || player->mo->tracer == NULL || (!P_MobjWasRemoved(player->mo->tracer) && player->mo->tracer && player->mo->tracer->type != MT_BUBBLESHIELDTRAP)) && player->carry == CR_TRAPBUBBLE) && (player->mo->flags & MF_NOGRAVITY)) + { + player->mo->flags &= ~MF_NOGRAVITY; + player->carry = CR_NONE; + } } else {