quest guild_building_melt begin state start begin function GetOreRefineCost(cost) if pc.empire != npc.empire then return 3 * cost end if pc.get_guild() == npc.get_guild() then return cost * 0.9 end return cost end function GetOreRefineGoodPct() return 60 end function GetOreRefineBadPct() return 30 end function GetMyRefineNum(race) return({ [20060] = 50601, [20061] = 50602, [20062] = 50603, [20063] = 50604, [20064] = 50605, [20065] = 50606, [20066] = 50607, [20067] = 50608, [20068] = 50609, [20069] = 50610, [20070] = 50611, [20071] = 50612, [20072] = 50613, [33009] = 50614, [33010] = 50615, [33011] = 50616, [33012] = 50617, [33013] = 50618 })[race] --return race - 20060 + 50601 or race - 33009 + 50614 end function IsRefinableRawOre(vnum) return vnum >= 50601 and vnum <= 50618 end function DoRefineDiamond(pct) local from_postfix local from_name = item_name(item.vnum) local to_vnum = item.vnum + 20 local to_name = item_name(to_vnum) local to_postfix say(gameforge.guild_building_melt._10_say) if item.count >= 100 then say(string.format(gameforge.guild_building_melt._20_say, pct, guild_building_melt.GetOreRefineCost(10000))) local s = select(gameforge.locale.guild.yes, gameforge.locale.guild.no) if s == 1 then if pc.get_gold() < guild_building_melt.GetOreRefineCost(10000) then say(gameforge.guild_building_melt._30_say) return end if pc.diamond_refine(10000, pct) then say(gameforge.guild_building_melt._40_say) say_item(to_name, to_vnum, "") else say(gameforge.guild_building_melt._50_say) end end else say(string.format(gameforge.guild_building_melt._60_say,from_name)) end end function DoRefine(pct) local from_postfix local from_name = item_name(item.vnum) local to_vnum = item.vnum + 20 local to_name = item_name(to_vnum) local to_postfix say(string.format(gameforge.guild_building_melt._70_say, from_name , to_name )) if item.count >= 100 then say(string.format(gameforge.guild_building_melt._20_say, pct, guild_building_melt.GetOreRefineCost(3000))) local s = select(gameforge.locale.guild.yes, gameforge.locale.guild.no) if s == 1 then if pc.get_gold() < guild_building_melt.GetOreRefineCost(3000) then say(gameforge.guild_building_melt._30_say) return end local selected_item_cell = select_item() if selected_item_cell == 0 then say(gameforge.guild_building_melt._90_say) return end local old_item = item.get_id() if (not item.select_cell(selected_item_cell)) or item.vnum < 28000 or item.vnum >= 28300 then say(gameforge.guild_building_melt._100_say) return end item. select(old_item , old_item ) if pc.ore_refine(3000, pct, selected_item_cell) then say(gameforge.guild_building_melt._120_say) say_item(to_name, to_vnum, "") else say(gameforge.guild_building_melt._50_say) end end else say(string.format(gameforge.guild_building_melt._60_say,from_name)) end end when 20060.take or 20061.take or 20062.take or 20063.take or 20064.take or 20065.take or 20066.take or 20067.take or 20068.take or 20069.take or 20070.take or 20071.take or 20072.take or 33009.take or 33010.take or 33011.take or 33012.take or 33013.take with guild_building_melt.GetMyRefineNum(npc.race) == item.vnum begin if item.vnum == 50601 then guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineGoodPct()) else guild_building_melt.DoRefine(guild_building_melt.GetOreRefineGoodPct()) end end when 20060.take or 20061.take or 20062.take or 20063.take or 20064.take or 20065.take or 20066.take or 20067.take or 20068.take or 20069.take or 20070.take or 20071.take or 20072.take or 33009.take or 33010.take or 33011.take or 33012.take or 33013.take with guild_building_melt.IsRefinableRawOre(item.vnum) and guild_building_melt.GetMyRefineNum(npc.race) != item.vnum begin if item.vnum == 50601 then guild_building_melt.DoRefineDiamond(guild_building_melt.GetOreRefineBadPct()) else guild_building_melt.DoRefine(guild_building_melt.GetOreRefineBadPct()) end end when 20060.click or 20061.click or 20062.click or 20063.click or 20064.click or 20065.click or 20066.click or 20067.click or 20068.click or 20069.click or 20070.click or 20071.click or 20072.click or 33009.click or 33010.click or 33011.click or 33012.click or 33013.click with npc.get_guild() == pc.get_guild() and pc.isguildmaster() begin say_npc() say(gameforge.guild_building_melt._130_say) wait() if pc.get_gold() < 3000000 then say(gameforge.guild_building_melt._140_say) else -- say(gameforge.guild_building_melt._150_say) -- local sel = 0 -- local timetable1 = {gameforge.guild_building_melt._180_say, -- gameforge.guild_building_melt._190_say, -- gameforge.guild_building_melt._200_say, -- gameforge.guild_building_melt._210_say, -- gameforge.guild_building_melt._220_say, -- gameforge.guild_building_melt._230_say, -- gameforge.locale.levelup.prev_quest_go, -- gameforge.guild_building_melt._170_say} -- local valuetable1 = {14043, 14045, 14046, 14047, 14048, 14049, 0, -1} -- local timetable2 = {gameforge.guild_building_melt._240_say, -- gameforge.guild_building_melt._250_say, -- gameforge.guild_building_melt._260_say, -- gameforge.guild_building_melt._270_say, -- gameforge.guild_building_melt._280_say, -- gameforge.guild_building_melt._290_say, -- gameforge.locale.levelup.prev_quest_go, -- gameforge.guild_building_melt._170_say} -- local valuetable2 = {14050, 14051, 14052, 14053, 14054, 14055, 0, -1} -- repeat -- local s = select_table(timetable1) -- sel = valuetable1[s] -- if sel == 0 then -- local s = select_table(timetable2) -- sel = valuetable2[s] -- end -- until sel != 0 -- if sel != -1 then -- npc_num = sel + 20060 - 14043 -- if npc_num == npc.get_race() then -- say(gameforge.guild_building_melt._160_say) -- else -- pc.changegold(-3000000) -- building.reconstruct(sel) -- end -- end local sel = 0 local timetable1 = {gameforge.guild_building_melt._180_say, gameforge.guild_building_melt._190_say, gameforge.guild_building_melt._200_say, gameforge.guild_building_melt._210_say, gameforge.guild_building_melt._220_say, gameforge.guild_building_melt._230_say, gameforge.locale.levelup.prev_quest_go, gameforge.guild_building_melt._170_say} local valuetable1 = {14043, 14045, 14046, 14047, 14048, 14049, 1, 3} local timetable2 = {gameforge.guild_building_melt._240_say, gameforge.guild_building_melt._250_say, gameforge.guild_building_melt._260_say, gameforge.guild_building_melt._270_say, gameforge.guild_building_melt._280_say, gameforge.locale.levelup.prev_quest_go, gameforge.map_warp._96_select, gameforge.guild_building_melt._170_say} local valuetable2 = {14050, 10451, 14052, 14053, 14054, 2, 0, 3} local timetable3 = {gameforge.guild_building_melt._290_say, "Soul crystal", "Rubin", "Garnet", "Smaragd", "Sapphire", gameforge.map_warp._96_select, gameforge.guild_building_melt._170_say} local valuetable3 = {14055, 26992, 26993, 26994, 26995, 26996, 1, 3} repeat say_npc() say(gameforge.guild_building_melt._150_say) if sel == 0 then local s = select_table(timetable1) sel = valuetable1[s] elseif sel == 1 then local s = select_table(timetable2) sel = valuetable2[s] elseif sel == 2 then local s = select_table(timetable3) sel = valuetable3[s] end until sel > 2 if sel != 3 then npc_num = sel + 20060 - 14043 --chat("#debug#sel:"..sel.."#npc_num:"..npc_num) if npc_num == npc.get_race() then say(gameforge.guild_building_melt._160_say) else pc.changegold(-3000000) building.reconstruct(sel) end end end end end end