package Items
using RTDB, BaseStats, BaseStatPools, Prereqs, Perks

[ notQueryable ]
NanoWires : MeleeWeapon
{
	isCustomizable = true;
	isSingleInstance = false;
	displayName = "LocKey#3720";
	localizedDescription = "LocKey#3721";
	iconPath = "cw_arms_nanowires";
	crosshair = "Crosshairs.Melee_Nano_Wire";
	fk< UIIcon > hudIcon = "HUDWeaponIcons.CWNanowires";
	itemSecondaryAction = "";
	friendlyName = "mono_wires";
	buyPrice = 
	[
		"Price.BaseWeaponPrice", "Price.ItemQualityMultiplier", "Price.PlusTierMultiplier", "Price.CyberwareMultiplier", "Price.BuyPrice_StreetCred_Discount"
	];
	sellPrice = 
	[
		"Price.BaseWeaponPrice", "Price.ItemQualityMultiplier", "Price.PlusTierMultiplier", "Price.CyberwareMultiplier", "Price.CyberwareSellMultiplier"
	];
	blueprint = "Items.NanoWiresBlueprint";
	int specialAttackNumber = 6;
	slotPartList = 
	[
		{
			slot = "AttachmentSlots.CyberwareRoot";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.NanoWiresRoot";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.NanoWiresCable";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.PhysicalDamageCable";
				}, 
				{
					item = "Items.ThermalDamageCable";
				}, 
				{
					item = "Items.ChemicalDamageCable";
				}, 
				{
					item = "Items.ElectricDamageCable";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.NanoWiresBattery";
			itemPartList = 
			[
				{
					item = "Items.LowChargedWiresBattery";
				}, 
				{
					item = "Items.MediumChargedWiresBattery";
				}, 
				{
					item = "Items.HighChargedWiresBattery";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.ArmsCyberwareGeneralSlot";
			itemPartList = 
			[
				{
					item = "Items.ArmsCyberwareSharedFragment1";
				}, 
				{
					item = "Items.ArmsCyberwareSharedFragment2";
				}, 
				{
					item = "Items.ArmsCyberwareSharedFragment3";
				}, 
				{
					item = "Items.ArmsCyberwareSharedFragment4";
				}
			];
		}
	];
	slotPartListPreset = 
	[
		{
			slot = "AttachmentSlots.CyberwareRoot";
			itemPartPreset = "Items.NanoWiresRoot";
		}, 
		{
			slot = "AttachmentSlots.NanoWiresCable";
			itemPartPreset = "Items.PhysicalDamageCable";
		}, 
		{
			slot = "AttachmentSlots.NanoWiresQuickhackSlot";
			itemPartPreset = "";
		}, 
		{
			slot = "AttachmentSlots.NanoWiresBattery";
			itemPartPreset = "";
		}, 
		{
			slot = "AttachmentSlots.ArmsCyberwareGeneralSlot";
			itemPartPreset = "";
		}
	];
	[ EP1 ]
	entityName = "a0_002__monowire_whip_ep1";
	tags = 
	[
		"MeleeWeapon", "Core", "Melee", "Cyberware", "TakedownWeapon", "Meleeware", "PSM", "WeaponQuickSlots", "KeepRenderPlane", "ForceDismember", "UnequipHolsteredArms", "HideInBackpackUI", "FinisherFront", "FinisherBack", "DoNotRegenerateOnPartChange"
	];
	placementSlots = 
	[
		"AttachmentSlots.WeaponRight", "AttachmentSlots.WeaponLeft", "AttachmentSlots.RightArm"
	];
	parentAttachmentType = "ParentAttachmentType.Animated";
	stateMachineName = "Melee";
	dropObject = "";
	audioName = "";
	triggerModes = 
	[
		"TriggerMode.Charge"
	];
	visualTags = [];
	fxPackage = "WeaponFxPackage.MonoWireFxPackage";
	equipArea = "EquipmentArea.ArmsCW";
	itemType = "ItemType.Cyb_NanoWires";
	quality = "Quality.Rare";
	holsteredItem = "Items.NanoWireHolsteredFists";
	statModifierGroups = 
	[
		"Items.Base_Melee_Status_Effect_Application_Stats", "Items.Nano_Wires_Handling_Stats", "Items.Nano_Wires_RPG_Stats", "Items.Nano_Wires_Throw_Attack_TargetingStats", "Items.Nano_Wires_Damage_Stats"
	];
	statModifiers += 
	[
		"Items.ItemArmorToArmor", {
			statType = "BaseStats.ChargeTime";
			modifierType = "Multiplier";
			refObject = "Player";
			refStat = "BaseStats.CanUseNewMeleewareAttackSpyTree";
			opSymbol = "*";
			value = 1f;
		} : CombinedStatModifier
	];
	statPools = 
	[
		"BaseStatPools.NanoWiresCharge"
	];
	OnEquip = 
	[
		{
			UIData = 
			{
				localizedDescription = "LocKey#54011";
			};
		}
	];
	OnAttach += 
	[
		"GLP.HoldingNanoWires", {
			effectors = 
			[
				"Effectors.MonoWireQuickHackApplyEffector"
			];
		} : GameplayLogicPackage
	];
	attacks = 
	[
		"MonoWiresAttacks.MonoWiresComboAttack1", "MonoWiresAttacks.MonoWiresComboAttack2", "MonoWiresAttacks.MonoWiresComboAttack3", "MonoWiresAttacks.MonoWiresComboAttack4", "MonoWiresAttacks.MonoWiresFinalAttack1", "MonoWiresAttacks.MonoWiresFinalAttack2", "MonoWiresAttacks.MonoWiresFinalAttack3", "MonoWiresAttacks.MonoWiresFinalAttack4", "MonoWiresAttacks.MonoWiresFinalAttack5", "MonoWiresAttacks.MonoWiresStrongAttack1", "MonoWiresAttacks.MonoWiresStrongAttack2", "MonoWiresAttacks.MonoWiresStrongAttack3", "MonoWiresAttacks.MonoWiresStrongAttack4", "MonoWiresAttacks.MonoWiresStrongAttack5", "MonoWiresAttacks.MonoWiresJumpAttack", "MonoWiresAttacks.MonoWiresSprintAttack", "MonoWiresAttacks.MonoWiresBlockAttack", "MonoWiresAttacks.MonoWiresCrouchAttack", "MonoWiresAttacks.MonoWiresThrowAttack", "MonoWiresAttacks.MonoWiresThrowAttackHelper", "MonoWiresAttacks.MonoWiresApplyQuickhackAttack"
	];
	evolution = "WeaponEvolution.None";
	audioWeaponConfiguration = "audio_melee_metadata_nanowire";
	float weaponNearPlane = 21.88f;
	float weaponFarPlane = 50.0f;
	float weaponEdgesSharpness = 0.0f;
	float weaponVignetteIntensity = 0.0f;
	float weaponVignetteRadius = 0.0f;
	float weaponVignetteCircular = 0.0f;
	float weaponBlurIntensity = 1.0f;
	CName cyberwareType = "NanoWires";
	counterpart = "Items.AdvancedNanoWiresUncommon";
}

[ notQueryable ]
NanoWiresTest : NanoWires
{
}

[ notQueryable ]
NanoWiresBlueprint : ItemBlueprint
{
	fk< ItemBlueprintElement > rootElement = 
	{
		fk< AttachmentSlot > slot = "AttachmentSlots.CyberwareRoot";
		fk< ItemBlueprintElement >[] childElements = 
		[
			{
				fk< AttachmentSlot > slot = "AttachmentSlots.NanoWiresCable";
			}, 
			{
				fk< AttachmentSlot > slot = "AttachmentSlots.NanoWiresBattery";
				prereqID = 
				{
					valueToCheck = 4;
				} : ItemQualityPrereq;
			}, 
			{
				fk< AttachmentSlot > slot = "AttachmentSlots.ArmsCyberwareGeneralSlot";
				prereqID = 
				{
					valueToCheck = 3;
				} : ItemQualityPrereq;
			}, 
			{
				fk< AttachmentSlot > slot = "AttachmentSlots.NanoWiresQuickhackSlot";
				prereqID = 
				{
					statType = "CanUseNewMeleewareAttackSpyTree";
					valueToCheck = 0;
					comparisonType = "Greater";
				} : StatPrereq;
			}, 
			{
				slot = "AttachmentSlots.StatsShardSlot";
			}
		];
	};
}

[ notQueryable ]
Nano_Wires_Throw_Attack_TargetingStats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			float value = 30.f;
		} : SmartGunTargetAcquisitionRangeModifier, 
		{
			float value = 5.f;
		} : SmartGunHipLockingAnglePitchModifier, 
		{
			float value = 5.f;
		} : SmartGunHipLockingAngleYawModifier, 
		{
			float value = 5.f;
		} : SmartGunAdsLockingAnglePitchModifier, 
		{
			float value = 5.f;
		} : SmartGunAdsLockingAngleYawModifier, 
		{
			float value = 15.f;
		} : SmartGunHipTargetableAnglePitchModifier, 
		{
			float value = 15.f;
		} : SmartGunHipTargetableAngleYawModifier, 
		{
			float value = 15.f;
		} : SmartGunAdsTargetableAnglePitchModifier, 
		{
			float value = 15.f;
		} : SmartGunAdsTargetableAngleYawModifier
	];
}

[ notQueryable ]
ArmsCyberwareStatGroupBase : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Level";
			modifierType = "Multiplier";
			value = 0f;
		} : ConstantStatModifier, 
		"Character.ScaleToPlayerLevel"
	];
}

[ notQueryable ]
Nano_Wires_RPG_Stats : ArmsCyberwareStatGroupBase
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.HitReactionFactor";
			modifierType = "Multiplier";
			value = 0.2;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitWoundsFactor";
			modifierType = "Multiplier";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitDismembermentFactor";
			modifierType = "Multiplier";
			value = 5.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.DamagePerHit";
			modifierType = "Multiplier";
			value = 0.66f;
		} : ConstantStatModifier, 
		{
			value = 100.f;
		} : ChargeModifier, 
		{
			value = 0.5f;
		} : ChargeTimeModifier, 
		{
			value = 0.25;
		} : ChargeMultiplierModifier, 
		{
			statType = "BaseStats.ChargeFullMultiplier";
			modifierType = "Additive";
			refStat = "BaseStats.ChargeMultiplier";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.BlockFactor";
			modifierType = "Additive";
			value = 10.f;
		} : ConstantStatModifier, 
		"AttackModifier.WeaponArmorPenetrationMedium"
	];
}

[ notQueryable ]
Nano_Wires_Damage_Stats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Additive";
			value = 70f;
		} : ConstantStatModifier
	];
}

[ notQueryable ]
Nano_Wires_NPC_Damage_Stats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Additive";
			value = 67f;
		} : ConstantStatModifier
	];
}

[ notQueryable ]
Nano_Wires_Handling_Stats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.Range";
			modifierType = "Additive";
			value = 10.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AttacksNumber";
			modifierType = "Additive";
			value = 5;
		} : ConstantStatModifier, 
		"BaseStats.EquipDurationModifier", "BaseStats.UnequipDurationModifier", {
			statType = "BaseStats.ZoomLevel";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.EquipDuration_First";
			modifierType = "Additive";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MeleeAttackDuration";
			modifierType = "Additive";
			value = 0.4f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MeleeAttackComboDuration";
			modifierType = "Additive";
			value = 0.483f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BaseMeleeAttackStaminaCost";
			modifierType = "Additive";
			value = 8f;
		} : ConstantStatModifier, 
		{
			float value = 8.f;
		} : PhysicalImpulseModifier, 
		{
			float value = 10.f;
		} : KnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseKnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseEvadeImpulseModifier
	];
}

[ notQueryable ]
NanoWiresEpic : NanoWires
{
	quality = "Quality.Epic";
	counterpart = "Items.AdvancedNanoWiresUncommon";
}

[ notQueryable ]
NanoWiresLegendary : NanoWires
{
	quality = "Quality.Legendary";
	counterpart = "Items.AdvancedNanoWiresUncommon";
}

