Jump to content

piraka2

Inactive Member
  • Posts

    2
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by piraka2

  1. Hello everyone, I am trying all afternoon to "implement" the quest of purgatory ...
    Use the vanilla-core, I have already changed some functions such as "get_special_item_group" that the vanilla is not enabled ...
    but it still does not work now ....

    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"] = {7762, 6739},-- ´øÀü¿¡ óÀ½ µé¾î¿À´Â °÷
    		["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"] = {6142,7068}, --ÀÔÀå½ÃÄÑÁÖ´Â¾Ö ¼­ÀÖ´Â °÷
    		["YAK_pos"] = {376, 397} -- ¾àȯ ºÎÇÏ
    		
    		}
    	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.spawn_mob_ac_dir(20385, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],0)
    		-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_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 // ƨ±â¸é ÀÔÀåÁ¦Çѽð£À» ±â·Ï ¾ÈÇÔ
    	end	
    	function go_boss() -- º¸½º·ë °¡±â 
    		local setting = flame_dungeon.setting()
    		if pc.get_level() < 104 then --·¹º§È®ÀÎ
                -- syschat(gameforge.flame_dungeon._580_notice)
                say(gameforge.flame_dungeon._580_notice)
                return
    		else
    			if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- ¼±ÇàÄù½ºÆ® È®ÀÎ
    				-- say_title(gameforge.flame_dungeon._010_say)
                    say(gameforge.flame_dungeon._010_say)
    				local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
    				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(20385,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
    					d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
    				end
    			else 
                    -- syschat(gameforge.flame_dungeon._040_notice)
                    say(gameforge.flame_dungeon._040_notice)
                    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 ("killed_A_1", inx)
    		clear_server_timer ("killed_A_2", 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(0, 0 , 0) --ƨ°åÀ»¶§ ´Ù½Ã µ¹¾Æ¿À°Ô ¸¸µé¾î ÁÖ´Â ºÎºÐ
    				pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ´øÀü ³ª°¬À» ¶§ ¹ÛÀ¸·Î ƨ±â°ÔÇÔ
    				local ticketGroup = {71095, 1, 71130, 1}
    				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(gameforge.flame_dungeon._050_notice,d.notice)
    						say(gameforge.flame_dungeon._060_say)
    						timer("flame_dungeon_warp_timer", 5)
    					elseif not canPass then
    						notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
    						say(gameforge.flame_dungeon._080_say)
    						timer("flame_dungeon_warp_timer", 5)
    					elseif pc.get_level() < 100 then
    						notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
    						say(gameforge.flame_dungeon._100_say)
    						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_time()) -- ÀνºÅϽº ¾È¿¡¼­ÀÇ ¸¶Áö¸· ½Ã°£À» ±â·Ï, ±Ùµ¥ ½Ã°£Á¦ÇÑ ¶§¹®¿¡ or ±×³É ƨ±ä°Å¸é ¾È±â·Ï
    				end
    				
    
    			end
    		end
    		when 20394.chat.gameforge.flame_dungeon._110_npcChat 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(gameforge.flame_dungeon._590_say)
    					end
    				else
    					local pids = {party.get_member_pids()}
    					local noTicketMembers = {}
    					local notEnoughLevelMembers = {}
    					local ticketCheck = true
    					local levelCheck = true
    					local ticketGroup = {71095, 1, 71130, 1}
    					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(gameforge.flame_dungeon._610_say)
    						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(gameforge.flame_dungeon._630_say)
    						for i, name in next, notEnoughLevelMembers, nil do
    							say(color(1,1,0), "    "..name)
    						end
    						return
    					end
    
    					if party.is_leader() then
    						say(gameforge.flame_dungeon._120_say)
    						local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
    						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("test : ÆÄƼ¿øÀÇ ÀÔÀå Á¦Çѽð£ÀÌ ³¡³ªÁö ¾Ê¾Ò½À´Ï´Ù.")
    								say(gameforge.flame_dungeon._600_say)
    							end
    						end
    						
    						party.setf("flame_dungeon_boss_kill_count", 0)
    						
    					else
    						say(gameforge.flame_dungeon._150_say)
    					end
    				end
    			else
    				say(gameforge.flame_dungeon._160_say)
    			end
    		end
    		-- when 20394.chat."Test : ¸®¼Ò½ºÈ®ÀÎ" with is_test_server() 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 is_test_server() begin -- Å×½ºÆ®¿ë
    			pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
    			say("Done")
    		end
    		-- when 20385.chat."Test : ÇöÀç »óÅÂ" with is_test_server() begin -- Å×½ºÆ®¿ë
    			-- say("³²Àº ¸ó½ºÅÍ : "..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."óÀ½À¸·Î" begin -- Å×½ºÆ®¿ë
    			-- say("ÃʱâÈ­ ÇÕ´Ï´Ù")
    			-- flame_dungeon.clear_timer(d.get_map_index())
    			-- flame_dungeon.make_dungeon()
    		-- end
    		when 20385.chat."Test : Boss Room" with is_test_server() begin -- Å×½ºÆ®¿ë
    			flame_dungeon.go_boss()
    		end
    		
    		-- < ½Ã°£ °æ°ú ŸÀ̸Ó>
    		-- when 20385.chat."³ª°¡±â" begin -- ´øÀü¿¡¼­ ƨ±âÁö ¾Ê°Ô ÇÒ °æ¿ì È°¼ºÈ­
    			-- local setting = flame_dungeon.setting()
    			-- say("¹ÛÀ¸·Î ³ª°¡½Ã°Ú½À´Ï±î?")
    			-- local warp = select("È®ÀÎ","Ãë¼Ò")
    			-- 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.server_timer begin
    			if d.select(get_server_timer_arg()) then
    				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
    			end
    		end
    		when flame_dungeon_30m_left_timer.server_timer begin
    			if d.select(get_server_timer_arg()) then
    				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
    			end
    		end
    		when flame_dungeon_15m_left_timer.server_timer begin
    			if d.select(get_server_timer_arg()) then
    				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
    			end
    		end
    		when flame_dungeon_5m_left_timer.server_timer begin
    			if d.select(get_server_timer_arg()) then
    				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
    			end
    		end
    		when flame_dungeon_1m_left_timer.server_timer begin
    			if d.select(get_server_timer_arg()) then
    				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
    			end
    		end
    		when flame_dungeon_0m_left_timer.server_timer begin
    			local setting = flame_dungeon.setting()
    			if d.select(get_server_timer_arg()) then		
    				notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
    				notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
    				server_timer("dungeon_end_timer",10,d.get_map_index())	
    			end
    		end	
    
    
    		-- <<<< ´øÀü ÁøÇà>>>> --
    		when 20385.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'´Â x¹ø° ·¹º§ Äù½ºÆ® ¹ÞÀ» ¼ö ÀÖ´Â »óÅ , '1x'´Â x¹ø° ·¹º§ Äù½ºÆ® ÁøÇàÁß
    			local setting = flame_dungeon.setting()
    			if d.getf("started") == 0 then
    				say(gameforge.flame_dungeon._230_say)
    				say(gameforge.flame_dungeon._240_say)
    				wait()
    				d.setf("started",1)
    				-- ÆÄƼ¿øÀÌ Æ¨°Ü¹ö·È´Âµ¥ Àڱ⸸ ³²¾Æ¼­ exit timer°¡ ¸®¼ÂµÇ¸é ¾ÈµÇ´Ï±ñ ´ÙÀ½·¹º§À» ´­·¶À»¶§¸¦ ½ÃÀÛÇÒ¶§·Î º½
    				server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
    				notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
    				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
    				
    				-- ÅëÇàÁõ °ü·ÃµÈ ó¸®
    				-- ÀÔÀå ÈÄ¿¡ ƼÄÏÀ» ¾ø¾Ø »ç¶÷À» ƨ°Ü³»±â À§Çؼ­ ŸÀ̸Ӹ¦ ÀÌ¿ëÇØ Æ¼ÄÏÀ» Á¦°ÅÇÑ´Ù.
    				local pids = {party.get_member_pids()}
    				local ticketGroup = {71095, 1, 71130, 1}
    				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(gameforge.flame_dungeon._260_say)
    					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
    					d.kill_unique("door1")
    					d.kill_unique("idoor1")
    					d.setf("level",11)
    					d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
    						
    					server_timer ("killed_A_1", 12, d.get_map_index())
    				elseif d.getf("level") == 11 then
    					say(gameforge.flame_dungeon._270_say)
    					say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
    				elseif d.getf("level") == 2 then
    						say(gameforge.flame_dungeon._290_say)
    						say(gameforge.flame_dungeon._300_say)
    						notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
    						notice_multiline(gameforge.flame_dungeon._300_say,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(gameforge.flame_dungeon._310_say)
    				elseif d.getf("level") == 3 then
    					say(gameforge.flame_dungeon._260_say)
    					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
    					d.kill_unique("door3")
    					d.kill_unique("idoor3")
    					d.setf("level",13)
    					d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
    					server_timer ("killed_A_1", 12, d.get_map_index())
    				elseif d.getf("level") == 13 then
    					say(gameforge.flame_dungeon._270_say)
    					say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
    				elseif d.getf("level") == 4 then -- 474 178
    					say(gameforge.flame_dungeon._320_notice)
    					notice_multiline(gameforge.flame_dungeon._320_notice,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(gameforge.flame_dungeon._330_say)
    					say(gameforge.flame_dungeon._340_say)
    				elseif d.getf("level") == 5 then -- 510 355
    					say(gameforge.flame_dungeon._350_say)
    					say(gameforge.flame_dungeon._360_say)
    					notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
    					notice_multiline(gameforge.flame_dungeon._360_say,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(gameforge.flame_dungeon._370_say)
    				elseif d.getf("level") == 6 then -- 507 490
    					say(gameforge.flame_dungeon._380_say) 
    					notice_multiline(gameforge.flame_dungeon._380_say,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(gameforge.flame_dungeon._390_say)
    					say(gameforge.flame_dungeon._400_say)
    				elseif d.getf("level") == 7 then
    					-- setskin(NOWINDOW)
                        flame_dungeon.go_boss()
    				else
    					say(gameforge.flame_dungeon._410_say)
    				end
    			npc.unlock()		
    		end
    	
    
    
    		when dungeon_end_timer.server_timer begin -- Á¾·á ŸÀÌ¸Ó (³¡³ª°í ³ª°¡´Â°Å)
    			local setting = flame_dungeon.setting()
    			if d.select(get_server_timer_arg()) then
    				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
    
    		when killed_A_1.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â1 (level1,level3)
    			if d.select(get_server_timer_arg()) then
    				if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
    					if d.getf("level") == 11 then
    						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
    						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    					else
    						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
    						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    					end
    					d.setf("level",0)
    				else 
    					server_timer ("killed_A_2", 6, get_server_timer_arg())
    				end
    			end
    		end
    		when killed_A_2.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â2 (1°ú 2 ¹ø°¥¾Æ°¡¸é¼­ µ¹¾Æ°¨)
    			if d.select(get_server_timer_arg()) then
    				if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
    					if d.getf("level") == 11 then
    						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
    						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    					else
    						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
    						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    					end
    					d.setf("level",0)
    				else 
    					server_timer ("killed_A_1", 6, get_server_timer_arg())
    				end
    			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(gameforge.flame_dungeon._440_notice,d.notice)
    				notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    				flame_dungeon.level_clear()
    			else
    				item.remove()
    				say(gameforge.flame_dungeon._450_say)
    			end
    		end
    
    		when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
    			notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
    			notice_multiline(gameforge.flame_dungeon._430_notice,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(gameforge.flame_dungeon._470_say)
    				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(gameforge.flame_dungeon._480_say)
    					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(gameforge.flame_dungeon._490_say)
    			--		say("2¹ø")
    				end
    			elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
    				if d.getf("stonekill") == 3 then
    					npc.purge()
    					item.remove()
    					say(gameforge.flame_dungeon._500_say)
    					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(gameforge.flame_dungeon._490_say)
    			--		say("3¹ø")
    				end
    			elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
    				if d.getf("stonekill") == 4 then
    					npc.purge()
    					item.remove()
    					say(gameforge.flame_dungeon._510_say)
    					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(gameforge.flame_dungeon._490_say)
    				--	say("4¹ø")
    				end
    			elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
    				if d.getf("stonekill") == 5 then
    					npc.purge()
    					item.remove()
    					say(gameforge.flame_dungeon._520_say)
    					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(gameforge.flame_dungeon._490_say)
    			--		say("5¹ø")
    				end
    			elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
    				if d.getf("stonekill") == 6 then
    					npc.purge()
    					item.remove()
    					say(gameforge.flame_dungeon._530_say)
    					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(gameforge.flame_dungeon._490_say)
    			--		say("6¹ø")
    				end
    			else 
    				if d.getf("stonekill") == 7 then
    					npc.purge()
    					item.remove()
    					notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
    					notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
    					flame_dungeon.level_clear()
    				else
    					item.remove()
    					say(gameforge.flame_dungeon._490_say)
    			--		say("7¹ø")
    				end
    			end
    		end
    
    		when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ¸Á¸¶¼® Æı«ÇßÀ» ¶§
    			notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
    			notice_multiline(gameforge.flame_dungeon._430_notice,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(gameforge.flame_dungeon._550_notice,d.notice)
    			notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
    			server_timer("dungeon_end_timer", 60,d.get_map_index())	
    			flame_dungeon.level_clear()
    			
    			-- ÆÄƼ¿ø Áß, ¾ß¸¶Ãµ Àâ´Â Äù½ºÆ®(104·¾, 105·¾ Äù½ºÆ®) ÁøÇàÁßÀÎ »ç¶÷ÀÌ ÀÖÀ¸¸é Äù½ºÆ® Ŭ¸®¾î µÇµµ·Ï.
    			if party.is_party() then
    				party.setf("flame_dungeon_boss_kill_count", 1)
    			end
    			
    		end
    	end
    end
    

×
×
  • 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.