server/gamefiles/locale/english/quest/xxx_monkey_dungeon.quest

291 lines
6.3 KiB
Plaintext
Raw Blame History

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<75>ck<63> ")
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