class TakedownGameEffectHelper { public static function FillTakedownData( executionOwner : weak< GameObject >, activator : weak< GameObject >, target : weak< GameObject >, effectName : CName, effectTag : CName, optional statusEffect : String ) : Bool { var gameEffect : EffectInstance; var targetPosition : Vector4; var broadcaster : StimBroadcasterComponent; gameEffect = GameInstance.GetGameEffectSystem( activator.GetGame() ).CreateEffectStatic( effectName, effectTag, activator ); if( !( ( gameEffect || activator ) || target ) ) { return false; } targetPosition = target.GetWorldPosition(); EffectData.SetVector( gameEffect.GetSharedData(), GetAllBlackboardDefs().EffectSharedData.position, targetPosition ); EffectData.SetEntity( gameEffect.GetSharedData(), GetAllBlackboardDefs().EffectSharedData.entity, target ); if( IsStringValid( statusEffect ) ) { EffectData.SetString( gameEffect.GetSharedData(), GetAllBlackboardDefs().EffectSharedData.effectorRecordName, statusEffect ); } gameEffect.Run(); broadcaster = activator.GetStimBroadcasterComponent(); if( broadcaster ) { broadcaster.AddActiveStimuli( executionOwner, gamedataStimType.IllegalInteraction, -1.0 ); } return true; } }