package NewPerks
using RTDB, Prereqs, Effectors, Attacks, Perks, BaseStats

Intelligence_Left_Milestone_1 : NewPerk
{
	enumName = "Intelligence_Left_Milestone_1";
	enumComment = "Third Eye";
	loc_name_key = "LocKey#88112";
	loc_desc_key = "LocKey#88149";
	uiData = 
	{
		floatValues = 
		[
			1f, 50f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_03_Perk_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	float memoryCostReduction = 1.0f;
	float durationIncease = 0.5f;
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									stateName = "SceneTier2";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier3";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier4";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier5";
									isInState = false;
								} : HighLevelPSMPrereq
							];
						} : ANDPrereq;
						maxDistance = 15f;
						highlightVisible = true;
						searchFilter = "Sensor";
					} : HighlightEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									stateName = "SceneTier2";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier3";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier4";
									isInState = false;
								} : HighLevelPSMPrereq, 
								{
									stateName = "SceneTier5";
									isInState = false;
								} : HighLevelPSMPrereq
							];
						} : ANDPrereq;
						maxDistance = 15f;
						highlightVisible = true;
						searchFilter = "AccessPoint";
					} : HighlightEffector
				];
			};
		}
	];
}

Intelligence_Left_Perk_1_1 : NewPerk
{
	enumName = "Intelligence_Left_Perk_1_1";
	enumComment = "Environment I";
	loc_name_key = "LocKey#88113";
	loc_desc_key = "LocKey#88150";
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
	uiData = 
	{
		floatValues = 
		[
			40f, 80f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_07_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
}

Intelligence_Left_Perk_1_2 : NewPerk
{
	enumName = "Intelligence_Left_Perk_1_2";
	enumComment = "Access Points I";
	uiData = 
	{
		floatValues = 
		[
			1f, 2f
		];
	};
	loc_name_key = "LocKey#88114";
	loc_desc_key = "LocKey#88151";
	perkIcon = "UIIcon.Hacking_Area_10_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				fk< StatModifier >[] stats = 
				[
					{
						statType = "BaseStats.ShorterChains";
						modifierType = "Additive";
						value = 2f;
					} : ConstantStatModifier
				];
			};
		}
	];
}

Intelligence_Central_Milestone_1 : NewPerk
{
	enumName = "Intelligence_Central_Milestone_1";
	enumComment = "Quickhacking I";
	loc_name_key = "LocKey#88115";
	loc_desc_key = "LocKey#88152";
	uiData = 
	{
		floatValues = 
		[
			35f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_07_Perk_1";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.MemoryRegenRateMult";
						modifierType = "Additive";
						value = 0.35f;
					} : ConstantStatModifier
				];
			};
		}
	];
}

Intelligence_Central_Perk_1_1 : NewPerk
{
	enumName = "Intelligence_Central_Perk_1_1";
	enumComment = "Stealth Hacks I";
	loc_name_key = "LocKey#88116";
	loc_desc_key = "LocKey#88153";
	uiData = 
	{
		floatValues = 
		[
			30f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_09_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.PlayerOnRevealHackProgressMultiplier";
						modifierType = "Additive";
						value = -0.30f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_1_2 : NewPerk
{
	loc_name_key = "LocKey#88117";
	loc_desc_key = "LocKey#88154";
	perkIcon = "UIIcon.CombatHacking_Area_03_Perk_2";
	uiData = 
	{
		floatValues = 
		[
			35f
		];
	};
	enumName = "Intelligence_Central_Perk_1_2";
	enumComment = "Look behind you";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_1_3 : NewPerk
{
	loc_name_key = "LocKey#88118";
	loc_desc_key = "LocKey#88155";
	uiData = 
	{
		floatValues = 
		[
			100f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_08_Perk_2";
	enumName = "Intelligence_Central_Perk_1_3";
	enumComment = "Look behind you";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	float durationMultiplier = 1.0f;
	levels = 
	[
		{
			dataPackage = 
			{
			};
		}
	];
}

Intelligence_Right_Milestone_1 : NewPerk
{
	loc_name_key = "LocKey#90135";
	loc_desc_key = "LocKey#90131";
	perkIcon = "UIIcon.Intelligence_Right_Milestone_1";
	enumName = "Intelligence_Right_Milestone_1";
	enumComment = "Vehicle Protocols";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Right_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Milestone_2 : NewPerk
{
	enumName = "Intelligence_Left_Milestone_2";
	enumComment = "Hack Queue";
	loc_name_key = "LocKey#88119";
	perkIcon = "UIIcon.CombatHacking_Area_02_Perk_3";
	binkPath = "base\movies\tutorials\700x394\perk_int_queue.bk2";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	CName[] preventInQueueAgain = 
	[
		"Ping"
	];
	bool blockSameQhTypeQueuingOnVehicles = true;
	bool disallowDeviceQhQueue = true;
	levels = 
	[
		{
			loc_desc_key = "LocKey#90140";
			uiData = 
			{
				floatValues = 
				[
					1f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Memory";
						modifierType = "Additive";
						value = 1;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#88156";
			uiData = 
			{
				floatValues = 
				[
					2f, 30
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.QuickHackQueueUploadTimeDecrease";
						modifierType = "Additive";
						value = 0.30f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.QuickHackQueueSize";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.QuickHackQueueCount";
						modifierType = "Additive";
						value = 0f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Perk_2_1 : NewPerk
{
	enumName = "Intelligence_Left_Perk_2_1";
	enumComment = "Counter-Hack: When an enemy netrunner is hacking you, you can hack them back even through obstacles and all hacks on them cost {float_0} RAM less";
	loc_name_key = "LocKey#88120";
	loc_desc_key = "LocKey#88157";
	uiData = 
	{
		floatValues = 
		[
			1f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_10_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.RevealNetrunnerWhenHacked";
						modifierType = "Additive";
						value = 1.f;
					} : ConstantStatModifier
				];
			};
		}
	];
	float memoryCostReduction = 1f;
}

Intelligence_Left_Perk_2_2 : NewPerk
{
	enumName = "Intelligence_Left_Perk_2_2";
	enumComment = "Waste Not";
	loc_name_key = "LocKey#88121";
	loc_desc_key = "LocKey#88158";
	uiData = 
	{
		floatValues = 
		[
			80f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_02_Perk_4";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	float memoryReturnFactor = 0.80;
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Intelligence_Left_Perk_2_3 : NewPerk
{
	enumName = "Intelligence_Left_Perk_2_3";
	enumComment = "Counter-Hack II: Hacking enemy netrunner when they are hacking you now applies your hacks on all enemies in their squad.";
	loc_name_key = "LocKey#88122";
	loc_desc_key = "LocKey#88159";
	perkIcon = "UIIcon.Hacking_Area_09_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Perk_2_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	int maxTargets = 6;
	levels = 
	[
		{
			dataPackage = 
			{
			};
		}
	];
}

Intelligence_Left_Perk_2_4 : NewPerk
{
	enumName = "Intelligence_Left_Perk_2_4";
	enumComment = "Networking III";
	loc_name_key = "LocKey#88123";
	loc_desc_key = "LocKey#88160";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.New_Netrunning_Area_01_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.MemoryRegenRateMult";
						modifierType = "Additive";
						refObject = "Player";
						refStat = "BaseStats.QuickHackQueueCount";
						opSymbol = "*";
						value = 0.25f;
					} : CombinedStatModifier
				];
			};
		}
	];
}

Intelligence_Central_Milestone_2 : NewPerk
{
	enumName = "Intelligence_Central_Milestone_2";
	enumComment = "Level 1: +50% RAM recovery rate increase.\nLevel 2: NPC being under control, covert or distract quickhacks, receives 150% damage from combat hacks.";
	loc_name_key = "LocKey#88124";
	binkPath = "base\movies\tutorials\700x394\perk_int_combo.bk2";
	perkIcon = "UIIcon.CombatHacking_Area_07_Perk_1";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90142";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.MemoryRegenRateMult";
						modifierType = "Additive";
						value = 0.1f;
					} : ConstantStatModifier
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#90141";
			uiData = 
			{
				floatValues = 
				[
					60f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.ComboHackPrereq";
						value = 1.6f;
					} : MultiplyDamage, 
					{
						prereqRecord = "NewPerks.ComboHackPrereq";
						hitFlag = "Special";
					} : AddHitFlagToAttackEffector
				];
			};
		}
	];
}

ComboHackPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					tagToCheck = "ControlQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition, 
				{
					attackType = "Hack";
				} : AttackTypeHitPrereqCondition, 
				{
					hitFlag = "UltimateQuickHack";
					invertHitFlag = true;
				} : HitFlagHitPrereqCondition
			];
		} : PreProcessHitTriggered, 
		{
			conditions += 
			[
				{
					tagToCheck = "CovertQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition, 
				{
					attackType = "Hack";
				} : AttackTypeHitPrereqCondition, 
				{
					hitFlag = "UltimateQuickHack";
					invertHitFlag = true;
				} : HitFlagHitPrereqCondition
			];
		} : PreProcessHitTriggered
	];
}

EnemyHackedPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					tagToCheck = "ControlQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition
			];
		} : PreProcessHitTriggered, 
		{
			conditions += 
			[
				{
					tagToCheck = "CovertQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition
			];
		} : PreProcessHitTriggered, 
		{
			conditions += 
			[
				{
					tagToCheck = "CombatQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition
			];
		} : PreProcessHitTriggered, 
		{
			conditions += 
			[
				{
					tagToCheck = "UltimateQuickhacked";
					checkType = "CheckType.Tag";
				} : StatusEffectPresentHitPrereqCondition
			];
		} : PreProcessHitTriggered
	];
}

Intelligence_Central_Perk_2_1 : NewPerk
{
	enumName = "Intelligence_Central_Perk_2_1";
	enumComment = "Combo Hacks II";
	loc_name_key = "LocKey#88125";
	loc_desc_key = "LocKey#88162";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_09_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions += 
							[
								{
									hitFlag = "QuickHack";
								} : HitFlagHitPrereqCondition
							];
						} : IsTargetKilled;
						statPoolType = "Memory";
						statPoolValue = 0.25;
						recoverMemoryAmount = 0;
						skipLastCombatHack = true;
					} : ModifyStatPoolValueQuickhackCostEffector
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_2_2 : NewPerk
{
	enumName = "Intelligence_Central_Perk_2_2";
	enumComment = "Combo Hacks I";
	loc_name_key = "LocKey#88126";
	loc_desc_key = "LocKey#88163";
	uiData = 
	{
		floatValues = 
		[
			1f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_02_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	float memoryCostReduction = 1f;
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_2_3 : NewPerk
{
	enumName = "Intelligence_Central_Perk_2_3";
	enumComment = "Combo Hacks III";
	loc_name_key = "LocKey#88127";
	loc_desc_key = "LocKey#88164";
	uiData = 
	{
		floatValues = 
		[
			7f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						value = 0.07f;
						operationType = "Multiply";
					} : ModifyDamagePerHackEffector
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_2_4 : NewPerk
{
	enumName = "Intelligence_Central_Perk_2_4";
	enumComment = "Stealth takedowns when your position is being revealed resets the revealing progress.";
	loc_name_key = "LocKey#88128";
	loc_desc_key = "LocKey#88165";
	uiData = 
	{
		floatValues = 
		[
			100f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_04_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.AnyTakedown";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.BaseQuickHackUpload";
								statPoolValue = 0;
							} : StatPoolUpdate
						];
						setValue = true;
						usePercent = true;
					} : ModifyStatPoolValueEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.AnyTakedown", {
									statType = "HasSystemCollapse";
									valueToCheck = 1;
									comparisonType = "Equal";
								} : StatPrereq
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.SystemCollapseMemoryCostReduction";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Inbetween_Right_2 : NewPerk
{
	enumName = "Intelligence_Inbetween_Right_2";
	enumComment = "Smart RAM Recycle: Smart weapon kills recovers RAM equal to {int_0}% of all quickhacks affecting the target.";
	loc_name_key = "LocKey#88129";
	loc_desc_key = "LocKey#88166";
	uiData = 
	{
		intValues = 
		[
			2, 50f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_06_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Inbetween_Right_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Perk_2_1", "NewPerks.Intelligence_Right_Perk_2_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										attackType = "Ranged";
									} : Prereqs.AttackTypeHitPrereqCondition
								];
							} : Perks.IsTargetKilled;
							statPoolType = "Memory";
							statPoolValue = 0.5;
							recoverMemoryAmount = 2;
						} : ModifyStatPoolValueQuickhackCostEffector;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Inbetween_Left_2 : NewPerk
{
	enumName = "Intelligence_Inbetween_Left_2";
	enumComment = "Monowire I - Monowire attacks recover {float_0}  RAM per attack. The amount is increased to {float_1} if the enemy is hacked or has hack uploading";
	loc_name_key = "LocKey#88130";
	loc_desc_key = "LocKey#88167";
	uiData = 
	{
		floatValues = 
		[
			0.5f, 1f
		];
	};
	perkIcon = "UIIcon.Intelligence_Inbetween_Left_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Left_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Perk_2_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.NanoWiresHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										targetType = "Vehicle";
										invert = true;
									} : TargetTypeHitPrereqCondition, 
									{
										statusEffect = "Defeated";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										statusEffect = "Unconscious";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										float valueToCheck = 0f;
										CName objectToCheck = "Target";
										string statPoolToCompare = "Health";
										string comparisonType = "NotEqual";
									} : StatPoolHitPrereqCondition, 
									{
										weaponType = "Melee";
									} : WeaponTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition, 
									{
										valueToCheck = 0.0f;
										objectToCheck = "Target";
										statToCompare = "QuickHackUpload";
										comparisonType = "LessOrEqual";
									} : StatHitPrereqCondition, 
									{
										valueToCheck = 0.0f;
										objectToCheck = "Target";
										statToCompare = "WasQuickHacked";
										comparisonType = "LessOrEqual";
									} : StatHitPrereqCondition
								];
							} : PostProcessHitTriggered;
							statusEffect = "BaseStatusEffect.Intelligence_Inbetween_Left_2_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = "Prereqs.NanoWiresHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										targetType = "Vehicle";
										invert = true;
									} : TargetTypeHitPrereqCondition, 
									{
										statusEffect = "Defeated";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										statusEffect = "Unconscious";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										float valueToCheck = 0f;
										CName objectToCheck = "Target";
										string statPoolToCompare = "Health";
										string comparisonType = "NotEqual";
									} : StatPoolHitPrereqCondition, 
									{
										weaponType = "Melee";
									} : WeaponTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition, 
									{
										valueToCheck = 0.0f;
										objectToCheck = "Target";
										statToCompare = "WasQuickHacked";
										comparisonType = "Greater";
									} : StatHitPrereqCondition
								];
							} : PostProcessHitTriggered;
							statusEffect = "BaseStatusEffect.Intelligence_Inbetween_Left_2_lvl2_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = "Prereqs.NanoWiresHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										targetType = "Vehicle";
										invert = true;
									} : TargetTypeHitPrereqCondition, 
									{
										statusEffect = "Defeated";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										statusEffect = "Unconscious";
										checkType = "CheckType.Type";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										float valueToCheck = 0f;
										CName objectToCheck = "Target";
										string statPoolToCompare = "Health";
										string comparisonType = "NotEqual";
									} : StatPoolHitPrereqCondition, 
									{
										weaponType = "Melee";
									} : WeaponTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition, 
									{
										valueToCheck = 0.0f;
										objectToCheck = "Target";
										statToCompare = "QuickHackUpload";
										comparisonType = "Greater";
									} : StatHitPrereqCondition
								];
							} : PostProcessHitTriggered;
							statusEffect = "BaseStatusEffect.Intelligence_Inbetween_Left_2_lvl2_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Right_Milestone_2 : NewPerk
{
	enumName = "Intelligence_Right_Milestone_2";
	enumComment = "Smart Targeting Expert";
	loc_name_key = "LocKey#88131";
	perkIcon = "UIIcon.Intelligence_Right_Milestone_2";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_2";
	requiresPerks = [];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90126";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunHipTargetableAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipTargetableAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsTargetableAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsTargetableAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipLockingAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipLockingAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsLockingAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsLockingAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.10f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#88168";
			uiData = 
			{
				floatValues = 
				[
					15f, 20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunHipTimeToLock";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsTimeToLock";
									modifierType = "AdditiveMultiplier";
									value = -0.20f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunDisableOnReload";
									modifierType = "Additive";
									value = -1.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Right_Perk_2_1 : NewPerk
{
	enumName = "Intelligence_Right_Perk_2_1";
	enumComment = "Smart Gun Continous Lock";
	loc_name_key = "LocKey#88132";
	loc_desc_key = "LocKey#88169";
	perkIcon = "UIIcon.Intelligence_Right_Perk_2_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunContinousLockEnabled";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Right_Perk_2_2 : NewPerk
{
	enumName = "Intelligence_Right_Perk_2_2";
	enumComment = "Smart Gun Calculated Accuracy";
	loc_name_key = "LocKey#88133";
	loc_desc_key = "LocKey#88170";
	uiData = 
	{
		floatValues = 
		[
			2f
		];
	};
	perkIcon = "UIIcon.Crafting_Area_05_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunSpreadMultiplier";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SpreadDefaultX";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SpreadDefaultY";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SpreadMaxX";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SpreadMaxY";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SmartGunSpiralRadius";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SmartGunMissRadius";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = -0.02f;
								} : CombinedStatModifier, 
								{
									statType = "BaseStats.SmartGunHitProbability";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.Memory";
									refObject = "Player";
									opSymbol = "*";
									value = 0.01f;
								} : CombinedStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Milestone_3 : NewPerk
{
	enumName = "Intelligence_Left_Milestone_3";
	enumComment = "Milestone - Hack Queue Mastery";
	loc_name_key = "LocKey#88134";
	perkIcon = "UIIcon.CombatHacking_Area_06_Perk_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90148";
			uiData = 
			{
				floatValues = 
				[
					1
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Memory";
						modifierType = "Additive";
						value = 1;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#90147";
			uiData = 
			{
				floatValues = 
				[
					1f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.DeviceMemoryCostReduction";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#88171";
			uiData = 
			{
				floatValues = 
				[
					1f, 60
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.QuickHackQueueSize";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Perk_3_1 : NewPerk
{
	enumName = "Intelligence_Left_Perk_3_1";
	enumComment = "Queue III";
	loc_name_key = "LocKey#88135";
	loc_desc_key = "LocKey#88172";
	uiData = 
	{
		floatValues = 
		[
			1f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_09_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.FirstHackOfTypeInQueueRAMDecrease";
									modifierType = "Additive";
									value = 1.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Perk_3_2 : NewPerk
{
	enumName = "Intelligence_Left_Perk_3_2";
	enumComment = "First hack in a hack queue now also uploads x% faster";
	loc_name_key = "LocKey#88136";
	loc_desc_key = "LocKey#88173";
	uiData = 
	{
		floatValues = 
		[
			50f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_08_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.FirstHackInQueueUploadTimeDecrease";
									modifierType = "Additive";
									value = 0.50f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Left_Perk_3_4 : NewPerk
{
	enumName = "Intelligence_Left_Perk_3_4";
	enumComment = "Monowire II - Finisher is available on low health enemies. The health threshold is increased with each hack in enemy's queue. Finishers recover {int_0} health and {int_1} RAM;";
	loc_name_key = "LocKey#88137";
	loc_desc_key = "LocKey#88174";
	uiData = 
	{
		floatValues = 
		[
			15f, 5f
		];
	};
	perkIcon = "UIIcon.Intelligence_Left_Perk_3_4";
	binkPath = "base\movies\tutorials\700x394\perk_int_nanowirefinisher.bk2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							value = 3.5f;
						} : MultiplyDamage;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "FinisherTriggered";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition, 
									{
										invert = true;
										rarity = "Boss";
									} : TargetNPCRarityHitPrereqCondition, 
									{
										invert = true;
										rarity = "MaxTac";
									} : TargetNPCRarityHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "Kill";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponItemType = "Cyb_NanoWires";
									} : WeaponItemTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "Special";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.NanoWiresHeldPrereq", {
									statusEffect = "BaseStatusEffect.Berserk";
									checkType = "CheckType.Type";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealthRegainOnKill";
									modifierType = "Additive";
									value = 15.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanPerformMonowireFinisher";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherMonowire_TargetDistanceMax";
									modifierType = "Additive";
									value = 7.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherMonowire_TargetHealthMax";
									modifierType = "Additive";
									value = 25.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.FinisherHealthThresholdIncreaseForQueue";
									modifierType = "Additive";
									value = 10.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	float distanceMult = 3.0f;
}

Intelligence_Inbetween_Left_3 : NewPerk
{
	enumName = "Intelligence_Inbetween_Left_3";
	enumComment = "Queue Overclock";
	loc_name_key = "LocKey#88139";
	loc_desc_key = "LocKey#88175";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Left_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Perk_3_1", "NewPerks.Intelligence_Central_Perk_3_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.BloodQueueHealing";
						modifierType = "Additive";
						value = 25.f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Milestone_3 : NewPerk
{
	enumName = "Intelligence_Central_Milestone_3";
	enumComment = "Overclock I";
	loc_name_key = "LocKey#88138";
	perkIcon = "UIIcon.CombatHackingTrait01";
	binkPath = "base\movies\tutorials\700x394\perk_int_overclock.bk2";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90150";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.MemoryRegenRateMult";
						modifierType = "Additive";
						value = 0.1f;
					} : ConstantStatModifier
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#90149";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.QuickhackDamageBonusMultiplier";
						modifierType = "Additive";
						value = 0.1f;
					} : ConstantStatModifier
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#88176";
			uiData = 
			{
				floatValues = 
				[
					10f, 14f, 30f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.OverclockedStateHealthCost";
						modifierType = "Additive";
						value = 10f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanUseOverclock";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		}
	];
}

Intelligence_Central_Perk_3_1 : NewPerk
{
	enumName = "Intelligence_Central_Perk_3_1";
	enumComment = "Blood Magic - During overclock quickhacks deal more damage the less health you have. Up to +{int_0}%";
	loc_name_key = "LocKey#88140";
	loc_desc_key = "LocKey#88177";
	uiData = 
	{
		floatValues = 
		[
			50f
		];
	};
	perkIcon = "UIIcon.Hacking_Area_07_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsOverclockActivePrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "Hack";
									} : AttackTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							effectorClassName = "ModifyDamageWithStatPoolEffector";
							string statPool = "Health";
							string poolStatus = "Missing";
							string refObj = "Instigator";
							string operationType = "Multiply";
							float maxDmg = 1.5f;
						} : Effector;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_3_2 : NewPerk
{
	enumName = "Intelligence_Central_Perk_3_2";
	enumComment = "Overclock IV - In overclock state, all your RAM recovery and regeneration is also applied to your health instead.";
	loc_name_key = "LocKey#88141";
	loc_desc_key = "LocKey#88178";
	perkIcon = "UIIcon.CombatHacking_Area_01_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.IsOverclockActivePrereq", {
									statType = "MemoryRegenRate";
									valueToCheck = 0;
									comparisonType = "Greater";
								} : StatPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealthInCombatRegenEnabled";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.HealthGeneralRegenRateAdd";
									modifierType = "Additive";
									refStat = "BaseStats.MemoryRegenRate";
									opSymbol = "*";
									value = 1f;
								} : CombinedStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Central_Perk_3_3 : NewPerk
{
	enumName = "Intelligence_Central_Perk_3_3";
	enumComment = "Overclock V - Activating Overlock heals you for {float_0} x your Max Ram";
	loc_name_key = "LocKey#88142";
	loc_desc_key = "LocKey#88179";
	uiData = 
	{
		floatValues = 
		[
			5f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_02_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsOverclockActivePrereq";
						effectorToApply = 
						{
							statusEffect = "BaseStatusEffect.Intelligence_Central_Perk_3_3_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Right_Milestone_3 : NewPerk
{
	enumName = "Intelligence_Right_Milestone_3";
	enumComment = "Extra Acquisition";
	loc_name_key = "LocKey#88143";
	loc_desc_key = "LocKey#88180";
	perkIcon = "UIIcon.Intelligence_Right_Milestone_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Right_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90152";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunHipTargetableAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipTargetableAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsTargetableAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsTargetableAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipLockingAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunHipLockingAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsLockingAngleYaw";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SmartGunAdsLockingAnglePitch";
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#90151";
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunKeepTargetsOnAimStateChange";
									modifierType = "Additive";
									value = 1.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#88180";
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SmartGunKeepTargetsOnWeaponSwap";
									modifierType = "Additive";
									value = 1.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}
	];
}

Intelligence_Right_Perk_3_1 : NewPerk
{
	enumName = "Intelligence_Right_Perk_3_1";
	enumComment = "Fasttrack";
	loc_name_key = "LocKey#88144";
	loc_desc_key = "LocKey#88181";
	uiData = 
	{
		floatValues = 
		[
			1f
		];
	};
	perkIcon = "UIIcon.Intelligence_Right_Perk_3_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.SmartWeaponHeldPrereq", {
									bool inverted = true;
								} : Prereqs.SniperRifleHeldPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									value = 1.f;
								} : SmartGunTrackMultipleEntitiesInADSModifier, 
								{
									value = 1.f;
								} : SmartGunHipMaxLockedTargetsModifier, 
								{
									value = 1.f;
								} : SmartGunAdsMaxLockedTargetsModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		}
	];
}

Intelligence_Right_Perk_3_2 : NewPerk
{
	enumName = "Intelligence_Right_Perk_3_2";
	enumComment = "Terminal Velocity";
	loc_name_key = "LocKey#88145";
	loc_desc_key = "Lockey#88182";
	uiData = 
	{
		floatValues = 
		[
			10f, 3f
		];
	};
	perkIcon = "UIIcon.Intelligence_Right_Perk_3_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.SmartWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										attackType = "Ranged";
									} : Prereqs.AttackTypeHitPrereqCondition
								];
							} : Perks.IsTargetKilled;
							statusEffect = "BaseStatusEffect.Intelligence_Right_Perk_3_2_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector
				];
			};
		}
	];
}

Intelligence_Master_Perk_1 : NewPerk
{
	enumName = "Intelligence_Master_Perk_1";
	enumComment = "Queue IV";
	loc_name_key = "LocKey#88146";
	loc_desc_key = "Lockey#88183";
	uiData = 
	{
		floatValues = 
		[
			1f, 50, 15
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_10_Perk_2";
	category = "NewPerks.MasterNewPerkCategory";
	slot = "NewPerks.Master_Perk_1";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Left_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	float memoryCostReduction = 0.5f;
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.QuickHackQueueSize";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions = 
							[
								{
									statusEffect = "Intelligence_Master_Perk_2_Queue_Lock";
									checkType = "CheckType.Record";
								} : StatusEffectPresentHitPrereqCondition
							];
						} : ProcessHitTriggered;
						value = 1.15f;
					} : MultiplyDamage
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Master_Perk_3 : NewPerk
{
	enumName = "Intelligence_Master_Perk_3";
	enumComment = "Overclock III";
	loc_name_key = "LocKey#88147";
	loc_desc_key = "LocKey#88184";
	uiData = 
	{
		floatValues = 
		[
			50, 1.f
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_05_Perk_1";
	category = "NewPerks.MasterNewPerkCategory";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_3"
	];
	slot = "NewPerks.Master_Perk_3";
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsOverclockActivePrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.QuickHackOverclockSpreadNumber";
									modifierType = "Additive";
									value = 1.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.OverclockSpreadChance";
									modifierType = "Additive";
									value = 0.5f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Intelligence_Master_Perk_4 : NewPerk
{
	enumName = "Intelligence_Master_Perk_4";
	enumComment = "SMART Overclock";
	loc_name_key = "LocKey#88148";
	loc_desc_key = "LocKey#88185";
	binkPath = "base\movies\tutorials\700x394\perk_int_smartoverclock.bk2";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Intelligence_Master_Perk_4";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.SmartGunsPerkWeaponGroup";
	requiresPerks = 
	[
		"NewPerks.Intelligence_Central_Milestone_3", "NewPerks.Intelligence_Right_Milestone_3"
	];
	slot = "NewPerks.Master_Perk_4";
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.IntelligenceAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.SmartWeaponHeldPrereq", "NewPerks.IsOverclockActivePrereq", "NewPerks.EnemyHackedPrereq"
							];
						} : ANDPrereq;
						value = 1.25f;
					} : MultiplyDamage, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.SmartWeaponHeldPrereq", "NewPerks.IsOverclockActivePrereq"
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Intelligence_Master_Perk_4_Overclock_Buff";
						removeWithEffector = true;
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

IsOverclockActivePrereq : StatusEffectPrereq
{
	statusEffect = "BaseStatusEffect.Intelligence_Central_Milestone_3_Overclock_Buff";
}

