package GLP
using RTDB, Attribute, Prereqs, Perks

NoHitReactions : GameplayLogicPackage
{
	stats = 
	[
		{
			statType = "BaseStats.ImpactDamageThreshold";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThreshold";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThreshold";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdInCover";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdInCover";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThresholdInCover";
			modifierType = "Multiplier";
			value = 999999;
		} : ConstantStatModifier
	];
}

MaxResistances : GameplayLogicPackage
{
	stats = 
	[
		{
			statType = "BaseStats.Armor";
			modifierType = "Additive";
			value = 9999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalResistance";
			modifierType = "Additive";
			value = 9999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalResistance";
			modifierType = "Additive";
			value = 9999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricResistance";
			modifierType = "Additive";
			value = 9999;
		} : ConstantStatModifier
	];
}

SasquatchIncreasedResistances : GameplayLogicPackage
{
	stats = 
	[
		{
			statType = "BaseStats.Armor";
			modifierType = "Additive";
			value = 9999999;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalResistance";
			modifierType = "Additive";
			value = 65;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalResistance";
			modifierType = "Additive";
			value = 65;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricResistance";
			modifierType = "Additive";
			value = 65;
		} : ConstantStatModifier
	];
}

HoldingHMG : GameplayLogicPackage
{
	fk< StatModifier >[] stats = 
	[
		{
			statType = "BaseStats.CanUseCovers";
			modifierType = "Multiplier";
			value = 0.f;
		} : ConstantStatModifier
	];
	effectors = 
	[
		{
			prereqRecord = 
			{
				statType = "LocomotionPenaltyDisabled";
				valueToCheck = 1;
				comparisonType = "Less";
			} : StatPrereq;
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.MaxSpeed";
						modifierType = "Multiplier";
						value = 0.65f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.JumpHeight";
						modifierType = "Multiplier";
						value = 0.65f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.HasDodge";
						modifierType = "Multiplier";
						value = 0.f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.HasDodgeAir";
						modifierType = "Multiplier";
						value = 0.f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanSprint";
						modifierType = "Multiplier";
						value = 0f;
					} : ConstantStatModifier
				];
			};
		} : ApplyStatGroupEffector
	];
}

HoldingSasquatchHammer : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.SasquatchStaminaDrain";
						modifierType = "Additive";
						value = 0.6667;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.MaxSpeed";
						modifierType = "Multiplier";
						value = 0.85f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.JumpHeight";
						modifierType = "Multiplier";
						value = 0.85f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.HasDodge";
						modifierType = "Multiplier";
						value = 0.f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.HasDodgeAir";
						modifierType = "Multiplier";
						value = 0.f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanSprint";
						modifierType = "Multiplier";
						value = 0f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.Visibility";
						modifierType = "Multiplier";
						value = 1.5f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.5f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.75f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingBorgMelee : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.MeleeBorgStaminaDrain";
						modifierType = "Additive";
						value = 10f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.MaxSpeed";
						modifierType = "Multiplier";
						value = 0.85f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.JumpHeight";
						modifierType = "Multiplier";
						value = 0.85f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.4f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.7f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer, 
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.AttackSpeed";
						modifierType = "Multiplier";
						value = 0.75;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.DamagePerHit";
						modifierType = "Multiplier";
						value = 1.46;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.CanWeaponIgnoreArmor";
						modifierType = "Additive";
						value = 0.25f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnWeapon
	];
}

HoldingVerySlowMelee : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.66f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.4f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingSlowMelee : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.5f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.4f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingKanabo : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.33f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.05f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingChainsword : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.17f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.05f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingMelee : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = 0.33f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = -0.35f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingKnife : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = -0.33f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = 0.05f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingFists : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = -0.33f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = 0.05f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

HoldingNanoWires : GameplayLogicPackage
{
	effectors = 
	[
		{
			fk< StatModifierGroup > statGroup = 
			{
				fk< StatModifier >[] statModifiers = 
				[
					{
						statType = "BaseStats.StaminaRegenStartDelay";
						modifierType = "Additive";
						value = -0.33f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.StaminaRegenRateMult";
						modifierType = "Additive";
						value = 0.05f;
					} : ConstantStatModifier
				];
			} : StatModifierGroup;
		} : ApplyStatGroupOnPlayer
	];
}

MaxStamina : GameplayLogicPackage
{
	stats = 
	[
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			value = 2;
		} : ConstantStatModifier
	];
}

MaxEvasion : GameplayLogicPackage
{
	stats = 
	[
		{
			statType = "BaseStats.Evasion";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier
	];
}

DeactivateDangerousCyberware : GameplayLogicPackage
{
	fk< StatModifier >[] stats = 
	[
		{
			statType = "BaseStats.HasSandevistan";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasSandevistanTier2";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanSprintHarass";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SandevistanDashShoot";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasKerenzikov";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasKerenzikovSlide";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasSuperheroFall";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasBerserk";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseStrongArms";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseOpticalCamo";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseTerrainCamo";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseOverclock";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier
	];
}

DeactivateCyberware : DeactivateDangerousCyberware
{
	fk< StatModifier >[] stats += 
	[
		{
			statType = "BaseStats.HasCybereye";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanQuickhack";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasCyberdeck";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasAirHover";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasDoubleJump";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasChargeJump";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseCoolingSystem";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasGlowingTattoos";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasThermovision";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasInfravision";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasSpiderBotControl";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasSelfHealingSkin";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasHealthMonitorBomb";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseRetractableShield";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.IsAggressive";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.IsReckless";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier
	];
}

DeactivateCyberdeck : GameplayLogicPackage
{
	fk< StatModifier >[] stats = 
	[
		{
			statType = "BaseStats.CanQuickhack";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasCyberdeck";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanUseOverclock";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CyberdeckOverclockRegenRate";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier
	];
	fk< Effector >[] effectors = 
	[
		{
			prereqRecord = "Prereqs.AlwaysTruePrereq";
			effectorClassName = "RemoveStatusEffectsEffector";
			string[] statusEffects = 
			[
				"BaseStatusEffect.Intelligence_Central_Milestone_3_Overclock_Buff"
			];
		} : Effector
	];
}

DeactivateCyberwareStatusEffects : GameplayLogicPackage
{
	fk< Effector >[] effectors = 
	[
		{
			prereqRecord = "Prereqs.AlwaysTruePrereq";
			effectorClassName = "RemoveStatusEffectsEffector";
			string[] statusEffects = 
			[
				"BaseStatusEffect.SandevistanBuff", "AIQuickHackStatusEffect.BuffCamo", "AIQuickHackStatusEffect.BuffSturdiness", "BaseStatusEffect.CamoEffector"
			];
		} : Effector
	];
}

DeactivateDangerousPerks : GameplayLogicPackage
{
	fk< StatModifier >[] stats = 
	[
		{
			statType = "BaseStats.CanSeeCyberwareBreaches";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier
	];
}

