import final abstract class UIItemsHelper extends IScriptable
{
	public import static function QualityStringToStateName( quality : String ) : CName;
	public import static function QualityToLocalizationKey( quality : gamedataQuality ) : String;
	public import static function QualityEnumToName( quality : gamedataQuality ) : CName;
	public import static function QualityNameToEnum( quality : CName ) : gamedataQuality;
	public import static function QualityEnumToInt( quality : gamedataQuality ) : Int32;
	public import static function QualityEnumToString( quality : gamedataQuality ) : String;
	public import static function QualityIntToName( quality : Int32 ) : CName;
	public import static function QualityStringToInt( quality : String ) : Int32;
	public import static function QualityNameToInt( quality : CName ) : Int32;
	public import static function QualityToInt( quality : gamedataQuality ) : Int32;
	public import static function IntToQuality( quality : Int32 ) : gamedataQuality;

	public static function QualityToDefaultString( quality : gamedataQuality, optional type : RarityItemType ) : String
	{
		switch( type )
		{
			case RarityItemType.Item:
				return UIItemsHelper.QualityToTierString( quality );
			case RarityItemType.Cyberdeck:
				return UIItemsHelper.QualityToLocalizationKey( quality );
			case RarityItemType.Program:
				return UIItemsHelper.QualityToTierString( quality );
		}
		return UIItemsHelper.QualityToTierString( quality );
	}

	public static function QualityToTierString( quality : gamedataQuality ) : String
	{
		switch( quality )
		{
			case gamedataQuality.Common:
				return "Gameplay-RPG-Stats-Tiers-Tier1";
			case gamedataQuality.Uncommon:
				return "Gameplay-RPG-Stats-Tiers-Tier2";
			case gamedataQuality.Rare:
				return "Gameplay-RPG-Stats-Tiers-Tier3";
			case gamedataQuality.Epic:
				return "Gameplay-RPG-Stats-Tiers-Tier4";
			case gamedataQuality.Legendary:
				return "Gameplay-RPG-Stats-Tiers-Tier5";
			case gamedataQuality.Iconic:
				return UIItemsHelper.QualityToLocalizationKey( quality );
		}
		return "Gameplay-RPG-Stats-Tiers-Tier1";
	}

	public static function QualityToTierPlusString( quality : gamedataQuality ) : String
	{
		switch( quality )
		{
			case gamedataQuality.Common:
				return "Gameplay-RPG-Stats-Tiers-Tier1";
			case gamedataQuality.CommonPlus:
				return "Gameplay-RPG-Stats-Tiers-Tier1plus";
			case gamedataQuality.Uncommon:
				return "Gameplay-RPG-Stats-Tiers-Tier2";
			case gamedataQuality.UncommonPlus:
				return "Gameplay-RPG-Stats-Tiers-Tier2plus";
			case gamedataQuality.Rare:
				return "Gameplay-RPG-Stats-Tiers-Tier3";
			case gamedataQuality.RarePlus:
				return "Gameplay-RPG-Stats-Tiers-Tier3plus";
			case gamedataQuality.Epic:
				return "Gameplay-RPG-Stats-Tiers-Tier4";
			case gamedataQuality.EpicPlus:
				return "Gameplay-RPG-Stats-Tiers-Tier4plus";
			case gamedataQuality.Legendary:
				return "Gameplay-RPG-Stats-Tiers-Tier5";
			case gamedataQuality.LegendaryPlus:
				return "Gameplay-RPG-Stats-Tiers-Tier5plus";
			case gamedataQuality.LegendaryPlusPlus:
				return "Gameplay-RPG-Stats-Tiers-Tier5plusplus";
			case gamedataQuality.Iconic:
				return UIItemsHelper.QualityToLocalizationKey( quality );
		}
		return "Gameplay-RPG-Stats-Tiers-Tier1";
	}

	public static function GetStatTypeByDamageType( type : gamedataDamageType ) : gamedataStatType
	{
		switch( type )
		{
			case gamedataDamageType.Chemical:
				return gamedataStatType.ChemicalDamage;
			case gamedataDamageType.Electric:
				return gamedataStatType.ElectricDamage;
			case gamedataDamageType.Physical:
				return gamedataStatType.PhysicalDamage;
			case gamedataDamageType.Thermal:
				return gamedataStatType.ThermalDamage;
			default:
				return gamedataStatType.Invalid;
		}
	}

	public static function GetStateNameForDamageType( damageType : gamedataDamageType ) : CName
	{
		switch( damageType )
		{
			case gamedataDamageType.Chemical:
				return 'Chemical';
			case gamedataDamageType.Electric:
				return 'EMP';
			case gamedataDamageType.Physical:
				return 'Physical';
			case gamedataDamageType.Thermal:
				return 'Thermal';
			default:
				return inkWidget.DefaultState();
		}
	}

	public static function GetIconNameForDamageType( damageType : gamedataDamageType ) : String
	{
		switch( damageType )
		{
			case gamedataDamageType.Chemical:
				return "icon_chemical";
			case gamedataDamageType.Electric:
				return "icon_emp";
			case gamedataDamageType.Physical:
				return "icon_physical";
			case gamedataDamageType.Thermal:
				return "icon_thermal";
			default:
				return "None";
		}
	}

	public static function GetTweakDBIDForDamageType( damageType : gamedataDamageType ) : TweakDBID
	{
		switch( damageType )
		{
			case gamedataDamageType.Chemical:
				return T"UIIcon.DamageType_Chemical";
			case gamedataDamageType.Electric:
				return T"UIIcon.DamageType_EMP";
			case gamedataDamageType.Physical:
				return T"UIIcon.DamageType_Physical";
			case gamedataDamageType.Thermal:
				return T"UIIcon.DamageType_Thermal";
			default:
				return T"UIIcon.ItemIcon";
		}
	}

	public static function GetStateNameForType( damageType : gamedataDamageType ) : CName
	{
		switch( damageType )
		{
			case gamedataDamageType.Chemical:
				return 'Chemical';
			case gamedataDamageType.Electric:
				return 'EMP';
			case gamedataDamageType.Physical:
				return 'Physical';
			case gamedataDamageType.Thermal:
				return 'Thermal';
			default:
				return inkWidget.DefaultState();
		}
	}

	public static function GetStateNameForStat( statType : gamedataStatType ) : CName
	{
		switch( statType )
		{
			case gamedataStatType.ChemicalResistance:
			case gamedataStatType.ChemicalDamage:
				return 'Chemical';
			case gamedataStatType.ElectricDamage:
			case gamedataStatType.ElectricResistance:
				return 'EMP';
			case gamedataStatType.PhysicalDamage:
			case gamedataStatType.PhysicalResistance:
				return 'Physical';
			case gamedataStatType.ThermalResistance:
			case gamedataStatType.ThermalDamage:
				return 'Thermal';
			case gamedataStatType.Health:
				return 'Health';
			default:
				return inkWidget.DefaultState();
		}
	}

	public static function GetIconNameForStat( statType : gamedataStatType ) : CName
	{
		switch( statType )
		{
			case gamedataStatType.ChemicalResistance:
			case gamedataStatType.ChemicalDamage:
				return 'icon_chemical';
			case gamedataStatType.ElectricDamage:
			case gamedataStatType.ElectricResistance:
				return 'icon_emp';
			case gamedataStatType.PhysicalDamage:
			case gamedataStatType.PhysicalResistance:
				return 'icon_physical';
			case gamedataStatType.ThermalResistance:
			case gamedataStatType.ThermalDamage:
				return 'icon_thermal';
			case gamedataStatType.Health:
				return 'icon_health';
			default:
				return 'None';
		}
	}

	public static function GetBGIconNameForStat( statType : gamedataStatType ) : CName
	{
		switch( statType )
		{
			case gamedataStatType.ChemicalResistance:
			case gamedataStatType.ChemicalDamage:
				return 'scan_bg_3';
			case gamedataStatType.ElectricDamage:
			case gamedataStatType.ElectricResistance:
				return 'scan_bg_2';
			case gamedataStatType.PhysicalDamage:
			case gamedataStatType.PhysicalResistance:
				return 'scan_bg_1';
			case gamedataStatType.ThermalResistance:
			case gamedataStatType.ThermalDamage:
				return 'scan_bg_2';
			default:
				return 'None';
		}
	}

	public static function GetMellewareSecondaryTypeText( type : gamedataItemType ) : String
	{
		switch( type )
		{
			case gamedataItemType.Cyb_Launcher:
				return "LocKey#3722";
			case gamedataItemType.Cyb_MantisBlades:
				return "LocKey#77957";
			case gamedataItemType.Cyb_NanoWires:
				return "LocKey#3720";
			case gamedataItemType.Cyb_StrongArms:
				return "LocKey#776";
		}
		return "";
	}

	public static function GetMellewareEvolutionTexturePartByType( type : gamedataItemType ) : CName
	{
		switch( type )
		{
			case gamedataItemType.Cyb_Launcher:
				return 'ico_projectile_launcher';
			case gamedataItemType.Cyb_MantisBlades:
				return 'ico_blades';
			case gamedataItemType.Cyb_NanoWires:
				return 'ico_monowire';
			case gamedataItemType.Cyb_StrongArms:
				return 'ico_blunt';
		}
		return '';
	}

	public static function GetWeaponEvolutionTexturePart( evolution : gamedataWeaponEvolution ) : CName
	{
		switch( evolution )
		{
			case gamedataWeaponEvolution.Power:
				return 'ico_power';
			case gamedataWeaponEvolution.Smart:
				return 'ico_smart';
			case gamedataWeaponEvolution.Tech:
				return 'ico_tech-1';
			case gamedataWeaponEvolution.Blunt:
				return 'ico_blunt';
			case gamedataWeaponEvolution.Blade:
				return 'ico_blades';
			case gamedataWeaponEvolution.Throwable:
				return 'ico_throwables';
		}
		return '';
	}

	public static function WeaponEvolutionText( evolution : gamedataWeaponEvolution ) : String
	{
		switch( evolution )
		{
			case gamedataWeaponEvolution.Power:
				return "LocKey#54117";
			case gamedataWeaponEvolution.Smart:
				return "LocKey#54120";
			case gamedataWeaponEvolution.Tech:
				return "LocKey#54122";
			case gamedataWeaponEvolution.Blunt:
				return "LocKey#77969";
			case gamedataWeaponEvolution.Blade:
				return "LocKey#77960";
			case gamedataWeaponEvolution.Throwable:
				return "LocKey#91803";
		}
		return "";
	}

	public static function GetWeaponTypeIcon( itemType : gamedataItemType ) : CName
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_AssaultRifle:
				return 'UIIcon.WeaponTypeIcon_AssaultRifle';
			case gamedataItemType.Wea_Axe:
				return 'UIIcon.WeaponTypeIcon_Axe';
			case gamedataItemType.Wea_Chainsword:
				return 'UIIcon.WeaponTypeIcon_Chainsword';
			case gamedataItemType.Wea_Fists:
				return 'UIIcon.WeaponTypeIcon_Fists';
			case gamedataItemType.Wea_Hammer:
				return 'UIIcon.WeaponTypeIcon_Hammer';
			case gamedataItemType.Wea_Handgun:
				return 'UIIcon.WeaponTypeIcon_Handgun';
			case gamedataItemType.Wea_HeavyMachineGun:
				return 'UIIcon.WeaponTypeIcon_HeavyMachineGun';
			case gamedataItemType.Wea_Katana:
				return 'UIIcon.WeaponTypeIcon_Katana';
			case gamedataItemType.Wea_Sword:
				return 'UIIcon.WeaponTypeIcon_Sword';
			case gamedataItemType.Wea_Knife:
				return 'UIIcon.WeaponTypeIcon_Knife';
			case gamedataItemType.Wea_LightMachineGun:
				return 'UIIcon.WeaponTypeIcon_LightMachineGun';
			case gamedataItemType.Wea_LongBlade:
				return 'UIIcon.WeaponTypeIcon_LongBlade';
			case gamedataItemType.Wea_Machete:
				return 'UIIcon.WeaponTypeIcon_Machete';
			case gamedataItemType.Wea_Melee:
				return 'UIIcon.WeaponTypeIcon_Melee';
			case gamedataItemType.Wea_OneHandedClub:
				return 'UIIcon.WeaponTypeIcon_OneHandedClub';
			case gamedataItemType.Wea_PrecisionRifle:
				return 'UIIcon.WeaponTypeIcon_PrecisionRifle';
			case gamedataItemType.Wea_Revolver:
				return 'UIIcon.WeaponTypeIcon_Revolver';
			case gamedataItemType.Wea_Rifle:
				return 'UIIcon.WeaponTypeIcon_Rifle';
			case gamedataItemType.Wea_ShortBlade:
				return 'UIIcon.WeaponTypeIcon_ShortBlade';
			case gamedataItemType.Wea_Shotgun:
				return 'UIIcon.WeaponTypeIcon_Shotgun';
			case gamedataItemType.Wea_ShotgunDual:
				return 'UIIcon.WeaponTypeIcon_ShotgunDual';
			case gamedataItemType.Wea_SniperRifle:
				return 'UIIcon.WeaponTypeIcon_SniperRifle';
			case gamedataItemType.Wea_SubmachineGun:
				return 'UIIcon.WeaponTypeIcon_SubmachineGun';
			case gamedataItemType.Wea_TwoHandedClub:
				return 'UIIcon.WeaponTypeIcon_TwoHandedClub';
			case gamedataItemType.Wea_GrenadeLauncher:
				return 'UIIcon.WeaponTypeIcon_GrenadeLauncher';
		}
		return 'UIIcon.WeaponTypeIcon_Default';
	}

	public static function GetAmmoIconByType( itemType : gamedataItemType ) : CName
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_Handgun:
			case gamedataItemType.Wea_Revolver:
			case gamedataItemType.Wea_SubmachineGun:
				return 'ammo_handgun';
			case gamedataItemType.Wea_PrecisionRifle:
			case gamedataItemType.Wea_HeavyMachineGun:
			case gamedataItemType.Wea_LightMachineGun:
			case gamedataItemType.Wea_AssaultRifle:
			case gamedataItemType.Wea_Rifle:
				return 'ammo_rifle';
			case gamedataItemType.Wea_SniperRifle:
				return 'ammo_sniper';
			case gamedataItemType.Wea_Shotgun:
			case gamedataItemType.Wea_ShotgunDual:
				return 'ammo_shotgun';
			default:
				return '';
		}
	}

	public static function GetWeaponTooltipIcon( itemType : gamedataItemType ) : CName
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_AssaultRifle:
				return 'rifle_preci';
			case gamedataItemType.Wea_Handgun:
				return 'pistol';
			case gamedataItemType.Wea_HeavyMachineGun:
				return 'heavy_machine';
			case gamedataItemType.Wea_LightMachineGun:
				return 'light_machine';
			case gamedataItemType.Wea_PrecisionRifle:
				return 'rifle_preci';
			case gamedataItemType.Wea_Revolver:
				return 'revolver_tech';
			case gamedataItemType.Wea_Rifle:
				return 'rifle_preci';
			case gamedataItemType.Wea_Shotgun:
				return 'shotgun_power';
			case gamedataItemType.Wea_ShotgunDual:
				return 'shotgun_power';
			case gamedataItemType.Wea_SniperRifle:
				return 'sniper_smart';
			case gamedataItemType.Wea_SubmachineGun:
				return 'subma_power';
		}
		return '';
	}

	public static function GetBasicPerkRelevance( perkGroup : gamedataPerkWeaponGroupType ) : CName
	{
		switch( perkGroup )
		{
			case gamedataPerkWeaponGroupType.BodyGunsPerkWeaponGroup:
			case gamedataPerkWeaponGroupType.ShotgunsPerkWeaponGroup:
			case gamedataPerkWeaponGroupType.LMGsPerkWeaponGroup:
				return 'ico_body';
			case gamedataPerkWeaponGroupType.ReflexesGunsPerkWeaponGroup:
			case gamedataPerkWeaponGroupType.SMGsPerkWeaponGroup:
			case gamedataPerkWeaponGroupType.AssaultRiflesPerkWeaponGroup:
				return 'ico_ref';
			case gamedataPerkWeaponGroupType.CoolGunsPerkWeaponGroup:
			case gamedataPerkWeaponGroupType.HandgunsPerkWeaponGroup:
				return 'ico_cool';
		}
		return '';
	}

	public static function GetBasicPerkRelevanceGroup( itemType : gamedataItemType ) : gamedataPerkWeaponGroupType
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_Shotgun:
			case gamedataItemType.Wea_ShotgunDual:
			case gamedataItemType.Wea_LightMachineGun:
				return gamedataPerkWeaponGroupType.BodyGunsPerkWeaponGroup;
			case gamedataItemType.Wea_SubmachineGun:
			case gamedataItemType.Wea_AssaultRifle:
				return gamedataPerkWeaponGroupType.ReflexesGunsPerkWeaponGroup;
			case gamedataItemType.Wea_PrecisionRifle:
			case gamedataItemType.Wea_Revolver:
			case gamedataItemType.Wea_SniperRifle:
			case gamedataItemType.Wea_Handgun:
				return gamedataPerkWeaponGroupType.CoolGunsPerkWeaponGroup;
		}
		return gamedataPerkWeaponGroupType.Invalid;
	}

	public static function GetMasterPerkRelevanceGroup( itemType : gamedataItemType ) : gamedataPerkWeaponGroupType
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_AssaultRifle:
				return gamedataPerkWeaponGroupType.AssaultRiflesPerkWeaponGroup;
			case gamedataItemType.Wea_PrecisionRifle:
				return gamedataPerkWeaponGroupType.PrecisionGunsPerkWeaponGroup;
			case gamedataItemType.Wea_Handgun:
				return gamedataPerkWeaponGroupType.HandgunsPerkWeaponGroup;
			case gamedataItemType.Wea_LightMachineGun:
				return gamedataPerkWeaponGroupType.LMGsPerkWeaponGroup;
			case gamedataItemType.Wea_Shotgun:
			case gamedataItemType.Wea_ShotgunDual:
				return gamedataPerkWeaponGroupType.ShotgunsPerkWeaponGroup;
			case gamedataItemType.Wea_SubmachineGun:
				return gamedataPerkWeaponGroupType.SMGsPerkWeaponGroup;
		}
		return gamedataPerkWeaponGroupType.Invalid;
	}

	public static function PerkWeaponGroupToText( perkGroup : gamedataPerkWeaponGroupType ) : String
	{
		switch( perkGroup )
		{
			case gamedataPerkWeaponGroupType.AssaultRiflesPerkWeaponGroup:
				return "LocKey#91788";
			case gamedataPerkWeaponGroupType.BladesPerkWeaponGroup:
				return "LocKey#91789";
			case gamedataPerkWeaponGroupType.BluntsPerkWeaponGroup:
				return "LocKey#91790";
			case gamedataPerkWeaponGroupType.BodyGunsPerkWeaponGroup:
				return "LocKey#91791";
			case gamedataPerkWeaponGroupType.CoolGunsPerkWeaponGroup:
				return "LocKey#91792";
			case gamedataPerkWeaponGroupType.HandgunsPerkWeaponGroup:
				return "LocKey#91793";
			case gamedataPerkWeaponGroupType.LMGsPerkWeaponGroup:
				return "LocKey#91794";
			case gamedataPerkWeaponGroupType.PrecisionGunsPerkWeaponGroup:
				return "LocKey#91795";
			case gamedataPerkWeaponGroupType.ReflexesGunsPerkWeaponGroup:
				return "LocKey#91796";
			case gamedataPerkWeaponGroupType.SMGsPerkWeaponGroup:
				return "LocKey#91797";
			case gamedataPerkWeaponGroupType.ShotgunsPerkWeaponGroup:
				return "LocKey#91798";
			case gamedataPerkWeaponGroupType.SmartGunsPerkWeaponGroup:
				return "LocKey#91799";
			case gamedataPerkWeaponGroupType.TechGunsPerkWeaponGroup:
				return "LocKey#91800";
			case gamedataPerkWeaponGroupType.ThrowablePerkWeaponGroup:
				return "LocKey#91801";
		}
		return "";
	}

	public static function GetSlotShadowIcon( slotID : TweakDBID, itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( slotID )
		{
			case T"AttachmentSlots.Scope":
				return 'UIIcon.ItemShadow_Scope';
			case T"AttachmentSlots.PowerModule":
				return 'UIIcon.ItemShadow_Silencer';
			case T"AttachmentSlots.Magazine":
				return 'UIIcon.ItemShadow_Magazine';
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod1":
			case T"AttachmentSlots.Blade_WeaponMod2":
			case T"AttachmentSlots.Blade_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod1":
			case T"AttachmentSlots.Blunt_WeaponMod2":
			case T"AttachmentSlots.Blunt_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod2_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod1":
			case T"AttachmentSlots.Throwable_WeaponMod2":
			case T"AttachmentSlots.Throwable_WeaponMod1_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod2_Collectible":
				return 'UIIcon.ItemShadow_Mod';
			case T"AttachmentSlots.CyberdeckProgram1":
			case T"AttachmentSlots.CyberdeckProgram2":
			case T"AttachmentSlots.CyberdeckProgram3":
			case T"AttachmentSlots.CyberdeckProgram4":
			case T"AttachmentSlots.CyberdeckProgram5":
			case T"AttachmentSlots.CyberdeckProgram6":
			case T"AttachmentSlots.CyberdeckProgram7":
			case T"AttachmentSlots.CyberdeckProgram8":
			case T"AttachmentSlots.NanoWiresQuickhackSlot":
				return 'UIIcon.ItemShadow_Program';
			case T"AttachmentSlots.SandevistanSlot1":
			case T"AttachmentSlots.SandevistanSlot2":
			case T"AttachmentSlots.SandevistanSlot3":
			case T"AttachmentSlots.BerserkSlot1":
			case T"AttachmentSlots.BerserkSlot2":
			case T"AttachmentSlots.BerserkSlot3":
			case T"AttachmentSlots.KiroshiOpticsSlot1":
			case T"AttachmentSlots.KiroshiOpticsSlot2":
			case T"AttachmentSlots.KiroshiOpticsSlot3":
			case T"AttachmentSlots.StrongArmsKnuckles":
			case T"AttachmentSlots.StrongArmsBattery":
			case T"AttachmentSlots.MantisBladesEdge":
			case T"AttachmentSlots.MantisBladesRotor":
			case T"AttachmentSlots.NanoWiresCable":
			case T"AttachmentSlots.NanoWiresBattery":
			case T"AttachmentSlots.ProjectileLauncherRound":
			case T"AttachmentSlots.ProjectileLauncherWiring":
			case T"AttachmentSlots.ArmsCyberwareGeneralSlot":
				return 'UIIcon.ItemShadow_Fragment';
			case T"AttachmentSlots.HeadFabricEnhancer1":
			case T"AttachmentSlots.HeadFabricEnhancer2":
			case T"AttachmentSlots.HeadFabricEnhancer3":
			case T"AttachmentSlots.FaceFabricEnhancer1":
			case T"AttachmentSlots.FaceFabricEnhancer2":
			case T"AttachmentSlots.FaceFabricEnhancer3":
			case T"AttachmentSlots.InnerChestFabricEnhancer1":
			case T"AttachmentSlots.InnerChestFabricEnhancer2":
			case T"AttachmentSlots.InnerChestFabricEnhancer3":
			case T"AttachmentSlots.OuterChestFabricEnhancer1":
			case T"AttachmentSlots.OuterChestFabricEnhancer2":
			case T"AttachmentSlots.OuterChestFabricEnhancer3":
			case T"AttachmentSlots.LegsFabricEnhancer1":
			case T"AttachmentSlots.LegsFabricEnhancer2":
			case T"AttachmentSlots.LegsFabricEnhancer3":
			case T"AttachmentSlots.FootFabricEnhancer1":
			case T"AttachmentSlots.FootFabricEnhancer2":
			case T"AttachmentSlots.FootFabricEnhancer3":
				return 'UIIcon.ItemShadow_Material';
		}
		return GetSlotShadowIcon( itemType, equipmentArea );
	}

	public static function GetSlotShadowIcon( itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( itemType )
		{
			case gamedataItemType.Prt_FabricEnhancer:
				return 'UIIcon.ItemShadow_Material';
			case gamedataItemType.Prt_Fragment:
				return 'UIIcon.ItemShadow_Fragment';
			case gamedataItemType.Prt_Magazine:
				return 'UIIcon.ItemShadow_Magazine';
			case gamedataItemType.Prt_Mod:
			case gamedataItemType.Prt_RangedMod:
			case gamedataItemType.Prt_PowerMod:
			case gamedataItemType.Prt_TechMod:
			case gamedataItemType.Prt_SmartMod:
			case gamedataItemType.Prt_AR_SMG_LMGMod:
			case gamedataItemType.Prt_HandgunMod:
			case gamedataItemType.Prt_Precision_Sniper_RifleMod:
			case gamedataItemType.Prt_ShotgunMod:
			case gamedataItemType.Prt_MeleeMod:
			case gamedataItemType.Prt_BladeMod:
			case gamedataItemType.Prt_BluntMod:
			case gamedataItemType.Prt_ThrowableMod:
				return 'UIIcon.ItemShadow_Mod';
			case gamedataItemType.Prt_Muzzle:
			case gamedataItemType.Prt_HandgunMuzzle:
			case gamedataItemType.Prt_RifleMuzzle:
				return 'UIIcon.ItemShadow_Silencer';
			case gamedataItemType.Prt_Program:
				return 'UIIcon.ItemShadow_Program';
			case gamedataItemType.Prt_Receiver:
				return 'UIIcon.ItemShadow_Receiver';
			case gamedataItemType.Prt_Scope:
			case gamedataItemType.Prt_ShortScope:
			case gamedataItemType.Prt_LongScope:
			case gamedataItemType.Prt_TechSniperScope:
			case gamedataItemType.Prt_PowerSniperScope:
				return 'UIIcon.ItemShadow_Scope';
			case gamedataItemType.Prt_ScopeRail:
				return 'UIIcon.ItemShadow_ScopeRail';
			case gamedataItemType.Prt_Stock:
				return 'UIIcon.ItemShadow_Stock';
			case gamedataItemType.Prt_TargetingSystem:
				return 'UIIcon.ItemShadow_TargetingSystem';
		}
		return GetSlotShadowIcon( equipmentArea );
	}

	public static function GetSlotShadowIcon( equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( equipmentArea )
		{
			case gamedataEquipmentArea.Consumable:
				return 'UIIcon.ItemShadow_Consumable';
			case gamedataEquipmentArea.AbilityCW:
				return 'UIIcon.ItemShadow_Cyberware';
			case gamedataEquipmentArea.Face:
				return 'UIIcon.ItemShadow_Face';
			case gamedataEquipmentArea.Feet:
				return 'UIIcon.ItemShadow_Feet';
			case gamedataEquipmentArea.QuickSlot:
			case gamedataEquipmentArea.Gadget:
				return 'UIIcon.ItemShadow_Grenade';
			case gamedataEquipmentArea.Head:
				return 'UIIcon.ItemShadow_Head';
			case gamedataEquipmentArea.InnerChest:
				return 'UIIcon.ItemShadow_InnerChest';
			case gamedataEquipmentArea.Legs:
				return 'UIIcon.ItemShadow_Legs';
			case gamedataEquipmentArea.OuterChest:
				return 'UIIcon.ItemShadow_OuterChest';
			case gamedataEquipmentArea.Outfit:
				return 'UIIcon.ItemShadow_Outfit';
			case gamedataEquipmentArea.Weapon:
				return 'UIIcon.ItemShadow_Weapon';
		}
		return 'UIIcon.ItemShadow_Default';
	}

	public static function GetLootingShadowIcon( itemTDBID : TweakDBID, slotID : TweakDBID, itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( itemTDBID )
		{
			case T"Items.money":
				return 'UIIcon.LootingShadow_Cash';
			case T"Ammo.HandgunAmmo":
				return 'UIIcon.LootingShadow_HandgunAmmo';
			case T"Ammo.ShotgunAmmo":
				return 'UIIcon.LootingShadow_ShotgunAmmo';
			case T"Ammo.RifleAmmo":
				return 'UIIcon.LootingShadow_RifleAmmo';
			case T"Ammo.SniperRifleAmmo":
				return 'UIIcon.LootingShadow_SniperRifleAmmo';
		}
		return GetLootingShadowIcon( slotID, itemType, equipmentArea );
	}

	public static function GetLootingShadowIcon( slotID : TweakDBID, itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( slotID )
		{
			case T"AttachmentSlots.Scope":
				return 'UIIcon.LootingShadow_Scope';
			case T"AttachmentSlots.PowerModule":
				return 'UIIcon.LootingShadow_Silencer';
			case T"AttachmentSlots.Magazine":
				return 'UIIcon.LootingShadow_Magazine';
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod1":
			case T"AttachmentSlots.Blade_WeaponMod2":
			case T"AttachmentSlots.Blade_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod1":
			case T"AttachmentSlots.Blunt_WeaponMod2":
			case T"AttachmentSlots.Blunt_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod2_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod1":
			case T"AttachmentSlots.Throwable_WeaponMod2":
			case T"AttachmentSlots.Throwable_WeaponMod1_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod2_Collectible":
				return 'UIIcon.LootingShadow_Mod';
			case T"AttachmentSlots.CyberdeckProgram1":
			case T"AttachmentSlots.CyberdeckProgram2":
			case T"AttachmentSlots.CyberdeckProgram3":
			case T"AttachmentSlots.CyberdeckProgram4":
			case T"AttachmentSlots.CyberdeckProgram5":
			case T"AttachmentSlots.CyberdeckProgram6":
			case T"AttachmentSlots.CyberdeckProgram7":
			case T"AttachmentSlots.CyberdeckProgram8":
			case T"AttachmentSlots.NanoWiresQuickhackSlot":
				return 'UIIcon.LootingShadow_Program';
			case T"AttachmentSlots.SandevistanSlot1":
			case T"AttachmentSlots.SandevistanSlot2":
			case T"AttachmentSlots.SandevistanSlot3":
			case T"AttachmentSlots.BerserkSlot1":
			case T"AttachmentSlots.BerserkSlot2":
			case T"AttachmentSlots.BerserkSlot3":
			case T"AttachmentSlots.KiroshiOpticsSlot1":
			case T"AttachmentSlots.KiroshiOpticsSlot2":
			case T"AttachmentSlots.KiroshiOpticsSlot3":
			case T"AttachmentSlots.StrongArmsKnuckles":
			case T"AttachmentSlots.StrongArmsBattery":
			case T"AttachmentSlots.MantisBladesEdge":
			case T"AttachmentSlots.MantisBladesRotor":
			case T"AttachmentSlots.NanoWiresCable":
			case T"AttachmentSlots.NanoWiresBattery":
			case T"AttachmentSlots.ProjectileLauncherRound":
			case T"AttachmentSlots.ProjectileLauncherWiring":
			case T"AttachmentSlots.ArmsCyberwareGeneralSlot":
				return 'UIIcon.LootingShadow_Fragment';
			case T"AttachmentSlots.HeadFabricEnhancer1":
			case T"AttachmentSlots.HeadFabricEnhancer2":
			case T"AttachmentSlots.HeadFabricEnhancer3":
			case T"AttachmentSlots.FaceFabricEnhancer1":
			case T"AttachmentSlots.FaceFabricEnhancer2":
			case T"AttachmentSlots.FaceFabricEnhancer3":
			case T"AttachmentSlots.InnerChestFabricEnhancer1":
			case T"AttachmentSlots.InnerChestFabricEnhancer2":
			case T"AttachmentSlots.InnerChestFabricEnhancer3":
			case T"AttachmentSlots.OuterChestFabricEnhancer1":
			case T"AttachmentSlots.OuterChestFabricEnhancer2":
			case T"AttachmentSlots.OuterChestFabricEnhancer3":
			case T"AttachmentSlots.LegsFabricEnhancer1":
			case T"AttachmentSlots.LegsFabricEnhancer2":
			case T"AttachmentSlots.LegsFabricEnhancer3":
			case T"AttachmentSlots.FootFabricEnhancer1":
			case T"AttachmentSlots.FootFabricEnhancer2":
			case T"AttachmentSlots.FootFabricEnhancer3":
				return 'UIIcon.LootingShadow_Material';
		}
		return GetLootingShadowIcon( itemType, equipmentArea );
	}

	public static function GetLootingShadowIcon( itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( itemType )
		{
			case gamedataItemType.Prt_FabricEnhancer:
			case gamedataItemType.Prt_TorsoFabricEnhancer:
			case gamedataItemType.Prt_HeadFabricEnhancer:
			case gamedataItemType.Prt_FaceFabricEnhancer:
			case gamedataItemType.Prt_OuterTorsoFabricEnhancer:
			case gamedataItemType.Prt_PantsFabricEnhancer:
			case gamedataItemType.Prt_BootsFabricEnhancer:
				return 'UIIcon.LootingShadow_Material';
			case gamedataItemType.Prt_Fragment:
				return 'UIIcon.LootingShadow_Fragment';
			case gamedataItemType.Prt_Magazine:
				return 'UIIcon.LootingShadow_Magazine';
			case gamedataItemType.Prt_Mod:
			case gamedataItemType.Prt_RangedMod:
			case gamedataItemType.Prt_PowerMod:
			case gamedataItemType.Prt_TechMod:
			case gamedataItemType.Prt_SmartMod:
			case gamedataItemType.Prt_AR_SMG_LMGMod:
			case gamedataItemType.Prt_HandgunMod:
			case gamedataItemType.Prt_Precision_Sniper_RifleMod:
			case gamedataItemType.Prt_ShotgunMod:
			case gamedataItemType.Prt_MeleeMod:
			case gamedataItemType.Prt_BladeMod:
			case gamedataItemType.Prt_BluntMod:
			case gamedataItemType.Prt_ThrowableMod:
				return 'UIIcon.LootingShadow_Mod';
			case gamedataItemType.Prt_Muzzle:
			case gamedataItemType.Prt_HandgunMuzzle:
			case gamedataItemType.Prt_RifleMuzzle:
				return 'UIIcon.LootingShadow_Silencer';
			case gamedataItemType.Prt_Program:
				return 'UIIcon.LootingShadow_Program';
			case gamedataItemType.Prt_Receiver:
				return 'UIIcon.Lootinghadow_Receiver';
			case gamedataItemType.Prt_Scope:
			case gamedataItemType.Prt_ShortScope:
			case gamedataItemType.Prt_LongScope:
			case gamedataItemType.Prt_TechSniperScope:
			case gamedataItemType.Prt_PowerSniperScope:
				return 'UIIcon.LootingShadow_Scope';
			case gamedataItemType.Prt_ScopeRail:
				return 'UIIcon.LootingShadow_ScopeRail';
			case gamedataItemType.Prt_Stock:
				return 'UIIcon.LootingShadow_Stock';
			case gamedataItemType.Prt_TargetingSystem:
				return 'UIIcon.LootingShadow_TargetingSystem';
			case gamedataItemType.Con_Inhaler:
				return 'UIIcon.LootingShadow_Inhaler';
			case gamedataItemType.Con_Injector:
				return 'UIIcon.LootingShadow_Injector';
			case gamedataItemType.Gen_Readable:
				return 'UIIcon.LootingShadow_Shard';
			case gamedataItemType.Gen_Junk:
				return 'UIIcon.LootingShadow_Junk';
			case gamedataItemType.Gen_Jewellery:
				return 'UIIcon.LootingShadow_Junk';
			case gamedataItemType.Wea_AssaultRifle:
				return 'UIIcon.WeaponTypeIcon_AssaultRifle';
			case gamedataItemType.Wea_Axe:
				return 'UIIcon.WeaponTypeIcon_Axe';
			case gamedataItemType.Wea_Chainsword:
				return 'UIIcon.WeaponTypeIcon_Chainsword';
			case gamedataItemType.Wea_Fists:
				return 'UIIcon.WeaponTypeIcon_Fists';
			case gamedataItemType.Wea_Hammer:
				return 'UIIcon.WeaponTypeIcon_Hammer';
			case gamedataItemType.Wea_Handgun:
				return 'UIIcon.WeaponTypeIcon_Handgun';
			case gamedataItemType.Wea_HeavyMachineGun:
				return 'UIIcon.WeaponTypeIcon_HeavyMachineGun';
			case gamedataItemType.Wea_Katana:
				return 'UIIcon.WeaponTypeIcon_Katana';
			case gamedataItemType.Wea_Sword:
				return 'UIIcon.WeaponTypeIcon_Sword';
			case gamedataItemType.Wea_Knife:
				return 'UIIcon.WeaponTypeIcon_Knife';
			case gamedataItemType.Wea_LightMachineGun:
				return 'UIIcon.WeaponTypeIcon_LightMachineGun';
			case gamedataItemType.Wea_LongBlade:
				return 'UIIcon.WeaponTypeIcon_LongBlade';
			case gamedataItemType.Wea_Machete:
				return 'UIIcon.WeaponTypeIcon_Machete';
			case gamedataItemType.Wea_Melee:
				return 'UIIcon.WeaponTypeIcon_Melee';
			case gamedataItemType.Wea_OneHandedClub:
				return 'UIIcon.WeaponTypeIcon_OneHandedClub';
			case gamedataItemType.Wea_PrecisionRifle:
				return 'UIIcon.WeaponTypeIcon_PrecisionRifle';
			case gamedataItemType.Wea_Revolver:
				return 'UIIcon.WeaponTypeIcon_Revolver';
			case gamedataItemType.Wea_Rifle:
				return 'UIIcon.WeaponTypeIcon_Rifle';
			case gamedataItemType.Wea_ShortBlade:
				return 'UIIcon.WeaponTypeIcon_ShortBlade';
			case gamedataItemType.Wea_Shotgun:
				return 'UIIcon.WeaponTypeIcon_Shotgun';
			case gamedataItemType.Wea_ShotgunDual:
				return 'UIIcon.WeaponTypeIcon_ShotgunDual';
			case gamedataItemType.Wea_SniperRifle:
				return 'UIIcon.WeaponTypeIcon_SniperRifle';
			case gamedataItemType.Wea_SubmachineGun:
				return 'UIIcon.WeaponTypeIcon_SubmachineGun';
			case gamedataItemType.Wea_TwoHandedClub:
				return 'UIIcon.WeaponTypeIcon_TwoHandedClub';
			case gamedataItemType.Gen_CraftingMaterial:
				return 'UIIcon.LootingShadow_Material';
			case gamedataItemType.Con_Skillbook:
				return 'UIIcon.LootingShadow_Shard';
		}
		return GetLootingShadowIcon( equipmentArea );
	}

	public static function GetLootingShadowIcon( equipmentArea : gamedataEquipmentArea ) : CName
	{
		switch( equipmentArea )
		{
			case gamedataEquipmentArea.Consumable:
				return 'UIIcon.LootingShadow_Consumable';
			case gamedataEquipmentArea.AbilityCW:
			case gamedataEquipmentArea.CardiovascularSystemCW:
			case gamedataEquipmentArea.EyesCW:
			case gamedataEquipmentArea.FrontalCortexCW:
			case gamedataEquipmentArea.HandsCW:
			case gamedataEquipmentArea.ImmuneSystemCW:
			case gamedataEquipmentArea.IntegumentarySystemCW:
			case gamedataEquipmentArea.LegsCW:
			case gamedataEquipmentArea.MusculoskeletalSystemCW:
			case gamedataEquipmentArea.NervousSystemCW:
			case gamedataEquipmentArea.SystemReplacementCW:
				return 'UIIcon.LootingShadow_Cyberware';
			case gamedataEquipmentArea.Face:
				return 'UIIcon.LootingShadow_Face';
			case gamedataEquipmentArea.Feet:
				return 'UIIcon.LootingShadow_Feet';
			case gamedataEquipmentArea.QuickSlot:
			case gamedataEquipmentArea.Gadget:
				return 'UIIcon.LootingShadow_Grenade';
			case gamedataEquipmentArea.Head:
				return 'UIIcon.LootingShadow_Head';
			case gamedataEquipmentArea.InnerChest:
				return 'UIIcon.LootingShadow_InnerChest';
			case gamedataEquipmentArea.Legs:
				return 'UIIcon.LootingShadow_Legs';
			case gamedataEquipmentArea.OuterChest:
				return 'UIIcon.LootingShadow_OuterChest';
			case gamedataEquipmentArea.Outfit:
				return 'UIIcon.LootingShadow_Outfit';
			case gamedataEquipmentArea.Weapon:
				return 'UIIcon.LootingShadow_Weapon';
		}
		return 'UIIcon.LootingShadow_Default';
	}

	public static function GetSlotName( slotID : TweakDBID, itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : String
	{
		switch( slotID )
		{
			case T"AttachmentSlots.Scope":
				return "Gameplay-Items-Item Type-Prt_Scope";
			case T"AttachmentSlots.PowerModule":
				return "Gameplay-Items-Item Type-Prt_Muzzle";
			case T"AttachmentSlots.Magazine":
				return "Gameplay-Items-Item Type-Prt_Magazine";
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod1":
			case T"AttachmentSlots.Blade_WeaponMod2":
			case T"AttachmentSlots.Blade_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod1":
			case T"AttachmentSlots.Blunt_WeaponMod2":
			case T"AttachmentSlots.Blunt_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod2_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod1":
			case T"AttachmentSlots.Throwable_WeaponMod2":
			case T"AttachmentSlots.Throwable_WeaponMod1_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod2_Collectible":
				return "Gameplay-Items-Item Type-Prt_Mod";
			case T"AttachmentSlots.CyberdeckProgram1":
			case T"AttachmentSlots.CyberdeckProgram2":
			case T"AttachmentSlots.CyberdeckProgram3":
			case T"AttachmentSlots.CyberdeckProgram4":
			case T"AttachmentSlots.CyberdeckProgram5":
			case T"AttachmentSlots.CyberdeckProgram6":
			case T"AttachmentSlots.CyberdeckProgram7":
			case T"AttachmentSlots.CyberdeckProgram8":
			case T"AttachmentSlots.NanoWiresQuickhackSlot":
				return "Gameplay-Items-Item Type-Prt_Program";
			case T"AttachmentSlots.SandevistanSlot1":
			case T"AttachmentSlots.SandevistanSlot2":
			case T"AttachmentSlots.SandevistanSlot3":
			case T"AttachmentSlots.BerserkSlot1":
			case T"AttachmentSlots.BerserkSlot2":
			case T"AttachmentSlots.BerserkSlot3":
			case T"AttachmentSlots.KiroshiOpticsSlot1":
			case T"AttachmentSlots.KiroshiOpticsSlot2":
			case T"AttachmentSlots.KiroshiOpticsSlot3":
			case T"AttachmentSlots.StrongArmsKnuckles":
			case T"AttachmentSlots.StrongArmsBattery":
			case T"AttachmentSlots.MantisBladesEdge":
			case T"AttachmentSlots.MantisBladesRotor":
			case T"AttachmentSlots.NanoWiresCable":
			case T"AttachmentSlots.NanoWiresBattery":
			case T"AttachmentSlots.ProjectileLauncherRound":
			case T"AttachmentSlots.ProjectileLauncherWiring":
			case T"AttachmentSlots.ArmsCyberwareGeneralSlot":
				return "Gameplay-Items-Item Type-Prt_Fragment";
			case T"AttachmentSlots.HeadFabricEnhancer1":
			case T"AttachmentSlots.HeadFabricEnhancer2":
			case T"AttachmentSlots.HeadFabricEnhancer3":
			case T"AttachmentSlots.FaceFabricEnhancer1":
			case T"AttachmentSlots.FaceFabricEnhancer2":
			case T"AttachmentSlots.FaceFabricEnhancer3":
			case T"AttachmentSlots.InnerChestFabricEnhancer1":
			case T"AttachmentSlots.InnerChestFabricEnhancer2":
			case T"AttachmentSlots.InnerChestFabricEnhancer3":
			case T"AttachmentSlots.OuterChestFabricEnhancer1":
			case T"AttachmentSlots.OuterChestFabricEnhancer2":
			case T"AttachmentSlots.OuterChestFabricEnhancer3":
			case T"AttachmentSlots.LegsFabricEnhancer1":
			case T"AttachmentSlots.LegsFabricEnhancer2":
			case T"AttachmentSlots.LegsFabricEnhancer3":
			case T"AttachmentSlots.FootFabricEnhancer1":
			case T"AttachmentSlots.FootFabricEnhancer2":
			case T"AttachmentSlots.FootFabricEnhancer3":
				return "Gameplay-Items-Item Type-Prt_FabricEnhancer";
		}
		return GetSlotName( itemType, equipmentArea );
	}

	public static function GetSlotName( itemType : gamedataItemType, equipmentArea : gamedataEquipmentArea ) : String
	{
		switch( itemType )
		{
			case gamedataItemType.Prt_Capacitor:
				return "Gameplay-Items-Item Type-Prt_Capacitor";
			case gamedataItemType.Prt_FabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_FabricEnhancer";
			case gamedataItemType.Prt_Fragment:
				return "Gameplay-Items-Item Type-Prt_Fragment";
			case gamedataItemType.Prt_Magazine:
				return "Gameplay-Items-Item Type-Prt_Magazine";
			case gamedataItemType.Prt_Mod:
				return "Gameplay-Items-Item Type-Prt_Mod";
			case gamedataItemType.Prt_Muzzle:
				return "Gameplay-Items-Item Type-Prt_Muzzle";
			case gamedataItemType.Prt_Program:
				return "Gameplay-Items-Item Type-Prt_Program";
			case gamedataItemType.Prt_Receiver:
				return "Gameplay-Items-Item Type-Prt_Receiver";
			case gamedataItemType.Prt_Scope:
				return "Gameplay-Items-Item Type-Prt_Scope";
			case gamedataItemType.Prt_ScopeRail:
				return "Gameplay-Items-Item Type-Prt_ScopeRail";
			case gamedataItemType.Prt_Stock:
				return "Gameplay-Items-Item Type-Prt_Stock";
			case gamedataItemType.Prt_TargetingSystem:
				return "Gameplay-Items-Item Type-Prt_TargetingSystem";
		}
		return GetSlotName( equipmentArea );
	}

	public static function GetSlotName( equipmentArea : gamedataEquipmentArea ) : String
	{
		switch( equipmentArea )
		{
			case gamedataEquipmentArea.Consumable:
				return "UI-Inventory-Tooltips-ConsumablesDescription";
			case gamedataEquipmentArea.AbilityCW:
				return "UI-Inventory-Tooltips-CyberwareDescription";
			case gamedataEquipmentArea.Face:
				return "UI-Inventory-Tooltips-FaceDescription";
			case gamedataEquipmentArea.Feet:
				return "UI-Inventory-Tooltips-FeetDescription";
			case gamedataEquipmentArea.QuickSlot:
			case gamedataEquipmentArea.Gadget:
				return "UI-Inventory-Tooltips-GadgetsDescription";
			case gamedataEquipmentArea.Head:
				return "UI-Inventory-Tooltips-HeadDescription";
			case gamedataEquipmentArea.InnerChest:
				return "UI-Inventory-Tooltips-InnerChestDescription";
			case gamedataEquipmentArea.Legs:
				return "UI-Inventory-Tooltips-LegsDescription";
			case gamedataEquipmentArea.OuterChest:
				return "UI-Inventory-Tooltips-OuterChestDescription";
			case gamedataEquipmentArea.Outfit:
				return "UI-Inventory-Tooltips-OutfitDescription";
			case gamedataEquipmentArea.Weapon:
				return "UI-Inventory-Tooltips-WeaponDescription";
		}
		return "";
	}

	public static function GetItemTypeKey( itemData : weak< gameItemData >, equipmentArea : gamedataEquipmentArea, itemID : TweakDBID, itemType : gamedataItemType, weaponEvolutionType : gamedataWeaponEvolution ) : String
	{
		return GetItemTypeKey( equipmentArea, itemID, itemType, weaponEvolutionType );
	}

	public static function GetItemTypeKey( equipmentArea : gamedataEquipmentArea, itemID : TweakDBID, itemType : gamedataItemType, weaponEvolutionType : gamedataWeaponEvolution ) : String
	{
		switch( equipmentArea )
		{
			case gamedataEquipmentArea.AbilityCW:
			case gamedataEquipmentArea.ArmsCW:
			case gamedataEquipmentArea.CardiovascularSystemCW:
			case gamedataEquipmentArea.EyesCW:
			case gamedataEquipmentArea.FrontalCortexCW:
			case gamedataEquipmentArea.HandsCW:
			case gamedataEquipmentArea.ImmuneSystemCW:
			case gamedataEquipmentArea.IntegumentarySystemCW:
			case gamedataEquipmentArea.LegsCW:
			case gamedataEquipmentArea.MusculoskeletalSystemCW:
			case gamedataEquipmentArea.NervousSystemCW:
			case gamedataEquipmentArea.SystemReplacementCW:
				return "UI-Inventory-Tooltips-CyberwareDescription";
		}
		return GetItemTypeKey( itemID, itemType, weaponEvolutionType );
	}

	public static function GetItemTypeKey( itemID : TweakDBID, itemType : gamedataItemType, weaponEvolutionType : gamedataWeaponEvolution ) : String
	{
		switch( itemID )
		{
			case T"Items.money":
				return "UI-ItemLabel-Money";
		}
		return GetItemTypeKey( itemType, weaponEvolutionType );
	}

	public static function GetItemTypeKey( itemType : gamedataItemType, weaponEvolutionType : gamedataWeaponEvolution ) : String
	{
		var keySuffix : String;
		switch( weaponEvolutionType )
		{
			case gamedataWeaponEvolution.Power:
				keySuffix = "_Power";
			break;
			case gamedataWeaponEvolution.Smart:
				keySuffix = "_Smart";
			break;
			case gamedataWeaponEvolution.Tech:
				keySuffix = "_Tech";
			break;
		}
		if( IsStringValid( keySuffix ) )
		{
			return GetEvolutionWeaponType( itemType ) + keySuffix;
		}
		return GetItemTypeKey( itemType );
	}

	public static function GetEvolutionWeaponType( itemType : gamedataItemType ) : String
	{
		switch( itemType )
		{
			case gamedataItemType.Wea_AssaultRifle:
				return "UI-WeaponItemType-Wea_AssaultRifle";
			case gamedataItemType.Wea_Axe:
				return "UI-WeaponItemType-Wea_Axe";
			case gamedataItemType.Wea_Chainsword:
				return "UI-WeaponItemType-Wea_Chainsword";
			case gamedataItemType.Wea_Fists:
				return "UI-WeaponItemType-Wea_Fists";
			case gamedataItemType.Wea_Hammer:
				return "UI-WeaponItemType-Wea_Hammer";
			case gamedataItemType.Wea_Handgun:
				return "UI-WeaponItemType-Wea_Handgun";
			case gamedataItemType.Wea_HeavyMachineGun:
				return "UI-WeaponItemType-Wea_HeavyMachineGun";
			case gamedataItemType.Wea_Katana:
				return "UI-WeaponItemType-Wea_Katana";
			case gamedataItemType.Wea_Sword:
				return "UI-WeaponItemType-Wea_Sword";
			case gamedataItemType.Wea_Knife:
				return "UI-WeaponItemType-Wea_Knife";
			case gamedataItemType.Wea_LightMachineGun:
				return "UI-WeaponItemType-Wea_LightMachineGun";
			case gamedataItemType.Wea_LongBlade:
				return "UI-WeaponItemType-Wea_LongBlade";
			case gamedataItemType.Wea_Machete:
				return "UI-WeaponItemType-Wea_Machete";
			case gamedataItemType.Wea_Melee:
				return "UI-WeaponItemType-Wea_Melee";
			case gamedataItemType.Wea_OneHandedClub:
				return "UI-WeaponItemType-Wea_OneHandedClub";
			case gamedataItemType.Wea_PrecisionRifle:
				return "UI-WeaponItemType-Wea_PrecisionRifle";
			case gamedataItemType.Wea_Revolver:
				return "UI-WeaponItemType-Wea_Revolver";
			case gamedataItemType.Wea_Rifle:
				return "UI-WeaponItemType-Wea_Rifle";
			case gamedataItemType.Wea_ShortBlade:
				return "UI-WeaponItemType-Wea_ShortBlade";
			case gamedataItemType.Wea_Shotgun:
				return "UI-WeaponItemType-Wea_Shotgun";
			case gamedataItemType.Wea_ShotgunDual:
				return "UI-WeaponItemType-Wea_ShotgunDual";
			case gamedataItemType.Wea_SniperRifle:
				return "UI-WeaponItemType-Wea_SniperRifle";
			case gamedataItemType.Wea_SubmachineGun:
				return "UI-WeaponItemType-Wea_SubmachineGun";
			case gamedataItemType.Wea_TwoHandedClub:
				return "UI-WeaponItemType-Wea_TwoHandedClub";
		}
		return "MISSING KEY";
	}

	public static function GetItemTypeKey( itemType : gamedataItemType ) : String
	{
		switch( itemType )
		{
			case gamedataItemType.Clo_Face:
				return "Gameplay-Items-Item Type-Clo_Face";
			case gamedataItemType.Clo_Feet:
				return "Gameplay-Items-Item Type-Clo_Feet";
			case gamedataItemType.Clo_Head:
				return "Gameplay-Items-Item Type-Clo_Head";
			case gamedataItemType.Clo_InnerChest:
				return "Gameplay-Items-Item Type-Clo_InnerChest";
			case gamedataItemType.Clo_Legs:
				return "Gameplay-Items-Item Type-Clo_Legs";
			case gamedataItemType.Clo_OuterChest:
				return "Gameplay-Items-Item Type-Clo_OuterChest";
			case gamedataItemType.Clo_Outfit:
				return "Gameplay-Items-Item Type-Clo_Outfit";
			case gamedataItemType.Con_Ammo:
				return "Gameplay-RPG-Items-Types-Con_Ammo";
			case gamedataItemType.Con_Edible:
				return "Gameplay-Items-Item Type-Con_Edible";
			case gamedataItemType.Con_Inhaler:
				return "Gameplay-Items-Item Type-Con_Inhaler";
			case gamedataItemType.Con_Injector:
				return "Gameplay-Items-Item Type-Con_Injector";
			case gamedataItemType.Con_LongLasting:
				return "Gameplay-Items-Item Type-Con_LongLasting";
			case gamedataItemType.Con_Skillbook:
				return "Gameplay-Items-Item Type-Con_Skillbook";
			case gamedataItemType.Cyb_Ability:
				return "Gameplay-RPG-Items-Types-Cyb_Ability";
			case gamedataItemType.Cyb_Launcher:
				return "Gameplay-Items-Item Type-Cyb_Launcher";
			case gamedataItemType.Cyb_MantisBlades:
				return "Gameplay-Items-Item Type-Cyb_MantisBlades";
			case gamedataItemType.Cyb_NanoWires:
				return "Gameplay-Items-Item Type-Cyb_NanoWires";
			case gamedataItemType.Cyb_StrongArms:
				return "Gameplay-Items-Item Type-Cyb_StrongArms";
			case gamedataItemType.Fla_Launcher:
				return "MISSING KEY";
			case gamedataItemType.Fla_Rifle:
				return "MISSING KEY";
			case gamedataItemType.Fla_Shock:
				return "MISSING KEY";
			case gamedataItemType.Fla_Support:
				return "MISSING KEY";
			case gamedataItemType.Gad_Grenade:
				return "Gameplay-RPG-Items-Types-Gad_Grenade";
			case gamedataItemType.Gen_CraftingMaterial:
				return "Gameplay-Items-Item Type-Gen_CraftingMaterial";
			case gamedataItemType.Gen_Junk:
				return "Gameplay-Items-Item Type-Gen_Junk";
			case gamedataItemType.Gen_Jewellery:
				return "Gameplay-Items-Item Type-Gen_Jewellery";
			case gamedataItemType.Gen_Keycard:
				return "Gameplay-Items-Item Type-Gen_Keycard";
			case gamedataItemType.Gen_Misc:
				return "Gameplay-Items-Item Type-Gen_Misc";
			case gamedataItemType.Gen_Tarot:
				return "UI-MappinTypes-Tarot";
			case gamedataItemType.Gen_Readable:
				return "Gameplay-Items-Item Type-Gen_Readable";
			case gamedataItemType.GrenadeDelivery:
				return "Gameplay-Items-Item Type-Prt_DeliveryMethod";
			case gamedataItemType.Grenade_Core:
				return "Gameplay-Items-Item Type-Prt_GrenadeCore";
			case gamedataItemType.Prt_Capacitor:
				return "Gameplay-Items-Item Type-Prt_Capacitor";
			case gamedataItemType.Prt_FabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_FabricEnhancer";
			case gamedataItemType.Prt_HeadFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_HeadFabricEnhancer";
			case gamedataItemType.Prt_FaceFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_FaceFabricEnhancer";
			case gamedataItemType.Prt_TorsoFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_TorsoFabricEnhancer";
			case gamedataItemType.Prt_OuterTorsoFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_OuterTorsoFabricEnhancer";
			case gamedataItemType.Prt_PantsFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_PantsFabricEnhancer";
			case gamedataItemType.Prt_BootsFabricEnhancer:
				return "Gameplay-Items-Item Type-Prt_BootsFabricEnhancer";
			case gamedataItemType.Prt_Fragment:
				return "Gameplay-Items-Item Type-Prt_Fragment";
			case gamedataItemType.Prt_Magazine:
				return "Gameplay-Items-Item Type-Prt_Magazine";
			case gamedataItemType.Prt_Mod:
				return "Gameplay-Items-Item Type-Prt_Mod";
			case gamedataItemType.Prt_RangedMod:
				return "Gameplay-Items-Item Type-Prt_RangedMod";
			case gamedataItemType.Prt_PowerMod:
				return "Gameplay-Items-Item Type-Prt_PowerMod";
			case gamedataItemType.Prt_TechMod:
				return "Gameplay-Items-Item Type-Prt_TechMod";
			case gamedataItemType.Prt_SmartMod:
				return "Gameplay-Items-Item Type-Prt_SmartMod";
			case gamedataItemType.Prt_AR_SMG_LMGMod:
				return "Gameplay-Items-Item Type-Prt_AR_SMG_LMGMod";
			case gamedataItemType.Prt_HandgunMod:
				return "Gameplay-Items-Item Type-Prt_HandgunMod";
			case gamedataItemType.Prt_Precision_Sniper_RifleMod:
				return "Gameplay-Items-Item Type-Prt_Precision_Sniper_RifleMod";
			case gamedataItemType.Prt_ShotgunMod:
				return "Gameplay-Items-Item Type-Prt_ShotgunMod";
			case gamedataItemType.Prt_MeleeMod:
				return "Gameplay-Items-Item Type-Prt_MeleeMod";
			case gamedataItemType.Prt_BladeMod:
				return "Gameplay-Items-Item Type-Prt_BladeMod";
			case gamedataItemType.Prt_BluntMod:
				return "Gameplay-Items-Item Type-Prt_BluntMod";
			case gamedataItemType.Prt_ThrowableMod:
				return "Gameplay-Items-Item Type-Prt_ThrowableMod";
			case gamedataItemType.Prt_Muzzle:
				return "UI-ResourceExports-Silencer";
			case gamedataItemType.Prt_HandgunMuzzle:
				return "Gameplay-Items-Item Type-Prt_HandgunMuzzle";
			case gamedataItemType.Prt_RifleMuzzle:
				return "Gameplay-Items-Item Type-Prt_RifleMuzzle";
			case gamedataItemType.Prt_Program:
				return "Gameplay-Items-Item Type-Prt_Program";
			case gamedataItemType.Prt_Receiver:
				return "Gameplay-Items-Item Type-Prt_Receiver";
			case gamedataItemType.Prt_Scope:
				return "Gameplay-Items-Item Type-Prt_Scope";
			case gamedataItemType.Prt_ShortScope:
				return "Gameplay-Items-Item Type-Prt_ShortScope_2";
			case gamedataItemType.Prt_LongScope:
				return "Gameplay-Items-Item Type-Prt_LongScope_2";
			case gamedataItemType.Prt_TechSniperScope:
				return "Gameplay-Items-Item Type-Prt_TechSniperScope";
			case gamedataItemType.Prt_PowerSniperScope:
				return "Gameplay-Items-Item Type-Prt_PowerSniperScope";
			case gamedataItemType.Prt_ScopeRail:
				return "Gameplay-Items-Item Type-Prt_ScopeRail";
			case gamedataItemType.Prt_Stock:
				return "Gameplay-Items-Item Type-Prt_Stock";
			case gamedataItemType.Prt_TargetingSystem:
				return "Gameplay-Items-Item Type-Prt_TargetingSystem";
			case gamedataItemType.Wea_AssaultRifle:
				return "Gameplay-RPG-Items-Types-Wea_AssaultRifle";
			case gamedataItemType.Wea_Axe:
				return "Gameplay-Items-Item Type-Wea_Axe";
			case gamedataItemType.Wea_Chainsword:
				return "Gameplay-Items-Item Type-Wea_Chainsword";
			case gamedataItemType.Wea_Fists:
				return "Gameplay-RPG-Items-Types-Wea_Fists";
			case gamedataItemType.Wea_Hammer:
				return "Gameplay-RPG-Items-Types-Wea_Hammer";
			case gamedataItemType.Wea_Handgun:
				return "Gameplay-RPG-Items-Types-Wea_Handgun";
			case gamedataItemType.Wea_HeavyMachineGun:
				return "Gameplay-Items-Item Type-Wea_HeavyMachineGun";
			case gamedataItemType.Wea_Katana:
				return "Gameplay-RPG-Items-Types-Wea_Katana";
			case gamedataItemType.Wea_Sword:
				return "Gameplay-Items-Item Type-Wea_Sword";
			case gamedataItemType.Wea_Knife:
				return "Gameplay-RPG-Items-Types-Wea_Knife";
			case gamedataItemType.Wea_LightMachineGun:
				return "Gameplay-RPG-Items-Types-Wea_LightMachineGun";
			case gamedataItemType.Wea_LongBlade:
				return "Gameplay-RPG-Items-Types-Wea_Knife";
			case gamedataItemType.Wea_Machete:
				return "Gameplay-Items-Item Type-Wea_Machete";
			case gamedataItemType.Wea_Melee:
				return "Gameplay-RPG-Items-Types-Wea_Melee";
			case gamedataItemType.Wea_OneHandedClub:
				return "Gameplay-RPG-Items-Types-Wea_OneHandedClub";
			case gamedataItemType.Wea_PrecisionRifle:
				return "Gameplay-RPG-Items-Types-Wea_PrecisionRifle";
			case gamedataItemType.Wea_Revolver:
				return "Gameplay-RPG-Items-Types-Wea_Revolver";
			case gamedataItemType.Wea_Rifle:
				return "Gameplay-RPG-Items-Types-Wea_Rifle";
			case gamedataItemType.Wea_ShortBlade:
				return "Gameplay-RPG-Items-Types-Wea_ShortBlade";
			case gamedataItemType.Wea_Shotgun:
				return "Gameplay-RPG-Items-Types-Wea_Shotgun";
			case gamedataItemType.Wea_ShotgunDual:
				return "Gameplay-RPG-Items-Types-Wea_ShotgunDual";
			case gamedataItemType.Wea_SniperRifle:
				return "Gameplay-RPG-Items-Types-Wea_SniperRifle";
			case gamedataItemType.Wea_SubmachineGun:
				return "Gameplay-RPG-Items-Types-Wea_SubmachineGun";
			case gamedataItemType.Wea_TwoHandedClub:
				return "Gameplay-RPG-Items-Types-Wea_TwoHandedClub";
		}
		return "";
	}

	public static function GetEmptySlotName( slotId : TweakDBID ) : String
	{
		switch( slotId )
		{
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_AR_SMG_LMG_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Tech_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod1":
			case T"AttachmentSlots.Smart_AR_SMG_LMG_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2":
			case T"AttachmentSlots.Power_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Handgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod1_Collectible":
			case T"AttachmentSlots.Power_Shotgun_WeaponMod2_Collectible":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Tech_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod1":
			case T"AttachmentSlots.Smart_Shotgun_WeaponMod2":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Power_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod1_Collectible":
			case T"AttachmentSlots.Smart_Precision_Sniper_Rifle_WeaponMod2_Collectible":
				return "UI-Labels-EmptyModSlot";
			case T"AttachmentSlots.Blade_WeaponMod1":
			case T"AttachmentSlots.Blade_WeaponMod2":
			case T"AttachmentSlots.Blade_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blade_WeaponMod2_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod1":
			case T"AttachmentSlots.Blunt_WeaponMod2":
			case T"AttachmentSlots.Blunt_WeaponMod1_Collectible":
			case T"AttachmentSlots.Blunt_WeaponMod2_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod1":
			case T"AttachmentSlots.Throwable_WeaponMod2":
			case T"AttachmentSlots.Throwable_WeaponMod1_Collectible":
			case T"AttachmentSlots.Throwable_WeaponMod2_Collectible":
				return "UI-Labels-EmptyMeleeModSlot";
			case T"AttachmentSlots.Scope":
				return "UI-Labels-EmptyScopeSlot";
			case T"AttachmentSlots.PowerModule":
				return "UI-Labels-EmptyMuzzleSlot";
			case T"AttachmentSlots.HeadFabricEnhancer1":
			case T"AttachmentSlots.HeadFabricEnhancer2":
			case T"AttachmentSlots.HeadFabricEnhancer3":
			case T"AttachmentSlots.FaceFabricEnhancer1":
			case T"AttachmentSlots.FaceFabricEnhancer2":
			case T"AttachmentSlots.FaceFabricEnhancer3":
			case T"AttachmentSlots.InnerChestFabricEnhancer1":
			case T"AttachmentSlots.InnerChestFabricEnhancer2":
			case T"AttachmentSlots.InnerChestFabricEnhancer3":
			case T"AttachmentSlots.InnerChestFabricEnhancer4":
			case T"AttachmentSlots.OuterChestFabricEnhancer1":
			case T"AttachmentSlots.OuterChestFabricEnhancer2":
			case T"AttachmentSlots.OuterChestFabricEnhancer3":
			case T"AttachmentSlots.OuterChestFabricEnhancer4":
			case T"AttachmentSlots.LegsFabricEnhancer1":
			case T"AttachmentSlots.LegsFabricEnhancer2":
			case T"AttachmentSlots.LegsFabricEnhancer3":
			case T"AttachmentSlots.FootFabricEnhancer1":
			case T"AttachmentSlots.FootFabricEnhancer2":
			case T"AttachmentSlots.FootFabricEnhancer3":
				return "UI-Labels-EmptyClothingModSlot";
			case T"AttachmentSlots.CyberdeckProgram1":
			case T"AttachmentSlots.CyberdeckProgram2":
			case T"AttachmentSlots.CyberdeckProgram3":
			case T"AttachmentSlots.CyberdeckProgram4":
			case T"AttachmentSlots.CyberdeckProgram5":
			case T"AttachmentSlots.CyberdeckProgram6":
			case T"AttachmentSlots.CyberdeckProgram7":
			case T"AttachmentSlots.CyberdeckProgram8":
			case T"AttachmentSlots.NanoWiresQuickhackSlot":
				return "UI-Labels-EmptyProgramSlot";
			case T"AttachmentSlots.SandevistanSlot1":
			case T"AttachmentSlots.SandevistanSlot2":
			case T"AttachmentSlots.SandevistanSlot3":
			case T"AttachmentSlots.BerserkSlot1":
			case T"AttachmentSlots.BerserkSlot2":
			case T"AttachmentSlots.BerserkSlot3":
			case T"AttachmentSlots.KERSSlot1":
			case T"AttachmentSlots.KERSSlot2":
			case T"AttachmentSlots.KERSSlot3":
			case T"AttachmentSlots.KiroshiOpticsSlot1":
			case T"AttachmentSlots.KiroshiOpticsSlot2":
			case T"AttachmentSlots.KiroshiOpticsSlot3":
				return "UI-Labels-EmptyCyberwareModSlot";
		}
		return "UI-Labels-EmptySlot";
	}

	public static function GetTooltipItemName( data : InventoryTooltipData ) : String
	{
		var id : TweakDBID;
		var itemData : weak< gameItemData >;
		id = ItemID.GetTDBID( InventoryItemData.GetID( data.inventoryItemData ) );
		itemData = InventoryItemData.GetGameItemData( data.inventoryItemData );
		return GetTooltipItemName( id, itemData, data.itemName );
	}

	public static function GetTooltipItemName( itemID : TweakDBID, itemData : weak< gameItemData >, const fallbackName : ref< String > ) : String
	{
		if( itemData.HasTag( 'Shard' ) )
		{
			return fallbackName;
		}
		return GetItemName( itemID, itemData );
	}

	public static function GetItemName( const itemData : ref< InventoryItemData > ) : String
	{
		return GetItemName( ItemID.GetTDBID( InventoryItemData.GetID( itemData ) ), InventoryItemData.GetGameItemData( itemData ) );
	}

	public static function GetItemName( itemID : TweakDBID, itemData : weak< gameItemData > ) : String
	{
		return GetItemName( TweakDBInterface.GetItemRecord( itemID ), itemData );
	}

	public static function GetItemName( itemRecord : Item_Record, itemData : weak< gameItemData > ) : String
	{
		var itemName : String;
		var recipeRecord : weak< ItemRecipe_Record >;
		var craftingResult : weak< CraftingResult_Record >;
		recipeRecord = ( ( ItemRecipe_Record )( itemRecord ) );
		if( recipeRecord )
		{
			craftingResult = recipeRecord.CraftingResult();
			if( craftingResult )
			{
				itemName = GetLocalizedItemNameByCName( craftingResult.Item().DisplayName() );
			}
			else
			{
				itemName = GetLocalizedItemNameByCName( itemRecord.DisplayName() );
			}
		}
		else
		{
			if( itemRecord )
			{
				itemName = GetLocalizedItemNameByCName( itemRecord.DisplayName() );
			}
		}
		return itemName;
	}

	public static function GetShardName( itemRecord : weak< Item_Record >, gameInstance : GameInstance ) : String
	{
		var shardData : weak< JournalOnscreen >;
		shardData = UIItemsHelper.GetShardData( itemRecord, gameInstance );
		if( shardData )
		{
			return shardData.GetTitle();
		}
		return "";
	}

	public static function GetShardData( itemRecord : weak< Item_Record >, gameInstance : GameInstance ) : weak< JournalOnscreen >
	{
		var isShard : Bool;
		var journalPath : String;
		if( !( itemRecord ) )
		{
			return NULL;
		}
		isShard = itemRecord.TagsContains( 'Shard' );
		if( isShard )
		{
			journalPath = TweakDBInterface.GetString( itemRecord.ItemSecondaryAction().GetID() + T".journalEntry", "" );
			return ( ( JournalOnscreen )( GameInstance.GetJournalManager( gameInstance ).GetEntryByString( journalPath, "gameJournalOnscreen" ) ) );
		}
		return NULL;
	}

	public static function IsShardRead( itemTDBID : TweakDBID, gameInstance : GameInstance ) : Bool
	{
		var action : weak< ItemAction_Record >;
		var journalPath : String;
		var journalManager : JournalManager;
		var journalEntry : weak< JournalEntry >;
		var isRead : Bool;
		isRead = false;
		action = TweakDBInterface.GetItemRecord( itemTDBID ).ItemSecondaryAction();
		if( action && GameInstance.IsValid( gameInstance ) )
		{
			journalPath = TweakDBInterface.GetString( action.GetID() + T".journalEntry", "" );
			journalManager = GameInstance.GetJournalManager( gameInstance );
			if( journalManager )
			{
				journalEntry = ( ( JournalOnscreen )( journalManager.GetEntryByString( journalPath, "gameJournalOnscreen" ) ) );
				isRead = journalManager.IsEntryVisited( ( ( JournalEntry )( journalEntry ) ) );
			}
		}
		return isRead;
	}

	public static function ItemTypeToRarity( itemType : gamedataItemType, optional itemData : weak< gameItemData > ) : RarityItemType
	{
		switch( itemType )
		{
			case gamedataItemType.Prt_Program:
				return RarityItemType.Program;
			case gamedataItemType.Cyberware:
				if( itemData )
				{
					if( itemData.HasTag( 'Cyberdeck' ) )
					{
						return RarityItemType.Cyberdeck;
					}
				}
			break;
		}
		return RarityItemType.Item;
	}

	public static function GetQualityF( const item : ref< InventoryItemData > ) : Float
	{
		var itemData : gameItemData;
		itemData = InventoryItemData.GetGameItemData( item );
		return GetQualityF( UIItemsHelper.QualityNameToInt( InventoryItemData.GetQuality( item ) ), RPGManager.IsItemIconic( itemData ), RPGManager.GetItemPlus( itemData ) );
	}

	public static function GetQualityF( itemData : gameItemData ) : Float
	{
		return GetQualityF( UIItemsHelper.QualityToInt( RPGManager.GetItemQuality( itemData ) ), RPGManager.IsItemIconic( itemData ), RPGManager.GetItemPlus( itemData ) );
	}

	public static function GetQualityF( qualityInt : Int32, isIconic : Bool, plusValue : Float ) : Float
	{
		var result : Float;
		result = ( ( Float )( qualityInt ) );
		if( isIconic )
		{
			result += 0.05;
		}
		result += ( plusValue * 0.1 );
		return result;
	}

	public static function ShouldDisplayTier( itemType : gamedataItemType ) : Bool
	{
		return !( ( ( ( ( ( ( ( ( ( ( ( ( ( itemType == gamedataItemType.Clo_Face || itemType == gamedataItemType.Clo_Feet ) || itemType == gamedataItemType.Clo_Head ) || itemType == gamedataItemType.Clo_InnerChest ) || itemType == gamedataItemType.Clo_Legs ) || itemType == gamedataItemType.Clo_OuterChest ) || itemType == gamedataItemType.Clo_Outfit ) || itemType == gamedataItemType.Con_Ammo ) || itemType == gamedataItemType.Con_Edible ) || itemType == gamedataItemType.Gen_Keycard ) || itemType == gamedataItemType.Gen_Misc ) || itemType == gamedataItemType.Gen_Tarot ) || itemType == gamedataItemType.Gen_Jewellery ) || itemType == gamedataItemType.Gen_Junk ) || itemType == gamedataItemType.Gen_Readable );
	}

	public static function IsAttributeAllocationStat( stat : gamedataStatType ) : Bool
	{
		switch( stat )
		{
			case gamedataStatType.StrengthAllocated:
			case gamedataStatType.ReflexesAllocated:
			case gamedataStatType.IntelligenceAllocated:
			case gamedataStatType.TechnicalAbilityAllocated:
			case gamedataStatType.CoolAllocated:
			case gamedataStatType.HumanityAllocated:
			case gamedataStatType.StrengthAvailable:
			case gamedataStatType.ReflexesAvailable:
			case gamedataStatType.IntelligenceAvailable:
			case gamedataStatType.TechnicalAbilityAvailable:
			case gamedataStatType.CoolAvailable:
			case gamedataStatType.HumanityAvailable:
				return true;
			default:
				return false;
		}
		return false;
	}

}

enum RarityItemType
{
	Item = 0,
	Cyberdeck = 1,
	Program = 2,
	Count = 3,
	Invalid = 4,
}

