diff --git a/source/games/blood/src/blood.cpp b/source/games/blood/src/blood.cpp index 18a9cf4ee..7723b51bf 100644 --- a/source/games/blood/src/blood.cpp +++ b/source/games/blood/src/blood.cpp @@ -73,6 +73,7 @@ IMPLEMENT_POINTERS_END // // //--------------------------------------------------------------------------- +void MarkSprInSect(); size_t DBloodActor::PropagateMark() { @@ -90,6 +91,7 @@ static void markgcroots() GC::MarkArray(gSightSpritesList, gSightSpritesCount); GC::MarkArray(gPhysSpritesList, gPhysSpritesCount); GC::MarkArray(gImpactSpritesList, gImpactSpritesCount); + MarkSprInSect(); for (auto& pl : gPlayer) { GC::Mark(pl.actor); @@ -594,6 +596,7 @@ void GameInterface::loadPalette(void) void GameInterface::app_init() { GC::AddMarkerFunc(markgcroots); + InitCheats(); memcpy(&gGameOptions, &gSingleGameOptions, sizeof(GAMEOPTIONS)); gGameOptions.nMonsterSettings = !userConfig.nomonsters; diff --git a/source/games/blood/src/nnsprinsect.cpp b/source/games/blood/src/nnsprinsect.cpp index 55dc4218c..e5bf19858 100644 --- a/source/games/blood/src/nnsprinsect.cpp +++ b/source/games/blood/src/nnsprinsect.cpp @@ -55,6 +55,10 @@ public: void Init(int nDist = kWallDist); // used in trInit to collect the sprites before translation void Serialize(FSerializer& pSave); TArray>* GetSprPtr(int nSector); + void Mark() + { + for (auto& entry : db) GC::MarkArray(entry.pActors); + } }; @@ -65,6 +69,11 @@ public: // -------------------------------------------------------------------------- SPRINSECT gSprNSect; +void MarkSprInSect() +{ + gSprNSect.Mark(); +} + void SPRINSECT::Init(int nDist) { Free();