Unzwar wen ich da drauf drücke siehe erste bild verschwindet es einfach und wen ich ohne grp drauf drücke steht da mach grp aber mit grp verschwindet es einfach
Bild 1
Hier mal die quest
quest flame_dungeon begin
state start begin
when 20394.click with pc.get_level() >= 90 begin
pc.give_item2(71175, 1)
set_state(run)
end
end
state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7766, 6719},-- ??? ?? ???? ?
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {5980,7075}, --??????? ??? ?
}
end
function is_flamed(idx) -- ???? ??? ??
return idx >= 351 * 10000 and idx < (351 + 1) *10000
end
function make_dungeon() -- ?? ???
local setting = flame_dungeon.setting()
d.new_jump_party(351, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
d.regen_file("data/dungeon/flame_dungeon/npc.txt")
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(20387, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(20388, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- ????? ?????? // ??? : 0 ?? : 1 // ??? ??????? ?? ??
d.setf("counter_11", 180)
d.setf("counter_13", 180)
end
function go_boss() -- ??? ??
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --????
say("Seu nivel nao e suficiente para continuar.[ENTER]Volte, quando tiver atingido pelo menos nivel 104.")
return
else
--if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE __ then -- ????? ??
say("Sera que voce quer avancar[ENTER]para conhecer o seu destino?")
local warp = select("Avancar","Talvez mais tarde")
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_fild_boss.txt")
d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
end
--else
-- say("Pode apenas avancar quando tiver[ENTER]concluido a missao de nivel 103.")
-- return
--end
end
end
function level_clear() -- ?? ???, ?????, ?????
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- ??? -- d.purge() ????
end
function clear_timer(inx) -- ??? ????
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == 351 then
--pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
elseif flame_dungeon.is_flamed(idx) then -- ?? ??, ??? ?? ??
------------------------------------------------------------------------------------------------------------------------------------------------------
--??? ??? ???? ???? ???? ?????? ?? ?? ??? ????. ???? ??? ?? ???? ???? ?? ?? ??? ??? ??.
--???? ???? ?? ?? ?? ??? ??? ??, ???? ??? ??? ????? ?? ??? ????? ???? ??? ??? ??? ??.
------------------------------------------------------------------------------------------------------------------------------------------------------
--pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ?? ??? ? ??? ????
local ticketGroup = {get_special_item_group (10033)}
if d.getf("dungeon_enter") == 0 then -- ???? ???
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 30 * 60 then -- ??????? ????
notice_multiline("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.",d.notice)
say("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.")
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline("Apenas um grupo pode invadir a Fortaleza Dragao[ENTER]Vermelho. Alem disso, e necessario uma[ENTER]autorizacao para entrar.",d.notice)
say("Eu posso deixar voce entrar se[ENTER]voce tiver em posse de um passe.")
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline("O nivel de todos os membros do grupo deve ser[ENTER]pelo menos 100. Caso contrario, eu nao posso[ENTER]deixar continuar.",d.notice)
say("Eu vou deixar passar se todos os membros do grupo,[ENTER]tiverem no minimo nivel 100.")
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ????? ??? ???????
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- ???? ?? ?? ? ????
pc.setf("flame_dungeon","exit_time",get_global_tim e()) -- ???? ???? ??? ??? ??, ?? ???? ??? or ?? ???? ???
end
end
end
when 20394.chat."Fortaleza Dragao Vermelho" begin
local setting = flame_dungeon.setting()
if party.is_party() then
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- ?? ?? 5? ??
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- ??
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5? ???? ? ?? ??
say_title(mob_name(20394))
say("Voce esteve mais de cinco minutos fora da[ENTER]Fortaleza Dragao Vermelho e[ENTER]agora nao pode entrar.")
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {get_special_item_group (10033)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < 100 then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(20394))
say("Atencao! Para entrar na Fortaleza Dragao[ENTER]Vermelho, exige-se que cada membro do grupo[ENTER]tenha um passe para entrar. Os membros que nao[ENTER]teem passe sao:")
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(20394))
say("Atencao! Para entrar na Fortaleza Dragao[ENTER]Vermelho, todos os membros do grupo devem ter[ENTER]nivel 100, os jogadores que actualmente nao[ENTER]atingiram o nivel sao:")
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say("Voce quer entrar na Fortaleza Dragao Vermelho?")
local warp = select("Entrar","Talvez mais tarde")
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - 30 * 60 ) then
flame_dungeon.make_dungeon()
else
say("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.")
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say("Apenas o lider do grupo pode solicitar a entrada.")
end
end
else
say("Eu aprecio a sua coragem, mas so voce[ENTER]nao pode entrar na Fortaleza Dragao Vermelho.[ENTER]Defina um grupo forte e eu vou conceder a entrada.")
end
end
when 20394.chat."Test : Teleporte para instancia" with pc.is_gm() begin -- ????
local setting = flame_dungeon.setting()
pc.setf("flame_dungeon","fdRtest",1)
pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, 351)
end
when 20394.chat."TEST : Init time limit init" with pc.is_gm() begin -- ????
pc.setf("flame_dungeon","exit_time",get_global_tim e()-1800)
say("Done")
end
when 20385.chat."Test : Informacao" with pc.is_gm() begin -- ????
say("monstros_11 : "..d.getf("counter_11"))
say("monstros_13 : "..d.getf("counter_13"))
say("server time : "..get_server_timer_arg())
say("numero de monstros : "..d.count_monster())
say("level : "..d.getf("level"))
say("Dmap index : "..d.get_map_index())
say("Pmap index : "..pc.get_map_index())
say("access limit : "..pc.getf("flame_dungeon","exit_time"))
say("global time : "..get_global_time())
if flame_dungeon.is_flamed(d.get_map_index()) then
say("in dungeon") -- is_flamed ?? ??
end
if d.is_unique_dead("stone1") then
say("stone1 is dead")
else
say("stone1 is not dead")
end
end
when 20385.chat."ativar instancia" with pc.is_gm() begin -- ????
say("??? ???")
flame_dungeon.clear_timer(d.get_map_index())
flame_dungeon.make_dungeon()
end
when 20385.chat."Test : Boss Room" with pc.is_gm() begin -- ????
flame_dungeon.go_boss()
end
when 20385.chat."testar sair" with pc.is_gm() begin -- ???? ??? ?? ? ?? ???
local setting = flame_dungeon.setting()
say("??? ????????")
local warp = select("Sim","Nao")
if warp == 1 then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
end
when flame_dungeon_45m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 45),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_30m_left_timer", 15*60)
end
when flame_dungeon_30m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 30),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_15m_left_timer", 15*60)
end
when flame_dungeon_15m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 15),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_5m_left_timer", 10*60)
end
when flame_dungeon_5m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 5),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_1m_left_timer", 4*60)
end
when flame_dungeon_1m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 1),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_0m_left_timer", 60)
end
when flame_dungeon_0m_left_timer.timer begin
local setting = flame_dungeon.setting()
notice_multiline("Seu tempo expirou. Dentro de 10 segundos voce[ENTER]sera teleportado para os portoes da fortaleza.",d.notice)
notice_multiline("Em dez segundos, o grupo e teleportado[ENTER]da Fortaleza Dragao Vermelho.",d.notice)
timer("exit_dungeon",10)
end
when 20385.chat."O despertar do Am-heh" with npc.lock() begin -- '0x'? x?? ?? ??? ?? ? ?? ?? , '1x'? x?? ?? ??? ???
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say("O Am-heh foi despertado.")
say("Os portoes da Fortaleza Dragao Vermelho[ENTER]seram fechados dentro de uma hora.")
wait()
d.setf("started",1)
timer("flame_dungeon_45m_left_timer",15*60)
notice_multiline("Tempo restante: 60 Minuto(s) ",d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
local pids = {party.get_member_pids()}
local ticketGroup = {get_special_item_group (10033)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --???? ???
if d.getf("clear_count") == 6 then -- ? ??? ??? ???
d.setf("level",7)
else
local rand = number(1,6)--???? ????? ?? ???? ?? ?? ?????? ???
local setlev = 0
d.setf("level",7) -- ?? ?? ??? ?? ??? ?????? ??? ????? ????
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say("Missao: Aventure-se no anel de demonios[ENTER]e surja como vencedor.")
notice_multiline("Missao: Aventure-se no anel de demonios[ENTER]e surja como vencedor.",d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
local counter_11 = 180
d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
elseif d.getf("level") == 11 then
say("Nao foram derrotados todos os demonios.")
say_title("Restantes: ", counter_11)
elseif d.getf("level") == 2 then
say("Tarefa: Encontre a engrenagem de ouro,[ENTER]substituindo o mecanismo oculto[ENTER]na estela de Isfet.")
notice_multiline("Tarefa: Encontre a engrenagem de ouro, substituindo [ENTER] o mecanismo oculto na estela de Isfet.",d.notice)
d.spawn_mob(20386, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ??? ??
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say("O mecanismo na estela de Isfet so pode ser[ENTER]acionado com a roda de engrenagem de ouro.[ENTER]Volta quando a tarefa foi cumprida.")
elseif d.getf("level") == 3 then
say("Missao: Aventure-se no anel de demonios e[ENTER]surja como vencedor.")
notice_multiline("Missao: Aventure-se no anel de demonios e[ENTER]surja como vencedor.",d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
local counter_13 = 180
d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
elseif d.getf("level") == 13 then
say("Nao foram derrotados todos os demonios.")
say_title("Restantes: ", counter_13)
elseif d.getf("level") == 4 then -- 474 178
say("Tarefa: Derrote Ignator, guarda das brasas.")
notice_multiline("Tarefa: Derrote Ignator, guarda das brasas.",d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_d.txt")
d.spawn_mob(6051,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- ????? ??
elseif d.getf("level") == 14 then
say("Ignator ainda nao foi derrotado.[ENTER]Fortaleca-se ou recebera a condenacao eterna.[ENTER]Volte se a tarefa for cumprida.")
elseif d.getf("level") == 5 then -- 510 355
say("Missao: Procurar as Pedras de Maat e coloca-as[ENTER]na ordem correta nas 7 estelas de Isfet.")
say("Se usares a Pedra de Maat na estela errada,[ENTER]a pedra ira partir-se.")
notice_multiline("Missao: Procurar as Pedras de Maat e coloca-as[ENTER]na ordem correta nas 7 estelas de Isfet.",d.notice)
notice_multiline("Se usares a Pedra de Maat na estela errada,[ENTER]a pedra ira partir-se.",d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- ???? ???
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(20386, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say("Errar e humano! Portanto, escolha com sabedoria[ENTER]para resolver o misterio. Volte se a tarefa[ENTER]for cumprida.")
elseif d.getf("level") == 6 then -- 507 490
say("Tarefa: So quem nao tem medo do calor abrasador,[ENTER]ira destruir a Metin do purgatorio.")
notice_multiline("Tarefa: So quem nao tem medo do calor abrasador,[ENTER]ira destruir a Metin do purgatorio.",d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_f.txt")
d.spawn_mob(8057, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- ?????? ??
elseif d.getf("level") == 16 then
say(" ")
say("Vamos colocar a Metin do purgatorio em cinzas.[ENTER]Volta se a tarefa for cumprida.")
elseif d.getf("level") == 7 then
flame_dungeon.go_boss()
else
say(" ")
end
npc.unlock()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 11 begin -- 2?? ??? ?? ??
if d.getf("counter_11") == 0 then -- 1?? ??? ???
notice_multiline("Todos os demonios foram derrotados.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
d.setf("counter_11",d.getf("counter_11")-1)
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 13 begin -- 2?? ??? ?? ??
if d.getf("counter_13") == 0 then -- 1?? ??? ???
notice_multiline("Todos os demonios foram derrotados.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
d.setf("counter_13",d.getf("counter_13")-1)
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2?? ??? ?? ??
local i = number(1, 100) -- 100?? 1 ??? ????
if i == 1 then
game.drop_item (30329, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == 30329 and d.getf("level") == 12 begin -- 2?? ?? ????
local i = number(1, 5) -- 5?? 1 ??? ?? ??
if i == 1 then
npc.purge()
item.remove()
notice_multiline("A estela de Isfet foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
item.remove()
say("Esta peca e falsa e foi destruida.[ENTER]Procura a original.")
end
end
when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline("Ignator, guarda das brasas, foi destruido.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5?? ??? ?? ??
local i = number(1, 30) -- 30?? 1 ??? ????
if i == 1 then
game.drop_item (30330, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == 30330 and d.getf("level") == 15 begin -- 5?? ???? ????
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ??? ?? ????? ? ?? ????? ???? ????
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",2) -- 2? ?? ???
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2??? ?? ??? 2???? ??? ??? ?
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",3)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",4)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",5)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",6)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia. Destrua agora a ultima[ENTER]estela e Maat triunfara sobre Isfet.")
d.setf("stonekill",7)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline("A estela de Isfet foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
end
end
when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ??? ???? ?
notice_multiline("A Metin do purgatorio foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
end
when 6091.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- ?? ????
notice_multiline("Razador foi destruido.",d.notice)
notice_multiline("Todos os lutadores seram teleportados[ENTER]em um minuto do Templo do Dragao.",d.notice)
timer("exit_dungeon", 60)
flame_dungeon.level_clear()
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
when exit_dungeon.timer begin
local setting = flame_dungeon.setting()
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
end
state start begin
when 20394.click with pc.get_level() >= 90 begin
pc.give_item2(71175, 1)
set_state(run)
end
end
state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7766, 6719},-- ??? ?? ???? ?
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {5980,7075}, --??????? ??? ?
}
end
function is_flamed(idx) -- ???? ??? ??
return idx >= 351 * 10000 and idx < (351 + 1) *10000
end
function make_dungeon() -- ?? ???
local setting = flame_dungeon.setting()
d.new_jump_party(351, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
d.regen_file("data/dungeon/flame_dungeon/npc.txt")
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(20387, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(20388, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- ????? ?????? // ??? : 0 ?? : 1 // ??? ??????? ?? ??
d.setf("counter_11", 180)
d.setf("counter_13", 180)
end
function go_boss() -- ??? ??
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --????
say("Seu nivel nao e suficiente para continuar.[ENTER]Volte, quando tiver atingido pelo menos nivel 104.")
return
else
--if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE __ then -- ????? ??
say("Sera que voce quer avancar[ENTER]para conhecer o seu destino?")
local warp = select("Avancar","Talvez mais tarde")
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_fild_boss.txt")
d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
end
--else
-- say("Pode apenas avancar quando tiver[ENTER]concluido a missao de nivel 103.")
-- return
--end
end
end
function level_clear() -- ?? ???, ?????, ?????
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- ??? -- d.purge() ????
end
function clear_timer(inx) -- ??? ????
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == 351 then
--pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
elseif flame_dungeon.is_flamed(idx) then -- ?? ??, ??? ?? ??
------------------------------------------------------------------------------------------------------------------------------------------------------
--??? ??? ???? ???? ???? ?????? ?? ?? ??? ????. ???? ??? ?? ???? ???? ?? ?? ??? ??? ??.
--???? ???? ?? ?? ?? ??? ??? ??, ???? ??? ??? ????? ?? ??? ????? ???? ??? ??? ??? ??.
------------------------------------------------------------------------------------------------------------------------------------------------------
--pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ?? ??? ? ??? ????
local ticketGroup = {get_special_item_group (10033)}
if d.getf("dungeon_enter") == 0 then -- ???? ???
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 30 * 60 then -- ??????? ????
notice_multiline("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.",d.notice)
say("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.")
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline("Apenas um grupo pode invadir a Fortaleza Dragao[ENTER]Vermelho. Alem disso, e necessario uma[ENTER]autorizacao para entrar.",d.notice)
say("Eu posso deixar voce entrar se[ENTER]voce tiver em posse de um passe.")
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline("O nivel de todos os membros do grupo deve ser[ENTER]pelo menos 100. Caso contrario, eu nao posso[ENTER]deixar continuar.",d.notice)
say("Eu vou deixar passar se todos os membros do grupo,[ENTER]tiverem no minimo nivel 100.")
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ????? ??? ???????
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- ???? ?? ?? ? ????
pc.setf("flame_dungeon","exit_time",get_global_tim e()) -- ???? ???? ??? ??? ??, ?? ???? ??? or ?? ???? ???
end
end
end
when 20394.chat."Fortaleza Dragao Vermelho" begin
local setting = flame_dungeon.setting()
if party.is_party() then
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- ?? ?? 5? ??
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- ??
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5? ???? ? ?? ??
say_title(mob_name(20394))
say("Voce esteve mais de cinco minutos fora da[ENTER]Fortaleza Dragao Vermelho e[ENTER]agora nao pode entrar.")
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {get_special_item_group (10033)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < 100 then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(20394))
say("Atencao! Para entrar na Fortaleza Dragao[ENTER]Vermelho, exige-se que cada membro do grupo[ENTER]tenha um passe para entrar. Os membros que nao[ENTER]teem passe sao:")
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(20394))
say("Atencao! Para entrar na Fortaleza Dragao[ENTER]Vermelho, todos os membros do grupo devem ter[ENTER]nivel 100, os jogadores que actualmente nao[ENTER]atingiram o nivel sao:")
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say("Voce quer entrar na Fortaleza Dragao Vermelho?")
local warp = select("Entrar","Talvez mais tarde")
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - 30 * 60 ) then
flame_dungeon.make_dungeon()
else
say("O periodo de espera para re-entrada na[ENTER]Fortaleza Dragao Vermelho ainda nao expirou.")
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say("Apenas o lider do grupo pode solicitar a entrada.")
end
end
else
say("Eu aprecio a sua coragem, mas so voce[ENTER]nao pode entrar na Fortaleza Dragao Vermelho.[ENTER]Defina um grupo forte e eu vou conceder a entrada.")
end
end
when 20394.chat."Test : Teleporte para instancia" with pc.is_gm() begin -- ????
local setting = flame_dungeon.setting()
pc.setf("flame_dungeon","fdRtest",1)
pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, 351)
end
when 20394.chat."TEST : Init time limit init" with pc.is_gm() begin -- ????
pc.setf("flame_dungeon","exit_time",get_global_tim e()-1800)
say("Done")
end
when 20385.chat."Test : Informacao" with pc.is_gm() begin -- ????
say("monstros_11 : "..d.getf("counter_11"))
say("monstros_13 : "..d.getf("counter_13"))
say("server time : "..get_server_timer_arg())
say("numero de monstros : "..d.count_monster())
say("level : "..d.getf("level"))
say("Dmap index : "..d.get_map_index())
say("Pmap index : "..pc.get_map_index())
say("access limit : "..pc.getf("flame_dungeon","exit_time"))
say("global time : "..get_global_time())
if flame_dungeon.is_flamed(d.get_map_index()) then
say("in dungeon") -- is_flamed ?? ??
end
if d.is_unique_dead("stone1") then
say("stone1 is dead")
else
say("stone1 is not dead")
end
end
when 20385.chat."ativar instancia" with pc.is_gm() begin -- ????
say("??? ???")
flame_dungeon.clear_timer(d.get_map_index())
flame_dungeon.make_dungeon()
end
when 20385.chat."Test : Boss Room" with pc.is_gm() begin -- ????
flame_dungeon.go_boss()
end
when 20385.chat."testar sair" with pc.is_gm() begin -- ???? ??? ?? ? ?? ???
local setting = flame_dungeon.setting()
say("??? ????????")
local warp = select("Sim","Nao")
if warp == 1 then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
end
when flame_dungeon_45m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 45),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_30m_left_timer", 15*60)
end
when flame_dungeon_30m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 30),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_15m_left_timer", 15*60)
end
when flame_dungeon_15m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 15),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_5m_left_timer", 10*60)
end
when flame_dungeon_5m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 5),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_1m_left_timer", 4*60)
end
when flame_dungeon_1m_left_timer.timer begin
notice_multiline(string.format("Tempo restante: %d minuto(s)", 1),d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
timer("flame_dungeon_0m_left_timer", 60)
end
when flame_dungeon_0m_left_timer.timer begin
local setting = flame_dungeon.setting()
notice_multiline("Seu tempo expirou. Dentro de 10 segundos voce[ENTER]sera teleportado para os portoes da fortaleza.",d.notice)
notice_multiline("Em dez segundos, o grupo e teleportado[ENTER]da Fortaleza Dragao Vermelho.",d.notice)
timer("exit_dungeon",10)
end
when 20385.chat."O despertar do Am-heh" with npc.lock() begin -- '0x'? x?? ?? ??? ?? ? ?? ?? , '1x'? x?? ?? ??? ???
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say("O Am-heh foi despertado.")
say("Os portoes da Fortaleza Dragao Vermelho[ENTER]seram fechados dentro de uma hora.")
wait()
d.setf("started",1)
timer("flame_dungeon_45m_left_timer",15*60)
notice_multiline("Tempo restante: 60 Minuto(s) ",d.notice)
notice_multiline("Depois do tempo, o grupo e teleportado[ENTER]para fora da fortaleza.",d.notice)
local pids = {party.get_member_pids()}
local ticketGroup = {get_special_item_group (10033)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --???? ???
if d.getf("clear_count") == 6 then -- ? ??? ??? ???
d.setf("level",7)
else
local rand = number(1,6)--???? ????? ?? ???? ?? ?? ?????? ???
local setlev = 0
d.setf("level",7) -- ?? ?? ??? ?? ??? ?????? ??? ????? ????
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say("Missao: Aventure-se no anel de demonios[ENTER]e surja como vencedor.")
notice_multiline("Missao: Aventure-se no anel de demonios[ENTER]e surja como vencedor.",d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
local counter_11 = 180
d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
elseif d.getf("level") == 11 then
say("Nao foram derrotados todos os demonios.")
say_title("Restantes: ", counter_11)
elseif d.getf("level") == 2 then
say("Tarefa: Encontre a engrenagem de ouro,[ENTER]substituindo o mecanismo oculto[ENTER]na estela de Isfet.")
notice_multiline("Tarefa: Encontre a engrenagem de ouro, substituindo [ENTER] o mecanismo oculto na estela de Isfet.",d.notice)
d.spawn_mob(20386, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ??? ??
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say("O mecanismo na estela de Isfet so pode ser[ENTER]acionado com a roda de engrenagem de ouro.[ENTER]Volta quando a tarefa foi cumprida.")
elseif d.getf("level") == 3 then
say("Missao: Aventure-se no anel de demonios e[ENTER]surja como vencedor.")
notice_multiline("Missao: Aventure-se no anel de demonios e[ENTER]surja como vencedor.",d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
local counter_13 = 180
d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
elseif d.getf("level") == 13 then
say("Nao foram derrotados todos os demonios.")
say_title("Restantes: ", counter_13)
elseif d.getf("level") == 4 then -- 474 178
say("Tarefa: Derrote Ignator, guarda das brasas.")
notice_multiline("Tarefa: Derrote Ignator, guarda das brasas.",d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_d.txt")
d.spawn_mob(6051,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- ????? ??
elseif d.getf("level") == 14 then
say("Ignator ainda nao foi derrotado.[ENTER]Fortaleca-se ou recebera a condenacao eterna.[ENTER]Volte se a tarefa for cumprida.")
elseif d.getf("level") == 5 then -- 510 355
say("Missao: Procurar as Pedras de Maat e coloca-as[ENTER]na ordem correta nas 7 estelas de Isfet.")
say("Se usares a Pedra de Maat na estela errada,[ENTER]a pedra ira partir-se.")
notice_multiline("Missao: Procurar as Pedras de Maat e coloca-as[ENTER]na ordem correta nas 7 estelas de Isfet.",d.notice)
notice_multiline("Se usares a Pedra de Maat na estela errada,[ENTER]a pedra ira partir-se.",d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- ???? ???
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(20386, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say("Errar e humano! Portanto, escolha com sabedoria[ENTER]para resolver o misterio. Volte se a tarefa[ENTER]for cumprida.")
elseif d.getf("level") == 6 then -- 507 490
say("Tarefa: So quem nao tem medo do calor abrasador,[ENTER]ira destruir a Metin do purgatorio.")
notice_multiline("Tarefa: So quem nao tem medo do calor abrasador,[ENTER]ira destruir a Metin do purgatorio.",d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_f.txt")
d.spawn_mob(8057, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- ?????? ??
elseif d.getf("level") == 16 then
say(" ")
say("Vamos colocar a Metin do purgatorio em cinzas.[ENTER]Volta se a tarefa for cumprida.")
elseif d.getf("level") == 7 then
flame_dungeon.go_boss()
else
say(" ")
end
npc.unlock()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 11 begin -- 2?? ??? ?? ??
if d.getf("counter_11") == 0 then -- 1?? ??? ???
notice_multiline("Todos os demonios foram derrotados.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
d.setf("counter_11",d.getf("counter_11")-1)
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 13 begin -- 2?? ??? ?? ??
if d.getf("counter_13") == 0 then -- 1?? ??? ???
notice_multiline("Todos os demonios foram derrotados.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
d.setf("counter_13",d.getf("counter_13")-1)
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2?? ??? ?? ??
local i = number(1, 100) -- 100?? 1 ??? ????
if i == 1 then
game.drop_item (30329, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == 30329 and d.getf("level") == 12 begin -- 2?? ?? ????
local i = number(1, 5) -- 5?? 1 ??? ?? ??
if i == 1 then
npc.purge()
item.remove()
notice_multiline("A estela de Isfet foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
item.remove()
say("Esta peca e falsa e foi destruida.[ENTER]Procura a original.")
end
end
when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline("Ignator, guarda das brasas, foi destruido.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5?? ??? ?? ??
local i = number(1, 30) -- 30?? 1 ??? ????
if i == 1 then
game.drop_item (30330, 1)
end
end
when 20386.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == 30330 and d.getf("level") == 15 begin -- 5?? ???? ????
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ??? ?? ????? ? ?? ????? ???? ????
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",2) -- 2? ?? ???
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2??? ?? ??? 2???? ??? ??? ?
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",3)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",4)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",5)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia.[ENTER]Destrua agora a proxima estela.")
d.setf("stonekill",6)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say("Essa foi uma escolha sabia. Destrua agora a ultima[ENTER]estela e Maat triunfara sobre Isfet.")
d.setf("stonekill",7)
if d.count_monster() < 100 then
d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
end
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline("A estela de Isfet foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
else
item.remove()
say("Ordem errada. A Pedra de Maat foi destruida.")
end
end
end
when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ??? ???? ?
notice_multiline("A Metin do purgatorio foi destruida.",d.notice)
notice_multiline("Fala com Am-heh para abrir um novo destino.",d.notice)
flame_dungeon.level_clear()
end
when 6091.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- ?? ????
notice_multiline("Razador foi destruido.",d.notice)
notice_multiline("Todos os lutadores seram teleportados[ENTER]em um minuto do Templo do Dragao.",d.notice)
timer("exit_dungeon", 60)
flame_dungeon.level_clear()
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
when exit_dungeon.timer begin
local setting = flame_dungeon.setting()
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
end
Bitte um Hilfeeeee







