public static void Import(string excelFolder)
        {
            ItemStatCosts = new Dictionary <string, ItemStatCost>();

            var table = Importer.ReadTxtFileToDictionaryList(excelFolder + "/ItemStatCost.txt");

            foreach (var row in table)
            {
                var itemStatCost = new ItemStatCost
                {
                    Stat                           = row["Stat"],
                    Id                             = int.Parse(row["ID"]),
                    Op                             = Utility.ToNullableInt(row["op"]),
                    OpParam                        = Utility.ToNullableInt(row["op param"]),
                    DescriptionPriority            = Utility.ToNullableInt(row["descpriority"]),
                    DescriptionFunction            = Utility.ToNullableInt(row["descfunc"]),
                    DescriptionValue               = Utility.ToNullableInt(row["descval"]),
                    DescriptonStringPositive       = Table.GetValue(row["descstrpos"]),
                    DescriptionStringNegative      = Table.GetValue(row["descstrneg"]),
                    DescriptionString2             = Table.GetValue(row["descstr2"]),
                    GroupDescription               = Utility.ToNullableInt(row["dgrp"]),
                    GroupDescriptionFunction       = Utility.ToNullableInt(row["dgrpfunc"]),
                    GroupDescriptionValue          = Utility.ToNullableInt(row["dgrpval"]),
                    GroupDescriptonStringPositive  = Table.GetValue(row["dgrpstrpos"]),
                    GroupDescriptionStringNegative = Table.GetValue(row["dgrpstrneg"]),
                    GroupDescriptionString2        = Table.GetValue(row["dgrpstr2"])
                };

                ItemStatCosts[itemStatCost.Stat] = itemStatCost;
            }

            HardcodedTableStats();
            FixBrokenEntries();
        }
        public static void HardcodedTableStats()
        {
            var enhancedDamage = new ItemStatCost
            {
                Stat = "dmg%",
                DescriptionPriority       = 144, // 1 below attack speed (seems right)
                DescriptionFunction       = 4,   // +val%
                DescriptonStringPositive  = "Enhanced Damage",
                DescriptionStringNegative = "Enhanced Damage",
                DescriptionValue          = 1 // Add value before
            };

            ItemStatCosts[enhancedDamage.Stat] = enhancedDamage;

            var ethereal = new ItemStatCost
            {
                Stat = "ethereal",
                DescriptionPriority       = 1, // Min priority
                DescriptionFunction       = 1, // lstValue
                DescriptonStringPositive  = "Ethereal (Cannot Be Repaired)",
                DescriptionStringNegative = "Ethereal (Cannot Be Repaired)",
                DescriptionValue          = 0 // Do not add value
            };

            ItemStatCosts[ethereal.Stat] = ethereal;

            var eledam = new ItemStatCost
            {
                Stat = "eledam",
                DescriptionPriority      = ItemStatCosts["firemindam"].DescriptionPriority,
                DescriptionFunction      = 30,
                DescriptonStringPositive = "Adds %d %s damage",
                DescriptionValue         = 3
            };

            ItemStatCosts["eledam"] = eledam;

            var resAll = new ItemStatCost
            {
                Stat = "res-all",
                DescriptionPriority       = 34,
                DescriptionFunction       = 4, // lstValue
                DescriptonStringPositive  = Table.GetValue("strModAllResistances"),
                DescriptionStringNegative = Table.GetValue("strModAllResistances"),
                DescriptionValue          = 2 // Do not add value
            };

            ItemStatCosts["res-all"] = resAll;
        }