quest turnul_demonilor begin
state start begin
when login begin
if pc.get_map_index() == 66 then
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
pc.warp(590500, 110500)
end
pc.set_warp_location(65, 5905, 1105)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
pc.set_warp_location(65, 5905, 1105)
turnul_demonilor.register_player(pc.get_vid())
end
end
when logout begin
if pc.count_item(30300) >= 1 then
pc.remove_item(30300, pc.count_item(30300))
end
if pc.count_item(30302) >= 1 then
pc.remove_item(30302, pc.count_item(30302))
end
if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
turnul_demonilor.unregister_player(pc.get_vid())
end
end
when turnul_demonilor_paznic.chat."Intrarea în Turnul Demonilor" begin
if pc.get_level() < 40 then
say_title("Gardã a Demonilor:")
say("")
--- l
say("Acest turn este plin de demoni.")
say("Doar cei puternici pot ajunge în vârf.")
say("Se spune cã, cine intra în turn")
say("nu iese în viatã.")
say("Momentan ... nivelul tãu este prea mic")
say("pentru a te lãsa sã intri.")
say("Revin-o când ai nivelul 40.")
say("")
else
say_title("Gardã a Demonilor:")
say("")
--- l
say("Acest turn este plin de demoni.")
say("Doar cei puternici pot ajunge în vârf.")
say("Se spune cã, cine intra în turn")
say("nu iese în viatã.")
say("Esti sigur cã vrei sã intri?")
say("")
local s = select("Intru", "Nu")
if s == 1 then
-- warp into!
pc.warp(216500,727000)
end
end
end
when turnul_demonilor_piatra1.kill begin
timer("turnul_demonilor_piatra1_1", 6)
end
when turnul_demonilor_piatra1_1.timer begin
d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
d.regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/turnul_demonilor/turnul_demonilor_3_regen.txt")
end
when turnul_demonilor_king1.kill begin
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/turnul_demonilor/turnul_demonilor_4_regen.txt")
d.check_eliminated()
end
function get_4floor_stone_pos()
local positions =
{
{368, 629}, {419, 630}, {428, 653}, {422, 679},
{395, 689}, {369, 679}, {361, 658},
}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions;
positions = positions[j];
positions[j] = t;
end
end
return positions
end
when turnul_demonilor_piatra2.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level", 4)
local positions = turnul_demonilor.get_4floor_stone_pos()
for i = 1, 6 do
chat(positions[1], positions[2])
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[1], positions[2]))
end
chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
chat(vid)
d.set_unique("real", vid)
server_loop_timer('turnul_demonilor_4_actualizare', 10, pc.get_map_index())
server_timer('turnul_demonilor_4_esec1', 5*60, pc.get_map_index())
d.notice("Ai ajuns la Poarta Alegerii la etajul 4.");
d.notice("Multe pietre Metin false îti vor irita ochii si urechile.");
d.notice("Gãseste piatra Metin corectã si distruge-o. Ai 15 minute.");
d.notice("Aceasta este singura modalitate de a trece aceastã poartã.");
end
when turnul_demonilor_4_esec1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Minute rãmase: 10")
server_timer('turnul_demonilor_4_esec2', 5*60, get_server_timer_arg())
end
end
when turnul_demonilor_4_esec2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Minute rãmase: 5")
server_timer('turnul_demonilor_4_esec', 5*60, get_server_timer_arg())
end
end
when turnul_demonilor_4_esec.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("level") == 4 then
d.notice("Timpul a expirat.")
d.exit_all()
end
end
when turnul_demonilor_4_actualizare.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1, 6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake" .. i) < 50 then
d.purge_unique("fake" .. i)
d.setf("fakedead" .. i, 1)
d.notice("Piatra Metin falsã a dispãrut...");
end
end
end
else
server_timer("turnul_demonilor_4_sfarsit", 5, get_server_timer_arg())
d.notice("Te-ai bazat pe instinct si ai reusit!");
d.notice("Ai distrus piatra Metin corectã.")
d.purge()
end
else
server_timer('turnul_demonilor_4_opreste_timp', 1, get_server_timer_arg())
end
end
when turnul_demonilor_4_opreste_timp.server_timer begin
clear_server_timer('turnul_demonilor_4_actualizare', get_server_timer_arg())
end
when turnul_demonilor_4_sfarsit.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer('turnul_demonilor_4_actualizare', get_server_timer_arg())
clear_server_timer('turnul_demonilor_4_esec1', get_server_timer_arg())
clear_server_timer('turnul_demonilor_4_esec2', get_server_timer_arg())
clear_server_timer('turnul_demonilor_4_esec', get_server_timer_arg())
d.setf("level", 5)
d.setf("stone_count", 5)
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
d.notice("Ai ajuns la Poarta Sigilatã la etajul 5.")
d.notice("Câtiva demoni au Piatra Cheie, care poate fi")
d.notice("folositã pentru a deschide Sigiliile Antice.")
d.notice("Deschide cele 5 sigilii în 20 de minute")
d.notice("pentru a avansa la etajul urmãtor!")
server_timer('turnul_demonilor_5_esec1', 5*60, get_server_timer_arg())
clear_server_timer('turnul_demonilor_5_actualizare', get_server_timer_arg())
d.set_regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_5_regen.txt")
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when turnul_demonilor_5_esec1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Minute rãmase: 15")
server_timer('turnul_demonilor_5_esec2', 5*60, get_server_timer_arg())
end
end
when turnul_demonilor_5_esec2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Minute rãmase: 10")
server_timer('turnul_demonilor_5_esec3', 5*60, get_server_timer_arg())
end
end
when turnul_demonilor_5_esec3.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Minute rãmase: 5")
server_timer('turnul_demonilor_5_esec', 5*60, get_server_timer_arg())
end
end
when turnul_demonilor_5_esec.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("level") == 5 then
d.notice("Timpul a expirat.")
d.exit_all()
end
end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count") + 1
d.setf("count", n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084, 1)
d.setf("count", 0)
end
end
when turnul_demonilor_sigiliu.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_6_regen.txt")
d.notice("Ai deschis toate sigliile.")
d.notice("Vei avansa la etajul 6!")
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
clear_server_timer('turnul_demonilor_5_esec1', get_server_timer_arg())
clear_server_timer('turnul_demonilor_5_esec2', get_server_timer_arg())
clear_server_timer('turnul_demonilor_5_esec3', get_server_timer_arg())
clear_server_timer('turnul_demonilor_5_esec', get_server_timer_arg())
d.notice("Învinge toti demonii apoi omoarã regele.")
else
d.notice("Sigiliul a fost rup! Au mai rãmas "..d.getf("stone_count")..".")
end
end
when turnul_demonilor_king2.kill begin
d.kill_all()
d.check_eliminated()
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf("can_refine", 1)
end
when 20074.chat."Etajele de vârf ale turnului" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20074)..":")
say("")
say("Ati gãsit drumul pânã la etajul 6.")
say("Necesitã multã îndemânare sã ajungi aici ...")
say("Hmmmm...")
say("Dupã cum ti-am examinat abilitãtile.....")
say("")
wait()
if pc.level >=75 then
say_title(""..mob_name(20074)..":")
say("")
say("Te voi lãsa sã treci mai departe..")
say("")
timer("turnul_demonilor_etaj_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20074)..":")
say("")
say("Ai nevoie de mai mult antrenament")
say("pentru a te lãsa sã treci mai departe.")
say("Revin-o când esti destul de puternic..")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat."Etajele de vârf ale turnului" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20075)..":")
say("")
say("Ati gãsit drumul pânã la etajul 6.")
say("Necesitã multã îndemânare sã ajungi aici ...")
say("Hmmmm...")
say("Dupã cum ti-am examinat abilitãtile.....")
say("")
wait()
if pc.level >=75 then
say_title(""..mob_name(20075)..":")
say("")
say("Te voi lãsa sã treci mai departe..")
say("")
timer("turnul_demonilor_etaj_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20075)..":")
say("")
say("Ai nevoie de mai mult antrenament")
say("pentru a te lãsa sã treci mai departe.")
say("Revin-o când esti destul de puternic..")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat."Etajele de vârf ale turnului" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20076)..":")
say("")
say("Ati gãsit drumul pânã la etajul 6.")
say("Necesitã multã îndemânare sã ajungi aici ...")
say("Hmmmm...")
say("Dupã cum ti-am examinat abilitãtile.....")
say("")
wait()
if pc.level >=75 then
say_title(""..mob_name(20076)..":")
say("")
say("Te voi lãsa sã treci mai departe..")
say("")
timer("turnul_demonilor_etaj_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20076)..":")
say("")
say("Ai nevoie de mai mult antrenament")
say("pentru a te lãsa sã treci mai departe.")
say("Revin-o când esti destul de puternic..")
say("")
wait()
pc.warp(590500, 110500)
return
end
when turnul_demonilor_etaj_7.timer begin
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(2048+590, 6656+638)
end
when turnul_demonilor_piatra3.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local cont = d.getf("7_stone_kill") + 1
d.setf("7_stone_kill", cont)
if cont >= 4 then
d.setf("7_stone_kill", 0)
d.set_regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_7_regen.txt")
end
end
when turnul_demonilor_piatra4.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
game.drop_item(30300, 1)
end
when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
pc.remove_item("30300", 1)
local pct = number(1,10)
if pct == 1 then
game.drop_item(30302, 1)
d.clear_regen()
else
game.drop_item(30301, 1)
end
end
when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf( "level" ) != 7 then
pc.remove_item( "30302", 1)
return
end
say("Cu aceastã hartã poti avansa la nivelul urmãtor!")
pc.remove_item("30302", 1)
timer("turnul_demonilor_etaj_8", 6)
d.clear_regen()
end
---------------------------------------------
-- ETAJ 8
---------------------------------------------
when turnul_demonilor_etaj_8.timer begin
d.setf("level", 8)
d.jump_all(2048+590, 6656+403)
d.set_regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count = pc.count_item(30302)
pc.remove_item(30302,_count)
end
when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf("level") < 9 then
local pct1 = number(1, 10)
if pct1 == 1 then
local pct2 = number(1, 4)
if pct2 == 1 then
game.drop_item(30304, 1)
else
game.drop_item(30303, 1)
end
else
return
end
end
end
when turnul_demonilor_sa_soe.take with item.vnum == 30304 begin
npc.purge()
item.remove()
timer("turnul_demonilor_etaj_9", 8)
end
---------------------------------------------
-- ETAJ 9
---------------------------------------------
when turnul_demonilor_etaj_9.timer begin
d.setf("level", 9)
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/turnul_demonilor/turnul_demonilor_9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
d.kill_all()
timer("turnul_demonilor_final", 30)
end
when turnul_demonilor_final.timer begin
d.exit_all()
end
function register_player(vid)
local player_count = d.getf("player_count")
player_count = player_count + 1
d.setf("player_count", tonumber(player_count))
d.setf(string.format("player%d", player_count), tonumber(vid))
end
function unregister_player(vid)
local player_count = d.getf("player_count")
local found = false
for i = 1, player_count, 1 do
if found == true then
d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
end
p = d.getf("player"..tostring(i))
if p == vid then
i = i -1
found = true
end
end
if found == true then
d.setf("player_count", tonumber(player_count - 1))
end
end
end
end