package RTDB

StatusEffect
{
	fk< StatusEffectType > statusEffectType = "BaseStatusEffectTypes.Misc";
	CName additionalParam = "";
	CName[] gameplayTags = [];
	bool savable = true;
	bool removeAllStacksWhenDurationEnds = false;
	bool reapplyPackagesOnMaxStacks = false;
	fk< StatModifierGroup > removeAllStacksWhenDurationEndsStatModifiers = "";
	bool removeOnStoryTier = false;
	bool replicated = false;
	bool dynamicDuration = false;
	fk< StatModifierGroup > duration = "";
	fk< StatModifierGroup > maxStacks = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxStacks";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
	fk< Stat >[] immunityStats = [];
	bool isAffectedByTimeDilationNPC = true;
	bool isAffectedByTimeDilationPlayer = true;
	bool stopActiveSfxOnDeactivate = true;
	fk< StatusEffectFX >[] VFX = [];
	fk< StatusEffectFX >[] SFX = [];
	CName[] debugTags = [];
	fk< StatusEffectUIData > uiData = "";
	fk< StatusEffectAIData > AIData = "";
	fk< StatusEffectPlayerData > playerData = "";
	fk< GameplayLogicPackage >[] packages = [];
}

WorkspotStatusEffect : StatusEffect
{
}

GameplayRestrictionStatusEffect : StatusEffect
{
	duration = "BaseStats.InfiniteDuration";
	maxStacks = "BaseStats.InfiniteStacks";
	statusEffectType = "BaseStatusEffectTypes.Misc";
	gameplayTags = 
	[
		"GameplayRestriction"
	];
	fk< ActionRestrictionGroup > actionRestriction = "";
}

StatusEffectType
{
	string enumName = "";
	string enumComment = "";
}

StatusEffectVariation
{
	CName enumName = "";
	string enumComment = "";
}

StatusEffectFX
{
	CName name = "";
	bool shouldReapply = false;
}

StatusEffectAIData
{
	fk< IPrereq >[] activationPrereqs = [];
	float priority = 0.f;
	fk< StatusEffectAIBehaviorFlag > behaviorEventFlag = "";
	fk< StatusEffectAIBehaviorType > behaviorType = "";
	CName behaviourName = "";
	bool updateSenses = false;
	fk< SensePreset > sensePreset = "";
	fk< Stim >[] stimulis = [];
	float stimRangeMultiplier = 1.f;
	fk< StatModifier >[] behaviorSignalResendDelay = [];
	bool shouldDelayStatusEffectApplication = false;
	bool shouldProcessAIDataOnReapplication = false;
	bool allowDelayStatusEffectSignalIfSamePriorityExecuting = false;
}

StatusEffectPlayerData
{
	fk< StatusEffectVariation > statusEffectVariation = "StatusEffectVariation.Default";
	float priority = 0.f;
	float startupAnimDuration = -1.f;
	float startupAnimInterruptPoint = -1.f;
	float landAnimDuration = -1.f;
	float recoveryAnimDuration = -1.f;
	float airRecoveryAnimDuration = -1.f;
	float impulseDistance = 0.f;
	float cameraShakeStrength = 0.f;
	bool cameraInputInterference = false;
	bool jamWeapon = false;
	bool forceSafeWeapon = false;
	bool forceUnequipWeapon = false;
	bool blockMovement = false;
	bool disableSprint = false;
	bool disableJump = false;
	bool disableCrouch = false;
	bool disableDodge = false;
	bool rotateToSource = false;
	bool scaleImpulseDistance = false;
}

StatusEffectAIBehaviorType
{
	CName enumName = "";
	string enumComment = "";
}

StatusEffectAIBehaviorFlag
{
	CName enumName = "";
	string enumComment = "";
}

StatusEffectUIData
{
	string displayName = "";
	string description = "";
	int[] intValues = [];
	float[] floatValues = [];
	CName[] nameValues = [];
	fk< Stat >[] stats = [];
	string fluffText = "";
	string iconPath = "decreased_stats_icon";
	float priority = 0.f;
}

