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

697 lines
28 KiB
Plaintext

-- Chuseok Events
quest harvest_festival begin
state start begin
function reset_flags()
if game.get_event_flag("harvest_festival") == 0 then
q.setstate("information")
pc.setqf("harvest_festival_count", 0)
pc.setqf("harvest_festival_mob_complete", 0)
pc.setqf("cake_count", 0)
pc.setqf("rice_count", 0)
pc.setqf("mob_kill1_count",0)
pc.setqf("mob_kill2_count",0)
pc.setqf("mob2_info", 0)
pc.setqf("mob1_info", 0)
end
end
function kill_action(mob_vnum, kill_state)
local kill_count
if kill_state == 1 then
kill_count = pc.getqf("mob_kill1_count") + 1
pc.setqf("mob_kill1_count", kill_count)
kill_finish = 30
else
kill_count = pc.getqf("mob_kill2_count") + 1
pc.setqf("mob_kill2_count", kill_count)
kill_finish = 60
end
if kill_count < 0 then
return
end -- end of if
if kill_count >= kill_finish then
q.set_counter(gameforge.locale.levelup.remain_count, 0)
else
q.set_counter(gameforge.locale.levelup.remain_count, kill_finish - kill_count)
end
if kill_count == kill_finish then
local random_rice = harvest_festival.get_random_rice(2)
notice_multiline(string.format(gameforge.harvest_festival._560_notice, random_rice), notice)
-- Getting the rice cake
local cake_count = pc.getqf("cake_count") + random_rice
pc.setqf("cake_count", cake_count)
pc.setqf("harvest_festival_mob_complete", 1)
clear_letter()
if kill_state == 2 then
q.setstate("information")
end
end -- end of if
end
function get_random_rice(type)
if (type == 1) then
if (pc.get_level() >= 90) then
random_rice = number(4, 7)
elseif (pc.get_level() >= 70) then
random_rice = number(3, 6)
elseif (pc.get_level() >= 50) then
random_rice = number(2, 4)
elseif (pc.get_level() >= 30) then
random_rice = number(1, 3)
elseif (pc.get_level() >= 10) then
random_rice = number(1, 2)
else
random_rice = number(1, 2)
end -- end of if
elseif (type == 2) then
if (pc.get_level() >= 90) then
random_rice = number(7, 10)
elseif (pc.get_level() >= 70) then
random_rice = number(6, 8)
elseif (pc.get_level() >= 50) then
random_rice = number(4, 6)
elseif (pc.get_level() >= 30) then
random_rice = number(2, 5)
elseif (pc.get_level() >= 10) then
random_rice = number(2, 4)
else
random_rice = number(2, 3)
end -- end of if
end
return random_rice
end
when login with pc.get_level() > 0 begin
set_state(information)
pc.setqf("harvest_festival_count", 0)
pc.setqf("harvest_festival_mob_complete", 0)
pc.setqf("cake_count", 0)
pc.setqf("rice_count", 0)
end -- end of when
end -- end of state
-- Event Start
state information begin
when letter with game.get_event_flag("harvest_festival")>0 begin
local v= find_npc_by_vnum(20086)
if 0==v then
else
target.vid("__TARGET__", v, gameforge.harvest_festival._010_targetVid)
end
end
when login with game.get_event_flag("harvest_festival") == 0 begin
harvest_festival.reset_flags()
end
-- Glutinous rice in exchange for a gift
when 20087.chat.gameforge.harvest_festival._025_npcChat with game.get_event_flag("harvest_festival")>0 begin
local rice_count = pc.getqf("rice_count")
say_title(gameforge.harvest_festival._020_sayTitle)
say(string.format(gameforge.harvest_festival._030_say, rice_count))
local reward_set = select(gameforge.harvest_festival._040_select, gameforge.harvest_festival._050_select)
if reward_set == 2 then
say_title(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._060_say)
return
end -- end of if
say_title(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._070_say)
-- local harvest_item_set = select("15x Glut", "15x Gl","35x Perle","35x Gluttrank","35x Gltes","Maybe later")
local harvest_item_set = select(gameforge.harvest_festival._090_select,
gameforge.harvest_festival._100_select,
gameforge.harvest_festival._110_select,
gameforge.harvest_festival._120_select,
gameforge.harvest_festival._125_select,
gameforge.harvest_festival._170_select)
if harvest_item_set == 6 then
return
end -- end of ifa
local harvest_item_set_2 = 0
if harvest_item_set == 5 then
harvest_item_set_2 = select(gameforge.harvest_festival._130_select,
gameforge.harvest_festival._135_select,
gameforge.harvest_festival._140_select,
gameforge.harvest_festival._150_select,
gameforge.harvest_festival._160_select,
gameforge.harvest_festival._170_select)
end
if harvest_item_set_2 == 6 then
return
end
local harvest_item_name = ""
local harvest_rice_count = 0
if harvest_item_set == 1 then
harvest_item_name = gameforge.harvest_festival._090_select
harvest_rice_count = 55
elseif harvest_item_set == 2 then
harvest_item_name = gameforge.harvest_festival._100_select
harvest_rice_count = 50
elseif harvest_item_set == 3 then
harvest_item_name = gameforge.harvest_festival._110_select
harvest_rice_count = 45
elseif harvest_item_set == 4 then
harvest_item_name = gameforge.harvest_festival._120_select
harvest_rice_count = 30
elseif harvest_item_set_2 == 1 then
harvest_item_name = gameforge.harvest_festival._130_select
harvest_rice_count = 65
elseif harvest_item_set_2 == 2 then
harvest_item_name = gameforge.harvest_festival._135_select
harvest_rice_count = 75
elseif harvest_item_set_2 == 3 then
harvest_item_name = gameforge.harvest_festival._140_select
harvest_rice_count = 60
elseif harvest_item_set_2 == 4 then
harvest_item_name = gameforge.harvest_festival._150_select
harvest_rice_count = 75
elseif harvest_item_set_2 == 5 then
harvest_item_name = gameforge.harvest_festival._160_select
harvest_rice_count = 80
end -- end of if
-- Check glutinous rice amount
if rice_count < harvest_rice_count then
say_title(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._180_say)
return
end -- end of if
say_title(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._190_say)
say("")
say(string.format(gameforge.harvest_festival._200_say,harvest_rice_count, harvest_item_name))
say(gameforge.harvest_festival._210_say)
local item_get_set = select(gameforge.harvest_festival._220_select, gameforge.harvest_festival._170_select)
if item_get_set == 2 then
return
end -- end of if
-- System to hand out the items
if harvest_item_set == 1 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50109", 1)
elseif harvest_item_set == 2 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50110", 1)
elseif harvest_item_set == 3 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("72728", 1)
elseif harvest_item_set == 4 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50111", 1)
elseif harvest_item_set_2 == 1 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50112", 1)
elseif harvest_item_set_2 == 2 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50113", 1)
elseif harvest_item_set_2 == 3 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("72724", 1)
elseif harvest_item_set_2 == 4 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50114", 1)
elseif harvest_item_set_2 == 5 then
pc.setqf("rice_count", rice_count - harvest_rice_count)
pc.give_item2("50115", 1)
end -- end of if
say_reward(string.format(gameforge.harvest_festival._230_say,harvest_item_name))
say(gameforge.harvest_festival._240_say)
end -- end of when
when 20086.chat."Harvest Event Commands" with pc.get_gm_level() == 5 begin
if game.get_event_flag("harvest_festival") == 0 then
say("Current Status: ThanksGiving Event Results")
say("")
local s = select("Start Event", "Cancel")
if 1==s then
game.set_event_flag("harvest_festival", 1)
return
end
else
say("Current Status: The event is currently active")
say("")
local s = select("Stop the Event", "Cancel")
if 1==s then
game.set_event_flag("harvest_festival", 0)
return
end
end
end
when 20086.chat.gameforge.harvest_festival._250_npcChat with game.get_event_flag("harvest_festival")>0 begin
target.delete("__TARGET__")
local quest_count = pc.getqf("harvest_festival_count")
local quest_complete = pc.getqf("harvest_festival_mob_complete")
-- When you finished all the quests
if quest_count >= 10 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._270_say)
return
end -- end of if
-- If you came back for this dish
if quest_complete == 1 then
pc.setqf("harvest_festival_count", quest_count + 1)
pc.setqf("harvest_festival_mob_complete", 0)
pc.setqf("mob_kill1_count", 0)
pc.setqf("mob_kill2_count", 0)
local quest_count = pc.getqf("harvest_festival_count")
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._280_say)
wait()
-- Getting the Glutinous Rice
local rice_count = pc.getqf("rice_count")
local cake_count = pc.getqf("cake_count")
pc.setqf("rice_count", rice_count + cake_count)
pc.setqf("cake_count", 0)
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._290_say, cake_count))
wait()
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._300_say)
wait()
if quest_count >= 10 then
char_log(0, "EVENT_RECORD", "harvest_festival clear")
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._310_say)
return
else
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._320_say)
end -- end of if
local replay_set = select(gameforge.harvest_festival._330_select, gameforge.harvest_festival._340_select)
if replay_set == 2 then
return
end -- end of if
local current_count = quest_count + 1
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._350_say)
say(string.format(gameforge.harvest_festival._360_say, current_count))
set_state(mob_kill1)
return
end -- end of if
-- If you stop and do the quest again
if quest_count > 0 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._360_say, quest_count))
local replay_set = select(gameforge.harvest_festival._380_select,gameforge.harvest_festival._390_select)
if replay_set == 2 then
return
end -- end of if
local current_count = quest_count + 1
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._400_say, current_count))
set_state(mob_kill1)
return
end -- end of if
-- here we must put the different mobnames
if pc.get_level() >= 81 then
pc.setqf("mob1_info", 6)
mob1_name = gameforge.harvest_festival._410_say
elseif pc.get_level() >= 61 then
pc.setqf("mob1_info", 5)
mob1_name = gameforge.harvest_festival._420_say
elseif pc.get_level() >= 41 then
pc.setqf("mob1_info", 4)
mob1_name = gameforge.harvest_festival._430_say
elseif pc.get_level() >= 21 then
pc.setqf("mob1_info", 3)
mob1_name = gameforge.harvest_festival._440_say
elseif pc.get_level() >= 11 then
pc.setqf("mob1_info", 2)
mob1_name = gameforge.harvest_festival._450_say
elseif pc.get_level() <= 10 then
pc.setqf("mob1_info", 1)
mob1_name = gameforge.harvest_festival._460_say
end -- end of if
-- When you start for the 1st time
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._470_say)
say(string.format(gameforge.harvest_festival._480_say, mob1_name))
local main_set = select(gameforge.harvest_festival._490_select,gameforge.harvest_festival._500_select)
if main_set == 2 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._510_say)
return
end -- end of if
local current_count = quest_count + 1
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._400_say, current_count))
set_state(mob_kill1)
end -- end of when
end -- end of state
state mob_kill1 begin
when letter begin
send_letter(gameforge.harvest_festival._520_sendLetter)
q.set_counter(gameforge.locale.levelup.remain_count, 30 - pc.getqf("mob_kill1_count"))
end -- end of when
when login with game.get_event_flag("harvest_festival") == 0 begin
harvest_festival.reset_flags()
end
when info or button begin
local mob1_info = pc.getqf("mob1_info")
if mob1_info == 6 then
mob1_name = gameforge.harvest_festival._410_say
elseif mob1_info == 5 then
mob1_name = gameforge.harvest_festival._420_say
elseif mob1_info == 4 then
mob1_name = gameforge.harvest_festival._430_say
elseif mob1_info == 3 then
mob1_name = gameforge.harvest_festival._440_say
elseif mob1_info == 2 then
mob1_name = gameforge.harvest_festival._450_say
elseif mob1_info == 1 then
mob1_name = gameforge.harvest_festival._460_say
end -- end of ifa
say_title(gameforge.harvest_festival._520_sendLetter)
say(string.format(gameforge.harvest_festival._530_say, mob1_name))
local gogo_set = select(gameforge.harvest_festival._330_select,gameforge.harvest_festival._540_select)
if gogo_set == 2 then
clear_letter()
set_state(information)
end -- end of if
end -- end of when
when 20086.chat.gameforge.harvest_festival._570_npcChat with game.get_event_flag("harvest_festival")>0 begin
local kill_count = pc.getqf("mob_kill1_count")
if kill_count < 30 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._580_say)
else
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._590_say)
local mob2_name = ""
if pc.get_level() >= 91 then
pc.setqf("mob2_info", 8)
mob2_name = gameforge.harvest_festival._610_say
elseif pc.get_level() >= 81 then
pc.setqf("mob2_info", 7)
mob2_name = gameforge.harvest_festival._600_say
elseif pc.get_level() >= 71 then
pc.setqf("mob2_info", 6)
mob2_name = gameforge.harvest_festival._620_say
elseif pc.get_level() >= 61 then
pc.setqf("mob2_info", 5)
mob2_name = gameforge.harvest_festival._630_say
elseif pc.get_level() >= 51 then
pc.setqf("mob2_info", 4)
mob2_name = gameforge.harvest_festival._640_say
elseif pc.get_level() >= 41 then
pc.setqf("mob2_info", 3)
mob2_name = gameforge.harvest_festival._650_say
elseif pc.get_level() >= 31 then
pc.setqf("mob2_info", 2)
mob2_name = gameforge.harvest_festival._660_say
elseif pc.get_level() >= 20 then
pc.setqf("mob2_info", 1)
mob2_name = gameforge.harvest_festival._670_say
elseif pc.get_level() >= 10 then
pc.setqf("mob2_info", 9)
mob2_name = gameforge.harvest_festival._810_say
else
pc.setqf("mob2_info", 10)
mob2_name = gameforge.harvest_festival._820_say
end -- end of if
say(string.format(gameforge.harvest_festival._680_say, mob2_name))
local sub_set = select(gameforge.harvest_festival._690_select,gameforge.harvest_festival._700_select)
if sub_set == 2 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._710_say)
set_state(information)
return
end
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._715_say, mob2_name))
set_state(mob_kill2)
end
end -- end of when
when 20087.click with game.get_event_flag("harvest_festival")>0 begin
say_title(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._550_select)
end -- end of when
when 2502.kill with pc.getf("harvest_festival","mob1_info") == 6 begin
harvest_festival.kill_action(2502,1)
end
when 2202.kill with pc.getf("harvest_festival","mob1_info") == 5 begin
harvest_festival.kill_action(2202,1)
end
when 701.kill with pc.getf("harvest_festival","mob1_info") == 4 begin
harvest_festival.kill_action(701,1)
end
when 501.kill with pc.getf("harvest_festival","mob1_info") == 3 begin
harvest_festival.kill_action(501,1)
end
when 301.kill with pc.getf("harvest_festival","mob1_info") == 2 begin
harvest_festival.kill_action(301,1)
end -- end of when
when 105.kill with pc.getf("harvest_festival","mob1_info") == 1 begin
harvest_festival.kill_action(105,1)
end -- end of when
end -- end of state
state mob_kill2 begin
when letter begin
send_letter(gameforge.harvest_festival._520_sendLetter)
q.set_counter(gameforge.locale.levelup.remain_count, 60 - pc.getqf("mob_kill2_count"))
end -- end of when
when login with game.get_event_flag("harvest_festival") == 0 begin
harvest_festival.reset_flags()
end
when info or button begin
local mob2_info = pc.getqf("mob2_info")
if mob2_info == 10 then
mob2_name = gameforge.harvest_festival._820_say
elseif mob2_info == 9 then
mob2_name = gameforge.harvest_festival._810_say
elseif mob2_info == 8 then
mob2_name = gameforge.harvest_festival._610_say
elseif mob2_info == 7 then
mob2_name = gameforge.harvest_festival._600_say
elseif mob2_info == 6 then
mob2_name = gameforge.harvest_festival._620_say
elseif mob2_info == 5 then
mob2_name = gameforge.harvest_festival._630_say
elseif mob2_info == 4 then
mob2_name = gameforge.harvest_festival._640_say
elseif mob2_info == 3 then
mob2_name = gameforge.harvest_festival._650_say
elseif mob2_info == 2 then
mob2_name = gameforge.harvest_festival._660_say
elseif mob2_info == 1 then
mob2_name = gameforge.harvest_festival._670_say
end -- end of if
say_title(gameforge.harvest_festival._520_sendLetter)
say(string.format(gameforge.harvest_festival._720_say,mob2_name))
if party.is_party() then
say(gameforge.harvest_festival._730_say)
else
say(gameforge.harvest_festival._740_say)
end -- end of if
local gogo_set = select(gameforge.harvest_festival._380_select,gameforge.harvest_festival._540_select)
if gogo_set == 2 then
clear_letter()
set_state(information)
end -- end of if
end -- end of when
when 20086.chat.gameforge.harvest_festival._750_npcChat with game.get_event_flag("harvest_festival")>0 begin
local quest_count = pc.getqf("harvest_festival_count")
local quest_complete = pc.getqf("harvest_festival_mob_complete")
-- When you have finished all the quests
if quest_count >= 10 then
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._760_say)
set_state(information)
return
end -- end of if
-- If you come back for the dish
if quest_complete == 1 then
pc.setqf("harvest_festival_count", quest_count + 1)
pc.setqf("harvest_festival_mob_complete", 0)
pc.setqf("mob_kill1_count", 0)
pc.setqf("mob_kill2_count", 0)
local quest_count = pc.getqf("harvest_festival_count")
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._770_say)
wait()
-- Getting Glutinous Rice
local rice_count = pc.getqf("rice_count")
local cake_count = pc.getqf("cake_count")
pc.setqf("rice_count", rice_count + cake_count)
pc.setqf("cake_count", 0)
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._780_say,rice_count))
wait()
if quest_count >= 10 then
char_log(0, "EVENT_RECORD", "harvest_festival clear")
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._790_say)
set_state(information)
return
else
say_title(gameforge.harvest_festival._260_sayTitle)
say(gameforge.harvest_festival._795_say)
end -- end of if
local replay_set = select(gameforge.harvest_festival._380_select,gameforge.harvest_festival._390_select)
if replay_set == 2 then
set_state(information)
return
end -- end of if
local current_count = quest_count + 1
say_title(gameforge.harvest_festival._260_sayTitle)
say(string.format(gameforge.harvest_festival._400_say,current_count))
set_state(mob_kill1)
return
end -- end of if
end -- end of when
when 20087.click with game.get_event_flag("harvest_festival")>0 begin
say(gameforge.harvest_festival._020_sayTitle)
say(gameforge.harvest_festival._800_say)
end -- end of when
when 108.kill with pc.getf("harvest_festival","mob2_info") == 10 and party.is_party() begin
harvest_festival.kill_action(108,2)
end -- end of when
when 109.kill with pc.getf("harvest_festival","mob2_info") == 9 and party.is_party() begin
harvest_festival.kill_action(109,2)
end -- end of when
when 113.kill with pc.getf("harvest_festival","mob2_info") == 1 and party.is_party() begin
harvest_festival.kill_action(113,2)
end -- end of when
when 502.kill with pc.getf("harvest_festival","mob2_info") == 2 and party.is_party() begin
harvest_festival.kill_action(502,2)
end -- end of when
when 703.kill with pc.getf("harvest_festival","mob2_info") == 3 and party.is_party() begin
harvest_festival.kill_action(703,2)
end -- end of when
when 707.kill with pc.getf("harvest_festival","mob2_info") == 4 and party.is_party() begin
harvest_festival.kill_action(707,2)
end -- end of when
when 1305.kill with pc.getf("harvest_festival","mob2_info") == 5 and party.is_party() begin
harvest_festival.kill_action(1305,2)
end -- end of when
when 2205.kill with pc.getf("harvest_festival","mob2_info") == 6 and party.is_party() begin
harvest_festival.kill_action(2205,2)
end -- end of when
when 2501.kill with pc.getf("harvest_festival","mob2_info") == 7 and party.is_party() begin
harvest_festival.kill_action(2501,2)
end -- end of when
when 2503.kill with pc.getf("harvest_festival","mob2_info") == 8 and party.is_party() begin
notice("Zombie tot")
harvest_festival.kill_action(2503,2)
end -- end of when
end -- end of state
end -- end of quest