The problem in question is caused by setting orientation of the trigger *before* adding it as a child of the trigger carrier in the original code.
``` void SpawnTrigger()
{
if (!CanSpawnTrigger())
{
RequestDelayedTriggerSpawn();
return;
}
if (UndergroundAreaLoader.m_JsonData.Triggers && UndergroundAreaLoader.m_JsonData.Triggers.IsValidIndex(m_TriggerIndex))
{
JsonUndergroundAreaTriggerData data = UndergroundAreaLoader.m_JsonData.Triggers[m_TriggerIndex];
UndergroundTrigger trigger = UndergroundTrigger.Cast(GetGame().CreateObjectEx( "UndergroundTrigger", GetPosition(), ECE_LOCAL ));
if (trigger)
{
#ifdef DEVELOPER
trigger.m_Local = true;
#endif
trigger.SetPosition(vector.Zero);
if (GetOrientation() != vector.Zero)
trigger.SetOrientation(GetOrientation());
AddChild(trigger,-1);
trigger.Init(data);
m_Trigger = trigger;
}
}
}
```
**Additionally, `#ifdef DEVELOPER` should be `#ifdef DIAG_DEVELOPER`, as DEVELOPER is only present on internal builds.
**
The fixed code is as follows:
``` void SpawnTrigger()
{
if (!CanSpawnTrigger())
{
RequestDelayedTriggerSpawn();
return;
}
if (UndergroundAreaLoader.m_JsonData.Triggers && UndergroundAreaLoader.m_JsonData.Triggers.IsValidIndex(m_TriggerIndex))
{
JsonUndergroundAreaTriggerData data = UndergroundAreaLoader.m_JsonData.Triggers[m_TriggerIndex];
UndergroundTrigger trigger = UndergroundTrigger.Cast(GetGame().CreateObjectEx( "UndergroundTrigger", GetPosition(), ECE_LOCAL ));
if (trigger)
{
#ifdef DIAG_DEVELOPER
trigger.m_Local = true;
#endif
trigger.SetPosition(vector.Zero);
AddChild(trigger,-1);
trigger.Init(data);
m_Trigger = trigger;
}
}
}```