diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp index 7c13cab791c..0e8d68f28ca 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp @@ -1156,6 +1156,14 @@ void ChinookAIUpdate::aiDoCommand(const AICommandParms* parms) { const Real THRESH = 3.0f; const Real THRESH_SQR = THRESH*THRESH; +#if RETAIL_COMPATIBLE_CRC + const bool allowExit = true; +#else + // TheSuperHackers @bugfix Stubbjax 04/11/2025 Passengers are no longer all dumped in a single frame. + const ContainModuleInterface* contain = getObject()->getContain(); + const bool allowExit = contain && contain->hasObjectsWantingToEnterOrExit(); +#endif + if (calcDistSqr(*getObject()->getPosition(), parms->m_pos) > THRESH_SQR && m_flightStatus == CHINOOK_LANDED) { @@ -1166,7 +1174,7 @@ void ChinookAIUpdate::aiDoCommand(const AICommandParms* parms) setMyState(TAKING_OFF, NULL, NULL, CMD_FROM_AI); passItThru = false; } - else + else if (allowExit) { // do this INSTEAD of the standard stuff setMyState( diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp index c6fca758211..c355d03d41f 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/ChinookAIUpdate.cpp @@ -1291,6 +1291,14 @@ void ChinookAIUpdate::aiDoCommand(const AICommandParms* parms) { const Real THRESH = 3.0f; const Real THRESH_SQR = THRESH*THRESH; +#if RETAIL_COMPATIBLE_CRC + const bool allowExit = true; +#else + // TheSuperHackers @bugfix Stubbjax 04/11/2025 Passengers are no longer all dumped in a single frame. + const ContainModuleInterface* contain = getObject()->getContain(); + const bool allowExit = contain && contain->hasObjectsWantingToEnterOrExit(); +#endif + if (calcDistSqr(*getObject()->getPosition(), parms->m_pos) > THRESH_SQR && m_flightStatus == CHINOOK_LANDED) { @@ -1301,7 +1309,7 @@ void ChinookAIUpdate::aiDoCommand(const AICommandParms* parms) setMyState(TAKING_OFF, NULL, NULL, CMD_FROM_AI); passItThru = false; } - else + else if (allowExit) { // do this INSTEAD of the standard stuff setMyState(