CONFIRM_NO = 0 CONFIRM_YES = 1 CONFIRM_OK = 1 CONFIRM_TIMEOUT = 2 MALE = 0 FEMALE = 1 --quest.create = function(f) return coroutine.create(f) end --quest.process = function(co,args) return coroutine.resume(co, args) end setstate = q.setstate newstate = q.setstate q.set_clock = function(name, value) q.set_clock_name(name) q.set_clock_value(value) end q.set_counter = function(name, value) q.set_counter_name(name) q.set_counter_value(value) end c_item_name = function(vnum) return ("[ITEM value;"..vnum.."]") end c_mob_name = function(vnum) return ("[MOB value;"..vnum.."]") end -- d.set_folder = function (path) raw_script("[SET_PATH path;"..path.."]") end -- d.set_folder = function (path) path.show_cinematic("[SET_PATH path;"..path.."]") end -- party.run_cinematic = function (path) party.show_cinematic("[RUN_CINEMATIC value;"..path.."]") end newline = "[ENTER]" function color256(r, g, b) return "[COLOR r;"..(r/255.0).."|g;"..(g/255.0).."|b;"..(b/255.0).."]" end function color(r,g,b) return "[COLOR r;"..r.."|g;"..g.."|b;"..b.."]" end function delay(v) return "[DELAY value;"..v.."]" end function setcolor(r,g,b) raw_script(color(r,g,b)) end function setdelay(v) raw_script(delay(v)) end function resetcolor(r,g,b) raw_script("[/COLOR]") end function resetdelay(v) raw_script("[/DELAY]") end -- trim a string function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end -- minimap¿¡ µ¿±×¶ó¹Ì Ç¥½Ã function addmapsignal(x,y) raw_script("[ADDMAPSIGNAL x;"..x.."|y;"..y.."]") end -- minimap µ¿±×¶ó¹Ìµé ¸ðµÎ Ŭ¸®¾î function clearmapsignal() raw_script("[CLEARMAPSIGNAL]") end -- Ŭ¶óÀ̾ðÆ®¿¡¼­ º¸¿©ÁÙ ´ëȭâ ¹è°æ ±×¸²À» Á¤ÇÑ´Ù. function setbgimage(src) raw_script("[BGIMAGE src;") raw_script(src) raw_script("]") end -- ´ëȭâ¿¡ À̹ÌÁö¸¦ º¸¿©ÁØ´Ù. function addimage(x,y,src) raw_script("[IMAGE x;"..x.."|y;"..y) raw_script("|src;") raw_script(src) raw_script("]") end -- generate when a linebreak in the functions: d.notice,notice,notice_all function notice_multiline( str , func ) local p = 0 local i = 0 while true do i = string.find( str, "%[ENTER%]", i+1 ) if i == nil then if string.len(str) > p then func( string.sub( str, p, string.len(str) ) ) end break end func( string.sub( str, p, i-1 ) ) p = i + 7 end end function makequestbutton(name) raw_script("[QUESTBUTTON idx;") raw_script(""..q.getcurrentquestindex()) raw_script("|name;") raw_script(name) raw_script("]") end function make_quest_button_ex(name, icon_type, icon_name) test_chat(icon_type) test_chat(icon_name) raw_script("[QUESTBUTTON idx;") raw_script(""..q.getcurrentquestindex()) raw_script("|name;") raw_script(name) raw_script("|icon_type;") raw_script(icon_type) raw_script("|icon_name;") raw_script(icon_name) raw_script("]") end function make_quest_button(name) makequestbutton(name) end function send_letter_ex(name, icon_type, icon_name) make_quest_button_ex(name, icon_type, icon_name) set_skin(NOWINDOW) q.set_title(name) q.start() end function send_letter(name) makequestbutton(name) set_skin(NOWINDOW) q.set_title(name) q.start() end function clear_letter() q.done() end function say_title(name) say(color256(255, 230, 186)..name..color256(196, 196, 196)) end function say_reward(name) say(color256(255, 200, 200)..name..color256(196, 196, 196)) end function say_pc_name() say(pc.get_name()..":") end function say_size(width, height) say("[WINDOW_SIZE width;"..width.."|height;"..height.."]") end function setmapcenterposition(x,y) raw_script("[SETCMAPPOS x;") raw_script(x.."|y;") raw_script(y.."]") end function say_item(name, vnum, desc) say("[INSERT_IMAGE image_type;item|idx;"..vnum.."|title;"..name.."|desc;"..desc.."|index;".. 0 .."|total;".. 1 .."]") end function say_show_item(vnum) say("[INSERT_IMAGE image_type;item|idx;"..vnum.."|index;".. 0 .."|total;".. 1 .."]") end function say_item_vnum(vnum) say_item(item_name(vnum), vnum, "") end function say_item_vnum_inline(vnum,index,total) if index >= total then return end if total > 3 then return end raw_script("[INSERT_IMAGE image_type;item|idx;"..vnum.."|title;"..item_name(vnum).."|desc;".."".."|index;"..index.."|total;"..total.."]") end function pc_is_novice() if pc.get_skill_group()==0 then return true else return false end end function pc_get_exp_bonus(exp, text) say_reward(text) pc.give_exp2(exp) set_quest_state("levelup", "run") end function pc_get_village_map_index(index) return village_map[pc.get_empire()][index] end function pc_has_even_id() return math.mod(pc.get_player_id(),2) == 0 end function pc_get_account_id() return math.mod(pc.get_account_id(), 2) !=0 end village_map = { {1, 3}, {21, 23}, {41, 43}, } function npc_is_same_empire() if pc.get_empire()==npc.empire then return true else return false end end function npc_get_skill_teacher_race(pc_empire, pc_job, sub_job) if 1==sub_job then if 0==pc_job then return WARRIOR1_NPC_LIST[pc_empire] elseif 1==pc_job then return ASSASSIN1_NPC_LIST[pc_empire] elseif 2==pc_job then return SURA1_NPC_LIST[pc_empire] elseif 3==pc_job then return SHAMAN1_NPC_LIST[pc_empire] end elseif 2==sub_job then if 0==pc_job then return WARRIOR2_NPC_LIST[pc_empire] elseif 1==pc_job then return ASSASSIN2_NPC_LIST[pc_empire] elseif 2==pc_job then return SURA2_NPC_LIST[pc_empire] elseif 3==pc_job then return SHAMAN2_NPC_LIST[pc_empire] end end return 0 end function pc_find_square_guard_vid() if pc.get_empire()==1 then return find_npc_by_vnum(11000) elseif pc.get_empire()==2 then return find_npc_by_vnum(11002) elseif pc.get_empire()==3 then return find_npc_by_vnum(11004) end return 0 end function pc_find_skill_teacher_vid(sub_job) local vnum=npc_get_skill_teacher_race(pc.get_empire(), pc.get_job(), sub_job) return find_npc_by_vnum(vnum) end function pc_find_square_guard_vid() local pc_empire=pc.get_empire() if pc_empire==1 then return find_npc_by_vnum(11000) elseif pc_empire==2 then return find_npc_by_vnum(11002) elseif pc_empire==3 then return find_npc_by_vnum(11004) end end function npc_is_same_job() local pc_job=pc.get_job() local npc_vnum=npc.get_race() -- test_chat("pc.job:"..pc.get_job()) -- test_chat("npc_race:"..npc.get_race()) -- test_chat("pc.skill_group:"..pc.get_skill_group()) if pc_job==0 then if table_is_in(WARRIOR1_NPC_LIST, npc_vnum) then return true end if table_is_in(WARRIOR2_NPC_LIST, npc_vnum) then return true end elseif pc_job==1 then if table_is_in(ASSASSIN1_NPC_LIST, npc_vnum) then return true end if table_is_in(ASSASSIN2_NPC_LIST, npc_vnum) then return true end elseif pc_job==2 then if table_is_in(SURA1_NPC_LIST, npc_vnum) then return true end if table_is_in(SURA2_NPC_LIST, npc_vnum) then return true end elseif pc_job==3 then if table_is_in(SHAMAN1_NPC_LIST, npc_vnum) then return true end if table_is_in(SHAMAN2_NPC_LIST, npc_vnum) then return true end end return false end function npc_get_job() local npc_vnum=npc.get_race() if table_is_in(WARRIOR1_NPC_LIST, npc_vnum) then return COND_WARRIOR_1 end if table_is_in(WARRIOR2_NPC_LIST, npc_vnum) then return COND_WARRIOR_2 end if table_is_in(ASSASSIN1_NPC_LIST, npc_vnum) then return COND_ASSASSIN_1 end if table_is_in(ASSASSIN2_NPC_LIST, npc_vnum) then return COND_ASSASSIN_2 end if table_is_in(SURA1_NPC_LIST, npc_vnum) then return COND_SURA_1 end if table_is_in(SURA2_NPC_LIST, npc_vnum) then return COND_SURA_2 end if table_is_in(SHAMAN1_NPC_LIST, npc_vnum) then return COND_SHAMAN_1 end if table_is_in(SHAMAN2_NPC_LIST, npc_vnum) then return COND_SHAMAN_2 end return 0 end function time_min_to_sec(value) return 60*value end function time_hour_to_sec(value) return 3600*value end function next_time_set(value, test_value) local nextTime=get_time()+value if is_test_server() then nextTime=get_time()+test_value end pc.setqf("__NEXT_TIME__", nextTime) end function next_time_is_now(value) if get_time()>=pc.getqf("__NEXT_TIME__") then return true else return false end end function table_get_random_item(self) return self[number(1, table.getn(self))] end function table_is_in(self, test) for i = 1, table.getn(self) do if self[i]==test then return true end end return false end function giveup_quest_menu(title) local s=select("ÁøÇàÇÑ´Ù", "Æ÷±âÇÑ´Ù") if 2==s then say(title.." Äù½ºÆ®¸¦ Á¤¸»·Î") say("Æ÷±âÇϽðڽÀ´Ï±î?") local s=select("³×, ±×·¸½À´Ï´Ù", "¾Æ´Õ´Ï´Ù") if 1==s then say(title.."Äù½ºÆ®¸¦ Æ÷±âÇß½À´Ï´Ù") restart_quest() end end end function restart_quest() set_state("start") q.done() end function complete_quest() set_state("__COMPLETE__") q.done() end function giveup_quest() set_state("__GIVEUP__") q.done() end function complete_quest_state(state_name) set_state(state_name) q.done() end function test_chat(log) if is_test_server() then chat(log) end end function bool_to_str(is) if is then return "true" else return "false" end end WARRIOR1_NPC_LIST = {20300, 20320, 20340, } WARRIOR2_NPC_LIST = {20301, 20321, 20341, } ASSASSIN1_NPC_LIST = {20302, 20322, 20342, } ASSASSIN2_NPC_LIST = {20303, 20323, 20343, } SURA1_NPC_LIST = {20304, 20324, 20344, } SURA2_NPC_LIST = {20305, 20325, 20345, } SHAMAN1_NPC_LIST = {20306, 20326, 20346, } SHAMAN2_NPC_LIST = {20307, 20327, 20347, } function skill_group_dialog(e, j, g) -- e = Á¦±¹, j = Á÷¾÷, g = ±×·ì e = 1 -- XXX ¸Þ½ÃÁö°¡ ³ª¶óº°·Î ÀÖ´Ù°¡ Çϳª·Î ÅëÇյǾúÀ½ -- ´Ù¸¥ Á÷¾÷À̰ųª ´Ù¸¥ Á¦±¹ÀÏ °æ¿ì if pc.job != j then say(locale.skill_group.dialog[e][pc.job][3]) elseif pc.get_skill_group() == 0 then if pc.level < 5 then say(locale.skill_group.dialog[e][j][g][1]) return end say(locale.skill_group.dialog[e][j][g][2]) local answer = select(locale.yes, locale.no) if answer == 1 then --say(locale.skill_group.dialog[e][j][g][2]) pc.set_skill_group(g) else --say(locale.skill_group.dialog[e][j][g][3]) end --elseif pc.get_skill_group() == g then --say(locale.skill_group.dialog[e][j][g][4]) --else --say(locale.skill_group.dialog[e][j][g][5]) end end function show_horse_menu() if horse.is_mine() then say(locale.horse_menu.menu) local s = 0 if horse.is_dead() then s = select(locale.horse_menu.revive, locale.horse_menu.ride, locale.horse_menu.unsummon, locale.horse_menu.close) else s = select(locale.horse_menu.feed, locale.horse_menu.ride, locale.horse_menu.unsummon, locale.horse_menu.close) end if s==1 then if horse.is_dead() then horse.revive() else local food = horse.get_grade() + 50054 - 1 if pc.countitem(food) > 0 then pc.removeitem(food, 1) horse.feed() else say(locale.need_item_prefix..item_name(food)..locale.need_item_postfix); end end elseif s==2 then horse.ride() elseif s==3 then horse.unsummon() elseif s==4 then -- do nothing end end end npc_index_table = { ['race'] = npc.getrace, ['empire'] = npc.get_empire, } pc_index_table = { ['weapon'] = pc.getweapon, ['level'] = pc.get_level, ['hp'] = pc.gethp, ['maxhp'] = pc.getmaxhp, ['sp'] = pc.getsp, ['maxsp'] = pc.getmaxsp, ['exp'] = pc.get_exp, ['nextexp'] = pc.get_next_exp, ['job'] = pc.get_job, ['money'] = pc.getmoney, ['gold'] = pc.getmoney, ['name'] = pc.getname, ['playtime'] = pc.getplaytime, ['leadership'] = pc.getleadership, ['empire'] = pc.getempire, ['skillgroup'] = pc.get_skill_group, ['x'] = pc.getx, ['y'] = pc.gety, ['local_x'] = pc.get_local_x, ['local_y'] = pc.get_local_y, } item_index_table = { ['vnum'] = item.get_vnum, ['name'] = item.get_name, ['size'] = item.get_size, ['count'] = item.get_count, ['type'] = item.get_type, ['sub_type'] = item.get_sub_type, ['refine_vnum'] = item.get_refine_vnum, ['level'] = item.get_level, } guild_war_bet_price_table = { 10000, 30000, 50000, 100000 } function npc_index(t,i) local npit = npc_index_table if npit[i] then return npit[i]() else return rawget(t,i) end end function pc_index(t,i) local pit = pc_index_table if pit[i] then return pit[i]() else return rawget(t,i) end end function item_index(t, i) local iit = item_index_table if iit[i] then return iit[i]() else return rawget(t, i) end end setmetatable(pc,{__index=pc_index}) setmetatable(npc,{__index=npc_index}) setmetatable(item,{__index=item_index}) --coroutineÀ» ÀÌ¿ëÇÑ ¼±ÅÃÇ× Ã³¸® function select(...) return q.yield('select', arg) end function select_table(table) return q.yield('select', table) end -- coroutineÀ» ÀÌ¿ëÇÑ ´ÙÀ½ ¿£ÅÍ ±â´Ù¸®±â function wait() q.yield('wait') end function input() return q.yield('input') end function confirm(vid, msg, timeout) return q.yield('confirm', vid, msg, timeout) end function select_item() setskin(NOWINDOW) return q.yield('select_item') end --Àü¿ª º¯¼ö Á¢±Ù°ú °ü·ÃµÈ °è¿­ NOWINDOW = 0 NORMAL = 1 CINEMATIC = 2 SCROLL = 3 WARRIOR = 0 ASSASSIN = 1 SURA = 2 SHAMAN = 3 COND_WARRIOR_0 = 8 COND_WARRIOR_1 = 16 COND_WARRIOR_2 = 32 COND_WARRIOR = 56 COND_ASSASSIN_0 = 64 COND_ASSASSIN_1 = 128 COND_ASSASSIN_2 = 256 COND_ASSASSIN = 448 COND_SURA_0 = 512 COND_SURA_1 = 1024 COND_SURA_2 = 2048 COND_SURA = 3584 COND_SHAMAN_0 = 4096 COND_SHAMAN_1 = 8192 COND_SHAMAN_2 = 16384 COND_SHAMAN = 28672 PART_MAIN = 0 PART_HAIR = 3 GUILD_CREATE_ITEM_VNUM = 70101 QUEST_SCROLL_TYPE_KILL_MOB = 1 QUEST_SCROLL_TYPE_KILL_ANOTHER_EMPIRE = 2 apply = { ["MAX_HP"] = 1, ["MAX_SP"] = 2, ["CON"] = 3, ["INT"] = 4, ["STR"] = 5, ["DEX"] = 6, ["ATT_SPEED"] = 7, ["MOV_SPEED"] = 8, ["CAST_SPEED"] = 9, ["HP_REGEN"] = 10, ["SP_REGEN"] = 11, ["POISON_PCT"] = 12, ["STUN_PCT"] = 13, ["SLOW_PCT"] = 14, ["CRITICAL_PCT"] = 15, ["PENETRATE_PCT"] = 16, ["ATTBONUS_HUMAN"] = 17, ["ATTBONUS_ANIMAL"] = 18, ["ATTBONUS_ORC"] = 19, ["ATTBONUS_MILGYO"] = 20, ["ATTBONUS_UNDEAD"] = 21, ["ATTBONUS_DEVIL"] = 22, ["STEAL_HP"] = 23, ["STEAL_SP"] = 24, ["MANA_BURN_PCT"] = 25, ["DAMAGE_SP_RECOVER"] = 26, ["BLOCK"] = 27, ["DODGE"] = 28, ["RESIST_SWORD"] = 29, ["RESIST_TWOHAND"] = 30, ["RESIST_DAGGER"] = 31, ["RESIST_BELL"] = 32, ["RESIST_FAN"] = 33, ["RESIST_BOW"] = 34, ["RESIST_FIRE"] = 35, ["RESIST_ELEC"] = 36, ["RESIST_MAGIC"] = 37, ["RESIST_WIND"] = 38, ["REFLECT_MELEE"] = 39, ["REFLECT_CURSE"] = 40, ["POISON_REDUCE"] = 41, ["KILL_SP_RECOVER"] = 42, ["EXP_DOUBLE_BONUS"] = 43, ["GOLD_DOUBLE_BONUS"] = 44, ["ITEM_DROP_BONUS"] = 45, ["POTION_BONUS"] = 46, ["KILL_HP_RECOVER"] = 47, ["IMMUNE_STUN"] = 48, ["IMMUNE_SLOW"] = 49, ["IMMUNE_FALL"] = 50, ["SKILL"] = 51, ["BOW_DISTANCE"] = 52, ["ATT_GRADE_BONUS"] = 53, ["DEF_GRADE_BONUS"] = 54, ["MAGIC_ATT_GRADE"] = 55, ["MAGIC_DEF_GRADE"] = 56, ["CURSE_PCT"] = 57, ["MAX_STAMINA"] = 58, ["ATTBONUS_WARRIOR"] = 59, ["ATTBONUS_ASSASSIN"] = 60, ["ATTBONUS_SURA"] = 61, ["ATTBONUS_SHAMAN"] = 62, ["ATTBONUS_MONSTER"] = 63, ["MALL_EXPBONUS"] = 66, ["MAX_HP_PCT"] = 69, ["MAX_SP_PCT"] = 70, ["MALL_DEFBONUS"] = 65, ["NORMAL_HIT_DEFEND_BONUS"] = 74, } -- ·¹º§¾÷ Äù½ºÆ® -_- special = {} special.fortune_telling = { -- { prob Å©¸® item money remove money { 1, 0, 20, 20, 0 }, -- 10 { 499, 0, 10, 10, 0 }, -- 5 { 2500, 0, 5, 5, 0 }, -- 1 { 5000, 0, 0, 0, 0 }, { 1500, 0, -5, -5, 20000 }, { 499, 0, -10, -10, 20000 }, { 1, 0, -20, -20, 20000 }, } special.questscroll_reward = { {1, 1500, 3000, 30027, 0, 0 }, {2, 1500, 3000, 30028, 0, 0 }, {3, 1000, 2000, 30034, 30018, 0 }, {4, 1000, 2000, 30034, 30011, 0 }, {5, 1000, 2000, 30011, 30034, 0 }, {6, 1000, 2000, 27400, 0, 0 }, {7, 2000, 4000, 30023, 30003, 0 }, {8, 2000, 4000, 30005, 30033, 0 }, {9, 2000, 8000, 30033, 30005, 0 }, {10, 4000, 8000, 30021, 30033, 30045}, {11, 4000, 8000, 30045, 30022, 30046}, {12, 5000, 12000, 30047, 30045, 30055}, {13, 5000, 12000, 30051, 30017, 30058}, {14, 5000, 12000, 30051, 30007, 30041}, {15, 5000, 15000, 30091, 30017, 30018}, {16, 3500, 6500, 30021, 30033, 0 }, {17, 4000, 9000, 30051, 30033, 0 }, {18, 4500, 10000, 30056, 30057, 30058}, {19, 4500, 10000, 30059, 30058, 30041}, {20, 5000, 15000, 0, 0, 0 }, } special.active_skill_list = { { { 1, 2, 3, 4, 5}, { 16, 17, 18, 19, 20}, }, { {31, 32, 33, 34, 35}, {46, 47, 48, 49, 50}, }, { {61, 62, 63, 64, 65, 66}, {76, 77, 78, 79, 80, 81}, }, { {91, 92, 93, 94, 95, 96}, {106, 107, 108, 109, 110, 111}, }, } special.skill_reset_cost = { 2000, 2000, 2000, 2000, 2000, 2000, 4000, 6000, 8000, 10000, 14000, 18000, 22000, 28000, 34000, 41000, 50000, 59000, 70000, 90000, 101000, 109000, 114000, 120000, 131000, 141000, 157000, 176000, 188000, 200000, 225000, 270000, 314000, 348000, 393000, 427000, 470000, 504000, 554000, 600000, 758000, 936000, 1103000, 1276000, 1407000, 1568000, 1704000, 1860000, 2080000, 2300000, 2700000, 3100000, 3500000, 3900000, 4300000, 4800000, 5300000, 5800000, 6400000, 7000000, 8000000, 9000000, 10000000, 11000000, 12000000, 13000000, 14000000, 15000000, 16000000, 17000000, } special.levelup_img = { [171] = "dog.tga", [172] = "wolf.tga", [173] = "wolf.tga", [174] = "wolf.tga", [175] = "wolf.tga", [175] = "wolf.tga", [176] = "wolf.tga", [177] = "wolf.tga", [178] = "wild_boar.tga", [179] = "wild_boar.tga", [180] = "bear.tga", [181] = "bear.tga", [182] = "bear.tga", [183] = "bear.tga", [184] = "tiger.tga", [185] = "tiger.tga", [351] = "bak_inf.tga", [352] = "bak_gung.tga", [353] = "bak_gen1.tga", [354] = "bak_gen2.tga", [402] = "402.tga", [451] = "huk_inf.tga", [452] = "huk_dol.tga", [453] = "huk_gen1.tga", [454] = "huk_gen2.tga", [456] = "456.tga", [551] = "o_inf.tga", [552] = "o_jol.tga", [553] = "o_gung.tga", [554] = "o_jang.tga", [651] = "ung_inf.tga", [652] = "ung_chuk.tga", [653] = "ung_tu.tga", [751] = "mil_chu.tga", [752] = "mil_na.tga", [753] = "mil_na.tga", [754] = "mil_na.tga", [755] = "mil_jip.tga", [756] = "756.tga", [757] = "757.tga", [771] = "mil_chu.tga", [772] = "mil_na.tga", [773] = "mil_na.tga", [774] = "mil_na.tga", [775] = "mil_jip.tga", [776] = "776.tga", [777] = "777.tga", [931] = "sigwi.tga", [932] = "932.tga", [933] = "gwoijil.tga", [934] = "934.tga", [935] = "935.tga", [936] = "936.tga", [937] = "937.tga", [1001] = "1001.tga", [1002] = "1002.tga", [1003] = "1003.tga", [1004] = "1004.tga", [1061] = "1061.tga", [1063] = "1063.tga", [1064] = "1064.tga", [1065] = "1065.tga", [1066] = "1066.tga", [1068] = "1068.tga", [1069] = "1069.tga", [1070] = "1070.tga", [1071] = "1071.tga", [1101] = "1101.tga", [1102] = "1102.tga", [1104] = "1104.tga", [1105] = "1105.tga", [1106] = "1106.tga", [1107] = "1107.tga", [1131] = "1131.tga", [1132] = "1132.tga", [1133] = "1133.tga", [1135] = "1135.tga", [1136] = "1136.tga", [1137] = "1137.tga", [1301] = "1301.tga", [1303] = "1303.tga", [1305] = "1305.tga", [2001] = "spider.tga", [2002] = "spider.tga", [2003] = "spider.tga", [2004] = "spider.tga", [2005] = "spider.tga", [2051] = "spider.tga", [2052] = "spider.tga", [2053] = "spider.tga", [2054] = "spider.tga", [2055] = "spider.tga", [2031] = "2031.tga", [2032] = "2032.tga", [2033] = "2033.tga", [2034] = "2034.tga", [2061] = "2061.tga", [2062] = "2062.tga", [2063] = "2063.tga", [2102] = "2102.tga", [2103] = "2103.tga", [2106] = "2106.tga", [2131] = "2131.tga", [2158] = "2158.tga", [2201] = "2201.tga", [2202] = "2202.tga", [2204] = "2204.tga", [2205] = "2205.tga", [2301] = "2301.tga", [2302] = "2302.tga", [2303] = "2303.tga", [2304] = "2304.tga", [2305] = "2305.tga", [2311] = "2311.tga", [2312] = "2312.tga", [2313] = "2313.tga", [2314] = "2314.tga", [2315] = "2315.tga", [5123] = "5123.tga", [5124] = "5124.tga", [5125] = "5125.tga", [5126] = "5126.tga", } special.levelup_quest = { -- monster kill monster kill -- vnum qty. vnum qty. exp percent { 0 , 0 , 0 , 0 , 0 } , -- lev 1 { 171 , 10 , 172 , 5 , 10 } , -- lev 2 { 171 , 20 , 172 , 10 , 10 } , -- lev 3 { 172 , 15 , 173 , 5 , 10 } , -- lev 4 { 173 , 10 , 174 , 10 , 10 } , -- lev 5 { 174 , 20 , 178 , 10 , 10 } , -- lev 6 { 178 , 10 , 175 , 5 , 10 } , -- lev 7 { 178 , 20 , 175 , 10 , 10 } , -- lev 8 { 175 , 15 , 179 , 5 , 10 } , -- lev 9 { 175 , 20 , 179 , 10 , 10 } , -- lev 10 { 179 , 10 , 180 , 5 , 10 } , -- lev 11 { 180 , 15 , 176 , 10 , 10 } , -- lev 12 { 176 , 20 , 181 , 5 , 10 } , -- lev 13 { 181 , 15 , 177 , 5 , 10 } , -- lev 14 { 181 , 20 , 177 , 10 , 10 } , -- lev 15 { 177 , 15 , 184 , 5 , 10 } , -- lev 16 { 177 , 20 , 184 , 10 , 10 } , -- lev 17 { 184 , 10 , 182 , 10 , 10 } , -- lev 18 { 182 , 20 , 183 , 10 , 10 } , -- lev 19 { 183 , 20 , 352 , 15 , 10 } , -- lev 20 { 352 , 20 , 185 , 10 , "2-10" } , -- lev 21 { 185 , 25 , 354 , 10 , "2-10" } , -- lev 22 { 354 , 20 , 451 , 40 , "2-10" } , -- lev 23 { 451 , 60 , 402 , 80 , "2-10" } , -- lev 24 { 551 , 80 , 454 , 20 , "2-10" } , -- lev 25 { 552 , 80 , 456 , 20 , "2-10" } , -- lev 26 { 456 , 30 , 554 , 20 , "2-10" } , -- lev 27 { 651 , 35 , 554 , 30 , "2-10" } , -- lev 28 { 651 , 40 , 652 , 30 , "2-10" } , -- lev 29 { 652 , 40 , 2102 , 30 , "2-10" } , -- lev 30 { 652 , 50 , 2102 , 45 , "2-5" } , -- lev 31 { 653 , 45 , 2051 , 40 , "2-5" } , -- lev 32 { 751 , 35 , 2103 , 30 , "2-5" } , -- lev 33 { 751 , 40 , 2103 , 40 , "2-5" } , -- lev 34 { 752 , 40 , 2052 , 30 , "2-5" } , -- lev 35 { 754 , 20 , 2106 , 20 , "2-5" } , -- lev 36 { 773 , 30 , 2003 , 20 , "2-5" } , -- lev 37 { 774 , 40 , 2004 , 20 , "2-5" } , -- lev 38 { 756 , 40 , 2005 , 30 , "2-5" } , -- lev 39 { 757 , 40 , 2158 , 20 , "2-5" } , -- lev 40 { 931 , 40 , 5123 , 25 , "2-5" } , -- lev 41 { 932 , 30 , 5123 , 30 , "2-5" } , -- lev 42 { 932 , 40 , 2031 , 35 , "2-5" } , -- lev 43 { 933 , 40 , 2031 , 40 , "2-5" } , -- lev 44 { 771 , 50 , 2032 , 45 , "2-5" } , -- lev 45 { 772 , 30 , 5124 , 30 , "2-5" } , -- lev 46 { 933 , 35 , 5125 , 30 , "2-5" } , -- lev 47 { 934 , 40 , 5125 , 35 , "2-5" } , -- lev 48 { 773 , 40 , 2033 , 45 , "2-5" } , -- lev 49 { 774 , 40 , 5126 , 20 , "2-5" } , -- lev 50 { 775 , 50 , 5126 , 30 , "1-4" } , -- lev 51 { 934 , 45 , 2034 , 45 , "1-4" } , -- lev 52 { 934 , 50 , 2034 , 50 , "1-4" } , -- lev 53 { 776 , 40 , 1001 , 30 , "1-4" } , -- lev 54 { 777 , 40 , 1301 , 35 , "1-4" } , -- lev 55 { 935 , 50 , 1002 , 30 , "1-4" } , -- lev 56 { 935 , 60 , 1002 , 40 , "1-4" } , -- lev 57 { 936 , 45 , 1303 , 40 , "1-4" } , -- lev 58 { 936 , 50 , 1303 , 45 , "1-4" } , -- lev 59 { 937 , 45 , 1003 , 40 , "1-4" } , -- lev 60 { 1004 , 50 , 2061 , 60 , "2-4" } , -- lev 61 { 1305 , 45 , 2131 , 55 , "2-4" } , -- lev 62 { 1305 , 50 , 1101 , 45 , "2-4" } , -- lev 63 { 2062 , 50 , 1102 , 45 , "2-4" } , -- lev 64 { 1104 , 40 , 2063 , 40 , "2-4" } , -- lev 65 { 2301 , 50 , 1105 , 45 , "2-4" } , -- lev 66 { 2301 , 55 , 1105 , 50 , "2-4" } , -- lev 67 { 1106 , 50 , 1061 , 50 , "2-4" } , -- lev 68 { 1107 , 45 , 1061 , 50 , "2-4" } , -- lev 69 { 2302 , 55 , 2201 , 55 , "2-4" } , -- lev 70 { 2303 , 55 , 2202 , 55 , "2-4" } , -- lev 71 { 2303 , 60 , 2202 , 60 , "2-4" } , -- lev 72 { 2304 , 55 , 1063 , 55 , "2-4" } , -- lev 73 { 2305 , 50 , 1063 , 55 , "2-4" } , -- lev 74 { 1064 , 50 , 2204 , 50 , "2-4" } , -- lev 75 { 2205 , 45 , 1065 , 50 , "2-4" } , -- lev 76 { 2311 , 50 , 1068 , 50 , "2-4" } , -- lev 77 { 1070 , 50 , 1066 , 55 , "2-4" } , -- lev 78 { 1070 , 50 , 1069 , 50 , "2-4" } , -- lev 79 { 1071 , 50 , 2312 , 55 , "2-4" } , -- lev 80 { 1071 , 55 , 2312 , 50 , "2-4" } , -- lev 81 { 2313 , 55 , 2314 , 45 , "2-4" } , -- lev 82 { 2313 , 55 , 2314 , 45 , "2-4" } , -- lev 83 { 1131 , 60 , 2315 , 45 , "5-10"} , -- lev 84 { 1131 , 60 , 2315 , 45 , "5-10"} , -- lev 85 { 1132 , 60 , 1135 , 50 , "5-10"} , -- lev 86 { 1132 , 60 , 1135 , 50 , "5-10"} , -- lev 87 { 1133 , 60 , 1136 , 50 , "5-10"} , -- lev 88 { 1133 , 60 , 1137 , 50 , "5-10"} , -- lev 89 { 1132 , 60 , 1137 , 40 , "5-10"} , -- lev 90 } special.levelup_reward1 = { -- warrior assassin sura shaman { 0, 0, 0, 0 }, { 11200, 11400, 11600, 11800 }, -- °©¿Ê { 12200, 12340, 12480, 12620 }, -- Åõ±¸ { 13000, 13000, 13000, 13000 } -- ¹æÆÐ } -- levelup_reward1 Å×À̺í Å©±âº¸´Ù ·¹º§ÀÌ ³ô¾ÆÁö¸é ¾Æ·¡ -- Å×À̺íÀ» ÀÌ¿ëÇÏ¿© ¾ÆÀÌÅÛÀ» ÁØ´Ù. special.levelup_reward3 = { -- pct item # item count { 33, 27002, 10 }, -- 25% { 67, 27005, 10 }, -- 25% --{ 75, 27101, 5 }, -- 25% { 100, 27114, 5 }, -- 25% } special.levelup_reward_gold21 = { { 10000, 20 }, { 20000, 50 }, { 40000, 25 }, { 80000, 3 }, { 100000, 2 }, } special.levelup_reward_gold31 = { { 20000, 20 }, { 40000, 40 }, { 60000, 25 }, { 80000, 10 }, { 100000, 5 }, } special.levelup_reward_gold41 = { { 40000, 20 }, { 60000, 40 }, { 80000, 25 }, { 100000, 10 }, { 150000, 5 }, } special.levelup_reward_gold51 = { { 60000, 20 }, { 80000, 40 }, { 100000, 25 }, { 150000, 10 }, { 200000, 5 }, } special.levelup_reward_exp21 = { { 2, 9 }, { 3, 14 }, { 4, 39 }, { 6, 24 }, { 8, 9 }, { 10, 4 }, } special.levelup_reward_exp31 = { { 2, 10 }, { 2.5, 15 }, { 3, 40 }, { 3.5, 25 }, { 4, 8 }, { 4.5, 5 }, { 5, 2 }, } special.levelup_reward_exp41 = { { 2, 10 }, { 2.5, 15 }, { 3, 40 }, { 3.5, 25 }, { 4, 8 }, { 4.5, 5 }, { 5, 2 }, } special.levelup_reward_exp51 = { { 1, 10 }, { 1.5, 15 }, { 2, 40 }, { 2.5, 25 }, { 3, 8 }, { 3.5, 5 }, { 4, 2 }, } special.levelup_reward_exp84 = { { 5, 9 }, { 6, 14 }, { 7, 39 }, { 8, 24 }, { 9, 9 }, { 10, 4 }, } special.levelup_reward_item_21 = { -- no couple ring { { 27002, 10 }, { 27005, 10 }, { 27114, 10 } }, -- lev 21 { 15080, 15100, 15120, 15140 }, -- lev 22 { 16080, 16100, 16120, 16140 }, -- lev 23 { 17080, 17100, 17120, 17140 }, -- lev 24 { { 27002, 10 }, { 27005, 10 }, { 27114, 10 } }, -- lev 25 { { 27003, 20 }, { 27006, 20 }, { 27114, 10 } }, -- over lev 25 -- with couple ring -- { { 27002, 10 }, { 27005, 10 }, { 27114, 10 }, { 70301, 1 } }, -- lev 21 -- { 15080, 15100, 15120, 15140, 70301 }, -- lev 22 -- { 16080, 16100, 16120, 16140, 70301 }, -- lev 23 -- { 17080, 17100, 17120, 17140, 70301 }, -- lev 24 -- { { 27002, 10 }, { 27005, 10 }, { 27114, 10 }, { 70301, 1 } }, -- lev 25 -- { { 27003, 20 }, { 27006, 20 }, { 27114, 10 } }, -- over lev 25 } special.warp_to_pos = { -- ½Â·æ°î { { 402100, 673900 }, { 270400, 739900 }, { 321300, 808000 }, }, --µµ¿°È­Áö { --A 5994 7563 --B 5978 6222 --C 7307 6898 { 599400, 756300 }, { 597800, 622200 }, { 730700, 689800 }, }, --¿µºñ»ç¸· { --A 2178 6272 { 217800, 627200 }, --B 2219 5027 { 221900, 502700 }, --C 3440 5025 { 344000, 502500 }, }, --¼­ÇÑ»ê { --A 4342 2906 { 434200, 290600 }, --B 3752 1749 { 375200, 174900 }, --C 4918 1736 { 491800, 173600 }, }, } special.devil_tower = { --{ 123, 608 }, { 2048+126, 6656+384 }, { 2048+134, 6656+147 }, { 2048+369, 6656+629 }, { 2048+369, 6656+401 }, { 2048+374, 6656+167 }, { 2048+579, 6656+616 }, { 2048+578, 6656+392 }, { 2048+575, 6656+148 }, } special.lvq_map = { { -- "A1" 1 {}, { { 440, 565 }, { 460, 771 }, { 668, 800 },}, { { 440, 565 }, { 460, 771 }, { 668, 800 },}, { { 440, 565 }, { 460, 771 }, { 668, 800 },}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{496, 401}, {494, 951}, {542, 1079}, {748, 9741},}, {{853,557}, {845,780}, {910,956},}, {{853,557}, {845,780}, {910,956},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{340, 179}, {692, 112}, {787, 256}, {898, 296},}, {{224,395}, {137,894}, {206,830}, {266,1067},}, {{224,395}, {137,894}, {206,830}, {266,1067},}, {{224,395}, {137,894}, {206,830}, {266,1067},}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, {{405,74}}, }, { -- "A2" 2 {}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{ 640,1437 }}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{640,1437}}, {{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},}, {{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},}, {{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},}, {{244,1309}, {4567,1080}, {496,885}, {798,975}, {1059,1099}, {855,1351},}, {{193,772}, {390,402}, {768,600}, {1075,789}, {1338,813},}, {{193,772}, {390,402}, {768,600}, {1075,789}, {1338,813},}, }, { -- "A3" 3 {}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{ 948,804 }}, {{438, 895}, {725, 864}, {632, 671},}, {{438, 895}, {725, 864}, {632, 671},}, {{438, 895}, {725, 864}, {632, 671},}, {{438, 895}, {725, 864}, {632, 671},}, {{438, 895}, {725, 864}, {632, 671},}, {{847, 412}, {844, 854}, {823, 757}, {433, 407},}, {{847, 412}, {844, 854}, {823, 757}, {433, 407},}, {{847, 412}, {844, 854}, {823, 757}, {433, 407},}, {{847, 412}, {844, 854}, {823, 757}, {433, 407},}, {{847, 412}, {844, 854}, {823, 757}, {433, 407},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{316,168}, {497,130}, {701,157}, {858,316},}, {{200,277}, {130,646}, {211,638}, {291,851},}, {{200,277}, {130,646}, {211,638}, {291,851},}, {{200,277}, {130,646}, {211,638}, {291,851},}, {{100,150}}, {{100,150}}, {{100,150}}, {{100,150}}, {{100,150}}, {{100,150}}, }, {}, -- 4 {}, -- 5 {}, -- 6 {}, -- 7 {}, -- 8 {}, -- 9 {}, -- 10 {}, -- 11 {}, -- 12 {}, -- 13 {}, -- 14 {}, -- 15 {}, -- 16 {}, -- 17 {}, -- 18 {}, -- 19 {}, -- 20 { -- "B1" 21 {}, {{412,635}, {629,428}, {829,586},}, {{412,635}, {629,428}, {829,586},}, {{412,635}, {629,428}, {829,586},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{329,643}, {632,349}, {905,556},}, {{866,822}, {706,224}, {247,722},}, {{866,822}, {706,224}, {247,722},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{617,948}, {353,221},}, {{496,1089}, {890,1043},}, {{496,1089}, {890,1043},}, {{496,1089}, {890,1043},}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{876,1127}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}}, {{908,87}}, }, { -- "B2" 22 {}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{ 95,819 }}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{746,1438}}, {{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},}, {{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},}, {{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},}, {{ 172,810}, {288,465}, {475,841}, {303,156}, {687,466},}, {{787,235}, {1209,382}, {1350,571}, {1240,852}, {1254,1126}, {1078,1285}, {727,1360},}, {{787,235}, {1209,382}, {1350,571}, {1240,852}, {1254,1126}, {1078,1285}, {727,1360},}, }, { -- "B3" 23 {}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{ 106,88 }}, {{230, 244}, {200, 444}, {594, 408},}, {{230, 244}, {200, 444}, {594, 408},}, {{230, 244}, {200, 444}, {594, 408},}, {{230, 244}, {200, 444}, {594, 408},}, {{230, 244}, {200, 444}, {594, 408},}, {{584,204}, {720,376}, {861,272},}, {{584,204}, {720,376}, {861,272},}, {{584,204}, {720,376}, {861,272},}, {{584,204}, {720,376}, {861,272},}, {{584,204}, {720,376}, {861,272},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{566,694}, {349,574}, {198,645},}, {{816,721}, {489,823},}, {{816,721}, {489,823},}, {{816,721}, {489,823},}, {{772,140}}, {{772,140}}, {{772,140}}, {{772,140}}, {{772,140}}, {{772,140}}, }, {}, -- 24 {}, -- 25 {}, -- 26 {}, -- 27 {}, -- 28 {}, -- 29 {}, -- 30 {}, -- 31 {}, -- 32 {}, -- 33 {}, -- 34 {}, -- 35 {}, -- 36 {}, -- 37 {}, -- 38 {}, -- 39 {}, -- 40 { -- "C1" 41 {}, {{385,446}, {169,592}, {211,692}, {632,681},}, {{385,446}, {169,592}, {211,692}, {632,681},}, {{385,446}, {169,592}, {211,692}, {632,681},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{385,374}, {227,815}, {664,771},}, {{169,362}, {368,304}, {626,409}, {187,882}, {571,858},}, {{169,362}, {368,304}, {626,409}, {187,882}, {571,858},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{178,275}, {365,242}, {644,313}, {194,950}, {559,936},}, {{452,160}, {536,1034}, {184,1044},}, {{452,160}, {536,1034}, {184,1044},}, {{452,160}, {536,1034}, {184,1044},}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, {{137,126}}, }, { -- "C2" 42 {}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{1409,139}}, {{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},}, {{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},}, {{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},}, {{991,222}, {1201,525}, {613,232}, {970,751}, {1324,790},}, {{192,211}, {247,600}, {249,882}, {987,981}, {1018,1288}, {1303,1174},}, {{192,211}, {247,600}, {249,882}, {987,981}, {1018,1288}, {1303,1174},}, }, { -- "C3" 43 {}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{901,151}}, {{421, 189}, {167, 353},}, {{421, 189}, {167, 353},}, {{421, 189}, {167, 353},}, {{421, 189}, {167, 353},}, {{421, 189}, {167, 353},}, {{679,459}, {505,709},}, {{679,459}, {505,709},}, {{679,459}, {505,709},}, {{679,459}, {505,709},}, {{679,459}, {505,709},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{858,638}, {234,596},}, {{635,856}, {324,855},}, {{635,856}, {324,855},}, {{635,856}, {324,855},}, {{136,899}}, {{136,899}}, {{136,899}}, {{136,899}}, {{136,899}}, {{136,899}}, }, {}, -- 44 {}, -- 45 {}, -- 46 {}, -- 47 {}, -- 48 {}, -- 49 {}, -- 50 {}, -- 51 {}, -- 52 {}, -- 53 {}, -- 54 {}, -- 55 {}, -- 56 {}, -- 57 {}, -- 58 {}, -- 59 {}, -- 60 } function BuildSkillList(job, group) local skill_vnum_list = {} local skill_name_list = {} if pc.get_skill_group() != 0 then local skill_list = special.active_skill_list[job+1][group] table.foreachi( skill_list, function(i, t) local lev = pc.get_skill_level(t) if lev > 0 then local name = locale.GM_SKILL_NAME_DICT[t] if name != nil then table.insert(skill_vnum_list, t) table.insert(skill_name_list, name) end end end ) end table.insert(skill_vnum_list, 0) table.insert(skill_name_list, gameforge.locale.cancel) return { skill_vnum_list, skill_name_list } end --BEGIN EDIT created for Heavens cave pre event, Arne 23Sept09 -- Table for storing character names, char_name_list = {} char_name_list[1] = {} char_name_list[2] = {} char_name_list[3] = {} char_name_list[4] = {} char_name_list[5] = {} char_name_list[6] = {} char_name_list[7] = {} char_name_list[8] = {} char_name_list[9] = {} char_name_list[10] = {} --no return, just used for storing a name into the list function store_charname_by_id(id, charname, charid) char_name_list[id]["name"] = charname char_name_list[id]["eid"] = charid return nil end -- returns the name of a given list item, id is the highscore slot function return_charname_by_id(charid) local counter = 11 repeat counter = counter -1 until char_name_list[counter]["eid"] == charid return char_name_list[counter]["name"] end function get_map_name_by_number(number) map_name = { --EmpireNr-MapNrs [1] = {[1] = gameforge.functions._100_say, [2] = gameforge.functions._130_say, [3] = gameforge.functions._130_say, [4] = gameforge.functions._160_say, [61] = gameforge.functions._200_say, [62] = gameforge.functions._210_say, [63] = gameforge.functions._220_say, [64] = gameforge.functions._190_say, [65] = gameforge.functions._230_say, [72] = gameforge.functions._240_say, [73] = gameforge.functions._240_say,}, [2] = {[1] = gameforge.functions._110_say, [2] = gameforge.functions._140_say, [3] = gameforge.functions._140_say, [4] = gameforge.functions._170_say, [61] = gameforge.functions._200_say, [62] = gameforge.functions._210_say, [63] = gameforge.functions._220_say, [64] = gameforge.functions._190_say, [65] = gameforge.functions._230_say, [72] = gameforge.functions._240_say, [73] = gameforge.functions._240_say,}, [3] = {[1] = gameforge.functions._120_say, [2] = gameforge.functions._150_say, [3] = gameforge.functions._150_say, [4] = gameforge.functions._180_say, [61] = gameforge.functions._200_say, [62] = gameforge.functions._210_say, [63] = gameforge.functions._220_say, [64] = gameforge.functions._190_say, [65] = gameforge.functions._230_say, [72] = gameforge.functions._240_say, [73] = gameforge.functions._240_say,}, } return map_name[pc.get_empire()][number] end --END EDIT PREMIUM_EXP = 0 PREMIUM_ITEM = 1 PREMIUM_SAFEBOX = 2 PREMIUM_AUTOLOOT = 3 PREMIUM_FISH_MIND = 4 PREMIUM_MARRIAGE_FAST = 5 PREMIUM_GOLD = 6 -- point type start POINT_NONE = 0 POINT_LEVEL = 1 POINT_VOICE = 2 POINT_EXP = 3 POINT_NEXT_EXP = 4 POINT_HP = 5 POINT_MAX_HP = 6 POINT_SP = 7 POINT_MAX_SP = 8 POINT_STAMINA = 9 --½ºÅ×¹Ì³Ê POINT_MAX_STAMINA = 10 --ÃÖ´ë ½ºÅ×¹Ì³Ê POINT_GOLD = 11 POINT_ST = 12 --±Ù·Â POINT_HT = 13 --ü·Â POINT_DX = 14 --¹Îø¼º POINT_IQ = 15 --Á¤½Å·Â POINT_DEF_GRADE = 16 POINT_ATT_SPEED = 17 --°ø°Ý¼Óµµ POINT_ATT_GRADE = 18 --°ø°Ý·Â MAX POINT_MOV_SPEED = 19 --À̵¿¼Óµµ POINT_CLIENT_DEF_GRADE = 20 --¹æ¾îµî±Þ POINT_CASTING_SPEED = 21 --ÁÖ¹®¼Óµµ (Äð´Ù¿îŸÀÓ*100) / (100 + ÀÌ°ª) = ÃÖÁ¾ Äð´Ù¿î ŸÀÓ POINT_MAGIC_ATT_GRADE = 22 --¸¶¹ý°ø°Ý·Â POINT_MAGIC_DEF_GRADE = 23 --¸¶¹ý¹æ¾î·Â POINT_EMPIRE_POINT = 24 --Á¦±¹Á¡¼ö POINT_LEVEL_STEP = 25 --ÇÑ ·¹º§¿¡¼­ÀÇ ´Ü°è.. (1 2 3 µÉ ¶§ º¸»ó 4 µÇ¸é ·¹º§ ¾÷) POINT_STAT = 26 --´É·ÂÄ¡ ¿Ã¸± ¼ö ÀÖ´Â °³¼ö POINT_SUB_SKILL = 27 --º¸Á¶ ½ºÅ³ Æ÷ÀÎÆ® POINT_SKILL = 28 --¾×Ƽºê ½ºÅ³ Æ÷ÀÎÆ® POINT_WEAPON_MIN = 29 --¹«±â ÃÖ¼Ò µ¥¹ÌÁö POINT_WEAPON_MAX = 30 --¹«±â ÃÖ´ë µ¥¹ÌÁö POINT_PLAYTIME = 31 --Ç÷¹À̽ð£ POINT_HP_REGEN = 32 --HP ȸº¹·ü POINT_SP_REGEN = 33 --SP ȸº¹·ü POINT_BOW_DISTANCE = 34 --È° »çÁ¤°Å¸® Áõ°¡Ä¡ (meter) POINT_HP_RECOVERY = 35 --ü·Â ȸº¹ Áõ°¡·® POINT_SP_RECOVERY = 36 --Á¤½Å·Â ȸº¹ Áõ°¡·® POINT_POISON_PCT = 37 --µ¶ È®·ü POINT_STUN_PCT = 38 --±âÀý È®·ü POINT_SLOW_PCT = 39 --½½·Î¿ì È®·ü POINT_CRITICAL_PCT = 40 --Å©¸®Æ¼Äà Ȯ·ü POINT_PENETRATE_PCT = 41 --°üÅëŸ°Ý È®·ü POINT_CURSE_PCT = 42 --ÀúÁÖ È®·ü POINT_ATTBONUS_HUMAN = 43 --Àΰ£¿¡°Ô °­ÇÔ POINT_ATTBONUS_ANIMAL = 44 --µ¿¹°¿¡°Ô µ¥¹ÌÁö % Áõ°¡ POINT_ATTBONUS_ORC = 45 --¿õ±Í¿¡°Ô µ¥¹ÌÁö % Áõ°¡ POINT_ATTBONUS_MILGYO = 46 --¹Ð±³¿¡°Ô µ¥¹ÌÁö % Áõ°¡ POINT_ATTBONUS_UNDEAD = 47 --½Ãü¿¡°Ô µ¥¹ÌÁö % Áõ°¡ POINT_ATTBONUS_DEVIL = 48 --¸¶±Í(¾Ç¸¶)¿¡°Ô µ¥¹ÌÁö % Áõ°¡ POINT_ATTBONUS_INSECT = 49 --¹ú·¹Á· POINT_ATTBONUS_FIRE = 50 --È­¿°Á· POINT_ATTBONUS_ICE = 51 --ºù¼³Á· POINT_ATTBONUS_DESERT = 52 --»ç¸·Á· POINT_ATTBONUS_MONSTER = 53 --¸ðµç ¸ó½ºÅÍ¿¡°Ô °­ÇÔ POINT_ATTBONUS_WARRIOR = 54 --¹«»ç¿¡°Ô °­ÇÔ POINT_ATTBONUS_ASSASSIN = 55 --ÀÚ°´¿¡°Ô °­ÇÔ POINT_ATTBONUS_SURA = 56 --¼ö¶ó¿¡°Ô °­ÇÔ POINT_ATTBONUS_SHAMAN = 57 --¹«´ç¿¡°Ô °­ÇÔ -- ADD_TRENT_MONSTER POINT_ATTBONUS_TREE = 58 --³ª¹«¿¡°Ô °­ÇÔ 20050729.myevan UNUSED5 -- END_OF_ADD_TRENT_MONSTER POINT_RESIST_WARRIOR = 59 --¹«»ç¿¡°Ô ÀúÇ× POINT_RESIST_ASSASSIN = 60 --ÀÚ°´¿¡°Ô ÀúÇ× POINT_RESIST_SURA = 61 --¼ö¶ó¿¡°Ô ÀúÇ× POINT_RESIST_SHAMAN = 62 --¹«´ç¿¡°Ô ÀúÇ× POINT_STEAL_HP = 63 --»ý¸í·Â Èí¼ö POINT_STEAL_SP = 64 --Á¤½Å·Â Èí¼ö POINT_MANA_BURN_PCT = 65 --¸¶³ª ¹ø --/ ÇÇÇؽà º¸³Ê½º =/ POINT_DAMAGE_SP_RECOVER = 66 --°ø°Ý´çÇÒ ½Ã Á¤½Å·Â ȸº¹ È®·ü POINT_BLOCK = 67 --ºí·°À² POINT_DODGE = 68 --ȸÇÇÀ² POINT_RESIST_SWORD = 69 POINT_RESIST_TWOHAND = 70 POINT_RESIST_DAGGER = 71 POINT_RESIST_BELL = 72 POINT_RESIST_FAN = 73 POINT_RESIST_BOW = 74 --È­»ì ÀúÇ× : ´ë¹ÌÁö °¨¼Ò POINT_RESIST_FIRE = 75 --È­¿° ÀúÇ× : È­¿°°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò POINT_RESIST_ELEC = 76 --Àü±â ÀúÇ× : Àü±â°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò POINT_RESIST_MAGIC = 77 --¼ú¹ý ÀúÇ× : ¸ðµç¼ú¹ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò POINT_RESIST_WIND = 78 --¹Ù¶÷ ÀúÇ× : ¹Ù¶÷°ø°Ý¿¡ ´ëÇÑ ´ë¹ÌÁö °¨¼Ò POINT_REFLECT_MELEE = 79 --°ø°Ý ¹Ý»ç --/ Ư¼ö ÇÇÇؽà =/ POINT_REFLECT_CURSE = 80 --ÀúÁÖ ¹Ý»ç POINT_POISON_REDUCE = 81 --µ¶µ¥¹ÌÁö °¨¼Ò --/ Àû ¼Ò¸ê½Ã =/ POINT_KILL_SP_RECOVER = 82 --Àû ¼Ò¸ê½Ã MP ȸº¹ POINT_EXP_DOUBLE_BONUS = 83 POINT_GOLD_DOUBLE_BONUS = 84 POINT_ITEM_DROP_BONUS = 85 --/ ȸº¹ °ü·Ã =/ POINT_POTION_BONUS = 86 POINT_KILL_HP_RECOVERY = 87 POINT_IMMUNE_STUN = 88 POINT_IMMUNE_SLOW = 89 POINT_IMMUNE_FALL = 90 --======== POINT_PARTY_ATTACKER_BONUS = 91 POINT_PARTY_TANKER_BONUS = 92 POINT_ATT_BONUS = 93 POINT_DEF_BONUS = 94 POINT_ATT_GRADE_BONUS = 95 POINT_DEF_GRADE_BONUS = 96 POINT_MAGIC_ATT_GRADE_BONUS = 97 POINT_MAGIC_DEF_GRADE_BONUS = 98 POINT_RESIST_NORMAL_DAMAGE = 99 POINT_HIT_HP_RECOVERY = 100 POINT_HIT_SP_RECOVERY = 101 POINT_MANASHIELD = 102 --Èæ½Å¼öÈ£ ½ºÅ³¿¡ ÀÇÇÑ ¸¶³ª½¯µå È¿°ú Á¤µµ POINT_PARTY_BUFFER_BONUS = 103 POINT_PARTY_SKILL_MASTER_BONUS = 104 POINT_HP_RECOVER_CONTINUE = 105 POINT_SP_RECOVER_CONTINUE = 106 POINT_STEAL_GOLD = 107 POINT_POLYMORPH = 108 --º¯½ÅÇÑ ¸ó½ºÅÍ ¹øÈ£ POINT_MOUNT = 109 --Ÿ°íÀÖ´Â ¸ó½ºÅÍ ¹øÈ£ POINT_PARTY_HASTE_BONUS = 110 POINT_PARTY_DEFENDER_BONUS = 111 POINT_STAT_RESET_COUNT = 112 --ÇÇÀÇ ´Ü¾à »ç¿ëÀ» ÅëÇÑ ½ºÅÝ ¸®¼Â Æ÷ÀÎÆ® (1´ç 1Æ÷ÀÎÆ® ¸®¼Â°¡´É) POINT_HORSE_SKILL = 113 POINT_MALL_ATTBONUS = 114 --°ø°Ý·Â +x% POINT_MALL_DEFBONUS = 115 --¹æ¾î·Â +x% POINT_MALL_EXPBONUS = 116 --°æÇèÄ¡ +x% POINT_MALL_ITEMBONUS = 117 --¾ÆÀÌÅÛ µå·ÓÀ² x/10¹è POINT_MALL_GOLDBONUS = 118 --µ· µå·ÓÀ² x/10¹è POINT_MAX_HP_PCT = 119 --ÃÖ´ë»ý¸í·Â +x% POINT_MAX_SP_PCT = 120 --ÃÖ´ëÁ¤½Å·Â +x% POINT_SKILL_DAMAGE_BONUS = 121 --½ºÅ³ µ¥¹ÌÁö *(100+x)% POINT_NORMAL_HIT_DAMAGE_BONUS = 122 --ÆòŸ µ¥¹ÌÁö *(100+x)% -- DEFEND_BONUS_ATTRIBUTES POINT_SKILL_DEFEND_BONUS = 123 --½ºÅ³ ¹æ¾î µ¥¹ÌÁö POINT_NORMAL_HIT_DEFEND_BONUS = 124 --ÆòŸ ¹æ¾î µ¥¹ÌÁö -- END_OF_DEFEND_BONUS_ATTRIBUTES -- PC_BANG_ITEM_ADD POINT_PC_BANG_EXP_BONUS = 125 --PC¹æ Àü¿ë °æÇèÄ¡ º¸³Ê½º POINT_PC_BANG_DROP_BONUS = 126 --PC¹æ Àü¿ë µå·Ó·ü º¸³Ê½º -- END_PC_BANG_ITEM_ADD -- POINT_MAX_NUM = 128 common/length.h -- point type start function input_number (sentence) say (sentence) local n = nil while n == nil do n = tonumber (input()) if n != nil then break end say ("input number") end return n end ITEM_NONE = 0 ITEM_WEAPON = 1 ITEM_ARMOR = 2 WEAPON_SWORD = 0 WEAPON_DAGGER = 1 WEAPON_BOW = 2 WEAPON_TWO_HANDED = 3 WEAPON_BELL = 4 WEAPON_FAN = 5 WEAPON_ARROW = 6 WEAPON_MOUNT_SPEAR = 7 --dofile( get_locale_base_path() .. "/quest/GFquestlib.lua") function get_today_count(questname, flag_name) local today = math.floor(get_global_time() / 86400) local today_flag = flag_name.."_today" local today_count_flag = flag_name.."_today_count" local last_day = pc.getf(questname, today_flag) if last_day == today then return pc.getf(questname, today_count_flag) else return 0 end end -- "$flag_name"_today unix_timestamp % 86400 -- "$flag_name"_count count function inc_today_count(questname, flag_name, count) local today = math.floor(get_global_time() / 86400) local today_flag = flag_name.."_today" local today_count_flag = flag_name.."_today_count" local last_day = pc.getqf(questname, today_flag) if last_day == today then pc.setf(questname, today_count_flag, pc.getf(questname, today_count_flag) + 1) else pc.setf(questname, today_flag, today) pc.setf(questname, today_count_flag, 1) end end -- This function will return true always in window os, -- but not in freebsd. -- (In window os, RAND_MAX = 0x7FFF = 32767.) -- function drop_gamble_with_flag(drop_flag) -- local dp, range = pc.get_killee_drop_pct() -- dp = 40000 * dp / game.get_event_flag(drop_flag) -- if dp < 0 or range < 0 then -- return false -- end -- return dp >= number(1, range) -- end -- "Fix" function drop_gamble_with_flag(drop_flag) local drop_chance = game.get_event_flag(drop_flag) if drop_chance < 1 or drop_chance > 100 then drop_chance = 10 end return drop_chance >= number(1, 100) end function say_npc() say_title(""..mob_name(npc.get_race())..":") end