public override int GetHashCode()
        {
            var hashCode = 1745360142;

            hashCode = hashCode * -1521134295 + Index.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Name);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(ShortName);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Description);

            hashCode = hashCode * -1521134295 + TypeId.GetHashCode();
            hashCode = hashCode * -1521134295 + SubTypeId.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <int[]> .Default.GetHashCode(ClassIds);

            hashCode = hashCode * -1521134295 + EnhancementSetId.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(EnhancementSetName);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Image);

            hashCode = hashCode * -1521134295 + EffectChance.GetHashCode();
            hashCode = hashCode * -1521134295 + LevelMin.GetHashCode();
            hashCode = hashCode * -1521134295 + LevelMax.GetHashCode();
            hashCode = hashCode * -1521134295 + Unique.GetHashCode();
            hashCode = hashCode * -1521134295 + MutuallyExclusiveId.GetHashCode();
            hashCode = hashCode * -1521134295 + BuffMode.GetHashCode();
            hashCode = hashCode * -1521134295 + EqualityComparer <EnhancementEffect[]> .Default.GetHashCode(Effects);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(UniqueIdentifier);

            hashCode = hashCode * -1521134295 + EqualityComparer <string> .Default.GetHashCode(Recipe);

            hashCode = hashCode * -1521134295 + Superior.GetHashCode();
            return(hashCode);
        }
        public override int GetHashCode()
        {
            int hash = 1;

            if (LevelMin != 0)
            {
                hash ^= LevelMin.GetHashCode();
            }
            if (LevelMax != 0)
            {
                hash ^= LevelMax.GetHashCode();
            }
            if (OpenNum != 0)
            {
                hash ^= OpenNum.GetHashCode();
            }
            return(hash);
        }