package Perks
using RTDB, Prereqs, BaseStats

BrawlingProficiencyPrereq : StatPrereq
{
	float valueToCheck = 0;
	CName statType = "Strength";
	CName comparisonType = "GreaterOrEqual";
}

BrawlingMasteryPrereq : StatPrereq
{
	float valueToCheck = 0;
	CName statType = "Brawling";
	CName comparisonType = "GreaterOrEqual";
}

Brawling_Area_01 : PerkArea
{
	enumName = "Brawling_Area_01";
	requirement = 
	{
		valueToCheck = 0;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_01_Perk_1", "Perks.Brawling_Area_01_Perk_2"
	];
	maxLevel = 3;
}

Brawling_Area_02 : PerkArea
{
	enumName = "Brawling_Area_02";
	requirement = 
	{
		valueToCheck = 4;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_02_Perk_1", "Perks.Brawling_Area_02_Perk_2"
	];
	maxLevel = 2;
}

Brawling_Area_03 : PerkArea
{
	enumName = "Brawling_Area_03";
	requirement = 
	{
		valueToCheck = 6;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_03_Perk_1", "Perks.Brawling_Area_03_Perk_2"
	];
	maxLevel = 2;
}

Brawling_Area_04 : PerkArea
{
	enumName = "Brawling_Area_04";
	requirement = 
	{
		valueToCheck = 8;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_04_Perk_1", "Perks.Brawling_Area_04_Perk_2"
	];
	maxLevel = 1;
}

Brawling_Area_05 : PerkArea
{
	enumName = "Brawling_Area_05";
	requirement = 
	{
		valueToCheck = 10;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_05_Perk_1", "Perks.Brawling_Area_05_Perk_2"
	];
	maxLevel = 3;
}

Brawling_Area_06 : PerkArea
{
	enumName = "Brawling_Area_06";
	requirement = 
	{
		valueToCheck = 12;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_06_Perk_1", "Perks.Brawling_Area_06_Perk_2"
	];
	maxLevel = 2;
}

Brawling_Area_07 : PerkArea
{
	enumName = "Brawling_Area_07";
	requirement = 
	{
		valueToCheck = 15;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_07_Perk_1", "Perks.Brawling_Area_07_Perk_2"
	];
	maxLevel = 2;
}

Brawling_Area_08 : PerkArea
{
	enumName = "Brawling_Area_08";
	requirement = 
	{
		valueToCheck = 18;
	} : BrawlingProficiencyPrereq;
	masteryLevel = 
	{
		valueToCheck = 0;
	} : BrawlingMasteryPrereq;
	perks = 
	[
		"Perks.Brawling_Area_08_Perk_1", "Perks.Brawling_Area_08_Perk_2"
	];
	maxLevel = 3;
}

Brawling_Area_01_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53936";
	loc_desc_key = "LocKey#53939";
	perkIcon = "UIIcon.Brawling_Area_01_Perk_1";
	enumName = "Brawling_Area_01_Perk_1";
	levels = [];
}

Brawling_Area_01_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53940";
	loc_desc_key = "LocKey#53941";
	perkIcon = "UIIcon.Brawling_Area_01_Perk_2";
	enumName = "Brawling_Area_01_Perk_2";
	levels = [];
}

Brawling_Area_02_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53942";
	loc_desc_key = "LocKey#53943";
	perkIcon = "UIIcon.Brawling_Area_02_Perk_1";
	enumName = "Brawling_Area_02_Perk_1";
	levels = [];
}

Brawling_Area_02_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53944";
	loc_desc_key = "LocKey#53945";
	perkIcon = "UIIcon.Brawling_Area_02_Perk_2";
	enumName = "Brawling_Area_02_Perk_2";
	levels = [];
}

Brawling_Area_03_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53947";
	loc_desc_key = "LocKey#53946";
	perkIcon = "UIIcon.Brawling_Area_03_Perk_1";
	enumName = "Brawling_Area_03_Perk_1";
	levels = [];
}

Brawling_Area_03_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53949";
	loc_desc_key = "LocKey#53948";
	perkIcon = "UIIcon.Brawling_Area_03_Perk_2";
	enumName = "Brawling_Area_03_Perk_2";
	levels = [];
}

Brawling_Area_04_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53950";
	loc_desc_key = "LocKey#53951";
	perkIcon = "UIIcon.Brawling_Area_04_Perk_1";
	enumName = "Brawling_Area_04_Perk_1";
	levels = [];
}

Brawling_Area_04_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53953";
	loc_desc_key = "LocKey#53952";
	perkIcon = "UIIcon.Brawling_Area_04_Perk_2";
	enumName = "Brawling_Area_04_Perk_2";
	levels = [];
}

Brawling_Area_05_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53955";
	loc_desc_key = "LocKey#53954";
	perkIcon = "UIIcon.Brawling_Area_05_Perk_1";
	enumName = "Brawling_Area_05_Perk_1";
	levels = [];
}

Brawling_Area_05_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53957";
	loc_desc_key = "LocKey#53956";
	perkIcon = "UIIcon.Brawling_Area_05_Perk_2";
	utility = "Perks.TriggeredUtility";
	enumName = "Brawling_Area_05_Perk_2";
	levels = [];
}

Brawling_Area_06_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53959";
	loc_desc_key = "LocKey#53958";
	perkIcon = "UIIcon.Brawling_Area_06_Perk_1";
	utility = "Perks.PassiveUtility";
	enumName = "Brawling_Area_06_Perk_1";
	levels = [];
}

Brawling_Area_06_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53961";
	loc_desc_key = "LocKey#53960";
	perkIcon = "UIIcon.Brawling_Area_06_Perk_2";
	utility = "Perks.TriggeredUtility";
	enumName = "Brawling_Area_06_Perk_2";
	levels = [];
}

Brawling_Area_07_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53963";
	loc_desc_key = "LocKey#53962";
	perkIcon = "UIIcon.Brawling_Area_07_Perk_1";
	enumName = "Brawling_Area_07_Perk_1";
	levels = [];
}

Brawling_Area_07_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53965";
	loc_desc_key = "LocKey#53964";
	perkIcon = "UIIcon.Brawling_Area_07_Perk_2";
	enumName = "Brawling_Area_07_Perk_2";
	levels = [];
}

Brawling_Area_08_Perk_1 : BrawlingPerk
{
	loc_name_key = "LocKey#53967";
	loc_desc_key = "LocKey#53966";
	perkIcon = "UIIcon.Brawling_Area_08_Perk_1";
	utility = "Perks.TriggeredUtility";
	enumName = "Brawling_Area_08_Perk_1";
	levels = [];
}

Brawling_Area_08_Perk_2 : BrawlingPerk
{
	loc_name_key = "LocKey#53969";
	loc_desc_key = "LocKey#53968";
	perkIcon = "UIIcon.Brawling_Area_08_Perk_2";
	utility = "Perks.ActiveUtility";
	enumName = "Brawling_Area_08_Perk_2";
	levels = [];
}

ProgressiveBrawlingPerkPrereq : MultiPrereq
{
	CName prereqClassName = "gameMultiPrereq";
	CName aggregationType = "OR";
	fk< IPrereq >[] nestedPrereqs = 
	[
		{
			itemType = "ItemType.Wea_Fists";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Cyb_StrongArms";
		} : Prereqs.WeaponHeldByTypePrereq
	];
}

NonProgressiveBrawlingPerkPrereq : MultiPrereq
{
	CName prereqClassName = "gameMultiPrereq";
	CName aggregationType = "OR";
	fk< IPrereq >[] nestedPrereqs = 
	[
		{
			itemType = "ItemType.Wea_OneHandedClub";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_TwoHandedClub";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_Hammer";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Cyb_NanoWires";
		} : Prereqs.WeaponHeldByTypePrereq
	];
}

BrawlingPerkPrereq : MultiPrereq
{
	CName prereqClassName = "gameMultiPrereq";
	CName aggregationType = "OR";
	fk< IPrereq >[] nestedPrereqs = 
	[
		{
			itemType = "ItemType.Wea_Fists";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Cyb_StrongArms";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_OneHandedClub";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_TwoHandedClub";
		} : Prereqs.WeaponHeldByTypePrereq, 
		{
			itemType = "ItemType.Wea_Hammer";
		} : Prereqs.WeaponHeldByTypePrereq
	];
}

StrongAttackKillPrereq : MultiPrereq
{
	CName prereqClassName = "gameMultiPrereq";
	CName aggregationType = "AND";
	fk< IPrereq >[] nestedPrereqs = 
	[
		"Perks.IsTargetKilled", "Perks.IsHitStrongAttack"
	];
}

IsHitTargetStunnedAndAlivePrereq : ProcessHitTriggered
{
	conditions = 
	[
		{
			statusEffect = "Stunned";
			checkType = "CheckType.Type";
		} : StatusEffectPresentHitPrereqCondition, 
		{
			statusEffect = "Defeated";
			checkType = "CheckType.Type";
			invert = true;
		} : StatusEffectPresentHitPrereqCondition, 
		{
			statusEffect = "Unconscious";
			checkType = "CheckType.Type";
			invert = true;
		} : StatusEffectPresentHitPrereqCondition, 
		{
			float valueToCheck = 0f;
			CName objectToCheck = "Target";
			string statPoolToCompare = "Health";
			string comparisonType = "NotEqual";
		} : StatPoolHitPrereqCondition
	];
}

HitReceivedWhileBlockingPrereq : HitPrereq
{
	prereqClassName = "HitFlagPrereq";
	string hitFlag = "WasBlocked";
	bool isSynchronous = true;
	string callbackType = "HitTriggered";
	string pipelineStage = "PostProcess";
	string pipelineType = "Damage";
}

