From 961507ad4c41e38338e4bdd6f58bedeeb12c383b Mon Sep 17 00:00:00 2001
From: Jaredl-Dev <260281143+Jaredl-Dev@users.noreply.github.com>
Date: Wed, 26 Aug 2026 00:43:23 -0700
Subject: [PATCH 1/2] unify(helper): Merge Object helper modules (#3210)
---
.../Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
index b747434d450..d90f13d59de 100644
--- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
+++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
@@ -29,6 +29,9 @@
// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
#include "PreRTS.h"
+
+#if RTS_ZEROHOUR
+
#include "Common/Xfer.h"
#include "GameLogic/Object.h"
@@ -127,3 +130,5 @@ void SubdualDamageHelper::loadPostProcess()
}
+#endif
+
From 9f4e3d8762b346f1f5b6c11890f73ff129ba4c0f Mon Sep 17 00:00:00 2001
From: Jaredl-Dev <260281143+Jaredl-Dev@users.noreply.github.com>
Date: Wed, 26 Aug 2026 00:43:58 -0700
Subject: [PATCH 2/2] unify(helper): Move Object helper modules to Core (#3210)
---
Core/GameEngine/CMakeLists.txt | 32 ++--
.../GameLogic/Module/ObjectDefectionHelper.h | 0
.../Include/GameLogic/Module/ObjectHelper.h | 0
.../GameLogic/Module/ObjectRepulsorHelper.h | 0
.../GameLogic/Module/ObjectSMCHelper.h | 0
.../Module/ObjectWeaponStatusHelper.h | 0
.../GameLogic/Module/StatusDamageHelper.h | 0
.../GameLogic/Module/SubdualDamageHelper.h | 0
.../GameLogic/Module/TempWeaponBonusHelper.h | 0
.../Object/Helper/ObjectDefectionHelper.cpp | 0
.../GameLogic/Object/Helper/ObjectHelper.cpp | 0
.../Object/Helper/ObjectRepulsorHelper.cpp | 0
.../Object/Helper/ObjectSMCHelper.cpp | 0
.../Helper/ObjectWeaponStatusHelper.cpp | 0
.../Object/Helper/StatusDamageHelper.cpp | 0
.../Object/Helper/SubdualDamageHelper.cpp | 0
.../Object/Helper/TempWeaponBonusHelper.cpp | 0
Generals/Code/GameEngine/CMakeLists.txt | 20 +-
.../GameLogic/Module/ObjectDefectionHelper.h | 79 --------
.../Include/GameLogic/Module/ObjectHelper.h | 60 ------
.../GameLogic/Module/ObjectRepulsorHelper.h | 57 ------
.../GameLogic/Module/ObjectSMCHelper.h | 57 ------
.../Module/ObjectWeaponStatusHelper.h | 80 --------
.../Object/Helper/ObjectDefectionHelper.cpp | 180 ------------------
.../GameLogic/Object/Helper/ObjectHelper.cpp | 99 ----------
.../Object/Helper/ObjectRepulsorHelper.cpp | 93 ---------
.../Object/Helper/ObjectSMCHelper.cpp | 93 ---------
.../Helper/ObjectWeaponStatusHelper.cpp | 80 --------
GeneralsMD/Code/GameEngine/CMakeLists.txt | 32 ++--
scripts/cpp/unify_move_files.py | 17 ++
30 files changed, 59 insertions(+), 920 deletions(-)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/ObjectHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/StatusDamageHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp (100%)
rename {GeneralsMD/Code => Core}/GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp (100%)
delete mode 100644 Generals/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
delete mode 100644 Generals/Code/GameEngine/Include/GameLogic/Module/ObjectHelper.h
delete mode 100644 Generals/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
delete mode 100644 Generals/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
delete mode 100644 Generals/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
delete mode 100644 Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
delete mode 100644 Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
delete mode 100644 Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
delete mode 100644 Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
delete mode 100644 Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
diff --git a/Core/GameEngine/CMakeLists.txt b/Core/GameEngine/CMakeLists.txt
index eff13029517..5644801b6a6 100644
--- a/Core/GameEngine/CMakeLists.txt
+++ b/Core/GameEngine/CMakeLists.txt
@@ -371,11 +371,11 @@ set(GAMEENGINE_SRC
# Include/GameLogic/Module/NeutronMissileSlowDeathUpdate.h
# Include/GameLogic/Module/NeutronMissileUpdate.h
# Include/GameLogic/Module/ObjectCreationUpgrade.h
-# Include/GameLogic/Module/ObjectDefectionHelper.h
-# Include/GameLogic/Module/ObjectHelper.h
-# Include/GameLogic/Module/ObjectRepulsorHelper.h
-# Include/GameLogic/Module/ObjectSMCHelper.h
-# Include/GameLogic/Module/ObjectWeaponStatusHelper.h
+ Include/GameLogic/Module/ObjectDefectionHelper.h
+ Include/GameLogic/Module/ObjectHelper.h
+ Include/GameLogic/Module/ObjectRepulsorHelper.h
+ Include/GameLogic/Module/ObjectSMCHelper.h
+ Include/GameLogic/Module/ObjectWeaponStatusHelper.h
# Include/GameLogic/Module/OCLSpecialPower.h
# Include/GameLogic/Module/OCLUpdate.h
# Include/GameLogic/Module/OpenContain.h
@@ -441,7 +441,7 @@ set(GAMEENGINE_SRC
# Include/GameLogic/Module/SpyVisionUpdate.h
# Include/GameLogic/Module/SquishCollide.h
# Include/GameLogic/Module/StatusBitsUpgrade.h
-# Include/GameLogic/Module/StatusDamageHelper.h
+ Include/GameLogic/Module/StatusDamageHelper.h
# Include/GameLogic/Module/StealthDetectorUpdate.h
# Include/GameLogic/Module/StealthUpdate.h
# Include/GameLogic/Module/StealthUpgrade.h
@@ -449,7 +449,7 @@ set(GAMEENGINE_SRC
# Include/GameLogic/Module/StructureBody.h
# Include/GameLogic/Module/StructureCollapseUpdate.h
# Include/GameLogic/Module/StructureToppleUpdate.h
-# Include/GameLogic/Module/SubdualDamageHelper.h
+ Include/GameLogic/Module/SubdualDamageHelper.h
# Include/GameLogic/Module/SubObjectsUpgrade.h
# Include/GameLogic/Module/SupplyCenterCreate.h
# Include/GameLogic/Module/SupplyCenterDockUpdate.h
@@ -459,7 +459,7 @@ set(GAMEENGINE_SRC
# Include/GameLogic/Module/SupplyWarehouseCripplingBehavior.h
# Include/GameLogic/Module/SupplyWarehouseDockUpdate.h
# Include/GameLogic/Module/TechBuildingBehavior.h
-# Include/GameLogic/Module/TempWeaponBonusHelper.h
+ Include/GameLogic/Module/TempWeaponBonusHelper.h
# Include/GameLogic/Module/TensileFormationUpdate.h
# Include/GameLogic/Module/ToppleUpdate.h
# Include/GameLogic/Module/TransitionDamageFX.h
@@ -955,14 +955,14 @@ set(GAMEENGINE_SRC
# Source/GameLogic/Object/ExperienceTracker.cpp
# Source/GameLogic/Object/FiringTracker.cpp
# Source/GameLogic/Object/GhostObject.cpp
-# Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
-# Source/GameLogic/Object/Helper/ObjectHelper.cpp
-# Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
-# Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
-# Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
-# Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
-# Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
-# Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
+ Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
+ Source/GameLogic/Object/Helper/ObjectHelper.cpp
+ Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
+ Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
+ Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
+ Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
+ Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
+ Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
# Source/GameLogic/Object/Locomotor.cpp
# Source/GameLogic/Object/Object.cpp
# Source/GameLogic/Object/ObjectCreationList.cpp
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h b/Core/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectHelper.h b/Core/GameEngine/Include/GameLogic/Module/ObjectHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/ObjectHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h b/Core/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h b/Core/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h b/Core/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/StatusDamageHelper.h b/Core/GameEngine/Include/GameLogic/Module/StatusDamageHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/StatusDamageHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/StatusDamageHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h b/Core/GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h b/Core/GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h
rename to Core/GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp b/Core/GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
similarity index 100%
rename from GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
rename to Core/GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
diff --git a/Generals/Code/GameEngine/CMakeLists.txt b/Generals/Code/GameEngine/CMakeLists.txt
index 0db74569602..564eaba0556 100644
--- a/Generals/Code/GameEngine/CMakeLists.txt
+++ b/Generals/Code/GameEngine/CMakeLists.txt
@@ -341,11 +341,11 @@ set(GAMEENGINE_SRC
Include/GameLogic/Module/NeutronMissileSlowDeathUpdate.h
Include/GameLogic/Module/NeutronMissileUpdate.h
Include/GameLogic/Module/ObjectCreationUpgrade.h
- Include/GameLogic/Module/ObjectDefectionHelper.h
- Include/GameLogic/Module/ObjectHelper.h
- Include/GameLogic/Module/ObjectRepulsorHelper.h
- Include/GameLogic/Module/ObjectSMCHelper.h
- Include/GameLogic/Module/ObjectWeaponStatusHelper.h
+# Include/GameLogic/Module/ObjectDefectionHelper.h
+# Include/GameLogic/Module/ObjectHelper.h
+# Include/GameLogic/Module/ObjectRepulsorHelper.h
+# Include/GameLogic/Module/ObjectSMCHelper.h
+# Include/GameLogic/Module/ObjectWeaponStatusHelper.h
Include/GameLogic/Module/OCLSpecialPower.h
Include/GameLogic/Module/OCLUpdate.h
Include/GameLogic/Module/OpenContain.h
@@ -870,11 +870,11 @@ set(GAMEENGINE_SRC
Source/GameLogic/Object/ExperienceTracker.cpp
Source/GameLogic/Object/FiringTracker.cpp
Source/GameLogic/Object/GhostObject.cpp
- Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
- Source/GameLogic/Object/Helper/ObjectHelper.cpp
- Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
- Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
- Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
Source/GameLogic/Object/Locomotor.cpp
Source/GameLogic/Object/Object.cpp
Source/GameLogic/Object/ObjectCreationList.cpp
diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h b/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
deleted file mode 100644
index ea282e7fdd8..00000000000
--- a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectDefectionHelper.h //////////////////////////////////////////////////////////////////
-// Author: Steven Johnson, Colin Day - September 202
-// Desc: Object helper - defection
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "GameLogic/Module/ObjectHelper.h"
-
-//-------------------------------------------------------------------------------------------------
-#define DEFECTION_DETECTION_TIME_MAX (LOGICFRAMES_PER_SECOND * 10)
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectDefectionHelperModuleData : public ModuleData
-{
-
-};
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectDefectionHelper : public ObjectHelper
-{
-
- MAKE_STANDARD_MODULE_MACRO_WITH_MODULE_DATA( ObjectDefectionHelper, ObjectDefectionHelperModuleData )
- MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE(ObjectDefectionHelper, "ObjectDefectionHelperPool" )
-
-private:
-
- UnsignedInt m_defectionDetectionStart; ///< this is the timer, mentioned above (absolute frame, NOT counter)
- UnsignedInt m_defectionDetectionEnd; ///< this is the timer, mentioned above (absolute frame, NOT counter)
- Real m_defectionDetectionFlashPhase; ///< keeps track of the flashing rate logarithmic curve
- Bool m_doDefectorFX; ///.
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectHelper.h ///////////////////////////////////////////////////////////////////////////
-// Author: Steven Johnson, Colin Day - September 202
-// Desc: Object helper
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "GameLogic/Module/UpdateModule.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectHelper : public UpdateModule
-{
-
- MEMORY_POOL_GLUE_ABC( ObjectHelper )
-
-protected:
-
- // snapshot methods
- virtual void crc( Xfer *xfer ) override;
- virtual void xfer( Xfer *xfer ) override;
- virtual void loadPostProcess() override;
-
-public:
-
- ObjectHelper( Thing *thing, const ModuleData *modData ) :
- UpdateModule( thing, modData )
- {
- setWakeFrame(getObject(), UPDATE_SLEEP_FOREVER);
- }
-
- // custom to this class.
- void sleepUntil(UnsignedInt when);
-
-};
diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h b/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
deleted file mode 100644
index 9e4b227a26d..00000000000
--- a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectRepulsorHelper.h ////////////////////////////////////////////////////////////////////////
-// Author: Steven Johnson, December 202
-// Desc: Object helper - Repulsor
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "GameLogic/Module/ObjectHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectRepulsorHelperModuleData : public ModuleData
-{
-
-};
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectRepulsorHelper : public ObjectHelper
-{
-
- MAKE_STANDARD_MODULE_MACRO_WITH_MODULE_DATA( ObjectRepulsorHelper, ObjectRepulsorHelperModuleData )
- MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE(ObjectRepulsorHelper, "ObjectRepulsorHelper" )
-
-public:
-
- ObjectRepulsorHelper( Thing *thing, const ModuleData *modData ) : ObjectHelper( thing, modData ) { }
- // virtual destructor prototype provided by memory pool object
-
- virtual UpdateSleepTime update() override;
-
-};
diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h b/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
deleted file mode 100644
index 82f22db8462..00000000000
--- a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectSMCHelper.h ////////////////////////////////////////////////////////////////////////
-// Author: Steven Johnson, Colin Day - September 202
-// Desc: Object helper - SMC
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "GameLogic/Module/ObjectHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectSMCHelperModuleData : public ModuleData
-{
-
-};
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectSMCHelper : public ObjectHelper
-{
-
- MAKE_STANDARD_MODULE_MACRO_WITH_MODULE_DATA( ObjectSMCHelper, ObjectSMCHelperModuleData )
- MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE(ObjectSMCHelper, "ObjectSMCHelperPool" )
-
-public:
-
- ObjectSMCHelper( Thing *thing, const ModuleData *modData ) : ObjectHelper( thing, modData ) { }
- // virtual destructor prototype provided by memory pool object
-
- virtual UpdateSleepTime update() override;
-
-};
diff --git a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h b/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
deleted file mode 100644
index 5de48081afd..00000000000
--- a/Generals/Code/GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectWeaponStatusHelper.h ///////////////////////////////////////////////////////////////
-// Author: Steven Johnson, Colin Day - September 202
-// Desc: Object helper - WeaponStatus
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "Common/ThingTemplate.h"
-#include "GameLogic/Object.h"
-#include "GameLogic/Module/ObjectHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectWeaponStatusHelperModuleData : public ModuleData
-{
-
-};
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-class ObjectWeaponStatusHelper : public ObjectHelper
-{
-
- MAKE_STANDARD_MODULE_MACRO_WITH_MODULE_DATA( ObjectWeaponStatusHelper, ObjectWeaponStatusHelperModuleData )
- MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE(ObjectWeaponStatusHelper, "ObjectWeaponStatusHelperPool" )
-
-protected:
-
- /*
- The ObjectWeaponStatusHelper needs to have its update run after all "normal"
- user update modules, so it redefines this. Please don't redefine this
- for other modules without very careful deliberation. (srj)
- */
- virtual SleepyUpdatePhase getUpdatePhase() const override
- {
- return PHASE_FINAL;
- }
-public:
-
- ObjectWeaponStatusHelper( Thing *thing, const ModuleData *modData ) :
- ObjectHelper( thing, modData )
- {
- // unlike other helpers, this one needs to start active.
- DEBUG_ASSERTCRASH(getObject()->getTemplate()->canPossiblyHaveAnyWeapon(), ("should not be instantiated if we have no weapon"));
- setWakeFrame(getObject(), UPDATE_SLEEP_NONE);
- }
- // virtual destructor prototype provided by memory pool object
-
- virtual UpdateSleepTime update() override
- {
- getObject()->adjustModelConditionForWeaponStatus();
- // unlike other helpers, this one must run every frame.
- return UPDATE_SLEEP_NONE;
- }
-};
diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
deleted file mode 100644
index 0ec622b25a0..00000000000
--- a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectDefectionHelper.cpp ////////////////////////////////////////////////////////////////
-// Author: Colin Day, Steven Johnson - September 2002
-// Desc: Object helper module
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "PreRTS.h"
-#include "Common/MiscAudio.h"
-#include "Common/Xfer.h"
-#include "GameClient/Drawable.h"
-#include "GameLogic/GameLogic.h"
-#include "GameLogic/Object.h"
-#include "GameLogic/Module/ObjectDefectionHelper.h"
-
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-ObjectDefectionHelper::~ObjectDefectionHelper()
-{
-}
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-UpdateSleepTime ObjectDefectionHelper::update()
-{
- Object* obj = getObject();
- Drawable* draw = obj->getDrawable();
-
- // if we are here, we should be an undetected defector, but
- // just in case someone has changed us behind our backs...
- if (!obj->getIsUndetectedDefector())
- return UPDATE_SLEEP_FOREVER;
-
- UnsignedInt now = TheGameLogic->getFrame();
- if (now >= m_defectionDetectionEnd)
- {
- obj->friend_setUndetectedDefector(FALSE);
-
- // timer has reached zero, so we flash white once!!!! -- lorenzen
- if (draw && m_doDefectorFX)
- {
- RGBColor white = {1,1,1};
- if (draw)
- draw->flashAsSelected( &white ); //Whew! that's easier, now, isn't it!
-
-
- AudioEventRTS defectorVulnerableSound = TheAudio->getMiscAudio()->m_defectorTimerDingSound;
- defectorVulnerableSound.setObjectID( obj->getID() );
- TheAudio->addAudioEvent(&defectorVulnerableSound);
- }
- return UPDATE_SLEEP_FOREVER; // hey, we're done.
- }
-
- // dead or attacking... our cover is blown.
- if( obj->isEffectivelyDead() || obj->getStatusBits().test( OBJECT_STATUS_IS_FIRING_WEAPON ) )
- {
- // PLEASE NOTE:
- // checking the is_attacking statusbit above, only handles weapon related attacks...
- // I also set m_undetectedDefector = FALSE in the groupDoSpecialPower[...]() functions;
- obj->friend_setUndetectedDefector(FALSE);
- return UPDATE_SLEEP_FOREVER; // hey, we're done.
- }
-
- if (draw && m_doDefectorFX) // skip fx if merely 'invulnerable'
- {
- Bool lastPhase = ( ((Int)m_defectionDetectionFlashPhase) & 1 );// were we in a flashy phase last frame?
- UnsignedInt timeLeft = m_defectionDetectionEnd - now;
- m_defectionDetectionFlashPhase += 0.5f * ( 1.0f - ((Real)timeLeft / DEFECTION_DETECTION_TIME_MAX ) );
- Bool thisPhase = ( ((Int)m_defectionDetectionFlashPhase) & 1 );// are we in a flashy phase this frame?
-
- if ( lastPhase && ( ! thisPhase ) )
- {
- draw->flashAsSelected(); //Whew! that's easier, now, isn't it!
-
- AudioEventRTS defectorTimerSound = TheAudio->getMiscAudio()->m_defectorTimerTickSound;
- defectorTimerSound.setObjectID( obj->getID() );
- TheAudio->addAudioEvent(&defectorTimerSound);
-
- }
- }
-
- return UPDATE_SLEEP_NONE;
-}
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-void ObjectDefectionHelper::startDefectionTimer(UnsignedInt numFrames, Bool withDefectorFX)
-{
- Object* obj = getObject();
-
- if (!obj->getIsUndetectedDefector())
- {
- setWakeFrame(obj, UPDATE_SLEEP_FOREVER);
- return;
- }
-
- UnsignedInt now = TheGameLogic->getFrame();
- m_defectionDetectionStart = now;
- m_defectionDetectionEnd = now + numFrames;
- m_defectionDetectionFlashPhase = 0.0f;
- m_doDefectorFX = withDefectorFX;
-
- setWakeFrame(obj, UPDATE_SLEEP_NONE);
-}
-
-// ------------------------------------------------------------------------------------------------
-/** CRC */
-// ------------------------------------------------------------------------------------------------
-void ObjectDefectionHelper::crc( Xfer *xfer )
-{
-
- // object helper crc
- ObjectHelper::crc( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Xfer method
- * Version Info;
- * 1: Initial version */
-// ------------------------------------------------------------------------------------------------
-void ObjectDefectionHelper::xfer( Xfer *xfer )
-{
-
- // version
- XferVersion currentVersion = 1;
- XferVersion version = currentVersion;
- xfer->xferVersion( &version, currentVersion );
-
- // object helper base class
- ObjectHelper::xfer( xfer );
-
- // detection start
- xfer->xferUnsignedInt( &m_defectionDetectionStart );
-
- // detection end
- xfer->xferUnsignedInt( &m_defectionDetectionEnd );
-
- // flash phase
- xfer->xferReal( &m_defectionDetectionFlashPhase );
-
- // do defector fx
- xfer->xferBool( &m_doDefectorFX );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Load post process */
-// ------------------------------------------------------------------------------------------------
-void ObjectDefectionHelper::loadPostProcess()
-{
-
- // object helper base class
- ObjectHelper::loadPostProcess();
-
-}
diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
deleted file mode 100644
index e217bb4cfb0..00000000000
--- a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectHelper.cpp /////////////////////////////////////////////////////////////////////////
-// Author: Colin Day, Steven Johnson, September 2002
-// Desc: Object helper module base class
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "PreRTS.h"
-#include "Common/Xfer.h"
-#include "GameLogic/GameLogic.h"
-#include "GameLogic/Object.h"
-#include "GameLogic/Module/ObjectHelper.h"
-
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-ObjectHelper::~ObjectHelper()
-{
-
-}
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-void ObjectHelper::sleepUntil(UnsignedInt when)
-{
- if( getObject()->getStatusBits().test( OBJECT_STATUS_DESTROYED ) )
- return;
-
- // note the setWakeFrame(NEVER) actually awakens immediately, since NEVER==0.
- // when we get NEVER in this case, we really want to sleep forever.
- // so just special case it.
- UpdateSleepTime wakeDelay = (when == NEVER || when == FOREVER) ?
- UPDATE_SLEEP_FOREVER :
- UPDATE_SLEEP(when - TheGameLogic->getFrame());
- setWakeFrame(getObject(), wakeDelay);
-}
-
-// ------------------------------------------------------------------------------------------------
-/** CRC */
-// ------------------------------------------------------------------------------------------------
-void ObjectHelper::crc( Xfer *xfer )
-{
-
- // update module crc
- UpdateModule::crc( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/* Xfer method
- * Version Info:
- * 1: Initial Version */
-// ------------------------------------------------------------------------------------------------
-void ObjectHelper::xfer( Xfer *xfer )
-{
-
- // version
- XferVersion currentVersion = 1;
- XferVersion version = currentVersion;
- xfer->xferVersion( &version, currentVersion );
-
- // update module xfer
- UpdateModule::xfer( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Load post process */
-// ------------------------------------------------------------------------------------------------
-void ObjectHelper::loadPostProcess()
-{
-
- // update module post process
- UpdateModule::loadPostProcess();
-
-}
diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
deleted file mode 100644
index a7c6265be8b..00000000000
--- a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectRepulsorHelper.cpp //////////////////////////////////////////////////////////////////////
-// Author: Steven Johnson, December 2002
-// Desc: Repulsor helper
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "PreRTS.h"
-#include "Common/Xfer.h"
-#include "GameLogic/Object.h"
-#include "GameLogic/Module/ObjectRepulsorHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-ObjectRepulsorHelper::~ObjectRepulsorHelper()
-{
-
-}
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-UpdateSleepTime ObjectRepulsorHelper::update()
-{
- // if we ever get here, clear this.
- getObject()->clearStatus( MAKE_OBJECT_STATUS_MASK( OBJECT_STATUS_REPULSOR ) );
-
- // then go back to sleep until we are forcibly awakened.
- return UPDATE_SLEEP_FOREVER;
-}
-
-// ------------------------------------------------------------------------------------------------
-/** CRC */
-// ------------------------------------------------------------------------------------------------
-void ObjectRepulsorHelper::crc( Xfer *xfer )
-{
-
- // object helper crc
- ObjectHelper::crc( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Xfer method
- * Version Info;
- * 1: Initial version */
-// ------------------------------------------------------------------------------------------------
-void ObjectRepulsorHelper::xfer( Xfer *xfer )
-{
-
- // version
- XferVersion currentVersion = 1;
- XferVersion version = currentVersion;
- xfer->xferVersion( &version, currentVersion );
-
- // object helper base class
- ObjectHelper::xfer( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Load post process */
-// ------------------------------------------------------------------------------------------------
-void ObjectRepulsorHelper::loadPostProcess()
-{
-
- // object helper base class
- ObjectHelper::loadPostProcess();
-
-}
-
diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
deleted file mode 100644
index 901da04112a..00000000000
--- a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectSMCHelper.cpp //////////////////////////////////////////////////////////////////////
-// Author: Colin Day, Steven Johnson, September 2002
-// Desc: SMC helper
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "PreRTS.h"
-#include "Common/Xfer.h"
-#include "GameLogic/Object.h"
-#include "GameLogic/Module/ObjectSMCHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-ObjectSMCHelper::~ObjectSMCHelper()
-{
-
-}
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-UpdateSleepTime ObjectSMCHelper::update()
-{
- // if we ever get here, stop this.
- getObject()->clearSpecialModelConditionStates();
-
- // then go back to sleep until we are forcibly awakened.
- return UPDATE_SLEEP_FOREVER;
-}
-
-// ------------------------------------------------------------------------------------------------
-/** CRC */
-// ------------------------------------------------------------------------------------------------
-void ObjectSMCHelper::crc( Xfer *xfer )
-{
-
- // object helper crc
- ObjectHelper::crc( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Xfer method
- * Version Info;
- * 1: Initial version */
-// ------------------------------------------------------------------------------------------------
-void ObjectSMCHelper::xfer( Xfer *xfer )
-{
-
- // version
- XferVersion currentVersion = 1;
- XferVersion version = currentVersion;
- xfer->xferVersion( &version, currentVersion );
-
- // object helper base class
- ObjectHelper::xfer( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Load post process */
-// ------------------------------------------------------------------------------------------------
-void ObjectSMCHelper::loadPostProcess()
-{
-
- // object helper base class
- ObjectHelper::loadPostProcess();
-
-}
-
diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
deleted file mode 100644
index 1505de394d7..00000000000
--- a/Generals/Code/GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-** Command & Conquer Generals(tm)
-** Copyright 2025 Electronic Arts Inc.
-**
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 3 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see .
-*/
-
-////////////////////////////////////////////////////////////////////////////////
-// //
-// (c) 2001-2003 Electronic Arts Inc. //
-// //
-////////////////////////////////////////////////////////////////////////////////
-
-// FILE: ObjectSMCHelper.cpp //////////////////////////////////////////////////////////////////////
-// Author: Colin Day, Steven Johnson, September 2002
-// Desc: Weapon status helper
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-// INCLUDES ///////////////////////////////////////////////////////////////////////////////////////
-#include "PreRTS.h"
-#include "Common/Xfer.h"
-#include "GameLogic/Module/ObjectWeaponStatusHelper.h"
-
-// ------------------------------------------------------------------------------------------------
-// ------------------------------------------------------------------------------------------------
-ObjectWeaponStatusHelper::~ObjectWeaponStatusHelper()
-{
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** CRC */
-// ------------------------------------------------------------------------------------------------
-void ObjectWeaponStatusHelper::crc( Xfer *xfer )
-{
-
- // object helper crc
- ObjectHelper::crc( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Xfer method
- * Version Info;
- * 1: Initial version */
-// ------------------------------------------------------------------------------------------------
-void ObjectWeaponStatusHelper::xfer( Xfer *xfer )
-{
-
- // version
- XferVersion currentVersion = 1;
- XferVersion version = currentVersion;
- xfer->xferVersion( &version, currentVersion );
-
- // object helper base class
- ObjectHelper::xfer( xfer );
-
-}
-
-// ------------------------------------------------------------------------------------------------
-/** Load post process */
-// ------------------------------------------------------------------------------------------------
-void ObjectWeaponStatusHelper::loadPostProcess()
-{
-
- // object helper base class
- ObjectHelper::loadPostProcess();
-
-}
diff --git a/GeneralsMD/Code/GameEngine/CMakeLists.txt b/GeneralsMD/Code/GameEngine/CMakeLists.txt
index a636a00a345..d16e9204cff 100644
--- a/GeneralsMD/Code/GameEngine/CMakeLists.txt
+++ b/GeneralsMD/Code/GameEngine/CMakeLists.txt
@@ -362,11 +362,11 @@ set(GAMEENGINE_SRC
Include/GameLogic/Module/NeutronMissileSlowDeathUpdate.h
Include/GameLogic/Module/NeutronMissileUpdate.h
Include/GameLogic/Module/ObjectCreationUpgrade.h
- Include/GameLogic/Module/ObjectDefectionHelper.h
- Include/GameLogic/Module/ObjectHelper.h
- Include/GameLogic/Module/ObjectRepulsorHelper.h
- Include/GameLogic/Module/ObjectSMCHelper.h
- Include/GameLogic/Module/ObjectWeaponStatusHelper.h
+# Include/GameLogic/Module/ObjectDefectionHelper.h
+# Include/GameLogic/Module/ObjectHelper.h
+# Include/GameLogic/Module/ObjectRepulsorHelper.h
+# Include/GameLogic/Module/ObjectSMCHelper.h
+# Include/GameLogic/Module/ObjectWeaponStatusHelper.h
Include/GameLogic/Module/OCLSpecialPower.h
Include/GameLogic/Module/OCLUpdate.h
Include/GameLogic/Module/OpenContain.h
@@ -432,7 +432,7 @@ set(GAMEENGINE_SRC
Include/GameLogic/Module/SpyVisionUpdate.h
Include/GameLogic/Module/SquishCollide.h
Include/GameLogic/Module/StatusBitsUpgrade.h
- Include/GameLogic/Module/StatusDamageHelper.h
+# Include/GameLogic/Module/StatusDamageHelper.h
Include/GameLogic/Module/StealthDetectorUpdate.h
Include/GameLogic/Module/StealthUpdate.h
Include/GameLogic/Module/StealthUpgrade.h
@@ -440,7 +440,7 @@ set(GAMEENGINE_SRC
Include/GameLogic/Module/StructureBody.h
Include/GameLogic/Module/StructureCollapseUpdate.h
Include/GameLogic/Module/StructureToppleUpdate.h
- Include/GameLogic/Module/SubdualDamageHelper.h
+# Include/GameLogic/Module/SubdualDamageHelper.h
Include/GameLogic/Module/SubObjectsUpgrade.h
Include/GameLogic/Module/SupplyCenterCreate.h
Include/GameLogic/Module/SupplyCenterDockUpdate.h
@@ -450,7 +450,7 @@ set(GAMEENGINE_SRC
Include/GameLogic/Module/SupplyWarehouseCripplingBehavior.h
Include/GameLogic/Module/SupplyWarehouseDockUpdate.h
Include/GameLogic/Module/TechBuildingBehavior.h
- Include/GameLogic/Module/TempWeaponBonusHelper.h
+# Include/GameLogic/Module/TempWeaponBonusHelper.h
Include/GameLogic/Module/TensileFormationUpdate.h
Include/GameLogic/Module/ToppleUpdate.h
Include/GameLogic/Module/TransitionDamageFX.h
@@ -936,14 +936,14 @@ set(GAMEENGINE_SRC
Source/GameLogic/Object/ExperienceTracker.cpp
Source/GameLogic/Object/FiringTracker.cpp
Source/GameLogic/Object/GhostObject.cpp
- Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
- Source/GameLogic/Object/Helper/ObjectHelper.cpp
- Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
- Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
- Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
- Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
- Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
- Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp
+# Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp
+# Source/GameLogic/Object/Helper/StatusDamageHelper.cpp
+# Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp
+# Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp
Source/GameLogic/Object/Locomotor.cpp
Source/GameLogic/Object/Object.cpp
Source/GameLogic/Object/ObjectCreationList.cpp
diff --git a/scripts/cpp/unify_move_files.py b/scripts/cpp/unify_move_files.py
index 567a2465030..9ba19165adf 100644
--- a/scripts/cpp/unify_move_files.py
+++ b/scripts/cpp/unify_move_files.py
@@ -696,6 +696,23 @@ def main():
#unify_file(Game.ZEROHOUR, "GameEngine/Include/GameClient/ShellMenuScheme.h", Game.CORE, "GameEngine/Include/GameClient/ShellMenuScheme.h")
#unify_file(Game.ZEROHOUR, "GameEngine/Source/GameClient/GUI/Shell/ShellMenuScheme.cpp", Game.CORE, "GameEngine/Source/GameClient/GUI/Shell/ShellMenuScheme.cpp")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/ObjectDefectionHelper.h")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/ObjectHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/ObjectHelper.h")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/ObjectRepulsorHelper.h")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/ObjectSMCHelper.h")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/ObjectWeaponStatusHelper.h")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/StatusDamageHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/StatusDamageHelper.h")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/SubdualDamageHelper.h")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h", Game.CORE, "GameEngine/Include/GameLogic/Module/TempWeaponBonusHelper.h")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/ObjectDefectionHelper.cpp")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/ObjectHelper.cpp")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/ObjectRepulsorHelper.cpp")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/ObjectSMCHelper.cpp")
+ #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/ObjectWeaponStatusHelper.cpp")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/StatusDamageHelper.cpp")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/SubdualDamageHelper.cpp")
+ #unify_move_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp", Game.CORE, "GameEngine/Source/GameLogic/Object/Helper/TempWeaponBonusHelper.cpp")
+
return