package QuickHack
using RTDB, Attribute, Prereqs, Proficiencies, Perks, Effectors, Items

MemoryCost : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		"QuickHack.MemoryCostReductionMod", "QuickHack.ConsumableCostReduction"
	];
}

MemoryCostUltimate : MemoryCost
{
	costMods += 
	[
		"QuickHack.TargetResistance", "QuickHack.TargetResistanceExtraUltimate", "QuickHack.UltimateMemoryCostReductionMod"
	];
}

MemoryCostCovert : MemoryCost
{
	costMods += 
	[
		"QuickHack.TargetResistanceCovert", "QuickHack.NetworkMemoryCostReductionMod"
	];
}

MemoryCostControl : MemoryCost
{
	costMods += 
	[
		"QuickHack.TargetResistanceControl"
	];
}

MemoryCostDamage : MemoryCost
{
	costMods += 
	[
		"QuickHack.TargetResistanceDamage", "QuickHack.DamageQuickHackMemoryCostReductionMod"
	];
}

MemoryIncreaseTier1 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 1;
		} : MemoryMod
	];
}

MemoryIncreaseTier2 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 1;
		} : MemoryMod
	];
}

MemoryIncreaseTier3 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 2;
		} : MemoryMod
	];
}

MemoryIncreaseTier4 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 3;
		} : MemoryMod
	];
}

MemoryIncreaseTier5 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 4;
		} : MemoryMod
	];
}

MemoryIncreaseTier6 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 5;
		} : MemoryMod
	];
}

MemoryIncreaseTier7 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 6;
		} : MemoryMod
	];
}

MemoryIncreaseTier8 : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 7;
		} : MemoryMod
	];
}

MemoryIncreaseLegendaryMemoryWipe : StatPoolCost
{
	statPool = "BaseStatPools.Memory";
	costMods += 
	[
		{
			value = 24;
		} : MemoryMod
	];
}

DeviceMemoryCost : MemoryCost
{
	costMods += 
	[
		"QuickHack.DeviceMemoryCostReductionMod", "QuickHack.DeviceMemoryCostReductionMultMod"
	];
}

MemoryMod : ConstantStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
}

MemoryCostReductionMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Player";
	refStat = "BaseStats.MemoryCostReduction";
	opSymbol = "*";
	value = -1;
}

NetworkMemoryCostReductionMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Player";
	refStat = "BaseStats.StealthHacksCostReduction";
	opSymbol = "*";
	value = -1;
}

DeviceMemoryCostReductionMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Player";
	refStat = "BaseStats.DeviceMemoryCostReduction";
	opSymbol = "*";
	value = -1;
}

DeviceMemoryCostReductionMultMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "AdditiveMultiplier";
	refObject = "Player";
	refStat = "BaseStats.DeviceMemoryCostReductionMult";
	opSymbol = "*";
	value = -1;
}

DamageQuickHackMemoryCostReductionMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Player";
	refStat = "BaseStats.DamageQuickHackMemoryCostReduction";
	opSymbol = "*";
	value = -1;
}

UltimateMemoryCostReductionMod : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Player";
	refStat = "BaseStats.UltimateMemoryCostReduction";
	opSymbol = "*";
	value = -1;
}

TargetResistance : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Target";
	refStat = "BaseStats.HackingResistance";
	opSymbol = "*";
	value = 1.f;
}

TargetResistanceExtraUltimate : TargetResistance
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refObject = "Target";
	refStat = "BaseStats.HackingResistanceUltimate";
	opSymbol = "*";
	value = 1.f;
}

TargetResistanceCovert : TargetResistance
{
	value = 1f;
}

TargetResistanceDamage : TargetResistance
{
	value = 1f;
}

TargetResistanceControl : TargetResistance
{
	value = 1f;
}

TargetResistance_DifficultyMult : CurveStatModifier
{
	statType = "BaseStats.HackingResistance";
	modifierType = "AdditiveMultiplier";
	id = "puppet_powerLevelToHealth";
	column = "puppet_qh_resistance_mult";
	refStat = "BaseStats.PowerLevel";
}

TargetResistanceUltimate_DifficultyMult : TargetResistance_DifficultyMult
{
	statType = "BaseStats.HackingResistanceUltimate";
}

ConsumableCostReduction : CombinedStatModifier
{
	statType = "BaseStats.Memory";
	modifierType = "Additive";
	refStat = "BaseStats.MemoryCostModifier";
	CName opSymbol = "*";
	float value = 1.f;
}

HackingResistanceUploadModifier : CurveStatModifier
{
	statType = "BaseStats.QuickHackUpload";
	modifierType = "AdditiveMultiplier";
	id = "puppet_hacking_res_to_upload";
	column = "puppet_hacking_res_to_upload_multiplier";
	refStat = "BaseStats.HackingResistance";
	refObject = "Target";
}

HackingResistanceUltimateUploadModifier : CurveStatModifier
{
	statType = "BaseStats.QuickHackUpload";
	modifierType = "AdditiveMultiplier";
	id = "puppet_hacking_res_to_upload";
	column = "puppet_hacking_res_to_upload_multiplier";
	refStat = "BaseStats.HackingResistanceUltimate";
	refObject = "Target";
}

QuickHack : ObjectAction
{
	actionName = "";
	priority = 0.f;
	bool isQuickHack = true;
	instigatorPrereqs = 
	[
		{
			statType = "HasCyberdeck";
			valueToCheck = 0;
			comparisonType = "Greater";
		} : StatPrereq
	];
	targetActivePrereqs = 
	[
		"Prereqs.QuickHackUploadingPrereq", "Prereqs.ChimeraNoQuickHackPrereq"
	];
	objectActionType = "ObjectActionType.PuppetQuickHack";
	activationTime += 
	[
		{
		} : QuickHack.HackingResistanceUploadModifier
	];
	startEffects = 
	[
		{
			effectorToTrigger = "QuickHack.ModifyHackUploadTimeOnMechanicals";
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = 
			{
				prereqRecord = "Prereqs.AlwaysTruePrereq";
				statGroup = 
				{
					statModifiers = 
					[
						{
							statType = "BaseStats.ArmorMultBonus";
							modifierType = "Additive";
							refObject = "Player";
							refStat = "BaseStats.HackedEnemyArmorReduction";
							opSymbol = "*";
							value = -1f;
						} : CombinedStatModifier
					];
				};
			} : ApplyStatGroupEffector;
		}, 
		{
			effectorToTrigger = 
			{
				prereqRecord = "Prereqs.AlwaysTruePrereq";
				CName effectorClassName = "RefreshPingEffector";
			} : Effector;
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.WasQuickHacked";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackUploaded";
			recipient = "ObjectActionReference.Instigator";
		}
	];
	costs = 
	[
		"QuickHack.MemoryCost"
	];
	interactionLayer = "remote";
	fk< StatModifierGroup > awarenessCost = 
	{
	} : StatModifierGroup;
}

DamageHack : QuickHack
{
	hackCategory = "HackCategory.DamageHack";
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.EnemyHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = 1f;
				refObject = "Target";
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = 30;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				refStat = "BaseStats.SmasherBossHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = 10f;
				refObject = "Target";
			} : CombinedStatModifier
		];
	} : StatModifierGroup;
}

UltimateHack : QuickHack
{
	startEffects += 
	[
		{
			effectorToTrigger = "Effectors.RemoveReduceNextUltimateHackCostReductionSE";
			recipient = "ObjectActionReference.Instigator";
		}
	];
	hackCategory = "HackCategory.UltimateHack";
	targetActivePrereqs += 
	[
		"Prereqs.QuickHackTargetMortalPrereq"
	];
	activationTime += 
	[
		{
		} : QuickHack.HackingResistanceUltimateUploadModifier
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "AdditiveMultiplier";
				refStat = "BaseStats.EnemyHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = 1f;
				refObject = "Target";
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = 50;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				refStat = "BaseStats.SmasherBossHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = -20f;
				refObject = "Target";
			} : CombinedStatModifier
		];
	} : StatModifierGroup;
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = "Effectors.RewardPlayerWithCrimeScoreEffector";
		}
	];
}

ControlHack : QuickHack
{
	hackCategory = "HackCategory.ControlHack";
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.EnemyHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = 1f;
				refObject = "Target";
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = 15;
			} : ConstantStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				refStat = "BaseStats.SmasherBossHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = -15f;
				refObject = "Target";
			} : CombinedStatModifier
		];
	} : StatModifierGroup;
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = "Effectors.NotifyPoliceEffector";
		}
	];
}

CovertHack : QuickHack
{
	hackCategory = "HackCategory.CovertHack";
	awarenessCost = "";
}

BreachingHack : QuickHack
{
	hackCategory = "HackCategory.BreachingHack";
}

RemoteBreach : QuickHack
{
	actionName = "RemoteBreach";
	gameplayCategory = "ActionCategories.TakeControl";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.RemoteBreachCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetActivePrereqs += 
	[
		"Prereqs.NetworkNotBreachedActive", "Prereqs.ConnectedToBackdoorActive", "Prereqs.ChimeraNoQuickHackPrereq"
	];
	costs = [];
	objectActionUI = "Interactions.RemoteBreach";
	activationTime = [];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.RemoteBreachCooldown";
			recipient = "ObjectActionReference.Instigator";
		}
	];
	rewards = [];
}

TriggerRobotPunch : QuickHack
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCost
	];
	objectActionUI = "Interactions.TriggerRobotPunch";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.f;
		} : ConstantStatModifier
	];
}

BaseWeaponMalfunctionHack : QuickHack.ControlHack
{
	actionName = "WeaponMalfunction";
	targetActivePrereqs += 
	[
		"Prereqs.RangedWeaponHeldCheckBothHandsActionPrereq", "Prereqs.RangedWeaponHeldMinotaurActionPrereq"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	objectActionUI = "Interactions.WeaponMalfunctionHack";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.3f;
		} : ConstantStatModifier
	];
}

WeaponMalfunctionHack : BaseWeaponMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunction";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

WeaponMalfunctionHackSpread : WeaponMalfunctionHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

WeaponMalfunctionLvl2Hack : BaseWeaponMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

WeaponMalfunctionLvl2HackSpread : WeaponMalfunctionLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

WeaponMalfunctionLvl3Hack : BaseWeaponMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

WeaponMalfunctionLvl3HackSpread : WeaponMalfunctionLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

WeaponMalfunctionLvl4Hack : BaseWeaponMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

WeaponMalfunctionLvl4HackSpread : WeaponMalfunctionLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

WeaponMalfunctionLvl4PlusPlusHack : BaseWeaponMalfunctionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraBaseWeaponMalfunctionHack : BaseWeaponMalfunctionHack
{
	actionName = "ChimeraWeaponMalfunction";
	objectActionUI = "Interactions.WeaponMalfunctionHack";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 4.f;
		} : ConstantStatModifier
	];
}

ChimeraWeaponMalfunctionHack : ChimeraBaseWeaponMalfunctionHack
{
	priority = 1.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeaponMalfunction";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraWeaponMalfunctionLvl2Hack : ChimeraBaseWeaponMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraWeaponMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraWeaponMalfunctionLvl3Hack : ChimeraBaseWeaponMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraWeaponMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraWeaponMalfunctionLvl4Hack : ChimeraBaseWeaponMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraWeaponMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraWeaponMalfunctionLvl4PlusPlusHack : ChimeraBaseWeaponMalfunctionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraWeaponMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossBaseWeaponMalfunctionHack : BaseWeaponMalfunctionHack
{
	actionName = "BossWeaponMalfunction";
	objectActionUI = "Interactions.WeaponMalfunctionHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 5;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
}

BossWeaponMalfunctionHack : BossBaseWeaponMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossWeaponMalfunction";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

BossWeaponMalfunctionLvl2Hack : BossBaseWeaponMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossWeaponMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossWeaponMalfunctionLvl3Hack : BossBaseWeaponMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossWeaponMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossWeaponMalfunctionLvl4Hack : BossBaseWeaponMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossWeaponMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossWeaponMalfunctionLvl4PlusPlusHack : BossBaseWeaponMalfunctionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.WeaponMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossWeaponMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.WeaponMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BaseLocomotionMalfunctionHack : QuickHack.ControlHack
{
	actionName = "LocomotionMalfunction";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.3f;
		} : ConstantStatModifier
	];
	objectActionUI = "Interactions.LocomotionMalfunctionHack";
	targetActivePrereqs += 
	[
		"Prereqs.BossNoInterruptPrereq"
	];
}

LocomotionMalfunctionHack : BaseLocomotionMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunction";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

LocomotionMalfunctionHackSpread : LocomotionMalfunctionHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

LocomotionMalfunctionLvl2Hack : BaseLocomotionMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

LocomotionMalfunctionLvl2HackSpread : LocomotionMalfunctionLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

LocomotionMalfunctionLvl3Hack : BaseLocomotionMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

LocomotionMalfunctionLvl3HackSpread : LocomotionMalfunctionLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

LocomotionMalfunctionLvl4Hack : BaseLocomotionMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

LocomotionMalfunctionLvl4HackSpread : LocomotionMalfunctionLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraBaseLocomotionMalfunctionHack : BaseLocomotionMalfunctionHack
{
	actionName = "ChimeraLocomotionMalfunction";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
}

ChimeraLocomotionMalfunctionHack : ChimeraBaseLocomotionMalfunctionHack
{
	priority = 1.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunction";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraLocomotionMalfunctionLvl2Hack : ChimeraBaseLocomotionMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraLocomotionMalfunctionLvl3Hack : ChimeraBaseLocomotionMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraLocomotionMalfunctionLvl4Hack : ChimeraBaseLocomotionMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.LocomotionMalfunctionLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossBaseLocomotionMalfunctionHack : BaseLocomotionMalfunctionHack
{
	actionName = "BossLocomotionMalfunction";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
}

BossLocomotionMalfunctionHack : BossBaseLocomotionMalfunctionHack
{
	priority = 1.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 4.f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossLocomotionMalfunction";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

BossLocomotionMalfunctionLvl2Hack : BossBaseLocomotionMalfunctionHack
{
	priority = 2.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossLocomotionMalfunctionLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossLocomotionMalfunctionLvl3Hack : BossBaseLocomotionMalfunctionHack
{
	priority = 3.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.f;
		} : ConstantStatModifier
	];
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossLocomotionMalfunctionLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossLocomotionMalfunctionLvl4Hack : BossBaseLocomotionMalfunctionHack
{
	priority = 4.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier
	];
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4", "QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.LocomotionMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossLocomotionMalfunctionLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.LocomotionMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BaseCyberwareMalfunctionHack : QuickHack.ControlHack
{
	actionName = "CyberwareMalfunction";
	targetActivePrereqs += 
	[
		"Prereqs.CyberwareMalfunctionNotBlockedPrereq", "Prereqs.CyberwareMalfunctionNotBlockedMaxStacksPrereq"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	objectActionUI = "Interactions.CyberwareMalfunctionHack";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.3f;
		} : ConstantStatModifier
	];
}

CyberwareMalfunctionHack : BaseCyberwareMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

CyberwareMalfunctionHackSpread : CyberwareMalfunctionHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CyberwareMalfunctionLvl2Hack : BaseCyberwareMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDisableCWOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

CyberwareMalfunctionLvl2HackSpread : CyberwareMalfunctionLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CyberwareMalfunctionLvl3Hack : BaseCyberwareMalfunctionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDisableCWOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

CyberwareMalfunctionLvl3HackSpread : CyberwareMalfunctionLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CyberwareMalfunctionLvl4Hack : BaseCyberwareMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDisableCWOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

CyberwareMalfunctionLvl4HackSpread : CyberwareMalfunctionLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CyberwareMalfunctionLvl4PlusPlusHack : BaseCyberwareMalfunctionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDisableCWOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

CyberwareMalfunctionLvl4PlusPlusHackSpread : CyberwareMalfunctionLvl4PlusPlusHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraBaseCyberwareMalfunctionHack : BaseCyberwareMalfunctionHack
{
	actionName = "ChimeraCyberwareMalfunction";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
}

ChimeraCyberwareMalfunctionHack : ChimeraBaseCyberwareMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunction";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraCyberwareMalfunctionLvl2Hack : ChimeraBaseCyberwareMalfunctionHack
{
	priority = 2.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraCyberwareMalfunctionLvl3Hack : ChimeraBaseCyberwareMalfunctionHack
{
	priority = 3.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraCyberwareMalfunctionLvl4Hack : ChimeraBaseCyberwareMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraCyberwareMalfunctionLvl4PlusPlusHack : ChimeraBaseCyberwareMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossBaseCyberwareMalfunctionHack : BaseCyberwareMalfunctionHack
{
	actionName = "BossCyberwareMalfunction";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 2;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
}

BossCyberwareMalfunctionHack : BossBaseCyberwareMalfunctionHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionHackSpread";
			} : SpreadEffector;
		}
	];
}

BossCyberwareMalfunctionLvl2Hack : BossBaseCyberwareMalfunctionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossCyberwareMalfunctionLvl3Hack : BossBaseCyberwareMalfunctionHack
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossCyberwareMalfunctionLvl4Hack : BossBaseCyberwareMalfunctionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossCyberwareMalfunctionLvl4PlusPlusHack : BossBaseCyberwareMalfunctionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CyberwareMalfunctionHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			effectorToTrigger = "Effectors.ApplyDoTOnCyberwareMalfunctionEffector";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.CyberwareMalfunctionLvl4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CyberwareMalfunctionLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BaseBlindHack : QuickHack.ControlHack
{
	actionName = "Blind";
	objectActionUI = "Interactions.BlindHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 2;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.3f;
		} : ConstantStatModifier
	];
	targetActivePrereqs += 
	[
		"Prereqs.QuickHackBlindImmunePrereq", {
			statusEffect = "BaseStatusEffect.BossNoInterrupt";
		} : StatusEffectAbsentPrereq
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.RebootOpticsCooldown";
		} : StatusEffectAbsentPrereq
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.RebootOpticsCooldown";
			recipient = "ObjectActionReference.Instigator";
		}
	];
}

BlindHack : BaseBlindHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ShortBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindHackSpread";
			} : SpreadEffector;
		}
	];
}

BlindHackSpread : BlindHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

BlindLvl1Hack : BaseBlindHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ModerateBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLvl1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

BlindLvl1HackSpread : BlindLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

BlindLvl2Hack : BaseBlindHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ModerateBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BlindLvl2HackSpread : BlindLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

BlindLvl3Hack : BaseBlindHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier6"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BlindLvl3HackSpread : BlindLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

BlindLvl4Hack : BaseBlindHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier6"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl4HackSpread";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHackSpreadOnDeath";
				spreadDistance = 10;
				spreadCount = 1;
				applyOverclock = false;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					string stateName = "Dead";
				} : HighLevelNPCStatePrereq;
				objectAction = "QuickHack.BlindHackSpreadOnDeath";
				bool applyOverclock = false;
			} : SpreadEffector;
		}
	];
}

BlindLvl4HackSpread : BlindLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

BlindHackSpreadOnDeath : BlindLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraBaseBlindHack : BaseBlindHack
{
	actionName = "ChimeraBlind";
	objectActionUI = "Interactions.BlindHack";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.5f;
		} : ConstantStatModifier
	];
}

ChimeraBlindHack : ChimeraBaseBlindHack
{
	priority = 0.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraQuickHackBlind";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBlindLvl1Hack : ChimeraBaseBlindHack
{
	priority = 1.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraQuickHackBlind";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBlindLvl2Hack : ChimeraBaseBlindHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraQuickHackBlindLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBlindLvl3Hack : ChimeraBaseBlindHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraQuickHackBlindLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBlindLvl4Hack : ChimeraBaseBlindHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraQuickHackBlindLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossBaseBlindHack : BaseBlindHack
{
	actionName = "BossBlind";
	objectActionUI = "Interactions.BlindHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 5;
				} : MemoryMod
			];
		} : MemoryCostControl
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.f;
		} : ConstantStatModifier
	];
}

BossBlindHack : BossBaseBlindHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossShortBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindHackSpread";
			} : SpreadEffector;
		}
	];
}

BossBlindLvl1Hack : BossBaseBlindHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossModerateBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLvl1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBlindLvl2Hack : BossBaseBlindHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ModerateBlind";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.QuickHackBlindLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBlindLvl3Hack : BossBaseBlindHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossQuickHackBlindLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBlindLvl4Hack : BossBaseBlindHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossQuickHackBlindLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlindLvl4HackSpread";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlindHackSpreadOnDeath";
				spreadDistance = 10;
				spreadCount = 1;
				applyOverclock = false;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					string stateName = "Dead";
				} : HighLevelNPCStatePrereq;
				objectAction = "QuickHack.BlindHackSpreadOnDeath";
				bool applyOverclock = false;
			} : SpreadEffector;
		}
	];
}

SuicideHackBase : QuickHack.UltimateHack
{
	actionName = "Suicide";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetPrereqs = [];
	targetActivePrereqs += 
	[
		"Prereqs.GunSuicidePrereq", "Prereqs.BossNoInterruptPrereq"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 24;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.SuicideHack";
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithWeapon";
			recipient = "ObjectActionReference.Target";
		}
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.SuicideLvl3Hack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				effectTags = 
				[
					"SuicideHackMemoryCostReduction"
				];
			} : RemoveStatusEffectsEffector;
		}
	];
}

SuicideLvl3Hack : SuicideHackBase
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithWeapon";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

SuicideLvl3HackSpread : SuicideLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

SuicideLvl4Hack : SuicideHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithWeapon";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				statPoolUpdates = 
				[
					{
						statPoolType = "BaseStatPools.Health";
						statModifiers = 
						[
							{
								statType = "BaseStats.Health";
								modifierType = "Additive";
								value = 10f;
							} : ConstantStatModifier
						];
					}
				];
				usePercent = true;
			} : ModifyStatPoolValueEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

SuicideLvl4HackSpread : SuicideLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

SuicideLvl4PlusPlusHack : SuicideHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithWeapon";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				statPoolUpdates = 
				[
					{
						statPoolType = "BaseStatPools.Health";
						statModifiers = 
						[
							{
								statType = "BaseStats.Health";
								modifierType = "Additive";
								value = 20f;
							} : ConstantStatModifier
						];
					}
				];
				usePercent = true;
			} : ModifyStatPoolValueEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

SuicideLvl4PlusPlusHackSpread : SuicideLvl4PlusPlusHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraSuicideHackBase : QuickHack.UltimateHack
{
	actionName = "ChimeraSuicide";
	targetActivePrereqs = 
	[
		"Prereqs.GunSuicidePrereq", "Prereqs.BossNoInterruptPrereq", "Prereqs.ChimeraNoQuickHackPrereq"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 12.5f;
		} : ConstantStatModifier
	];
	targetPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 180;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.SuicideHack";
	completionEffects += 
	[
		{
			statusEffect = "Chimera.ChimeraSuicide";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraSuicideLvl3Hack : ChimeraSuicideHackBase
{
	priority = 3.f;
}

ChimeraSuicideLvl4Hack : ChimeraSuicideHackBase
{
	priority = 4.f;
}

BossSuicideHackBase : QuickHack.UltimateHack
{
	actionName = "BossSuicide";
	targetActivePrereqs += 
	[
		"Prereqs.GunSuicidePrereq", "Prereqs.BossNoInterruptPrereq"
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.BossSuicide";
		} : StatusEffectAbsentPrereq
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 12.5f;
		} : ConstantStatModifier
	];
	targetPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.SuicideHack";
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossSuicide";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossSuicideLvl3Hack : BossSuicideHackBase
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossSuicideLvl4Hack : BossSuicideHackBase
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				statPoolUpdates = 
				[
					{
						statPoolType = "BaseStatPools.Health";
						statModifiers = 
						[
							{
								statType = "BaseStats.Health";
								modifierType = "Additive";
								value = 20f;
							} : ConstantStatModifier
						];
					}
				];
				usePercent = true;
			} : ModifyStatPoolValueEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossSuicideLvl4PlusPlusHack : BossSuicideHackBase
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				statPoolUpdates = 
				[
					{
						statPoolType = "BaseStatPools.Health";
						statModifiers = 
						[
							{
								statType = "BaseStats.Health";
								modifierType = "Additive";
								value = 30f;
							} : ConstantStatModifier
						];
					}
				];
				usePercent = true;
			} : ModifyStatPoolValueEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SuicideLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

SystemCollapseHackBase : QuickHack.UltimateHack
{
	actionName = "SystemCollapse";
	objectActionUI = "Interactions.SystemCollapseHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 28;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapseCooldown";
		} : StatusEffectAbsentPrereq
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				refStat = "BaseStats.SmasherBossHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = -100f;
				refObject = "Target";
			} : CombinedStatModifier
		];
	} : StatModifierGroup;
	targetActivePrereqs += 
	[
		"Prereqs.SystemCollapsePrereq", "Prereqs.IsNotImmuneToSystemCollapse", "Prereqs.BossNoInterruptPrereq"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapseCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.SystemCollapseLvl3Hack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				effectTags = 
				[
					"SystemCollapseMemoryCostReduction"
				];
			} : RemoveStatusEffectsEffector;
		}
	];
}

SystemCollapseLvl3Hack : SystemCollapseHackBase
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapse";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

SystemCollapseLvl3HackSpread : SystemCollapseLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

SystemCollapseLvl4Hack : SystemCollapseHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapse";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				effectorClassName = "SystemCollapseModifyRevealBarEffector";
				float value = -20;
			} : Effector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

SystemCollapseLvl4HackSpread : SystemCollapseLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

SystemCollapseLvl4PlusPlusHack : SystemCollapseHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapse";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				effectorClassName = "SystemCollapseModifyRevealBarEffector";
				float value = -40;
			} : Effector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.SystemCollapseLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

SystemCollapseLvl4PlusPlusHackSpread : SystemCollapseLvl4PlusPlusHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraSystemCollapseHackBase : SystemCollapseHackBase
{
	actionName = "ChimeraSystemCollapse";
	objectActionUI = "Interactions.SystemCollapseHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 60;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	targetActivePrereqs = 
	[
		"Prereqs.SystemCollapsePrereq", "Prereqs.IsNotImmuneToSystemCollapse", "Prereqs.BossNoInterruptPrereq"
	];
}

ChimeraSystemCollapseLvl3Hack : ChimeraSystemCollapseHackBase
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 55;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	priority = 3.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapse";
			recipient = "ObjectActionReference.Target";
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 12.5f;
		} : ConstantStatModifier
	];
}

ChimeraSystemCollapseLvl4Hack : ChimeraSystemCollapseHackBase
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 50;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	priority = 4.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 12.5f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SystemCollapse";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossSystemCollapseHackBase : SystemCollapseHackBase
{
	actionName = "BossSystemCollapse";
	objectActionUI = "Interactions.SystemCollapseHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 35;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	targetActivePrereqs += 
	[
		"Prereqs.SystemCollapsePrereq", "Prereqs.IsNotImmuneToSystemCollapse", "Prereqs.BossNoInterruptPrereq"
	];
}

BossSystemCollapseLvl3Hack : BossSystemCollapseHackBase
{
	priority = 3.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossSystemCollapse";
			recipient = "ObjectActionReference.Target";
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 5.0f;
		} : ConstantStatModifier
	];
}

BossSystemCollapseLvl4Hack : BossSystemCollapseHackBase
{
	priority = 4.f;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossSystemCollapse";
			recipient = "ObjectActionReference.Target";
		}
	];
}

GrenadeHackBase : QuickHack.UltimateHack
{
	actionName = "Grenade";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.GrenadeCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetActivePrereqs += 
	[
		"Prereqs.GrenadeExplodePrereq", "Prereqs.CanNpcUseGrenadesPrereq", "Prereqs.BossNoInterruptPrereq"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 24;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.GrenadeHack";
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.GrenadeCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.GrenadeLvl3Hack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}
	];
}

GrenadeLvl3Hack : GrenadeHackBase
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl3HackSpread";
			} : SpreadEffector;
		}, 
		{
			effectorToTrigger = 
			{
				statusEffects = 
				[
					"BaseStatusEffect.ReduceUltimateSuicideWithGrenadeCost"
				];
			} : RemoveStatusEffectsEffector;
			recipient = "ObjectActionReference.Instigator";
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithGrenade";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

GrenadeLvl3HackSpread : GrenadeLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

GrenadeLvl4Hack : GrenadeHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl4HackSpread";
			} : SpreadEffector;
		}, 
		{
			effectorToTrigger = 
			{
				statusEffects = 
				[
					"BaseStatusEffect.ReduceUltimateSuicideWithGrenadeCost", "BaseStatusEffect.ReduceUltimateSuicideWithGrenadeCostPlusPlus"
				];
			} : RemoveStatusEffectsEffector;
			recipient = "ObjectActionReference.Instigator";
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithGrenadeDummy";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				effectorClassName = "GrenadeLvl4HackEffector";
			} : Effector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

GrenadeLvl4HackSpread : GrenadeLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

GrenadeLvl4PlusPlusHack : GrenadeHackBase
{
	priority = 5.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl4HackSpread";
			} : SpreadEffector;
		}, 
		{
			effectorToTrigger = 
			{
				statusEffects = 
				[
					"BaseStatusEffect.ReduceUltimateSuicideWithGrenadeCost", "BaseStatusEffect.ReduceUltimateSuicideWithGrenadeCostPlusPlus"
				];
			} : RemoveStatusEffectsEffector;
			recipient = "ObjectActionReference.Instigator";
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SuicideWithGrenadeDummy";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				effectorClassName = "GrenadeLvl4HackEffector";
			} : Effector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.GrenadeLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

GrenadeTutorialHack : GrenadeLvl3Hack
{
	priority = 99.f;
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.TargetOfGrenadeDetonationTutorial";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraGrenadeHackBase : GrenadeHackBase
{
	actionName = "ChimeraGrenade";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 7;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	instigatorPrereqs = [];
	targetActivePrereqs = 
	[
		"Prereqs.GrenadeExplodePrereq", "Prereqs.CanNpcUseGrenadesPrereq", "Prereqs.ChimeraNoQuickHackPrereq", "Prereqs.BossNoInterruptPrereq", "Prereqs.CanChimeraGrenadeQuickhackedPrereq"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 5.f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WeakspotDestructionStatusEffect";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraGrenadeLvl3Hack : ChimeraGrenadeHackBase
{
	priority = 3.f;
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.GrenadeLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraGrenadeLvl4Hack : ChimeraGrenadeHackBase
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.GrenadeLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossGrenadeHackBase : GrenadeHackBase
{
	actionName = "BossGrenade";
	targetActivePrereqs = 
	[
		"Prereqs.CanBossGrenadeQuickhackedPrereq", "Prereqs.BossNoInterruptPrereq"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossGrenadeHackEffect";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossGrenadeLvl3Hack : BossGrenadeHackBase
{
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.f;
		} : ConstantStatModifier
	];
	priority = 3.f;
}

BossGrenadeLvl4Hack : BossGrenadeHackBase
{
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 6.f;
		} : ConstantStatModifier
	];
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
}

MadnessHackBase : QuickHack.UltimateHack
{
	actionName = "Madness";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.MadnessCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetActivePrereqs += 
	[
		"Prereqs.IsNotCyberpsycho"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 22;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.MadnessHack";
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MadnessCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.MadnessLvl3Hack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}
	];
}

MadnessLvl3Hack : MadnessHackBase
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Madness";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

MadnessLvl3HackSpread : MadnessLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

MadnessLvl4Hack : MadnessHackBase
{
	priority = 4.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MandessLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

MadnessLvl4HackSpread : MadnessLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

MadnessLvl4PlusPlusHack : MadnessHackBase
{
	priority = 5.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MandessLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

MadnessLvl4PlusPlusHackSpread : MadnessLvl4PlusPlusHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ChimeraMadnessHackBase : MadnessHackBase
{
	actionName = "ChimeraMadness";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 150;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	instigatorPrereqs = [];
	targetActivePrereqs = 
	[
		"Prereqs.IsNotExo", "Prereqs.IsNotCyberpsycho", "Prereqs.ChimeraNoQuickHackPrereq", "Prereqs.BossNoInterruptPrereq"
	];
	activationTime += 
	[
		{
			value = 5;
		} : UploadTimeModifier
	];
	completionEffects += 
	[
	];
}

ChimeraMadnessLvl3Hack : ChimeraMadnessHackBase
{
	priority = 3.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraMadness";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraMadnessLvl4Hack : ChimeraMadnessHackBase
{
	priority = 4.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.ChimeraMadness";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMadnessHackBase : MadnessHackBase
{
	actionName = "BossMadness";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 100;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			value = 5;
		} : UploadTimeModifier
	];
}

BossMadnessLvl3Hack : BossMadnessHackBase
{
	priority = 3.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 90;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMadness";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMadnessLvl4Hack : BossMadnessHackBase
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 80;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMadness";
			recipient = "ObjectActionReference.Target";
		}
	];
}

MadnessSetFriendlyBase : MadnessHackBase
{
	priority = 0.f;
	actionName = "MadnessFriendly";
}

MadnessSetFriendlyHack : MadnessSetFriendlyBase
{
	priority = 1.f;
	objectActionUI = "Interactions.SetFriendlyHack";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 4.0f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessSetFriendlyHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.SetFriendly";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.MadnessSetFriendlyHackSpread";
			} : SpreadEffector;
		}
	];
}

MadnessSetFriendlyHackSpread : MadnessLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

OverloadBaseHack : QuickHack.DamageHack
{
	actionName = "Overload";
	objectActionUI = "Interactions.EMPOverloadHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadCooldown";
		} : StatusEffectAbsentPrereq
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.OverloadHack";
				spreadCount = 0;
			} : Items.DamageHacksSpreadInitEffector;
		}
	];
}

OverloadHack : OverloadBaseHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overload";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadHackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadHackSpread : OverloadBaseHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overload";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverloadControlQuickhackExtension : ObjectActionEffect
{
	recipient = "ObjectActionReference.Target";
	effectorToTrigger = 
	{
		gameplayTags = 
		[
			"ControlQuickhacked"
		];
		change = 3.0f;
		isPercentage = false;
		listenConstantly = false;
	} : ModifyStatusEffectDurationEffector;
}

OverloadLvl1Hack : OverloadBaseHack
{
	priority = 1.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier1"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadLvl1HackSpread : OverloadLvl1Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension"
	];
}

OverloadDestroyWeakpoint : ObjectActionEffect
{
	recipient = "ObjectActionReference.Target";
	effectorToTrigger = 
	{
		prereqRecord = "BaseStatusEffect.OverloadWeakspotEnabled";
		statusEffect = "BaseStatusEffect.WeakspotDestructionStatusEffect";
	} : ApplyStatusEffectEffector;
}

OverloadDestroyWeakpointBoss : ObjectActionEffect
{
	recipient = "ObjectActionReference.Target";
	effectorToTrigger = 
	{
		prereqRecord = "BaseStatusEffect.OverloadWeakspotEnabledBoss";
		statusEffect = "BaseStatusEffect.WeakspotDestructionStatusEffect";
	} : ApplyStatusEffectEffector;
}

OverloadDestroyBreach : ObjectActionEffect
{
	recipient = "ObjectActionReference.Target";
	effectorToTrigger = 
	{
		prereqRecord = 
		{
			nestedPrereqs = 
			[
				"BaseStatusEffect.NotJustDestroyedWeakspotPrereq", "BaseStatusEffect.OverloadWeakspotEnabled"
			];
		} : Prereqs.ANDPrereq;
		effectorClassName = "DestroyBreachEffector";
	} : Effector;
}

OverloadLvl2Hack : OverloadBaseHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -0.5f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadLvl2HackSpread : OverloadLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach"
	];
}

OverloadLvl3Hack : OverloadBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -0.5f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadLvl3HackSpread : OverloadLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach"
	];
}

OverloadLvl4Hack : OverloadBaseHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -1.f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadLvl4HackSpread : OverloadLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach"
	];
}

OverloadLvl4PlusPlusHack : OverloadBaseHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -1.f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

OverloadLvl4PlusPlusHackSpread : OverloadLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpoint", "QuickHack.OverloadDestroyBreach"
	];
}

ChimeraOverloadBaseHack : OverloadBaseHack
{
	actionName = "ChimeraOverload";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier
	];
}

ChimeraOverloadHack : ChimeraOverloadBaseHack
{
	priority = 0.f;
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.Overload";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraOverloadLvl1Hack : ChimeraOverloadBaseHack
{
	priority = 1.f;
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.Overload";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraOverloadLvl2Hack : ChimeraOverloadBaseHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.OverloadLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraOverloadLvl3Hack : ChimeraOverloadBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.5f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.OverloadLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraOverloadLvl4Hack : ChimeraOverloadBaseHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.OverloadLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraOverloadLvl4PlusPlusHack : ChimeraOverloadBaseHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		"QuickHack.OverloadDestroyWeakpoint", {
			statusEffect = "BaseStatusEffect.OverloadLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossOverloadBaseHack : OverloadBaseHack
{
	actionName = "BossOverload";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.0f;
		} : ConstantStatModifier
	];
}

BossOverloadHack : BossOverloadBaseHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overload";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadHackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverloadLvl1Hack : BossOverloadBaseHack
{
	priority = 1.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier1"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverloadLvl2Hack : BossOverloadBaseHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpointBoss", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverloadLvl3Hack : BossOverloadBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpointBoss", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverloadLvl4Hack : BossOverloadBaseHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpointBoss", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverloadLvl4PlusPlusHack : BossOverloadBaseHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverloadLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			statusEffect = "BaseStatusEffect.OverloadEMP";
			recipient = "ObjectActionReference.Target";
		}, 
		"QuickHack.OverloadControlQuickhackExtension", "QuickHack.OverloadDestroyWeakpointBoss", "QuickHack.OverloadDestroyBreach", {
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverloadLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BrainMeltBaseHack : QuickHack.DamageHack
{
	actionName = "BrainMelt";
	objectActionUI = "Interactions.BrainMeltHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 10;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl2Hack";
				spreadCount = 0;
			} : Items.DamageHacksSpreadInitEffector;
		}
	];
}

BrainMeltLvl2Hack : BrainMeltBaseHack
{
	priority = 2.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BrainMeltLvl2HackSpread : BrainMeltLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BrainMeltLvl3Hack : BrainMeltBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BrainMeltLvl3HackSpread : BrainMeltLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BrainMeltLvl4Hack : BrainMeltBaseHack
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 16;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BrainMeltLvl4HackSpread : BrainMeltLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BrainMeltLvl4PlusPlusHack : BrainMeltBaseHack
{
	priority = 5.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 16;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BrainMeltLvl4PlusPlusHackSpread : BrainMeltLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBrainMeltBaseHack : BrainMeltBaseHack
{
	actionName = "ChimeraBrainMelt";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 7.0f;
		} : ConstantStatModifier
	];
}

ChimeraBrainMeltLvl2Hack : ChimeraBrainMeltBaseHack
{
	priority = 2.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl2HackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
}

ChimeraBrainMeltLvl3Hack : ChimeraBrainMeltBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl3HackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
}

ChimeraBrainMeltLvl4Hack : ChimeraBrainMeltBaseHack
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 14;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl4HackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
}

ChimeraBrainMeltLvl4PlusPlusHack : ChimeraBrainMeltBaseHack
{
	priority = 5.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 14;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl4PlusPlusHackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
}

BossBrainMeltBaseHack : BrainMeltBaseHack
{
	actionName = "BossBrainMelt";
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BrainMeltLvl2Hack";
				spreadCount = 0;
			} : Items.DamageHacksSpreadInitEffector;
		}
	];
}

BossBrainMeltLvl2Hack : BossBrainMeltBaseHack
{
	priority = 2.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBrainMeltLvl3Hack : BossBrainMeltBaseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBrainMeltLvl4Hack : BossBrainMeltBaseHack
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 16;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossBrainMeltLvl4PlusPlusHack : BossBrainMeltBaseHack
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 16;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BrainMeltLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BrainMeltLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BaseOverheatHack : QuickHack.DamageHack
{
	actionName = "Overheat";
	objectActionUI = "Interactions.OverheatHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.f;
		} : ConstantStatModifier
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatCooldown";
		} : StatusEffectAbsentPrereq
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.OverheatHack";
				spreadCount = 0;
			} : Items.DamageHacksSpreadInitEffector;
		}
	];
	targetActivePrereqs += 
	[
		"Prereqs.QuickHackBurningImmunePrereq"
	];
}

OverheatHack : BaseOverheatHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overheat";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatHackSpread : OverheatHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overheat";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverheatLvl1Hack : BaseOverheatHack
{
	priority = 1.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatLvl1HackSpread : OverheatLvl1Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel1";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverheatLvl2Hack : BaseOverheatHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatLvl2HackSpread : OverheatLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverheatLvl3Hack : BaseOverheatHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatLvl3HackSpread : OverheatLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverheatLvl4Hack : BaseOverheatHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier7"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatLvl4HackSpread : OverheatLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

OverheatLvl4PlusPlusHack : BaseOverheatHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier7"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

OverheatLvl4PlusPlusHackSpread : OverheatLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraBaseOverheatHack : BaseOverheatHack
{
	actionName = "ChimeraOverheat";
	objectActionUI = "Interactions.OverheatHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.0f;
		} : ConstantStatModifier
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatCooldown";
		} : StatusEffectAbsentPrereq
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.OverheatHack";
				spreadCount = 0;
			} : Items.DamageHacksSpreadInitEffector;
		}
	];
}

ChimeraOverheatHack : ChimeraBaseOverheatHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overheat";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraOverheatLvl1Hack : ChimeraBaseOverheatHack
{
	priority = 1.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraOverheatLvl2Hack : ChimeraBaseOverheatHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraOverheatLvl3Hack : ChimeraBaseOverheatHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraOverheatLvl4Hack : ChimeraBaseOverheatHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier6"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

ChimeraOverheatLvl4PlusPlusHack : ChimeraBaseOverheatHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier6"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.OverheatLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BossBaseOverheatHack : BaseOverheatHack
{
	actionName = "BossOverheat";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
}

BossOverheatHack : BossBaseOverheatHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Overheat";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatHackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverheatLvl1Hack : BossBaseOverheatHack
{
	priority = 1.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossOverheatLevel1";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl1HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverheatLvl2Hack : BossBaseOverheatHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossOverheatLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverheatLvl3Hack : BossBaseOverheatHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossOverheatLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverheatLvl4Hack : BossBaseOverheatHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier7"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossOverheatLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BossOverheatLvl4PlusPlusHack : BossBaseOverheatHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier7"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossOverheatLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.OverheatLvl4PlusPlusHackSpread";
			} : SpreadEffector;
		}
	];
}

BasePingHack : QuickHack.CovertHack
{
	actionName = "Ping";
	gameplayCategory = "ActionCategories.Ping";
	objectActionUI = "Interactions.PingHack";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 4;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	targetActivePrereqs += 
	[
		"Prereqs.PingPrereq"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier
	];
}

PingHack : BasePingHack
{
	priority = 1.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Ping";
			recipient = "ObjectActionReference.Target";
		}
	];
}

FreePingHack : PingHack
{
	costs = [];
}

PingLvl2Hack : BasePingHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.PingLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

PingLvl3Hack : BasePingHack
{
	priority = 3.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.PingLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

PingLvl4Hack : BasePingHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.PingLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

PingLvl4PlusPlusHack : BasePingHack
{
	priority = 5.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.PingLevel4PlusPlus";
			recipient = "ObjectActionReference.Target";
		}
	];
}

PingHackTutorial : BasePingHack
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 1;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.Ping";
			recipient = "ObjectActionReference.Target";
		}
	];
}

HeartAttackHack : QuickHack
{
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 8;
				} : MemoryMod
			];
		} : MemoryCost
	];
	objectActionUI = "Interactions.HeartattackHack";
	cooldown = 
	{
		duration = 30.f;
	} : Cooldown;
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.HeartAttack";
			recipient = "ObjectActionReference.Target";
		}
	];
}

UploadTimeModifier : ConstantStatModifier
{
	statType = "BaseStats.QuickHackUpload";
	modifierType = "Additive";
}

BaseCommsNoiseHack : QuickHack.CovertHack
{
	actionName = "CommsNoise";
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	targetActivePrereqs += 
	[
		"Prereqs.CommsNoisePrereq"
	];
	objectActionUI = "Interactions.CommsNoiseHack";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseCooldown";
		} : StatusEffectAbsentPrereq
	];
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseCooldown";
			recipient = "ObjectActionReference.Instigator";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.CommsNoiseHack";
				spreadCount = 0;
			} : SpreadInitEffector;
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.EnemyHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = 1f;
				refObject = "Target";
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				refStat = "BaseStats.SmasherBossHackUploadProgressBumpMultiplier";
				opSymbol = "*";
				value = -30f;
				refObject = "Target";
			} : CombinedStatModifier
		];
	} : StatModifierGroup;
}

CommsNoiseHack : BaseCommsNoiseHack
{
	priority = 1.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseHackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoise";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseHackSpread";
			} : SpreadEffector;
		}
	];
}

CommsNoiseHackSpread : CommsNoiseHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CommsNoiseLvl2Hack : BaseCommsNoiseHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl2HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseLevel2";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl2HackSpread";
			} : SpreadEffector;
		}
	];
}

CommsNoiseLvl2HackSpread : CommsNoiseLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CommsNoiseLvl3Hack : BaseCommsNoiseHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl3HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseLevel3";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl3HackSpread";
			} : SpreadEffector;
		}
	];
}

CommsNoiseLvl3HackSpread : CommsNoiseLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CommsNoiseLvl4Hack : BaseCommsNoiseHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier4"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

CommsNoiseLvl4HackSpread : CommsNoiseLvl4Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

CommsNoiseLvl4PlusPlusHack : BaseCommsNoiseHack
{
	priority = 5.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 2;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsNoiseLevel4";
			recipient = "ObjectActionReference.Target";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.CommsNoiseLvl4HackSpread";
			} : SpreadEffector;
		}
	];
}

BaseCommsCallInHack : QuickHack.CovertHack
{
	actionName = "CommsCallIn";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.CallInCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetActivePrereqs += 
	[
		"Prereqs.NearestNavigableSquadmateInCommsCallDistanceFoundPrereq"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 2.0f;
		} : ConstantStatModifier
	];
	objectActionUI = "Interactions.CommsCallInHack";
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CallInCooldown";
			recipient = "ObjectActionReference.Instigator";
		}
	];
}

CommsCallInLvl1Hack : BaseCommsCallInHack
{
	priority = 1.f;
	targetActivePrereqs += 
	[
		"Prereqs.TargetNotInCombatActionPrereq"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsCallInLvl1";
			recipient = "ObjectActionReference.Target";
		}
	];
}

CommsCallInLvl2Hack : BaseCommsCallInHack
{
	priority = 2.f;
	targetActivePrereqs += 
	[
		"Prereqs.TargetNotInCombatActionPrereq"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsCallInLvl2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

CommsCallInLvl3Hack : BaseCommsCallInHack
{
	priority = 3.f;
	targetActivePrereqs += 
	[
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 4;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsCallInLvl3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

CommsCallInLvl4Hack : BaseCommsCallInHack
{
	priority = 4.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 6;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsCallInLvl4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

CommsCallInLvl4PlusPlusHack : BaseCommsCallInHack
{
	priority = 5.f;
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.CommsCallInLvl4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

CommsCallInTutorialHack : CommsCallInLvl1Hack
{
	priority = 99.f;
}

BaseWhistleHack : QuickHack.CovertHack
{
	actionName = "Whistle";
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleCooldown";
		} : StatusEffectAbsentPrereq
	];
	targetActivePrereqs += 
	[
		"Prereqs.NPCTypeChimeraPrereq"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 2;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 0.3f;
		} : ConstantStatModifier
	];
	objectActionUI = "Interactions.WhistleHack";
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleCooldown";
			recipient = "ObjectActionReference.Instigator";
		}
	];
}

WhistleLvl0Hack : BaseWhistleHack
{
	priority = 0.f;
	targetActivePrereqs += 
	[
		"Prereqs.WhistleActionPrereq", "Prereqs.TargetNotInCombatActionPrereq", "Prereqs.PlayerReachableActionPrereq", "Prereqs.MinDistanceToPlayerWithinRMAActionPrereqOutOfCombat"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleLvl0";
			recipient = "ObjectActionReference.Target";
		}
	];
}

WhistleLvl1Hack : BaseWhistleHack
{
	priority = 1.f;
	targetActivePrereqs += 
	[
		"Prereqs.WhistleActionPrereq", "Prereqs.TargetNotInCombatActionPrereq", "Prereqs.PlayerReachableActionPrereq", "Prereqs.MinDistanceToPlayerWithinRMAActionPrereqOutOfCombat"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleLvl1";
			recipient = "ObjectActionReference.Target";
		}
	];
}

WhistleLvl2Hack : BaseWhistleHack
{
	priority = 2.f;
	targetActivePrereqs += 
	[
		"Prereqs.WhistleActionPrereq", "Prereqs.TargetNotInCombatActionPrereq", "Prereqs.PlayerOrCameraReachableActionPrereq", "Prereqs.MinDistanceToPlayerOrCameraWithinRMAActionPrereqOutOfCombat"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleLvl2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

WhistleLvl3Hack : BaseWhistleHack
{
	priority = 3.f;
	targetActivePrereqs += 
	[
		"Prereqs.WhistleActionPrereqOutOfCombat", "Prereqs.PlayerOrCameraReachableActionPrereq", "Prereqs.MinDistanceToPlayerOrCameraWithinRMAActionPrereqOutOfCombat"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 4;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.WhistleLvl3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

WhistleLvl4Hack : BaseWhistleHack
{
	priority = 4.f;
	targetActivePrereqs += 
	[
		"Prereqs.PlayerOrCameraReachableActionPrereq", "Prereqs.MinDistanceToPlayerOrCameraWithinRMAActionPrereqOutOfCombat"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 4;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			effectorToTrigger = 
			{
				prereqRecord = "Prereqs.AlwaysTruePrereq";
				effectorClassName = "ApplyLegendaryWhistleEffector";
			} : Effector;
			recipient = "ObjectActionReference.Target";
		}
	];
}

WhistleLvl4PlusPlusHack : BaseWhistleHack
{
	priority = 5.f;
	targetActivePrereqs += 
	[
		"Prereqs.PlayerOrCameraReachableActionPrereq", "Prereqs.MinDistanceToPlayerOrCameraWithinRMAActionPrereqOutOfCombat"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 3;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	completionEffects += 
	[
		{
			effectorToTrigger = 
			{
				prereqRecord = "Prereqs.AlwaysTruePrereq";
				effectorClassName = "ApplyLegendaryWhistleEffector";
			} : Effector;
			recipient = "ObjectActionReference.Target";
		}
	];
}

BaseMemoryWipeHack : QuickHack.CovertHack
{
	actionName = "MemoryWipe";
	targetActivePrereqs += 
	[
		"Prereqs.MemoryWipeImmunityStatusEffect", "Prereqs.MemoryWipeChimeraPrereq", "Prereqs.IsNotImmuneToMemoryWipe"
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeCooldown";
		} : StatusEffectAbsentPrereq
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 8;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
	objectActionUI = "Interactions.MemoryWipeHack";
	startEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeCooldown";
			recipient = "ObjectActionReference.Instigator";
		}
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = -25;
			} : ConstantStatModifier
		];
	} : StatModifierGroup;
}

MemoryWipeLvl2Hack : BaseMemoryWipeHack
{
	priority = 2.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

MemoryWipeLvl3Hack : BaseMemoryWipeHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = -35;
			} : ConstantStatModifier
		];
	} : StatModifierGroup;
}

MemoryWipeLvl4Hack : BaseMemoryWipeHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.5f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = -35;
			} : ConstantStatModifier
		];
	} : StatModifierGroup;
}

MemoryWipeLvl4PlusPlusHack : BaseMemoryWipeHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
	awarenessCost = 
	{
		statModifiers += 
		[
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Multiplier";
				refStat = "BaseStats.PlayerOnRevealHackProgressMultiplier";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier, 
			{
				statType = "BaseStats.OnRevealHackProgressIncrement";
				modifierType = "Additive";
				value = -35;
			} : ConstantStatModifier
		];
	} : StatModifierGroup;
}

ChimeraBaseMemoryWipeHack : BaseMemoryWipeHack
{
	actionName = "ChimeraMemoryWipe";
}

ChimeraMemoryWipeLvl2Hack : ChimeraBaseMemoryWipeHack
{
	priority = 2.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraMemoryWipeLvl3Hack : ChimeraBaseMemoryWipeHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraMemoryWipeLvl4Hack : ChimeraBaseMemoryWipeHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.0f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ChimeraMemoryWipeLvl4PlusPlusHack : ChimeraBaseMemoryWipeHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.MemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMemoryWipeHackBase : BaseMemoryWipeHack
{
	actionName = "BossMemoryWipe";
	targetActivePrereqs += 
	[
		"Prereqs.BossNoInterruptPrereq"
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 25;
				} : MemoryMod
			];
		} : MemoryCostCovert
	];
}

BossMemoryWipeLvl2Hack : BossMemoryWipeHackBase
{
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.f;
		} : ConstantStatModifier
	];
	priority = 2.f;
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMemoryWipeLevel2";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMemoryWipeLvl3Hack : BossMemoryWipeHackBase
{
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 6.f;
		} : ConstantStatModifier
	];
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier3"
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMemoryWipeLevel3";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMemoryWipeLvl4Hack : BossMemoryWipeHackBase
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 4.f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BossMemoryWipeLvl4PlusPlusHack : BossMemoryWipeHackBase
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseLegendaryMemoryWipe"
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.BossMemoryWipeLevel4";
			recipient = "ObjectActionReference.Target";
		}
	];
}

BaseContagionHack : QuickHack.DamageHack
{
	actionName = "Contagion";
	targetActivePrereqs += 
	[
		"Prereqs.IsNotMechanical"
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.ContagionCooldown";
		} : StatusEffectAbsentPrereq
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 5;
				} : MemoryMod
			];
		} : MemoryCostDamage
	];
	objectActionUI = "Interactions.ContagionHack";
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.ContagionCooldown";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.ContagionHackSpread";
			} : SpreadInitEffector;
		}
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3.f;
		} : ConstantStatModifier
	];
}

ContagionHack : BaseContagionHack
{
	priority = 0.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionHackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionHackSpread";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoison";
		}
	];
}

ContagionHackSpread : ContagionHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ContagionLvl2Hack : BaseContagionHack
{
	priority = 2.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier2"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl2HackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl2HackSpread";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonLvl2";
		}
	];
}

ContagionLvl2HackSpread : ContagionLvl2Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ContagionLvl3Hack : BaseContagionHack
{
	priority = 3.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier5"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl3HackSpread";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl3HackSpread";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonLvl3";
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -1.f;
		} : ConstantStatModifier
	];
}

ContagionLvl3HackSpread : ContagionLvl3Hack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	awarenessCost = 
	{
	};
}

ContagionLvl4Hack : BaseContagionHack
{
	priority = 4.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce2";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce2";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonLvl4";
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -1.f;
		} : ConstantStatModifier
	];
}

ContagionLvl4HackBounce2 : BaseContagionHack
{
	instigatorPrereqs = [];
	costs = [];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce3";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce3";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonBounce2";
		}
	];
}

ContagionLvl4HackBounce3 : BaseContagionHack
{
	instigatorPrereqs = [];
	costs = [];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce4";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce4";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonBounce3";
		}
	];
}

ContagionLvl4HackBounce4 : BaseContagionHack
{
	instigatorPrereqs = [];
	costs = [];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce5";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce5";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonBounce4";
		}
	];
}

ContagionLvl4HackBounce5 : BaseContagionHack
{
	instigatorPrereqs = [];
	startEffects = [];
	costs = [];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonBounce4";
		}
	];
}

ContagionLvl4PlusPlusHack : BaseContagionHack
{
	priority = 5.f;
	costs += 
	[
		"QuickHack.MemoryIncreaseTier8"
	];
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce2";
				spreadToAllTargetsInTheArea = true;
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.ContagionLvl4HackBounce2";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.ContagionPoisonLvl4PlusPlus";
		}
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -1.f;
		} : ConstantStatModifier
	];
}

BaseBlackWallHack : QuickHack.UltimateHack
{
	actionName = "BlackWall";
	targetActivePrereqs += 
	[
		"Prereqs.BlackwallPrereq"
	];
	instigatorPrereqs += 
	[
		{
			statusEffect = "BaseStatusEffect.BlackwallCooldown";
		} : StatusEffectAbsentPrereq
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 12;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	objectActionUI = "Interactions.BlackwallHack";
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackwallCooldown";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackwallHack_FactHelper";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				objectAction = "QuickHack.BlackWallHack";
				spreadDistance = 20;
			} : SpreadInitEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			effectorToTrigger = 
			{
				statusEffects = 
				[
					"BaseStatusEffect.BlackWallUploadActive"
				];
			} : RemoveStatusEffectsEffector;
		}
	];
	activationTime = 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 9.0f;
		} : ConstantStatModifier
	];
	float memoryCostReductionInOverclock = 0.725f;
}

BlackWallHack : BaseBlackWallHack
{
	priority = 3.f;
	startEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce2";
			} : SpreadEffector;
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce2";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BlackwallHackBounce2 : BaseBlackWallHack
{
	instigatorPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 18;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -3.5f;
		} : ConstantStatModifier
	];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce3";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce3";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BlackwallHackBounce3 : BaseBlackWallHack
{
	instigatorPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 24;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -6.0f;
		} : ConstantStatModifier
	];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce4";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce4";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BlackwallHackBounce4 : BaseBlackWallHack
{
	instigatorPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 30;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -7.5f;
		} : ConstantStatModifier
	];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce5";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce5";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BlackwallHackBounce5 : BaseBlackWallHack
{
	instigatorPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 36;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -8.0f;
		} : ConstantStatModifier
	];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Equal";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce6";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce6";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BlackwallHackBounce6 : BaseBlackWallHack
{
	instigatorPrereqs = [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 42;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = -8.5f;
		} : ConstantStatModifier
	];
	startEffects = 
	[
		{
			recipient = "ObjectActionReference.Target";
			statusEffect = "BaseStatusEffect.HauntedQuickHackBlackwallUpload";
		}, 
		{
			recipient = "ObjectActionReference.Instigator";
			statusEffect = "BaseStatusEffect.BlackWallUploadActive";
		}
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.BossBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

BossBaseBlackWallHack : BaseBlackWallHack
{
	actionName = "BossBlackWall";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.0f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
}

BossBlackWallHack : BlackWallHack
{
	actionName = "BossBlackWall";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.0f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 110;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
}

ChimeraBaseBlackWallHack : BaseBlackWallHack
{
	actionName = "ChimeraBlackWall";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.0f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 180;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
}

ChimeraBlackWallHack : BlackWallHack
{
	actionName = "ChimeraBlackWall";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 8.0f;
		} : ConstantStatModifier
	];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 180;
				} : MemoryMod
			];
		} : MemoryCostUltimate
	];
	completionEffects += 
	[
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					statType = "SpreadQuickhacksOnStart";
					valueToCheck = 1;
					comparisonType = "Less";
					objectToCheck = "Player";
				} : StatPrereq;
				objectAction = "QuickHack.BlackwallHackBounce2";
			} : SpreadEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
							invert = true;
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
							invert = true;
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 0;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ANDPrereq;
				statusEffect = "BaseStatusEffect.BaseBlackWallHackEffect";
			} : ApplyStatusEffectEffector;
		}, 
		{
			recipient = "ObjectActionReference.Target";
			effectorToTrigger = 
			{
				prereqRecord = 
				{
					nestedPrereqs = 
					[
						{
							rarity = "Boss";
						} : NPCRarityPrereq, 
						{
							rarity = "MaxTac";
						} : NPCRarityPrereq, 
						{
							statType = "IsExo";
							valueToCheck = 1;
							comparisonType = "Equal";
						} : StatPrereq
					];
				} : ORPrereq;
				statusEffect = "BaseStatusEffect.ChimeraBlackWallHack";
			} : ApplyStatusEffectEffector;
		}
	];
}

AndroidTurnOnHack : QuickHack.UltimateHack
{
	targetPrereqs += [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 1;
				} : MemoryMod
			];
		} : DeviceMemoryCost
	];
	objectActionUI = "Interactions.AndroidTurnOn";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.AndroidTurnOn";
			recipient = "ObjectActionReference.Target";
		}
	];
}

AndroidTurnOffHack : QuickHack.UltimateHack
{
	targetPrereqs += [];
	costs = 
	[
		{
			costMods += 
			[
				{
					value = 1;
				} : MemoryMod
			];
		} : DeviceMemoryCost
	];
	objectActionUI = "Interactions.AndroidTurnOff";
	activationTime += 
	[
		{
			statType = "BaseStats.QuickHackUpload";
			modifierType = "Additive";
			value = 3;
		} : ConstantStatModifier
	];
	completionEffects += 
	[
		{
			statusEffect = "BaseStatusEffect.AndroidTurnOff";
			recipient = "ObjectActionReference.Target";
		}
	];
}

ModifyHackUploadTimeOnMechanicals : ApplyStatGroupEffector
{
	prereqRecord = "Perks.IsMechanical";
	statGroup = 
	{
		statModifiers = 
		[
			{
				statType = "BaseStats.UploadQuickHackMod";
				modifierType = "Additive";
				refObject = "Player";
				refStat = "BaseStats.UploadQuickHackMod";
				opSymbol = "*";
				value = 1f;
			} : CombinedStatModifier
		];
	};
}

