public OKTargetGump(string header, int headerColor, string content, int contentColor, int width, int height,
            GenericOKCallback callback, MasterRunebook master, InternalRunebook book, int id)
            : base((640 - width) / 2, (480 - height) / 2)
        {
            m_Callback = callback;
            m_Master = master;
            m_Book = book;
            m_Id = id;

            Closable = false;

            AddPage(0);

            AddBackground(0, 0, width, height, 5054);

            AddImageTiled(10, 10, width - 20, 20, 2624);
            AddAlphaRegion(10, 10, width - 20, 20);
            AddHtml(10, 10, width - 20, 20, String.Format("<BASEFONT COLOR=#{0:X6}>{1}</BASEFONT>", headerColor, header), false, false);

            AddImageTiled(10, 40, width - 20, height - 80, 2624);
            AddAlphaRegion(10, 40, width - 20, height - 80);

            AddHtml(10, 40, width - 20, height - 80, String.Format("<BASEFONT COLOR=#{0:X6}>{1}</BASEFONT>", contentColor, content), false, true);

            AddImageTiled(10, height - 30, width - 20, 20, 2624);
            AddAlphaRegion(10, height - 30, width - 20, 20);

            AddButton(10, height - 30, 4005, 4007, 1, GumpButtonType.Reply, 0);
            AddHtmlLocalized(40, height - 30, 170, 20, 1049717, 32767, false, false); // YES

            AddButton(10 + ((width - 20) / 2), height - 30, 4005, 4007, 0, GumpButtonType.Reply, 0);
            AddHtmlLocalized(40 + ((width - 20) / 2), height - 30, 170, 20, 1049718, 32767, false, false); // NO
        }
 public MasterRunebook()
     : base(0x2252)
 {
     Hue = Utility.RandomBlueHue();
     Weight = 0;
     Movable = true;
     Name = "Master Runebook";
     LootType = LootType.Blessed;
     m_Books = new InternalRunebook[51];
     for (int x = 0; x < 51; x++) m_Books[x] = new InternalRunebook(16);
 }
 public MasterRunebook()
     : base(0x2252)
 {
     Hue      = Utility.RandomBlueHue();
     Weight   = 0;
     Movable  = true;
     Name     = "Master Runebook";
     LootType = LootType.Blessed;
     m_Books  = new InternalRunebook[51];
     for (int x = 0; x < 51; x++)
     {
         m_Books[x] = new InternalRunebook(16);
     }
 }
        public InternalRunebookGump(Mobile from, InternalRunebook book, MasterRunebook masterbook, int booknum)
            : base(150, 200)
        {
            m_Book = book;
            m_MasterBook = masterbook;
            m_BookNum = booknum;

            AddBackground();

            AddLabel(137, 12, 0, m_Book.Name);
            AddLabel(312, 32, 0, "Return");
            AddButton(288, 34, 2223, 2223, 199, GumpButtonType.Reply, 0);

            if (booknum > 0)
            {
                AddButton(283, 14, 9766, 9767, booknum + 199, GumpButtonType.Reply, 0);
                AddLabel(303, 12, 0, string.Format("{0}", ((int)(booknum)).ToString()));
            }
            if (booknum < 50)
            {
                AddButton(407, 14, 9762, 9763, booknum + 201, GumpButtonType.Reply, 0);
                AddLabel(387, 12, 0, string.Format("{0}", ((int)(booknum + 2)).ToString()));
            }

            AddIndex();

            for (int page = 0; page < 8; ++page)
            {
                AddPage(2 + page);

                //AddButton(125, 14, 2205, 2205, 0, GumpButtonType.Page, 1 + page);

                //if (page < 7)
                //    AddButton(393, 14, 2206, 2206, 0, GumpButtonType.Page, 3 + page);

                for (int half = 0; half < 2; ++half)
                    AddDetails((page * 2) + half, half);
            }
        }
        public static void RemoveRunebook_Callback(Mobile from, bool okay, MasterRunebook master, InternalRunebook book, int id)
        {
            if (okay)
            {
                Container pack = from.Backpack;
                if (pack == null || pack.Deleted)
                {
                    from.SendMessage("Unable to find a backpack in which to place a new Runebook.");
                    return;
                }
                int count = book.Entries.Count;
                if (count > 0)
                {
                    if (from.AccessLevel < AccessLevel.GameMaster)
                    {
                        if (from.Backpack.ConsumeTotal(new Type[] { typeof(BlankScroll), typeof(RecallScroll), typeof(GateTravelScroll) },
                            new int[] { 10, 1, 1 }) >= 0)
                        {
                            from.SendMessage("You do not have the materials needed to create the runebook.");
                            return;
                        }
                        if (from.CheckSkill(SkillName.Inscribe, 100, 120))
                        {
                            from.SendMessage("You failed to extract the book. Some materials were lost.");
                            return;
                        }
                    }

                    Runebook runebook = new Runebook(book.MaxCharges);
                    for (int x = 0; x < count; x++)
                    {
                        RunebookEntry rbe = new RunebookEntry(
                            ((RunebookEntry)book.Entries[0]).Location, ((RunebookEntry)book.Entries[0]).Map,
                            ((RunebookEntry)book.Entries[0]).Description, ((RunebookEntry)book.Entries[0]).House);
                        runebook.Entries.Add(rbe);
                        book.Entries.RemoveAt(0);
                    }
                    runebook.CurCharges = book.CurCharges;
                    runebook.Name = book.Name;
                    book.Name = string.Format("Book #{0}", ((int)(id + 1)).ToString());
                    pack.DropItem(runebook);
                    from.SendMessage("Runebook extracted. Some materials were used.");
                }
                else
                {
                    from.SendMessage("You cannot remove an empty Runebook.");
                }
                from.CloseGump(typeof(InternalRunebookGump));
                from.SendGump(new InternalRunebookGump(from, book, master, id));
            }
            else
            {
                from.CloseGump(typeof(InternalRunebookGump));
                from.SendGump(new InternalRunebookGump(from, book, master, id));
            }
        }
 public InternalTarget(InternalRunebook book, MasterRunebook master, int booknum)
     : base(3, false, TargetFlags.None)
 {
     m_RuneBook = book;
     m_Master = master;
     m_Booknum = booknum;
 }
 public DescriptionPrompt(MasterRunebook master, InternalRunebook book, int id)
 {
     m_Master = master;
     m_Book = book;
     m_Id = id;
 }
 public static void TargetPoint3D_Callback(Mobile from, bool okay, MasterRunebook master, InternalRunebook book, int id)
 {
     if (okay)
     {
         if (book.Entries.Count < 16)
         {
             book.Entries.Add(new RunebookEntry(from.Location, from.Map, "", null));
             from.SendMessage("Enter the description for this location.");
             from.Prompt = new DescriptionPrompt(master, book, id);
         }
         else
         {
             from.SendLocalizedMessage(502401); // This runebook is full.
             from.CloseGump(typeof(InternalRunebookGump));
             from.SendGump(new InternalRunebookGump(from, book, master, id));
         }
     }
     else
     {
         from.CloseGump(typeof(InternalRunebookGump));
         from.SendGump(new InternalRunebookGump(from, book, master, id));
     }
 }