From 297e5a18d10e816af6442b43bd85a21824de67bd Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Tue, 18 Nov 2025 01:28:07 +1100 Subject: [PATCH 1/2] bugfix: Allow immediate resumed construction of buildings if the existing builder dies --- Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp | 4 ++++ .../Code/GameEngine/Source/Common/RTS/ActionManager.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp b/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp index d588bc3cf89..bff402a3acd 100644 --- a/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp +++ b/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp @@ -476,7 +476,11 @@ Bool ActionManager::canResumeConstructionOf( const Object *obj, // in the future) // Object *builder = TheGameLogic->findObjectByID( objectBeingConstructed->getBuilderID() ); +#if RETAIL_COMPATIBLE_CRC if( builder ) +#else + if (builder && !builder->isEffectivelyDead()) +#endif { AIUpdateInterface *ai = builder->getAI(); DEBUG_ASSERTCRASH( ai, ("Builder object does not have an AI interface!") ); diff --git a/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp b/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp index ee93d3a076b..04f2d4818f2 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp @@ -480,7 +480,11 @@ Bool ActionManager::canResumeConstructionOf( const Object *obj, // in the future) // Object *builder = TheGameLogic->findObjectByID( objectBeingConstructed->getBuilderID() ); +#if RETAIL_COMPATIBLE_CRC if( builder ) +#else + if (builder && !builder->isEffectivelyDead()) +#endif { AIUpdateInterface *ai = builder->getAI(); DEBUG_ASSERTCRASH( ai, ("Builder object does not have an AI interface!") ); From ebe5bdee578a6de15287e8d095070c60d3771c6c Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Fri, 23 Jan 2026 12:19:35 +1100 Subject: [PATCH 2/2] docs: Add comments --- Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp | 1 + GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp b/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp index bff402a3acd..77fa2eba516 100644 --- a/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp +++ b/Generals/Code/GameEngine/Source/Common/RTS/ActionManager.cpp @@ -479,6 +479,7 @@ Bool ActionManager::canResumeConstructionOf( const Object *obj, #if RETAIL_COMPATIBLE_CRC if( builder ) #else + // TheSuperHackers @bugfix Stubbjax 18/11/2025 Allow scaffold to be immediately resumed after builder death. if (builder && !builder->isEffectivelyDead()) #endif { diff --git a/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp b/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp index 04f2d4818f2..fc344a6fc31 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/RTS/ActionManager.cpp @@ -483,6 +483,7 @@ Bool ActionManager::canResumeConstructionOf( const Object *obj, #if RETAIL_COMPATIBLE_CRC if( builder ) #else + // TheSuperHackers @bugfix Stubbjax 18/11/2025 Allow scaffold to be immediately resumed after builder death. if (builder && !builder->isEffectivelyDead()) #endif {