diff --git a/Core/GameEngine/Include/Common/GameDefines.h b/Core/GameEngine/Include/Common/GameDefines.h index 7a6f4be4d11..886da9c0e9d 100644 --- a/Core/GameEngine/Include/Common/GameDefines.h +++ b/Core/GameEngine/Include/Common/GameDefines.h @@ -47,6 +47,10 @@ #define PRESERVE_NO_XP_FROM_OCL_KILLS (1) #endif +#ifndef PRESERVE_MISSING_AURORA_SECOND_EXPLOSION +#define PRESERVE_MISSING_AURORA_SECOND_EXPLOSION (0) +#endif + #ifndef PRESERVE_NO_XP_FROM_POISON_KILLS #define PRESERVE_NO_XP_FROM_POISON_KILLS (1) #endif diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp index 475811e44c0..de8449ced13 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Weapon.cpp @@ -30,6 +30,8 @@ // INCLUDES /////////////////////////////////////////////////////////////////////////////////////// #include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine +#include + #define DEFINE_DEATH_NAMES #define DEFINE_WEAPONBONUSCONDITION_NAMES #define DEFINE_WEAPONBONUSFIELD_NAMES @@ -1672,6 +1674,16 @@ WeaponTemplate *WeaponStore::newWeaponTemplate(AsciiString name) WeaponTemplate *wt = newInstance(WeaponTemplate); wt->m_name = name; wt->m_nameKey = TheNameKeyGenerator->nameToKey( name ); + +#if !RETAIL_COMPATIBLE_CRC && !PRESERVE_MISSING_AURORA_SECOND_EXPLOSION + // TheSuperHackers @bugfix Okladnoj 03/08/2026 Force MissileCallsOnDie; missing in INI breaks second explosion. + if (strcmp(name.str(), "SupW_AuroraFuelBombWeapon") == 0) + { + wt->m_dieOnDetonate = TRUE; + DEBUG_LOG(("WeaponStore::newWeaponTemplate() - forcing MissileCallsOnDie for %s", name.str())); + } +#endif + m_weaponTemplateVector.push_back(wt); m_weaponTemplateHashMap[wt->m_nameKey] = wt;