importonly class StatusEffectComponent extends GameComponent
{
}

class StatusEffectManagerComponent extends AIMandatoryComponents
{
	private var m_weaponDropedInWounded : Bool;

	private function GetPuppet() : ScriptedPuppet
	{
		return ( ( ScriptedPuppet )( GetOwner() ) );
	}

	private function GetBlackboard() : IBlackboard
	{
		return GetPuppet().GetPuppetStateBlackboard();
	}

	private function SetAnimWrapperWeight( key : CName, value : Float )
	{
		var ev : AnimWrapperWeightSetter;
		ev = new AnimWrapperWeightSetter;
		ev.key = key;
		ev.value = value;
		GetPuppet().QueueEvent( ev );
	}

	protected event OnStatusEffectApplied( evt : ApplyStatusEffectEvent )
	{
		var statusEffectTags : array< CName >;
		if( evt.staticData )
		{
			statusEffectTags = evt.staticData.GameplayTags();
			if( statusEffectTags.Contains( 'Dismember' ) )
			{
				EnterInstantDismemberment();
			}
		}
	}

	private function EnterInstantDismemberment()
	{
		var forcedDeathEvent : ForcedDeathEvent;
		forcedDeathEvent = new ForcedDeathEvent;
		forcedDeathEvent.hitIntensity = 1;
		forcedDeathEvent.hitSource = 1;
		forcedDeathEvent.hitType = 7;
		forcedDeathEvent.hitBodyPart = 1;
		forcedDeathEvent.hitNpcMovementSpeed = 0;
		forcedDeathEvent.hitDirection = 4;
		forcedDeathEvent.hitNpcMovementDirection = 0;
		GetPuppet().QueueEvent( forcedDeathEvent );
		DismembermentComponent.RequestDismemberment( GetOwner(), gameDismBodyPart.HEAD, gameDismWoundType.COARSE );
		GameObjectEffectHelper.StartEffectEvent( GameInstance.GetPlayerSystem( GetOwner().GetGame() ).GetLocalPlayerMainGameObject(), 'blood_onscreen' );
	}

}

