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

464 lines
19 KiB
Plaintext
Raw Normal View History

quest new_quest_lv29 begin
state start begin
when login or levelup with pc.get_level() >= 29 begin
pc.setqf("hayIndex", 6)
pc.setqf("hayFromHarang", 1)
pc.setqf("hayFromTaurean", 1)
pc.setqf("hayFromStablemaster", 1)
pc.setqf("yonahspatience", 2)
pc.setqf("yonahHasHay", 0)
pc.setqf("dropProb", 80)
set_state(gotoyonah)
end
end
-- Yonah is the entery point for this quest. He is highlited with a questarrow
state gotoyonah begin
when enter or login begin
local goto_npc = 20005 -- Yonah
local v=find_npc_by_vnum(goto_npc)
if 0!=v then
target.vid("__TARGET__", v, gameforge.new_quest_lv29._010_target) -- place questarrow
end
end
when 20005.chat.gameforge.new_quest_lv29._015_npcChat begin --EDIT Arne, 22Sept09, Reason: adapting all quest steps to choices
target.delete("__TARGET__") -- delete questarrow
say_title(gameforge.new_quest_lv29._020_say_title) -- displays headline of the conversation with Yonah
say(gameforge.new_quest_lv29._021_say)
say(gameforge.new_quest_lv29._022_say)
local goto_npc = 20005 -- Yonah
local accept = select(gameforge.new_quest_lv29._023_1_select,gameforge.new_quest_lv29._023_2_select)
if accept == 1 then
local v=find_npc_by_vnum(20014) -- find Taurean
if 0!=v then
target.vid("__TARGET2__", v, gameforge.new_quest_lv29._030_target) -- place questarrow
end
set_state(find_taurean)
else
say(gameforge.new_quest_lv29._024_say)
say(gameforge.subquest_06._60_say)
local abortquest = select(gameforge.subquest_06._70_select, gameforge.subquest_06._80_select)
if abortquest == 1 then
pc.setqf("hayIndex", 0)
pc.setqf("hayFromHarang", 0)
pc.setqf("hayFromTaurean", 0)
pc.setqf("hayFromStablemaster",0)
pc.setqf("yonahspatience", 0)
pc.setqf("yonahHasHay", 0)
pc.setqf("dropProb", 0)
set_state(__GIVEUP__)
else
local v=find_npc_by_vnum(goto_npc)
if 0!=v then
target.vid("__TARGET__", v, gameforge.new_quest_lv29._010_target) -- place questarrow
end
return
end
end
end
end
-- this state handles the conversation with Taurean after we talked to Yonah
state find_taurean begin
when enter or login begin
send_letter(gameforge.new_quest_lv29._015_npcChat)
q.start()
q.set_title(gameforge.new_quest_lv29._015_npcChat)
if is_destination_village(2) then --
local v=find_npc_by_vnum(20014) -- Taurean
if 0!=v then
target.vid("__TARGET2__", v, gameforge.new_quest_lv29._030_target) -- place questarrow on Taurean
end
end
end
when button or info begin -- this handles what is displayed in the quest-journal conversation window
say_title(gameforge.new_quest_lv29._015_npcChat)
say(gameforge.new_quest_lv29._031_say)
say("")
say(string.format(gameforge.new_quest_lv29._032_say, get_map_name_by_number(3)))
end
when 20014.chat.gameforge.new_quest_lv29._015_npcChat begin --EDIT Arne, 22Sept09, Reason: adapting all quest steps to choices -- When Taurean is clicked
target.delete("__TARGET2__") -- delete questarrow
say_title(gameforge.new_quest_lv29._033_say_title)
say(gameforge.new_quest_lv29._034_say_reward)
wait()
say_pc_name()
say_reward(gameforge.new_quest_lv29._035_say_reward)
wait()
say_title(gameforge.new_quest_lv29._033_say_title)
say(gameforge.new_quest_lv29._036_say_reward)
wait()
say_pc_name()
say_reward(gameforge.new_quest_lv29._037_say_reward)
wait()
say_title(gameforge.new_quest_lv29._033_say_title)
say(gameforge.new_quest_lv29._038_say_reward)
q.done()
set_state(witness_harang)
end
end
-- here we talk to Harang which Taurean asked us to interview to prove her innocence
state witness_harang begin
when enter or login begin
send_letter(gameforge.new_quest_lv29._015_npcChat) --EDIT Arne, 22Sept09, Reason: quest starts now even without mapchange
q.start()
q.set_title(gameforge.new_quest_lv29._015_npcChat)
if is_destination_village(2) then
local v=find_npc_by_vnum(20024) -- Harang
if 0!=v then
target.vid("__TARGET3__", v, gameforge.new_quest_lv29._040_target) -- place questarrow on Harang
end
end
end
when button or info begin -- when clicked on the quest-journal this text will be displayed
say_title(gameforge.new_quest_lv29._015_npcChat)
say(gameforge.new_quest_lv29._041_say)
say("")
say(string.format(gameforge.new_quest_lv29._047_say, get_map_name_by_number(3))) --EDIT Arne, 22Sept09, Reason: mapname in desc
end
when 20024.chat.gameforge.new_quest_lv29._015_npcChat begin --EDIT Arne, 22Sept09, Reason: adapting all quest steps to choices
target.delete("__TARGET3__") -- delete questarrow
say_pc_name()
say_reward(gameforge.new_quest_lv29._042_say_reward)
wait()
say_title(gameforge.new_quest_lv29._043_say_title)
say(gameforge.new_quest_lv29._044_say_reward)
wait()
say_pc_name()
say_reward(gameforge.new_quest_lv29._045_say_reward)
wait()
say_title(gameforge.new_quest_lv29._043_say_title)
say(gameforge.new_quest_lv29._046_say_reward)
q.done()
set_state(fragile_china)
end
end
-- conversation with stablemaster
state fragile_china begin
when enter or login begin
send_letter(gameforge.new_quest_lv29._015_npcChat)
q.start()
q.set_title(gameforge.new_quest_lv29._015_npcChat) -- updating the quest-journal title
if is_destination_village(3) then
local v=find_npc_by_vnum(20349) -- find the Stablemaster
if 0!=v then
target.vid("__TARGET4__", v, gameforge.new_quest_lv29._050_target) -- place questarrow on Stablemaster
end
end
end
when button or info begin -- this text will be displayed in the conversation window if the quest-journal is opened
say_title(gameforge.new_quest_lv29._015_npcChat)
say(gameforge.new_quest_lv29._051_say)
say("")
say(string.format(gameforge.new_quest_lv29._054_say, get_map_name_by_number(1), get_map_name_by_number(3))) --EDIT Arne, 22Sept09, Reason: mapname in desc
end
when 20349.chat.gameforge.new_quest_lv29._015_npcChat begin --EDIT Arne, 22Sept09, Reason: adapting all quest steps to choices
target.delete("__TARGET4__") -- delete questarrow
-- the stablemaster whats us to collect some hey for Yonah
say_title(gameforge.new_quest_lv29._082_say_title)
say(gameforge.new_quest_lv29._052_say)
wait()
say_title(gameforge.new_quest_lv29._082_say_title)
say(gameforge.new_quest_lv29._053_say)
local hayCount = pc.count_item(50054) -- even the hay the player already has counts for this quest
if hayCount < 6 then -- usually the player will not have enough hay so he goes hunting
new_quest_lv29_neededAmountDrop = 6
q.done()
set_state(cutting_hay)
else -- shortcut if the player has the required amount of hay
say(gameforge.new_quest_lv29._065_1_say)
q.done()
set_state(calming_yonah)
end
end
end
-- In this state the player gathers the hay for Yonah. The player may
-- ask the three people for help he talked to previously or slay mobs
-- with straw hats. He may even obtain the hay from other sources.
-- Only the last piece needs to be gathered by slaying a mob.
state cutting_hay begin
when login or enter begin
send_letter(gameforge.new_quest_lv29._015_npcChat)
q.start()
q.set_title(gameforge.new_quest_lv29._015_npcChat)
new_quest_lv29_mob1 = 501
new_quest_lv29_mob2 = 551
new_quest_lv29_drop = 50054 -- hay
new_quest_lv29_dropProb = pc.getqf("dropProb") -- recomment using a value of 100 which is 10% drop probability
-- ticket id: 0076498
if new_quest_lv29_dropProb == 0 then
pc.setqf("dropProb", 80)
end
new_quest_lv29_neededAmountDrop = 6
if pc.getqf("yonahspatience") < 2 then
pc.setqf("dropProb", new_quest_lv29_dropProb /10)
end
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
end
when button or info begin -- this is the text displayed in the conversation window when the quest-journal is opened
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
say_title(gameforge.new_quest_lv29._015_npcChat)
say(string.format(gameforge.new_quest_lv29._091_say, get_map_name_by_number(1)))
q.done()
set_state(calming_yonah)
else
local sayMob1Name = mob_name(501)
local sayMob2Name = mob_name(551)
say_title(gameforge.new_quest_lv29._015_npcChat)
say(gameforge.new_quest_lv29._061_say)
say_reward(gameforge.new_quest_lv29._066_say)
say(gameforge.new_quest_lv29._066_1_say)
if pc.count_item(new_quest_lv29_drop) <= new_quest_lv29_neededAmountDrop then
say("")
say_reward(string.format(gameforge.new_quest_lv29._067_say_reward, pc.count_item(new_quest_lv29_drop), new_quest_lv29_neededAmountDrop))
end
end
end
when 501.kill begin -- Mob1 with straw hat
if pc.count_item(new_quest_lv29_drop) < new_quest_lv29_neededAmountDrop and pc.getqf("hayIndex") > 0 then
if math.random(1,1000) <= pc.getqf("dropProb") then -- probability if s.th. drops
pc.give_item2(new_quest_lv29_drop)
local qfindex = pc.getqf("hayIndex") -1
pc.setqf("hayIndex", qfindex)
notice_multiline(gameforge.new_quest_lv29._068_notice, notice)
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
else
notice_multiline(gameforge.new_quest_lv29._064_notice, notice)
end
end
end
when 551.kill begin -- Mob2 with straw hat
if pc.count_item(new_quest_lv29_drop) < new_quest_lv29_neededAmountDrop and pc.getqf("hayIndex") > 0 then
if math.random(1,1000) <= pc.getqf("dropProb") then -- probability if s.th. drops
pc.give_item2(new_quest_lv29_drop)
local qfindex = pc.getqf("hayIndex") -1
pc.setqf("hayIndex", qfindex)
notice_multiline(gameforge.new_quest_lv29._068_notice, notice )
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
else
notice_multiline(gameforge.new_quest_lv29._064_notice, notice)
end
end
end
-- The player may get hay from the npcs if he goes to them and asks.
-- When the player read the quest-texts he will gain the hay much easier then by slaying mobs.
-- However the last piece of hay must be hunted
when 20014.chat.gameforge.new_quest_lv29._015_npcChat begin -- Ask Taurean for help
if pc.count_item(new_quest_lv29_drop) < new_quest_lv29_neededAmountDrop and pc.getqf("hayFromTaurean") == 1 and pc.getqf("hayIndex") > 0 then
say_pc_name()
say_reward(gameforge.new_quest_lv29._071_say_reward)
wait()
say_title(gameforge.new_quest_lv29._033_say_title)
say(gameforge.new_quest_lv29._072_say_reward)
pc.setqf("hayFromTaurean", 0) -- Taurean will only give one piece of hay
pc.give_item2(new_quest_lv29_drop)
local qfindex = pc.getqf("hayIndex") -1
pc.setqf("hayIndex", qfindex)
notice_multiline(string.format(gameforge.new_quest_lv29._073_notice, new_quest_lv29_neededAmountDrop-pc.count_item(new_quest_lv29_drop)), notice)
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
else -- Taurean will not always give hay
say_title(gameforge.new_quest_lv29._033_say_title)
say(gameforge.new_quest_lv29._074_say_reward)
end
end
when 20024.chat.gameforge.new_quest_lv29._015_npcChat begin -- Ask Harang for help
if pc.count_item(new_quest_lv29_drop) < new_quest_lv29_neededAmountDrop and pc.getqf("hayFromHarang") == 1 and pc.getqf("hayIndex") > 0 then
say_pc_name()
say_reward(gameforge.new_quest_lv29._075_say_reward)
wait()
say_title(gameforge.new_quest_lv29._043_say_title)
say(gameforge.new_quest_lv29._076_say_reward)
wait()
say_pc_name()
say_reward(gameforge.new_quest_lv29._077_say_reward)
wait()
say_title(gameforge.new_quest_lv29._043_say_title)
say(gameforge.new_quest_lv29._078_say_reward )
pc.setqf("hayFromHarang", 0) -- Harang will only give one piece of hay
pc.give_item2(new_quest_lv29_drop)
local qfindex = pc.getqf("hayIndex") -1
pc.setqf("hayIndex", qfindex)
notice_multiline(string.format(gameforge.new_quest_lv29._085_notice, new_quest_lv29_neededAmountDrop-pc.count_item(new_quest_lv29_drop)), notice)
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
else -- Harang will not always give hay
say_title(gameforge.new_quest_lv29._043_say_title)
say(gameforge.new_quest_lv29._079_say_reward)
end
end
when 20349.chat.gameforge.new_quest_lv29._015_npcChat begin -- Ask the Stablemaster for help
if pc.count_item(new_quest_lv29_drop) < new_quest_lv29_neededAmountDrop and pc.getqf("hayFromStablemaster") == 1 and pc.getqf("hayIndex") > 0 then
say_pc_name()
say_reward(gameforge.new_quest_lv29._081_say_reward)
wait()
say(gameforge.new_quest_lv29._082_say_title)
say(gameforge.new_quest_lv29._083_say_reward)
say(gameforge.new_quest_lv29._084_say_reward)
pc.setqf("hayFromStablemaster", 0) -- The Stablemaster will only give one piece of hay
pc.give_item2(new_quest_lv29_drop)
local qfindex = pc.getqf("hayIndex") -1
pc.setqf("hayIndex", qfindex)
notice_multiline(string.format(gameforge.new_quest_lv29._085_notice, new_quest_lv29_neededAmountDrop-pc.count_item(new_quest_lv29_drop)), notice)
if new_quest_lv29_neededAmountDrop <= pc.count_item(new_quest_lv29_drop) or pc.getqf("hayIndex") == 0 then
q.done()
set_state(calming_yonah)
end
else -- The Stablemaster will not always give hay
say(gameforge.new_quest_lv29._082_say_title)
say_reward(gameforge.new_quest_lv29._086_say_reward)
end
end
end
-- Player returns to Yonah with or without hay and tries to calm him.
state calming_yonah begin
-- we need to check if the player is in the right map
when enter or login begin
new_quest_lv29_mob1 = 501
new_quest_lv29_mob2 = 551
new_quest_lv29_drop = 50054 -- hay
new_quest_lv29_dropProb = pc.getqf("dropProb") -- recomment using a value of 100 which is 10% drop probability
-- ticket id: 0076498
if new_quest_lv29_dropProb == 0 then
pc.setqf("dropProb", 80)
end
new_quest_lv29_neededAmountDrop = 6
if pc.getqf("yonahspatience") < 2 then
pc.setqf("dropProb", new_quest_lv29_dropProb /10)
end
send_letter(gameforge.new_quest_lv29._015_npcChat)--EDIT Arne, 22Sept09, Reason: no letter
q.start() --EDIT Arne, 22Sept09, Reason: quest now starts even on same map
q.set_title(gameforge.new_quest_lv29._015_npcChat)
if is_destination_village(1) then --
local position=find_npc_by_vnum(20005) -- Yonah
if 0!=v then
target.vid("__TARGET5__", position, gameforge.new_quest_lv29._010_target) -- place questarrow on Yonah
end
end
end
when button or info begin -- this event is triggered when the quest-journal for this quest is opened
say_title(gameforge.new_quest_lv29._015_npcChat)
say(string.format(gameforge.new_quest_lv29._091_say, get_map_name_by_number(1)))
end
when 20005.chat.gameforge.new_quest_lv29._015_npcChat begin -- Starting to talk to Yonah about the broken china
target.delete("__TARGET5__") -- delete questarrow
local hayCount = pc.count_item(50054) + pc.getqf("yonahHasHay")
say_pc_name()
say_reward(gameforge.new_quest_lv29._101_say_reward)
wait()
say_title(gameforge.new_quest_lv29._102_say_title)
say(gameforge.new_quest_lv29._103_say_reward)
wait()
say_pc_name()
say_reward(gameforge.new_quest_lv29._104_say_reward)
if hayCount >= 6 and pc.getqf("yonahspatience") > 0 then -- when the player retuns with all the hay he or she was ask for
say_reward(gameforge.new_quest_lv29._105_say_reward)
wait()
say_title(gameforge.new_quest_lv29._102_say_title)
say(gameforge.new_quest_lv29._106_say_reward)
say(gameforge.new_quest_lv29._107_say_reward )
say(string.format(gameforge.new_quest_lv29._115_say_reward, 38000))
pc.remove_item(50054, 6)
pc.change_money(38000)
pc.give_exp2(600000)
if pc.getqf("hayFromTaurean") == 0 and pc.getqf("hayFromHarang") == 0 and pc.getqf("hayFromStablemaster") == 0 then
local bonusxp = 0
-- when the player found all npcs with hay and did less fighting he gets bonus XP
if pc.getqf("yonahspatience") > 1 then
bonusxp = 820*4*3*1000/pc.getqf("dropProb")
-- 820 is the xp value of #501 and #551 at level 29;
-- *4 because they are never alone;
-- *3 because player did not kill the mobs for 3 hay;
-- multiplied by the approximated drop chance.
-- At a drop propability of 10% this would be a bonus of 98,400xp!
else
-- if the dropProb got lowered because the player lost some hay their should not be an additional bonus
bonusxp = 820*4*3*1000/pc.getqf("dropProb")/4
end
pc.give_exp2(bonusxp)
notice_multiline(string.format(gameforge.new_quest_lv29._108_notice, bonusxp), notice)
end
q.done()
clear_letter()
pc.setqf("hayIndex", 0)
pc.setqf("hayFromHarang", 0)
pc.setqf("hayFromTaurean", 0)
pc.setqf("hayFromStablemaster",0)
pc.setqf("yonahspatience", 0)
pc.setqf("yonahHasHay", 0)
pc.setqf("dropProb", 0)
set_state(__COMPLETE__)
elseif hayCount > 1 and hayCount < 6 and pc.getqf("yonahspatience") > 1 then -- when the player has lost some hay on the way Yonah asks for more and triggers the state above
say_reward(gameforge.new_quest_lv29._109_say_reward)
wait()
local bringMeMore = 6 - hayCount
local lowerpatience = pc.getqf("yonahspatience") -1
pc.setqf("yonahspatience", lowerpatience)
local new_quest_lv29_dropProb = pc.getqf("dropProb")
pc.setqf("dropProb", new_quest_lv29_dropProb/4) -- it will be damn hard to get more hay
pc.remove_item(50054, hayCount)
pc.setqf("yonahHasHay", hayCount)
say_title(gameforge.new_quest_lv29._102_say_title)
say(string.format(gameforge.new_quest_lv29._110_say_reward, bringMeMore))
say(gameforge.new_quest_lv29._111_say_reward)
new_quest_lv29_neededAmountDrop = bringMeMore
local qfindex = pc.getqf("hayIndex") + bringMeMore
pc.setqf("hayIndex", qfindex)
q.done()
clear_letter()
set_state(cutting_hay)
else -- when the player has lost all the hay or brings only 1 bunch the quest is completed with only 25% XP and Yang.
wait()
say_title(gameforge.new_quest_lv29._102_say_title)
say_reward(gameforge.new_quest_lv29._112_say_reward )
say_reward(gameforge.new_quest_lv29._113_say_reward)
say_reward(gameforge.new_quest_lv29._114_say_reward)
say(string.format(gameforge.new_quest_lv29._115_say_reward, 9500))
pc.change_money(9500)
pc.give_exp2(150000)
q.done()
clear_letter()
pc.setqf("hayIndex", 0)
pc.setqf("hayFromHarang", 0)
pc.setqf("hayFromTaurean", 0)
pc.setqf("hayFromStablemaster",0)
pc.setqf("yonahspatience", 0)
pc.setqf("yonahHasHay", 0)
pc.setqf("dropProb", 0)
set_state(__COMPLETE__)
end
end
end
state __GIVEUP__ begin
end
state __COMPLETE__ begin
end
end