diff --git a/Generals/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp b/Generals/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp index 9998b74522..eb9c31c18a 100644 --- a/Generals/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp @@ -1141,6 +1141,13 @@ GameMessageDisposition SelectionTranslator::translateGameMessage(const GameMessa { VecObjectPtr objlist = selectedSquad->getLiveObjects(); Int numObjs = objlist.size(); + + // TheSuperHackers @fix skyaero 22/07/2025 check to prevent group force attack exploit + if (numObjs > 0 && objlist[0]->getDrawable()->isKindOf(KINDOF_STRUCTURE)) + { + TheInGameUI->deselectAllDrawables(); + } + for (Int i = 0; i < numObjs; ++i) { TheInGameUI->selectDrawable(objlist[i]->getDrawable()); diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp index e61b7684f1..f6c382e404 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/MessageStream/SelectionXlat.cpp @@ -1216,6 +1216,13 @@ GameMessageDisposition SelectionTranslator::translateGameMessage(const GameMessa { VecObjectPtr objlist = selectedSquad->getLiveObjects(); Int numObjs = objlist.size(); + + // TheSuperHackers @fix skyaero 22/07/2025 check to prevent group force attack exploit + if (numObjs > 0 && objlist[0]->getDrawable()->isKindOf(KINDOF_STRUCTURE)) + { + TheInGameUI->deselectAllDrawables(); + } + for (Int i = 0; i < numObjs; ++i) { TheInGameUI->selectDrawable(objlist[i]->getDrawable());