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

Tech_Left_Milestone_1 : NewPerk
{
	enumName = "Tech_Left_Milestone_1";
	enumComment = "Killing enemies slightly regenerates the charges of the healing items and grenades.";
	loc_name_key = "LocKey#89297";
	loc_desc_key = "LocKey#89296";
	uiData = 
	{
		floatValues = 
		[
			5
		];
	};
	perkIcon = "UIIcon.Crafting_Area_08_Perk_1";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_1";
	requiresPerks = [];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsTargetKilled";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.HealingItemsCharges";
								statModifiers = 
								[
									{
										statType = "BaseStats.HealingItemsCharges";
										modifierType = "Additive";
										refObject = "Self";
										refStat = "BaseStats.HealingItemsRechargeDuration";
										opSymbol = "*";
										value = 0.05f;
									} : CombinedStatModifier
								];
							} : StatPoolUpdate, 
							{
								statPoolType = "BaseStatPools.GrenadesCharges";
								statModifiers = 
								[
									{
										statType = "BaseStats.GrenadesCharges";
										modifierType = "Additive";
										refObject = "Self";
										refStat = "BaseStats.GrenadesRechargeDuration";
										opSymbol = "*";
										value = 0.05f;
									} : CombinedStatModifier
								];
							} : StatPoolUpdate
						];
					} : ModifyStatPoolValueEffector
				];
			};
		}
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_1_1 : NewPerk
{
	enumName = "Tech_Left_Perk_1_1";
	enumComment = "Last charge of healing item is 30% more effective.";
	loc_name_key = "LocKey#88271";
	loc_desc_key = "LocKey#89293";
	uiData = 
	{
		floatValues = 
		[
			30
		];
	};
	perkIcon = "UIIcon.Kenjutsu_Area_10_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_1"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							howManyCharges = "Empty";
							typeOfItem = "HealingItems";
						} : Prereqs.ChargedItemsPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.InhalerBaseHealing";
									modifierType = "AdditiveMultiplier";
									value = 0.30;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.InjectorBaseHealing";
									modifierType = "AdditiveMultiplier";
									value = 0.30;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.InjectorBaseOverTheTimeHealing";
									modifierType = "AdditiveMultiplier";
									value = 0.30;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_1_2 : NewPerk
{
	enumName = "Tech_Left_Perk_1_2";
	enumComment = "Regeneration rate of the first healing item charge is increased by 30%";
	loc_name_key = "LocKey#88272";
	loc_desc_key = "Lockey#89294";
	uiData = 
	{
		floatValues = 
		[
			15
		];
	};
	perkIcon = "UIIcon.ColdBlood_Area_04_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_1"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							howManyCharges = "FirstFromTop";
							typeOfItem = "HealingItems";
						} : Prereqs.ChargedItemsPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealingItemsChargesRegenMult";
									modifierType = "Additive";
									value = 0.15;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Right_Milestone_1 : NewPerk
{
	loc_name_key = "LocKey#89357";
	loc_desc_key = "LocKey#89356";
	uiData = 
	{
		floatValues = 
		[
			33, 25, 0.7
		];
	};
	perkIcon = "UIIcon.Tech_Right_Milestone_1";
	enumName = "Tech_Right_Milestone_1";
	enumComment = "Gearhead";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Right_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.VehicleMissileLauncherLockOnTime";
									modifierType = "Additive";
									value = -0.7f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.GearheadDamageMultiplier";
									modifierType = "Additive";
									value = 0.25f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Perks.IsPlayerDrivingOrInTransition";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Health";
									modifierType = "Multiplier";
									value = 1.33f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnVehicle
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Central_Milestone_2 : NewPerk
{
	enumName = "Tech_Central_Milestone_2";
	enumComment = "Cyberware Tinkerer";
	loc_name_key = "LocKey#88273";
	perkIcon = "UIIcon.Crafting_Area_02_Perk_2";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_2";
	requiresPerks = [];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89358";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SecondaryModifiersAdditiveMultiplier";
									modifierType = "Additive";
									value = 0.1;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}, 
		{
			loc_desc_key = "LocKey#89121";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CyberwareTinkererStat";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}
	];
}

Tech_Central_Perk_2_1 : NewPerk
{
	enumName = "Tech_Central_Perk_2_1";
	enumComment = "Driver Update";
	loc_name_key = "LocKey#88274";
	loc_desc_key = "LocKey#89122";
	perkIcon = "UIIcon.Hacking_Area_06_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_2"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.DriverUpdatePerkFlag";
						modifierType = "Additive";
						value = 1;
					} : ConstantStatModifier
				];
			};
		}
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Central_Perk_2_2 : NewPerk
{
	enumName = "Tech_Central_Perk_2_2";
	enumComment = "Decentralized";
	loc_name_key = "LocKey#89123";
	loc_desc_key = "LocKey#89124";
	uiData = 
	{
		floatValues = 
		[
			9, 4
		];
	};
	float amountOfCapacityGivenForRipperdocUI = 20f;
	perkIcon = "UIIcon.CombatHacking_Area_10_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_2"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statType = "Strength";
							valueToCheck = 9;
							comparisonType = "GreaterOrEqual";
						} : StatPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									modifierType = "Additive";
									value = 4;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statType = "Reflexes";
							valueToCheck = 9;
							comparisonType = "GreaterOrEqual";
						} : StatPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									modifierType = "Additive";
									value = 4;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statType = "Intelligence";
							valueToCheck = 9;
							comparisonType = "GreaterOrEqual";
						} : StatPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									modifierType = "Additive";
									value = 4;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statType = "TechnicalAbility";
							valueToCheck = 9;
							comparisonType = "GreaterOrEqual";
						} : StatPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									modifierType = "Additive";
									value = 4;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statType = "Cool";
							valueToCheck = 9;
							comparisonType = "GreaterOrEqual";
						} : StatPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									modifierType = "Additive";
									value = 4;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Humanity";
									modifierType = "Additive";
									refStat = "BaseStats.Tech_Central_Perk_2_2_Humanity";
									refObject = "Self";
									opSymbol = "*";
									value = 1.0f;
								} : CombinedStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Central_Perk_2_3 : NewPerk
{
	enumName = "Tech_Central_Perk_2_3";
	enumComment = "Lucky Find";
	loc_name_key = "LocKey#89126";
	loc_desc_key = "LocKey#89125";
	uiData = 
	{
		floatValues = 
		[
			25
		];
	};
	perkIcon = "UIIcon.Hacking_Area_10_Perk_4";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_2"
	];
	levels = 
	[
		{
		}
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Central_Perk_2_4 : NewPerk
{
	enumName = "Tech_Central_Perk_2_4";
	enumComment = "Iron Man";
	loc_name_key = "LocKey#89127";
	loc_desc_key = "LocKey#89129";
	uiData = 
	{
		floatValues = 
		[
			5f
		];
	};
	perkIcon = "UIIcon.Athletics_Area_10_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_2"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							equipAreas = 
							[
								"MusculoskeletalSystemCW", "IntegumentarySystemCW"
							];
						} : Prereqs.ItemSlotsFilledPrereq;
						effectorToApply = 
						{
							prereqRecord = "Prereqs.ProcessHitReceived";
							value = 0.95f;
						} : MultiplyDamage;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Inbetween_Right_2 : NewPerk
{
	enumName = "Tech_Inbetween_Right_2";
	enumComment = "Connoisseur";
	loc_name_key = "LocKey#89128";
	loc_desc_key = "LocKey#89130";
	uiData = 
	{
		intValues = 
		[
			3
		];
	};
	perkIcon = "UIIcon.CraftingTrait01";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Right_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Perk_2_1"
	];
	levels = 
	[
		{
		} : NewPerkLevelData
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Milestone_2 : NewPerk
{
	enumName = "Tech_Left_Milestone_2";
	enumComment = "+1 Max Healing item charge. Recharge speed of healing items is 75% faster outside of combat";
	loc_name_key = "LocKey#88270";
	perkIcon = "UIIcon.Crafting_Area_04_Perk_1";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_1"
	];
	levels = 
	[
		{
			loc_desc_key = "LocKey#89295";
			uiData = 
			{
				floatValues = 
				[
					8f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealingItemsChargesRegenMult";
									modifierType = "Additive";
									value = 0.08;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.GrenadesChargesRegenMult";
									modifierType = "Additive";
									value = 0.08;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89292";
			uiData = 
			{
				floatValues = 
				[
					150f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealingItemMaxCharges";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							stateName = "InCombat";
							isInState = false;
						} : Prereqs.CombatPSMPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealingItemsChargesRegenMult";
									modifierType = "Additive";
									value = 1.5;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_2_1 : NewPerk
{
	enumName = "Tech_Left_Perk_2_1";
	enumComment = "+1 Max Grenades charge. Recharge speed of grenades is 250% faster outside of combat.";
	loc_name_key = "LocKey#89298";
	loc_desc_key = "LocKey#89299";
	uiData = 
	{
		floatValues = 
		[
			1, 250
		];
	};
	perkIcon = "UIIcon.Engineering_Area_02_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_2"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.GrenadesMaxCharges";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							stateName = "InCombat";
							isInState = false;
						} : Prereqs.CombatPSMPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.GrenadesChargesRegenMult";
									modifierType = "Additive";
									value = 2.5;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_2_2 : NewPerk
{
	enumName = "Tech_Left_Perk_2_2";
	enumComment = "If you have no healing item charges, Killing an enemy while at critical health, instantly regenerates a healing item charge";
	loc_name_key = "LocKey#89301";
	loc_desc_key = "LocKey#89300";
	uiData = 
	{
		floatValues = 
		[
			25f, 100f
		];
	};
	perkIcon = "UIIcon.Athletics_Area_06_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.IsPlayerBelowCriticalHealth", "Perks.IsTargetKilled", {
									howManyCharges = "Empty";
									typeOfItem = "HealingItems";
								} : Prereqs.ChargedItemsPrereq
							];
						} : ANDPrereq;
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.HealingItemsCharges";
								statModifiers = 
								[
									{
										statType = "BaseStats.HealingItemsCharges";
										modifierType = "Additive";
										refObject = "Self";
										refStat = "BaseStats.HealingItemsRechargeDuration";
										opSymbol = "*";
										value = 1f;
									} : CombinedStatModifier
								];
							} : StatPoolUpdate
						];
					} : ModifyStatPoolValueEffector
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Left_Perk_2_3 : NewPerk
{
	enumName = "Tech_Left_Perk_2_3";
	enumComment = "Application of healing items is faster during the combat.";
	loc_name_key = "LocKey#89302";
	loc_desc_key = "LocKey#89303";
	uiData = 
	{
		floatValues = 
		[
			15
		];
	};
	perkIcon = "UIIcon.Athletics_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_2"
	];
	levels = 
	[
		{
		} : NewPerkLevelData
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_2_4 : NewPerk
{
	enumName = "Tech_Left_Perk_2_4";
	enumComment = "While having no grenade charges, the regen rate of grenades is increased by 75%";
	loc_name_key = "LocKey#89305";
	loc_desc_key = "LocKey#89304";
	uiData = 
	{
		floatValues = 
		[
			50
		];
	};
	perkIcon = "UIIcon.Crafting_Area_04_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							howManyCharges = "Empty";
							typeOfItem = "Grenade";
						} : Prereqs.ChargedItemsPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.GrenadesChargesRegenMult";
									modifierType = "Additive";
									value = 0.50;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Central_Milestone_3 : NewPerk
{
	enumName = "Tech_Central_Milestone_3";
	enumComment = "Cyberware Expert";
	loc_name_key = "LocKey#89131";
	perkIcon = "UIIcon.Tech_Central_Milestone_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89307";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SecondaryModifiersAdditiveMultiplier";
									modifierType = "Additive";
									value = 0.1;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89306";
			uiData = 
			{
				floatValues = 
				[
					40f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Armor";
									modifierType = "Additive";
									value = 40;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89140";
		} : NewPerkLevelData
	];
}

Tech_Central_Perk_3_1 : NewPerk
{
	enumName = "Tech_Central_Perk_3_1";
	enumComment = "Extended Warranty";
	loc_name_key = "LocKey#89132";
	loc_desc_key = "LocKey#89141";
	uiData = 
	{
		floatValues = 
		[
			15
		];
	};
	perkIcon = "UIIcon.Tech_Central_Perk_3_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.CyberwareDurationBuff";
						modifierType = "Additive";
						value = 0.15f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.BerserkChargesDecayRateMult";
						modifierType = "Additive";
						value = 0.15f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.PlayerSandevistanChargesDecayPerSecond";
						modifierType = "AdditiveMultiplier";
						value = -0.15f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.JenkinsHelperDecayPerSecond";
						modifierType = "AdditiveMultiplier";
						value = -0.15f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.OpticalCamoChargesDecayRateMult";
						modifierType = "Additive";
						value = -0.15f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.OpticalCamoDurationMultiplier";
						modifierType = "Additive";
						value = 0.15f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Central_Perk_3_2 : NewPerk
{
	enumName = "Tech_Central_Perk_3_2";
	enumComment = "Ambidextrous";
	loc_name_key = "LocKey#89133";
	loc_desc_key = "LocKey#89142";
	perkIcon = "UIIcon.ColdBlood_Area_06_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Tech_Central_Perk_3_3 : NewPerk
{
	enumName = "Tech_Central_Perk_3_3";
	enumComment = "Cyberware Master";
	loc_name_key = "LocKey#89134";
	loc_desc_key = "LocKey#89143";
	perkIcon = "UIIcon.Hacking_Area_05_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		"RTDB.NewPerkLevelData"
	];
}

Tech_Central_Perk_3_4 : NewPerk
{
	enumName = "Tech_Central_Perk_3_4";
	enumComment = "Chromed Out";
	loc_name_key = "LocKey#89135";
	loc_desc_key = "LocKey#89144";
	uiData = 
	{
		floatValues = 
		[
			15
		];
	};
	perkIcon = "UIIcon.CombatHacking_Area_02_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							equipAreas = 
							[
								"SystemReplacementCW", "FrontalCortexCW", "EyesCW", "MusculoskeletalSystemCW", "NervousSystemCW", "CardiovascularSystemCW", "IntegumentarySystemCW", "ArmsCW", "LegsCW", "HandsCW"
							];
						} : Prereqs.ItemSlotsFilledPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CyberwareCooldownReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.OpticalCamoChargesRegenRate";
									modifierType = "AdditiveMultiplier";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.TimeDilationSandevistanRechargeDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.BerserkChargesRegenRate";
									modifierType = "AdditiveMultiplier";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.JenkinsHelperRegenPerSecond";
									modifierType = "AdditiveMultiplier";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.ProjectileLauncherChargesRegenMult";
									modifierType = "Additive";
									value = 0.15;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Inbetween_Left_3 : NewPerk
{
	enumName = "Tech_Inbetween_Left_3";
	enumComment = "Doom Launcher";
	loc_name_key = "LocKey#89136";
	loc_desc_key = "LocKey#93822";
	uiData = 
	{
		floatValues = 
		[
			1, 20, 5, 25, 200
		];
	};
	perkIcon = "UIIcon.Tech_Inbetween_Left_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Left_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Perk_3_01", "NewPerks.Tech_Central_Perk_3_2"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							howManyCharges = "Empty";
							typeOfItem = "ProjectileLauncher";
						} : Prereqs.ChargedItemsPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ProjectileLauncherChargesRegenMult";
									modifierType = "Additive";
									value = 0.25;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ProjectileLauncherMaxCharges";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.ProjectileLauncherChargesRegenMult";
									modifierType = "Additive";
									value = 0.20;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Perks.IsTargetKilled";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.ProjectileLauncherCharges";
								statModifiers = 
								[
									{
										statType = "BaseStats.ProjectileLauncherCharges";
										modifierType = "Additive";
										refObject = "Self";
										refStat = "BaseStats.ProjectileLauncherChargesRegenRate";
										opSymbol = "*";
										value = 0.05f;
									} : CombinedStatModifier
								];
							} : StatPoolUpdate
						];
					} : ModifyStatPoolValueEffector, 
					{
						prereqRecord = 
						{
							stateName = "InCombat";
							isInState = false;
						} : Prereqs.CombatPSMPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ProjectileLauncherChargesRegenMult";
									modifierType = "Additive";
									value = 2;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Milestone_3 : NewPerk
{
	enumName = "Tech_Left_Milestone_3";
	enumComment = "Each explosion you cause increases your movement speed by 5% and explosion damage by 10% for 8s (50% cap). Getting hit by that explosion gives 2 stacks.";
	binkPath = "base\movies\tutorials\700x394\perk_tech_maniac.bk2";
	loc_name_key = "LocKey#89308";
	perkIcon = "UIIcon.ColdBloodTrait01";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89311";
			uiData = 
			{
				floatValues = 
				[
					8f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealingItemsChargesRegenMult";
									modifierType = "Additive";
									value = 0.08;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.GrenadesChargesRegenMult";
									modifierType = "Additive";
									value = 0.08;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89310";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.GrenadeExplosionBonusRange";
									modifierType = "Additive";
									value = 0.10;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89309";
			uiData = 
			{
				floatValues = 
				[
					5f, 10f, 12f, 5f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									conditions += 
									[
										{
											attackType = "Explosion";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											hitFlag = "BulletExplosion";
											invert = true;
										} : HitFlagHitPrereqCondition, 
										{
											instigatorType = "Player";
										} : InstigatorTypeHitPrereqCondition
									];
								} : IsHitTargetAlive, 
								{
									stateName = "InCombat";
								} : Prereqs.CombatPSMPrereq
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Tech_Left_Milestone_3_Buff";
					} : ApplyStatusEffectOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											source = "Grenade";
										} : SourceTypeHitPrereqCondition, 
										{
											instigatorType = "Player";
										} : InstigatorTypeHitPrereqCondition
									];
								} : IsHitTargetAlive, 
								{
									stateName = "InCombat";
								} : Prereqs.CombatPSMPrereq
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Tech_Left_Milestone_3_Buff";
					} : ApplyStatusEffectOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									conditions += 
									[
										{
											attackType = "Explosion";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											hitFlag = "BulletExplosion";
											invert = true;
										} : HitFlagHitPrereqCondition, 
										{
											instigatorType = "Player";
										} : InstigatorTypeHitPrereqCondition, 
										{
											targetType = "Player";
										} : TargetTypeHitPrereqCondition
									];
								} : IsHitTargetAlive, 
								{
									stateName = "InCombat";
								} : Prereqs.CombatPSMPrereq
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Tech_Left_Milestone_3_Buff";
					} : ApplyStatusEffectOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											source = "Grenade";
										} : SourceTypeHitPrereqCondition, 
										{
											instigatorType = "Player";
										} : InstigatorTypeHitPrereqCondition, 
										{
											targetType = "Player";
										} : TargetTypeHitPrereqCondition
									];
								} : IsHitTargetAlive, 
								{
									stateName = "InCombat";
								} : Prereqs.CombatPSMPrereq
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Tech_Left_Milestone_3_Buff";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Left_Perk_3_01 : NewPerk
{
	enumName = "Tech_Left_Perk_3_01";
	enumComment = "50% resistance to all explosions caused by your attacks (grenades, exploding barrels, shooting grenades)";
	loc_name_key = "LocKey#89312";
	loc_desc_key = "LocKey#89313";
	uiData = 
	{
		floatValues = 
		[
			50
		];
	};
	perkIcon = "UIIcon.Engineering_Area_10_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions += 
							[
								{
									attackType = "Explosion";
								} : AttackTypeHitPrereqCondition, 
								{
									instigatorType = "Player";
								} : InstigatorTypeHitPrereqCondition
							];
						} : IsTargetPlayer;
						value = 0.5f;
					} : MultiplyDamage
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Left_Perk_3_2 : NewPerk
{
	enumName = "Tech_Left_Perk_3_2";
	enumComment = "Reaching 5 stacks of Maniac recharges 1 Grenade charge. Player loses all Maniac stacks.";
	loc_name_key = "LocKey#89314";
	loc_desc_key = "LocKey#89315";
	uiData = 
	{
		floatValues = 
		[
			5, 6
		];
	};
	perkIcon = "UIIcon.Assault_Area_03_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_3"
	];
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statType = "ManiacStatCounter";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq;
						string[] statusEffects = 
						[
							"BaseStatusEffect.Tech_Left_Milestone_3_Buff"
						];
					} : RemoveStatusEffectsEffector, 
					{
						prereqRecord = 
						{
							statType = "ManiacStatCounter";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq;
						inverted = true;
						statusEffect = "BaseStatusEffect.PostManiacStatusEffect";
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_3_3 : NewPerk
{
	enumName = "Tech_Left_Perk_3_3";
	enumComment = "Throwing Flash, Smoke or Recon grenades costs half of the charge";
	loc_name_key = "LocKey#89317";
	loc_desc_key = "LocKey#89316";
	uiData = 
	{
		floatValues = 
		[
			50
		];
	};
	perkIcon = "UIIcon.Engineering_Area_05_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_3"
	];
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Left_Perk_3_4 : NewPerk
{
	enumName = "Tech_Left_Perk_3_4";
	enumComment = "You also get damage mitigation chance equal to double the amount of Maniac speed bonus.";
	loc_name_key = "LocKey#89318";
	loc_desc_key = "LocKey#89319";
	uiData = 
	{
		floatValues = 
		[
			10
		];
	};
	perkIcon = "UIIcon.Engineering_Area_02_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									refObject = "Self";
									refStat = "BaseStats.ManiacPerkBonusSpeed";
									opSymbol = "*";
									value = 200f;
								} : CombinedStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Right_Milestone_3 : NewPerk
{
	enumName = "Tech_Right_Milestone_3";
	enumComment = "Releasing trigger at exact moment when shot is fully charged releases stronger shot and restores the energy cost";
	loc_name_key = "LocKey#89323";
	loc_desc_key = "LocKey#89320";
	perkIcon = "UIIcon.Engineering_Area_07_Perk_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_3";
	requiresPerks = [];
	levels = 
	[
		{
			loc_desc_key = "LocKey#89322";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ChargeTime";
									modifierType = "AdditiveMultiplier";
									value = -0.2f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89321";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ChargeMultiplier";
									modifierType = "Additive";
									value = 0.15;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89320";
			uiData = 
			{
				floatValues = 
				[
					30f, 50f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.PerfectChargeWindow";
									modifierType = "Additive";
									value = 25;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "Perks.IsPerfectChargeAchieved";
							removeWithEffector = false;
							statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Buff";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								nestedPrereqs = 
								[
									{
										nestedPrereqs = 
										[
											"Perks.PerfectChargeOvercharged", "Perks.CannotControlFullyChargedWeaponPrereq"
										];
									} : ANDPrereq, 
									"Perks.PerfectChargeUndercharged"
								];
							} : ORPrereq;
							removeWithEffector = false;
							statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Block";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								nestedPrereqs = 
								[
									"Perks.PerfectChargeOvercharged", "Perks.CanControlFullyChargedWeaponPrereq"
								];
							} : ANDPrereq;
							effectorToApply = 
							{
								prereqRecord = 
								{
									delayFromStat = "BaseStats.PerfectChargeTimeWindowIncrease";
								} : GameTimePrereq;
								removeWithEffector = false;
								statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Block";
							} : ApplyStatusEffectOnPlayer;
						} : ApplyEffectorEffector;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = 
						{
							string stateName = "Ready";
						} : Prereqs.RangedWeaponPSMPrereq;
						string[] statusEffects = 
						[
							"BaseStatusEffect.Tech_Right_Milestone_3_Buff", "BaseStatusEffect.Tech_Right_Milestone_3_Block"
						];
					} : RemoveStatusEffectsEffector, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "Perks.IsPerfectChargeAchieved";
							removeWithEffector = false;
							statusEffect = 
							{
								duration = 
								{
									statModifiers = 
									[
										{
											value = 1f;
										} : BaseDurationMod
									];
								};
								uiData = 
								{
									string displayName = "LocKey#89323";
									description = "";
									string iconPath = "generic_buff_icon";
								};
								packages = 
								[
									{
										effectors = 
										[
											{
												prereqRecord = "Prereqs.AlwaysTruePrereq";
												CName vfxName = "igni";
											} : PlayVFXEffector, 
											{
												prereqRecord = "Prereqs.AlwaysTruePrereq";
												CName effectorClassName = "PlaySFXEffector";
												CName activationSFXName = "w_cyb_camo_activate";
											} : BaseStatusEffect.SFXEffector
										];
									}
								];
							} : BuffStatusEffect;
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "Perks.PrePerfectChargeIndication";
							removeWithEffector = true;
							statusEffect = 
							{
								gameplayTags += 
								[
									"PerfectChargeIndication"
								];
								duration = 
								{
									statModifiers = 
									[
										{
											value = -1;
										} : BaseDurationMod
									];
								};
								uiData = 
								{
									string displayName = "LocKey#89323";
									description = "";
									string iconPath = "increased_stats_icon";
								};
								packages = 
								[
									{
										effectors = 
										[
											{
												prereqRecord = "Prereqs.AlwaysTruePrereq";
												CName effectorClassName = "PlaySFXEffector";
												CName activationSFXName = "nme_fx_emp_start";
											} : BaseStatusEffect.SFXEffector
										];
									}
								];
							} : BuffStatusEffect;
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									statType = "TechnicalAbilitySkill";
									valueToCheck = 55;
									comparisonType = "GreaterOrEqual";
								} : StatPrereq, 
								{
									conditions += 
									[
										{
											hitFlag = "PerfectlyCharged";
											onlyOncePerShot = true;
										} : HitFlagHitPrereqCondition, 
										{
											hitFlag = "ChainLightning";
											invert = true;
										} : HitFlagHitPrereqCondition
									];
								} : IsAttackRanged
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.LightBurning_Tech_55";
						applicationChance = 
						[
							{
								value = 0.40f;
							} : ApplicationChanceModifier
						];
					} : AddStatusEffectToAttackEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									statType = "TechnicalAbilitySkill";
									valueToCheck = 55;
									comparisonType = "GreaterOrEqual";
								} : StatPrereq, 
								{
									conditions += 
									[
										{
											hitFlag = "PerfectlyCharged";
											onlyOncePerShot = true;
										} : HitFlagHitPrereqCondition, 
										{
											hitFlag = "ChainLightning";
											invert = true;
										} : HitFlagHitPrereqCondition
									];
								} : IsAttackRanged
							];
						} : ANDPrereq;
						value = 1.1;
					} : MultiplyDamage
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
}

Tech_Right_Perk_3_1 : NewPerk
{
	enumName = "Tech_Right_Perk_3_1";
	enumComment = "You can now hold tech weapons at full charge.";
	loc_name_key = "LocKey#89324";
	loc_desc_key = "LocKey#89325";
	perkIcon = "UIIcon.Engineering_Area_07_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Tech_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.PerfectChargeTimeWindowIncrease";
									modifierType = "Additive";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanControlFullyChargedWeapon";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Right_Perk_3_2 : NewPerk
{
	enumName = "Tech_Right_Perk_3_2";
	enumComment = "Increases time window of perfect discharge";
	loc_name_key = "LocKey#89327";
	loc_desc_key = "LocKey#89326";
	perkIcon = "UIIcon.Engineering_Area_04_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.PerfectChargeWindow";
									modifierType = "Additive";
									value = 10;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Right_Perk_3_3 : NewPerk
{
	enumName = "Tech_Right_Perk_3_3";
	enumComment = "Perfect discharges ignore enemy armor";
	loc_name_key = "LocKey#89328";
	loc_desc_key = "LocKey#89329";
	perkIcon = "UIIcon.Engineering_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.TechWeaponHeldPrereq", {
									statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Buff";
								} : StatusEffectPrereq
							];
						} : ANDPrereq;
						effectorToApply = 
						{
							statGroup = 
							{
								statModifiers = 
								[
									"AttackModifier.WeaponArmorPenetrationFull"
								];
							} : StatModifierGroup;
						} : ApplyStatGroupOnWeapon;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Right_Perk_3_4 : NewPerk
{
	enumName = "Tech_Right_Perk_3_4";
	enumComment = "Perfect discharge increases charge speed by 10% for next shot. Max 5 stacks";
	loc_name_key = "LocKey#89330";
	loc_desc_key = "LocKey#89331";
	uiData = 
	{
		floatValues = 
		[
			10, 3
		];
	};
	perkIcon = "UIIcon.Engineering_Area_05_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Tech_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.TechWeaponHeldPrereq", {
									statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Buff";
								} : StatusEffectPrereq
							];
						} : ANDPrereq;
						effectorToApply = 
						{
							removeWithEffector = false;
							statusEffect = "BaseStatusEffect.Tech_Right_Perk_3_4_Buff";
						} : ApplyStatusEffectEffector;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								nestedPrereqs = 
								[
									{
										statusEffect = "BaseStatusEffect.Tech_Right_Milestone_3_Buff";
									} : Prereqs.StatusEffectAbsentPrereq, 
									{
										string stateName = "Shoot";
									} : Prereqs.RangedWeaponPSMPrereq, 
									"Perks.PerfectChargeWindowInverted"
								];
							} : ANDPrereq;
							string[] statusEffects = 
							[
								"BaseStatusEffect.Tech_Right_Perk_3_4_Buff"
							];
						} : RemoveStatusEffectsEffector;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Master_Perk_2 : NewPerk
{
	enumName = "Tech_Master_Perk_2";
	enumComment = "Activating iconic CW starts the countdown x SEC. During the coutdown we get damage reduction x%. After the countdown we explode damage + stun electro. Damage scales with amount and rarity of CW we have installed";
	loc_name_key = "LocKey#89333";
	loc_desc_key = "LocKey#89332";
	binkPath = "base\movies\tutorials\700x394\perk_tech_cwexplosion.bk2";
	uiData = 
	{
		floatValues = 
		[
			50.f, 3f
		];
	};
	perkIcon = "UIIcon.Engineering_Area_02_Perk_1";
	category = "NewPerks.MasterNewPerkCategory";
	slot = "NewPerks.Master_Perk_2";
	requiresPerks = 
	[
		"NewPerks.Tech_Left_Milestone_3", "NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.Tech_Master_Perk_2_Buff";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = "Prereqs.ProcessHitReceived";
							value = 0.5f;
						} : MultiplyDamage;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									statusEffect = "BaseStatusEffect.Tech_Master_Perk_2_Explosion";
								} : StatusEffectPrereq, 
								{
									prereqClassName = "HighLevelPSMPrereq";
									string stateName = "SceneTier3";
									bool isInState = false;
								}, 
								{
									prereqClassName = "HighLevelPSMPrereq";
									string stateName = "SceneTier4";
									bool isInState = false;
								}, 
								{
									prereqClassName = "HighLevelPSMPrereq";
									string stateName = "SceneTier5";
									bool isInState = false;
								}, 
								{
									statusEffect = "GameplayRestriction.NoDangerousCyberware";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : ANDPrereq;
						effectorToApply = 
						{
							maxRangeAddition = 5.0f;
							attackRecord = "Attacks.CyberwareExplosion";
						} : Effectors.InitiateCyberwareExplosionEffector;
					} : ApplyEffectorEffector, 
					{
						effectorToApply = 
						{
							playerIncomingDamageMultiplier = 0.3f;
							playerMaxIncomingDamage = 0.25f;
							minPlayerHealthPercentage = 5.0f;
							damageBuffAmount = 1.0f;
							damageBuffRarity = 0.05f;
							playVFXOnHitTargets = "status_electrocuted";
							statusEffectRecord = "BaseStatusEffect.Stun";
						} : Effectors.ModifyDamageWithCyberwareCountEffector;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Master_Perk_3 : NewPerk
{
	enumName = "Tech_Master_Perk_3";
	enumComment = "Edgerunner";
	loc_name_key = "LocKey#89138";
	loc_desc_key = "LocKey#89139";
	binkPath = "base\movies\tutorials\700x394\perk_tech_edgerunner.bk2";
	uiData = 
	{
		floatValues = 
		[
			50.f, 0.5f, 0.1f, 10f, 30f, 50f, 12f, 3f
		];
	};
	float amountOfCapacityGivenForRipperdocUI = 50f;
	perkIcon = "UIIcon.Tech_Master_Perk_3";
	category = "NewPerks.MasterNewPerkCategory";
	slot = "NewPerks.Master_Perk_3";
	requiresPerks = 
	[
		"NewPerks.Tech_Central_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Tech_Master_Perk_3_Humanity";
						modifierType = "Additive";
						value = 50f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.HumanityAvailable";
						modifierType = "Additive";
						refStat = "BaseStats.Tech_Master_Perk_3_Humanity";
						refObject = "Self";
						opSymbol = "*";
						value = 1.0f;
					} : CombinedStatModifier, 
					{
						statType = "BaseStats.EdgerunnerHealthReduction";
						modifierType = "Additive";
						refStat = "BaseStats.HumanityOverallocationPossible";
						opSymbol = "inv";
						value = 0.5f;
					} : CombinedStatModifier, 
					{
						statType = "BaseStats.EdgerunnerHealthReduction";
						modifierType = "Multiplier";
						refStat = "BaseStats.HumanityOverallocated";
						opSymbol = "*";
						value = 0.5f;
					} : CombinedStatModifier, 
					{
						statType = "BaseStats.Health";
						modifierType = "Multiplier";
						refStat = "BaseStats.EdgerunnerHealthReduction";
						opSymbol = "*(1-x)";
						value = 1.0f;
					} : CombinedStatModifier
				];
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									statusEffect = "BaseStatusEffect.Tech_Master_Perk_3_Buff";
									checkType = "CheckType.Type";
								} : StatusEffectPrereq, 
								{
									stateName = "InCombat";
									isInState = true;
								} : Prereqs.CombatPSMPrereq, 
								"Prereqs.AnyTakedownOrKill"
							];
						} : ANDPrereq;
						gameplayTags = 
						[
							"InFury"
						];
						change = 3f;
						isPercentage = false;
						listenConstantly = false;
						canGoOverInitialDuration = false;
					} : ModifyStatusEffectDurationEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									stateName = "InCombat";
									isInState = true;
								} : Prereqs.CombatPSMPrereq, 
								"Prereqs.AnyTakedownOrKill"
							];
						} : ANDPrereq;
						statusEffect = "BaseStatusEffect.Tech_Master_Perk_3_Buff";
						effectorChance = 
						[
							{
								statType = "BaseStats.EffectorChance";
								modifierType = "Additive";
								refStat = "BaseStats.HumanityOverallocated";
								opSymbol = "*";
								value = 0.001f;
							} : CombinedStatModifier
						];
					} : ApplyStatusEffectByChanceEffector
				];
			};
		} : NewPerkLevelData
	];
}

Tech_Master_Perk_5 : NewPerk
{
	enumName = "Tech_Master_Perk_5";
	enumComment = "Perfect discharge deal bonus Electric damage and release electric arc towards up to 2 nearby targets";
	loc_name_key = "LocKey#89335";
	loc_desc_key = "LocKey#89334";
	binkPath = "base\movies\tutorials\700x394\perk_tech_chainlightning.bk2";
	uiData = 
	{
		floatValues = 
		[
			3.f
		];
	};
	perkIcon = "UIIcon.EngineeringTrait01";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.TechGunsPerkWeaponGroup";
	slot = "NewPerks.Master_Perk_5";
	requiresPerks = 
	[
		"NewPerks.Tech_Right_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.TechnicalAbilityAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.TechWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										statusEffect = "Tech_Right_Milestone_3_Buff";
										checkType = "CheckType.Record";
										objectToCheck = "Instigator";
									} : StatusEffectPresentHitPrereqCondition, 
									{
										attackType = "Ranged";
										onlyOncePerShot = true;
									} : AttackTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							removeWithEffector = false;
							statusEffect = "BaseStatusEffect.Tech_Master_Perk_5_Buff_Chain_Lightning";
						} : ApplyStatusEffectOnPlayer;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.TechWeaponHeldPrereq", {
									statType = "TechnicalAbilitySkill";
									valueToCheck = 55;
									comparisonType = "Less";
								} : StatPrereq
							];
						} : ANDPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										statusEffect = "Tech_Master_Perk_5_Buff_Chain_Lightning";
										checkType = "CheckType.Record";
										objectToCheck = "Instigator";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										statusEffect = "Tech_Right_Milestone_3_Buff";
										checkType = "CheckType.Record";
										objectToCheck = "Instigator";
									} : StatusEffectPresentHitPrereqCondition, 
									{
										attackType = "Ranged";
										onlyOncePerShot = true;
									} : AttackTypeHitPrereqCondition
								];
							} : ProcessHitTriggered;
							attackRecord = "Attacks.ChainLightning";
							playVFXOnHitTargets = "electric_hit";
							targetHowManyEnemies = 3;
							targetMaxDistance = 12.0;
							targetMinDistance = 0.3;
						} : TriggerAttackOnNearbyEnemiesEffector;
					} : ApplyEffectorEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.TechWeaponHeldPrereq", {
									statType = "TechnicalAbilitySkill";
									valueToCheck = 55;
									comparisonType = "GreaterOrEqual";
								} : StatPrereq
							];
						} : ANDPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										statusEffect = "Tech_Master_Perk_5_Buff_Chain_Lightning";
										checkType = "CheckType.Record";
										objectToCheck = "Instigator";
										invert = true;
									} : StatusEffectPresentHitPrereqCondition, 
									{
										statusEffect = "Tech_Right_Milestone_3_Buff";
										checkType = "CheckType.Record";
										objectToCheck = "Instigator";
									} : StatusEffectPresentHitPrereqCondition, 
									{
										attackType = "Ranged";
										onlyOncePerShot = true;
									} : AttackTypeHitPrereqCondition
								];
							} : ProcessHitTriggered;
							attackRecord = "Attacks.ChainLightningTech55";
							playVFXOnHitTargets = "electric_hit";
							targetHowManyEnemies = 3;
							targetMaxDistance = 9.0;
							targetMinDistance = 0.3;
						} : TriggerAttackOnNearbyEnemiesEffector;
					} : ApplyEffectorEffector
				];
			};
		} : NewPerkLevelData
	];
}

