public static ItemCostXml GetSellCostOverride(InventoryItemTypeEnum inventoryItemType, int itemLvl,
                                                      RarityEnum itemRarity)
        {
            var lvlRange = RespecCostsLevel.FirstOrDefault(key => key.LevelMin <= itemLvl && itemLvl <= key.LevelMax);

            if (lvlRange == null)
            {
                return(new ItemCostXml(CapitalResourceTypeEnum.cCapResCoin, 0));
            }

            var result     = lvlRange.Cost;
            var budgetInfo = ItemBudgetInfo.FirstOrDefault(key => key.InventoryItemType == inventoryItemType);

            if (budgetInfo != null)
            {
                var budgetModifier = budgetInfo.BudgetModifier;
                var rarityInfo     = RarityInfo.FirstOrDefault(key => key.Rarity == itemRarity);
                result = lvlRange.Cost + budgetModifier * rarityInfo?.Factor ?? lvlRange.Cost + budgetModifier;
            }

            if (result < 0)
            {
                result = 0;
            }

            return(new ItemCostXml(CapitalResourceTypeEnum.cCapResCoin, result));
        }
        public static string ToLocalizedString(this InventoryItemTypeEnum type, ILanguages languages,
                                               string language = "English")
        {
            switch (type)
            {
            case InventoryItemTypeEnum.Material:
                return
                    ($"{languages["stringtablex"][language][52890].Text}");

            case InventoryItemTypeEnum.Blueprint:
                return
                    ($"{languages["stringtablex"][language][52887].Text}");

            case InventoryItemTypeEnum.Trait:
                return
                    ($"{languages["stringtablex"][language][63898].Text}");

            case InventoryItemTypeEnum.Design:
                return
                    ($"{languages["stringtablex"][language][52888].Text}");

            case InventoryItemTypeEnum.Resource:
                return
                    ($"{languages["stringtablex"][language][36059].Text}");

            case InventoryItemTypeEnum.Advisor:
                return
                    ($"{languages["stringtablex"][language][63901].Text}");

            case InventoryItemTypeEnum.Consumable:
                return
                    ($"{languages["stringtablex"][language][52891].Text}");

            case InventoryItemTypeEnum.LootRoll:
                return
                    ($"{languages["stringtablex"][language][57460].Text}");

            case InventoryItemTypeEnum.Quest:
                return
                    ($"{languages["stringtablex"][language][53219].Text}");

            case InventoryItemTypeEnum.CapitalResource:
                return
                    ("Capital Resource");

            case InventoryItemTypeEnum.GameCurrency:
                return
                    ("Game Currency");

            case InventoryItemTypeEnum.Invalid:
                return
                    ("Invalid!");

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
        }
 public ItemBudgetInfo(InventoryItemTypeEnum inventoryItemType, double budgetModifier)
 {
     InventoryItemType = inventoryItemType;
     BudgetModifier    = budgetModifier;
 }