package Character
using RTDB, BaseStats

spiderbot_new : SubCharacter
{
	displayName = "LocKey#45306";
	enumName = "Flathead";
	enumComment = "Flathead (AKA spiderbot) follower. Used primarily in techie playstyle";
	referenceName = "#flathead";
	fk< AttachmentSlot >[] attachmentSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.Head", "AttachmentSlots.BotMainModule"
	];
	fk< ReactionPreset > reactionPreset = "ReactionPresets.NoReaction";
	entityTemplatePath = "base\mechanical\prototypes\spiderbot_01_prototype.ent";
	fk< SensePreset > sensePreset = "Senses.Huge";
	string relaxedSensesPreset = "Huge";
	string alertedSensesPreset = "Huge";
	string combatSensesPreset = "AbsoluteTurret";
	bool enableSensesOnStart = true;
	CName weaponSlot = "AttachmentSlots.Head";
	CName archetypeName = "spiderbot_follower";
	savable = true;
	characterType = "NPCType.Spiderbot";
	fk< StatPool >[] statPools = 
	[
		"BaseStatPools.NonHuman_Puppet_Health_Base", "BaseStatPools.CPUPower"
	];
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.02;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CPUPower";
			modifierType = "Additive";
			value = 25;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AutocraftDuration";
			modifierType = "Additive";
			value = 300;
		} : ConstantStatModifier
	];
	statModifierGroups = 
	[
		"Character.NPC_Base_Primary_Stat_ModGroup"
	];
	fk< Item >[] startingEquippedItems = [];
	fk< EquipmentArea >[] EquipmentAreas = 
	[
		"EquipmentArea.BotMainModule", "EquipmentArea.BotChassisModule", "EquipmentArea.BotCPU", "EquipmentArea.BotSoftware"
	];
}

ItemsPoolExample : SubCharacter
{
	primaryEquipment = 
	{
		equipmentItems = 
		[
			{
				pool = 
				[
					{
						items = 
						[
							{
								item = "Items.Preset_Saratoga_Default";
								equipSlot = "AttachmentSlots.WeaponRight";
								onBodySlot = "AttachmentSlots.ItemSlotGenericRanged";
								equipCondition = 
								[
									"WeaponConditions.BaseRangedPrimaryWeaponEquipCondition"
								];
								unequipCondition = 
								[
									"WeaponConditions.BaseRangedPrimaryWeaponUnequipCondition"
								];
							} : NPCEquipmentItem
						];
					} : NPCEquipmentItemsPoolEntry, 
					{
						items = 
						[
							{
								item = "Items.Preset_Nue_Default";
								equipSlot = "AttachmentSlots.WeaponRight";
							} : NPCEquipmentItem
						];
						minLevel = 8;
						weight = 100.0f;
					} : NPCEquipmentItemsPoolEntry, 
					{
						items = 
						[
							{
								item = "Items.Preset_Base_Copperhead";
								equipSlot = "AttachmentSlots.WeaponRight";
								onBodySlot = "AttachmentSlots.ItemSlotGenericRanged";
								equipCondition = 
								[
									"WeaponConditions.BaseRangedPrimaryWeaponEquipCondition"
								];
								unequipCondition = 
								[
									"WeaponConditions.BaseRangedPrimaryWeaponUnequipCondition"
								];
							} : NPCEquipmentItem
						];
					} : NPCEquipmentItemsPoolEntry
				];
			} : NPCEquipmentItemPool
		];
	};
	secondaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.Preset_Nue_Default";
				equipSlot = "AttachmentSlots.WeaponRight";
			} : NPCEquipmentItem
		];
	};
}

policeman_TESTONLY : SubCharacter
{
	fk< LootTable > lootDrop = "LootTables.Empty";
	itemGroups = 
	[
		"Character.Enemy_Items_Base"
	];
	fk< AttachmentSlot >[] attachmentSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft", "AttachmentSlots.Head", "AttachmentSlots.Chest", "AttachmentSlots.RightArm", "AttachmentSlots.LeftArm", "AttachmentSlots.RightHand", "AttachmentSlots.LeftHand", "AttachmentSlots.Legs", "AttachmentSlots.PersonalLink", "AttachmentSlots.Consumable", "AttachmentSlots.Feet", "AttachmentSlots.TppHead", "AttachmentSlots.Torso", "AttachmentSlots.ItemSlotSniperRifle", "AttachmentSlots.ItemSlotSMG", "AttachmentSlots.ItemSlotTechRifle", "AttachmentSlots.ItemSlotHandgunLeftJackie", "AttachmentSlots.ItemSlotHandgunRightJackie", "AttachmentSlots.ItemSlotKatana"
	];
	fk< StatModifier >[] statModifiers += 
	[
		"Character.q000_base_power_level", {
			statType = "BaseStats.DPS";
			modifierType = "Multiplier";
			value = 10;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.Health";
			modifierType = "Multiplier";
			value = 10;
		} : ConstantStatModifier
	];
	statModifierGroups = 
	[
		"Character.NPC_Base_Primary_Stat_ModGroup"
	];
	fk< StatPool >[] statPools = 
	[
		"BaseStatPools.Puppet_Health_Base", "BaseStatPools.Puppet_Stamina_Base"
	];
	displayName = "NCPD";
	reactionPreset = "ReactionPresets.Police_Aggressive";
	fk< AISquadParams > squadParamsID = "FactionSquads.NCPDSquad";
	fk< Affiliation > affiliation = "Factions.NCPD";
	fk< NPCRarity > rarity = "NPCRarity.Elite";
	visualTags = 
	[
		"NCPD", "Lvl2", "Police"
	];
	entityTemplatePath = "base\characters\entities\corpo\corpo__ncpd_ma.ent";
	primaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.Preset_Base_Lexington";
				equipSlot = "AttachmentSlots.WeaponRight";
			} : NPCEquipmentItem
		];
	};
	bool enableSensesOnStart = true;
	characterType = "NPCType.Human";
	bool humanoid = true;
	baseAttitudeGroup = "neutral";
	CName archetypeName = "humanoid";
	CName weaponSlot = "AttachmentSlots.WeaponRight";
	fk< SensePreset > sensePreset = "Senses.Relaxed";
	string relaxedSensesPreset = "Relaxed";
	string alertedSensesPreset = "Alerted";
	string combatSensesPreset = "Combat";
	CName communitySquad = "Squad_Basic";
	fk< ObjectAction >[] objectActions = 
	[
		"GenericInteraction.PickUpBody", "Takedown.Grapple", "Takedown.LethalTakedown", "Takedown.NonLethalTakedown", "Takedown.ForceShove", "Takedown.NanoWireRemoteBreach", "QuickHack.SuicideLvl3Hack", "QuickHack.SuicideLvl4Hack", "QuickHack.GrenadeLvl3Hack", "QuickHack.GrenadeLvl4Hack", "QuickHack.SystemCollapseLvl3Hack", "QuickHack.SystemCollapseLvl4Hack", "QuickHack.BlindHack", "QuickHack.BlindLvl2Hack", "QuickHack.BlindLvl3Hack", "QuickHack.BlindLvl4Hack", "QuickHack.MadnessLvl3Hack", "QuickHack.MadnessLvl4Hack", "QuickHack.WeaponMalfunctionHack", "QuickHack.WeaponMalfunctionLvl2Hack", "QuickHack.WeaponMalfunctionLvl3Hack", "QuickHack.WeaponMalfunctionLvl4Hack", "QuickHack.LocomotionMalfunctionHack", "QuickHack.LocomotionMalfunctionLvl2Hack", "QuickHack.LocomotionMalfunctionLvl3Hack", "QuickHack.LocomotionMalfunctionLvl4Hack", "QuickHack.OverheatHack", "QuickHack.OverheatLvl2Hack", "QuickHack.OverheatLvl3Hack", "QuickHack.OverheatLvl4Hack", "QuickHack.BaseCommsCallInHack", "QuickHack.CommsNoiseHack", "QuickHack.CommsNoiseLvl2Hack", "QuickHack.CommsNoiseLvl3Hack", "QuickHack.CommsNoiseLvl4Hack", "QuickHack.CyberwareMalfunctionHack", "QuickHack.CyberwareMalfunctionLvl2Hack", "QuickHack.CyberwareMalfunctionLvl3Hack"
	];
	abilities += 
	[
		"Ability.CanCrouch", "Ability.CanSprint", "Ability.CanShootWhileMoving", "Ability.CanPreciseShoot", "Ability.CanChargedShoot", "Ability.CanSmartShoot", "Ability.CanUseLeftHand", "Ability.CanUseRightHand", "Ability.CanUseLegs", "Ability.CanTaunt", "Ability.CanCloseCombat"
	];
}

border_patrol_octant : SubCharacter
{
	[ EP1 ]
	entityTemplatePath = "ep1\vehicles\special\av_zetatech_octant__basic_01_ep1.ent";
	CName archetypeName = "drone";
	characterType = "NPCType.Drone";
	actionMap = "DroneOctantArchetype.Map";
	string statusEffectParamsPackageName = "DroneStatusEffectActions";
	reactionPreset = "ReactionPresets.Mechanical_Aggressive";
	baseAttitudeGroup = "hostile";
	CName communitySquad = "Squad_Basic";
	bool enableSensesOnStart = true;
	string relaxedSensesPreset = "Huge";
	string alertedSensesPreset = "Huge";
	string combatSensesPreset = "Huge";
	lootDrop = 
	{
	};
	dropsWeaponOnDeath = false;
	visualTags = 
	[
		"BorderPatrol"
	];
	fk< AttachmentSlot >[] attachmentSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft", "AttachmentSlots.GrenadeRight", "AttachmentSlots.GrenadeLeft", "AttachmentSlots.Head", "AttachmentSlots.Chest", "AttachmentSlots.RightArm", "AttachmentSlots.LeftArm", "AttachmentSlots.RightHand", "AttachmentSlots.LeftHand", "AttachmentSlots.Legs", "AttachmentSlots.PersonalLink", "AttachmentSlots.Consumable", "AttachmentSlots.Feet", "AttachmentSlots.TppHead", "AttachmentSlots.Torso", "AttachmentSlots.Outfit", "AttachmentSlots.ItemSlotSniperRifle", "AttachmentSlots.ItemSlotSMG", "AttachmentSlots.ItemSlotTechRifle", "AttachmentSlots.ItemSlotHandgunLeftJackie", "AttachmentSlots.ItemSlotHandgunRightJackie", "AttachmentSlots.ItemSlotKatana", "AttachmentSlots.ItemSlotGenericMelee", "AttachmentSlots.ItemSlotHammer", "AttachmentSlots.ItemSlotKnifeRight", "AttachmentSlots.ItemSlotKnifeLeft", "AttachmentSlots.ItemSlotGenericRanged", "AttachmentSlots.ItemSlotHandgunRight", "AttachmentSlots.ItemSlotHandgunLeft"
	];
	fk< StatPool >[] statPools = 
	[
		"BaseStatPools.NonHuman_Puppet_Health_Base", "BaseStatPools.Puppet_Stamina_Base", "BaseStatPools.Fear", "BaseStatPools.Aggressiveness", "BaseStatPools.CPO_NPC_Importance"
	];
	statModifierGroups = 
	[
		"Character.Border_Patrol_Drone_Primary_Stat_ModGroup", "Character.Mechanical_Immunities_ModGroup"
	];
	fk< ObjectAction >[] objectActions = [];
	abilities += 
	[
		"Ability.CanSprint", "Ability.CanDash", "Ability.CanShootWhileMoving", "Ability.CanUseLegs"
	];
	onSpawnGLPs = 
	[
		"Spawn_glp.DroneOctant_ExplodeOnDeath"
	];
	itemGroups = 
	[
		"Character.Enemy_Items_Base"
	];
	fk< InventoryItem >[] items = [];
	primaryEquipment = 
	{
		equipmentItems = 
		[
			{
				item = "Items.Octant_Autocannon";
				equipSlot = "AttachmentSlots.WeaponRight";
			} : NPCEquipmentItem
		];
	};
	CName weaponSlot = "AttachmentSlots.WeaponRight";
	float mass = 100f;
	float sizeFront = 1.5f;
	float sizeBack = -1.5f;
	float sizeLeft = 1.2f;
	float sizeRight = -1.2f;
	float walkTiltCoefficient = 1.33f;
	float massNormalizedCoefficient = 2.0f;
	float tiltAngleOnSpeed = 40.0f;
	float speedIdleThreshold = 0.2f;
	float startingRecoveryBalance = 0.01f;
	float pseudoAcceleration = 30f;
	float turnInertiaDamping = 0.75f;
	float combatDefaultZOffset = 0.f;
}

