package Ability
using RTDB, Prereqs, Effectors, Perks

CodexAbility : GameplayAbility
{
	showInCodex = true;
}

NonCodexAbility : GameplayAbility
{
	showInCodex = false;
}

CanDropWeapon : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanDropWeapon";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanDropWeapon";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseGrenades : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseFragGrenades : CodexAbility
{
	loc_key_name = "LocKey#52132";
	loc_key_desc = "LocKey#52133";
	prereqsForUse = 
	[
		{
			statType = "CanUseFragGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseFragGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseFragGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseFlashbangGrenades : CodexAbility
{
	loc_key_name = "LocKey#52162";
	loc_key_desc = "LocKey#52163";
	prereqsForUse = 
	[
		{
			statType = "CanUseFlashbangGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseFlashbangGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseFlashbangGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseEMPGrenades : CodexAbility
{
	loc_key_name = "LocKey#52165";
	loc_key_desc = "LocKey#52166";
	prereqsForUse = 
	[
		{
			statType = "CanUseEMPGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseEMPGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseEMPGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseBiohazardGrenades : CodexAbility
{
	loc_key_name = "LocKey#52168";
	loc_key_desc = "LocKey#52169";
	prereqsForUse = 
	[
		{
			statType = "CanUseBiohazardGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseBiohazardGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseBiohazardGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseIncendiaryGrenades : CodexAbility
{
	loc_key_name = "LocKey#52170";
	loc_key_desc = "LocKey#52171";
	prereqsForUse = 
	[
		{
			statType = "CanUseIncendiaryGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseIncendiaryGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseIncendiaryGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseReconGrenades : NonCodexAbility
{
	loc_key_name = "LocKey#52172";
	loc_key_desc = "LocKey#52173";
	prereqsForUse = 
	[
		{
			statType = "CanUseReconGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseReconGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseCuttingGrenades : NonCodexAbility
{
	loc_key_name = "LocKey#52174";
	loc_key_desc = "LocKey#52175";
	prereqsForUse = 
	[
		{
			statType = "CanUseCuttingGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseCuttingGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseSmokeGrenades : CodexAbility
{
	loc_key_name = "LocKey#85599";
	loc_key_desc = "LocKey#85598";
	prereqsForUse = 
	[
		{
			statType = "CanUseSmokeGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseSmokeGrenades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseSmokeGrenades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseCovers : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseCovers";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseCovers";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasGraphiteTissue : CodexAbility
{
	loc_key_name = "LocKey#52176";
	loc_key_desc = "LocKey#52177";
	prereqsForUse = 
	[
		{
			statType = "HasGraphiteTissue";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasGraphiteTissue";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasBoostedCortex : CodexAbility
{
	loc_key_name = "LocKey#52178";
	loc_key_desc = "LocKey#52179";
	prereqsForUse = 
	[
		{
			statType = "HasBoostedCortex";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasBoostedCortex";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					CName tagToCheck = "Quickhack";
					checkType = "CheckType.Tag";
				} : StatusEffectPrereq;
				statusEffect = "AIQuickHackStatusEffect.HackOverheat";
				applicationTarget = "QuickHackSource";
			} : ApplyStatusEffectEffector
		];
	};
}

HasICELevelBooster : CodexAbility
{
	loc_key_name = "LocKey#52180";
	loc_key_desc = "LocKey#52181";
	prereqsForUse = 
	[
		{
			statType = "HasICELevelBooster";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasICELevelBooster";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasMechanicalControl : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasMechanicalControl";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasMechanicalControl";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSecondHeart : CodexAbility
{
	loc_key_name = "LocKey#52182";
	loc_key_desc = "LocKey#52183";
	prereqsForUse = 
	[
		{
			statType = "HasSecondHeart";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSecondHeart";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasDodge : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasDodge";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasDodge";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasKerenzikov : CodexAbility
{
	loc_key_name = "LocKey#52184";
	loc_key_desc = "LocKey#52185";
	prereqsForUse = 
	[
		{
			statType = "HasKerenzikov";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "HasKerenzikov";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasKerenzikov";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.Health";
				modifierType = "Multiplier";
				value = 0.85f;
			} : ConstantStatModifier
		];
	};
}

HasKers : CodexAbility
{
	loc_key_name = "LocKey#52186";
	loc_key_desc = "LocKey#52187";
	prereqsForUse = 
	[
		{
			statType = "HasKers";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasKers";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSandevistan : CodexAbility
{
	loc_key_name = "LocKey#52188";
	loc_key_desc = "LocKey#52189";
	prereqsForUse = 
	[
		{
			statType = "HasSandevistan";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSandevistan";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSandevistanTier1 : CodexAbility
{
	loc_key_name = "LocKey#52190";
	loc_key_desc = "LocKey#52191";
	prereqsForUse = 
	[
		{
			statType = "HasSandevistanTier1";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSandevistanTier1";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSandevistan";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSandevistanTier2 : CodexAbility
{
	loc_key_name = "LocKey#52192";
	loc_key_desc = "LocKey#52193";
	prereqsForUse = 
	[
		{
			statType = "HasSandevistanTier2";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSandevistanTier2";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSandevistan";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSandevistanTier3 : CodexAbility
{
	loc_key_name = "LocKey#52194";
	loc_key_desc = "LocKey#52195";
	prereqsForUse = 
	[
		{
			statType = "HasSandevistanTier3";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSandevistanTier3";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSandevistan";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasHealthMonitorBomb : CodexAbility
{
	loc_key_name = "LocKey#52196";
	loc_key_desc = "LocKey#52197";
	prereqsForUse = 
	[
		{
			statType = "HasHealthMonitorBomb";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasHealthMonitorBomb";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		fk< Effector >[] effectors = 
		[
			{
				prereqRecord = 
				{
					stateName = "Dead";
				} : Prereqs.HighLevelNPCStatePrereq;
				fk< Effector > effectorToApply = "Effectors.SelfDestructEffect";
			} : ApplyEffectorEffector, 
			{
				prereqRecord = 
				{
					stateName = "Dead";
				} : Prereqs.HighLevelNPCStatePrereq;
				fk< Effector > effectorToApply = "Effectors.StopSelfDestructEffect";
			} : ApplyEffectorEffector, 
			{
				prereqRecord = 
				{
					stateName = "Dead";
				} : Prereqs.HighLevelNPCStatePrereq;
				vfxName = "status_electrocuted";
			} : PlayVFXEffector
		];
	};
}

HasChargeJump : CodexAbility
{
	loc_key_name = "LocKey#52198";
	loc_key_desc = "LocKey#52199";
	prereqsForUse = 
	[
		{
			statType = "HasChargeJump";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "HasChargeJump";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasChargeJump";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSubdermalArmor : CodexAbility
{
	loc_key_name = "LocKey#52200";
	loc_key_desc = "LocKey#52201";
	prereqsForUse = 
	[
		{
			statType = "HasSubdermalArmor";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Additive";
				value = 100;
			} : ConstantStatModifier
		];
	};
}

HasSubdermalArmorBase : CodexAbility
{
	loc_key_desc = "LocKey#52201";
	prereqsForUse = 
	[
		{
			statType = "HasSubdermalArmor";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "HasSubdermalArmor";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
}

HasSubdermalArmorLow : HasSubdermalArmorBase
{
	loc_key_name = "LocKey#85559";
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_enabled";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_armor_low";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_health_low";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.Health";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.BonusHealth";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier
		];
	};
}

HasSubdermalArmorMedium : HasSubdermalArmorBase
{
	loc_key_name = "LocKey#85560";
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_enabled";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_armor_medium";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_health_medium";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.Health";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.BonusHealth";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier
		];
	};
}

HasSubdermalArmorHigh : HasSubdermalArmorBase
{
	loc_key_name = "LocKey#85561";
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasSubdermalArmor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_enabled";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_armor_high";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.Armor";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Additive";
				id = "puppet_powerLevelToHealth";
				column = "puppet_subdermalarmor_health_high";
				refObject = "Root";
				refStat = "BaseStats.PowerLevel";
			} : CurveStatModifier, 
			{
				statType = "BaseStats.BonusHealth";
				modifierType = "Multiplier";
				refStat = "BaseStats.HasSubdermalArmor";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.Health";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.BonusHealth";
				opSymbol = "*";
				value = 1.f;
			} : CombinedStatModifier
		];
	};
}

HasSubdermalArmorLow_Mechanical : HasSubdermalArmorLow
{
	showInCodex = false;
}

HasSubdermalArmorMedium_Mechanical : HasSubdermalArmorMedium
{
	showInCodex = false;
}

HasSubdermalArmorHigh_Mechanical : HasSubdermalArmorHigh
{
	showInCodex = false;
}

HasPainEditor : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ImpactDamageThreshold";
				modifierType = "Multiplier";
				value = 0;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.StaggerDamageThreshold";
				modifierType = "Multiplier";
				value = 1.33;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.KnockdownDamageThreshold";
				modifierType = "Multiplier";
				value = 1.5;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ImpactDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 0;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.StaggerDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 1.33;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.KnockdownDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 1.5;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ImpactDamageThresholdImpulse";
				modifierType = "Multiplier";
				value = 0;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.StaggerDamageThresholdImpulse";
				modifierType = "Multiplier";
				value = 1.33;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.KnockdownDamageThresholdImpulse";
				modifierType = "Multiplier";
				value = 1.5;
			} : ConstantStatModifier
		];
	};
}

HasWeakspot : CodexAbility
{
	loc_key_name = "LocKey#53930";
	loc_key_desc = "LocKey#53930";
	prereqsForUse = 
	[
		{
			statType = "HasWeakspot";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasWeakspot";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasThermovision : CodexAbility
{
	loc_key_name = "LocKey#52203";
	loc_key_desc = "LocKey#52202";
	prereqsForUse = 
	[
		{
			statType = "HasThermovision";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasThermovision";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasGlowingTattoos : CodexAbility
{
	loc_key_name = "LocKey#52204";
	loc_key_desc = "LocKey#52205";
	prereqsForUse = 
	[
		{
			statType = "HasGlowingTattoos";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasGlowingTattoos";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					statType = "HasGlowingTattoos";
					valueToCheck = 0;
					comparisonType = "Greater";
				} : StatPrereq;
				effectorClassName = "ApplyStatusEffectEffector";
				fk< StatusEffect > statusEffect = "BaseStatusEffect.GlowingTattoos";
				removeWithEffector = true;
			} : ApplyStatusEffectEffector
		];
	};
}

CanUseOpticalCamo : CodexAbility
{
	loc_key_name = "LocKey#52206";
	loc_key_desc = "LocKey#52207";
	prereqsForUse = 
	[
		{
			statType = "CanUseOpticalCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseOpticalCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseOpticalCamo";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							nestedPrereqs = 
							[
								{
									nestedPrereqs = 
									[
										{
											stateName = "Combat";
											previousState = true;
										} : Prereqs.HighLevelNPCStatePrereq, 
										{
											stateName = "Alerted";
											isInState = true;
										} : Prereqs.HighLevelNPCStatePrereq
									];
								} : Prereqs.ANDPrereq, 
								{
									nestedPrereqs = 
									[
										{
											stateName = "Alerted";
											previousState = true;
										} : Prereqs.HighLevelNPCStatePrereq, 
										{
											stateName = "Combat";
											isInState = true;
										} : Prereqs.HighLevelNPCStatePrereq
									];
								} : Prereqs.ANDPrereq, 
								{
									stateName = "Combat";
									isInState = true;
								} : Prereqs.HighLevelNPCStatePrereq, 
								{
									stateName = "Alerted";
									isInState = true;
								} : Prereqs.HighLevelNPCStatePrereq
							];
						} : Prereqs.ORPrereq, 
						{
							checkType = "CheckType.Category";
							attachmentSlot = "AttachmentSlots.WeaponRight";
							itemCategory = "ItemCategory.Weapon";
						} : Prereqs.ItemInSlotPrereq, 
						{
							nestedPrereqs = 
							[
								{
									hitReactionType = "Impact";
									invert = true;
									timeout = 5.f;
								} : Prereqs.NPCHitReactionTypePrereq, 
								{
									hitReactionType = "Stagger";
									invert = true;
									timeout = 8.f;
								} : Prereqs.NPCHitReactionTypePrereq, 
								{
									hitReactionType = "Knockdown";
									invert = true;
									timeout = 10.f;
								} : Prereqs.NPCHitReactionTypePrereq, 
								{
									hitReactionType = "Pain";
									invert = true;
								} : Prereqs.NPCHitReactionTypePrereq
							];
						} : Prereqs.ANDPrereq, 
						{
							nestedPrereqs = 
							[
								{
									statusEffect = "BaseStatusEffect.Unconscious";
								} : Prereqs.StatusEffectAbsentPrereq, 
								{
									statusEffect = "BaseStatusEffect.Cloaked_Exit";
								} : Prereqs.StatusEffectAbsentPrereq, 
								{
									statusEffect = "BaseStatusEffect.Defeated";
								} : Prereqs.StatusEffectAbsentPrereq, 
								{
									checkType = "CheckType.Tag";
									tagToCheck = "CyberwareMalfunction";
								} : Prereqs.StatusEffectAbsentPrereq, 
								{
									checkType = "CheckType.Tag";
									tagToCheck = "Overload";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : Prereqs.ANDPrereq
					];
				} : Prereqs.ANDPrereq;
				effectorClassName = "ApplyStatusEffectEffector";
				fk< StatusEffect > statusEffect = "BaseStatusEffect.Cloaked";
				removeWithEffector = true;
			} : ApplyStatusEffectEffector
		];
	};
}

CanUseOpticalCamoOda : CodexAbility
{
	loc_key_name = "LocKey#52206";
	loc_key_desc = "LocKey#52207";
	prereqsForUse = 
	[
		{
			statType = "CanUseOpticalCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseOpticalCamo";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							hitReactionType = "Impact";
							invert = true;
						} : Prereqs.NPCHitReactionTypePrereq, 
						{
							hitReactionType = "Stagger";
							invert = true;
						} : Prereqs.NPCHitReactionTypePrereq, 
						{
							hitReactionType = "Knockdown";
							invert = true;
						} : Prereqs.NPCHitReactionTypePrereq, 
						{
							hitReactionType = "Pain";
							invert = true;
						} : Prereqs.NPCHitReactionTypePrereq, 
						{
							statusEffect = "BaseStatusEffect.Unconscious";
						} : Prereqs.StatusEffectAbsentPrereq, 
						{
							statusEffect = "BaseStatusEffect.Defeated";
						} : Prereqs.StatusEffectAbsentPrereq, 
						{
							fk< StatusEffect > statusEffect = "BaseStatusEffect.CloakedOda";
						} : Prereqs.SampleStatusEffectPrereq, 
						{
							checkType = "CheckType.Tag";
							tagToCheck = "CyberwareMalfunction";
						} : Prereqs.StatusEffectAbsentPrereq, 
						{
							checkType = "CheckType.Tag";
							tagToCheck = "Overload";
						} : Prereqs.StatusEffectAbsentPrereq
					];
				} : Prereqs.ANDPrereq;
				effectorClassName = "ApplyStatusEffectEffector";
				fk< StatusEffect > statusEffect = "BaseStatusEffect.CloakedOda";
				removeWithEffector = true;
			} : ApplyStatusEffectEffector
		];
	};
}

CanUseStaticCamo : CodexAbility
{
	loc_key_name = "LocKey#52208";
	loc_key_desc = "LocKey#52209";
	prereqsForUse = 
	[
		{
			statType = "CanUseStaticCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseStaticCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseStaticCamo";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					locomotionType = "Static";
				} : NPCLocomotionTypePrereq;
				effectorClassName = "ApplyStatusEffectEffector";
				fk< StatusEffect > statusEffect = "BaseStatusEffect.Cloaked";
				removeWithEffector = true;
			} : ApplyStatusEffectEffector
		];
	};
}

CanUsePersonalSoundSilencer : NonCodexAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUsePersonalSoundSilencer";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseTerrainCamo : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseTerrainCamo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseTerrainCamo";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseCoolingSystem : CodexAbility
{
	loc_key_name = "LocKey#52210";
	loc_key_desc = "LocKey#52211";
	prereqsForUse = 
	[
		{
			statType = "CanUseCoolingSystem";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseCoolingSystem";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseCoolingSystem";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseAntiStun : NonCodexAbility
{
	loc_key_name = "LocKey#52200";
	loc_key_desc = "LocKey#52201";
	prereqsForUse = 
	[
		{
			statType = "CanUseAntiStun";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseAntiStun";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanWallStick : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanWallStick";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanWallStick";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSeeThroughWalls : CodexAbility
{
	loc_key_name = "LocKey#52212";
	loc_key_desc = "LocKey#52213";
	prereqsForUse = 
	[
		{
			statType = "CanSeeThroughWalls";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSeeThroughWalls";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSeeThroughSmoke : CodexAbility
{
	loc_key_name = "LocKey#82585";
	loc_key_desc = "LocKey#82586";
	prereqsForUse = 
	[
		{
			statType = "CanSeeThroughSmoke";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSeeThroughSmoke";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSeeThroughOpticalCamos : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanSeeThroughOpticalCamos";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSeeThroughOpticalCamos";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseTakedowns : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseTakedowns";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseTakedowns";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCallDrones : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCallDrones";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCallDrones";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanQuickhack : CodexAbility
{
	loc_key_name = "LocKey#52214";
	loc_key_desc = "LocKey#52215";
	prereqsForUse = 
	[
		{
			statType = "CanQuickhack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanQuickhack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			"AIQuickHackStatusEffect.NetrunnerStaticNoise"
		];
	};
}

CanUseRetractableShield : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseRetractableShield";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseRetractableShield";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseProjectileLauncher : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseProjectileLauncher";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseProjectileLauncher";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUsePainInhibitors : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUsePainInhibitors";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUsePainInhibitors";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseCombatStims : CodexAbility
{
	loc_key_name = "LocKey#52216";
	loc_key_desc = "LocKey#52217";
	prereqsForUse = 
	[
		{
			statType = "CanUseCombatStims";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	prereqsForUIValidation = 
	[
		{
			statType = "CanUseCombatStims";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseCombatStims";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					valueToCheck = 
					[
						{
							statType = "BaseStats.Health";
							modifierType = "Additive";
							value = 0.1f;
						} : ConstantStatModifier
					];
					statPoolType = "Health";
					comparisonType = "LessOrEqual";
					bool skipOnApply = true;
				} : StatPoolPrereq;
				statusEffect = "BaseStatusEffect.CombatStim";
				removeWithEffector = false;
				inverted = true;
			} : ApplyStatusEffectEffector
		];
	};
}

CanUseConsumables : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseConsumables";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseConsumables";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseStrongArms : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseStrongArms";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseStrongArms";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseMantisBlades : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseMantisBlades";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseMantisBlades";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasHackingInteractions : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasHackingInteractions";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasHackingInteractions";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasJuiceInjector : CodexAbility
{
	loc_key_name = "LocKey#52219";
	loc_key_desc = "LocKey#52220";
	prereqsForUse = 
	[
		{
			statType = "HasJuiceInjector";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasJuiceInjector";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanGrenadeLaunch : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanGrenadeLaunch";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanGrenadeLaunch";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanDash : CodexAbility
{
	loc_key_name = "LocKey#52222";
	loc_key_desc = "LocKey#52223";
	prereqsForUse = 
	[
		{
			statType = "CanDash";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanDash";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCharge : NonCodexAbility
{
	loc_key_name = "LocKey#52224";
	loc_key_desc = "LocKey#52225";
	prereqsForUse = 
	[
		{
			statType = "CanCharge";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCharge";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasBerserk : CodexAbility
{
	loc_key_name = "LocKey#52226";
	loc_key_desc = "LocKey#52227";
	prereqsForUse = 
	[
		{
			statType = "HasBerserk";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasBerserk";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasAutoReloader : CodexAbility
{
	loc_key_name = "LocKey#52228";
	loc_key_desc = "LocKey#52229";
	prereqsForUse = 
	[
		{
			statType = "HasAutoReloader";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasAutoReloader";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasCyberdeck : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasCyberdeck";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasCyberdeck";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasQuickhackResistance : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasQuickhackResistance";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasQuickhackResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasMajorQuickhackResistance : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasMajorQuickhackResistance";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasQuickhackResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.HasMajorQuickhackResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasImmunityToNPCQuickhacks : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasImmunityToNPCQuickhacks";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasImmunityToNPCQuickhacks";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanThrowWeapon : CodexAbility
{
	loc_key_name = "LocKey#52230";
	loc_key_desc = "LocKey#52231";
	prereqsForUse = 
	[
		{
			statType = "CanThrowWeapon";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanThrowWeapon";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSwitchWeapon : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanSwitchWeapon";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSwitchWeapon";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanPickUpWeapon : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanPickUpWeapon";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanPickUpWeapon";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanShareThreatsWithPlayer : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanShareThreatsWithPlayer";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanShareThreatsWithPlayer";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanBlock : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanBlock";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanBlock";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanParry : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanParry";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanParry";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanGuardBreak : CodexAbility
{
	loc_key_name = "LocKey#52232";
	loc_key_desc = "LocKey#52233";
	prereqsForUse = 
	[
		{
			statType = "CanGuardBreak";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanGuardBreak";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					conditions = 
					[
						{
							attackType = "GuardBreak";
						} : AttackTypeHitPrereqCondition
					];
				} : ProcessHitTriggered;
				CName applicationTarget = "Target";
				statPoolUpdates = 
				[
					{
						statPoolType = "BaseStatPools.Stamina";
						statPoolValue = -100;
					} : StatPoolUpdate
				];
			} : ModifyStatPoolValueEffector
		];
	};
}

CanPushBack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanPushBack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanPushBack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanGrab : CodexAbility
{
	loc_key_name = "LocKey#52237";
	loc_key_desc = "LocKey#52238";
	prereqsForUse = 
	[
		{
			statType = "CanGrab";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanGrab";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanIgnoreStamina : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanIgnoreStamina";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanIgnoreStamina";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanRegenInCombat : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanRegenInCombat";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanRegenInCombat";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanShootWhileMoving : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanShootWhileMoving";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanShootWhileMoving";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanPreciseShoot : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanPreciseShoot";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanPreciseShoot";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanChargedShoot : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanChargedShoot";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanChargedShoot";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSmartShoot : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanSmartShoot";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSmartShoot";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSprint : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanSprint";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSprint";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCrouch : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCrouch";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCrouch";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCatchUp : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCatchUp";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCatchUp";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCatchUpDistance : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCatchUpDistance";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCatchUpDistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSuicideQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#845";
	loc_key_desc = "LocKey#844";
	prereqsForUse = 
	[
		{
			statType = "CanSuicideQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSuicideQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanGrenadeQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#850";
	loc_key_desc = "LocKey#851";
	prereqsForUse = 
	[
		{
			statType = "CanGrenadeQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanGrenadeQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanBlindQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#849";
	loc_key_desc = "LocKey#51944";
	prereqsForUse = 
	[
		{
			statType = "CanBlindQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanBlindQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanMalfunctionQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanMalfunctionQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanMalfunctionQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanLocomotionMalfunctionQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27966";
	loc_key_desc = "LocKey#27721";
	prereqsForUse = 
	[
		{
			statType = "CanLocomotionMalfunctionQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanLocomotionMalfunctionQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanWeaponMalfunctionQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27965";
	loc_key_desc = "LocKey#51947";
	prereqsForUse = 
	[
		{
			statType = "CanWeaponMalfunctionQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanWeaponMalfunctionQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanDeathQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#45340";
	loc_key_desc = "LocKey#48349";
	prereqsForUse = 
	[
		{
			statType = "CanDeathQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanDeathQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanOverheatQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27962";
	loc_key_desc = "LocKey#27711";
	prereqsForUse = 
	[
		{
			statType = "CanOverheatQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanOverheatQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanBuffCamoQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#52243";
	loc_key_desc = "LocKey#52244";
	prereqsForUse = 
	[
		{
			statType = "CanBuffCamoQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanBuffCamoQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanBuffSturdinessQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#52180";
	loc_key_desc = "LocKey#52181";
	prereqsForUse = 
	[
		{
			statType = "CanBuffSturdinessQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanBuffSturdinessQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCyberwareMalfunctionQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27961";
	loc_key_desc = "LocKey#51527";
	prereqsForUse = 
	[
		{
			statType = "CanCyberwareMalfunctionQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCyberwareMalfunctionQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanMadnessQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanMadnessQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanMadnessQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCommsNoiseQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCommsNoiseQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCommsNoiseQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCommsCallInQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCommsCallInQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCommsCallInQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanOverloadQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27968";
	loc_key_desc = "LocKey#27723";
	prereqsForUse = 
	[
		{
			statType = "CanOverloadQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanOverloadQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanPingQuickHack : NonCodexAbility
{
	loc_key_name = "LocKey#27967";
	loc_key_desc = "LocKey#27722";
	prereqsForUse = 
	[
		{
			statType = "CanPingQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanPingQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanTakeControlQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanTakeControlQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanTakeControlQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanOverrideAttitudeQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanOverrideAttitudeQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanOverrideAttitudeQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanOverrideAuthorizationQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanOverrideAuthorizationQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanOverrideAuthorizationQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanExplodeQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanExplodeQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanExplodeQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanDataMineQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanDataMineQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanDataMineQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanJamWeaponQuickHack : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanJamWeaponQuickHack";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanJamWeaponQuickHack";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseLeftHand : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseLeftHand";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseLeftHand";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseRightHand : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseRightHand";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseRightHand";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseLegs : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseLegs";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseLegs";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanTaunt : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanTaunt";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanTaunt";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCloseCombat : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanCloseCombat";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCloseCombat";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanResurrectAllies : NonCodexAbility
{
	loc_key_name = "LocKey#52247";
	loc_key_desc = "LocKey#52248";
	prereqsForUse = 
	[
		{
			statType = "CanResurrectAllies";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanResurrectAllies";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanCallReinforcements : CodexAbility
{
	loc_key_name = "LocKey#52249";
	loc_key_desc = "LocKey#52250";
	prereqsForUse = 
	[
		{
			statType = "CanCallReinforcements";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanCallReinforcements";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanAskToFollowOrder : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanAskToFollowOrder";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanAskToFollowOrder";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanAskToHolsterWeapon : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanAskToHolsterWeapon";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanAskToHolsterWeapon";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanExitWSOnSoundStimuli : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanExitWSOnSoundStimuli";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanExitWSOnSoundStimuli";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanSprintHarass : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanSprintHarass";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanSprintHarass";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

SandevistanDashShoot : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "SandevistanDashShoot";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.SandevistanDashShoot";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseShootingSpots : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseShootingSpots";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseShootingSpots";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

PrefersCovers : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "PrefersCovers";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.PrefersCovers";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

PrefersShootingSpots : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "PrefersShootingSpots";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.PrefersShootingSpots";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseMeleeRing : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseMeleeRing";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseMeleeRing";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseCloseRing : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseCloseRing";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseCloseRing";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseMediumRing : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseMediumRing";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseMediumRing";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseFarRing : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseFarRing";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseFarRing";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanUseExtremeRing : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanUseExtremeRing";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanUseExtremeRing";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsGenericRangedArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsGenericRangedArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsGenericRangedArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsGenericMeleeArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsGenericMeleeArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsGenericMeleeArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsFastMeleeArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsFastMeleeArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsFastMeleeArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsStrongMeleeArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsStrongMeleeArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsStrongMeleeArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsFastRangedArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsFastRangedArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsFastRangedArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsHeavyRangedArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsHeavyRangedArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsHeavyRangedArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsShotgunnerArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsShotgunnerArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsShotgunnerArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsSniperArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsSniperArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsSniperArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsTechieArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsTechieArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsTechieArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsNetrunnerArchetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsNetrunnerArchetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsNetrunnerArchetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsTier1Archetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsTier1Archetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsTier1Archetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsTier2Archetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsTier2Archetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsTier2Archetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsTier3Archetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsTier3Archetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsTier3Archetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsTier4Archetype : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsTier4Archetype";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsTier4Archetype";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsReckless : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsReckless";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsReckless";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseCloseRing";
				modifierType = "Additive";
				value = 1.f;
			} : ConstantStatModifier
		];
	};
}

IsAggressive : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsAggressive";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsAggressive";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseCloseRing";
				modifierType = "Additive";
				value = 1.f;
			} : ConstantStatModifier
		];
	};
}

IsBalanced : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsBalanced";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsBalanced";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsDefensive : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsDefensive";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsDefensive";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseCloseRing";
				modifierType = "Multiplier";
				value = 0.f;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseMediumRing";
				modifierType = "Multiplier";
				value = 0.f;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseExtremeRing";
				modifierType = "Multiplier";
				value = 0.f;
			} : ConstantStatModifier
		];
	};
}

IsCautious : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsCautious";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsCautious";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseFarRing";
				modifierType = "Additive";
				value = 1.f;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.CanUseExtremeRing";
				modifierType = "Additive";
				value = 1.f;
			} : ConstantStatModifier
		];
	};
}

IsMechanical : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsMechanical";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsMechanical";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsExo : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsExo";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsExo";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsMainBoss : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsMainBoss";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsMainBoss";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsManMassive : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsManMassive";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsManMassive";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsManBig : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "IsManBig";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsManBig";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasBurningImmunity : CodexAbility
{
	loc_key_name = "LocKey#54202";
	loc_key_desc = "LocKey#54199";
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.BurningImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasFireproofSkin : GameplayAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasFireproofSkin";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ThermalResistance";
				modifierType = "Additive";
				value = 50;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Burning";
				} : StatusEffectPrereq;
				effectorClassName = "PlayVFXEffector";
				vfxName = "status_fire_resistance";
			} : PlayVFXEffector, 
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Burning";
				} : StatusEffectPrereq;
				statusEffect = "BaseStatusEffect.Burning";
				removeWithEffector = false;
				inverted = true;
			} : ApplyStatusEffectEffector
		];
	};
}

HasElectrocuteImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ElectrocuteImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasElectricCoating : GameplayAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasElectricCoating";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ElectricResistance";
				modifierType = "Additive";
				value = 50;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Electrocuted";
				} : StatusEffectPrereq;
				effectorClassName = "PlayVFXEffector";
				vfxName = "status_electricity_resistance";
			} : PlayVFXEffector, 
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Electrocuted";
				} : StatusEffectPrereq;
				statusEffect = "BaseStatusEffect.Electrocuted";
				removeWithEffector = false;
				inverted = true;
			} : ApplyStatusEffectEffector
		];
	};
}

HasUnconsciousImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.UnconsciousImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasSystemCollapseImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.SystemCollapseImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasMemoryWipeImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.MemoryWipeImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasExtendedHitReactionImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasExtendedHitReactionImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasMeleeHitReactionAndTakedownResistance : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasMeleeHitReactionAndTakedownResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasPoisonImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.PoisonImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasToxicCleanser : GameplayAbility
{
	prereqsForUse = 
	[
		{
			statType = "HasToxicCleanser";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ChemicalResistance";
				modifierType = "Additive";
				value = 50;
			} : ConstantStatModifier
		];
		effectors = 
		[
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Poisoned";
				} : StatusEffectPrereq;
				effectorClassName = "PlayVFXEffector";
				vfxName = "status_poison_resistance";
			} : PlayVFXEffector, 
			{
				prereqRecord = 
				{
					statusEffect = "BaseStatusEffect.Poisoned";
				} : StatusEffectPrereq;
				statusEffect = "BaseStatusEffect.Poisoned";
				removeWithEffector = false;
				inverted = true;
			} : ApplyStatusEffectEffector
		];
	};
}

HasMetabolicEnhancer : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasMetabolicEnhancer";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasIncreasedHackingResistance : GameplayAbility
{
	abilityPackage = 
	{
		stats = [];
	};
}

HasIncreasedResistances : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.Armor";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ThermalResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ChemicalResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ElectricResistance";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasPassiveHealthRegeneration : GameplayAbility
{
	abilityPackage = 
	{
		fk< Effector >[] effectors = 
		[
			{
				prereqRecord = "Prereqs.AlwaysTruePrereq";
				effectorClassName = "ModifyStatPoolModifierEffector";
				fk< PoolValueModifier > poolModifier = 
				{
					bool enabled = true;
					float rangeBegin = 0;
					float rangeEnd = 100;
					float startDelay = 0;
					float valuePerSec = 2;
					bool delayOnChange = false;
				} : PoolValueModifier;
				string statPoolType = "Health";
				string modificationType = "Regeneration";
			} : ModifyStatPoolModifierEffector
		];
	};
}

HasHealthMonitor : GameplayAbility
{
	abilityPackage = 
	{
		fk< Effector >[] effectors = 
		[
			{
				effectorClassName = "ApplyStatusEffectEffector";
				prereqRecord = 
				{
					CName prereqClassName = "gameMultiPrereq";
					CName aggregationType = "AND";
					fk< IPrereq >[] nestedPrereqs = 
					[
						{
							statusEffect = "BaseStatusEffect.HealthMonitorCooldown";
						} : StatusEffectAbsentPrereq, 
						{
							prereqClassName = "StatPoolPrereq";
							valueToCheck = 
							[
								{
									statType = "BaseStats.Health";
									modifierType = "Additive";
									value = 30.0f;
								} : ConstantStatModifier
							];
							statPoolType = "Health";
							comparisonType = "LessOrEqual";
						} : StatPoolPrereq
					];
				} : MultiPrereq;
				statusEffect = "BaseStatusEffect.HealthMonitor";
				removeWithEffector = false;
			} : ApplyStatusEffectEffector
		];
	};
}

HasLoweredHitReactions : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.ImpactDamageThreshold";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.StaggerDamageThreshold";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.KnockdownDamageThreshold";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.ImpactDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.StaggerDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.KnockdownDamageThresholdInCover";
				modifierType = "Multiplier";
				value = 2;
			} : ConstantStatModifier
		];
	};
}

HasElectricExplosion : GameplayAbility
{
	abilityPackage = 
	{
		fk< Effector >[] effectors = 
		[
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							nestedPrereqs = 
							[
								{
									rarity = "Boss";
									invert = true;
								} : NPCRarityPrereq, 
								{
									valueToCheck = 
									[
										{
											statType = "BaseStats.Health";
											modifierType = "Additive";
											value = 20.0f;
										} : ConstantStatModifier
									];
									statPoolType = "Health";
									comparisonType = "LessOrEqual";
								} : StatPoolPrereq, 
								{
									nestedPrereqs = 
									[
										{
											statusEffect = "BaseStatusEffect.Electrocuted";
											checkType = "CheckType.Type";
										} : StatusEffectPrereq, 
										{
											statusEffect = "BaseStatusEffect.EMP";
											checkType = "CheckType.Type";
										} : StatusEffectPrereq
									];
								} : ORPrereq
							];
						} : ANDPrereq, 
						{
							nestedPrereqs = 
							[
								{
									rarity = "Boss";
									invert = false;
								} : NPCRarityPrereq, 
								{
									valueToCheck = 
									[
										{
											statType = "BaseStats.Health";
											modifierType = "Additive";
											value = 10.0f;
										} : ConstantStatModifier
									];
									statPoolType = "Health";
									comparisonType = "LessOrEqual";
								} : StatPoolPrereq, 
								{
									nestedPrereqs = 
									[
										{
											statusEffect = "BaseStatusEffect.Electrocuted";
											checkType = "CheckType.Type";
										} : StatusEffectPrereq, 
										{
											statusEffect = "BaseStatusEffect.EMP";
											checkType = "CheckType.Type";
										} : StatusEffectPrereq
									];
								} : ORPrereq
							];
						} : ANDPrereq
					];
				} : ORPrereq;
				attackRecord = "Attacks.ElectricAbility";
			} : SimpleTriggerAttackEffect
		];
	};
}

HasHeadshotImmunity : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HeadshotImmunity";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasIncreasedUploadTime : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.UploadQuickHackMod";
				modifierType = "Additive";
				value = 2;
			} : ConstantStatModifier
		];
	};
}

HasBurningBuffs : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasBurningBuffs";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasPoisonHeal : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasPoisonHeal";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasToxicBlood : GameplayAbility
{
	abilityPackage = 
	{
		fk< Effector >[] effectors = 
		[
			{
				prereqRecord = 
				{
					conditions = 
					[
						{
							hitFlag = "SuccessfulAttack";
						} : HitFlagHitPrereqCondition
					];
				} : PostProcessHitReceived;
				attackRecord = "NPCAttacks.ToxicBlood";
			} : TriggerAttackOnOwnerEffect
		];
	};
}

HasKerenzikovOmen : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.HasKerenzikovOmen";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsPlayerGuardian : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsPlayerGuardian";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsIgnoredByEnemyNPC : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsIgnoredByEnemyNPC";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasStatusEffectApplication : NonCodexAbility
{
	loc_key_name = "LocKey#54201";
	loc_key_desc = "LocKey#54200";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.BleedingApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.PhysicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.BurningApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ThermalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.PoisonedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ChemicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.ElectrocutedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ElectricDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.BleedingApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.PhysicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.BurningApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ThermalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.PoisonedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ChemicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier, 
						{
							statType = "BaseStats.ElectrocutedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ElectricDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

DealsThermalDamage : NonCodexAbility
{
	loc_key_name = "LocKey#77816";
	loc_key_desc = "LocKey#77817";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ThermalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ThermalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

DealsElectricDamage : NonCodexAbility
{
	loc_key_name = "LocKey#77818";
	loc_key_desc = "LocKey#77819";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

DealsChemicalDamage : NonCodexAbility
{
	loc_key_name = "LocKey#77820";
	loc_key_desc = "LocKey#77821";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

CanCauseBurn : CodexAbility
{
	loc_key_name = "LocKey#77822";
	loc_key_desc = "LocKey#77823";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ThermalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.BurningApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ThermalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ThermalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.BurningApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ThermalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

CanCauseElectrocution : CodexAbility
{
	loc_key_name = "LocKey#77824";
	loc_key_desc = "LocKey#77825";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.ElectrocutedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ElectricDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ElectricDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.ElectrocutedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ElectricDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

CanCausePoison : CodexAbility
{
	loc_key_name = "LocKey#77827";
	loc_key_desc = "LocKey#77828";
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ChemicalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.PoisonedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ChemicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 5.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon, 
			{
				prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ChemicalDamage";
							modifierType = "Additive";
							value = 1;
						} : ConstantStatModifier, 
						{
							statType = "BaseStats.PoisonedApplicationRate";
							modifierType = "Additive";
							refStat = "BaseStats.ChemicalDamage";
							refObject = "Self";
							opSymbol = "*";
							value = 15.f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupOnWeapon
		];
	};
}

CanForceDismbember : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanForceDismbember";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanForceDismbember";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanInstaKillNPCs : NonCodexAbility
{
	prereqsForUse = 
	[
		{
			statType = "CanInstaKillNPCs";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanInstaKillNPCs";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsCrowdNPC : NonCodexAbility
{
	prereqsForUse = 
	[
		{
		} : NPCIsCrowd
	];
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsCrowd";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsAVMaxTac : NonCodexAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsAVMaxTac";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

CanRetreat : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.CanRetreat";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

IsExcludedFromExtraHealingOnHigherDifficulties : GameplayAbility
{
	abilityPackage = 
	{
		stats = 
		[
			{
				statType = "BaseStats.IsExcludedFromExtraHealingOnHigherDifficulties";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
}

HasICECounterHack_Smasher : NonCodexAbility
{
	abilityPackage = 
	{
		effectors = 
		[
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						"Perks.BeingHackedWithTraceableHack", {
							evaluateOnRegister = true;
						} : Effectors.NoICECooldown, 
						{
							evaluateOnRegister = true;
						} : Perks.NotPlayerBeingHacked
					];
				} : ANDPrereq;
				effectorToApply = 
				{
					objectAction = "AIQuickHack.HackCounter_Smasher";
				} : ICECounterHackEffector;
			} : ApplyEffectorEffector, 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							statusEffect = "AdamSmasher.Phase1";
						} : StatusEffectPrereq, 
						{
							statusEffect = "AdamSmasher.Phase2";
						} : StatusEffectPrereq, 
						{
							statusEffect = "AdamSmasher.Phase3";
						} : StatusEffectPrereq
					];
				} : ORPrereq;
				effectorToApply = 
				{
					statGroup = 
					{
						statModifiers = 
						[
							{
								statType = "BaseStats.AntiVirusCooldownReduction";
								modifierType = "Multiplier";
								value = 0.1f;
							} : ConstantStatModifier
						];
					};
				} : ApplyStatGroupOnPlayer;
				applicationTarget = "Player";
			} : ApplyEffectorEffector
		];
	};
}

