From 0080a033bf9c99afa6b0234c64703b6d9345b83f Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sat, 1 Aug 2026 16:55:17 +0100 Subject: [PATCH 1/2] bugfix(contain): Allow passengers to exit a container that is held in place --- .../GameLogic/Object/Contain/TransportContain.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp index cdadb37d560..a7893ba005c 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp @@ -579,11 +579,13 @@ Bool TransportContain::isSpecificRiderFreeToExit(Object* specificObject) return FALSE; #if !RETAIL_COMPATIBLE_CRC - // TheSuperHackers @bugfix Stubbjax 02/03/2026 If our parent container is held, then we - // are not free to exit. - DEBUG_ASSERTCRASH(specificObject->getContainedBy(), ("rider must be contained")); - if (specificObject->getContainedBy()->isDisabledByType(DISABLED_HELD)) + // TheSuperHackers @bugfix Stubbjax/bobtista 01/08/2026 We are not free to exit when our container + // is held inside another container. A container merely held in place on the terrain, + // eg the battle bus, can still unload passengers. + if (me->getContainedBy() != nullptr && me->isDisabledByType(DISABLED_HELD)) + { return FALSE; + } #endif // I can always kick people out if I am in the air, I know what I'm doing From dcc2454671fa58fe2f90a190bfd0f941261fe789 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Mon, 3 Aug 2026 01:49:48 +0100 Subject: [PATCH 2/2] bugfix(contain): Block exits from contained transports --- .../Source/GameLogic/Object/Contain/TransportContain.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp index a7893ba005c..b04ce404444 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/TransportContain.cpp @@ -579,10 +579,10 @@ Bool TransportContain::isSpecificRiderFreeToExit(Object* specificObject) return FALSE; #if !RETAIL_COMPATIBLE_CRC - // TheSuperHackers @bugfix Stubbjax/bobtista 01/08/2026 We are not free to exit when our container - // is held inside another container. A container merely held in place on the terrain, + // TheSuperHackers @bugfix Stubbjax/bobtista 01/08/2026 Riders are not free to exit when their + // container is contained by another object. A container merely held in place on the terrain, // eg the battle bus, can still unload passengers. - if (me->getContainedBy() != nullptr && me->isDisabledByType(DISABLED_HELD)) + if (me->getContainedBy() != nullptr) { return FALSE; }