package BaseStatusEffect
using RTDB, Prereqs

Deaf : StatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Deafened";
	CName[] gameplayTags = 
	[
		"Debuff", "Deaf"
	];
	fk< StatModifierGroup > duration = "BaseStats.InfiniteDuration";
	uiData = 
	{
		string displayName = "Deafened";
	};
}

MuteAudioStims : StatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.MuteAudioStims";
	CName[] gameplayTags = 
	[
		"Debuff", "Mute"
	];
	fk< StatModifierGroup > duration = "BaseStats.InfiniteDuration";
	uiData = 
	{
		string displayName = "Muted";
		string iconPath = "cyberware_disabled_icon";
	};
}

GagOpportunity : StatusEffect
{
	CName[] gameplayTags = 
	[
		"GagOpportunity"
	];
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 1.5f;
			} : ConstantStatModifier
		];
	};
}

Gag : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.MuteAudioStims";
	gameplayTags += 
	[
		"Mute", "CommsNoiseJam", "ResetSquadSync"
	];
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 5.f;
			} : ConstantStatModifier
		];
	};
	packages = 
	[
		{
			stats = 
			[
				{
					statType = "BaseStats.CanCallReinforcements";
					modifierType = "Multiplier";
					value = 0.f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
}

JamCommuniations : StatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.JamCommuniations";
	CName[] gameplayTags = 
	[
		"Debuff", "JamComms"
	];
	fk< StatModifierGroup > duration = "BaseStats.InfiniteDuration";
	uiData = 
	{
		string displayName = "Comms Jammed";
		string iconPath = "disabled_comms";
		priority = -1.0f;
	};
}

HearingImpaired : StatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Deafened";
	CName[] gameplayTags = 
	[
		"Debuff", "Audio", "HearingImpaired"
	];
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			stats = 
			[
				{
					statType = "BaseStats.Hearing";
					modifierType = "Multiplier";
					value = 0.5f;
				} : ConstantStatModifier
			];
		}
	];
	fk< StatusEffectAIData > AIData = 
	{
		float priority = 6.f;
		fk< IPrereq >[] activationPrereqs = 
		[
			{
				stateName = "Combat";
				invert = true;
			} : Prereqs.CurrentHighLevelNPCStatePrereq
		];
		fk< StatusEffectAIBehaviorFlag > behaviorEventFlag = "StatusEffectAIBehaviorFlag.InterruptsSamePriorityTask";
		fk< StatusEffectAIBehaviorType > behaviorType = "StatusEffectAIBehaviorType.Unstoppable";
	};
}

SeverelyHearingImpaired : StatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Deafened";
	CName[] gameplayTags = 
	[
		"Debuff", "Audio", "HearingImpaired"
	];
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			stats = 
			[
				{
					statType = "BaseStats.Hearing";
					modifierType = "Multiplier";
					value = 0.3f;
				} : ConstantStatModifier
			];
		}
	];
	fk< StatusEffectAIData > AIData = 
	{
		float priority = 6.f;
		fk< IPrereq >[] activationPrereqs = 
		[
			{
				stateName = "Combat";
				invert = true;
			} : Prereqs.CurrentHighLevelNPCStatePrereq
		];
		fk< StatusEffectAIBehaviorFlag > behaviorEventFlag = "StatusEffectAIBehaviorFlag.InterruptsSamePriorityTask";
		fk< StatusEffectAIBehaviorType > behaviorType = "StatusEffectAIBehaviorType.Unstoppable";
	};
}

