package BaseStatusEffect
using RTDB, Perks, Prereqs, Effectors, Attacks

BurningBuffEffector : ApplyStatGroupEffector
{
	prereqRecord = 
	{
		nestedPrereqs = 
		[
			{
				statType = "HasBurningBuffs";
				valueToCheck = 0;
				comparisonType = "LessOrEqual";
			} : StatPrereq, 
			{
				prereqClassName = "IsPlayerPrereq";
				bool invert = true;
			} : IPrereq
		];
	} : Prereqs.ANDPrereq;
	fk< StatModifierGroup > statGroup = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxSpeed";
				modifierType = "Multiplier";
				value = 0.6f;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.JumpHeight";
				modifierType = "Multiplier";
				value = 0.7f;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasDodge";
				modifierType = "Multiplier";
				value = 0;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanCrouch";
				modifierType = "Multiplier";
				value = 0;
			} : ConstantStatModifier
		];
	} : StatModifierGroup;
}

PlayerBurning : Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.DurationReductionDot";
				refObject = "Player";
				opSymbol = "*";
				value = -0.01f;
			} : CombinedStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningSFX"
			];
		} : GameplayLogicPackage, 
		{
			bool stackable = true;
			effectors = 
			[
				"BaseStatusEffect.BurningBuffEffector", {
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								statType = "HasBurningBuffs";
								valueToCheck = 0;
								comparisonType = "LessOrEqual";
							} : StatPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.LightThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : MultiPrereq;
					CName effectorClassName = "AddStatusEffectToAttackEffector";
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : ApplyStatusEffectEffector
			];
		} : GameplayLogicPackage
	];
}

Burning : DoTStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Burning";
	bool replicated = true;
	fk< StatusEffectFX >[] VFX = 
	[
		{
			name = "status_burning";
		}
	];
	fk< StatusEffectFX >[] SFX = 
	[
		{
			name = "";
		}
	];
	fk< StatModifierGroup > duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "AdditiveMultiplier";
				refObject = "Player";
				refStat = "BaseStats.DurationBonusBurning";
				opSymbol = "*";
				value = 1;
			} : CombinedStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningSFX"
			];
		} : GameplayLogicPackage, 
		{
			bool stackable = true;
			effectors = 
			[
				"BaseStatusEffect.BurningBuffEffector", {
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								statType = "HasBurningBuffs";
								valueToCheck = 0;
								comparisonType = "LessOrEqual";
							} : StatPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.ThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : MultiPrereq;
					CName effectorClassName = "AddStatusEffectToAttackEffector";
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : ApplyStatusEffectEffector
			];
		} : GameplayLogicPackage
	];
	fk< Stat >[] immunityStats = 
	[
		"BaseStats.BurningImmunity"
	];
	fk< StatusEffectAIData > AIData = 
	{
		float priority = 6.f;
		fk< IPrereq >[] activationPrereqs = 
		[
			{
				statType = "HasBurningBuffs";
				valueToCheck = 0;
				comparisonType = "LessOrEqual";
			} : StatPrereq, 
			{
				invert = true;
				stateName = "Combat";
			} : CurrentHighLevelNPCStatePrereq, 
			{
				allowedTypes = 
				[
					"NPCType.Human"
				];
			} : NPCTypePrereq, 
			{
				statType = "IsMechanical";
				valueToCheck = 0;
				comparisonType = "LessOrEqual";
			} : StatPrereq
		];
		fk< StatusEffectAIBehaviorFlag > behaviorEventFlag = "StatusEffectAIBehaviorFlag.InterruptsSamePriorityTask";
		fk< StatusEffectAIBehaviorType > behaviorType = "StatusEffectAIBehaviorType.Unstoppable";
		fk< StatModifier >[] behaviorSignalResendDelay = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 10;
			} : ConstantStatModifier
		];
		shouldDelayStatusEffectApplication = true;
	};
	uiData = "BaseStatusEffect.BaseBurningUI";
}

MediumBurning : Burning
{
	fk< StatModifierGroup > duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 6;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "AdditiveMultiplier";
				refObject = "Player";
				refStat = "BaseStats.DurationBonusBurning";
				opSymbol = "*";
				value = 1;
			} : CombinedStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningSFX"
			];
		} : GameplayLogicPackage, 
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 0.6f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 0.7f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodge";
					modifierType = "Multiplier";
					value = 0;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.CanCrouch";
					modifierType = "Multiplier";
					value = 0;
				} : ConstantStatModifier
			];
			bool stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = "Prereqs.AlwaysTruePrereq";
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.ThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

Testera_Nicolas_SelfBurning : Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 5;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.DurationReductionDot";
				refObject = "Player";
				opSymbol = "*";
				value = -0.01f;
			} : CombinedStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			effectors = 
			[
				"BaseStatusEffect.BurningBuffEffector", "BaseStatusEffect.BurningSFX", {
					prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.Testera_Nicolas_ThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : ANDPrereq;
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : AddStatusEffectToAttackEffector
			];
		} : GameplayLogicPackage
	];
}

CuttingGrenadeAttack : DebuffStatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 0.5;
			} : ConstantStatModifier
		];
	};
	packages = 
	[
		{
			effectors = 
			[
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.6f;
					string bodyPart = "LEFT_ARM";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					string bodyPart = "HEAD";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.4f;
					string bodyPart = "RIGHT_ARM";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.5f;
					string bodyPart = "RIGHT_LEG";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.4f;
					string bodyPart = "LEFT_LEG";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector
			];
		} : GameplayLogicPackage
	];
}

CuttingGrenadeAttackPlus : DebuffStatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 7;
			} : ConstantStatModifier
		];
	};
	packages = 
	[
		{
			effectors = 
			[
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.6f;
					string bodyPart = "LEFT_ARM";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					string bodyPart = "HEAD";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.4f;
					string bodyPart = "RIGHT_ARM";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.5f;
					string bodyPart = "RIGHT_LEG";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								allowedTypes = 
								[
									"NPCType.Human"
								];
							} : NPCTypePrereq, 
							{
								rarity = "Boss";
								invert = true;
							} : NPCRarityPrereq, 
							{
								rarity = "MaxTac";
								invert = true;
							} : NPCRarityPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "LessOrEqual";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 25.0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq, 
							{
								statPoolType = "Health";
								comparisonType = "Greater";
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0f;
									} : ConstantStatModifier
								];
							} : StatPoolPrereq
						];
					} : Prereqs.ANDPrereq;
					CName effectorClassName = "ForceDismembermentEffector";
					float dismembermentChance = 0.4f;
					string bodyPart = "LEFT_LEG";
					string woundType = "COARSE";
					bool shouldKillNPC = true;
					bool isCritical = true;
					bool skipDeathAnim = false;
				} : ForceDismembermentEffector
			];
		} : GameplayLogicPackage
	];
}

BurnGrenade : Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 5;
			} : ConstantStatModifier
		];
	};
	gameplayTags += 
	[
		"GrenadeStatusEffect", "BurnGrenade"
	];
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningSFX"
			];
		} : GameplayLogicPackage, 
		{
			bool stackable = true;
			effectors = 
			[
				"BaseStatusEffect.BurningBuffEffector"
			];
		}, 
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.6f;
					attackRecord = "Attacks.PlayerBurnGrenadeDoT";
				} : ContinuousAttackEffector
			];
		}
	];
}

UncommonBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.25f;
					attackRecord = "Attacks.GrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

UncommonPlusBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.23f;
					attackRecord = "Attacks.GrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

RareBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.45f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

RarePlusBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.43f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

EpicBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.40f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								prereqClassName = "IsPlayerPrereq";
								bool invert = true;
							} : IPrereq, 
							{
								statType = "Armor";
								valueToCheck = 50;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					attackRecord = "Attacks.LightGrenadeThermalDamageOverTime";
					delayTime = 0.25f;
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

EpicPlusBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.30f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								prereqClassName = "IsPlayerPrereq";
								bool invert = true;
							} : IPrereq, 
							{
								statType = "Armor";
								valueToCheck = 50;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					attackRecord = "Attacks.LightGrenadeThermalDamageOverTime";
					delayTime = 0.25f;
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

LegendaryBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.22f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								prereqClassName = "IsPlayerPrereq";
								bool invert = true;
							} : IPrereq, 
							{
								statType = "Armor";
								valueToCheck = 50;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					attackRecord = "Attacks.GrenadeThermalDamageOverTime";
					delayTime = 0.25f;
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

LegendaryPlusBurnGrenade : BurnGrenade
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
						bool invert = true;
					} : IPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.19f;
					attackRecord = "Attacks.HighGrenadeThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								prereqClassName = "IsPlayerPrereq";
								bool invert = true;
							} : IPrereq, 
							{
								statType = "Armor";
								valueToCheck = 50;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : ANDPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					attackRecord = "Attacks.GrenadeThermalDamageOverTime";
					delayTime = 0.25f;
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

Liberty_Padre_Burning : Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = -1;
			} : ConstantStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningSFX"
			];
		} : GameplayLogicPackage, 
		{
			bool stackable = true;
			effectors = 
			[
				"BaseStatusEffect.BurningBuffEffector", {
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : MultiPrereq;
					CName effectorClassName = "AddStatusEffectToAttackEffector";
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : ApplyStatusEffectEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								statusEffect = "BaseStatusEffect.Defeated";
								checkType = "CheckType.Type";
							} : StatusEffectPrereq, 
							{
								statusEffect = "BaseStatusEffect.Unconscious";
								checkType = "CheckType.Type";
							} : StatusEffectPrereq, 
							{
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0.0f;
									} : ConstantStatModifier
								];
								statPoolType = "Health";
								comparisonType = "Equal";
							} : StatPoolPrereq
						];
					} : ORPrereq;
					statusEffects = 
					[
						"BaseStatusEffect.Liberty_Padre_Burning"
					];
				} : RemoveStatusEffectsEffector
			];
		} : GameplayLogicPackage
	];
}

AirDrop_Burning : MediumBurning
{
	gameplayTags += 
	[
		"AirDropBurningTag"
	];
	fk< StatModifierGroup > duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 10;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "AdditiveMultiplier";
				refObject = "Player";
				refStat = "BaseStats.DurationBonusBurning";
				opSymbol = "*";
				value = 1;
			} : CombinedStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			effectors = 
			[
				"BaseStatusEffect.BurningSFX", {
					statusEffect = "BaseStatusEffect.AirDrop_Red_Effect";
					applicationTarget = "Player";
					useCountWhenRemoving = true;
				} : ApplyStatusEffectEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							{
								statusEffect = "BaseStatusEffect.Defeated";
								checkType = "CheckType.Type";
							} : StatusEffectPrereq, 
							{
								statusEffect = "BaseStatusEffect.Unconscious";
								checkType = "CheckType.Type";
							} : StatusEffectPrereq, 
							{
								valueToCheck = 
								[
									{
										statType = "BaseStats.Health";
										modifierType = "Additive";
										value = 0.0f;
									} : ConstantStatModifier
								];
								statPoolType = "Health";
								comparisonType = "Equal";
							} : StatPoolPrereq
						];
					} : ORPrereq;
					statusEffects = 
					[
						"BaseStatusEffect.AirDrop_Burning"
					];
				} : RemoveStatusEffectsEffector
			];
		} : GameplayLogicPackage, 
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 0.4f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 0.5f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodge";
					modifierType = "Multiplier";
					value = 0;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.CanCrouch";
					modifierType = "Multiplier";
					value = 0;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.CanBurningCriticallyHit";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier
			];
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = "Prereqs.AlwaysTruePrereq";
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.AirDropThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						conditions = 
						[
							{
								hitFlag = "AirDropBurningDoT";
							} : HitFlagHitPrereqCondition
						];
					} : ProcessHitReceivedAllowProjection;
					critChance = 
					[
						{
							statType = "BaseStats.CritChance";
							modifierType = "Additive";
							value = 1f;
						} : ConstantStatModifier
					];
				} : ModifyAttackCritChanceEffector
			];
		} : GameplayLogicPackage
	];
}

BurningParticleStatus : Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 2;
			} : ConstantStatModifier
		];
	};
	maxStacks = "";
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			bool stackable = false;
			effectors = 
			[
				"BaseStatusEffect.BurningParticleStatusSFX"
			];
		} : GameplayLogicPackage, 
		{
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 1.1f;
					attackRecord = "Attacks.EnvironmentalThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : MultiPrereq;
					CName effectorClassName = "AddStatusEffectToAttackEffector";
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : ApplyStatusEffectEffector
			];
		} : GameplayLogicPackage
	];
}

LightBurning_Tech_55 : Burning
{
}

Burning_Tech_55 : Burning
{
	packages += 
	[
		{
			effectors = 
			[
				{
					statusEffects = 
					[
						"BaseStatusEffect.LightBurning_Tech_55"
					];
				} : RemoveStatusEffectsEffector
			];
		}
	];
}

BaseBurningUI : StatusEffectUIData
{
	string displayName = "LocKey#40944";
	description = "LocKey#77829";
	string iconPath = "burning_icon";
	priority = -3.0f;
}

BurningSFX : Effector
{
	prereqRecord = 
	{
		prereqClassName = "IsPlayerPrereq";
	} : IPrereq;
	CName effectorClassName = "PlaySFXEffector";
	CName activationSFXName = "vfx_fullscreen_burning_start";
	CName deactivationSFXName = "vfx_fullscreen_burning_stop";
	bool unique = true;
}

BurningParticleStatusSFX : Effector
{
	prereqRecord = 
	{
		prereqClassName = "IsPlayerPrereq";
	} : IPrereq;
	CName effectorClassName = "PlaySFXEffector";
	CName activationSFXName = "vfx_fullscreen_burning_start";
	CName deactivationSFXName = "vfx_fullscreen_burning_stop";
	bool unique = true;
}

