package RTDB
using BaseStats

ItemDropSettings
{
	float desiredAngularVelocity = 0.0;
	float desiredInitialRotation = 0.0;
}

Item : BaseObject
{
	bool isSingleInstance = true;
	fk< ItemStructure > itemStructure = "";
	float mass = 1.0f;
	CName dropObject = "defaultItemDrop";
	fk< AttachmentSlot >[] placementSlots = [];
	fk< ParentAttachmentType > parentAttachmentType = "";
	fk< ItemBlueprint > blueprint = "";
	fk< SlotItemPartListElement >[] slotPartList = [];
	fk< SlotItemPartPreset >[] slotPartListPreset = [];
	bool isPart = false;
	fk< Item > equivalent = "";
	bool isCustomizable = false;
	bool isCached = false;
	CName appearanceResourceName = "";
	CName appearanceName = "";
	CName entityName = "";
	CName[] visualTags = [];
	fk< ItemsFactoryAppearanceSuffixBase >[] appearanceSuffixes = [];
	bool[] appearanceSuffixesOwnerOverride = [];
	bool isGarment = false;
	int garmentOffset = 0;
	bool useHeadgearGarmentAggregator = false;
	string friendlyName = "";
	CName stateMachineName = "";
	CName animFeatureName = "ItemData";
	CName audioSwitchName = "";
	CName audioSwitchValue = "";
	CName audioName = "";
	CName equipSoundMetadata = "";
	fk< EquipmentMovementSound > movementSound = "";
	fk< ItemCategory > itemCategory = "";
	fk< ItemType > itemType = "ItemType.Gen_Misc";
	CName[] tags = [];
	fk< CPOItemCategoryBase > cpoItemCategory = "";
	fk< GameplayRestrictionStatusEffect >[] gameplayRestrictions = 
	[
		"GameplayRestriction.VehicleCombatNoInterruptions"
	];
	bool canDrop = true;
	string iconPath = "";
	fk< UIIcon > icon = "UIIcon.ItemIcon";
	LocKey displayName = "";
	LocKey localizedDescription = "";
	fk< Crosshair > crosshair = "Crosshairs.None";
	Vector3[] previewBBoxOverride = [];
	ResRef animSetResource = "";
	CName animName = "ui_garment_pose";
	Vector3 cameraForward = ( 0.f, 0.f, 0.f );
	Vector3 cameraUp = ( 0.f, 0.f, 0.f );
	fk< RPGDataPackage > npcRPGData = "";
	bool enableNpcRPGData = false;
	fk< Quality > quality = "Quality.Common";
	bool qualityRestrictedByParent = false;
	bool powerLevelDeterminedByParent = false;
	fk< StatModifier >[] buyPrice = 
	[
		"Price.BasePrice", "Price.BuyMultiplier", "Price.ItemQualityMultiplier", "Price.BuyPrice_StreetCred_Discount"
	];
	fk< StatModifier >[] sellPrice = 
	[
		"Price.BasePrice", "Price.SellMultiplier", "Price.ItemQualitySellMultiplier", "Price.CraftingTraitMultiplier", "Price.SellPriceIntrinsicModMult"
	];
	fk< CraftingPackage > CraftingData = "";
	fk< EquipmentArea > equipArea = "";
	fk< EquipmentArea >[] equipAreas = [];
	fk< IPrereq >[] equipPrereqs = [];
	fk< GameplayLogicPackage >[] OnEquip = [];
	fk< GameplayLogicPackage >[] OnAttach = [];
	fk< GameplayLogicPackage >[] OnLooted = [];
	objectActions = 
	[
		"ItemAction.Drop", "ItemAction.Disassemble"
	];
	float upgradeCostMult = 1.0f;
	bool deprecated = false;
	fk< Item > counterpart = "";
	fk< ItemDropSettings > dropSettings = "";
	CName movementPattern = "";
	bool replicateWhenNotActive = false;
	fk< ItemAction > itemSecondaryAction = "";
	fk< Minigame_Def > minigameInstance = "minigame_v2.DefaultItemMinigame";
	CName[] hairSkinnedMeshComponents = [];
	bool usesVariants = false;
	fk< RandomVariant >[] variants = [];
	fk< Item > nextUpgradeItem = "";
	fk< Item > sideUpgradeItem = "";
	bool isCoreCW = false;
	bool useNewSpawnMethod = false;
	fk< AttachmentSlot >[] attachmentSlots = [];
	fk< ItemRequiredSlot >[] requiredSlots = [];
	fk< Item >[] parts = [];
	fk< ItemPartConnection >[] connections = [];
	CName[] animationParameters = [];
	string localizedName = "";
	fk< StatsList > onEquipStats = "";
}

EquipmentMovementSound
{
	CName audioMovementName = "";
	float priority = 0.f;
}

ItemStructure
{
	CName enumName = "";
	CName enumComment = "";
}

RandomVariant
{
	fk< IPrereq >[] variantPrereqs = [];
	fk< StatModifier >[] statModifiers = [];
	fk< StatModifierGroup >[] statModifierGroups = [];
	float weight = 1.0f;
}

