forked from metin2/server
1
0
Fork 0
server/gamefiles/data/quest/event_ramadan.quest

315 lines
14 KiB
Plaintext

quest event_ramadan begin
state start begin
function is_running()
return (game.get_event_flag("ramadan_drop") > 0) --npc spawn
end
function reward_period()
return (game.get_event_flag("ramadan_reward") > 0) --reward menu appear
end
function setting()
return {
["bread"] = 30315,
["candy"] = 50183,
["plate"] = 30316,
["iftar"] = 30317,
["fruit"] = 30318,
["box"] = 50182,
["horse1"] = 71131,
["horse2"] = 71132,
["horse3"] = 71133,
["horse4"] = 71134,
["historian"] = 33002,
["beggar1"] = 33003,
["beggar2"] = 33004,
["beggar3"] = 33005,
["beggar4"] = 33006,
["beggar5"] = 33007
}
end
when login or enter with event_ramadan.is_running() begin
local setting = event_ramadan.setting()
local mapIndex = pc.get_map_index()
if mapIndex == 1 or mapIndex == 21 or mapIndex == 41 then
if find_npc_by_vnum(setting.historian) == 0 then
if mapIndex == 1 then
mob.spawn(setting.historian, 608, 617, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.historian, 596, 610, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.historian, 357, 743, 1, 1, 1)
end
end
if find_npc_by_vnum(setting.beggar1) == 0 then
if mapIndex == 1 then
mob.spawn(setting.beggar1, 619, 701, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.beggar1, 564, 613, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.beggar1, 344, 723, 1, 1, 1)
end
end
if find_npc_by_vnum(setting.beggar2) == 0 then
if mapIndex == 1 then
mob.spawn(setting.beggar2, 697, 580, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.beggar2, 699, 658, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.beggar2, 443, 733, 1, 1, 1)
end
end
if find_npc_by_vnum(setting.beggar3) == 0 then
if mapIndex == 1 then
mob.spawn(setting.beggar3, 646, 515, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.beggar3, 613, 715, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.beggar3, 428, 651, 1, 1, 1)
end
end
if find_npc_by_vnum(setting.beggar4) == 0 then
if mapIndex == 1 then
mob.spawn(setting.beggar4, 554, 550, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.beggar4, 635, 539, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.beggar4, 303, 587, 1, 1, 1)
end
end
if find_npc_by_vnum(setting.beggar5) == 0 then
if mapIndex == 1 then
mob.spawn(setting.beggar5, 702, 629, 1, 1, 1)
elseif mapIndex == 21 then
mob.spawn(setting.beggar5, 529, 547, 1, 1, 1)
elseif mapIndex == 41 then
mob.spawn(setting.beggar5, 456, 673, 1, 1, 1)
end
end
end --if
end --when
--gameforge.event_ramadan._010_npcChat Historiker?
-- (Referenz 33002 Mob)
when 33002.chat.gameforge.event_ramadan._010_npcChat with pc.getf("event_ramadan","first_notice")==0 begin
local setting = event_ramadan.setting()
--gameforge.event_ramadan._020_sayTitle Historiker: (referenz auf mob: 33002)
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._030_say review the old and learn the new! why do you find me ?
say("")
say(gameforge.event_ramadan._030_say)
wait()
say_pc_name()
-- gameforge.event_ramadan._040_say Tut mir leid, kennen wir uns?
say(gameforge.event_ramadan._040_say)
wait()
say_title(gameforge.event_ramadan._020_sayTitle)
--gameforge.event_ramadan._050_say Entschuldige, ich vergaß mich vorzustellen. Ich bin der viel gereiste Historiker.
-- Wenn du Fragen zur Geschichte hast scheue dich nicht mich zu fragen.
say(gameforge.event_ramadan._050_say)
wait()
say_pc_name()
-- gameforge.event_ramadan._060_say Es ehrt mich dich kennen zu lernen. Ich sollte dich öfter aufsuchen
say(gameforge.event_ramadan._060_say)
pc.setqf("first_notice",1)
end
-- Brot: Brotkringel
-- Süßigkeit: Haloa, baklawa, irgendwas süßes (ihr wisst bescheid)
-- gameforge.event_ramadan._070_npcChat Was Süßes
when 33002.chat.gameforge.event_ramadan._070_npcChat with pc.getf("event_ramadan","first_notice")==1 begin
local setting = event_ramadan.setting()
if pc.count_item(setting.bread) == 0 then
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._80_say Kennst du dich mit Süßigkeiten aus? Es wird Baklava (bitte absprechen und referenz auf item: 50183) genannt.
say(gameforge.event_ramadan._80_say)
-- gameforge.event_ramadan._90_select_1 Ja, das kenne ich
-- gameforge.event_ramadan._90_select_2 Nein, tut mir leid
local s=select(gameforge.event_ramadan._90_select_1 ,gameforge.event_ramadan._90_select_2)
if 2==s then
--gameforge.event_ramadan._020_sayTitle Historiker:
say_title(gameforge.event_ramadan._020_sayTitle)
--gameforge.event_ramadan._100_say Schade, bis zum nächsten mal.
say(gameforge.event_ramadan._100_say)
return
end
say_title(gameforge.event_ramadan._020_sayTitle)
--gameforge.event_ramadan._110_say Dann weißt du ja was ich meine. Wenn ein solches erhalten willst bringe mir bitte ein Brot (bitte abspreche und referenz auf item: 30315).
say(gameforge.event_ramadan._110_say)
wait()
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._120_say Ich würde dir gerne ein Baklava (item: 50183) für 10 Brote (item: 30315) geben. Bist du damit einverstanden?
say(gameforge.event_ramadan._120_say)
-- gameforge.event_ramadan._130_select_1 Gerne
-- gameforge.event_ramadan._130_select_2 Hab keine Zeit
local s=select(gameforge.event_ramadan._130_select_1,gameforge.event_ramadan._130_select_2)
if 2==s then
say_title(gameforge.event_ramadan._020_sayTitle)
say(gameforge.event_ramadan._100_say)
return
end
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._140_say Ich würde dir gerne ein Baklava (item: 50183) für 10 Brote (item: 30315) geben. Bist du damit einverstanden?
say(gameforge.event_ramadan._140_say)
elseif pc.count_item(setting.bread) > 0 and pc.count_item(setting.bread) < 10 then
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._150_say Das sind zu wenig Brote, ich kann damit nicht viel anfangen.
say(gameforge.event_ramadan._150_say)
elseif pc.count_item(setting.bread) >= 10 then
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._160_say Das sind genug Brote, dafür kann ich dir gerne das Baklava geben.
say(gameforge.event_ramadan._160_say)
wait()
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._170_say Sammle mehr und ich kann dir mehr davon bereiten
say(gameforge.event_ramadan._170_say)
pc.give_item2(setting.candy,1)
pc.remove_item(setting.bread,10)
end --if
if not event_ramadan.is_running() then
npc.purge()
end
end --when
-- gameforge.event_ramadan._180_npcChat Leckeres Brot (item: 30315)
when 33002.chat.gameforge.event_ramadan._180_npcChat with pc.getqf("first_notice")== 1 begin
local setting = event_ramadan.setting()
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._180_say Ich bin gesättigt mit dem leckeren Brot das du mir brachtest
say(gameforge.event_ramadan._180_say)
-- gameforge.event_ramadan._190_say Hast du gewusst das es viele Bettler gibt die Hunger haben? Es wäre schön wenn du auch mit Ihnen das Fastenbrechen begehen würdest
say(gameforge.event_ramadan._190_say)
-- gameforge.event_ramadan._200_say Bringe es Ihnen am besten auf einem Teller (bitte absprechen und refernz auf item:30316)
say(gameforge.event_ramadan._200_say)
say_item_vnum(setting.plate)
wait()
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._210_say Danke für dein Brot es ist gut. So eine weise Person sollte auch Barmherzig sein. Man wird es dir vergelten.
say(gameforge.event_ramadan._210_say)
end
-- gameforge.event_ramadan._220_npcChat Hunger ...
when 33003.chat.gameforge.event_ramadan._220_npcChat or 33004.chat.gameforge.event_ramadan._220_npcChat or 33005.chat.gameforge.event_ramadan._220_npcChat or 33006.chat.gameforge.event_ramadan._220_npcChat or 33007.chat.gameforge.event_ramadan._220_npcChat begin
local setting = event_ramadan.setting()
if pc.count_item(setting.iftar) == 0 then
-- gameforge.event_ramadan._230_sayTitle Bettler: (referenz auf Mob: 33003~33007)
say_title(gameforge.event_ramadan._230_sayTitle)
say("")
-- gameforge.event_ramadan._240_say Ich bin wirklich hungrig. Habe erbarmen und bringe mir ein Iftar (bitte mit Abdel absprechen und referenz auf item: 30317). Bitte bringe es mir, damit ich nicht verhungere.
say(gameforge.event_ramadan._240_say)
elseif pc.count_item(setting.iftar) > 0 then
say_title(gameforge.event_ramadan._230_sayTitle)
say("")
-- gameforge.event_ramadan._250_say Das ist doch ein Iftar (referenz: 30317)? Ein warmes leckeres Brot (referenz entsprechend). Willst du diese mir geben? Es wäre mir wertvoll!
say(gameforge.event_ramadan._250_say)
-- gameforge.event_ramadan._260_select_1 Nimm du Hungriger
-- gameforge.event_ramadan._260_select_2 Nein, ich behalte es
local s = select(gameforge.event_ramadan._260_select_1,gameforge.event_ramadan._260_select_2)
if 2==s then
say_title(gameforge.event_ramadan._230_sayTitle)
say("")
-- gameforge.event_ramadan._270_say Du Unbarmherziger sei nicht so geizig mit deinem Essen. Falls du deine Meinung änderst, weißt du wo du mich findest.
say(gameforge.event_ramadan._270_say)
return
end
-- reward
say_title(gameforge.event_ramadan._230_sayTitle)
say("")
-- gameforge.event_ramadan._280_say Es sei dir gedankt. Du bist wahrlich eine weise Person. Möge deine gute Tat hiermit belohnt sein.
say(gameforge.event_ramadan._280_say)
pc.give_item2(setting.box,1)
pc.remove_item(setting.iftar,1)
end --if
if not event_ramadan.is_running() then
npc.purge()
end
end
-- gameforge.event_ramadan._290_npcChat Die Frucht des Segens
when 33002.chat.gameforge.event_ramadan._290_npcChat with pc.getf("event_ramadan","fig_exchange")==0 begin
local setting = event_ramadan.setting()
if get_time() > pc.getqf("duration") then
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._300_say Ich hab auf meinen Reisen die "Frucht des Segens" (bitte Item: 30318 referenzien und ändern) kennen gelernt. Diese Frucht belohnt den Fleißigen der regelmäßig zur selben Stunde wiederkehrt.
say(gameforge.event_ramadan._300_say)
pc.give_item2(setting.fruit)
pc.setqf("duration",get_time()+60*60*24) --24h
else
say_title(gameforge.event_ramadan._020_sayTitle)
-- gameforge.event_ramadan._310_say Entschuldige, dich hab ich heute gesehen und du wurdest schon belohnt. Denk daran: Nur der wahrlich geduldige erreicht sein Ziel.
say(gameforge.event_ramadan._310_say)
end
end
-- gameforge.event_ramadan._320_npcChat Das Glück des Tüchtigen
when 33002.chat.gameforge.event_ramadan._320_npcChat with event_ramadan.reward_period() and pc.getf("event_ramadan","fig_exchange")==0 begin
local setting = event_ramadan.setting()
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._330_say Ich habe dich schon erwartet. Meine Zeit hier geht zu Ende und ich ziehe in die Welt um neue Geschichten zu lernen.
say(gameforge.event_ramadan._330_say)
wait()
if pc.count_item(setting.fruit)>= 5 then --more than 5
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._340_say Du hast %d Früchte des Segens (Item: 30318) für mich verwahrt.
say(string.format(gameforge.event_ramadan._340_say, pc.count_item(setting.fruit)))
-- gameforge.event_ramadan._350_say Würdest du mir diese geben für meine Reise? Ich will es dir auch entlohnen.
say(gameforge.event_ramadan._350_say)
-- gameforge.event_ramadan._360_select_1 Hier nimm
-- gameforge.event_ramadan._360_select_2 Nein
local s=select(gameforge.event_ramadan._360_select_1, gameforge.event_ramadan._360_select_2)
if 2==s then
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._370_say Überlege es dir und ich warte auch dich.
say(gameforge.event_ramadan._370_say)
return
end
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._380_say Danke für deine Großzügigkeit und deinen Fleiß. Bitte nehme dieses:
say(gameforge.event_ramadan._380_say)
-- Item: Siegel des Rappen
-- gameforge.event_ramadan._390_sayReward Siegel des Rappen (referenz auf items:71131~4)
say_reward(gameforge.event_ramadan._390_sayReward)
say("")
if pc.count_item(setting.fruit)>= 5 and pc.count_item(setting.fruit)<= 10 then
pc.give_item2(setting.horse1,1)
elseif pc.count_item(setting.fruit)>= 11 and pc.count_item(setting.fruit)<= 19 then
pc.give_item2(setting.horse2,1)
elseif pc.count_item(setting.fruit)>= 20 and pc.count_item(setting.fruit)<= 27 then
pc.give_item2(setting.horse3,1)
elseif pc.count_item(setting.fruit)>= 28 then
pc.give_item2(setting.horse4,1)
end
pc.remove_item(setting.fruit,pc.count_item(setting.fruit))
pc.setqf("fig_exchange",1)
else --less than 5
say_title(gameforge.event_ramadan._020_sayTitle)
say("")
-- gameforge.event_ramadan._400_say Du hast weniger als 5? Schade damit kann ich nicht viel anfangen. Vielleicht beim nächsten mal.
say(gameforge.event_ramadan._400_say)
end
end
when 30316.use begin
local setting = event_ramadan.setting()
if pc.count_item(setting.bread) >= 10 then
pc.remove_item(setting.bread, 10)
pc.remove_item(setting.plate, 1)
pc.give_item2(setting.iftar, 1)
end
end
end --state
end --quest