package Items
using RTDB, BaseStats

[ notQueryable ]
Cyberware : Item
{
	buyPrice = 
	[
		"Price.BaseCyberwarePrice", "Price.ItemQualityMultiplier", "Price.PlusTierMultiplier", "Price.CyberwareMultiplier", "Price.BuyPrice_StreetCred_Discount"
	];
	sellPrice = 
	[
		"Price.BaseCyberwarePrice", "Price.ItemQualityMultiplier", "Price.PlusTierMultiplier", "Price.CyberwareMultiplier", "Price.CyberwareSellMultiplier"
	];
	bool isSingleInstance = false;
	fk< ItemCategory > itemCategory = "ItemCategory.Cyberware";
	fk< ItemType > itemType = "ItemType.Cyberware";
	CName[] tags = 
	[
		"Cyberware", "HideInBackpackUI"
	];
	objectActions = [];
	CName dropObject = "";
}

[ notQueryable ]
ArmsModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.ArmsCW";
	fk< AttachmentSlot >[] placementSlots = 
	[
		"AttachmentSlots.RightArm"
	];
	fk< ItemsFactoryAppearanceSuffixBase >[] appearanceSuffixes = 
	[
		"itemsFactoryAppearanceSuffix.Gender"
	];
	bool[] appearanceSuffixesOwnerOverride = 
	[
		true
	];
	parentAttachmentType = "ParentAttachmentType.Skinned";
}

[ notQueryable ]
SystemReplacementModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.SystemReplacementCW";
}

[ notQueryable ]
FrontalCortexModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.FrontalCortexCW";
}

[ notQueryable ]
EyesModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.EyesCW";
}

[ notQueryable ]
MusculoskeletalSystemModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.MusculoskeletalSystemCW";
	iconPath = "joint_lock";
}

[ notQueryable ]
NervousSystemModule : Cyberware
{
	iconPath = "nervous_system_kereznikov";
	fk< EquipmentArea > equipArea = "EquipmentArea.NervousSystemCW";
}

[ notQueryable ]
CardiovascularSystemModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.CardiovascularSystemCW";
}

[ notQueryable ]
ImmuneSystemModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.ImmuneSystemCW";
	iconPath = "immune_system_reverse_metabolic_enhancer";
}

[ notQueryable ]
HandsModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.HandsCW";
	fk< AttachmentSlot >[] placementSlots = 
	[
		"AttachmentSlots.RightHand"
	];
	fk< ItemsFactoryAppearanceSuffixBase >[] appearanceSuffixes = 
	[
		"itemsFactoryAppearanceSuffix.Gender"
	];
	bool[] appearanceSuffixesOwnerOverride = 
	[
		true
	];
	parentAttachmentType = "ParentAttachmentType.Skinned";
}

[ notQueryable ]
IntegumentarySystemModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.IntegumentarySystemCW";
}

[ notQueryable ]
LegsModule : Cyberware
{
	fk< EquipmentArea > equipArea = "EquipmentArea.LegsCW";
	iconPath = "legs_reinforced_muscles";
}

[ notQueryable ]
Fragment : Part
{
	CName[] tags += 
	[
		"Fragment"
	];
	fk< ItemType > itemType = "ItemType.Prt_Fragment";
	displayName = "BASE FRAGMENT - NEED LOCALIZATION";
	iconPath = "fragment_generic";
	statModifierGroups += 
	[
		"Items.QualityRandomization"
	];
}

GenericShardableCyberwareBlueprint : ItemBlueprint
{
	rootElement = 
	{
		slot = "AttachmentSlots.GenericItemRoot";
		childElements = 
		[
			{
				slot = "AttachmentSlots.StatsShardSlot";
			}
		];
	};
}

StatsShardSlotPart : SlotItemPartPreset
{
	slot = "AttachmentSlots.StatsShardSlot";
}

GenericItemRootPreset : SlotItemPartPreset
{
	slot = "AttachmentSlots.GenericItemRoot";
	itemPartPreset = "Items.GenericItemRoot";
}

[ notQueryable ]
CyberwareStatsShardStatic : Fragment
{
	isSingleInstance = false;
	itemType = "ItemType.CyberwareStatsShard";
	fk< ParentAttachmentType > parentAttachmentType = "ParentAttachmentType.Slot";
	placementSlots = 
	[
		"AttachmentSlots.StatsShardSlot"
	];
	CName[] tags += 
	[
		"itemPart", "SkipActivityLog", "HideInBackpackUI"
	];
	statModifiers = 
	[
		{
			statType = "BaseStats.Quality";
			modifierType = "Additive";
			refStat = "BaseStats.Quality";
			refObject = "Root";
			opSymbol = "*";
			value = 1f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.QualityRequirementMetFlag";
			modifierType = "Additive";
			refStat = "BaseStats.Quality";
			refObject = "Root";
			opSymbol = "*";
			value = 1f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.StaticModifierMultiplier";
			modifierType = "Additive";
			id = "cyberware_curves";
			column = "quality_to_static_modifier_multiplier";
			refStat = "BaseStats.Quality";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.ControlledRandomPower";
			modifierType = "Additive";
			id = "cyberware_curves";
			column = "quality_to_controlled_random_power";
			refStat = "BaseStats.Quality";
		} : CurveStatModifier
	];
	statModifierGroups = 
	[
		"ModifierGroups.CyberwareModifierBoosts", "ModifierGroups.TransferCyberwareModifiersToItem"
	];
	buyPrice += 
	[
		"Price.PostCyberwareTutorialPrice"
	];
}

[ notQueryable ]
CyberwareStatsShard : CyberwareStatsShardStatic
{
	statModifiers = 
	[
		{
			statType = "BaseStats.ControlledRandomPower";
			modifierType = "Additive";
			id = "cyberware_curves";
			column = "quality_to_controlled_random_power";
			refStat = "BaseStats.Quality";
			refObject = "Root";
		} : CurveStatModifier
	];
	statModifierGroups = 
	[
		"ModifierGroups.SimpleCyberwareModifiers", "ModifierGroups.AdvancedCyberwareModifiers", "ModifierGroups.AdvancedCyberwareModifiersDriverUpdate", "ModifierGroups.SpecializedCyberwareModifiers", "ModifierGroups.CyberwareModifierBoosts", "ModifierGroups.TransferCyberwareModifiersToItem"
	];
}

[ notQueryable ]
CyberwareStatsShardCommon : CyberwareStatsShard
{
	quality = "Quality.Common";
}

[ notQueryable ]
CyberwareStatsShardUncommon : CyberwareStatsShard
{
	quality = "Quality.Uncommon";
}

[ notQueryable ]
CyberwareStatsShardRare : CyberwareStatsShard
{
	quality = "Quality.Rare";
}

[ notQueryable ]
CyberwareStatsShardEpic : CyberwareStatsShard
{
	quality = "Quality.Epic";
}

[ notQueryable ]
CyberwareStatsShardLegendary : CyberwareStatsShard
{
	quality = "Quality.Legendary";
}

[ notQueryable ]
CyberwareUpgradeShard : MoneyShardScaling
{
}

[ notQueryable ]
CyberwareUpgradeShardUncommon : MoneyShardScaling
{
}

[ notQueryable ]
CyberwareUpgradeShardRare : MoneyShardScaling
{
}

[ notQueryable ]
CyberwareUpgradeShardEpic : MoneyShardScaling
{
}

[ notQueryable ]
CyberwareUpgradeShardLegendary : MoneyShardScaling
{
}

CyberwareAttributeAllocation : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.StrengthAllocated";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ReflexesAllocated";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.IntelligenceAllocated";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.TechnicalAbilityAllocated";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CoolAllocated";
			modifierType = "Additive";
			value = 0;
		} : ConstantStatModifier
	];
}

CyberwareBaseUpgradeCosts
{
	float commonPlus = 20;
	float commonPlus_CoreCW = 30;
	float uncommon = 15;
	float uncommonPlus = 20;
	float uncommonPlus_CoreCW = 30;
	float rare = 15;
	float rarePlus = 20;
	float rarePlus_CoreCW = 30;
	float epic = 15;
	float epicPlus = 20;
	float epicPlus_CoreCW = 30;
	float legendary = 15;
	float legendaryPlus = 20;
	float legendaryPlus_CoreCW = 30;
	float legendaryPlusPlus = 50;
	float legendaryPlusPlus_CoreCW = 80;
}

