diff --git a/source/games/blood/src/loadsave.cpp b/source/games/blood/src/loadsave.cpp index 51f5a2509..7e84b8e21 100644 --- a/source/games/blood/src/loadsave.cpp +++ b/source/games/blood/src/loadsave.cpp @@ -36,6 +36,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_BLD_NS +void validateLinks(); + + FixedBitArray activeXSprites; // All AI states for assigning an index. @@ -817,6 +820,7 @@ void GameInterface::SerializeGameState(FSerializer& arc) Polymost::Polymost_prepare_loadboard(); Mus_ResumeSaved(); } + validateLinks(); } diff --git a/source/games/blood/src/warp.cpp b/source/games/blood/src/warp.cpp index 869e8ff47..4aa423053 100644 --- a/source/games/blood/src/warp.cpp +++ b/source/games/blood/src/warp.cpp @@ -34,6 +34,27 @@ ZONE gStartZone[8]; ZONE gStartZoneTeam2[8]; bool gTeamsSpawnUsed = false; #endif + +void validateLinks() +{ + int snum = 0; + for (auto& sect : sectors()) + { + + if (getUpperLink(snum) && !getUpperLink(snum)->GetOwner()) + { + Printf("Unpartnered upper link in sector %d\n", snum); + gUpperLink[snum] = nullptr; + } + if (getLowerLink(snum) && !getLowerLink(snum)->GetOwner()) + { + Printf("Unpartnered upper link in sector %d\n", snum); + gLowerLink[snum] = nullptr; + } + snum++; + } +} + void warpInit(void) { for (int i = 0; i < kMaxSectors; i++) @@ -166,6 +187,7 @@ void warpInit(void) } } } + validateLinks(); } int CheckLink(DBloodActor *actor)