diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp index 8fa04cdb48d..91abec68b7e 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp @@ -200,6 +200,8 @@ void WeaponSet::crc( Xfer *xfer ) * 1: Initial version * 2: TheSuperHackers @tweak Upgrade damage type flags from integer to BitFlags for Generals. * Zero Hour already had this at version 1. + * 3: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize m_hasPitchLimit in the slot that + * repeated m_hasDamageWeapon, so a pitch limited weapon set keeps its limit on load */ // ------------------------------------------------------------------------------------------------ void WeaponSet::xfer( Xfer *xfer ) @@ -208,7 +210,7 @@ void WeaponSet::xfer( Xfer *xfer ) #if RETAIL_COMPATIBLE_XFER_SAVE const XferVersion currentVersion = 1; #else - const XferVersion currentVersion = 2; + const XferVersion currentVersion = 3; #endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -285,7 +287,14 @@ void WeaponSet::xfer( Xfer *xfer ) } #endif - xfer->xferBool(&m_hasDamageWeapon); + if (version >= 3) + { + xfer->xferBool(&m_hasPitchLimit); + } + else + { + xfer->xferBool(&m_hasDamageWeapon); + } xfer->xferBool(&m_hasDamageWeapon); #if RTS_GENERALS diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp index 546c554ad4b..fc6c059c425 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/WeaponSet.cpp @@ -208,6 +208,8 @@ void WeaponSet::crc( Xfer *xfer ) * 1: Initial version * 2: TheSuperHackers @tweak Upgrade damage type flags from integer to BitFlags for Generals. * Zero Hour already had this at version 1. + * 3: TheSuperHackers @bugfix bobtista 14/08/2026 Serialize m_hasPitchLimit in the slot that + * repeated m_hasDamageWeapon, so a pitch limited weapon set keeps its limit on load */ // ------------------------------------------------------------------------------------------------ void WeaponSet::xfer( Xfer *xfer ) @@ -216,7 +218,7 @@ void WeaponSet::xfer( Xfer *xfer ) #if RETAIL_COMPATIBLE_XFER_SAVE const XferVersion currentVersion = 1; #else - const XferVersion currentVersion = 2; + const XferVersion currentVersion = 3; #endif XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); @@ -293,7 +295,14 @@ void WeaponSet::xfer( Xfer *xfer ) } #endif - xfer->xferBool(&m_hasDamageWeapon); + if (version >= 3) + { + xfer->xferBool(&m_hasPitchLimit); + } + else + { + xfer->xferBool(&m_hasDamageWeapon); + } xfer->xferBool(&m_hasDamageWeapon); #if RTS_GENERALS