define BLOCK_DOOR 20387 define DUNGEON_MAN 20385 define DUNGEON_MAN_DIR 0 define DUNGEON_MAP_INDEX 351 define ENTER_LIMIT_TIME 30 define ENTRY_MAN 20394 define ENTRY_MAP_INDEX 62 define FINAL_BOSS 6091 define LEVEL2_KEY 30329 define LEVEL2_STONE 20386 define LEVEL4_TARGET 6051 define LEVEL5_REALKEY 30330 define LEVEL5_STONE 20386 define LEVEL5_GEN_LIMIT 100 define LEVEL6_TARGET 8057 define LEVEL_CUT 100 define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/" define IN_DOOR 20388 define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt" define TICKET_GROUP 10033 define LIMITED_PASS_TICKET 71175 quest flame_dungeon begin state start begin --when ENTRY_MAN.click with pc.get_level() >= 90 begin --pc.give_item2(LIMITED_PASS_TICKET, 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 >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000 end function make_dungeon() -- ���� ����� local setting = flame_dungeon.setting() d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2]) -- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR) -- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2]) d.regen_file(NPC_REGEN_FILE_PATH) d.setf("level",0) for i=1,6 do d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, 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(IN_DOOR, 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 (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt") -- d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2]) d.spawn_mob(FINAL_BOSS,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 == DUNGEON_MAP_INDEX then pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX) elseif flame_dungeon.is_flamed(idx) then -- ���� ����, ������ ���� ���� ------------------------------------------------------------------------------------------------------------------------------------------------------ --�Ʒ��� ������ �������� ����ϸ� �������� ����������� �ٽ� ���� ��ġ�� ���ƿ´�. �Ʒ����� Ȱ��ȭ �ϸ� �������� �������� ��� ���� ������ ������ �ȴ�. --�������� �������� ��� �ٽ� ���� ��ġ�� ���ƿ� ���, �������� ������ ����� �������� �ϱ� ������ ���漺���� ������� �ɼ��� Ȱ��ȭ ����� �Ѵ�. ------------------------------------------------------------------------------------------------------------------------------------------------------ -- pc.set_warp_location(0, 0 , 0) --ƨ������ �ٽ� ���ƿ��� ����� �ִ� �κ� pc.set_warp_location(ENTRY_MAP_INDEX, 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") < ENTER_LIMIT_TIME * 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, ENTRY_MAP_INDEX) 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 ENTRY_MAN.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(ENTRY_MAN)) 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 < LEVEL_CUT then table.insert(notEnoughLevelMembers, pc.get_name()) levelCheck = false end q.end_other_pc_block() end if not ticketCheck then say_title(mob_name(ENTRY_MAN)) 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(ENTRY_MAN)) 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() - ENTER_LIMIT_TIME * 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 ENTRY_MAN.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, DUNGEON_MAP_INDEX) -- end when ENTRY_MAN.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 DUNGEON_MAN.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 DUNGEON_MAN.chat."ó������" begin -- ��Ʈ�� -- say("�ʱ�ȭ �մϴ�") -- flame_dungeon.clear_timer(d.get_map_index()) -- flame_dungeon.make_dungeon() -- end when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- ��Ʈ�� flame_dungeon.go_boss() end -- < �ð� ��� Ÿ�̸�> -- when DUNGEON_MAN.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, ENTRY_MAP_INDEX) -- 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 DUNGEON_MAN.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, ENTRY_MAP_INDEX) 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 (MOB_REGEN_FILE_PATH.."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(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ���μ� ��ȯ d.kill_unique("door2") d.kill_unique("idoor2") d.set_regen_file (MOB_REGEN_FILE_PATH.."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 (MOB_REGEN_FILE_PATH.."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 (MOB_REGEN_FILE_PATH.."fd_d.txt") d.spawn_mob(LEVEL4_TARGET,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 (MOB_REGEN_FILE_PATH.."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(LEVEL5_STONE, 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 (MOB_REGEN_FILE_PATH.."fd_f.txt") d.spawn_mob(LEVEL6_TARGET, 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(ENTRY_MAP_INDEX, 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_1", 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_2", 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 (LEVEL2_KEY, 1) end end when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY 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 LEVEL4_TARGET.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 (LEVEL5_REALKEY, 1) end end when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY 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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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() < LEVEL5_GEN_LIMIT then d.regen_file (MOB_REGEN_FILE_PATH.."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 LEVEL6_TARGET.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 FINAL_BOSS.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