quest energy_system begin state start begin when alchemist.chat.gameforge.energy_system._001_npcChat begin say_title(mob_name(20001)) say(gameforge.energy_system._010_say) wait() say_title(mob_name(20001)) say(gameforge.energy_system._020_say) wait() say_title(mob_name(20001)) say(gameforge.energy_system._030_say) setstate(can_make) end end state can_make begin function setting () return { ["prob_acc_table"] = { ["35to50"] = {30,55,70,80,90,95,97,98,99,100}, ["51to70"] = {20,40,60,75,85,91,96,98,99,100}, ["upto70"] = {10,25,45,65,80,88,94,97,99,100} }, ["item_num_table"] ={0,1,2,3,4,6,8,10,12,15}, ["energy_stone"] = 51001, ["charging_stone"] = 51002 } end function getItemNum ( str, r ) local setting = energy_system.setting() for i = 1, 10 do if r < setting.prob_acc_table[str][i] then return setting.item_num_table[i] end end return 0 end when alchemist.chat.gameforge.energy_system._035_npcChat begin say_title(mob_name(20001)) say(gameforge.energy_system._040_say) wait() say_title(mob_name(20001)) say(gameforge.energy_system._050_say) wait() if pc.get_level() < 35 then say_title(mob_name(20001)) say(gameforge.energy_system._060_say) else say_title(mob_name(20001)) say(gameforge.energy_system._070_say) end end when alchemist.take begin if pc.get_level() < 35 then say_title(mob_name(20001)) say(gameforge.energy_system._080_say) return end local item_vnum = item.vnum local levelLimit = item.get_level_limit(item_vnum) local setting = energy_system.setting() if levelLimit == nil then say_title(mob_name(20001)) say(gameforge.energy_system._090_say) wait() elseif item.get_type() == ITEM_WEAPON and item.get_sub_type() == WEAPON_ARROW then say_title (mob_name(20001)) say (gameforge.energy_system._090_say) wait() elseif levelLimit < 35 then say_title(mob_name(20001)) say(gameforge.energy_system._100_say) else say_title(mob_name(20001)) say(item_name(item_vnum)) say(gameforge.energy_system._110_say) local s = select (gameforge.energy_system._120_select,gameforge.energy_system._130_select) if s == 1 then item.remove() local r = number(1, 100) local n if levelLimit >= 35 and levelLimit <= 50 then n = energy_system.getItemNum ("35to50",r) elseif levelLimit > 50 and levelLimit <= 70 then n = energy_system.getItemNum ("51to70",r) else n = energy_system.getItemNum ("upto70",r) end if (n == 0) then say_title(mob_name(20001)) say(gameforge.energy_system._140_say) else pc.give_item2(setting.energy_stone, n) say_title(mob_name(20001)) say(string.format(gameforge.energy_system._150_say,n)) end end end end when alchemist.chat.gameforge.energy_system._160_npcChat begin local setting = energy_system.setting() local need = 30 say_title(mob_name(20001)) say(string.format(gameforge.energy_system._170_say,need)) wait() if pc.get_level() < 35 then say_title(mob_name(20001)) say(gameforge.energy_system._060_say) return end if pc.count_item(setting.energy_stone) < need then say_title(mob_name(20001)) say(string.format(gameforge.energy_system._180_say,need)) return else say_title(mob_name(20001)) say(string.format(gameforge.energy_system._190_say, need)) wait() end local charge = 1000 say_title(mob_name(20001)) say(string.format(gameforge.energy_system._200_say, charge)) local s = select (gameforge.energy_system._210_select,gameforge.energy_system._220_select) if s == 2 then say_title(mob_name(20001)) say(gameforge.energy_system._230_say) return end if pc.get_gold() < charge then say_title(mob_name(20001)) say(gameforge.energy_system._240_say) return end if pc.count_item (setting.energy_stone) < need then return end pc.change_gold(-charge) pc.remove_item(setting.energy_stone, need) if pc.getqf("hasExperience") == 0 then say_title(mob_name(20001)) say(gameforge.energy_system._250_say) pc.give_item2 (setting.charging_stone, 1) pc.setqf("hasExperience", 1) return end local r = number (1, 100) if r > 30 then say_title(mob_name(20001)) say(gameforge.energy_system._260_say) return end say_title(mob_name(20001)) say(gameforge.energy_system._270_say) pc.give_item2(setting.charging_stone, 1) end end end