import enum gameeventsDeathDirection
{
	Undefined,
	Left,
	Backward,
	Right,
	Forward,
}

importonly final class gameDeathParamsEvent extends Event
{
	import var noAnimation : Bool;
	import var noRagdoll : Bool;
}

importonly final class gameDeathDirectionEvent extends Event
{
	import var direction : gameeventsDeathDirection;
}

importonly final class gameHighLevelStateDataEvent extends Event
{
	import var currentHighLevelState : gamedataNPCHighLevelState;
	import var currentNPCEntityID : EntityID;
}

class SetScriptExecutionContextEvent extends Event
{
	var scriptExecutionContext : ScriptExecutionContext;
}

class HidePuppetDelayEvent extends Event
{
	var m_target : weak< NPCPuppet >;
}

class RagdollToggleDelayEvent extends Event
{
	var target : weak< GameObject >;
	var enable : Bool;
	var force : Bool;
	var leaveRagdollEnabled : Bool;
}

class HeavyFootstepEvent extends Event
{
	var instigator : weak< GameObject >;
	var audioEventName : CName;
}

importonly final class gameCameraShakeEvent extends Event
{
	import var shakeStrength : Float;
}

class TestNPCOutsideNavmeshEvent extends Event
{
	var activator : weak< GameObject >;
	var target : weak< GameObject >;
	var enable : Bool;
}

import final class StartFinisherEvent extends Event
{
	import var slideTime : Float;
	import var target : weak< GameObject >;
	var actionName : CName;
	var isBossFinisher : Bool;
}

import final class StartTakedownEvent extends Event
{
	import var slideTime : Float;
	import var target : weak< GameObject >;
	var actionName : CName;
}

import final class EndTakedownEvent extends Event
{
}

import final class gameProperlySeenByPlayerEvent extends Event
{
}

class StatusEffectSignalEvent extends Event
{
	var statusEffectID : TweakDBID;
	var priority : Float;
	var tags : array< CName >;
	var flags : array< EAIGateSignalFlags >;
	var repeatSignalDelay : Float;
}

class CacheStatusEffectFXEvent extends Event
{
	var vfxToCache : array< weak< StatusEffectFX_Record > >;
	var sfxToCache : array< weak< StatusEffectFX_Record > >;
}

class RemoveCachedStatusEffectFXEvent extends Event
{
}

class CacheStatusEffectAnimEvent extends Event
{
	var removeCachedStatusEffect : Bool;
}

class ApplyNewStatusEffectEvent extends Event
{
	var effectID : TweakDBID;
	var instigatorID : TweakDBID;

	public function SetEffectID( const effectName : ref< String > )
	{
		effectID = TDBID.Create( effectName );
	}

}

class RemoveStatusEffectEvent extends Event
{
	var effectID : TweakDBID;
	var removeCount : Uint32;

	public function SetEffectID( const effectName : ref< String > )
	{
		effectID = TDBID.Create( effectName );
	}

}

class RemoveAllStatusEffectOfTypeEvent extends Event
{
	var statusEffectType : gamedataStatusEffectType;
}

class CheckPuppetRagdollStateEvent extends Event
{
}

class CheckDeadPuppetDisposedEvent extends Event
{
}

class CheckUncontrolledMovementStatusEffectEvent extends Event
{
}

class DelayedStatusEffectApplicationEvent extends Event
{
	var statusEffectEvent : ApplyStatusEffectEvent;
}

