package Character
using RTDB, BaseStats

main_boss_chimera : Gameplay_NPC_Base
{
	affiliation = "Factions.Unaffiliated";
	archetypeName = "chimera";
	displayName = "LocKey#80590";
	fullDisplayName = "LocKey#80590";
	uiNameplate = "UINameplate.QuestSettings";
	reactionPreset = "ReactionPresets.Ganger_Aggressive";
	bool enableSensesOnStart = true;
	tags += 
	[
		"ChimeraHackEventImmune"
	];
	baseAttitudeGroup = "hostile";
	priority = "SpawnableObjectPriority.Quest";
	characterType = "NPCType.Chimera";
	voiceTag = "smasher";
	bool ignoreDetectionForAudioCue = true;
	string relaxedSensesPreset = "AbsoluteBossChimera";
	string alertedSensesPreset = "AbsoluteBossChimera";
	string combatSensesPreset = "AbsoluteBossChimera";
	dropsWeaponOnDeath = false;
	threatTrackingPreset = "TargetTracking.BossPreset";
	rarity = "NPCRarity.Boss";
	hideUIDetection = true;
	bossHealthBarThresholds = 
	[
		1.0f, 70.0f
	];
	lootDrop = "LootTables.Empty";
	dropsAmmoOnDeathChance = 0.0f;
	dropsMoneyOnDeath = false;
	actionMap = "MilitechChimeraBoss.Map";
	entityTemplatePath = "ep1\mechanical\mech\mch_004__militech_chimera__basic_01.ent";
	fk< GameplayAbility >[] abilities = 
	[
		"Ability.CanInstaKillNPCs", "Ability.CanUseFragGrenades", "Ability.CanForceDismbember", "Ability.HasWeakspot", "Ability.HasChargeJump", "Ability.HasMeleeHitReactionAndTakedownResistance", "Ability.HasExtendedHitReactionImmunity", "Ability.HasQuickhackResistance", "Ability.HasMemoryWipeImmunity", "Ability.IsMechanical"
	];
	fk< InventoryItem >[] items = 
	[
		{
			item = "Items.Chimera_Launcher_Mine_Left";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Launcher_Mine_Right";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Launcher_Rain_Left";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Launcher_Rain_Right";
			quantity = 9999;
		}, 
		{
			item = "Items.plasma_cutter";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Metalstorm";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Metalstorm_Raise_Sequence";
			quantity = 9999;
		}, 
		{
			item = "Items.Chimera_Metalstorm_Explosive";
			quantity = 9999;
		}, 
		{
			item = "Items.chimera_cannon";
			quantity = 9999;
		}, 
		{
			item = "Items.chimera_plasma_cutter";
			quantity = 9999;
		}, 
		{
			item = "Items.chimera_melee";
			quantity = 9999;
		}, 
		{
			item = "Items.chimera_plasma_cutter_cannon";
			quantity = 9999;
		}, 
		{
			item = "Items.chimera_gas_cloud";
			quantity = 9999;
		}
	];
	fk< Weakspot >[] weakspots = 
	[
		"Weakspots.Chimera_Weakspot_Turret_back_01", "Weakspots.Chimera_Weakspot_Turret_back_02", "Weakspots.Chimera_Weakspot_Back_02", "Weakspots.Chimera_Weakspot_Front_02", "Weakspots.Chimera_Weakspot_Front_03", "Weakspots.Chimera_Weakspot_Front_04", "Weakspots.Chimera_Weakspot_Left_01", "Weakspots.Chimera_Weakspot_Left_02", "Weakspots.Chimera_Weakspot_Right_01", "Weakspots.Chimera_Weakspot_Right_02", "Weakspots.Chimera_Weakspot_Leg_Bl_02", "Weakspots.Chimera_Weakspot_Leg_Br_02", "Weakspots.Chimera_Weakspot_Leg_Fl_02", "Weakspots.Chimera_Weakspot_Leg_Ml_02", "Weakspots.Chimera_Weakspot_Leg_Mr_02", "Weakspots.Chimera_Weakspot_Metalstorm_01", "Weakspots.Chimera_Weakspot_Leg_Fr_02"
	];
	fk< AttachmentSlot >[] attachmentSlots += 
	[
		"AttachmentSlots.LeftShoulderChandelier", "AttachmentSlots.RightShoulderChandelier", "AttachmentSlots.RightShoulderTrack", "AttachmentSlots.LeftShoulderTrack", "AttachmentSlots.RightShoulderMine", "AttachmentSlots.LeftShoulder", "AttachmentSlots.RightShoulder", "AttachmentSlots.LeftShoulderMine", "AttachmentSlots.RightShoulderSelf", "AttachmentSlots.LeftShoulderSelf", "AttachmentSlots.MetalstormWeapon", "AttachmentSlots.MetalstormWeaponExplosive", "AttachmentSlots.MetalstormWeaponRaiseSequence", "AttachmentSlots.Cannon", "AttachmentSlots.CannonLaser", "AttachmentSlots.ChimeraMelee", "AttachmentSlots.Laser", "AttachmentSlots.RailGun", "AttachmentSlots.ChimeraGasCloud"
	];
	fk< StatPool >[] statPools = 
	[
		"BaseStatPools.Puppet_Health_Base"
	];
	fk< StatModifierGroup >[] statModifierGroups = 
	[
		"Character.NPC_Chimera_Primary_Stat_ModGroup", "Character.Main_boss_chimera_stats", "Character.ForceDefeatedModifierGroup", "Character.StunImunityModifierGroup", "HitReactionThresholdModifiers.Unstoppable", "Character.Boss_Poise_Primary_Stat_ModGroup"
	];
	effectors += 
	[
		"Chimera.ChimeraOverloadWeakspotEffector", "Effectors.MainBossEffector"
	];
	fk< ObjectAction >[] objectActions = 
	[
		"QuickHack.ChimeraOverloadBaseHack", "QuickHack.ChimeraBaseBlindHack", "QuickHack.ChimeraSuicideHackBase", "QuickHack.ChimeraGrenadeHackBase", "QuickHack.ChimeraSystemCollapseHackBase", "QuickHack.ChimeraBaseWeaponMalfunctionHack", "QuickHack.ChimeraBaseLocomotionMalfunctionHack", "QuickHack.ChimeraBaseOverheatHack", "QuickHack.BaseCommsCallInHack", "QuickHack.ChimeraBaseCyberwareMalfunctionHack", "QuickHack.ChimeraBrainMeltBaseHack", "QuickHack.BasePingHack", "QuickHack.BaseContagionHack", "QuickHack.ChimeraBaseMemoryWipeHack", "QuickHack.BaseWhistleHack", "QuickHack.ChimeraMadnessHackBase", "QuickHack.RemoteBreach", "Takedown.BossTakedown", "Takedown.NewPerkFinisher", "Takedown.NewPerkFinisherBlunt"
	];
	CName audioMeleeMaterial = "Mech";
}

NPC_Chimera_Primary_Stat_ModGroup : NPC_Base_Curves
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.UnconsciousImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Weight";
			modifierType = "Additive";
			value = 60;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalResistance";
			modifierType = "Additive";
			value = 30.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalResistance";
			modifierType = "Additive";
			value = 100.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricResistance";
			modifierType = "Additive";
			value = -30.f;
		} : 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 = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdInCover";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ImpactDamageThresholdImpulse";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaggerDamageThresholdImpulse";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownDamageThresholdImpulse";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundHeadDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundLArmDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundRArmDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundLLegDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundRLegDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismHeadDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismLArmDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismRArmDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismLLegDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DismRLegDamageThreshold";
			modifierType = "Additive";
			value = -1;
		} : 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.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterImpactMelee";
			modifierType = "Additive";
			value = 5.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStagger";
			modifierType = "Additive";
			value = 5.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStaggerMelee";
			modifierType = "Additive";
			value = 5.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterDefeated";
			modifierType = "Additive";
			value = 2;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterPain";
			modifierType = "Additive";
			value = 5.f;
		} : 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.BleedingImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StunImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PoisonImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TBHsBaseCoefficient";
			modifierType = "Additive";
			value = 1.f;
		} : 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, 
		"Character.BaseAccuracy"
	];
}

Main_boss_chimera_stats : NPC_Base_Curves
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 4.66f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MaxPercentDamageTakenPerHit";
			modifierType = "Additive";
			value = 5.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HackingResistance";
			modifierType = "Additive";
			value = 0.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BlindResistance";
			modifierType = "Additive";
			value = 0.9;
		} : 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.PersonalityAggressive";
			modifierType = "Additive";
			value = 100.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStagger";
			modifierType = "Additive";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitTimerAfterStaggerMelee";
			modifierType = "Additive";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.KnockdownImmunity";
			modifierType = "Additive";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.WoundedImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BonusDamageAgainstMechanicals";
			modifierType = "Additive";
			value = 7.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RandomCurveInput";
			modifierType = "Multiplier";
			value = 0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.NPCDamage";
			modifierType = "Additive";
			value = 80f;
		} : 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";
			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 = "chimera_level_to_dps_mult";
			refStat = "BaseStats.PowerLevel";
		} : CurveStatModifier
	];
}

Cerberus_NPC_Base : Gameplay_NPC_Base
{
	CName archetypeName = "ep1_cerberus_robot";
	characterType = "NPCType.Cerberus";
	bool enableSensesOnStart = true;
	baseAttitudeGroup = "hostile";
	reactionPreset = "ReactionPresets.Cerberus_Aggressive";
	dropsWeaponOnDeath = false;
	actionMap = "CerberusBoss.Map";
	CName voiceTag = "songbird_blackwall";
	displayName = "Cerberus";
	entityTemplatePath = "ep1\characters\boss\cerberus\q305_cerberus.ent";
	sensePreset = "Senses.CerberusRelaxed";
	string relaxedSensesPreset = "CerberusRelaxed";
	string alertedSensesPreset = "Q303_Cerberus_Alerted";
	string combatSensesPreset = "Q303_Cerberus_Combat";
	hideUIElements = true;
	bool ignoreDetectionForAudioCue = true;
	CName preferedWeapon = "Items.Base_Cerberus_Weapon";
	CName weaponSlot = "AttachmentSlots.WeaponRight";
	fk< AttachmentSlot >[] attachmentSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft", "AttachmentSlots.Head", "AttachmentSlots.Chest", "AttachmentSlots.RightArm", "AttachmentSlots.LeftArm", "AttachmentSlots.RightHand", "AttachmentSlots.LeftHand", "AttachmentSlots.Legs", "AttachmentSlots.PersonalLink", "AttachmentSlots.ScannerRoot"
	];
	fk< ObjectAction >[] objectActions = 
	[
		"QuickHack.RemoteBreach", "QuickHack.SuicideHackBase", "QuickHack.GrenadeHackBase", "QuickHack.SystemCollapseHackBase", "QuickHack.MadnessHackBase", "QuickHack.BaseBlackWallHack", "QuickHack.BaseOverheatHack", "QuickHack.BaseContagionHack", "QuickHack.OverloadBaseHack", "QuickHack.BrainMeltBaseHack", "QuickHack.BaseBlindHack", "QuickHack.BaseWeaponMalfunctionHack", "QuickHack.BaseLocomotionMalfunctionHack", "QuickHack.BaseCyberwareMalfunctionHack", "QuickHack.BaseCommsCallInHack", "QuickHack.BaseCommsNoiseHack", "QuickHack.BasePingHack", "QuickHack.BaseMemoryWipeHack", "QuickHack.BaseWhistleHack"
	];
	abilities += 
	[
		"Ability.HasMeleeHitReactionAndTakedownResistance", "Ability.HasExtendedHitReactionImmunity", "Ability.HasQuickhackResistance", "Ability.CanSeeThroughOpticalCamos"
	];
	fk< InventoryItem >[] items = 
	[
		{
			item = "Items.Base_Cerberus_Weapon";
			quantity = 1;
		}
	];
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PreventQuickhacking";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier
	];
	fk< StatModifierGroup >[] statModifierGroups = 
	[
		"Character.CerberusDamage", "Character.StunImunityModifierGroup", "Character.CerberusBlindImmunity", "Character.CerberusEMPImmunity", "Character.CerberusSmartTargetingImmunity", "Character.AllImunityModifierGroup", "Character.NoHitReactionsModifierGroup"
	];
	tags += 
	[
		"Immortal"
	];
}

CerberusDamage : StatModifierGroup
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Additive";
			value = 100f;
		} : ConstantStatModifier
	];
}

CerberusBlindImmunity : StatModifierGroup
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.BlindImmunity";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier
	];
}

CerberusEMPImmunity : StatModifierGroup
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.EMPImmunity";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier
	];
}

CerberusSmartTargetingImmunity : StatModifierGroup
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.SmartTargetingDisruptionProbability";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SmartTargetingShouldNotDisableCollision";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier
	];
}

