From 42d0bd3416e3cc25444e12bead8f68e5e6c3f2c7 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Fri, 14 Aug 2026 15:06:41 -0400 Subject: [PATCH 1/2] bugfix(saveload): Transfer the assault transport new member flags --- .../AIUpdate/AssaultTransportAIUpdate.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp index 3fac311f88b..a0b15a74721 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp @@ -492,12 +492,18 @@ void AssaultTransportAIUpdate::crc( Xfer *xfer ) //------------------------------------------------------------------------------------------------- /** Xfer method * Version Info: - * 1: Initial version */ + * 1: Initial version + * 2: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize the new member flags, so members + * that boarded after the attack order are not ordered out of the transport on load */ //------------------------------------------------------------------------------------------------- void AssaultTransportAIUpdate::xfer( Xfer *xfer ) { // version +#if RETAIL_COMPATIBLE_XFER_SAVE XferVersion currentVersion = 1; +#else + XferVersion currentVersion = 2; +#endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -510,6 +516,10 @@ void AssaultTransportAIUpdate::xfer( Xfer *xfer ) { xfer->xferObjectID( &(m_memberIDs[ i ]) ); xfer->xferBool( &(m_memberHealing[ i ]) ); + if( version >= 2 ) + { + xfer->xferBool( &(m_newMember[ i ]) ); + } } xfer->xferCoord3D( &m_attackMoveGoalPos ); @@ -523,6 +533,11 @@ void AssaultTransportAIUpdate::xfer( Xfer *xfer ) xfer->xferBool( &m_isAttackMove ); xfer->xferBool( &m_isAttackObject ); + if( version >= 2 ) + { + xfer->xferBool( &m_newOccupantsAreNewMembers ); + } + } //------------------------------------------------------------------------------------------------- From ed78b139de3bdd91572bbab09e151a92bceed53a Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Fri, 14 Aug 2026 15:06:41 -0400 Subject: [PATCH 2/2] bugfix(saveload): Transfer the assault transport new member flags (Generals) --- .../AIUpdate/AssaultTransportAIUpdate.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp index 3bb906b49cf..0f50a4a2f5a 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/AssaultTransportAIUpdate.cpp @@ -490,12 +490,18 @@ void AssaultTransportAIUpdate::crc( Xfer *xfer ) //------------------------------------------------------------------------------------------------- /** Xfer method * Version Info: - * 1: Initial version */ + * 1: Initial version + * 2: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize the new member flags, so members + * that boarded after the attack order are not ordered out of the transport on load */ //------------------------------------------------------------------------------------------------- void AssaultTransportAIUpdate::xfer( Xfer *xfer ) { // version +#if RETAIL_COMPATIBLE_XFER_SAVE XferVersion currentVersion = 1; +#else + XferVersion currentVersion = 2; +#endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -508,6 +514,10 @@ void AssaultTransportAIUpdate::xfer( Xfer *xfer ) { xfer->xferObjectID( &(m_memberIDs[ i ]) ); xfer->xferBool( &(m_memberHealing[ i ]) ); + if( version >= 2 ) + { + xfer->xferBool( &(m_newMember[ i ]) ); + } } xfer->xferCoord3D( &m_attackMoveGoalPos ); @@ -521,6 +531,11 @@ void AssaultTransportAIUpdate::xfer( Xfer *xfer ) xfer->xferBool( &m_isAttackMove ); xfer->xferBool( &m_isAttackObject ); + if( version >= 2 ) + { + xfer->xferBool( &m_newOccupantsAreNewMembers ); + } + } //-------------------------------------------------------------------------------------------------