package Character
using RTDB, BaseStats, ArchetypeData, ArchetypeType, Effectors, Prereqs

we_ep1_01_mini_boss_1st_phase : kurtz_soldier2_shotgun2_shotgun_ma_rare
{
	tags += 
	[
		"MiniBoss"
	];
	quest = "NPCQuestAffiliation.MinorActivity";
	entityTemplatePath = "ep1\openworld\world_encounters\we_ep1_01\characters\we_ep1_01_boss_1st_phase_kurtz_army.ent";
	displayName = "LocKey#83277";
	fullDisplayName = "LocKey#83278";
	skipDisplayArchetype = true;
	rarity = "NPCRarity.Boss";
	priority = "SpawnableObjectPriority.Quest";
	savable = true;
	uiNameplate = "UINameplate.QuestSettings";
	baseAttitudeGroup = "we_ep1_01_kurtz";
	bossHealthBarThresholds = 
	[
		55.0f
	];
	bountyDrawTable = 
	{
		bountyChoices = 
		[
			{
				bountySetter = "Factions.Barghest";
				transgressions = 
				[
					{
						localizedDescription = "LocKey#92496";
					}
				];
			}
		];
	};
	primaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.Preset_Tactician_Krausser";
				equipSlot = "AttachmentSlots.WeaponRight";
				onBodySlot = "AttachmentSlots.ItemSlotGenericRanged";
				equipCondition = 
				[
					"WeaponConditions.BaseRangedPrimaryWeaponEquipCondition"
				];
				unequipCondition = 
				[
					"WeaponConditions.BaseRangedPrimaryWeaponUnequipCondition"
				];
			} : NPCEquipmentItem
		];
	};
	archetypeData = 
	{
		type = "ArchetypeType.ShotgunnerT3";
		abilityGroups = 
		[
			{
				abilities = 
				[
					"Ability.IsShotgunnerArchetype", "Ability.IsTier3Archetype", "Ability.HasSubdermalArmorMedium", "Ability.CanUseCombatStims", "Ability.CanCatchUp"
				];
			}
		];
	} : ArchetypeData.ShotgunnerT3;
	effectors += 
	[
		{
			prereqRecord = 
			{
				valueToCheck = 
				[
					{
						statType = "BaseStats.Health";
						modifierType = "Additive";
						value = 55.0f;
					} : ConstantStatModifier
				];
				statPoolType = "Health";
				comparisonType = "LessOrEqual";
			} : StatPoolPrereq;
			attackRecord = "Attacks.FluffEMPExplosion";
		} : SimpleTriggerAttackEffect
	];
	statModifierGroups += 
	[
		"Character.we_ep1_01_mini_boss_1st_phase_ModGroup", "Character.we_ep1_01_mini_boss_1st_phase_Primary_Stat_ModGroup", "Character.Boss_Poise_Primary_Stat_ModGroup"
	];
}

we_ep1_01_mini_boss_1st_phase_ModGroup : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 1.2;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundHeadDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundLArmDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundRArmDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundLLegDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundRLegDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismHeadDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismLArmDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismRArmDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismLLegDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismRLegDamageThreshold";
			modifierType = "Multiplier";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MaxPercentDamageTakenPerHit";
			modifierType = "Additive";
			value = 49;
		} : ConstantStatModifier
	];
}

we_ep1_01_mini_boss_1st_phase_Primary_Stat_ModGroup : NPC_Base_Curves
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Weight";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdInCover";
			modifierType = "Additive";
			value = 250;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdInCover";
			modifierType = "Additive";
			value = 250;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdImpulse";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdImpulse";
			modifierType = "Additive";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThresholdImpulse";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedHeadDamageThreshold";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedLArmDamageThreshold";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedRArmDamageThreshold";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedLLegDamageThreshold";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedRLegDamageThreshold";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanDash";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpact";
			modifierType = "Additive";
			value = 2.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpactMelee";
			modifierType = "Additive";
			value = 2.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStagger";
			modifierType = "Additive";
			value = 2.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStaggerMelee";
			modifierType = "Additive";
			value = 2.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterDefeated";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterPain";
			modifierType = "Additive";
			value = 2.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterKnockdown";
			modifierType = "Additive";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AudioStimRangeMultiplier";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.VisualStimRangeMultiplier";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Visibility";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitReactionDamageHealthFactor";
			modifierType = "Additive";
			value = 1.0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Hearing";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.UnconsciousImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TBHsBaseSourceMultiplierCoefficient";
			modifierType = "Additive";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Poise";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			opSymbol = "*";
			value = 0.2f;
		} : CombinedStatModifier
	];
}

we_ep1_01_mini_boss_2nd_phase : kurtz_exo
{
	quest = "NPCQuestAffiliation.MinorActivity";
	entityTemplatePath = "ep1\openworld\world_encounters\we_ep1_01\characters\we_ep1_01_boss_2nd_phase_exo.ent";
	displayName = "LocKey#83277";
	fullDisplayName = "LocKey#83278";
	skipDisplayArchetype = true;
	rarity = "NPCRarity.Boss";
	reactionPreset = "ReactionPresets.Ganger_Aggressive";
	baseAttitudeGroup = "we_ep1_01_kurtz";
	priority = "SpawnableObjectPriority.Quest";
	savable = true;
	uiNameplate = "UINameplate.QuestSettings";
	bossHealthBarThresholds = 
	[
		50.0f
	];
	lootDrop = "LootTables.we_ep1_01_boss_loot";
	dropsControlledLoot = false;
	string relaxedSensesPreset = "Relaxed";
	string alertedSensesPreset = "Alerted";
	string combatSensesPreset = "Combat";
	bountyDrawTable = 
	{
		bountyChoices = 
		[
			{
				bountySetter = "Factions.Barghest";
				transgressions = 
				[
					{
						localizedDescription = "LocKey#92496";
					}
				];
				reward = "QuestRewards.sts_std_rcr_01_completion";
			}
		];
	};
	statModifiers += 
	[
		{
			statType = "BaseStats.WoundLArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundRArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismLArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismRArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier
	];
	statModifierGroups += 
	[
		"Character.we_ep1_01_mini_boss_2nd_phase_Primary_Stat_ModGroup", "Character.we_ep1_01_mini_boss_2nd_phase_stats", "Character.StunImunityModifierGroup", "Character.Boss_Poise_Primary_Stat_ModGroup"
	];
}

we_ep1_01_mini_boss_2nd_phase_stats : NPC_Base_Curves
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 2.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BlindResistance";
			modifierType = "Additive";
			value = 0.8;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PersonalityAggressive";
			modifierType = "Additive";
			value = 100.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpact";
			modifierType = "Additive";
			value = 15;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpactMelee";
			modifierType = "Additive";
			value = 15;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStagger";
			modifierType = "Additive";
			value = 15;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStaggerMelee";
			modifierType = "Additive";
			value = 15;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Poise";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			opSymbol = "*";
			value = -0.66f;
		} : CombinedStatModifier
	];
}

we_ep1_01_mini_boss_2nd_phase_Primary_Stat_ModGroup : NPC_Base_Curves
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Weight";
			modifierType = "Additive";
			value = 200;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricResistance";
			modifierType = "Additive";
			value = -20;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalResistance";
			modifierType = "Additive";
			value = 50;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThreshold";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdInCover";
			modifierType = "Additive";
			value = 500;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdInCover";
			modifierType = "Additive";
			value = 500;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdImpulse";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdImpulse";
			modifierType = "Additive";
			value = 20;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThresholdImpulse";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedHeadDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedLArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedRArmDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedLLegDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DefeatedRLegDamageThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitReactionFactor";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitWoundsFactor";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitDismembermentFactor";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanDash";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpact";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpactMelee";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStagger";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStaggerMelee";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterDefeated";
			modifierType = "Additive";
			value = 2;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterPain";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterKnockdown";
			modifierType = "Additive";
			value = 20;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AudioStimRangeMultiplier";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.VisualStimRangeMultiplier";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Visibility";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitReactionDamageHealthFactor";
			modifierType = "Additive";
			value = 2.0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Hearing";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TBHsBaseSourceMultiplierCoefficient";
			modifierType = "Additive";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TBHsVisibilityCooldown";
			modifierType = "Additive";
			value = 1.9f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Poise";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			opSymbol = "*";
			value = 0.2f;
		} : CombinedStatModifier, 
		"Character.BaseAccuracy"
	];
}

we_ep1_01_civilian : Crowd_NPC_Base
{
	entityTemplatePath = "ep1\characters\entities\citizen\citizen__ep1_combat_zone_stacks_ma.ent";
	savable = true;
}

we_ep1_01_civilian_female : Crowd_NPC_Base
{
	entityTemplatePath = "ep1\characters\entities\citizen\citizen__ep1_combat_zone_stacks_wa.ent";
	savable = true;
}

we_ep1_01_kurtz_grunt1_ranged1_saratoga_ma : kurtz_grunt1_ranged1_saratoga_ma
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_grunt1_ranged1_saratoga_wa : kurtz_grunt1_ranged1_saratoga_wa
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_soldier1_ranged2_rifle_ma : kurtz_soldier1_ranged2_rifle_ma
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_soldier1_ranged2_rifle_wa : kurtz_soldier1_ranged2_rifle_wa
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_grunt1_ranged1_handgun_ma : kurtz_grunt1_ranged1_handgun_ma
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_grunt1_ranged1_handgun_wa : kurtz_grunt1_ranged1_handgun_wa
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_tech_franged2_handgun_ma_rare : kurtz_tech_franged2_handgun_ma_rare
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_soldier2_shotgun2_shotgun_ma_rare : kurtz_soldier2_shotgun2_shotgun_ma_rare
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_recon_sniper2_achilles_ma_rare : kurtz_recon_sniper2_achilles_ma_rare
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_elite3_gunner3_HMG_mb_elite : kurtz_elite3_gunner3_HMG_mb_elite
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_martial_hmelee3_fists_mb_elite : kurtz_martial_hmelee3_fists_mb_elite
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_strongarms_hmelee3_fists_mb_elite : kurtz_strongarms_hmelee3_fists_mb_elite
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_martial_fmelee3_fists_ma_rare : kurtz_martial_fmelee3_fists_ma_rare
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_netrunner2_netrunner2_lexington_ma_rare : kurtz_netrunner2_netrunner2_lexington_ma_rare
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

we_ep1_01_kurtz_rifle_flashlight_ma : kurtz_rifle_flashlight_ma
{
	priority = "SpawnableObjectPriority.Quest";
	baseAttitudeGroup = "we_ep1_01_kurtz";
}

