package Character
using RTDB, BaseStats, ArchetypeData, ArchetypeType, Perks, Prereqs, Items

mq304_kurt : kurtz
{
	lootDrop = "LootTables.Empty";
	dropsAmmoOnDeathChance = 0.0f;
}

mq304_assassin_replacer_male : Player_Replacer_Puppet_Base
{
	priority = "SpawnableObjectPriority.Quest";
	quest = "NPCQuestAffiliation.MainQuest";
	entityTemplatePath = "ep1\characters\entities\player\replacer\assasin_ma_replacer.ent";
	displayName = "LocKey#81748";
	rarity = "NPCRarity.Elite";
	savable = true;
	persistentName = "";
	fk< GenderEntity >[] genders = 
	[
		{
			initial = true;
			gender = "Gender.Male";
			entity = "ep1\characters\entities\player\replacer\assasin_ma_replacer.ent";
		}
	];
	itemGroups = [];
	items = [];
	fk< AttachmentSlot >[] attachmentSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft", "AttachmentSlots.TppHead", "AttachmentSlots.PersonalLink", "AttachmentSlots.Consumable", "AttachmentSlots.Splinter"
	];
	fk< StatPool >[] statPools = 
	[
		"BaseStatPools.Player_Health_Base", "BaseStatPools.Player_Stamina_Base", "BaseStatPools.Player_Oxygen_Base"
	];
	statModifiers += 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ArmorEffectivenessMultiplier";
			modifierType = "Multiplier";
			value = 1.5;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthInCombatRegenEnabled";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthInCombatRegenEndThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthOutOfCombatRegenEndThreshold";
			modifierType = "Additive";
			value = 100;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthOutOfCombatRegenRate";
			modifierType = "Multiplier";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthInCombatRegenRate";
			modifierType = "Multiplier";
			value = 6;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthInCombatStartDelay";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HealthOutOfCombatRegenDelayOnChange";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasCybereye";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MaxSpeed";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Level";
			modifierType = "Additive";
			value = 37f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HasSandevistan";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TimeDilationSandevistanDuration";
			modifierType = "Additive";
			value = 6f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TimeDilationSandevistanCooldownBase";
			modifierType = "Additive";
			value = 3f;
		} : ConstantStatModifier
	];
	effectors = 
	[
		{
			fk< StatusEffect > statusEffect = "GameplayRestriction.InfiniteAmmo";
		} : ApplyStatusEffectEffector, 
		{
			prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
			statGroup = 
			{
				statModifiers = 
				[
					{
						statType = "BaseStats.DPS";
						modifierType = "Multiplier";
						value = 1.8f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.BulletMagnetismDefaultAngle";
						modifierType = "Multiplier";
						value = 5f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.BulletMagnetismHighVelocityAngle";
						modifierType = "Multiplier";
						value = 5f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.FirePower";
						modifierType = "Multiplier";
						value = 0f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SwaySideMaximumAngleDistance";
						modifierType = "Multiplier";
						value = 0f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SwaySideMinimumAngleDistance";
						modifierType = "Multiplier";
						value = 0f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.ReloadTimeBonus";
						modifierType = "Additive";
						value = -0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadDefaultX";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadDefaultY";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadMaxX";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadMaxY";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadChangePerShot";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadAdsChangePerShot";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadAdsDefaultX";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadAdsDefaultY";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadAdsMaxX";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier, 
					{
						statType = "BaseStats.SpreadAdsMaxY";
						modifierType = "Multiplier";
						value = 0.2f;
					} : ConstantStatModifier
				];
			};
		} : ApplyStatGroupOnWeapon, 
		"Effectors.PlayerEnteredCombat", "Effectors.LowHealthTBHIncrease", "Effectors.CriticalHealthTBHIncrease"
	];
}

mq304_assassin_replacer_female : mq304_assassin_replacer_male
{
	entityTemplatePath = "ep1\characters\entities\player\replacer\assasin_wa_replacer.ent";
	persistentName = "";
	fk< GenderEntity >[] genders = 
	[
		{
			initial = true;
			gender = "Gender.Female";
			entity = "ep1\characters\entities\player\replacer\assasin_wa_replacer.ent";
		}
	];
}

mq304_nicola_tpp_ma : Quest_NPC_Base
{
	priority = "SpawnableObjectPriority.Quest";
	quest = "NPCQuestAffiliation.MainQuest";
	displayName = "LocKey#81748";
	baseAttitudeGroup = "friendly";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_nicola_ma.ent";
	savable = true;
}

mq304_nicola_tpp_wa : Quest_NPC_Base
{
	priority = "SpawnableObjectPriority.Quest";
	quest = "NPCQuestAffiliation.MainQuest";
	displayName = "LocKey#81748";
	baseAttitudeGroup = "friendly";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_nicola_wa.ent";
	savable = true;
}

mq304_bennett : kurtz_strongarms_hmelee3_fists_mb_elite
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#81634";
	fullDisplayName = "LocKey#81985";
	baseAttitudeGroup = "friendly";
	tags = 
	[
		"Immortal", "Cyberpsycho"
	];
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_bennett.ent";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	archetypeData = "ArchetypeData.FastMeleeT3";
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BlindImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StunImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThreshold";
			modifierType = "Multiplier";
			value = 200;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThreshold";
			modifierType = "Additive";
			value = 120.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RandomCurveInput";
			modifierType = "Multiplier";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Quality";
			modifierType = "Additive";
			id = "quality_curves";
			column = "iconic_level_to_random_range_mult_new";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Multiplier";
			value = 2f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "puppet_weaponQualityToDPS";
			refStat = "BaseStats.Quality";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Multiplier";
			id = "puppet_powerLevelToDPS";
			column = "puppet_intrinsic_levelToDPS";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Multiplier";
			id = "boss_power_level_to_dps_mult";
			column = "bennett_level_to_dps_mult";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier
	];
	statModifierGroups += 
	[
		"Character.Boss_Poise_Primary_Stat_ModGroup"
	];
	effectors += 
	[
		{
			prereqRecord = "Prereqs.MeleeWeaponHeldPrereq";
			statGroup = 
			{
				statModifiers = 
				[
					{
						statType = "BaseStats.NPCDamage";
						modifierType = "Additive";
						value = 70f;
					} : ConstantStatModifier
				];
			} : Strong_Arms_NPC_Damage_Stats;
		} : ApplyStatGroupEffector, 
		{
			prereqRecord = "Prereqs.RangedWeaponHeldPrereq";
			statGroup = 
			{
				statModifiers = 
				[
					{
						statType = "BaseStats.NPCDamage";
						modifierType = "Additive";
						value = 40f;
					} : ConstantStatModifier
				];
			} : Base_Omaha_NPC_Damage_Stats;
		} : ApplyStatGroupEffector, 
		{
			prereqRecord = 
			{
				nestedPrereqs = 
				[
					{
						valueToCheck = 
						[
							{
								statType = "BaseStats.Health";
								modifierType = "Additive";
								value = 50.0f;
							} : ConstantStatModifier
						];
						statPoolType = "Health";
						comparisonType = "LessOrEqual";
					} : StatPoolPrereq, 
					{
						inverted = true;
					} : RangedWeaponHeldPrereq
				];
			} : ANDPrereq;
			statusEffect = "BaseStatusEffect.UnstoppableBennett";
			removeWithEffector = true;
		} : ApplyStatusEffectEffector
	];
	abilities += 
	[
		"Ability.CanUseFlashbangGrenades", "Ability.CanUseGrenades", "Ability.HasDodge", "Ability.HasSandevistanTier3", "Ability.IsAggressive", "Ability.HasKerenzikov"
	];
	primaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.NPC_Strong_Arms_Bennett";
				equipSlot = "AttachmentSlots.WeaponRight";
				equipCondition = 
				[
					"WeaponConditions.BaseMeleePrimaryWeaponEquipCondition"
				];
				unequipCondition = 
				[
					"WeaponConditions.BaseMeleePrimaryWeaponUnequipCondition"
				];
			} : NPCEquipmentItem
		];
	};
	secondaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.Preset_Omaha_Krausser_Bennett";
				equipSlot = "AttachmentSlots.WeaponRight";
				onBodySlot = "AttachmentSlots.ItemSlotGenericRanged";
			} : NPCEquipmentItem
		];
	};
	bossHealthBarThresholds = 
	[
		66.f, 33.f
	];
	rarity = "NPCRarity.Boss";
}

mq304_jago : generic_grunt_melee1_knife_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#81633";
	fullDisplayName = "LocKey#81986";
	baseAttitudeGroup = "friendly";
	reactionPreset = "ReactionPresets.NoReaction";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_jago.ent";
	savable = true;
	isCrowd = false;
	skipDisplayArchetype = true;
	priority = "SpawnableObjectPriority.Quest";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	fk< Affiliation > affiliation = "Factions.Barghest";
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier
	];
}

mq304_bennett_driver : arasaka_guard2_ranged1_yukimura_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_kurtz_army_ma.ent";
	baseAttitudeGroup = "mq304_vdb";
	CName BodyDisposalFact = "mq304_bennett_driver_disposed";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier
	];
}

mq304_pyramid_npc1 : DefaultNCResidentMale
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "friendly";
	displayName = "LocKey#85557";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\citizen\citizen__ep1_combat_zone_stacks_ma.ent";
}

mq304_pyramid_npc2 : DefaultNCResidentMale
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "friendly";
	displayName = "LocKey#85557";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\citizen\citizen__ep1_combat_zone_stacks_wa.ent";
}

mq304_nicola_bodyguard1 : Quest_NPC_Base
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#81987";
	fullDisplayName = "LocKey#81988";
	baseAttitudeGroup = "friendly";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_actor_mf.ent";
}

mq304_nicola_bodyguard2 : Quest_NPC_Base
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#81989";
	fullDisplayName = "LocKey#81990";
	baseAttitudeGroup = "friendly";
	savable = true;
	isCrowd = false;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_actor_wa.ent";
}

mq304_vdb_01_ma : voodooboys_grunt1_ranged2_saratoga_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_ma.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_vdb_02_wa : voodooboys_grunt1_ranged2_sidewinder_wa
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_wa.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_vdb_03_ma : voodooboys_grunt1coat_shotgun2_palica_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_ma.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_vdb_04_wa : voodooboys_netrunner2_netrunner2_lexington_wa_rare
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_wa.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_vdb_05_wa : voodooboys_grunt2coat_shotgun2_palica_wa
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_wa.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_vdb_06_ma : voodooboys_grunt1_ranged2_sidewinder_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	baseAttitudeGroup = "mq304_vdb";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	entityTemplatePath = "ep1\characters\entities\gang\gang__voodoo_ma.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier, 
		{
			column = "replacer_npc";
		} : FactionNPCRarityBonus
	];
}

mq304_jago_bodyguard_01 : kurtz_elite3_gunner3_HMG_mb_elite
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#81992";
	fullDisplayName = "LocKey#81993";
	skipDisplayArchetype = true;
	baseAttitudeGroup = "mq304_jago_bdgrds";
	savable = true;
	priority = "SpawnableObjectPriority.Quest";
	reactionPreset = "ReactionPresets.NoReaction";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_kurtz_army_mb.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier
	];
}

mq304_jago_bodyguard_03 : kurtz_soldier1_ranged2_rifle_ma
{
	quest = "NPCQuestAffiliation.MinorQuest";
	displayName = "LocKey#22564";
	fullDisplayName = "LocKey#32072";
	baseAttitudeGroup = "mq304_jago_bdgrds";
	savable = true;
	skipDisplayArchetype = true;
	priority = "SpawnableObjectPriority.Quest";
	reactionPreset = "ReactionPresets.NoReaction";
	entityTemplatePath = "ep1\quest\minor_quests\mq304\characters\mq304_ent_kurtz_army_ma.ent";
	lootDrop = "LootTables.Empty";
	contentAssignment = "";
	dropsWeaponOnDeath = false;
	statModifiers += 
	[
		{
			statType = "BaseStats.PowerLevel";
			modifierType = "Additive";
			value = 36f;
		} : ConstantStatModifier
	];
}

