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