Jump to content

[QUEST]Blazing Purgatory


Go to solution Solved by Lorthir,

Recommended Posts

  • Premium

Hi I've an error!

 

When I enter in BP, and click on the NPC (inse) the mobs wont show!

 

Anyone knows why?

quest blazingpurgatory begin
    state start begin
        
        when 20351.chat."Os Portões do Purgatório Ardente" with pc.get_map_index() == 62 begin
            say_title("Guarda da Arena")
			say("")
            say("O Deus de todos os demónios, Sung Mahi, é despertado!")
            say("O fim da humanidade aproxima-se...")
			say("")
            say("No entanto, o seu poder vê-se enfraquecido!")			
            say("Mas isso é apenas uma questão de tempo...")
			say("")
            say("Os seus súbditos não vão descansar até que")
            say("que o seu mestre desperte novamente.")                        
            wait()
            say_title("Guarda da Arena")
            say("")
            say("Razador, o Demónio do Fogo, e seu mais fiel seguidor")
            say("a quem foi confiada a tarefa de libertar o lendário")
            say("Dragão do Fogo, está agora no contra-ataque.")           
            say("")
            wait()
            say_title("Guarda da Arena")
            if pc.get_level() >= 100 or pc.is_gm() then
                if party.is_party() or pc.is_gm()  then
                    if party.is_leader() or pc.is_gm() then
                        if pc.count_item(30189) > 0 or pc.is_gm() then
                            say_reward("Queres mesmo desafiar o Razador e os seus seguidores?")
                            if select("Sim, para a batalha!","Não") == 1 then
                                pc.remove_item(30189,1)
                                d.join(235)
                            end
                        else
                            say_reward("Precisas de Lágrimas do Deus Dragão!")
                            say_item_vnum(30189)
                        end
                    else
                        say_reward("Tens de liderar um grupo para accionares!")
                    end
                else
                    say_reward("Tens de pertencer a um grupo para entrares!")
                end
            else
                say_reward("Tens de ser nível igual ou superior a 100!")
            end
        end

        when login with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            say("Dirige-te ao altar, e lá encontrarás")
            say("as tarefas do inferno!")
            say("")
            if party.is_party() then
                if party.is_leader() then
                    blazingpurgatory.start()
                end
            else
                if pc.is_gm() then
                    blazingpurgatory.start()
                end
            end
        end
        
        function start()
            d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
            d.setf("purgatory_gate_sequence",number(1,7))
            local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
            for i = 1, 6 do
                d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
            end
            d.setf("acutal_round",0)
            d.setf("time", get_time()+60*60*1)
            server_timer("purgatorytime",3600,pc.get_map_index())
            server_loop_timer("purgatorytimenotice",300,pc.get_map_index())
            blazingpurgatory.NoticeTime()
        end            
        
        when purgatorytimenotice.server_timer begin
            if d.select(get_server_timer_arg()) then
                blazingpurgatory.NoticeTime()
            end
        end

        when purgatorytime.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("O tempo acabou!")
                d.exit_all()
            end
        end
        
        when 20385.click with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 and d.getf("block_altar") == 0 begin
            if d.getf("purgatory_level") == 7 then
                d.setf("block_altar",1)
                d.setf("actual_round",7)
                d.notice(",")
                d.notice("Terminaste todas as tarefas do purgatório! Agora irás defrontar o Razador!")
                timer("warp_to_boss",5)
            else
                    
                d.setf("purgatory_level",d.getf("purgatory_level")+1)
                blazingpurgatory.purge()
                blazingpurgatory.LoadStage()
                d.setf("block_altar",1)
                
                blazingpurgatory.NoticeTime()
                d.notice("A câmara foi aberta!")
            end
        end

        when warp_to_boss.timer begin
            d.jump_all(8111,6864)
            d.notice("Razador")
            d.notice("Resistir é inútil! O Sung Mahi ressurgirá novamente!")
            d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_7.txt")
            blazingpurgatory.NoticeTime()
        end    
        
        when kill with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            if d.getf("actual_round") == 1 or d.getf("actual_round") == 3 then
                d.setf("kill_count_bp1",d.getf("kill_count_bp1") +1)
                if d.getf("kill_count_bp1") == d.getf("bp_kill_to_next") then
                    d.notice("Regressa ao altar!")
                    blazingpurgatory.purge()
                end
            elseif d.getf("actual_round") == 2 or d.getf("actual_round") == 5 then
                d.setf("kill_count_bp",d.getf("kill_count_bp") +1)
                if d.getf("kill_count_bp") == d.getf("kill_to_drop_key") then
                    game.drop_item_with_ownership(50084,1)
                    d.setf("kill_count_bp",0)
                end
            elseif d.getf("actual_round") == 4 and npc.get_race() == 6009 then
                if number(1,5) == 1 then
                    d.notice("Regressa ao altar!")
                    blazingpurgatory.purge()
                end
            elseif d.getf("actual_round") == 6 and npc.get_race() == 8034 then
                d.notice("Regressa ao altar!")
                blazingpurgatory.purge()    
            elseif d.getf("actual_round") == 7 and npc.get_race() == 6091 then
                d.notice("O Razador foi derrotado!")
                d.clear_regen()
                d.kill_all()
            end
        end

        when 20081.take with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
            if item.get_vnum() == 50084 then
                if d.getf("actual_round") == 2 then
                    pc.remove_item(item.get_vnum(),1)
                    if number(1,8) == 1 then
                        npc.purge()
                        d.notice("Regressa ao altar!")
                        blazingpurgatory.purge()
                    else
                        syschat("Esta Pedra-Chave está errada!")
                    end
                elseif d.getf("actual_round") == 5 then
                    local sequence = {{1,2,3,4,5,5},{4,3,2,1,5,5},{4,5,3,1,2,2},{5,3,4,2,1,1},{5,1,3,4,2,2}}
                    if blazingpurgatory.GetPillarID() == sequence[d.getf("sequence")][d.getf("pillarcount")] then
                        pc.remove_item(item.get_vnum(),1)
                        npc.purge()
                        d.setf("pillarcount", d.getf("pillarcount")+1)
                        if d.getf("pillarcount") == 6 then
                            d.notice("Regressa ao altar!")
                            blazingpurgatory.purge()
                        else
                            d.notice("Ainda tens que abrir "..6-d.getf("pillarcount").." Selo(s)!")
                        end
                    elseif blazingpurgatory.GetPillarID() == false then
                        syschat("Aumenta (usando Zoom) para veres de mais perto o Selo!")
                    elseif blazingpurgatory.GetPillarID() != sequence[d.getf("sequence")][d.getf("pillarcount")] then
                        pc.remove_item(item.get_vnum(),1)
                        syschat("Este não é o Selo da direita!")
                    end
                end
            end
        end
                    
        function LoadStage()
            if d.getf("actual_round") == 1 then -- Alle Monster tötenw
                d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_1.txt")
                d.setf("bp_kill_to_next",241)
                d.setf("kill_count_bp1",0)
            elseif d.getf("actual_round") == 2 then
                d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_2.txt")
                d.setf("kill_to_drop_key",50)
                d.spawn_mob(20081,195,352)
            elseif d.getf("actual_round") == 3 then
                d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_3.txt")
                d.setf("bp_kill_to_next",240)
                d.setf("kill_count_bp1",0)
            elseif d.getf("actual_round") == 4 then
                d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_4.txt")
            elseif d.getf("actual_round") == 5 then
                d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_5.txt")
                local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}}
                local n = number(1,5)
                local coords = {{502,354},{517,354},{487,354},{502,339},{502,369}}
                for i = 1, 5 do
                    d.spawn_mob(20081, coords[i][1],coords[i][2])
                end
                d.setf("pillarcount", 1)
                d.setf("sequence",n)
                d.setf("kill_to_drop_key",100)
            elseif d.getf("actual_round") == 6 then
                d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_6.txt")
                d.spawn_mob(8034,507,489)
            end
        end    

        function purge()
            d.setf("block_altar",0)
            d.clear_regen()
            d.kill_all()
            blazingpurgatory.LoadGates()
            d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
            if d.getf("purgatory_level") == 6 then
                d.setf("purgatory_level",7)
            end
        end        

        function LoadGates()
            local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
            for i = 1, 6-d.getf("purgatory_level") do
                d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
            end
            d.setf("actual_round",sequence[d.getf("purgatory_gate_sequence")][7-d.getf("purgatory_level")])
        end        
        
        function NoticeTime()
            local secondsLeft = (d.getf("time") - get_time())
            local minutesLeft = math.ceil(secondsLeft / 60)
            d.notice("Tempo restante: "..minutesLeft.." Minutos!")
        end

        function GetPillarID()
            if pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
                return 1
            elseif pc.get_local_x() >= 517 - 5 and pc.get_local_x() <= 517 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
                return 2
            elseif pc.get_local_x() >= 487 - 5 and pc.get_local_x() <= 487 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
                return 3
            elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 339 - 5 and pc.get_local_y() <= 339 + 5 then
                return 4
            elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 369 - 5 and pc.get_local_y() <= 369 + 5 then
                return 5
            else
                return false
            end
        end
    
    end
end
Link to comment
Share on other sites

  • Replies 4
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Similar Content

  • Activity

    1. 13

      Metin2 Closed Beta Content (2003-2004)

    2. 25

      [SRC] Metin2 on LINUX - The Old Metin2 Project

    3. 2

      United/Club/Midgard serverfiles?

    4. 13

      Metin2 Closed Beta Content (2003-2004)

    5. 13

      Metin2 Closed Beta Content (2003-2004)

  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.