Пример #1
0
        public override void OnResponse(NetState state, int index)
        {
            switch (SelectedGumpLevel)
            {
            case GumpLevel.SelectGroup:
            {
                SpecialOptions();

                //
                if (isFiltered && localGroupIndexList.ContainsKey(Entries[index]))
                {
                    index = localGroupIndexList[Entries[index]];
                }

                SelectedGroupIndex = index;
                if (index == m_CustomResources)
                {
                    SelectedGumpLevel = GumpLevel.SelectResource;
                    GumpOwner.SendMenu(new CustomCraftMenu(m_CurrentCraftMenu));
                }
                else if (index == m_RepairIndex)
                {
                    Repair.Do(GumpOwner, CurrentCraftSystem, ToolUsed);
                }
                else if (index == m_SmeltIndex)
                {
                    Resmelt.Do(GumpOwner, CurrentCraftSystem, ToolUsed);
                }
                else if (index == m_EnhanceIndex)
                {
                    GumpOwner.SendAsciiMessage("Enhancing disabled.");
                }
                else
                {
                    SelectedGumpLevel = GumpLevel.SelectItem;
                    GumpOwner.SendMenu(new CustomCraftMenu(m_CurrentCraftMenu));
                }
                break;
            }

            case GumpLevel.SelectItem:
                if (index == 0)    //Go back
                {
                    SelectedGumpLevel = GumpLevel.SelectGroup;
                    GumpOwner.SendMenu(new CustomCraftMenu(m_CurrentCraftMenu));
                }
                else
                {
                    CreateItem(index - 1);  //Cause of the "back button"
                }
                break;

            case GumpLevel.SelectResource:
            {
                SelectedResourceIndex = (index);
                SelectedResType       = CurrentCraftSystem.CraftSubRes.GetAt(SelectedResourceIndex).ItemType;
                SelectedGumpLevel     = GumpLevel.SelectGroup;

                GumpOwner.SendMenu(new CustomCraftMenu(m_CurrentCraftMenu));
                break;
            }
            }
        }
Пример #2
0
        public void SalvageIngots(Mobile from)
        {
            bool hasTool = false;

            foreach (Item item in from.Backpack.Items)
            {
                if (item is BaseTool && ((BaseTool)item).CraftSystem == DefBlacksmithy.CraftSystem)
                {
                    hasTool = true;
                    break;
                }
            }

            if (!hasTool)
            {
                from.SendLocalizedMessage(1079822);                   // You need a blacksmithing tool in order to salvage ingots.
                return;
            }

            bool anvil, forge;

            DefBlacksmithy.CheckAnvilAndForge(from, 2, out anvil, out forge);

            if (!anvil)
            {
                from.SendLocalizedMessage(1044266);                   // You must be near an anvil
                return;
            }

            if (!forge)
            {
                from.SendLocalizedMessage(1044265);                   // You must be near a forge
                return;
            }

            int count    = 0;
            int oldCount = this.TotalItems;

            int message = -1;

            for (int i = 0; i < this.Items.Count; i++)
            {
                Item item = (Item)this.Items[i];

                bool success       = false;
                bool isStoreBought = false;
                bool lackMining    = false;

                Resmelt.Process(DefBlacksmithy.CraftSystem, from, item, false, out success, out isStoreBought, out lackMining);

                if (lackMining)
                {
                    message = 1079975;                     // You failed to smelt some metal for lack of skill.
                }
                else if (success)
                {
                    count++;
                    i--;
                }
            }

            if (message != -1)
            {
                from.SendLocalizedMessage(message);
            }

            if (count > 0)
            {
                from.PlaySound(0x2A);
                from.PlaySound(0x240);
            }

            from.SendLocalizedMessage(1079973, String.Format("{0}\t{1}", count, oldCount));                 // Salvaged: ~1_COUNT~/~2_NUM~ blacksmithed items
        }