Files
taverne-server-source/serverfiles/share/locale/english/quest/xxx_monkey_dungeon.quest
T

291 lines
6.3 KiB
Plaintext
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
quest monkey_dungeon begin
state start begin
when login begin
pc.setqf("clear", 0)
local i = pc.get_map_index()
if i == 107 or i == 108 or i == 109 then
local warp_to =
{
[107] =
{
{ 3, 979, 564 },
{ 23, 575, 97 },
{ 43, 535, 66 },
},
[108] =
{
{ 63, 1016, 1352 },
{ 63, 1016, 1352 },
{ 63, 1016, 1352 },
},
[109] =
{
{ 63, 831, 549 },
{ 63, 831, 549 },
{ 63, 831, 549 },
},
}
pc.setqf("fail", 0)
pc.warp_local(warp_to[i][pc.empire][1], warp_to[i][pc.empire][2] * 100, warp_to[i][pc.empire][3] * 100)
elseif pc.getqf("level") != 0 then
if i >= 1070000 and i < 1100000 then
-- Set quest (Show to user)
q.set_title("Affendungeon")
q.set_clock("Verbleibende Zeit:", 20*60)
q.start()
timer("failtimer", 20*60)
if pc.getqf("level") >= 2 then
timer("regen_middle_boss", 10*60)
end
else
pc.setqf("level", 0)
q.done()
if pc.getqf("fail") != 0 then
pc.setqf("fail", 0)
pc.polymorph(5003, 3*60)
makequestbutton("Fluch des Affen")
setskin(NOWINDOW)
end
end
end
end
when button begin
say("Du wurdest verflucht.")
end
when logout with pc.get_map_index() >= 1070000 and pc.get_map_index() < 1100000 begin
if pc.getqf("clear") == 0 then
pc.setqf("fail", 1)
local map_index, x, y = pc.get_start_location()
pc.set_warp_location(map_index, x, y)
end
if pc.getqf("level") != 0 then
d.exit_all()
d.purge()
end
end
function determine_level()
if pc.get_map_index() == 63 then
if pc.local_y < 800 then
return 3
else
return 2
end
else
return 1
end
end
when 20350.chat."Herausforderung im Affendungeon" begin
local delay = 3600
if is_test_server() then
delay = 10
end
if get_global_time() - pc.getqf("Zeit") < delay and pc.getqf("Zeit") != 0 then
say("Jetzt ist nicht der richtige Zeitpunkt, einzutreten.")
say("Du kannst nur jede Stunde einmal in den Dungeon")
say("gehen.")
else
--Determine Easy Monkey Dungeon, Normal Monkey Dungeon, Hard Monkey Dungeon
local s = monkey_dungeon.determine_level()
local msgs = {
"Eingang zum leichten Affendungeon",
"Eingang zum normalen Affendungeon",
"Eingang zum schweren Affendungeon",
}
local maps = { 107, 108, 109 }
-- say_title(msgs[s])
--- l
say("")
say("1. Wenn Du den Affendungeon betretest, musst Du")
say("den obersten Affen in 20 Minuten erschlagen und")
say("dann entkommen.")
say("")
say("2. Du darfst keine Schriftrollen `Zurück´ ")
say("oder zu anderen Zielen verwenden.")
say("")
say("Viele, die sich nicht an diese Regeln halten,")
say("werden in Affen verwandelt, also nimm Dich in")
say("Acht.")
local r = select("Betreten.", "Nicht betreten.")
if r == 1 then
-- pc.setqf("time", get_global_time())
pc.setqf("Zeit", get_global_time())
d.join(maps[s])
monkey_dungeon.spawn_goto_mobs(s)
d.regen_file("data/dungeon/monkey/monkey"..s..".txt")
pc.setqf("level", s);
end
end
end
when regen_middle_boss.timer begin
if pc.getqf("level") == 2 then
d.spawn_group(5017, 596, 332, 1, true, 1)
elseif pc.getqf("level") == 3 then
d.spawn_group(5028, 596, 332, 1, true, 1)
end
end
when 5116.party_kill with pc.getqf("level") == 2 begin
d.spawn_goto_mob(595, 335, 601, 560)
end
when 5127.party_kill with pc.getqf("level") == 3 begin
d.spawn_goto_mob(595, 335, 601, 560)
end
when 5161.party_kill with pc.getqf("level") == 1 begin
cleartimer('failtimer')
timer('successtimer', 30)
party.setqf("clear", 1)
end
when 5162.party_kill with pc.getqf("level") == 2 begin
cleartimer('failtimer')
timer('successtimer', 30)
party.setqf("clear", 1)
end
when 5163.party_kill with pc.getqf("level") == 3 begin
cleartimer('failtimer')
timer('successtimer', 30)
party.setqf("clear", 1)
end
when failtimer.timer begin
d.exit_all_to_start_position()
d.purge()
end
when successtimer.timer begin
d.exit_all()
d.purge()
q.done()
end
function spawn_goto_mobs(level)
local t = {
{
{145, 315, 345, 361},
{80, 308, 106, 547},
{206, 109, 75, 368},
{320, 238, 89, 746},
{421, 272, 520, 352},
{487, 279, 541, 45},
{70, 368, 211, 109},
{65, 434, 615, 49},
{67, 498, 284, 705},
{350, 361, 145, 310},
{210, 495, 553, 285},
{526, 352, 487, 274},
{528, 415, 626, 291},
{523, 480, 285, 569},
{101, 547, 80, 303},
{82, 746, 315, 238},
{541, 40, 416, 272},
{615, 44, 72, 498},
{553, 291, 215, 495},
{626, 296, 523, 415},
{278, 705, 72, 498},
{280, 569, 518, 480},
{470, 560, 579, 390},
},
{
{145, 315, 345, 361},
{80, 308, 520, 352},
{206, 109, 487, 274},
{320, 238, 75, 368},
{421, 272, 211, 109},
{487, 279, 215, 495},
{70, 368, 315, 238},
{65, 434, 520, 352},
{67, 498, 284, 705},
{350, 361, 145, 310},
{210, 495, 416, 272},
{526, 352, 80, 303},
{528, 415, 72, 498},
{523, 480, 106, 547},
{101, 547, 523, 415},
{82, 746, 541, 45},
{541, 40, 72, 121},
{615, 44, 518, 480},
{553, 291, 89, 746},
{626, 296, 285, 569},
{278, 705, 615, 49},
{280, 569, 72, 498},
{470, 560, 579, 390},
},
{
{145, 315, 75, 368},
{80, 308, 541, 45 },
{206, 109, 615, 49 },
{320, 238, 284, 705},
{421, 272, 520, 352},
{487, 279, 553, 285},
{70, 368, 145, 310},
{65, 434, 345, 361},
{67, 498, 523, 415},
{350, 361, 72, 498},
{210, 495, 626, 291},
{526, 352, 487, 274},
{528, 415, 72, 498},
{523, 480, 106, 547},
{101, 547, 518, 480},
{82, 746, 285, 569},
{541, 40, 80, 303},
{615, 44, 211, 109},
{553, 291, 416, 272},
{626, 296, 215, 495},
{278, 705, 315, 238},
{280, 569, 89, 746},
{470, 560, 579, 390},
}
}
if level >= 1 and level <= 3 then
table.foreachi(t[level],
function(n, p)
d.spawn_goto_mob(p[1], p[2], p[3], p[4])
end)
if level == 1 then
d.spawn_goto_mob(581, 395, 595, 565)
end
end
end
end
end