diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/HelixContain.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/HelixContain.cpp index c6da15c17c5..55be272b728 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/HelixContain.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Contain/HelixContain.cpp @@ -39,6 +39,7 @@ #include "Common/ThingFactory.h" #include "GameClient/ControlBar.h" #include "GameClient/Drawable.h" +#include "GameLogic/ExperienceTracker.h" #include "GameLogic/Module/BodyModule.h" #include "GameLogic/Module/HelixContain.h" #include "GameLogic/Object.h" @@ -272,6 +273,12 @@ void HelixContain::addToContain( Object *obj ) m_portableStructureID = obj->getID(); obj->friend_setContainedBy( getObject() );//fool portable into thinking my object is his container +#if !RETAIL_COMPATIBLE_CRC + // Portable structures bypass onContaining(), so route their kill XP here. + if ( obj->getExperienceTracker() ) + obj->getExperienceTracker()->setExperienceSink( getObject()->getID() ); +#endif + DEBUG_ASSERTCRASH(getObject() == nullptr || !getObject()->isDestroyed(), ("HelixContain::addToContain - Adding to a destroyed container")); } @@ -401,7 +408,6 @@ void HelixContain::onContaining( Object *obj, Bool wasSelected ) obj->setWeaponBonusCondition( WEAPONBONUSCONDITION_GARRISONED ); obj->setDisabled( DISABLED_HELD ); - if ( obj->isKindOf( KINDOF_PORTABLE_STRUCTURE ) && getObject()->testStatus( OBJECT_STATUS_STEALTHED ) ) { StealthUpdate *myStealth = obj->getStealth();