forked from metin2/server
1
0
Fork 0
server/gamefiles/locale/english/quest/questscroll5.quest

497 lines
19 KiB
Plaintext
Raw Normal View History

quest questscroll5 begin
state start begin
when 50317.use begin
local s=0
local t=select("Aa", "Ab", "Ba", "Bb", "Bc", "Ca", "Cb", "Cc", "Cd", "Da", "Db")
if 1==t then
s=select(
questscroll5.get_menu(1),
questscroll5.get_menu(2),
questscroll5.get_menu(3),
questscroll5.get_menu(4),
questscroll5.get_menu(5),
questscroll5.get_menu(6)
)+1-1
elseif 2==t then
s=select(
questscroll5.get_menu(7),
questscroll5.get_menu(8),
questscroll5.get_menu(9),
questscroll5.get_menu(10),
questscroll5.get_menu(11)
)+7-1
elseif 3==t then
s=select(
questscroll5.get_menu(12),
questscroll5.get_menu(13),
questscroll5.get_menu(14),
questscroll5.get_menu(15)
)+12-1
elseif 4==t then
s=select(
questscroll5.get_menu(16),
questscroll5.get_menu(17),
questscroll5.get_menu(18),
questscroll5.get_menu(19),
questscroll5.get_menu(20),
questscroll5.get_menu(21)
)+16-1
elseif 5==t then
s=select(
questscroll5.get_menu(22),
questscroll5.get_menu(23),
questscroll5.get_menu(24),
questscroll5.get_menu(25)
)+22-1
elseif 6==t then
s=select(
questscroll5.get_menu(26),
questscroll5.get_menu(27),
questscroll5.get_menu(28),
questscroll5.get_menu(29),
questscroll5.get_menu(30),
questscroll5.get_menu(31)
)+26-1
elseif 7==t then
s=select(
questscroll5.get_menu(32),
questscroll5.get_menu(33),
questscroll5.get_menu(34),
questscroll5.get_menu(35)
)+32-1
elseif 8==t then
s=select(
questscroll5.get_menu(36),
questscroll5.get_menu(37),
questscroll5.get_menu(38),
questscroll5.get_menu(39),
questscroll5.get_menu(40),
questscroll5.get_menu(41)
)+36-1
elseif 9==t then
s=select(
questscroll5.get_menu(42),
questscroll5.get_menu(43),
questscroll5.get_menu(44),
questscroll5.get_menu(45),
questscroll5.get_menu(46),
questscroll5.get_menu(47),
questscroll5.get_menu(48),
questscroll5.get_menu(49)
)+42-1
elseif 10==t then
s=select(
questscroll5.get_menu(50),
questscroll5.get_menu(51),
questscroll5.get_menu(52),
questscroll5.get_menu(53)
)+50-1
elseif 11==t then
s=select(
questscroll5.get_menu(54),
questscroll5.get_menu(55),
questscroll5.get_menu(56)
)+54-1
end
questscroll5.set_mission(s)
item.remove()
end
when 50318.use begin
local s=0
if is_test_server() then
test_chat(gameforge.questscroll5._30_chat)
s=select(
questscroll5.get_menu(1),
questscroll5.get_menu(2),
questscroll5.get_menu(3),
questscroll5.get_menu(4),
questscroll5.get_menu(5),
questscroll5.get_menu(6),
questscroll5.get_menu(7),
questscroll5.get_menu(8),
questscroll5.get_menu(9),
questscroll5.get_menu(10),
questscroll5.get_menu(11)
)+1-1
else
s=number(1, 11)
end
questscroll5.set_mission(s)
item.remove()
end
when 50319.use begin
local s=0
if is_test_server() then
test_chat(gameforge.questscroll5._40_chat)
s=select(
questscroll5.get_menu(12),
questscroll5.get_menu(13),
questscroll5.get_menu(14),
questscroll5.get_menu(15),
questscroll5.get_menu(16),
questscroll5.get_menu(17),
questscroll5.get_menu(18),
questscroll5.get_menu(19),
questscroll5.get_menu(20),
questscroll5.get_menu(21),
questscroll5.get_menu(22),
questscroll5.get_menu(23),
questscroll5.get_menu(24),
questscroll5.get_menu(25)
)+12-1
else
s=number(12, 25)
end
questscroll5.set_mission(s)
item.remove()
end
when 50320.use begin
local s=0
if is_test_server() then
test_chat(gameforge.questscroll5._50_chat)
s=select(
questscroll5.get_menu(26),
questscroll5.get_menu(27),
questscroll5.get_menu(28),
questscroll5.get_menu(29),
questscroll5.get_menu(30),
questscroll5.get_menu(31),
questscroll5.get_menu(32),
questscroll5.get_menu(33),
questscroll5.get_menu(34),
questscroll5.get_menu(35),
questscroll5.get_menu(36),
questscroll5.get_menu(37),
questscroll5.get_menu(38),
questscroll5.get_menu(39),
questscroll5.get_menu(40),
questscroll5.get_menu(41),
questscroll5.get_menu(42),
questscroll5.get_menu(43),
questscroll5.get_menu(44),
questscroll5.get_menu(45),
questscroll5.get_menu(46),
questscroll5.get_menu(47),
questscroll5.get_menu(48),
questscroll5.get_menu(49)
)+26-1
else
s=number(26, 49)
end
questscroll5.set_mission(s)
item.remove()
end
when 50321.use begin
local s=0
if is_test_server() then
test_chat(gameforge.questscroll5._60_chat)
s=select(
questscroll5.get_menu(50),
questscroll5.get_menu(51),
questscroll5.get_menu(52),
questscroll5.get_menu(53),
questscroll5.get_menu(54),
questscroll5.get_menu(55),
questscroll5.get_menu(56)
)+50-1
else
s=number(50, 56)
end
questscroll5.set_mission(s)
item.remove()
end
function get_menu(mission_index)
return locale.questscroll5.mission[mission_index][3]
end
function set_mission(mission_index)
pc.setqf("mission_index", mission_index)
local mission_type=questscroll5.get_mission_type()
if mission_type==QUEST_SCROLL_TYPE_KILL_MOB then
test_chat(gameforge.questscroll5._70_chat)
set_state("kill1")
elseif mission_type==QUEST_SCROLL_TYPE_KILL_MOB2 then
test_chat(gameforge.questscroll5._80_chat)
set_state("kill2")
end
end
function get_mission_type()
return questscroll5.get_mission()[1]
end
function notify_already_running()
say_title(gameforge.questscroll5._90_sayTitle)
say(gameforge.questscroll5._100_say)
end
function show_mission_menu()
local s= select(gameforge.locale.levelup.prev_quest_go, gameforge.locale.cancel)
if s==2 then
say_title(string.format(gameforge.questscroll5._110_sayTitle, questscroll5.get_title()))
say(gameforge.questscroll5._120_say)
local a= select(gameforge.questscroll5._130_select, gameforge.locale.guild.no)
if a==1 then
say(string.format(gameforge.questscroll5._140_say, questscroll5.get_title()))
restart_quest()
end
end
end
end
state kill1 begin
when questscroll1.use or
50317.use or
50318.use or
50319.use or
50320.use or
50321.use or
50322.use or
50323.use or
50324.use or
50325.use begin
questscroll5.notify_already_running()
end
when letter begin
send_letter(questscroll5.get_title())
end
when button or info begin
say_title(questscroll5.get_title())
say(questscroll5.get_desc())
say_reward(questscroll5.get_summ())
say_reward(string.format(gameforge.questscroll5._150_sayReward, questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count() ))
questscroll5.show_mission_menu()
end
when enter begin
pc.setqf("mob1_kill_count", 0)
end
when leave begin
pc.setqf("mob1_kill_count", 0)
end
when letter begin
q.set_counter(questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count())
end
when kill begin
test_chat(string.format(gameforge.questscroll5._160_chat, npc.get_race().." [ENTER]questscroll5.dest_race:"..questscroll5.get_mob1_vnum()))
if npc.get_race()==questscroll5.get_mob1_vnum() then
local mob1_kill_count=questscroll5.get_mob1_cur_kill_count()+1
questscroll5.set_mob1_cur_kill_count(mob1_kill_count)
q.set_counter(questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count())
if mob1_kill_count>=questscroll5.get_mob1_max_kill_count() then
set_state(reward)
end
end
end
end
state kill2 begin
when questscroll1.use or
50317.use or
50318.use or
50319.use or
50320.use or
50321.use or
50322.use or
50323.use or
50324.use or
50325.use begin
questscroll5.notify_already_running()
end
when letter begin
send_letter(questscroll5.get_title())
end
when button or info begin
say_title(questscroll5.get_title())
say(questscroll5.get_desc())
say_reward(questscroll5.get_summ())
say_reward(string.format(gameforge.questscroll5._170_sayReward, questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count(), questscroll5.get_mob2_name(), questscroll5.get_mob2_rest_kill_count() ))
questscroll5.show_mission_menu()
end
when enter begin
pc.setqf("mob1_kill_count", 0)
pc.setqf("mob2_kill_count", 0)
end
when leave begin
pc.setqf("mob1_kill_count", 0)
pc.setqf("mob2_kill_count", 0)
end
when letter begin
q.set_counter(questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count())
end
when kill begin
local npc_race=npc.get_race()
local mob1_kill_count=questscroll5.get_mob1_cur_kill_count()
local mob2_kill_count=questscroll5.get_mob2_cur_kill_count()
test_chat(string.format(gameforge.questscroll5._180_chat, npc_race.." [ENTER]questscroll5.dest_race1: ["..questscroll5.get_mob1_vnum().."] [ENTER]questscroll5.dest_race2: ["..questscroll5.get_mob2_vnum()))
if npc_race==questscroll5.get_mob1_vnum() then
mob1_kill_count=mob1_kill_count+1
questscroll5.set_mob1_cur_kill_count(mob1_kill_count)
q.set_counter(questscroll5.get_mob1_name(), questscroll5.get_mob1_rest_kill_count())
elseif npc_race==questscroll5.get_mob2_vnum() then
mob2_kill_count=mob2_kill_count+1
questscroll5.set_mob2_cur_kill_count(mob2_kill_count)
q.set_counter(questscroll5.get_mob2_name(), questscroll5.get_mob2_rest_kill_count())
end
if mob1_kill_count>=questscroll5.get_mob1_max_kill_count() and
mob2_kill_count>=questscroll5.get_mob2_max_kill_count() then
set_state(reward)
end
end
end
state reward begin
when letter begin
send_letter(questscroll5.get_complete_title())
end
when button or info begin
restart_quest()
say_title(questscroll5.get_complete_title())
say(gameforge.questscroll5._190_say)
local reward_type=questscroll5.get_reward_type()
if number(0, 100)<=90 then
local s=number(1, 3)
if 1==s then
questscroll5.reward_exp(reward_type)
questscroll5.reward_money(reward_type)
elseif 2==s then
questscroll5.reward_money(reward_type)
questscroll5.reward_item(reward_type)
elseif 3==s then
questscroll5.reward_exp(reward_type)
questscroll5.reward_item(reward_type)
end
else
questscroll5.reward_exp(reward_type)
questscroll5.reward_money(reward_type)
questscroll5.reward_item(reward_type)
end
end
-- pimped according mantis #118754 to prevent mantis #0042898
function get_mission()
-- add addtional check routine for player that have a invalid mission index
local mission_index = pc.getqf("mission_index")
if mission_index > 56 then
mission_index = number(50, 56)
questscroll5.set_mission(mission_index)
end
return locale.questscroll5.mission[mission_index]
end
function get_title()
return questscroll5.get_mission()[3]
end
function get_complete_title()
return string.format(gameforge.questscroll5._200_stringFormat, questscroll5.get_title())
end
function get_desc()
return "[WINDOW_SIZE width;360|height;280]"..questscroll5.get_mission()[4]
end
function get_summ()
return questscroll5.get_mission()[5]
end
function get_mob1_name()
return mob_name(questscroll5.get_mob1_vnum())
end
function get_mob1_max_kill_count()
return questscroll5.get_mission()[7]
end
function get_mob1_vnum()
return tonumber(questscroll5.get_mission()[6])
end
function get_mob1_rest_kill_count()
local ret=questscroll5.get_mob1_max_kill_count()-questscroll5.get_mob1_cur_kill_count()
if ret<0 then return 0 end
return ret
end
function set_mob1_cur_kill_count(value)
pc.setqf("mob1_kill_count", value)
end
function get_mob1_cur_kill_count()
return pc.getqf("mob1_kill_count")
end
function get_mob2_name()
return mob_name(questscroll5.get_mob2_vnum())
end
function get_mob2_max_kill_count()
return questscroll5.get_mission()[9]
end
function get_mob2_vnum()
return tonumber(questscroll5.get_mission()[8])
end
function get_mob2_rest_kill_count()
local ret=questscroll5.get_mob2_max_kill_count()-questscroll5.get_mob2_cur_kill_count()
if ret<0 then return 0 end
return ret
end
function set_mob2_cur_kill_count(value)
pc.setqf("mob2_kill_count", value)
end
function get_mob2_cur_kill_count()
return pc.getqf("mob2_kill_count")
end
function reward_table_get_prob_sum(item_array)
local sum=0
for i=1, table.getn(item_array) do
sum=sum+item_array[i][2]
end
return sum
end
function reward_table_get_value(item_array)
local prob_sum=questscroll5.reward_table_get_prob_sum(item_array)
local prob_pos=number(0, prob_sum)
test_chat(string.format(gameforge.questscroll5._210_chat, prob_pos))
for i=1, table.getn(item_array) do
prob_cur=item_array[i][2]
if prob_pos<=prob_cur then
return item_array[i][1]
end
prob_pos=prob_pos-prob_cur
end
chat(gameforge.questscroll5._220_chat)
return 0
end
function get_reward_type()
return questscroll5.get_mission()[2]
end
function get_reward_money(reward_type)
return questscroll5.reward_table_get_value(locale.questscroll5.reward_money[reward_type])
end
function get_reward_exp(reward_type)
return questscroll5.reward_table_get_value(locale.questscroll5.reward_exp[reward_type])
end
function get_reward_item(reward_type)
return questscroll5.reward_table_get_value(locale.questscroll5.reward_item[reward_type])
end
function reward_money(reward_type)
local reward_money=questscroll5.get_reward_money(reward_type)
if reward_money>1000 and reward_money<=200000 then
pc.change_money(reward_money)
say_reward(string.format(gameforge.questscroll5._230_sayReward, reward_money))
else
chat(string.format(gameforge.questscroll5._240_chat, reward_type))
end
end
function reward_exp(reward_type)
local reward_exp=questscroll5.get_reward_exp(reward_type)
if reward_exp>1000 and reward_exp<=300000 then
pc.give_exp2(reward_exp)
set_quest_state("levelup", "run")
say_reward(string.format(gameforge.questscroll5._250_sayReward, reward_exp))
else
chat(string.format(gameforge.questscroll5._260_chat, reward_type))
end
end
function reward_item(reward_type)
local reward_item=questscroll5.get_reward_item(reward_type)
pc.give_item2(reward_item)
say_reward(string.format(gameforge.questscroll5._270_sayReward, item_name(reward_item)))
end
end
end