This issue is caused because of the way CBaseEntityOutput::FireOutput works, it queues the output to CEventQueue by the CEventQueue::AddEvent method but passes the entity's name instead of the entity itself, which makes it call all the entities which share the exact same name.
In order to fix this one must simply apply conditional checks just before the g_EventQueue.AddEvent calls in CBaseEntityOutput::FireOutput to check if pCaller is a trigger and if pCaller's name is the same as ev.m_iTarget, if true, then pass the entity itself otherwise pass the entity's name.
This issue is caused because of the way
CBaseEntityOutput::FireOutput
works, it queues the output toCEventQueue
by theCEventQueue::AddEvent
method but passes the entity's name instead of the entity itself, which makes it call all the entities which share the exact same name.In order to fix this one must simply apply conditional checks just before the
g_EventQueue.AddEvent
calls inCBaseEntityOutput::FireOutput
to check ifpCaller
is a trigger and ifpCaller
's name is the same asev.m_iTarget
, if true, then pass the entity itself otherwise pass the entity's name.