package NewPerks
using RTDB, Perks, Prereqs, BaseStats, PlayerLocomotion, Effectors, HitReactionThresholdModifiers

Reflexes_Left_Milestone_1 : NewPerk
{
	loc_name_key = "LocKey#90263";
	loc_desc_key = "LocKey#90262";
	uiData = 
	{
		floatValues = 
		[
			50f
		];
	};
	perkIcon = "UIIcon.Reflexes_Left_Milestone_1";
	enumName = "Reflexes_Left_Milestone_1";
	enumComment = "Vehicle Stuntman";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Left_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerInVehicle";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SpreadDefaultX";
									modifierType = "Multiplier";
									value = 0.5f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadDefaultY";
									modifierType = "Multiplier";
									value = 0.5f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadFastSpeedMinAdd";
									modifierType = "Multiplier";
									value = 0.f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadFastSpeedMaxAdd";
									modifierType = "Multiplier";
									value = 0.f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadAdsDefaultX";
									modifierType = "Multiplier";
									value = 0.5f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadAdsDefaultY";
									modifierType = "Multiplier";
									value = 0.5f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadAdsFastSpeedMinAdd";
									modifierType = "Multiplier";
									value = 0.f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.SpreadAdsFastSpeedMaxAdd";
									modifierType = "Multiplier";
									value = 0.f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Milestone_1 : NewPerk
{
	loc_name_key = "LocKey#87754";
	loc_desc_key = "LocKey#87788";
	perkIcon = "UIIcon.Assault_Area_07_Perk_1";
	enumName = "Reflexes_Central_Milestone_1";
	enumComment = "Evasion";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_1";
	requiresPerks = [];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.IsPlayerSprinting", "Perks.IsPlayerVaulting"
							];
						} : ORPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.TBHsBaseCoefficient";
									modifierType = "AdditiveMultiplier";
									value = 1.2;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Perks.IsPlayerSliding";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.TBHsBaseCoefficient";
									modifierType = "AdditiveMultiplier";
									value = 15;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.PlayerJustDodged";
						} : StatusEffectPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.TBHsBaseCoefficient";
									modifierType = "AdditiveMultiplier";
									value = 10;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.PlayerJustDashed";
						} : StatusEffectPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.TBHsBaseCoefficient";
									modifierType = "AdditiveMultiplier";
									value = 16;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_1_1 : NewPerk
{
	loc_name_key = "LocKey#87755";
	loc_desc_key = "LocKey#87789";
	perkIcon = "UIIcon.Athletics_Area_05_Perk_1";
	enumName = "Reflexes_Central_Perk_1_1";
	enumComment = "Slide longer";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_1";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerSliding";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.Deceleration";
									modifierType = "Multiplier";
									value = 0.5f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	float decelerationMultiplier = 0.5f;
}

Reflexes_Central_Perk_1_2 : NewPerk
{
	loc_name_key = "LocKey#87756";
	loc_desc_key = "LocKey#87790";
	perkIcon = "UIIcon.Reflexes_Central_Perk_1_2";
	enumName = "Reflexes_Central_Perk_1_2";
	enumComment = "Reload Mania";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.CanWeaponReloadWhileSprinting";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanWeaponReloadWhileSliding";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanWeaponReloadWhileVaulting";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_1_3 : NewPerk
{
	loc_name_key = "LocKey#87757";
	loc_desc_key = "LocKey#87791";
	perkIcon = "UIIcon.Reflexes_Central_Perk_1_3";
	enumName = "Reflexes_Central_Perk_1_3";
	enumComment = "NAN Increase dodge speed";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.ClimbSpeedModifier";
						modifierType = "Additive";
						value = 0.9f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.JumpSpeedModifier";
						modifierType = "Additive";
						value = 0.8f;
					} : ConstantStatModifier
				];
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerVaulting";
						statGroup = 
						{
							statModifiers = 
							[
								{
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : BaseLocomotionStateAccelerationModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Perks.IsPlayerClimbingLadder";
						statGroup = 
						{
							statModifiers = 
							[
								{
									modifierType = "AdditiveMultiplier";
									value = 0.1f;
								} : BaseLocomotionStateMaxSpeedModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_1_4 : NewPerk
{
	enumName = "Reflexes_Central_Perk_1_4";
	enumComment = "Dexterity";
	perkIcon = "UIIcon.Athletics_Area_05_Perk_2";
	loc_name_key = "LocKey#6551";
	loc_desc_key = "LocKey#5852";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_1_4";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.NoviceNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.CanWeaponShootWhileSprinting";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanWeaponShootWhileSliding";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanWeaponShootWhileVaulting";
						modifierType = "Additive";
						value = 1f;
					} : ConstantStatModifier
				];
			};
		}
	];
}

Reflexes_Left_Milestone_2 : NewPerk
{
	loc_name_key = "LocKey#87758";
	perkIcon = "UIIcon.Reflexes_Left_Milestone_2";
	enumName = "Reflexes_Left_Milestone_2";
	enumComment = "RestedAndSteady";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Milestone_2";
	requiresPerks = [];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90266";
			uiData = 
			{
				floatValues = 
				[
					10f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.RiflesAndSMGPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SubMachinegunStaminaCostReduction";
									modifierType = "Additive";
									value = 0.10;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.AssaultRifleStaminaCostReduction";
									modifierType = "Additive";
									value = 0.10;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87793";
			uiData = 
			{
				floatValues = 
				[
					30f, 50f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.RiflesAndSMGPrereq", "Perks.IsPlayerAboveFatigue"
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.ReloadTimeBonus";
									modifierType = "Additive";
									value = -0.30f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_2_2 : NewPerk
{
	loc_name_key = "LocKey#87759";
	loc_desc_key = "LocKey#87794";
	enumName = "Reflexes_Left_Perk_2_2";
	enumComment = "Reload Mania";
	uiData = 
	{
		floatValues = 
		[
			15f, 30f
		];
	};
	perkIcon = "UIIcon.Reflexes_Left_Perk_2_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.RiflesAndSMGPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.EquipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.UnequipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon, 
					{
						prereqRecord = "Perks.RiflesAndSMGPrereq";
						statusEffect = "BaseStatusEffect.Reflexes_Left_Perk_2_2_Swap_Buff";
						removeWithEffector = true;
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_2_3 : NewPerk
{
	loc_name_key = "LocKey#87760";
	loc_desc_key = "LocKey#87795";
	perkIcon = "UIIcon.Assault_Area_09_Perk_1";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	enumName = "Reflexes_Left_Perk_2_3";
	enumComment = "Energy Conservation";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.RiflesAndSMGPrereq", "Perks.PlayerIsAiming"
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.RecoilKickMin";
									modifierType = "Multiplier";
									value = 0.75f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilKickMax";
									modifierType = "Multiplier";
									value = 0.75f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_2_4 : NewPerk
{
	loc_name_key = "LocKey#87761";
	loc_desc_key = "LocKey#87796";
	uiData = 
	{
		floatValues = 
		[
			20f
		];
	};
	perkIcon = "UIIcon.AssaultTrait01";
	enumName = "Reflexes_Left_Perk_2_4";
	enumComment = "Steady reload";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.RiflesAndSMGPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.EffectiveRange";
									modifierType = "AdditiveMultiplier";
									value = 0.20;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.BulletMagnetismDefaultAngle";
									modifierType = "Multiplier";
									value = 2.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.BulletMagnetismHighVelocityAngle";
									modifierType = "Multiplier";
									value = 2.0f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Milestone_2 : NewPerk
{
	loc_name_key = "LocKey#87762";
	loc_desc_key = "LocKey#87797";
	perkIcon = "UIIcon.Reflexes_Central_Milestone_2";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_dash.bk2";
	enumName = "Reflexes_Central_Milestone_2";
	enumComment = "Dash";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90264";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.DodgeStaminaCostReduction";
									modifierType = "Additive";
									value = 0.20f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87797";
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_2_3 : NewPerk
{
	loc_name_key = "LocKey#87763";
	loc_desc_key = "LocKey#87798";
	perkIcon = "UIIcon.Gunslinger_Area_09_Perk_1";
	uiData = 
	{
		floatValues = 
		[
			40f
		];
	};
	enumName = "Reflexes_Central_Perk_2_3";
	enumComment = "Deadly Acrobatics";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							conditions += 
							[
								{
									statusEffect = "PlayerJustDashed";
									checkType = "CheckType.Record";
									objectToCheck = "Instigator";
								} : StatusEffectPresentHitPrereqCondition
							];
						} : IsTargetKilled;
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Stamina";
								statPoolValue = 40f;
							} : StatPoolUpdate
						];
						bool usePercent = true;
					} : ModifyStatPoolValueEffector
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_2_2 : NewPerk
{
	loc_name_key = "LocKey#87764";
	loc_desc_key = "LocKey#87799";
	perkIcon = "UIIcon.Reflexes_Central_Perk_2_2";
	uiData = 
	{
		floatValues = 
		[
			100f
		];
	};
	enumName = "Reflexes_Central_Perk_2_2";
	enumComment = "Evasive Dash";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerDodging";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationChance";
									modifierType = "Additive";
									value = 100f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_2_1 : NewPerk
{
	loc_name_key = "LocKey#87765";
	loc_desc_key = "LocKey#87802";
	perkIcon = "UIIcon.Reflexes_Central_Perk_2_3";
	enumName = "Reflexes_Central_Perk_2_1";
	enumComment = "Mad Dash";
	uiData = 
	{
		floatValues = 
		[
			100f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_2_4 : NewPerk
{
	loc_name_key = "LocKey#87766";
	loc_desc_key = "LocKey#87803";
	perkIcon = "UIIcon.Reflexes_Central_Perk_2_4";
	enumName = "Reflexes_Central_Perk_2_4";
	enumComment = "Steady Dash";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_2_4";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.AlwaysTruePrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CanShootWhileDodging";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanAimWhileDodging";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Inbetween_Right_2 : NewPerk
{
	loc_name_key = "LocKey#87767";
	loc_desc_key = "LocKey#87806";
	perkIcon = "UIIcon.Kenjutsu_Area_09_Perk_2";
	enumName = "Reflexes_Inbetween_Right_2";
	enumComment = "Leap Attacks";
	uiData = 
	{
		floatValues = 
		[
			50f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_leapattack.bk2";
	slot = "NewPerks.Inbetween_Right_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Perk_2_1", "NewPerks.Reflexes_Right_Perk_2_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.BladeWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CanMeleeLeap";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanMeleeLeapInAir";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.BladeWeaponHeldPrereq", "Perks.IsHitStrongAttack"
							];
						} : ANDPrereq;
						maxPercentMult = 1.5f;
						minDistance = 0f;
						maxDistance = 20f;
					} : ModifyDamageWithLeapedDistance
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Right_Milestone_2 : NewPerk
{
	loc_name_key = "LocKey#87768";
	perkIcon = "UIIcon.Kenjutsu_Area_05_Perk_1";
	enumName = "Reflexes_Right_Milestone_2";
	enumComment = "Bullet Deflect";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_blockingbullets.bk2";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90272";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Reflexes_Right_Milestone_2_StaminaReduction";
						modifierType = "Additive";
						value = 0.15;
					} : ConstantStatModifier
				];
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.KatanaStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.MantisBladesStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.ChainswordStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.MacheteStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.OneHandBladeStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = "Prereqs.AlwaysTruePrereq";
						effectorToApply = 
						{
							prereqRecord = 
							{
								nestedPrereqs = 
								[
									"Prereqs.BladeWeaponHeldPrereq", "Perks.IsPlayerBlocking", {
										prereqClassName = "ConstantStatPoolPrereq";
										statPoolType = "Stamina";
										valueToCheck = 
										[
											{
												statType = "BaseStats.Stamina";
												modifierType = "Additive";
												value = 50.0f;
											} : ConstantStatModifier
										];
										comparisonType = "GreaterOrEqual";
									} : StatPoolPrereq
								];
							} : ANDPrereq;
							statGroup = 
							{
								statModifiers = 
								[
									{
										statType = "BaseStats.TBHsBaseCoefficient";
										modifierType = "Multiplier";
										value = 0.1;
									} : ConstantStatModifier
								];
							};
						} : ApplyStatGroupOnPlayer;
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87807";
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Reflexes_Right_Milestone_2_StaminaReduction";
						modifierType = "Additive";
						value = 0.25;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
	float baseOffset = 0f;
	float offsetMult = 0f;
}

Reflexes_Right_Perk_2_1 : NewPerk
{
	loc_name_key = "LocKey#87769";
	loc_desc_key = "LocKey#87808";
	perkIcon = "UIIcon.Kenjutsu_Area_02_Perk_2";
	enumName = "Reflexes_Right_Perk_2_1";
	enumComment = "Deflecting Bullets";
	binkPath = "base\movies\tutorials\700x394\perk_reflex_deflectingbullets.bk2";
	uiData = 
	{
		floatValues = 
		[
			33f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_1";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				stats = 
				[
					{
						statType = "BaseStats.Reflexes_Right_Milestone_2_StaminaDeflectPerc";
						modifierType = "Additive";
						value = 0.33;
					} : ConstantStatModifier
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Right_Perk_2_2 : NewPerk
{
	loc_name_key = "LocKey#87770";
	loc_desc_key = "LocKey#87809";
	perkIcon = "UIIcon.Kenjutsu_Area_04_Perk_2";
	enumName = "Reflexes_Right_Perk_2_2";
	enumComment = "Deadly Counter";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_2"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsHitDeflectAttack";
						value = 1.3f;
					} : MultiplyDamage
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Right_Perk_2_3 : NewPerk
{
	loc_name_key = "LocKey#87771";
	loc_desc_key = "LocKey#87810";
	perkIcon = "UIIcon.ColdBlood_Area_07_Perk_1";
	enumName = "Reflexes_Right_Perk_2_3";
	enumComment = "Bullet Time";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_2_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Perk_2_1"
	];
	tier = "NewPerks.AdeptNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
			};
		}
	];
}

Reflexes_Left_Milestone_3 : NewPerk
{
	loc_name_key = "LocKey#87772";
	perkIcon = "UIIcon.Assault_Area_01_Perk_2";
	enumName = "Reflexes_Left_Milestone_3";
	enumComment = "Sharpshooter";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_sharpshooter.bk2";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90278";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.ReflexesWeaponTypePrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.EquipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.UnequipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.AimInTime";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.AimOutTime";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#90277";
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "NewPerks.ReflexesWeaponTypePrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.RecoilDir";
									modifierType = "Multiplier";
									value = 0.25f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilAlternateDir";
									modifierType = "Multiplier";
									value = 0.25f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilAngle";
									modifierType = "Multiplier";
									value = 0.25f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilRecoveryTime";
									modifierType = "AdditiveMultiplier";
									value = -0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilTime";
									modifierType = "AdditiveMultiplier";
									value = -0.1f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.RecoilHoldDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.1f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87811";
			uiData = 
			{
				floatValues = 
				[
					7f, 2f, 7f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.ReflexesWeaponTypePrereq", {
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											weaponType = "Ranged";
										} : WeaponTypeHitPrereqCondition, 
										{
											npcType = "Any";
											invert = true;
										} : TargetNPCTypeHitPrereqCondition
									];
								} : IsHitTargetAlive
							];
						} : ANDPrereq;
						fk< StatusEffect > statusEffect = "BaseStatusEffect.Reflexes_Sharpshooter_Stamina_Stack";
						applicationTarget = "Player";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Milestone_3_Stack : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 2;
			} : ConstantStatModifier
		];
	};
	maxStacks = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxStacks";
				modifierType = "Additive";
				value = 10.0f;
			} : ConstantStatModifier
		];
	};
	removeAllStacksWhenDurationEnds = true;
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			stackable = true;
			effectors = 
			[
				{
					statGroup = 
					{
						statModifiers = 
						[
							{
								statType = "BaseStats.Reflexes_Left_Milestone_3_Stack";
								modifierType = "Additive";
								value = 1;
							} : ConstantStatModifier
						];
					};
				} : ApplyStatGroupOnPlayer
			];
		} : GameplayLogicPackage
	];
}

Reflexes_Left_Perk_3_1 : NewPerk
{
	loc_name_key = "LocKey#87773";
	loc_desc_key = "LocKey#87812";
	perkIcon = "UIIcon.Reflexes_Left_Perk_3_1";
	enumName = "Reflexes_Left_Perk_3_1";
	enumComment = "Solid Footwork";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Left_Perk_3_1";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.RiflesAndSMGPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CanWeaponShootWhileVaulting";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.RiflesAndSMGPrereq", "Perks.PlayerIsAiming"
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MaxSpeed";
									modifierType = "Additive";
									value = 1.5f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_3_2 : NewPerk
{
	loc_name_key = "LocKey#87774";
	loc_desc_key = "LocKey#87813";
	perkIcon = "UIIcon.Reflexes_Left_Perk_3_2";
	enumName = "Reflexes_Left_Perk_3_2";
	enumComment = "Spray and Pray";
	uiData = 
	{
		floatValues = 
		[
			10f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.RiflesAndSMGPrereq", "Perks.PlayerIsNotAiming"
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.SubMachinegunStaminaCostReduction";
									modifierType = "Additive";
									value = 0.10;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.AssaultRifleStaminaCostReduction";
									modifierType = "Additive";
									value = 0.10;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_3_3 : NewPerk
{
	loc_name_key = "LocKey#91187";
	loc_desc_key = "LocKey#91186";
	perkIcon = "UIIcon.Assault_Area_07_Perk_2";
	enumName = "Reflexes_Left_Perk_3_3";
	enumComment = "Razor Sharp";
	uiData = 
	{
		floatValues = 
		[
			7f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.ReflexesWeaponTypePrereq", {
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											weaponType = "Ranged";
										} : WeaponTypeHitPrereqCondition, 
										{
											npcType = "Any";
											invert = true;
										} : TargetNPCTypeHitPrereqCondition
									];
								} : IsHitTargetAlive
							];
						} : ANDPrereq;
						fk< StatusEffect > statusEffect = "BaseStatusEffect.Reflexes_Sharpshooter_Crit_Stack";
						applicationTarget = "Player";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Left_Perk_3_4 : NewPerk
{
	loc_name_key = "LocKey#87775";
	loc_desc_key = "Lockey#87814";
	perkIcon = "UIIcon.Reflexes_Left_Perk_3_4";
	enumName = "Reflexes_Left_Perk_3_4";
	enumComment = "NAN Hipshot Stamina";
	uiData = 
	{
		floatValues = 
		[
			4f
		];
	};
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.ReflexesGunsPerkWeaponGroup";
	slot = "NewPerks.Left_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"NewPerks.ReflexesWeaponTypePrereq", {
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											weaponType = "Ranged";
										} : WeaponTypeHitPrereqCondition, 
										{
											npcType = "Any";
											invert = true;
										} : TargetNPCTypeHitPrereqCondition
									];
								} : IsHitTargetAlive
							];
						} : ANDPrereq;
						fk< StatusEffect > statusEffect = "BaseStatusEffect.Reflexes_Sharpshooter_AP_Stack";
						applicationTarget = "Player";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Inbetween_Left_3 : NewPerk
{
	loc_name_key = "LocKey#87776";
	loc_desc_key = "LocKey#87815";
	perkIcon = "UIIcon.Reflexes_Inbetween_Left_3";
	enumName = "Reflexes_Inbetween_Left_3";
	enumComment = "Air Kerenzikov";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Inbetween_Left_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Perk_3_1", "NewPerks.Reflexes_Central_Perk_3_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									statType = "HasKerenzikov";
									valueToCheck = 1;
									comparisonType = "Equal";
								} : StatPrereq, 
								{
									statType = "HasKerenzikovSlide";
									valueToCheck = 1;
									comparisonType = "Equal";
								} : StatPrereq
							];
						} : ORPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.TimeDilationKerenzikovDuration";
									modifierType = "Additive";
									value = 1.5f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Milestone_3 : NewPerk
{
	loc_name_key = "LocKey#87777";
	perkIcon = "UIIcon.Reflexes_Central_Milestone_3";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_airdash.bk2";
	enumName = "Reflexes_Central_Milestone_3";
	enumComment = "AirDash";
	category = "NewPerks.MilestoneNewPerkCategory";
	slot = "NewPerks.Central_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90280";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.DodgeStaminaCostReduction";
									modifierType = "Additive";
									value = 0.20f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#90279";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerDodging";
						statGroup = 
						{
							statModifiers = 
							[
								{
									value = 0.2;
									modifierType = "AdditiveMultiplier";
								} : BaseLocomotionStateAccelerationModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87816";
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_3_2 : NewPerk
{
	loc_name_key = "LocKey#87778";
	loc_desc_key = "LocKey#87817";
	perkIcon = "UIIcon.Reflexes_Central_Perk_3_2";
	enumName = "Reflexes_Central_Perk_3_2";
	enumComment = "The Art of Falling";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerInAir";
						statGroup = 
						{
							statModifiers = 
							[
								{
									value = 19;
								} : BaseLocomotionStateAccelerationModifier
							];
						};
					} : ApplyStatGroupEffector
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Central_Perk_3_3 : NewPerk
{
	loc_name_key = "LocKey#87779";
	loc_desc_key = "LocKey#87818";
	perkIcon = "UIIcon.Gunslinger_Area_06_Perk_2";
	uiData = 
	{
		floatValues = 
		[
			30f
		];
	};
	enumName = "Reflexes_Central_Perk_3_3";
	enumComment = "Like the Wind";
	category = "NewPerks.SimpleNewPerkCategory";
	slot = "NewPerks.Central_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_3"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Perks.IsPlayerInAir";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.MitigationStrength";
									modifierType = "Additive";
									value = 30f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Right_Milestone_3 : NewPerk
{
	loc_name_key = "LocKey#87780";
	perkIcon = "UIIcon.Kenjutsu_Area_04_Perk_3";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_finisher.bk2";
	enumName = "Reflexes_Right_Milestone_3";
	enumComment = "Finishers";
	category = "NewPerks.MilestoneNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Milestone_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_2"
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#90283";
			uiData = 
			{
				floatValues = 
				[
					15f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.KatanaStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.MacheteStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.MantisBladesStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.ChainswordStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.OneHandBladeStaminaCostReduction";
									modifierType = "Additive";
									value = 0.15f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#90282";
			uiData = 
			{
				floatValues = 
				[
					20f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.BladeWeaponHeldPrereq";
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.AttackSpeed";
									modifierType = "AdditiveMultiplier";
									value = 0.2f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData, 
		{
			loc_desc_key = "LocKey#87819";
			uiData = 
			{
				floatValues = 
				[
					25f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Blade";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							value = 3.f;
						} : MultiplyDamage;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Blade";
									} : 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 = "Blade";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "FinisherTriggered";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							statusEffect = "BaseStatusEffect.FastFinisherSE";
						} : StatusEffectPrereq;
						effectorToApply = 
						{
							prereqRecord = 
							{
								conditions = 
								[
									{
										attackType = "StrongMelee";
									} : AttackTypeHitPrereqCondition, 
									{
										weaponEvolution = "Blade";
									} : WeaponEvolutionHitPrereqCondition
								];
							} : PreProcessHitTriggered;
							hitFlag = "Special";
						} : AddHitFlagToAttackEffector;
					} : ApplyEffectorOnPlayer, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.BladeWeaponHeldPrereq", {
									statusEffect = "BaseStatusEffect.Berserk";
									checkType = "CheckType.Type";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.HealthRegainOnKill";
									modifierType = "Additive";
									value = 25.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.CanPerformReflexFinisher";
									modifierType = "Additive";
									value = 1;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherReflexes_TargetDistanceMax";
									modifierType = "Additive";
									value = 5.0f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.NewPerkFinisherReflexes_TargetHealthMax";
									modifierType = "Additive";
									value = 25.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	float graceChance = 0.2f;
	float graceChanceHealthThreshold = 0.05f;
	float graceChanceThrowable = 0.25f;
	float poiseQuickMeleeMultiplier = 0.5f;
	float poiseStrongMeleeMultiplier = 2.0f;
	float poiseDebufMultiplier = 2.0f;
	float poiseBossLowHealthMultiplier = 3.0f;
}

Reflexes_Right_Perk_3_1 : NewPerk
{
	enumName = "Reflexes_Right_Perk_3_1";
	enumComment = "Blade Dance";
	loc_name_key = "LocKey#87781";
	loc_desc_key = "LocKey#87820";
	uiData = 
	{
		floatValues = 
		[
			25f, 6f
		];
	};
	perkIcon = "UIIcon.Kenjutsu_Area_03_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_1";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_3"
	];
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
}

Reflexes_Right_Perk_3_3 : NewPerk
{
	enumName = "Reflexes_Right_Perk_3_3";
	enumComment = "Opportunistic Finisher";
	loc_name_key = "LocKey#87782";
	perkIcon = "UIIcon.Kenjutsu_Area_09_Perk_1";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_3";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_3"
	];
	levels = 
	[
		{
			loc_desc_key = "LocKey#87821";
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.BladeWeaponHeldPrereq", {
									statusEffect = "BaseStatusEffect.Berserk";
									checkType = "CheckType.Type";
								} : Prereqs.StatusEffectAbsentPrereq
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.FinisherHealthThresholdIncrease";
									modifierType = "Additive";
									value = 20.0f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
}

Reflexes_Right_Perk_3_4 : NewPerk
{
	enumName = "Reflexes_Right_Perk_3_4";
	enumComment = "Leap Finisher";
	loc_name_key = "LocKey#87783";
	loc_desc_key = "LocKey#87822";
	uiData = 
	{
		floatValues = 
		[
			100f
		];
	};
	perkIcon = "UIIcon.Kenjutsu_Area_01_Perk_2";
	category = "NewPerks.SimpleNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	slot = "NewPerks.Right_Perk_3_4";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_3"
	];
	levels = 
	[
		{
			dataPackage = 
			{
			};
		} : NewPerkLevelData
	];
	tier = "NewPerks.ExpertNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	float distanceMult = 2.0f;
}

Reflexes_Master_Perk_1 : NewPerk
{
	loc_name_key = "LocKey#87784";
	loc_desc_key = "LocKey#87823";
	perkIcon = "UIIcon.Assault_Area_05_Perk_1";
	enumName = "Reflexes_Master_Perk_1";
	enumComment = "Precision";
	uiData = 
	{
		floatValues = 
		[
			7f, 100f
		];
	};
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.AssaultRiflesPerkWeaponGroup";
	slot = "NewPerks.Master_Perk_1";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									itemType = "ItemType.Wea_Rifle";
								} : Prereqs.WeaponHeldByTypePrereq, 
								{
									processMiss = true;
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											weaponType = "Ranged";
										} : WeaponTypeHitPrereqCondition, 
										{
											npcType = "Any";
											invert = true;
										} : TargetNPCTypeHitPrereqCondition, 
										{
											timeOut = 2.0f;
											consecutiveHitsRequired = 7;
											uniqueTarget = true;
										} : ConsecutiveHitsPrereqCondition
									];
								} : IsHitTargetAlive
							];
						} : ANDPrereq;
						CName effectorClassName = "ReflexesMasterPerk1Effector";
						string operationType = "Add";
						float multiplier = 1;
						float timeOut = 2.0f;
					}, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								{
									itemType = "ItemType.Wea_Rifle";
								} : Prereqs.WeaponHeldByTypePrereq, 
								{
									processMiss = true;
									conditions += 
									[
										{
											attackType = "Ranged";
											onlyOncePerShot = true;
										} : AttackTypeHitPrereqCondition, 
										{
											weaponType = "Ranged";
										} : WeaponTypeHitPrereqCondition, 
										{
											npcType = "Any";
											invert = true;
										} : TargetNPCTypeHitPrereqCondition, 
										{
											timeOut = 2.0f;
											consecutiveHitsRequired = 7;
											uniqueTarget = true;
										} : ConsecutiveHitsPrereqCondition
									];
								} : IsHitTargetAlive
							];
						} : ANDPrereq;
						statusEffect = "NewPerks.Reflexes_Master_Perk_1_StatusEffect";
						applicationTarget = "Player";
					} : ApplyStatusEffectOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Master_Perk_1_StatusEffect : StatusEffect
{
	duration = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxDuration";
				modifierType = "Additive";
				value = 0.2f;
			} : ConstantStatModifier
		];
	};
	maxStacks = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.MaxStacks";
				modifierType = "Additive";
				value = 1;
			} : ConstantStatModifier
		];
	};
	fk< GameplayLogicPackage >[] packages = 
	[
		{
			effectors = 
			[
				{
					fk< StatModifierGroup > statGroup = 
					{
						statModifiers = 
						[
							{
								float value = 100.f;
							} : HitDismembermentFactorModifier, 
							{
								float value = 100.f;
							} : HitWoundsFactorModifier
						];
					} : StatModifierGroup;
				} : ApplyStatGroupOnWeapon
			];
		}
	];
}

Reflexes_Master_Perk_2 : NewPerk
{
	loc_name_key = "LocKey#87785";
	loc_desc_key = "LocKey#87824";
	perkIcon = "UIIcon.Reflexes_Master_Perk_2";
	uiData = 
	{
		floatValues = 
		[
			22f
		];
	};
	enumName = "Reflexes_Master_Perk_2";
	enumComment = "Gunzerker";
	binkPath = "base\movies\tutorials\700x394\perk_reflexes_gunzerker.bk2";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.SMGsPerkWeaponGroup";
	slot = "NewPerks.Master_Perk_2";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Left_Milestone_3"
	];
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Prereqs.SMGHeldPrereq", "Prereqs.SampleWeaponFirstReloadStatePrereq"
							];
						} : ANDPrereq;
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.CycleTimeBonus";
									modifierType = "Additive";
									value = -0.22f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon, 
					{
						prereqRecord = "Prereqs.SMGHeldPrereq";
						fk< StatModifierGroup > statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.EquipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier, 
								{
									statType = "BaseStats.UnequipDuration";
									modifierType = "AdditiveMultiplier";
									value = -0.15f;
								} : ConstantStatModifier
							];
						} : StatModifierGroup;
					} : ApplyStatGroupOnWeapon
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Master_Perk_3 : NewPerk
{
	loc_name_key = "LocKey#87786";
	perkIcon = "UIIcon.Reflexes_Master_Perk_3";
	enumName = "Reflexes_Master_Perk_3";
	enumComment = "FloorIsLava";
	category = "NewPerks.MasterNewPerkCategory";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Central_Milestone_3"
	];
	slot = "NewPerks.Master_Perk_3";
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			loc_desc_key = "LocKey#87825";
			uiData = 
			{
				floatValues = 
				[
					25f
				];
			};
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.IsPlayerAirDashing", {
									stateName = "DoubleJump";
								} : DetailedLocomotionPSMPrereq
							];
						} : ORPrereq;
						statPoolUpdates = 
						[
							{
								statPoolType = "BaseStatPools.Stamina";
								statPoolValue = 25f;
							} : StatPoolUpdate
						];
						bool usePercent = true;
					} : ModifyStatPoolValueEffector, 
					{
						prereqRecord = 
						{
							nestedPrereqs = 
							[
								"Perks.IsPlayerInAir", "Perks.IsPlayerInAirDashElevation"
							];
						} : ANDPrereq;
						statGroup = 
						{
							statModifiers = 
							[
								{
									statType = "BaseStats.IsDodgeStaminaFree";
									modifierType = "Additive";
									value = 1f;
								} : ConstantStatModifier
							];
						};
					} : ApplyStatGroupOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Master_Perk_5 : NewPerk
{
	loc_name_key = "LocKey#87787";
	loc_desc_key = "LocKey#87826";
	uiData = 
	{
		floatValues = 
		[
			25f
		];
	};
	perkIcon = "UIIcon.Kenjutsu_Area_08_Perk_2";
	enumName = "Reflexes_Master_Perk_5";
	enumComment = "Way of the Blood";
	category = "NewPerks.MasterNewPerkCategory";
	perkWeaponGroup = "NewPerks.BladesPerkWeaponGroup";
	requiresPerks = 
	[
		"NewPerks.Reflexes_Right_Milestone_3"
	];
	slot = "NewPerks.Master_Perk_5";
	tier = "NewPerks.MasterNewPerkTier";
	attribute = "NewPerks.ReflexesAttributeData";
	levels = 
	[
		{
			dataPackage = 
			{
				effectors = 
				[
					{
						prereqRecord = "Prereqs.BladeWeaponHeldPrereq";
						effectorToApply = "NewPerks.Reflexes_Master_Perk_5_Effector";
					} : ApplyEffectorOnPlayer
				];
			};
		} : NewPerkLevelData
	];
}

Reflexes_Master_Perk_5_Effector : AddStatusEffectToAttackEffector
{
	prereqRecord = 
	{
		nestedPrereqs = 
		[
			{
				conditions += 
				[
					{
						weaponType = "Melee";
					} : WeaponTypeHitPrereqCondition, 
					{
						npcType = "Human";
						invert = false;
					} : TargetNPCTypeHitPrereqCondition
				];
			} : IsHitTargetAlive, 
			{
				conditions += 
				[
					{
						hitFlag = "WasBulletDeflected";
					} : HitFlagHitPrereqCondition, 
					{
						npcType = "Human";
						invert = false;
					} : TargetNPCTypeHitPrereqCondition
				];
			} : IsHitTargetAlive
		];
	} : ORPrereq;
	isRandom = false;
	statusEffect = "BaseStatusEffect.Reflexes_Master_Perk_5_Bleeding";
}

ReflexesWeaponTypePrereq : ORPrereq
{
	nestedPrereqs = 
	[
		{
			itemType = "ItemType.Wea_Rifle";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_AssaultRifle";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_SubmachineGun";
		} : Prereqs.WeaponHeldByTypePrereq
	];
}

