package AIQuickHackStatusEffect
using RTDB, BaseStatusEffect, Prereqs, Effectors

QuickHack_GLP : GameplayLogicPackage
{
	effectors = 
	[
		"AIQuickHackStatusEffect.QuickHackEffect"
	];
}

QuickHackEffect : Effector
{
	effectorClassName = "StopAndPlayVFXEffector";
	CName vfxToStart = "hacking_glitch_low";
	prereqRecord = "Prereqs.AlwaysTruePrereq";
}

NetrunnerStaticNoise : Effector
{
	prereqRecord = 
	{
		nestedPrereqs = 
		[
			{
				statusEffect = "BaseStatusEffect.Cloaked";
			} : StatusEffectAbsentPrereq, 
			{
				nestedPrereqs = 
				[
					{
						stateName = "Combat";
					} : HighLevelNPCStatePrereq, 
					{
						stateName = "Alerted";
					} : HighLevelNPCStatePrereq
				];
			} : ORPrereq
		];
	} : ANDPrereq;
	CName effectorClassName = "PlaySFXEffector";
	CName activationSFXName = "nme_netrunner_static_lp";
	CName deactivationSFXName = "nme_netrunner_static_lp_stop";
}

BeingHacked : StatusEffect
{
	duration = "BaseStats.InfiniteDuration";
}

BeingHackedWithTraceableHack : StatusEffect
{
	duration = "BaseStats.InfiniteDuration";
}

Hacking : StatusEffect
{
	duration = "BaseStats.InfiniteDuration";
}

HackingInterrupted : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 1f;
			} : ConstantStatModifier
		];
	};
}

HackRevealInterrupted : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 1f;
			} : ConstantStatModifier
		];
	};
}

RevealPosition : StatusEffect
{
	duration = 
	{
		statModifiers += 
		[
			{
				value = 60.f;
			} : BaseDurationMod
		];
	};
	packages = 
	[
		{
			effectors = 
			[
				{
					prereqRecord = "Prereqs.AlwaysTruePrereq";
					CName effectorClassName = "PingSquadEffector";
					float level = 1.f;
				} : Effector
			];
		} : GameplayLogicPackage
	];
	gameplayTags += 
	[
		"Ping"
	];
	uiData = 
	{
		displayName = "LocKey#53938";
		iconPath = "stun_icon";
		priority = -5.0f;
	};
}

HackReveal : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 60;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		{
			effectors = 
			[
				{
					prereqRecord = "Prereqs.AlwaysTruePrereq";
					CName effectorClassName = "PingSquadEffector";
					float level = 1.f;
				} : Effector
			];
		} : GameplayLogicPackage, 
		{
			prereqRecord = 
			{
				nestedPrereqs = 
				[
					"Prereqs.PostProcessHitTriggered", {
						statType = "HasBurningBuffs";
						valueToCheck = 1;
						comparisonType = "GreaterOrEqual";
					} : StatPrereq
				];
			} : MultiPrereq;
			CName effectorClassName = "AddStatusEffectToAttackEffector";
			statusEffect = "BaseStatusEffect.Burning";
			bool isRandom = false;
		} : ApplyStatusEffectEffector
	];
	gameplayTags += 
	[
		"NPCQuickhack", "Ping"
	];
	uiData = 
	{
		displayName = "LocKey#53938";
		iconPath = "stun_icon";
		priority = -5.0f;
	};
}

HackBlind : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Blind";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier
		];
	};
	immunityStats = 
	[
		"BaseStats.BlindImmunity"
	];
	packages += 
	[
		{
			stats = 
			[
				{
					statType = "BaseStats.HasCybereye";
					modifierType = "Multiplier";
					value = 0.f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.Accuracy";
					modifierType = "Multiplier";
					value = 0.01f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.Evasion";
					modifierType = "Multiplier";
					value = 0.f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage, 
		"AIQuickHackStatusEffect.QuickHack_GLP", {
			effectors = 
			[
				{
					prereqRecord = "Prereqs.AnyWeaponHeldPrereq";
					CName effectorClassName = "ApplyStatGroupEffector";
					fk< StatModifierGroup > statGroup = 
					{
						statModifiers = 
						[
							{
								statType = "BaseStats.SwayTraversalTime";
								modifierType = "Multiplier";
								value = 0.9f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMaximumAngleDistance";
								modifierType = "Multiplier";
								value = 4.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMinimumAngleDistance";
								modifierType = "Multiplier";
								value = 2.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMaximumAngleDistance";
								modifierType = "Additive";
								value = 4.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMinimumAngleDistance";
								modifierType = "Additive";
								value = 2.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwayStartDelay";
								modifierType = "Multiplier";
								value = 0f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilAllowSway";
								modifierType = "Additive";
								value = 1f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilKickMin";
								modifierType = "Multiplier";
								value = 2.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilKickMax";
								modifierType = "Multiplier";
								value = 2.f;
							} : ConstantStatModifier
						];
					} : StatModifierGroup;
					applicationTarget = "Weapon";
				} : ApplyStatGroupEffector, 
				{
					prereqRecord = "Prereqs.AnyWeaponHeldPrereq";
					CName effectorClassName = "WeaponMalfunctionHudEffector";
				} : Effector
			];
		}
	];
	AIData = 
	{
		float priority = 6.f;
		activationPrereqs = 
		[
			{
				allowedTypes = 
				[
					"NPCType.Human", "NPCType.Drone", "NPCType.Mech"
				];
			} : NPCTypePrereq
		];
		fk< StatusEffectAIBehaviorFlag > behaviorEventFlag = "StatusEffectAIBehaviorFlag.InterruptsSamePriorityTask";
		fk< StatusEffectAIBehaviorType > behaviorType = "StatusEffectAIBehaviorType.Unstoppable";
	};
	VFX = 
	[
		{
			name = "status_blinded";
		}
	];
	SFX = 
	[
		{
			name = "status_blinded";
		}
	];
	gameplayTags += 
	[
		"NPCQuickhack", "Blind", "ResetSquadSync"
	];
	uiData = "BaseStatusEffect.BaseBlindUI";
}

HackJamWeapon : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Jam";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP"
	];
	gameplayTags += 
	[
		"NPCQuickhack", "JamWeapon"
	];
	uiData = 
	{
		string displayName = "LocKey#40954";
		string iconPath = "jamweapon_icon";
		priority = -5.0f;
	};
}

HackWeaponMalfunctionBase : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.PassiveBuff";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 15;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP"
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
	uiData = 
	{
		displayName = "LocKey#40955";
		iconPath = "jamweapon_icon";
		priority = -5.0f;
	};
}

HackWeaponMalfunction : HackWeaponMalfunctionBase
{
	packages += 
	[
		{
			effectors = 
			[
				{
					prereqRecord = "Prereqs.AnyWeaponHeldPrereq";
					CName effectorClassName = "ApplyStatGroupEffector";
					fk< StatModifierGroup > statGroup = 
					{
						statModifiers = 
						[
							{
								statType = "BaseStats.SwayTraversalTime";
								modifierType = "Multiplier";
								value = 0.9f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMaximumAngleDistance";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMinimumAngleDistance";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMaximumAngleDistance";
								modifierType = "Additive";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwaySideMinimumAngleDistance";
								modifierType = "Additive";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SwayStartDelay";
								modifierType = "Multiplier";
								value = 0f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadDefaultX";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadDefaultY";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadMaxX";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadMaxY";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadAdsDefaultX";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadAdsDefaultY";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadAdsMaxX";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SpreadAdsMaxY";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilAllowSway";
								modifierType = "Additive";
								value = 1f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilEnableScaleX";
								modifierType = "Additive";
								value = 1.0f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilEnableScaleY";
								modifierType = "Additive";
								value = 1.0f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilScaleTime";
								modifierType = "Additive";
								value = 2.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilScaleMax";
								modifierType = "Additive";
								value = 2f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilKickMax";
								modifierType = "Additive";
								value = 0.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilKickMaxADS";
								modifierType = "Additive";
								value = 2f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilDir";
								modifierType = "Multiplier";
								value = 1.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilAngle";
								modifierType = "Additive";
								value = 20f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilAlternateDir";
								modifierType = "Additive";
								value = 50f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilDirPlanCycleRandRangeDir";
								modifierType = "Additive";
								value = 1f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilDirPlanCycleRandDir";
								modifierType = "Additive";
								value = -1f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilCycleTime";
								modifierType = "Additive";
								value = 1f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.RecoilCycleSize";
								modifierType = "Additive";
								value = 1.33f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.SmartGunHitProbabilityMultiplier";
								modifierType = "Additive";
								value = -0.9f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.TechPierceEnabled";
								modifierType = "Multiplier";
								value = 0.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.ChargeTime";
								modifierType = "Multiplier";
								value = 5.f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.HasSmartLink";
								modifierType = "Multiplier";
								value = 0f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.CycleTimeBonus";
								modifierType = "Additive";
								value = 2.5f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.DamagePerHit";
								modifierType = "Multiplier";
								value = 0.5f;
							} : ConstantStatModifier
						];
					} : StatModifierGroup;
					applicationTarget = "Weapon";
				} : ApplyStatGroupEffector, 
				{
					prereqRecord = "Prereqs.AnyWeaponHeldPrereq";
					CName effectorClassName = "WeaponMalfunctionHudEffector";
				} : Effector
			];
		}
	];
}

HackBurning : BaseStatusEffect.Burning
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier
		];
	};
	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.NPCThermalDamageOverTime";
				} : ContinuousAttackEffector, 
				{
					prereqRecord = 
					{
						nestedPrereqs = 
						[
							"Prereqs.PostProcessHitTriggered", {
								statType = "HasBurningBuffs";
								valueToCheck = 1;
								comparisonType = "GreaterOrEqual";
							} : StatPrereq
						];
					} : MultiPrereq;
					CName effectorClassName = "AddStatusEffectToAttackEffector";
					statusEffect = "BaseStatusEffect.Burning";
					bool isRandom = false;
				} : ApplyStatusEffectEffector
			];
		} : GameplayLogicPackage, 
		"AIQuickHackStatusEffect.QuickHack_GLP"
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
}

HackOverheatBase : DebuffStatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier
		];
	};
	statusEffectType = "BaseStatusEffectTypes.Burning";
	bool replicated = true;
	fk< StatusEffectFX >[] VFX = 
	[
		{
			name = "status_burning";
		}
	];
	fk< StatusEffectFX >[] SFX = 
	[
		{
			name = "";
		}
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
	fk< Stat >[] immunityStats = 
	[
		"BaseStats.BurningImmunity"
	];
	uiData = "BaseStatusEffect.BaseBurningUI";
	fk< GameplayLogicPackage >[] packages += 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "ApplyStatGroupEffector";
					fk< StatModifierGroup > statGroup = 
					{
						statModifiers = 
						[
							{
								statType = "BaseStats.MaxSpeed";
								modifierType = "Multiplier";
								value = 0.9f;
							} : ConstantStatModifier, 
							{
								statType = "BaseStats.JumpHeight";
								modifierType = "Multiplier";
								value = 0.9f;
							} : ConstantStatModifier
						];
					} : StatModifierGroup;
				} : ApplyStatGroupEffector
			];
		} : GameplayLogicPackage
	];
}

HackOverheat : HackOverheatBase
{
	fk< GameplayLogicPackage >[] packages += 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 2.f;
					attackRecord = "Attacks.EnemyNetrunnerThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

HackOverheatTier2 : HackOverheatBase
{
	fk< GameplayLogicPackage >[] packages += 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 1.f;
					attackRecord = "Attacks.NPCThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

HackOverheatTier3 : HackOverheatBase
{
	fk< GameplayLogicPackage >[] packages += 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 0.5f;
					attackRecord = "Attacks.NPCThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

HackOverheatRibakov : HackOverheatBase
{
	fk< GameplayLogicPackage >[] packages += 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					fk< IPrereq > prereqRecord = 
					{
						statType = "HasBurningBuffs";
						valueToCheck = 0;
						comparisonType = "LessOrEqual";
					} : StatPrereq;
					CName effectorClassName = "TriggerContinuousAttackEffector";
					delayTime = 2.f;
					attackRecord = "Attacks.EnemyNetrunnerRibakovThermalDamageOverTime";
				} : ContinuousAttackEffector
			];
		} : GameplayLogicPackage
	];
}

HackOverload : BaseOverload
{
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = "Prereqs.AlwaysTruePrereq";
					attackRecord = "Attacks.NPCElectricDamageOverTime";
					playerAsInstigator = true;
					attackPositionSlotName = "Chest";
				} : Effectors.TriggerAttackOnOwnerEffect
			];
		} : GameplayLogicPackage
	];
}

HackCyberware : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.PassiveDebuff";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 12;
			} : ConstantStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP", "GLP.DeactivateCyberware"
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
	uiData = 
	{
		displayName = "LocKey#40956";
		iconPath = "cyberware_disabled_icon";
		priority = -3.0f;
	};
}

HackLocomotionBase : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.Crippled";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 12;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP"
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
	uiData = 
	{
		displayName = "LocKey#40957";
		iconPath = "crippled_icon";
		priority = -10.0f;
	};
}

HackLocomotion : HackLocomotionBase
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 0.75f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 0.8f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDoubleJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasChargeJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodge";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodgeAir";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
}

HackLocomotionTier2 : HackLocomotionBase
{
	packages = 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 0.6f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 0.625f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDoubleJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasChargeJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodge";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodgeAir";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
}

HackLocomotionTier3 : HackLocomotionBase
{
	packages = 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 0.4f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 0.45f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDoubleJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasChargeJump";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodge";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasDodgeAir";
					modifierType = "Multiplier";
					value = 0f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
}

HackWeaponHud : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.PassiveDebuff";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 8;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP", {
			fk< StatModifier >[] stats = [];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40958";
		iconPath = "stun_icon";
		priority = -10.0f;
	};
}

BaseBuffQuickhack : BuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.PassiveBuff";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 15;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		"AIQuickHackStatusEffect.QuickHack_GLP"
	];
	gameplayTags += 
	[
		"NPCQuickhack"
	];
}

BuffCamo : BaseBuffQuickhack
{
	packages += 
	[
		{
			effectors = 
			[
				"BaseStatusEffect.CamoEffector"
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40959";
		iconPath = "stun_icon";
		priority = -5.0f;
	};
}

BuffICE : BaseBuffQuickhack
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.HasQuickhackResistance";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasMajorQuickhackResistance";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40959";
		iconPath = "stun_icon";
		priority = -5.0f;
	};
}

BuffLocomotion : BaseBuffQuickhack
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 1.8f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 1.5f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HasChargeJump";
					modifierType = "Multiplier";
					value = 1f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.Evasion";
					modifierType = "Multiplier";
					value = 1.5f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40960";
		iconPath = "stun_icon";
		priority = -10.0f;
	};
}

BuffCapabilities : BaseBuffQuickhack
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.MaxSpeed";
					modifierType = "Multiplier";
					value = 1.3f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.JumpHeight";
					modifierType = "Multiplier";
					value = 1.3f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40961";
		iconPath = "stun_icon";
		priority = -10.0f;
	};
}

BuffDamageReduction : BaseBuffQuickhack
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.Armor";
					modifierType = "Additive";
					value = 10f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.ThermalResistance";
					modifierType = "Additive";
					value = 10f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.ElectricResistance";
					modifierType = "Additive";
					value = 10f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.ChemicalResistance";
					modifierType = "Additive";
					value = 10f;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40962";
		iconPath = "stun_icon";
		priority = -8.0f;
	};
}

BuffSturdiness : BaseBuffQuickhack
{
	packages += 
	[
		{
			fk< StatModifier >[] stats = 
			[
				{
					statType = "BaseStats.Armor";
					modifierType = "Additive";
					value = 50f;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HitReactionFactor";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HitWoundsFactor";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier, 
				{
					statType = "BaseStats.HitDismembermentFactor";
					modifierType = "Additive";
					value = 1;
				} : ConstantStatModifier
			];
		} : GameplayLogicPackage
	];
	uiData = 
	{
		displayName = "LocKey#40963";
		iconPath = "stun_icon";
		priority = -8.0f;
	};
}

TrackedVirus : DebuffStatusEffect
{
	statusEffectType = "BaseStatusEffectTypes.PassiveDebuff";
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 30;
			} : ConstantStatModifier
		];
	};
	gameplayTags += 
	[
		"NPCQuickhack"
	];
	uiData = 
	{
		displayName = "LocKey#40964";
		iconPath = "stun_icon";
		priority = -5.0f;
	};
}

HackDeathStaticNoise : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 5;
			} : ConstantStatModifier
		];
	};
	packages += 
	[
		{
			effectors += 
			[
				{
					prereqRecord = 
					{
						prereqClassName = "IsPlayerPrereq";
					} : IPrereq;
					activationSFXName = "ui_death_hacked";
					bool fireAndForget = true;
				} : PlaySFXEffector
			];
		} : GameplayLogicPackage
	];
}

