package BaseStatusEffect
using RTDB, Prereqs

BreathingAnimationEffector : Effector
{
	effectorClassName = "PlayBreathingAnimationEffector";
	CName animFeatureName = "";
	float amplitudeWeight = 0.f;
	float blendInDuration = 1.f;
	float blendOutDuration = 1.f;
}

[ notQueryable ]
CameraAnimationAbstract : StatusEffect
{
	gameplayTags = 
	[
		"CameraAnimation"
	];
	statusEffectType = "BaseStatusEffectTypes.Misc";
	replicated = true;
	fk< StatModifierGroup > maxStacks = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxStacks";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

[ notQueryable ]
BreathingAbstract : CameraAnimationAbstract
{
	gameplayTags += 
	[
		"Breathing"
	];
}

BreathingLow : BreathingAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "CameraBreathingLow";
					float amplitudeWeight = 1.f;
					float blendInDuration = 2.f;
					float blendOutDuration = 2.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

BreathingMedium : BreathingAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "CameraBreathingMedium";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

BreathingHeavy : BreathingAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "CameraBreathingHeavy";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

BreathingSick : BreathingAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "CameraBreathingSick";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

[ notQueryable ]
CameraShakeAbstract : CameraAnimationAbstract
{
	gameplayTags += 
	[
		"CameraShake"
	];
}

BoatRocking : CameraShakeAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "BoatRocking";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

DrillingShakeNormal : CameraShakeAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "DrillingShakeNormal";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

DrillingShakeMedium : CameraShakeAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "DrillingShakeMedium";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

DrillingShakeHeavy : CameraShakeAbstract
{
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "DrillingShakeHeavy";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

ChimeraStompShake : DrillingShakeHeavy
{
	fk< StatModifierGroup > duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 2;
			} : ConstantStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			fk< Effector >[] effectors = 
			[
				{
					CName animFeatureName = "DrillingShakeHeavy";
					float amplitudeWeight = 1.f;
					float blendInDuration = 5.f;
					float blendOutDuration = 5.f;
				} : BaseStatusEffect.BreathingAnimationEffector
			];
		} : GameplayLogicPackage
	];
}

