private void CreateDefaultOverrides()
        {
            try
            {
                // Creates an instance of the XmlSerializer class;
                // specifies the type of object to serialize.
                XmlSerializer serializer =
                    new XmlSerializer(typeof(OutwardItemOverrides));
                TextWriter           writer = new StreamWriter(Path.Combine(basePath, "Default.xml"));
                OutwardItemOverrides po     = new OutwardItemOverrides();


                // Creates an ItemOverride.
                ItemOverride i1 = new ItemOverride();
                i1.ItemID = 2000090;

                // Creates an WeaponOverrideData
                WeaponOverrideData o1 = new WeaponOverrideData();
                o1.OverrideType   = OverrideType.WEAPON;
                o1.WeaponStatType = WeaponStatType.DAMAGE;
                o1.DmgType        = DamageType.Types.Fire;
                o1.Value          = 200;

                // Creates an ItemOverrideData
                ItemOverrideData o2 = new ItemOverrideData();
                o2.OverrideType = OverrideType.ITEMSTAT;
                o2.ItemStatType = ItemStatType.MAXDURABILITY;
                o2.Value        = 25.0f;

                // Add them to the list of overrides
                i1.Data = new List <OverrideData>();
                i1.Data.Add(o1);
                i1.Data.Add(o2);

                // Inserts the item into the array.
                po.ItemOverrides = i1;

                // Set DebugMode to default OFF
                po.DebugMode = false;

                // Serializes the WeaponOverrideData, and closes the TextWriter.
                serializer.Serialize(writer, po);
                writer.Close();
            } catch (Exception e)
            {
                throw e;
            }
        }
        private void ParseItemStatChanges(ItemOverrideData itemOverride, Item item)
        {
            var itemStatComponent = item.GetComponent <ItemStats>();


            switch (itemOverride.ItemStatType)
            {
            case ItemStatType.MAXDURABILITY:
                OLogger.Log("ParseItemStatChanges(): Durability before " + itemStatComponent.MaxDurability);
                itemStatComponent.MaxDurability = (int)itemOverride.Value;
                OLogger.Log("ParseItemStatChanges(): Durability after " + itemStatComponent.MaxDurability);
                break;

            case ItemStatType.RAWWEIGHT:
                OLogger.Log("ParseItemChanges(): Updating Item RawWeight Stat for Item ID : " + item.ItemID + " to " + itemOverride.Value);
                var rawWeight = ReflectionTools.ReflectionGetValue(typeof(ItemStats), itemStatComponent, "m_rawWeight");
                OLogger.Log("Raw weight before " + rawWeight);
                ReflectionTools.ReflectionSetValue(itemOverride.Value, typeof(ItemStats), itemStatComponent, "m_rawWeight");
                rawWeight = ReflectionTools.ReflectionGetValue(typeof(ItemStats), itemStatComponent, "m_rawWeight");
                OLogger.Log("Raw weight after " + rawWeight);
                break;

            case ItemStatType.BASEVALUE:
                // TODO: Does not seem to work at the moment
                OLogger.Log("ParseItemChanges(): Updating Item BaseValue Stat for Item ID : " + item.ItemID + " to " + itemOverride.Value);
                var baseValue = ReflectionTools.ReflectionGetValue(typeof(ItemStats), itemStatComponent, "m_baseValue");
                OLogger.Log("BaseValue before " + baseValue);
                ReflectionTools.ReflectionSetValue(itemOverride.Value, typeof(ItemStats), itemStatComponent, "m_baseValue");
                baseValue = ReflectionTools.ReflectionGetValue(typeof(ItemStats), itemStatComponent, "m_baseValue");
                OLogger.Log("BaseValue after " + baseValue);
                break;

            default:
                OLogger.Log("UH OH ITEMSTAT PARSE FAILURE");
                break;
            }

            OLogger.Log("Parsing item id: " + item.ItemID + " , Complete");
            OLogger.Log("------------------------------------");
        }