diff --git a/src/g_level.cpp b/src/g_level.cpp index 729497677..6847ac341 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1701,6 +1701,12 @@ void FLevelLocals::StartTravel() // the actual STAT_TRAVELLING list when snapshotting. void FLevelLocals::MoveTravellers() { + for (size_t i = 0u; i < MAXPLAYERS; ++i) + { + if (PlayerInGame(i)) + Players[i]->camera = nullptr; + } + for (auto th : TravellingThinkers) { if (th->ObjectFlags & OF_EuthanizeMe) diff --git a/src/playsim/dthinker.cpp b/src/playsim/dthinker.cpp index 61e1ad2c9..96e3cd4e0 100644 --- a/src/playsim/dthinker.cpp +++ b/src/playsim/dthinker.cpp @@ -969,6 +969,12 @@ void DThinker::ChangeStatNum(int statnum) static void ChangeStatNum(DThinker *self, int statnum) { + if (self->ObjectFlags & OF_Travelling) + { + Printf(TEXTCOLOR_RED "Thinkers cannot be moved while travelling\n"); + return; + } + // This will always break Actors, they should use STAT_TRAVELLING instead to // transition between levels. if (statnum == STAT_STATIC && self->IsKindOf(NAME_Actor))