diff --git a/src/g_level.cpp b/src/g_level.cpp index ee82e8c58..b80fbc280 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1428,7 +1428,6 @@ void FLevelLocals::StartTravel () if (Players[i]->health > 0) { pawn->UnlinkFromWorld (nullptr); - pawn->BlockingLine = nullptr; int tid = pawn->tid; // Save TID pawn->SetTID(0); pawn->tid = tid; // Restore TID (but no longer linked into the hash chain) diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 346a2a5cb..3f1520d55 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -279,6 +279,15 @@ void FLevelLocals::ClearPortals() void FLevelLocals::ClearLevelData() { + { + auto it = GetThinkerIterator(NAME_None, STAT_TRAVELLING); + for (AActor *actor = it.Next(); actor != nullptr; actor = it.Next()) + { + actor->BlockingLine = nullptr; + actor->BlockingFloor = actor->BlockingCeiling = actor->Blocking3DFloor = nullptr; + } + } + interpolator.ClearInterpolations(); // [RH] Nothing to interpolate on a fresh level. Thinkers.DestroyAllThinkers(); ClearAllSubsectorLinks(); // can't be done as part of the polyobj deletion process.