public static string EnhancedSpellbookTypeAsString(EnhancedSpellbookType type)
        {
            switch (type)
            {
            case EnhancedSpellbookType.Wizard:
                return("Wizard Spellbook");

            case EnhancedSpellbookType.Warlock:
                return("Warlock's Spellbook");

            case EnhancedSpellbookType.Fire:
                return("Fire Spellbook");

            case EnhancedSpellbookType.Energy:
                return("Energy Spellbook");

            case EnhancedSpellbookType.Summoner:
                return("Summoner Spellbook");

            case EnhancedSpellbookType.Slayer:
                return("Slayer Spellbook");

            default: return("Enhanced Spellbook");
            }
        }
        public EnhancedSpellbookTome() : base(0x0FBD)
        {
            Hue = 101;

            string[] types = Enum.GetNames(typeof(EnhancedSpellbookType));
            int      iType = Utility.Random(types.Length);
            string   e     = types[iType];

            EnhancedSpellbookType type = (EnhancedSpellbookType)Enum.Parse(typeof(EnhancedSpellbookType), e, true);

            if (type == null)
            {
                Delete();

                return;
            }

            else
            {
                m_EnhancedSpellbookType = type;
            }

            if (type == EnhancedSpellbookType.Slayer)
            {
                m_SlayerGroup = BaseCreature.GetRandomSlayerType();
            }
        }
        public EnhancedSpellbookTome(EnhancedSpellbookType tomeType, SlayerGroupType slayerGroupType) : base(0x0FBD)
        {
            Hue = 101;

            if (tomeType == null)
            {
                Delete();

                return;
            }

            else
            {
                m_EnhancedSpellbookType = tomeType;
                m_SlayerGroup           = slayerGroupType;
            }

            if (m_SlayerGroup == null || m_SlayerGroup == SlayerGroupType.None)
            {
                Delete();
            }

            else
            {
                m_SlayerGroup = slayerGroupType;
            }
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadEncodedInt();

            if (version >= 0)
            {
                m_EnhancedType     = (EnhancedSpellbookType)reader.ReadInt();
                m_ChargesRemaining = reader.ReadInt();
            }
        }
        public static Item RandomEnhancedSpellbook()
        {
            Array types = Enum.GetValues(typeof(EnhancedSpellbookType));
            EnhancedSpellbookType tomeType = EnhancedSpellbookType.Energy;

            if (Utility.RandomDouble() < 0.5)
                tomeType = EnhancedSpellbookType.Slayer;
            else
                tomeType = (EnhancedSpellbookType)types.GetValue(Utility.Random(types.Length - 1));

            return new EnhancedSpellbookTome(tomeType);
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadEncodedInt();

            //Version 0
            if (version >= 0)
            {
                m_EnhancedSpellbookType = (EnhancedSpellbookType)reader.ReadInt();
                m_SlayerGroup           = (SlayerGroupType)reader.ReadInt();
            }
        }
        public EnhancedSpellbook(EnhancedSpellbookType type) : this((ulong)0)
        {
            Hue = 101;

            LootType = Server.LootType.Regular;
            Layer    = Layer.OneHanded;

            if (type == null)
            {
                return;
            }

            m_ChargesRemaining = Utility.RandomMinMax(200, 300);

            EnhancedType = type;
        }
        public EnhancedSpellbookTome(EnhancedSpellbookType tomeType) : base(0x0FBD)
        {
            Hue = 101;

            if (tomeType == null)
            {
                Delete();

                return;
            }

            m_EnhancedSpellbookType = tomeType;

            if (m_EnhancedSpellbookType == EnhancedSpellbookType.Slayer)
            {
                m_SlayerGroup = BaseCreature.GetRandomSlayerType();
            }
        }
        public EnhancedSpellbook(EnhancedSpellbookType type, SlayerGroupType slayerGroupType) : this((ulong)0)
        {
            Hue = 101;

            LootType = Server.LootType.Regular;
            Layer    = Layer.OneHanded;

            if (type == null)
            {
                return;
            }

            EnhancedType = type;

            m_ChargesRemaining = Utility.RandomMinMax(200, 300);

            if (EnhancedType != null && EnhancedType == EnhancedSpellbookType.Slayer)
            {
                SlayerGroup = slayerGroupType;
            }
        }
        public static string EnhancedSpellbookTomeTypeAsString(EnhancedSpellbookType type)
        {
            switch (type)
            {
            case EnhancedSpellbookType.Wizard:
                return("A Wizard Tome");

            case EnhancedSpellbookType.Warlock:
                return("A Warlock Tome");

            case EnhancedSpellbookType.Fire:
                return("A Fire Tome");

            case EnhancedSpellbookType.Energy:
                return("An Energy Tome");

            case EnhancedSpellbookType.Summoner:
                return("A Summoner Tome");

            default: return("A Blank Tome");
            }
        }