1852 lines
53 KiB
Lua
1852 lines
53 KiB
Lua
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
|