IsMarkable() public method

public IsMarkable ( Type type ) : bool
type System.Type
return bool
        public void DrawItem()
        {
#if old
            Item item = Activator.CreateInstance(m_CraftItem.ItemType) as Item;

            if (item != null)
            {
                AddItem(20, 50, item.ItemID);

                if (item is DragonBardingDeed || item is BaseArmor || item is BaseWeapon || item is BaseClothing ||
                    item is BaseInstrument || item is BaseTool || item is BaseHarvestTool || item is Runebook ||
                    item is BaseJewel || item is Bola)
                {
                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                      // This item may hold its maker's mark
                    m_ShowExceptionalChance = true;
                }
                item.Delete();
            }
#else
            Type type = m_CraftItem.ItemType;

            AddItem(20, 50, CraftItem.ItemIDOf(type));

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                    // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
#endif
        }
Example #2
0
        public void DrawItem()
        {
            Type type = m_CraftItem.ItemType;

            int itemID      = CraftItem.ItemIDOf(type);
            int originalHue = 0;

            Item itemCopy = null;

            try { itemCopy = Activator.CreateInstance(type) as Item; }
            catch { }

            if (itemCopy != null)
            {
                originalHue = itemCopy.Hue;
                itemCopy.Delete();
            }

            int itemHue = originalHue;

            if (CraftItem.RetainsColor(type))
            {
                CraftContext context = m_CraftSystem.GetContext(m_From);

                if (context != null)
                {
                    CraftSubResCol craftSubRes = (m_CraftItem.UseSubRes2 ? m_CraftSystem.CraftSubRes2 : m_CraftSystem.CraftSubRes);

                    int resIndex = -1;

                    resIndex = (m_CraftItem.UseSubRes2 ? context.LastResourceIndex2 : context.LastResourceIndex);

                    if (resIndex == -1)
                    {
                        resIndex = 0;
                    }

                    CraftSubRes resource = craftSubRes.GetAt(resIndex);

                    //Apply Different Material Color
                    if (resIndex > 0)
                    {
                        itemHue = CraftItem.BaseHueOf(resource.ItemType);
                    }
                }
            }

            AddItem(20, 50, itemID, itemHue);

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(20, 335 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                    // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
        }
Example #3
0
        public void DrawItem()
        {
            Type type = m_CraftItem.ItemType;

            AddItem(20, 50, CraftItem.ItemIDOf(type));

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                    // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
        }
Example #4
0
        public void DrawItem()
        {
            Type        type = m_CraftItem.ItemType;
            int         id   = CraftItem.ItemIDOf(type);
            Rectangle2D b    = ItemBounds.Table[id];

            AddItem(90 - b.Width / 2 - b.X, 110 - b.Height / 2 - b.Y, id, m_CraftItem.ItemHue);

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);  // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
        }
        public void DrawItem()
        {
            Type type = m_CraftItem.ItemType;

            int itemID = m_CraftItem.ForceGumpItemID ? m_CraftItem.GumpItemID : CraftItem.ItemIDOf(type);

            if (!type.IsSubclassOf(typeof(BaseAddonDeed)) || type.IsDefined(typeof(CraftItemIDAttribute), true))
            {
                AddItem(20, 50, itemID);
            }

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                    // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
        }
Example #6
0
        public void DrawItem()
        {
            try
            {
                Type type = m_CraftItem.ItemType;

                AddItem(20, 50, CraftItem.ItemIDOf(type));

                if (m_CraftItem.IsMarkable(type))
                {
                    AddHtml(170, 302 + (m_OtherCount++ *20), 300, 20, "<h3><basefont color=#FFFFFF><center>Cet objet prendra la marque de son createur.</center><basefont></h3>", false, false);
                }
            }
            catch (Exception e)
            {
                Misc.ExceptionLogging.WriteLine(e);
            }
        }
Example #7
0
        public void DrawItem()
        {
            Type type = m_CraftItem.ItemType;
            int  hue  = m_CraftItem.ItemHue;

            if (m_Context.LastResourceIndex > 0)
            {
                var info = CraftResources.GetFromType(m_CraftItem.Resources.GetAt(0).ItemType);
                hue = CraftResources.GetHue(info);
            }
            AddItem(20, 50, CraftItem.ItemIDOf(type), hue);

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                    // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }
        }
Example #8
0
            protected override void OnTick()
            {
                m_iCount++;

                m_From.DisruptiveAction();

                if (m_iCount < m_iCountMax)
                {
                    m_CraftSystem.PlayCraftEffect(m_From);
                }
                else
                {
                    m_From.EndAction(typeof(CraftSystem));

                    int badCraft = m_CraftSystem.CanCraft(m_From, m_Tool, m_CraftItem.m_Type);

                    if (badCraft > 0)
                    {
                        if (m_Tool != null && !m_Tool.Deleted && m_Tool.UsesRemaining > 0)
                        {
                            m_From.SendGump(new CraftGump(m_From, m_CraftSystem, m_Tool, badCraft));
                        }
                        else
                        {
                            m_From.SendLocalizedMessage(badCraft);
                        }

                        return;
                    }

                    int  quality           = 1;
                    bool allRequiredSkills = true;

                    m_CraftItem.CheckSkills(m_From, m_TypeRes, m_CraftSystem, ref quality, ref allRequiredSkills, false);

                    CraftContext context = m_CraftSystem.GetContext(m_From);

                    if (context == null)
                    {
                        return;
                    }

                    if (typeof(CustomCraft).IsAssignableFrom(m_CraftItem.ItemType))
                    {
                        CustomCraft cc = null;

                        try { cc = Activator.CreateInstance(m_CraftItem.ItemType, new object[] { m_From, m_CraftItem, m_CraftSystem, m_TypeRes, m_Tool, quality }) as CustomCraft; }
                        catch { }

                        if (cc != null)
                        {
                            cc.EndCraftAction();
                        }

                        return;
                    }

                    bool makersMark = false;

                    if (quality == 2 && m_From.Skills[m_CraftSystem.MainSkill].Base >= 100.0)
                    {
                        makersMark = m_CraftItem.IsMarkable(m_CraftItem.ItemType);
                    }

                    if (makersMark && context.MarkOption == CraftMarkOption.PromptForMark)
                    {
                        m_From.SendGump(new QueryMakersMarkGump(quality, m_From, m_CraftItem, m_CraftSystem, m_TypeRes, m_Tool));
                    }
                    else
                    {
                        if (context.MarkOption == CraftMarkOption.DoNotMark)
                        {
                            makersMark = false;
                        }

                        m_CraftItem.CompleteCraft(quality, makersMark, m_From, m_CraftSystem, m_TypeRes, m_Tool, null);
                    }
                }
            }
Example #9
0
        public CraftGumpItem(Mobile from, CraftSystem craftSystem, CraftItem craftItem, BaseTool tool)
            : base(50, 50)
        {
            m_From        = from;
            m_CraftSystem = craftSystem;
            m_CraftItem   = craftItem;
            m_Tool        = tool;

            from.CloseGump <CraftGump>();
            from.CloseGump <CraftGumpItem>();

            AddPage(0);
            AddBackground(0, 0, 530, 417, 5054);
            AddImageTiled(10, 10, 510, 22, 2624);
            AddImageTiled(10, 37, 150, 148, 2624);
            AddImageTiled(165, 37, 355, 90, 2624);
            AddImageTiled(10, 190, 155, 22, 2624);
            AddImageTiled(10, 237, 155, 53, 2624);
            AddImageTiled(165, 132, 355, 80, 2624);
            AddImageTiled(10, 275, 155, 22, 2624);
            AddImageTiled(10, 322, 155, 53, 2624);
            AddImageTiled(165, 217, 355, 80, 2624);
            AddImageTiled(10, 360, 155, 22, 2624);
            AddImageTiled(165, 302, 355, 80, 2624);
            AddImageTiled(10, 387, 510, 22, 2624);
            AddAlphaRegion(10, 10, 510, 397);

            AddHtmlLocalized(170, 40, 150, 20, 1044053, LabelColor, false, false);               // ITEM
            AddHtmlLocalized(10, 215, 150, 22, 1044055, LabelColor, false, false);               // <CENTER>MATERIALS</CENTER>
            AddHtmlLocalized(10, 300, 150, 22, 1044056, LabelColor, false, false);               // <CENTER>OTHER</CENTER>

            if (craftSystem.GumpTitleNumber > 0)
            {
                AddHtmlLocalized(10, 12, 510, 20, craftSystem.GumpTitleNumber, LabelColor, false, false);
            }
            else
            {
                AddHtml(10, 12, 510, 20, craftSystem.GumpTitleString, false, false);
            }

            AddButton(15, 387, 4014, 4016, 9999, GumpButtonType.Reply, 0);
            AddHtmlLocalized(50, 390, 150, 18, 1044150, LabelColor, false, false);               // BACK

            // Draw Item
            Type type = m_CraftItem.ItemType;

            if (m_CraftItem.IsMarkable(type))
            {
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044059, LabelColor, false, false);                      // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }

            if (craftItem.NameNumber > 0)
            {
                AddHtmlLocalized(330, 40, 180, 18, craftItem.NameNumber, LabelColor, false, false);
            }
            else
            {
                AddLabel(330, 40, LabelHue, craftItem.NameString);
            }

            AddItem(20, 50, CraftItem.ItemIDOf(type));
            // ***********************************

            // Draw Skills
            for (int i = 0; i < m_CraftItem.Skills.Count; i++)
            {
                CraftSkill skill    = m_CraftItem.Skills.GetAt(i);
                double     minSkill = skill.MinSkill;

                if (minSkill < 0)
                {
                    minSkill = 0;
                }

                AddHtmlLocalized(170, 132 + (i * 20), 200, 18, 1044060 + (int)skill.SkillToMake, LabelColor, false, false);
                AddLabel(430, 132 + (i * 20), LabelHue, String.Format("{0:F1}", minSkill).Replace(",", "."));
            }
            // ***********************************

            // Draw Ressource
            bool retainedColor = false;

            CraftContext context = m_CraftSystem.GetContext(m_From);

            CraftSubResCol res      = (m_CraftItem.UseSubRes2 ? m_CraftSystem.CraftSubRes2 : m_CraftSystem.CraftSubRes);
            int            resIndex = -1;

            if (context != null)
            {
                resIndex = (m_CraftItem.UseSubRes2 ? context.LastResourceIndex2 : context.LastResourceIndex);
            }

            bool cropScroll = (m_CraftItem.Ressources.Count > 1) && m_CraftItem.Ressources.GetAt(m_CraftItem.Ressources.Count - 1).ItemType == typeofBlankScroll && typeofSpellScroll.IsAssignableFrom(m_CraftItem.ItemType);

            for (int i = 0; i < m_CraftItem.Ressources.Count - (cropScroll ? 1 : 0) && i < 4; i++)
            {
                Type   _type;
                string nameString;
                int    nameNumber;

                CraftRes craftResource = m_CraftItem.Ressources.GetAt(i);

                _type      = craftResource.ItemType;
                nameString = craftResource.NameString;
                nameNumber = craftResource.NameNumber;
                int amount = craftResource.Amount;

                // Resource Mutation
                if (_type == res.ResType && resIndex > -1)
                {
                    CraftSubRes subResource = res.GetAt(resIndex);

                    _type = subResource.ItemType;

                    nameString = subResource.NameString;
                    nameNumber = subResource.GenericNameNumber;

                    if (nameNumber <= 0)
                    {
                        nameNumber = subResource.NameNumber;
                    }
                }
                // ******************

                if (m_CraftItem.NameNumber == 1044458)                   // cut-up cloth
                {
                    amount = 0;

                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 360, 18, 1044460, LabelColor, false, false);                          // Cut bolts of cloth into pieces of ready cloth.
                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1048176, LabelColor, false, false);                          // Makes as many as possible at once
                }

                if (m_CraftItem.NameNumber == 1044459)                   //combine cloth
                {
                    amount = 0;

                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 360, 18, 1044461, LabelColor, false, false);                          // Combine available cloth into piles by color.
                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1048176, LabelColor, false, false);                          // Makes as many as possible at once
                }

                if (!retainedColor && m_CraftItem.RetainsColorFrom(m_CraftSystem, _type))
                {
                    retainedColor = true;
                    AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1044152, LabelColor, false, false);                          // * The item retains the color of this material
                    AddLabel(500, 219 + (i * 20), LabelHue, "*");
                }

                if (nameNumber > 0)
                {
                    AddHtmlLocalized(170, 219 + (i * 20), 310, 18, nameNumber, LabelColor, false, false);
                }
                else
                {
                    AddLabel(170, 219 + (i * 20), LabelHue, nameString);
                }

                AddHtml(430, 219 + (i * 20), 40, 20, String.Format("<basefont color=#FFFFFF><div align=right>{0}</basefont></div>", amount.ToString()), false, false);
            }

            if (m_CraftItem.NameNumber == 1041267)               // runebook
            {
                AddHtmlLocalized(170, 219 + (m_CraftItem.Ressources.Count * 20), 310, 18, 1044447, LabelColor, false, false);
                AddHtml(430, 219 + (m_CraftItem.Ressources.Count * 20), 40, 20, String.Format("<basefont color=#FFFFFF><div align=right>{0}</basefont></div>", "1"), false, false);
            }
            // ***********************************

            if (craftItem.UseAllRes)
            {
                // Makes as many as possible at once
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1048176, LabelColor, false, false);
            }

            if (craftItem.RequiresSE)
            {
                // * Requires the "Samurai Empire" expansion
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1063363, LabelColor, false, false);
            }

            if (craftItem.RequiresML)
            {
                // * Requires the "Mondain's Legacy" expansion
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1072651, LabelColor, false, false);
            }

            if (craftItem.RequiresSA)
            {
                // * Requires the "Stygian Abyss" expansion
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1094732, LabelColor, false, false);
            }

            if (craftItem.RequiresHS)
            {
                // * Requires the "High Seas" booster
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1116296, LabelColor, false, false);
            }

            bool needsRecipe = (craftItem.Recipe != null && from is PlayerMobile && !((PlayerMobile)from).HasRecipe(craftItem.Recipe));

            if (needsRecipe)
            {
                // You have not learned this recipe.
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 310, 18, 1073620, RedLabelColor, false, false);
            }

            if (cropScroll)
            {
                // Inscribing scrolls also requires a blank scroll and mana.
                AddHtmlLocalized(170, 302 + (m_OtherCount++ *20), 360, 18, 1044379, LabelColor, false, false);
            }

            if (needsRecipe)
            {
                AddButton(135, 387, 0xFAE, 0xFB0, 0, GumpButtonType.Page, 0);
                AddHtmlLocalized(180, 390, 150, 18, 1112624, 0x3DEF, false, false);                   // MAKE MAX

                AddButton(255, 387, 0xFAE, 0xFB0, 0, GumpButtonType.Page, 0);
                AddHtmlLocalized(300, 390, 150, 18, 1112623, 0x3DEF, false, false);                   // MAKE NUMBER

                AddButton(405, 387, 4005, 4007, 0, GumpButtonType.Page, 0);
                AddHtmlLocalized(450, 390, 150, 18, 1044151, GreyLabelColor, false, false);                   // MAKE NOW
            }
            else
            {
                AddButton(135, 387, 0xFAE, 0xFB0, craftItem.CraftId + 11000, GumpButtonType.Reply, 0);
                AddHtmlLocalized(180, 390, 150, 18, 1112624, 0x7FFF, false, false);                   // MAKE MAX

                AddButton(255, 387, 0xFAE, 0xFB0, craftItem.CraftId + 10000, GumpButtonType.Reply, 0);
                AddHtmlLocalized(300, 390, 150, 18, 1112623, 0x7FFF, false, false);                   // MAKE NUMBER

                AddButton(405, 387, 4005, 4007, craftItem.CraftId, GumpButtonType.Reply, 0);
                AddHtmlLocalized(450, 390, 150, 18, 1044151, LabelColor, false, false);                   // MAKE NOW
            }

            // Draw Chances
            DrawChances();
            // ***********************************
        }
Example #10
0
            protected override void OnTick()
            {
                m_iCount++;

                m_From.DisruptiveAction();

                if (m_iCount < m_iCountMax)
                {
                    m_CraftSystem.PlayCraftEffect(m_From);
                }
                else
                {
                    m_From.EndAction(typeof(CraftSystem));

                    string badCraft = m_CraftSystem.CanCraft(m_From, m_Tool, m_CraftItem.m_Type);

                    if (badCraft != "")
                    {
                        if (m_Tool != null && !m_Tool.Deleted && m_Tool.UsesRemaining > 0)
                        {
                            m_From.SendGump(new CraftGump(m_From, m_CraftSystem, m_Tool, badCraft));
                        }
                        else
                        {
                            m_From.SendAsciiMessage(badCraft);
                        }

                        return;
                    }

                    int  quality           = 1;
                    bool allRequiredSkills = true;

                    m_CraftItem.CheckSkills(m_From, m_TypeRes, m_CraftSystem, ref quality, ref allRequiredSkills, false);

                    CraftContext context = m_CraftSystem.GetContext(m_From);

                    if (context == null)
                    {
                        return;
                    }

                    bool makersMark = false;

                    if (quality == 2 && m_From.Skills[m_CraftSystem.MainSkill].Base >= 100.0)
                    {
                        makersMark = m_CraftItem.IsMarkable(m_CraftItem.ItemType);
                    }

                    if (makersMark && context.MarkOption == CraftMarkOption.PromptForMark)
                    {
                        m_From.SendGump(new QueryMakersMarkGump(quality, m_From, m_CraftItem, m_CraftSystem, m_TypeRes, m_Tool));
                    }
                    else
                    {
                        if (context.MarkOption == CraftMarkOption.DoNotMark)
                        {
                            makersMark = false;
                        }

                        m_CraftItem.CompleteCraft(quality, makersMark, m_From, m_CraftSystem, m_TypeRes, m_Tool);
                    }
                }
            }
Example #11
0
        public CraftGumpItem( Mobile from, CraftSystem craftSystem, CraftItem craftItem, BaseTool tool )
            : base(50, 50)
        {
            m_From = from;
            m_CraftSystem = craftSystem;
            m_CraftItem = craftItem;
            m_Tool = tool;

            from.CloseGump( typeof( CraftGump ) );
            from.CloseGump( typeof( CraftGumpItem ) );

            AddPage( 0 );
            AddBackground( 0, 0, 530, 417, 5054 );
            AddImageTiled( 10, 10, 510, 22, 2624 );
            AddImageTiled( 10, 37, 150, 148, 2624 );
            AddImageTiled( 165, 37, 355, 90, 2624 );
            AddImageTiled( 10, 190, 155, 22, 2624 );
            AddImageTiled( 10, 237, 155, 53, 2624 );
            AddImageTiled( 165, 132, 355, 80, 2624 );
            AddImageTiled( 10, 275, 155, 22, 2624 );
            AddImageTiled( 10, 322, 155, 53, 2624 );
            AddImageTiled( 165, 217, 355, 80, 2624 );
            AddImageTiled( 10, 360, 155, 22, 2624 );
            AddImageTiled( 165, 302, 355, 80, 2624 );
            AddImageTiled( 10, 387, 510, 22, 2624 );
            AddAlphaRegion( 10, 10, 510, 397 );

            AddHtmlLocalized( 170, 40, 150, 20, 1044053, LabelColor, false, false ); // ITEM
            AddHtmlLocalized( 10, 215, 150, 22, 1044055, LabelColor, false, false ); // <CENTER>MATERIALS</CENTER>
            AddHtmlLocalized( 10, 300, 150, 22, 1044056, LabelColor, false, false ); // <CENTER>OTHER</CENTER>

            if ( craftSystem.GumpTitleNumber > 0 )
                AddHtmlLocalized( 10, 12, 510, 20, craftSystem.GumpTitleNumber, LabelColor, false, false );
            else
                AddHtml( 10, 12, 510, 20, craftSystem.GumpTitleString, false, false );

            AddButton( 15, 387, 4014, 4016, 9999, GumpButtonType.Reply, 0 );
            AddHtmlLocalized( 50, 390, 150, 18, 1044150, LabelColor, false, false ); // BACK

            // Draw Item
            Type type = m_CraftItem.ItemType;

            if ( m_CraftItem.IsMarkable( type ) )
            {
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1044059, LabelColor, false, false ); // This item may hold its maker's mark
                m_ShowExceptionalChance = true;
            }

            if ( craftItem.NameNumber > 0 )
                AddHtmlLocalized( 330, 40, 180, 18, craftItem.NameNumber, LabelColor, false, false );
            else
                AddLabel( 330, 40, LabelHue, craftItem.NameString );

            AddItem( 20, 50, CraftItem.ItemIDOf( type ) );
            // ***********************************

            // Draw Skills
            for ( int i = 0; i < m_CraftItem.Skills.Count; i++ )
            {
                CraftSkill skill = m_CraftItem.Skills.GetAt( i );
                double minSkill = skill.MinSkill;

                if ( minSkill < 0 )
                    minSkill = 0;

                AddHtmlLocalized( 170, 132 + ( i * 20 ), 200, 18, 1044060 + (int) skill.SkillToMake, LabelColor, false, false );
                AddLabel( 430, 132 + ( i * 20 ), LabelHue, String.Format( "{0:F1}", minSkill ).Replace( ",", "." ) );
            }
            // ***********************************

            // Draw Ressource
            bool retainedColor = false;

            CraftContext context = m_CraftSystem.GetContext( m_From );

            CraftSubResCol res = ( m_CraftItem.UseSubRes2 ? m_CraftSystem.CraftSubRes2 : m_CraftSystem.CraftSubRes );
            int resIndex = -1;

            if ( context != null )
                resIndex = ( m_CraftItem.UseSubRes2 ? context.LastResourceIndex2 : context.LastResourceIndex );

            bool cropScroll = ( m_CraftItem.Ressources.Count > 1 ) && m_CraftItem.Ressources.GetAt( m_CraftItem.Ressources.Count - 1 ).ItemType == typeofBlankScroll && typeofSpellScroll.IsAssignableFrom( m_CraftItem.ItemType );

            for ( int i = 0; i < m_CraftItem.Ressources.Count - ( cropScroll ? 1 : 0 ) && i < 4; i++ )
            {
                Type _type;
                string nameString;
                int nameNumber;

                CraftRes craftResource = m_CraftItem.Ressources.GetAt( i );

                _type = craftResource.ItemType;
                nameString = craftResource.NameString;
                nameNumber = craftResource.NameNumber;
                int amount = craftResource.Amount;

                // Resource Mutation
                if ( _type == res.ResType && resIndex > -1 )
                {
                    CraftSubRes subResource = res.GetAt( resIndex );

                    _type = subResource.ItemType;

                    nameString = subResource.NameString;
                    nameNumber = subResource.GenericNameNumber;

                    if ( nameNumber <= 0 )
                        nameNumber = subResource.NameNumber;
                }
                // ******************

                if ( m_CraftItem.NameNumber == 1044458 ) // cut-up cloth
                {
                    amount = 0;

                    AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 360, 18, 1044460, LabelColor, false, false ); // Cut bolts of cloth into pieces of ready cloth.
                    AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1048176, LabelColor, false, false ); // Makes as many as possible at once
                }

                if ( m_CraftItem.NameNumber == 1044459 ) //combine cloth
                {
                    amount = 0;

                    AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 360, 18, 1044461, LabelColor, false, false ); // Combine available cloth into piles by color.
                    AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1048176, LabelColor, false, false ); // Makes as many as possible at once
                }

                if ( !retainedColor && m_CraftItem.RetainsColorFrom( m_CraftSystem, _type ) )
                {
                    retainedColor = true;
                    AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1044152, LabelColor, false, false ); // * The item retains the color of this material
                    AddLabel( 500, 219 + ( i * 20 ), LabelHue, "*" );
                }

                if ( nameNumber > 0 )
                    AddHtmlLocalized( 170, 219 + ( i * 20 ), 310, 18, nameNumber, LabelColor, false, false );
                else
                    AddLabel( 170, 219 + ( i * 20 ), LabelHue, nameString );

                AddHtml( 430, 219 + ( i * 20 ), 40, 20, String.Format( "<basefont color=#FFFFFF><div align=right>{0}</basefont></div>", amount.ToString() ), false, false );
            }

            if ( m_CraftItem.NameNumber == 1041267 ) // runebook
            {
                AddHtmlLocalized( 170, 219 + ( m_CraftItem.Ressources.Count * 20 ), 310, 18, 1044447, LabelColor, false, false );
                AddHtml( 430, 219 + ( m_CraftItem.Ressources.Count * 20 ), 40, 20, String.Format( "<basefont color=#FFFFFF><div align=right>{0}</basefont></div>", "1" ), false, false );
            }
            // ***********************************

            if ( craftItem.UseAllRes )
            {
                // Makes as many as possible at once
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1048176, LabelColor, false, false );
            }

            if ( craftItem.RequiresSE )
            {
                // * Requires the "Samurai Empire" expansion
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1063363, LabelColor, false, false );
            }

            if ( craftItem.RequiresML )
            {
                // * Requires the "Mondain's Legacy" expansion
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1072651, LabelColor, false, false );
            }

            if ( craftItem.RequiresSA )
            {
                // * Requires the "Stygian Abyss" expansion
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1094732, LabelColor, false, false );
            }

            if ( craftItem.RequiresHS )
            {
                // * Requires the "High Seas" booster
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1116296, LabelColor, false, false );
            }

            bool needsRecipe = ( craftItem.Recipe != null && from is PlayerMobile && !( (PlayerMobile) from ).HasRecipe( craftItem.Recipe ) );

            if ( needsRecipe )
            {
                // You have not learned this recipe.
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 310, 18, 1073620, RedLabelColor, false, false );
            }

            if ( cropScroll )
            {
                // Inscribing scrolls also requires a blank scroll and mana.
                AddHtmlLocalized( 170, 302 + ( m_OtherCount++ * 20 ), 360, 18, 1044379, LabelColor, false, false );
            }

            if ( needsRecipe )
            {
                AddButton( 135, 387, 0xFAE, 0xFB0, 0, GumpButtonType.Page, 0 );
                AddHtmlLocalized( 180, 390, 150, 18, 1112624, 0x3DEF, false, false ); // MAKE MAX

                AddButton( 255, 387, 0xFAE, 0xFB0, 0, GumpButtonType.Page, 0 );
                AddHtmlLocalized( 300, 390, 150, 18, 1112623, 0x3DEF, false, false ); // MAKE NUMBER

                AddButton( 405, 387, 4005, 4007, 0, GumpButtonType.Page, 0 );
                AddHtmlLocalized( 450, 390, 150, 18, 1044151, GreyLabelColor, false, false ); // MAKE NOW
            }
            else
            {
                AddButton( 135, 387, 0xFAE, 0xFB0, craftItem.CraftId + 11000, GumpButtonType.Reply, 0 );
                AddHtmlLocalized( 180, 390, 150, 18, 1112624, 0x7FFF, false, false ); // MAKE MAX

                AddButton( 255, 387, 0xFAE, 0xFB0, craftItem.CraftId + 10000, GumpButtonType.Reply, 0 );
                AddHtmlLocalized( 300, 390, 150, 18, 1112623, 0x7FFF, false, false ); // MAKE NUMBER

                AddButton( 405, 387, 4005, 4007, craftItem.CraftId, GumpButtonType.Reply, 0 );
                AddHtmlLocalized( 450, 390, 150, 18, 1044151, LabelColor, false, false ); // MAKE NOW
            }

            // Draw Chances
            DrawChances();
            // ***********************************
        }