Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- quest crystal_dungeon begin
- state start begin
- --Functions
- function settings()
- return
- {
- ["map_index"] = 9,
- ["spawm_pos"] = {
- [1] = {21272, 29576},
- [2] = {21650, 29689},
- [3] = {21232, 30067},
- [4] = {21396, 30104},
- [5] = {21765, 30187},
- },
- ["level_check"] = {
- ["minimum"] = 255,
- ["maximum"] = 255
- },
- ["keys"] = {30313, 30314, 30315},
- ["metin_stones"] = {8153, 8154, 8153},
- };
- end
- function spawn_boss(level)
- local boss_settings = {
- [3] = {252, 741, 191},
- [5] = {251, 431, 544},
- [7] = {253, 773, 681}
- };
- return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3])
- end
- function spawn_metins_4thfloor()
- local setting = crystal_dungeon.settings()
- local r = number (1,8)
- if r == 1 then
- d.spawn_mob(setting["metin_stones"][3], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 2 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][3], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 3 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][3], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 4 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][3], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 5 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][3], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 6 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][3], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 7 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][3], 397, 737)
- d.spawn_mob(setting["metin_stones"][2], 410, 714)
- elseif r == 8 then
- d.spawn_mob(setting["metin_stones"][2], 250, 659)
- d.spawn_mob(setting["metin_stones"][2], 239, 714)
- d.spawn_mob(setting["metin_stones"][2], 257, 745)
- d.spawn_mob(setting["metin_stones"][2], 282, 777)
- d.spawn_mob(setting["metin_stones"][2], 321, 767)
- d.spawn_mob(setting["metin_stones"][2], 371, 770)
- d.spawn_mob(setting["metin_stones"][2], 397, 737)
- d.spawn_mob(setting["metin_stones"][3], 410, 714)
- end
- end
- function make_dungeon()
- local setting = crystal_dungeon.settings()
- d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2])
- d.setf("lair_check", 1)
- d.setf("level_four_login", 0)
- crystal_dungeon.get_regens(1)
- end
- function get_regens(level)
- local regens = {
- [1] = "data/dungeon/crystal_dungeon/regen_1.txt",
- [2] = "data/dungeon/crystal_dungeon/regen_2.txt",
- [3] = "data/dungeon/crystal_dungeon/regen_3.txt",
- [4] = "data/dungeon/crystal_dungeon/regen_4a.txt",
- [5] = "data/dungeon/crystal_dungeon/regen_4b.txt",
- [6] = "data/dungeon/crystal_dungeon/regen_5.txt",
- [7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"};
- return d.set_regen_file(regens[level])
- end
- function party_get_member_pids()
- local pids = {party.get_member_pids()}
- return pids
- end
- ------
- ------[Dungeon enter]
- ------
- when 20092.chat."Kryształowa Komnata" begin
- local settings = crystal_dungeon.settings()
- say_title(mob_name(9214))
- say("")
- if not party.is_party() then
- say_item(" ",9, "")
- say("Jest to bardzo ciężkie zadanie:")
- say("Tak więc żeby zacząć")
- say("musisz posiadać grupę kilku śmiałków.")
- say("")
- return
- end
- if pc.count_item(71096) < 9 and pc.count_item(80008) < 999 then
- say_item(" ",9, "")
- say("Nie posiadasz odpowiednich przepustek:")
- say("")
- say_title("10 x Medal Portalu:")
- say_title("1000 x Bryłka Złota:")
- return
- end
- if not party.is_leader() then
- say_item(" ",9, "")
- say("Nie jesteś liderem grupy")
- say("")
- say("Poproś lidera grupy o kontakt ze mną .")
- say("")
- return
- end
- if party.get_near_count() < 1 then
- say_item(" ",9, "")
- say("Grupa musi posiadać,")
- say("conajmniej jedną dodatkowo osobę .")
- return
- end
- local levelCheck, maximlevelCheck = true, true
- local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {}
- local pids = {party.get_member_pids()}
- for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do
- q.begin_other_pc_block(pid)
- if pc.get_level() < settings["level_check"]["minimum"] then
- table.insert(notEnoughLevelMembers, pc.get_name())
- levelCheck = false
- end
- if pc.get_level() > settings["level_check"]["maximum"] then
- table.insert(notEnoughmaximLevelMembers, pc.get_name())
- maximlevelCheck = false
- end
- q.end_other_pc_block()
- end
- if not levelCheck then
- say("Jeśli chcesz wejść do Kryształowej Komnaty,")
- say(string.format("każdy członek grupy musi posiadać min %s lvl.", settings["level_check"]["minimum"]))
- say("")
- say_red("Następujący członkowie nie spełniają wymagań:")
- for i, name in next, notEnoughLevelMembers, nil do
- say("- "..name)
- end
- return
- end
- if not maximlevelCheck then
- say("Jeśli chcesz wejść do Kryształowej Komnaty,")
- say(string.format("każdy członek grupy musi posiadać max %s lvl.", settings["level_check"]["maximum"]))
- say_red("Następujący członkowie nie spełniają wymagań:")
- for i, name in next, notEnoughmaximLevelMembers, nil do
- say("- "..name.."")
- end
- return
- end
- pc.remove_item(80008, 1000)
- pc.remove_item(71096, 10)
- say_item(" ",9, "")
- say("Trzymajcie się mocno,")
- say("za chwilę zostaniecie teleportowani.")
- say("")
- wait()
- crystal_dungeon.make_dungeon()
- end
- ----
- ----Dungeon start
- ----
- when login begin
- local get_flag = d.getf("lair_check")
- local four_login = d.getf("level_four_login")
- local six_login = d.getf("level_six_login")
- if get_flag == 2 then
- say_item(" ",9, "")
- say_title("Drugie piętro :")
- say("")
- say("Zabij wszystkie moby, aby zdobyć pieczęć.")
- say("i móc odblokować kryształowy ołtarz.")
- say("Fałszywą pieczęć możesz wyrzucić.")
- d.setf("crystal_seal", 0)
- elseif get_flag == 3 then
- say_item(" ",9, "")
- say_title("Trzecie piętro :")
- say("")
- say("Zabij wszystkie potwory na tym piętrze .")
- say("Są to strażnicy Kryształowego Potwora !")
- say("Po zabiciu wszystkich potworów,")
- say("obudzi się Kryształowy potwór!")
- say("")
- say_title("Śpieszcie się, macie tylko 8 minut .")
- if four_login == 0 then
- d.setf("level_four_login", 1)
- d.setf("lair_check", 3)
- clear_server_timer("level_four_timer", get_server_timer_arg())
- clear_server_timer("exit_before", get_server_timer_arg())
- server_timer("level_four_timer", 8 * 60, d.get_map_index())
- end
- elseif get_flag == 4 then
- say_title("Czwarte piętro :")
- say("")
- say("Jesteście dobrymi wojownikami!")
- say("Nie wielu śmiałkom udało")
- say("się tu dostać!")
- say("Musicie zdobyć, poprawny klucz")
- say("")
- say_title("Umieść pieczęć na końcu")
- say_title("tego piętra !")
- elseif get_flag == 5 then
- say_title("Piąte piętro :")
- say("")
- say("Musisz zabić wszytskie potwory !")
- say("żeby obudzić kryształowego Potwora")
- say("")
- say_title("Powodzenia!")
- elseif get_flag == 6 then
- say_title("Szóste piętro :")
- say("")
- say("Musicie zdobyć, poprawny klucz!")
- say("")
- say_title("Macie 15 minut żeby pokonać netiny!")
- say_title("metins!")
- if six_login == 0 then
- d.setf("level_six_login", 1)
- d.setf("lair_check", 6)
- clear_server_timer("level_six_timer", get_server_timer_arg())
- clear_server_timer("exit_before2", get_server_timer_arg())
- server_timer("level_six_timer", 15 * 60, d.get_map_index())
- end
- else
- return
- end
- end
- when kill with npc.get_race() == 257 begin
- local count, check = d.getf("mobs") + 1, false;
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 1 then
- --83
- if count < 10 and check == false then
- d.setf("mobs", count)
- else
- if d.getf("metin_stone") == 0 then
- d.clear_regen()
- d.kill_all()
- d.spawn_mob(setting["metin_stones"][1], 261, 276)
- d.spawn_mob(setting["metin_stones"][1], 242, 303)
- d.spawn_mob(setting["metin_stones"][1], 293, 305)
- d.notice(string.format(" %s Pojawił się na mapie! ", mob_name(8153)))
- d.setf("metin_stone", 1)
- end
- check = true
- end
- end
- end
- when kill with npc.get_race() == 8153 and pc.in_dungeon() begin
- local count, check_metin1 = d.getf("metins") + 1, false;
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 1 then
- if count < 3 and check_metin1 == false then
- d.setf("metins", count)
- else
- if d.getf("metin_stone1") == 0 then
- d.notice("Świetnie się spisaliście. Za chwilę zostaniecie teleportowani!")
- d.kill_all()
- d.setf("lair_check", 2)
- d.setf("metin_stone1", 1)
- cleartimer("level_timer")
- timer("level_timer", 7)
- end
- check_metin1 = true
- end
- end
- end
- when 258.kill begin
- local count, check_2 = d.getf("mobs_2") + 1, false;
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 2 then
- --73
- if count < 25 and check_2 == false then
- d.setf("mobs_2", count)
- else
- if d.getf("crystal_seal") == 0 then
- game.drop_item(setting["keys"][1], 1)
- d.setf("crystal_seal", 1)
- end
- check_2 = true
- end
- end
- end
- when 9032.take with item.vnum == 30313 and pc.in_dungeon() begin
- local setting = crystal_dungeon.settings()
- local n = number (1,3)
- if n == 1 then
- d.clear_regen()
- pc.remove_item(setting["keys"][1], 1)
- d.notice("To nie jest poprawny klucz.")
- d.spawn_mob(9029, 753, 172)
- timer("effect_purge", 10)
- d.setf("mobs_2", 1)
- crystal_dungeon.get_regens(2)
- d.setf("crystal_seal", 0)
- else
- d.notice("Świetnie ten klucz jest poprawny!")
- d.notice("Za chwilę zostaniecie przeniesieni!")
- d.kill_unique(9032)
- d.clear_regen()
- d.kill_all()
- d.setf("lair_check", 3)
- pc.remove_item(setting["keys"][1], 1)
- cleartimer("level_timer")
- timer("level_timer", 12)
- end
- end
- when 259.kill begin
- local count, check3 = d.getf("mobs_3") + 1, false;
- if d.getf("lair_check") == 3 then
- --105
- if count < 10 and check3 == false then
- d.setf("mobs_3", count)
- else
- if d.getf("crystal_boss1") == 0 then
- d.kill_all()
- d.clear_regen()
- d.notice("Wszystkie potwory zostały pokonane!")
- d.notice("Kryształowa bestia wkrótce się pojawi!")
- timer("third_boss", 10)
- d.setf("third_boss", 1)
- d.setf("crystal_boss1", 1)
- end
- check3 = true
- end
- end
- end
- when 252.kill begin
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 3 then
- d.clear_regen()
- d.kill_all()
- d.setf("lair_check", 4)
- d.notice("Kryształowy potwór zginął!")
- d.notice("W ciągu 10 sekund zostaniecie teleportowani")
- cleartimer("level_four_timer")
- cleartimer("level_timer")
- timer("level_timer", 10)
- else
- return
- end
- end
- when 8153.kill begin
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 4 then
- game.drop_item(setting["keys"][2],1)
- end
- end
- when 8154.kill begin
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 4 then
- game.drop_item(setting["keys"][3],1)
- end
- end
- when 9031.take with item.vnum == 30314 and pc.in_dungeon() begin
- local setting = crystal_dungeon.settings()
- pc.remove_item(setting["keys"][2], 1)
- d.spawn_mob(9030, 405, 687)
- timer("wait_eff1", 2)
- end
- when 9031.take with item.vnum == 30315 and pc.in_dungeon() begin
- local setting = crystal_dungeon.settings()
- pc.remove_item(setting["keys"][3], 1)
- d.spawn_mob(9030, 405, 687)
- timer("wait_eff2", 2)
- end
- when 262.kill or 264.kill begin
- local count, check_4 = d.getf("mobs_5") + 1, false;
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 5 then
- --75
- if count < 75 and check_4 == false then
- d.setf("mobs_5", count)
- else
- if d.getf("crystal_dino") == 0 then
- d.clear_regen()
- d.kill_all()
- timer("crystal_dino", 10)
- d.setf("crystal_dino", 1)
- end
- check_4 = true
- end
- end
- end
- when 251.kill with pc.in_dungeon() begin
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 5 then
- d.clear_regen()
- d.kill_all()
- d.setf("lair_check", 6)
- d.notice("Dino de Cristal został zamordowany !")
- d.notice("W ciągu 10 sekund teleportujemy Was na następny poziom .")
- cleartimer("level_timer")
- timer("level_timer", 10)
- else
- return
- end
- end
- when 8414.kill with pc.in_dungeon() begin
- local count, check_5 = d.getf("metins_6") + 1, false;
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 6 then
- if count < 7 and check_5 == false then
- d.setf("metins_6", count)
- else
- if d.getf("crystal_dragon") == 0 then
- d.notice("Wszystkie metiny zostały zniszczone przed upływem czasu !")
- d.notice("Wkrótce pojawi się Kryształowy Smok!")
- cleartimer("level_six_timer")
- cleartimer("level_timer")
- d.kill_all()
- d.setf("lair_check", 7)
- d.setf("crystal_dragon", 1)
- cleartimer("level_timer")
- timer("level_timer", 7)
- end
- check_5 = true
- end
- end
- end
- when 253.kill with pc.in_dungeon() begin
- local setting = crystal_dungeon.settings()
- if d.getf("lair_check") == 7 then
- d.clear_regen()
- d.kill_all()
- d.notice("Kryształowy Smok został zabity!")
- d.notice("Udało się Wam ukończyć Kryształowy loch!")
- d.notice("Za 3 minuty zostaniecie przeteleportowani.")
- cleartimer("level_timer")
- server_timer("final", 3 * 60, d.get_map_index())
- else
- return
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement