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

Cool_Left_Milestone_1 : NewPerk
{
	loc_name_key = "LocKey#89405";
	loc_desc_key = "LocKey#89406";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Cool_Left_Milestone_1";
	enumName = "Cool_Left_Milestone_1";
	enumComment = "Road Warrior";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.RoadWarriorDamageMultiplier";
									modifierType = "Additive";
									value = 0.25f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Central_Milestone_1 : NewPerk
{
	enumName = "Cool_Central_Milestone_1";
	enumComment = "Cat Moves";
	loc_name_key = "LocKey#87883";
	loc_desc_key = "LocKey#87884";
	uiData = 
	{
		floatValues = 
		[
			15f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_08_Perk_2";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsPlayerCrouchingOrCrouchSprintingPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MaxSpeed";
									modifierType = "AdditiveMultiplier";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 15.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Central_Perk_1_1 : NewPerk
{
	enumName = "Cool_Central_Perk_1_1";
	enumComment = "Take Cover";
	loc_name_key = "LocKey#87886";
	loc_desc_key = "LocKey#87885";
	uiData = 
	{
		floatValues = 
		[
			20f
		];
	};
	perkIcon = "UIIcon.Assault_Area_02_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.UsingCoverPSMPrereq", "Perks.PlayerIsAiming"
							];
						} : ANDPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 20.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Central_Perk_1_2 : NewPerk
{
	enumName = "Cool_Central_Perk_1_2";
	enumComment = "Dodging while crouching";
	loc_name_key = "LocKey#87887";
	loc_desc_key = "LocKey#87888";
	uiData = 
	{
		floatValues = 
		[
			20f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_01_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.IsPlayerStatic", "Perks.IsPlayerCrouching"
							];
						} : Prereqs.ANDPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 20;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Central_Perk_1_4 : NewPerk
{
	enumName = "Cool_Central_Perk_1_4";
	enumComment = "Snap To cover";
	loc_name_key = "LocKey#87890";
	loc_desc_key = "LocKey#87889";
	perkIcon = "UIIcon.Cool_Central_Perk_1_4";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsPlayerCrouchingOrCrouchSprintingPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Visibility";
									modifierType = "AdditiveMultiplier";
									refStat = "BaseStats.MitigationChance";
									refObject = "Player";
									opSymbol = "*";
									value = -0.01;
								} : CombinedStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Right_Milestone_1 : NewPerk
{
	enumName = "Cool_Right_Milestone_1";
	enumComment = "Silent Attacks";
	loc_name_key = "Lockey#87891";
	loc_desc_key = "LocKey#87892";
	binkPath = "base\movies\tutorials\700x394\perk_cool_damagepredict.bk2";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_01_Perk_1";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Right_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.SilentAttacksPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.StealthHitDamageMultiplier";
									modifierType = "AdditiveMultiplier";
									value = 0.25f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

SilentAttacksPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.ThrowableWeaponHeldPrereq", "Prereqs.CoolPerksGunsHeldPrereq"
	];
}

Cool_Right_Perk_1_1 : NewPerk
{
	enumName = "Cool_Right_Perk_1_1";
	enumComment = "Gag: Hitting enemies after being discovered can delay alarming whole encounter";
	loc_name_key = "LocKey#87893";
	loc_desc_key = "LocKey#87894";
	perkIcon = "UIIcon.Stealth_Area_03_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Right_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.CanPlayerGagOnDetection";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_1_2 : NewPerk
{
	enumName = "Cool_Right_Perk_1_2";
	enumComment = "Kills in stealth increase movement speed";
	loc_name_key = "LocKey#87896";
	loc_desc_key = "LocKey#87895";
	uiData = 
	{
		floatValues = 
		[
			10f, 30f, 2f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_03_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Right_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions += 
							[
								{
									hitFlag = "StealthHit";
								} : HitFlagHitPrereqCondition
							];
						} : Perks.IsTargetKilled;
						statusEffect = "BaseStatusEffect.StealthKillMovementSpeedStackSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector, 
					{
						prereqRecord = 
						{
							string stateName = "Default";
							bool isInState = true;
						} : TakedownPSMPrereq;
						statusEffect = "BaseStatusEffect.StealthKillMovementSpeedStackSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector, 
					{
						prereqRecord = "Perks.IsPlayerInCombatState";
						statusEffects = 
						[
							"BaseStatusEffect.StealthKillMovementSpeedStackSE"
						];
					} : RemoveStatusEffectsEffector
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Left_Milestone_2 : NewPerk
{
	enumName = "Cool_Left_Milestone_2";
	enumComment = "Focus";
	loc_name_key = "LocKey#87897";
	loc_desc_key = "LocKey#87898";
	uiData = 
	{
		floatValues = 
		[
			2.5f, 40f
		];
	};
	binkPath = "base\movies\tutorials\700x394\perk_cool_focus.bk2";
	perkIcon = "UIIcon.Gunslinger_Area_03_Perk_2";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Milestone_2";
	requiresPerks = [];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	int focusedStaminaCost = 40;
	float focusedStaminaThreshold = 90;
	levels = 
	[
		{
			loc_desc_key = "LocKey#89407";
			uiData = 
			{
				floatValues = 
				[
					10
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.CoolPerksGunsHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HeadshotDamageMultiplier";
									modifierType = "Additive";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.WeakspotDamageMultiplier";
									modifierType = "Additive";
									value = 0.1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87898";
			uiData = 
			{
				floatValues = 
				[
					2.5f, 40f
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Left_Perk_2_1 : NewPerk
{
	enumName = "Cool_Left_Perk_2_1";
	enumComment = "Vision Boost";
	loc_name_key = "LocKey#87900";
	loc_desc_key = "LocKey#87899";
	perkIcon = "UIIcon.ColdBlood_Area_05_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.DeadlyFocusPrereq";
						statusEffect = "BaseStatusEffect.FocusedCoolPerkSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
}

DeadlyFocusPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					statusEffect = "FocusedCoolPerkSE";
					checkType = "CheckType.Record";
					objectToCheck = "Instigator";
				} : StatusEffectPresentHitPrereqCondition
			];
		} : Perks.IsTargetKilled, 
		"Prereqs.CoolPerksGunsHeldPrereq", "Perks.PlayerIsAiming"
	];
}

Cool_Left_Perk_2_2 : NewPerk
{
	enumName = "Cool_Left_Perk_2_2";
	enumComment = "Relaxed";
	loc_name_key = "LocKey#87901";
	loc_desc_key = "LocKey#87902";
	uiData = 
	{
		floatValues = 
		[
			10f, 2f
		];
	};
	perkIcon = "UIIcon.Gunslinger_Area_01_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.RelaxedPerkPrereq";
						statusEffect = "BaseStatusEffect.RelaxedCoolPerkSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.PlayerIsReloading", {
									statusEffect = "BaseStatusEffect.RelaxedCoolPerkSE";
								} : StatusEffectPrereq
							];
						} : Prereqs.ANDPrereq;
						statusEffects = 
						[
							"BaseStatusEffect.RelaxedCoolPerkSE"
						];
					} : RemoveStatusEffectsEffector
				];
			};
		} : NewPerkLevelData
	];
}

RelaxedPerkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Perks.IsTargetKilled", "Prereqs.CoolPerksGunsHeldPrereq", "Perks.PlayerIsAiming"
	];
}

Cool_Left_Perk_2_3 : NewPerk
{
	enumName = "Cool_Left_Perk_2_3";
	enumComment = "Too cool for that";
	loc_name_key = "LocKey#87903";
	loc_desc_key = "LocKey#87904";
	perkIcon = "UIIcon.Cool_Left_Perk_2_3";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.FocusedGrenadeShootingPerk";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Left_Perk_2_4 : NewPerk
{
	enumName = "Cool_Left_Perk_2_4";
	enumComment = "Calculated Shots";
	loc_name_key = "Lockey#87906";
	loc_desc_key = "LocKey#87905";
	uiData = 
	{
		floatValues = 
		[
			50f
		];
	};
	perkIcon = "UIIcon.GunslingerTrait01";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	int staminaCostReduction = 20;
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.CalculatedShotsPrereq";
						statusEffect = "BaseStatusEffect.ReduceStaminaCostOfFocused";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
}

CalculatedShotsPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Perks.IsTargetKilled", "Prereqs.CoolPerksGunsHeldPrereq", "Perks.PlayerIsAiming"
	];
}

Cool_Inbetween_Left_2 : NewPerk
{
	enumName = "Cool_Inbetween_Left_2";
	enumComment = "Long Range Bonus";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	loc_name_key = "LocKey#87907";
	loc_desc_key = "LocKey#87908";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Gunslinger_Area_04_Perk_1";
	slot = "NewPerks.Inbetween_Left_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Perk_2_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	float timeDilationStrength = 0.25f;
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Right_Milestone_2 : NewPerk
{
	enumName = "Cool_Right_Milestone_2";
	enumComment = "PoisonThrows";
	loc_name_key = "LocKey#87910";
	perkIcon = "UIIcon.Stealth_Area_07_Perk_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_2";
	requiresPerks = [];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89408";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ThrowRecovery";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87909";
			uiData = 
			{
				floatValues = 
				[
					5f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						fk< Effector > effectorToApply = 
						{
							prereqRecord = "NewPerks.PoisonedThrowablesCondition";
							bool isRandom = false;
							fk< StatusEffect > statusEffect = "BaseStatusEffect.KnifePoison";
						} : AddStatusEffectToAttackEffector;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

PoisonedThrowablesCondition : Prereqs.ORPrereq
{
	nestedPrereqs = 
	[
		{
			string pipelineStage = "PostProcess";
			conditions += 
			[
				{
					hitFlag = "DealNoDamage";
					invert = true;
				} : HitFlagHitPrereqCondition, 
				{
					hitFlag = "CriticalHit";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAlive, 
		{
			string pipelineStage = "PostProcess";
			conditions += 
			[
				{
					bodyPart = "Head";
				} : BodyPartHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAlive, 
		{
			string pipelineStage = "PostProcess";
			conditions += 
			[
				{
					hitFlag = "WeakspotHit";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAlive
	];
}

Cool_Right_Perk_2_1 : NewPerk
{
	enumName = "Cool_Right_Perk_2_1";
	enumComment = "CorrosivePoison";
	loc_name_key = "LocKey#87911";
	loc_desc_key = "LocKey#87912";
	perkIcon = "UIIcon.Stealth_Area_07_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_2_2 : NewPerk
{
	enumName = "Cool_Right_Perk_2_2";
	enumComment = "Blinding Headshots";
	loc_name_key = "LocKey#87914";
	loc_desc_key = "LocKey#87913";
	uiData = 
	{
		floatValues = 
		[
			6
		];
	};
	perkIcon = "UIIcon.Stealth_Area_07_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "NewPerks.PoisonedThrowablesCondition";
							bool isRandom = false;
							statusEffect = "BaseStatusEffect.MinorBlind";
						} : AddStatusEffectToAttackEffector;
					} : ApplyEffectorOnPlayer
				];
				stats = 
				[
					{
						statType = "BaseStats.CanPoisonSlow";
						modifierType = "Additive";
						value = 1;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_2_3 : NewPerk
{
	enumName = "Cool_Right_Perk_2_3";
	enumComment = "Deflecting Bullets";
	loc_name_key = "LocKey#87915";
	loc_desc_key = "LocKey#87916";
	perkIcon = "UIIcon.Stealth_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "NewPerks.AntidotePerkPrereq";
							bool isRandom = false;
							statusEffect = "BaseStatusEffect.StealthPerkAntidoteSE";
						} : AddStatusEffectToAttackEffector;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

AntidotePerkPrereq : Prereqs.ORPrereq
{
	fk< IPrereq >[] nestedPrereqs = 
	[
		{
			conditions = 
			[
				{
					statusEffect = "Poisoned";
					checkType = "CheckType.Type";
				} : StatusEffectPresentHitPrereqCondition, 
				{
					targetType = "Player";
					invert = true;
				} : TargetTypeHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition, 
				{
					type = "Prereqs.HitFlag";
					string hitFlag = "DealNoDamage";
					bool invert = true;
				}
			];
		} : Prereqs.ProcessHitTriggered, 
		{
			conditions = 
			[
				{
					statusEffect = "Poisoned";
					checkType = "CheckType.Type";
				} : StatusEffectPresentHitPrereqCondition, 
				{
					targetType = "Player";
					invert = true;
				} : TargetTypeHitPrereqCondition, 
				{
					attackType = "StrongMelee";
				} : AttackTypeHitPrereqCondition, 
				{
					type = "Prereqs.HitFlag";
					string hitFlag = "DealNoDamage";
					bool invert = true;
				}
			];
		} : Prereqs.ProcessHitTriggered
	];
}

Cool_Right_Perk_2_4 : NewPerk
{
	enumName = "Cool_Right_Perk_2_4";
	enumComment = "Reverse Poison";
	loc_name_key = "LocKey#87918";
	loc_desc_key = "LocKey#87917";
	uiData = 
	{
		floatValues = 
		[
			15f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_08_Perk_4";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						effectorToApply = 
						{
							prereqRecord = "NewPerks.ReversePoisonPrereq";
							statusEffect = "BaseStatusEffect.ReversePoisonNewPerkRegeneration";
							removeWithEffector = false;
						} : ApplyStatusEffectEffector;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

ReversePoisonPrereq : Prereqs.ORPrereq
{
	CName aggregationType = "OR";
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					statusEffect = "Defeated";
					checkType = "CheckType.Type";
					invert = true;
				} : StatusEffectPresentHitPrereqCondition, 
				{
					hitFlag = "DealNoDamage";
					invert = true;
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitACritical, 
		{
			conditions += 
			[
				{
					bodyPart = "Head";
				} : BodyPartHitPrereqCondition, 
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition, 
				{
					statusEffect = "Defeated";
					checkType = "CheckType.Type";
					invert = true;
				} : StatusEffectPresentHitPrereqCondition, 
				{
					hitFlag = "DealNoDamage";
					invert = true;
				} : HitFlagHitPrereqCondition
			];
		} : Prereqs.PostProcessHitTriggered
	];
}

Cool_Left_Milestone_3 : NewPerk
{
	enumName = "Cool_Left_Milestone_3";
	enumComment = "Deadeye";
	loc_name_key = "LocKey#87919";
	loc_desc_key = "LocKey#87920";
	uiData = 
	{
		floatValues = 
		[
			85f, 50f
		];
	};
	binkPath = "base\movies\tutorials\700x394\perk_cool_deadeye.bk2";
	perkIcon = "UIIcon.Cool_Left_Milestone_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89410";
			uiData = 
			{
				floatValues = 
				[
					10
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.CoolPerksGunsHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HeadshotDamageMultiplier";
									modifierType = "Additive";
									value = 0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.WeakspotDamageMultiplier";
									modifierType = "Additive";
									value = 0.1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89409";
			uiData = 
			{
				floatValues = 
				[
					25
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.CoolPerksGunsHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HandgunStaminaCostReduction";
									modifierType = "Additive";
									value = 0.25;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RevolverStaminaCostReduction";
									modifierType = "Additive";
									value = 0.25;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SniperStaminaCostReduction";
									modifierType = "Additive";
									value = 0.25;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.PrecisionRifleStaminaCostReduction";
									modifierType = "Additive";
									value = 0.25;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87920";
			uiData = 
			{
				floatValues = 
				[
					85f, 20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.DeadeyePerkPrereq";
						statusEffect = "BaseStatusEffect.DeadeyeSE";
						removeWithEffector = true;
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Left_Perk_3_1 : NewPerk
{
	enumName = "Cool_Left_Perk_3_1";
	enumComment = "Slow down grenades";
	loc_name_key = "LocKey#87922";
	loc_desc_key = "LocKey#87921";
	uiData = 
	{
		floatValues = 
		[
			30f, 50f
		];
	};
	perkIcon = "UIIcon.Gunslinger_Area_08_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.CoolPerksGunsHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.EquipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.3f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.UnequipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.3f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon, 
					{
						prereqRecord = "Prereqs.CoolPerksGunsHeldPrereq";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Stamina";
								statPoolValue = 50f;
							} : StatPoolUpdate
						];
					} : ModifyStatPoolValueEffector
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Left_Perk_3_2 : NewPerk
{
	enumName = "Cool_Left_Perk_3_2";
	enumComment = "Hold breath slows time";
	loc_name_key = "LocKey#87923";
	loc_desc_key = "LocKey#87924";
	uiData = 
	{
		floatValues = 
		[
			35f, 3f, 50f
		];
	};
	perkIcon = "UIIcon.Gunslinger_Area_04_Perk_3";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	float timeDilationStrength = 0.45;
	float timeDilationDuration = 3.5;
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.DeadeyeHeadshotWeakspotKillPrereq";
						statusEffect = "BaseStatusEffect.DeadeyeQuickReloadSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
}

DeadeyeHeadshotWeakspotKillPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"NewPerks.WeakspotOrHeadshotRangedKillPrereq", "NewPerks.HasDeadeyePrereq"
	];
}

CoolGunHeadshotWeakspotKillPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"NewPerks.WeakspotOrHeadshotRangedKillPrereq", "Prereqs.CoolPerksGunsHeldPrereq"
	];
}

Cool_Left_Perk_3_3 : NewPerk
{
	enumName = "Cool_Left_Perk_3_3";
	enumComment = "GrenadeTrickshot";
	loc_name_key = "LocKey#87926";
	loc_desc_key = "LocKey#87925";
	perkIcon = "UIIcon.Assault_Area_03_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.WildWestPerkPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.DamageFalloffDisabled";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

WildWestPerkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.CoolPerksGunsHeldPrereq", {
			statPoolType = "Stamina";
			valueToCheck = 
			[
				{
					statType = "BaseStats.Stamina";
					modifierType = "Additive";
					value = 90.0f;
				} : ConstantStatModifier
			];
			comparisonType = "GreaterOrEqual";
		} : StatPoolPrereq
	];
}

Cool_Left_Perk_3_4 : NewPerk
{
	enumName = "Cool_Left_Perk_3_4";
	enumComment = "GrenadeTrickshot";
	loc_name_key = "LocKey#87927";
	loc_desc_key = "LocKey#87928";
	uiData = 
	{
		floatValues = 
		[
			30f
		];
	};
	perkIcon = "UIIcon.Demolition_Area_04_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.CoolGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.CoolGunHeadshotWeakspotKillPrereq";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Stamina";
								statPoolValue = 30f;
							} : StatPoolUpdate
						];
					} : ModifyStatPoolValueEffector
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Central_Milestone_3 : NewPerk
{
	enumName = "Cool_Central_Milestone_3";
	enumComment = "Ninja Moves";
	loc_name_key = "LocKey#87930";
	perkIcon = "UIIcon.Cool_Central_Milestone_3";
	binkPath = "base\movies\tutorials\700x394\perk_cool_crouchsprint.bk2";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_1"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89412";
			uiData = 
			{
				floatValues = 
				[
					15
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerCrouching";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MaxSpeed";
									modifierType = "AdditiveMultiplier";
									value = 0.15f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89411";
			uiData = 
			{
				floatValues = 
				[
					15
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.IsPlayerCrouchingOrCrouchSprintingPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 15.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87929";
		} : NewPerkLevelData
	];
}

IsPlayerCrouchingOrCrouchSprintingPrereq : Prereqs.ORPrereq
{
	nestedPrereqs = 
	[
		"Perks.IsPlayerCrouchSprinting", "Perks.IsPlayerCrouching"
	];
}

Cool_Central_Perk_3_1 : NewPerk
{
	enumName = "Cool_Central_Perk_3_1";
	enumComment = "Like the wind";
	category = "NewPerks.SimpleNewPerkCategory";
	loc_name_key = "LocKey#87932";
	loc_desc_key = "LocKey#87931";
	uiData = 
	{
		floatValues = 
		[
			30f
		];
	};
	perkIcon = "UIIcon.Cool_Central_Perk_3_1";
	slot = "NewPerks.Central_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerCrouchSprinting";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 30;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		}
	];
}

Cool_Central_Perk_3_2 : NewPerk
{
	enumName = "Cool_Central_Perk_3_2";
	enumComment = "Like the wind";
	category = "NewPerks.SimpleNewPerkCategory";
	loc_name_key = "LocKey#87933";
	loc_desc_key = "LocKey#87934";
	uiData = 
	{
		floatValues = 
		[
			15f, 15f, 10f, 6f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_06_Perk_1";
	slot = "NewPerks.Central_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.KillWhileInvisiblePrereq";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Stamina";
								statPoolValue = 15f;
							} : StatPoolUpdate
						];
						bool usePercent = true;
					} : ModifyStatPoolValueEffector, 
					{
						prereqRecord = "NewPerks.KillWhileInvisiblePrereq";
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Health";
								statPoolValue = 15;
							} : StatPoolUpdate
						];
						bool usePercent = true;
					} : ModifyStatPoolValueEffector, 
					{
						prereqRecord = "NewPerks.KillWhileInvisiblePrereq";
						statusEffect = "BaseStatusEffect.InvisibleKillMovementSpeedBonusSE";
						removeWithEffector = false;
					} : ApplyStatusEffectEffector
				];
			};
		} : NewPerkLevelData
	];
}

KillWhileInvisiblePrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					tagToCheck = "Cloak";
					checkType = "CheckType.Tag";
					objectToCheck = "Instigator";
				} : Prereqs.StatusEffectPresentHitPrereqCondition
			];
		} : Perks.IsTargetKilled, 
		{
			conditions += 
			[
				{
					hitFlag = "StealthHit";
				} : HitFlagHitPrereqCondition
			];
		} : Perks.IsTargetKilled, 
		{
			string stateName = "Default";
			bool isInState = true;
		} : TakedownPSMPrereq
	];
}

Cool_Central_Perk_3_4 : NewPerk
{
	enumName = "Cool_Central_Perk_3_4";
	enumComment = "Like the wind";
	category = "NewPerks.SimpleNewPerkCategory";
	loc_name_key = "LocKey#87936";
	loc_desc_key = "LocKey#87935";
	uiData = 
	{
		floatValues = 
		[
			75f
		];
	};
	perkIcon = "UIIcon.Cool_Central_Perk_3_4";
	slot = "NewPerks.Central_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	float crouchSprintStaminaCostMultiplier = 0.25f;
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Inbetween_Left_3 : NewPerk
{
	enumName = "Cool_Inbetween_Left_3";
	enumComment = "Long Range Bonus";
	loc_name_key = "LocKey#87937";
	loc_desc_key = "LocKey#87938";
	perkIcon = "UIIcon.Cool_Inbetween_Left_3";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Left_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Perk_3_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.CrouchSprintOrSlidePrereq", {
									statPoolType = "OpticalCamoCharges";
									valueToCheck = 
									[
										{
											statType = "BaseStats.OpticalCamoCharges";
											modifierType = "Additive";
											value = 10.0f;
										} : ConstantStatModifier
									];
									comparisonType = "GreaterOrEqual";
								} : StatPoolPrereq, 
								{
									statType = "OpticalCamoRechargeDuration";
									valueToCheck = 0;
									comparisonType = "Greater";
								} : StatPrereq, 
								{
									statType = "OpticalCamoIsActive";
									valueToCheck = 0;
									comparisonType = "Equal";
								} : StatPrereq, 
								{
									prereqClassName = "ConstantStatPoolPrereq";
									statPoolType = "Stamina";
									valueToCheck = 
									[
										{
											statType = "BaseStats.Stamina";
											modifierType = "Additive";
											value = 10.0f;
										} : ConstantStatModifier
									];
									comparisonType = "GreaterOrEqual";
								} : StatPoolPrereq
							];
						} : Prereqs.ANDPrereq;
						statusEffect = "BaseStatusEffect.OpticalCamoCoolPerkShort";
						removeWithEffector = false;
						instigator = "Player";
					} : ApplyStatusEffectEffector, 
					{
						prereqRecord = "NewPerks.PlayerStaticNotCrouchSprintingPrereq";
						statusEffects = 
						[
							"BaseStatusEffect.OpticalCamoCoolPerkShort"
						];
					} : RemoveStatusEffectsEffector
				];
			};
		}
	];
}

CrouchSprintOrSlidePrereq : ORPrereq
{
	nestedPrereqs = 
	[
		"Perks.IsPlayerCrouchSprinting", "Perks.IsPlayerSliding"
	];
}

PlayerStaticNotCrouchSprintingPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			stateName = "Jump";
		} : DetailedLocomotionPSMPrereq, 
		{
			stateName = "Sprint";
		} : DetailedLocomotionPSMPrereq, 
		{
			stateName = "Dodge";
		} : DetailedLocomotionPSMPrereq, 
		{
			stateName = "Default";
		} : SwimmingPSMPrereq, 
		{
			stateName = "CrouchSprint";
			previousState = true;
		} : Prereqs.DetailedLocomotionPSMPrereq
	];
}

Cool_Inbetween_Right_3 : NewPerk
{
	enumName = "Cool_Inbetween_Right_3";
	enumComment = "You can now launch for finisher from longer distance on each enemy hit with a thrown weapon.";
	loc_name_key = "LocKey#87940";
	loc_desc_key = "LocKey#87939";
	binkPath = "base\movies\tutorials\700x394\perk_cool_bloodjump.bk2";
	perkIcon = "UIIcon.Cool_Inbetween_Right_3";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Inbetween_Right_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Perk_3_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions = 
							[
								{
									attackType = "Thrown";
								} : AttackTypeHitPrereqCondition, 
								{
									valueToCheck = 5.0f;
									objectToCheck = "Target";
									statToCompare = "Cool_Inbetween_Right_3_Stacks";
									comparisonType = "LessOrEqual";
								} : StatHitPrereqCondition
							];
						} : ProcessHitTriggered;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Cool_Inbetween_Right_3_Stacks";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						};
						applicationTarget = "Target";
					} : ApplyStatGroupEffector
				];
			};
		} : NewPerkLevelData
	];
	float distanceBase = 10.0f;
	float distanceMaxStacks = 2.0f;
}

Cool_Right_Milestone_3 : NewPerk
{
	enumName = "Cool_Right_Milestone_3";
	enumComment = "Juggler - Return throwables on critical/headshot kills";
	loc_name_key = "LocKey#87941";
	binkPath = "base\movies\tutorials\700x394\perk_cool_juggler.bk2";
	perkIcon = "UIIcon.Stealth_Area_08_Perk_3";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#89414";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ThrowRecovery";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#89413";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.ThrowableWeaponHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HeadshotDamageMultiplier";
									modifierType = "Additive";
									value = 0.2f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.WeakspotDamageMultiplier";
									modifierType = "Additive";
									value = 0.2f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87942";
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.KnivesReloadPerkPrereqs";
					} : JugglerPerkRemoveKnifeCooldowns
				];
			};
		} : NewPerkLevelData
	];
}

KnivesReloadPerkPrereqs : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition, 
				{
					hitFlag = "DealNoDamage";
					invert = true;
				} : HitFlagHitPrereqCondition, 
				{
					hitFlag = "CriticalHit";
				} : HitFlagHitPrereqCondition
			];
		} : IsTargetKilled, 
		{
			conditions += 
			[
				{
					attackType = "Thrown";
				} : AttackTypeHitPrereqCondition, 
				{
					hitFlag = "DealNoDamage";
					invert = true;
				} : HitFlagHitPrereqCondition, 
				{
					bodyPart = "Head";
				} : BodyPartHitPrereqCondition
			];
		} : IsTargetKilled, 
		{
			conditions += 
			[
				{
					dotType = "Poisoned";
				} : DamageOverTimeTypeHitPrereqCondition, 
				{
					statusEffect = "KnifePoison";
					checkType = "CheckType.Record";
				} : StatusEffectPresentHitPrereqCondition, 
				{
					npcType = "Any";
					invert = true;
				} : TargetNPCTypeHitPrereqCondition
			];
		} : IsTargetKilled
	];
}

Cool_Right_Perk_3_1 : NewPerk
{
	enumName = "Cool_Right_Perk_3_1";
	enumComment = "Come Back to Papa";
	loc_name_key = "LocKey#87944";
	loc_desc_key = "LocKey#87943";
	uiData = 
	{
		floatValues = 
		[
			200f
		];
	};
	perkIcon = "UIIcon.Cool_Right_Perk_3_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_3_2 : NewPerk
{
	enumName = "Cool_Right_Perk_3_2";
	enumComment = "Melee Finisher";
	loc_name_key = "LocKey#87945";
	loc_desc_key = "LocKey#87946";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	binkPath = "base\movies\tutorials\700x394\perk_cool_actofmercy.bk2";
	perkIcon = "UIIcon.Stealth_Area_04_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Throwable";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							value = 3.0f;
						} : MultiplyDamage;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Throwable";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "FinisherTriggered";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Throwable";
									} : WeaponEvolutionHitPrereqCondition, 
									{
										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, 
									{
										weaponEvolution = "Throwable";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "Special";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.ThrowableWeaponHeldPrereq", {
									statusEffect = "BaseStatusEffect.Berserk";
									checkType = "CheckType.Type";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealthRegainOnKill";
									modifierType = "Additive";
									value = 25.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanPerformCoolFinisher";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherCool_TargetDistanceMax";
									modifierType = "Additive";
									value = 4.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherCool_TargetHealthMax";
									modifierType = "Additive";
									value = 35.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_3_3 : NewPerk
{
	enumName = "Cool_Right_Perk_3_3";
	enumComment = "Full Auto technique";
	loc_name_key = "LocKey#87948";
	loc_desc_key = "LocKey#87947";
	perkIcon = "UIIcon.Stealth_Area_02_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Right_Perk_3_4 : NewPerk
{
	enumName = "Cool_Right_Perk_3_4";
	enumComment = "Sleight of hand";
	loc_name_key = "LocKey#87949";
	loc_desc_key = "LocKey#87950";
	uiData = 
	{
		floatValues = 
		[
			20f, 8f, 5f
		];
	};
	perkIcon = "UIIcon.Stealth_Area_06_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Cool_Right_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
		} : NewPerkLevelData
	];
}

Cool_Master_Perk_1 : NewPerk
{
	enumName = "Cool_Master_Perk_1";
	enumComment = "Composure - bonus to headshots at full stamina";
	loc_name_key = "LocKey#87952";
	loc_desc_key = "LocKey#87951";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Gunslinger_Area_10_Perk_1";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.PrecisionGunsPerkWeaponGroup";
	slot = "NewPerks.Master_Perk_1";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.ComposureMasterPerkPrereq";
						hitFlag = "CriticalHit";
					} : AddHitFlagToAttackEffector, 
					{
						prereqRecord = "NewPerks.ComposureMasterPerkPrereq";
						percentMult = 1.25f;
						minDistance = 0f;
						maxDistance = 35f;
					} : ModifyDamageWithDistance
				];
			};
		} : NewPerkLevelData
	];
}

ComposureMasterPerkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"NewPerks.RevolverPrecisionOrSniperEquipped", "NewPerks.DeadeyeHitPerkPrereq"
	];
}

RevolverPrecisionOrSniperEquipped : ORPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.RevolverHeldPrereq", "Prereqs.SniperRifleHeldPrereq", "Prereqs.PrecisionRifleHeldPrereq"
	];
}

Cool_Master_Perk_2 : NewPerk
{
	enumName = "Cool_Master_Perk_2";
	enumComment = "PistolsMasterPerk";
	loc_name_key = "LocKey#87954";
	loc_desc_key = "LocKey#87953";
	perkIcon = "UIIcon.Cool_Master_Perk_2";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.HandgunsPerkWeaponGroup";
	slot = "NewPerks.Master_Perk_2";
	requiresPerks = 
	[
		"NewPerks.Cool_Left_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	uiData = 
	{
		floatValues = 
		[
			25
		];
	};
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.HandgunNotAimingPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.StaminaCostReduction";
									modifierType = "Additive";
									value = 5;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon, 
					{
						prereqRecord = "NewPerks.HandgunFocusedPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MaxSpeed";
									modifierType = "AdditiveMultiplier";
									value = 0.25f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

HandgunNotAimingPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.HandgunHeldPrereq", "Perks.PlayerIsNotAiming"
	];
}

HandgunFocusedPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.HandgunHeldPrereq", {
			statusEffect = "BaseStatusEffect.FocusedCoolPerkSE";
		} : StatusEffectPrereq
	];
}

ThrowableAimwalkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.ThrowableWeaponHeldPrereq", {
			stateName = "AimWalk";
		} : Prereqs.DetailedLocomotionPSMPrereq
	];
}

Cool_Master_Perk_4 : NewPerk
{
	enumName = "Cool_Master_Perk_4";
	enumComment = "Auto crits when throwing during dash, dodge, slide";
	loc_name_key = "LocKey#87955";
	loc_desc_key = "LocKey#87956";
	perkIcon = "UIIcon.Cool_Master_Perk_4";
	binkPath = "base\movies\tutorials\700x394\perk_cool_styleoversubstance.bk2";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.ThrowablePerkWeaponGroup";
	requiresPerks = 
	[
		"NewPerks.Cool_Central_Milestone_3", "NewPerks.Cool_Right_Milestone_3"
	];
	slot = "NewPerks.Master_Perk_4";
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.CoolAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.ForceCritOnNextThrowSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "Thrown";
									} : AttackTypeHitPrereqCondition
								];
							} : ProcessHitTriggeredAllowProjection;
							hitFlag = "CriticalHit";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.ForceCritOnNextThrowSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions += 
								[
									{
										attackType = "Thrown";
									} : AttackTypeHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "Special";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = "NewPerks.ThrowableAimwalkPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MaxSpeed";
									modifierType = "Additive";
									value = 2.0f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

DeadeyePerkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"Prereqs.CoolPerksGunsHeldPrereq", {
			statPoolType = "Stamina";
			valueToCheck = 
			[
				{
					statType = "BaseStats.Stamina";
					modifierType = "Additive";
					value = 85.0f;
				} : ConstantStatModifier
			];
			comparisonType = "GreaterOrEqual";
		} : StatPoolPrereq, 
		{
			statusEffect = "BaseStatusEffect.DeadeyeJustEndedSE";
		} : Prereqs.StatusEffectAbsentPrereq
	];
}

HasDeadeyePrereq : StatusEffectPrereq
{
	checkType = "CheckType.Tag";
	tagToCheck = "DeadeyeSE";
}

DeadeyeHitPerkPrereq : ANDPrereq
{
	nestedPrereqs = 
	[
		"NewPerks.HasDeadeyePrereq", "NewPerks.WeakspotOrHeadshotRangedHitPrereqAllowProjection"
	];
}

WeakspotOrHeadshotRangedKillPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					hitFlag = "Headshot";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsTargetKilled, 
		{
			conditions += 
			[
				{
					hitFlag = "WeakspotHit";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsTargetKilled
	];
}

WeakspotOrHeadshotRangedHitPrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					hitFlag = "Headshot";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAlive, 
		{
			conditions += 
			[
				{
					hitFlag = "WeakspotHit";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAlive
	];
}

WeakspotOrHeadshotRangedHitPrereqAllowProjection : ORPrereq
{
	nestedPrereqs = 
	[
		{
			conditions += 
			[
				{
					hitFlag = "Headshot";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAliveAllowProjection, 
		{
			conditions += 
			[
				{
					hitFlag = "WeakspotHit";
				} : HitFlagHitPrereqCondition, 
				{
					attackType = "Ranged";
				} : AttackTypeHitPrereqCondition
			];
		} : IsHitTargetAliveAllowProjection
	];
}

