From 21ebbcf0f6e14576fac780652414289f40ce286d Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Thu, 13 Aug 2026 16:28:12 +1000 Subject: [PATCH 1/3] bugfix: The KINDOF_NO_SELECT flag now prevents an object from being selected --- Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp | 2 +- GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 24c4e694bb1..9ebeaf16cf0 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -2822,7 +2822,7 @@ Bool Object::isSelectable() const || (m_isSelectable && !testStatus(OBJECT_STATUS_UNSELECTABLE) && !isEffectivelyDead() - && !getTemplate()->isKindOf(KINDOF_DRONE)//Most drones are unselectable from being slaved, but the SpyDrone needs help + && !getTemplate()->isKindOf(KINDOF_NO_SELECT) ); } diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 800b5c20e4a..4525719b1b0 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -3113,7 +3113,7 @@ Bool Object::isSelectable() const // || (m_isSelectable // && !testStatus(OBJECT_STATUS_UNSELECTABLE) // && !isEffectivelyDead() -// && !getTemplate()->isKindOf(KINDOF_DRONE)//Most drones are unselectable from being slaved, but the SpyDrone needs help +// && !getTemplate()->isKindOf(KINDOF_NO_SELECT) // ); @@ -3123,7 +3123,7 @@ Bool Object::isSelectable() const if ( m_isSelectable ) if ( !testStatus(OBJECT_STATUS_UNSELECTABLE) ) if ( !isEffectivelyDead() ) - //if ( !getTemplate()->isKindOf(KINDOF_DRONE) )//Most drones are unselectable from being slaved, but the SpyDrone needs help + if ( !getTemplate()->isKindOf(KINDOF_NO_SELECT) ) return TRUE; return FALSE; From 4d4425fc43947189beacf9b52e856260984d8d64 Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Fri, 14 Aug 2026 10:27:15 +1000 Subject: [PATCH 2/3] tweak: Apply retail-compatible branching --- Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp | 4 ++++ GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 9ebeaf16cf0..f844352434d 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -2822,7 +2822,11 @@ Bool Object::isSelectable() const || (m_isSelectable && !testStatus(OBJECT_STATUS_UNSELECTABLE) && !isEffectivelyDead() +#if RETAIL_COMPATIBLE_CRC + && !getTemplate()->isKindOf(KINDOF_DRONE)//Most drones are unselectable from being slaved, but the SpyDrone needs help +#else && !getTemplate()->isKindOf(KINDOF_NO_SELECT) +#endif ); } diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 4525719b1b0..2c6f93063d9 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -3123,7 +3123,9 @@ Bool Object::isSelectable() const if ( m_isSelectable ) if ( !testStatus(OBJECT_STATUS_UNSELECTABLE) ) if ( !isEffectivelyDead() ) +#if !RETAIL_COMPATIBLE_CRC if ( !getTemplate()->isKindOf(KINDOF_NO_SELECT) ) +#endif return TRUE; return FALSE; From 7574b329604f56999ab2ba86851cc2bdb45abdfa Mon Sep 17 00:00:00 2001 From: Stubbjax Date: Fri, 14 Aug 2026 10:28:45 +1000 Subject: [PATCH 3/3] docs: Leave commented Generals logic intact --- GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp index 2c6f93063d9..629cf11f4fe 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Object.cpp @@ -3113,7 +3113,7 @@ Bool Object::isSelectable() const // || (m_isSelectable // && !testStatus(OBJECT_STATUS_UNSELECTABLE) // && !isEffectivelyDead() -// && !getTemplate()->isKindOf(KINDOF_NO_SELECT) +// && !getTemplate()->isKindOf(KINDOF_DRONE)//Most drones are unselectable from being slaved, but the SpyDrone needs help // );