Advertisement
Guest User

Quest.

a guest
Jun 21st, 2014
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 28.62 KB | None | 0 0
  1. quest flame_dungeon begin
  2.     state start begin  
  3.         when 20394.click with pc.get_level() >= 90 begin
  4.             pc.give_item2(71175, 1)
  5.             set_state(run)
  6.         end
  7.     end
  8.  
  9.     state run begin
  10.    
  11.     function setting()
  12.         return
  13.         {
  14.         ["bossroom_entry_pos"] = {8109,6867},
  15.         ["boss_pos"] = {686,637},
  16.         ["doors_pos"] = {
  17.             {320,394},
  18.             {293,359},
  19.             {333,321},
  20.             {378,320},
  21.             {400,355},
  22.             {394,401}
  23.         },
  24.         ["idoors_pos"] = {
  25.             {268,447},
  26.             {234,359},
  27.             {300,264},
  28.             {454,217},
  29.             {470,355},
  30.             {467,469}
  31.         },
  32.         ["doors_dir"] = {135,90,210,152,90,223},
  33.         ["idoors_dir"] = {135,90,210,135,90,239},
  34.         ["dungeon_entry_pos"] = {7762, 6739},-- ´øÀü¿¡ óÀ½ µé¾î¿À´Â °÷
  35.         ["DUNGEON_MAN_bpos"] = {690,722},
  36.         ["DUNGEON_MAN_pos"] = {354,362},
  37.         ["LEVEL2_STONE_pos"] = {195,352},
  38.         ["LEVEL4_TARGET_pos"] = {470,175},
  39.         ["LEVEL5_STONE_pos"] = {
  40.                 {486, 345},
  41.                 {511, 336},
  42.                 {525, 349},
  43.                 {521, 365},
  44.                 {503, 372},
  45.                 {486, 365},
  46.                 {500, 354}
  47.         },
  48.         ["LEVEL6_TARGET_pos"] = {511,480},
  49.         ["outside_entry_pos"] = {6142,7068}, --ÀÔÀå½ÃÄÑÁÖ´Â¾Ö ¼­ÀÖ´Â °÷
  50.         ["YAK_pos"] = {376, 397} -- ¾àȯ ºÎÇÏ
  51.        
  52.         }
  53.     end
  54.     function is_flamed(idx) -- Àû·æ¼º¿¡ ÀÖ´ÂÁö È®ÀÎ
  55.         return idx >= 351 * 10000 and idx < (351 + 1) *10000
  56.     end
  57.     function make_dungeon() -- ´øÀü ¸¸µé±â
  58.         local setting = flame_dungeon.setting()
  59.         d.new_jump_party(351, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
  60.         -- d.spawn_mob_ac_dir(20385, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],0)
  61.         -- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
  62.         d.regen_file("data/dungeon/flame_dungeon/npc.txt")
  63.         d.setf("level",0)
  64.         for i=1,6 do
  65.             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]))
  66.         end
  67.         for i=1,6 do
  68.             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]))
  69.         end
  70.         d.setf("clear_count",0)
  71.         d.setf("started",0)
  72.         d.setf("dungeon_enter",0) -- Á¤»óÀûÀ¸·Î ÀÔÀåÇß´ÂÁö? // ºñÁ¤»ó : 0 Á¤»ó : 1 // ƨ±â¸é ÀÔÀåÁ¦Çѽð£À» ±â·Ï ¾ÈÇÔ
  73.     end
  74.     function go_boss() -- º¸½º·ë °¡±â
  75.         local setting = flame_dungeon.setting()
  76.         if pc.get_level() < 104 then --·¹º§È®ÀÎ
  77.             -- syschat(gameforge.flame_dungeon._580_notice)
  78.             say(gameforge.flame_dungeon._580_notice)
  79.             return
  80.         else
  81.             if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- ¼±ÇàÄù½ºÆ® È®ÀÎ
  82.                 -- say_title(gameforge.flame_dungeon._010_say)
  83.                 say(gameforge.flame_dungeon._010_say)
  84.                 local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
  85.                 if warp == 1 then
  86.                     d.setf("level",17)
  87.                     d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
  88.                     d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_fild_boss.txt")
  89.                 --  d.spawn_mob(20385,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
  90.                     d.spawn_mob(6091,setting.boss_pos[1],setting.boss_pos[2])
  91.                 end
  92.             else
  93.                 -- syschat(gameforge.flame_dungeon._040_notice)
  94.                 say(gameforge.flame_dungeon._040_notice)
  95.                 return
  96.             end
  97.         end
  98.     end
  99.     function level_clear() -- ·¹º§ ²£À»¶§, ¸®Á¨Å¬¸®¾î, Áö¿ªÅ¬¸®¾î
  100.         d.setf("level",0)
  101.         d.clear_regen()
  102.         d.purge_area(750000,620000,817400,689400) -- ¸ÊÀüü -- d.purge() »ç¿ë°í·Á
  103.     end
  104.     function clear_timer(inx) -- ŸÀÌ¸Ó ´ÙÁö¿ì±â
  105.         clear_server_timer ("flame_dungeon_0m_left_timer", inx)
  106.         clear_server_timer ("flame_dungeon_1m_left_timer", inx)
  107.         clear_server_timer ("flame_dungeon_5m_left_timer", inx)
  108.         clear_server_timer ("flame_dungeon_10m_left_timer", inx)
  109.         clear_server_timer ("flame_dungeon_15m_left_timer", inx)
  110.         clear_server_timer ("flame_dungeon_30m_left_timer", inx)
  111.         clear_server_timer ("flame_dungeon_45m_left_timer", inx)
  112.         clear_server_timer ("killed_A_1", inx)
  113.         clear_server_timer ("killed_A_2", inx)
  114.         clear_server_timer ("flame_dungeon_ticket_remove", inx)
  115.     end
  116.    
  117.         when login begin
  118.             local idx = pc.get_map_index()
  119.             local setting = flame_dungeon.setting()
  120.             if idx == 351 then
  121.                 pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
  122.             elseif flame_dungeon.is_flamed(idx) then -- ´øÀü ÀÔÀå, º¸½º·ë ÀÔÀå ¿¹¿Ü
  123.             ------------------------------------------------------------------------------------------------------------------------------------------------------
  124.             --¾Æ·¡ÀÇ µÎÁÙÁß À§¿¡ÁÙÀ» »ç¿ëÇÏ¸é ´øÀü¿¡¼­ Á¾·áÇßÀ»°æ¿ì ´Ù½Ã ¿ø·¡ À§Ä¡·Î µ¹¾Æ¿Â´Ù. ¾Æ·¡ÁÙÀ» È°¼ºÈ­ ÇÏ¸é ´øÀü¿¡¼­ Á¾·áÇßÀ» °æ¿ì ´øÀü ¹ÛÀ¸·Î ³ª°¡°Ô µÈ´Ù.
  125.             --´øÀü¿¡¼­ Á¾·áÇßÀ» °æ¿ì ´Ù½Ã ¿ø·¡ À§Ä¡·Î µ¹¾Æ¿Ã °æ¿ì, ´øÀü¿¡¼­ ³ª°¡´Â ¹æ¹ýÀ» ¸¸µé¾îÁà¾ß Çϱ⠶§¹®¿¡ Àû·æ¼ººñÀÇ ³ª°¡±â¶õ ¿É¼ÇÀ» È°¼ºÈ­ ÇØÁà¾ß ÇÑ´Ù.
  126.             ------------------------------------------------------------------------------------------------------------------------------------------------------
  127.                 -- pc.set_warp_location(0, 0 , 0) --ƨ°åÀ»¶§ ´Ù½Ã µ¹¾Æ¿À°Ô ¸¸µé¾î ÁÖ´Â ºÎºÐ
  128.                 pc.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ´øÀü ³ª°¬À» ¶§ ¹ÛÀ¸·Î ƨ±â°ÔÇÔ
  129.                 local ticketGroup = {get_special_item_group (10033)}
  130.                 if d.getf("dungeon_enter") == 0 then -- ÁøÇàÁßÀÌ ¾Æ´Ï¸é
  131.                     local canPass = false
  132.                     for i=1, table.getn(ticketGroup),2 do
  133.                         if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
  134.                             canPass = true
  135.                             break
  136.                         end
  137.                     end
  138.  
  139.                     if get_global_time() - pc.getf("flame_dungeon","exit_time") < 30 * 60 then -- ÀÔÀåÁ¦Çѽð£ÀÌ °É·ÈÀ¸¸é
  140.                         notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
  141.                         say(gameforge.flame_dungeon._060_say)
  142.                         timer("flame_dungeon_warp_timer", 5)
  143.                     elseif not canPass then
  144.                         notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
  145.                         say(gameforge.flame_dungeon._080_say)
  146.                         timer("flame_dungeon_warp_timer", 5)
  147.                     elseif pc.get_level() < 100 then
  148.                         notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
  149.                         say(gameforge.flame_dungeon._100_say)
  150.                         timer("flame_dungeon_warp_timer", 5)
  151.                     end
  152.                 elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ÁøÇàÁßÀε¥ ƼÄÏÀÌ ¾ÈÁö¿öÁ³À»°æ¿ì
  153.                    
  154.                     for i=1, table.getn(ticketGroup),2 do
  155.                         if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
  156.                             pc.remove_item(ticketGroup[i], ticketGroup[i+1])
  157.                             break
  158.                         end
  159.                     end
  160.                     pc.setf("flame_dungeon","ticket_delete",1)
  161.                 end
  162.             else
  163.                 pc.setf("flame_dungeon","ticket_delete",0)
  164.             end
  165.         end
  166.         when flame_dungeon_warp_timer.timer begin
  167.             local setting = flame_dungeon.setting()
  168.             pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
  169.         end
  170.         when logout begin
  171.             local idx = pc.get_map_index()
  172.             if flame_dungeon.is_flamed(idx) then
  173.                 if d.getf("dungeon_enter") == 1 then -- Á¤»óÀûÀÎ ´øÀü ÀÔÀå ÈÄ ·Î±×¾Æ¿ô
  174.                     pc.setf("flame_dungeon","exit_time",get_global_time()) -- ÀνºÅϽº ¾È¿¡¼­ÀÇ ¸¶Áö¸· ½Ã°£À» ±â·Ï, ±Ùµ¥ ½Ã°£Á¦ÇÑ ¶§¹®¿¡ or ±×³É ƨ±ä°Å¸é ¾È±â·Ï
  175.                 end
  176.                
  177.  
  178.             end
  179.         end
  180.         when 20394.chat.gameforge.flame_dungeon._110_npcChat begin
  181.        
  182.             local setting = flame_dungeon.setting()
  183.             if party.is_party() then
  184.                 -- ´øÀü µµÁß ³ª°¥ °æ¿ì ÀçÀÔÀå °¡´ÉÇϵµ·Ï
  185.                 local party_check = 0
  186.                 if d.find(party.getf("dungeon_index")) then
  187.                     party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
  188.                 end
  189.                
  190.                 if d.find(party.getf("dungeon_index")) and party_check then
  191.                     if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- Á¢Á¾ ÀÌÈÄ 5ºÐ ³»?
  192.                         local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
  193.                         if dungeon_level == 17 then -- º¸½º
  194.                             pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
  195.                         else
  196.                             pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
  197.                         end
  198.                     else -- 5ºÐ ÃÊ°úÇÏ¿© Àç ÀÔÀå ºÒ°¡
  199.                         say_title(mob_name(20394))
  200.                         say(gameforge.flame_dungeon._590_say)
  201.                     end
  202.                 else
  203.                     local pids = {party.get_member_pids()}
  204.                     local noTicketMembers = {}
  205.                     local notEnoughLevelMembers = {}
  206.                     local ticketCheck = true
  207.                     local levelCheck = true
  208.                     local ticketGroup = {get_special_item_group (10033)}
  209.                     for i, pid in next, pids, nil do
  210.                         q.begin_other_pc_block(pid)
  211.                         local canPass = false
  212.                         for idx=1, table.getn(ticketGroup),2 do
  213.                             if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
  214.                                 canPass = true
  215.                                 break
  216.                             end
  217.                         end
  218.                        
  219.                         if not canPass then
  220.                             table.insert(noTicketMembers, pc.get_name())
  221.                             ticketCheck = false
  222.                         end
  223.                         if pc.level < 100 then
  224.                             table.insert(notEnoughLevelMembers, pc.get_name())
  225.                             levelCheck = false
  226.                         end
  227.                         q.end_other_pc_block()
  228.                     end
  229.  
  230.                     if not ticketCheck then
  231.                         say_title(mob_name(20394))
  232.                         say(gameforge.flame_dungeon._610_say)
  233.                         for i, name in next, noTicketMembers, nil do
  234.                             say(color(1,1,0), "    "..name)
  235.                         end
  236.                         if levelCheck then
  237.                             return
  238.                         else
  239.                             wait()
  240.                         end
  241.                     end
  242.  
  243.                     if not levelCheck then
  244.                         say_title(mob_name(20394))
  245.                         say(gameforge.flame_dungeon._630_say)
  246.                         for i, name in next, notEnoughLevelMembers, nil do
  247.                             say(color(1,1,0), "    "..name)
  248.                         end
  249.                         return
  250.                     end
  251.  
  252.                     if party.is_leader() then
  253.                         say(gameforge.flame_dungeon._120_say)
  254.                         local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
  255.                         if warp == 1 then
  256.                             if party.is_map_member_flag_lt("exit_time", get_global_time() - 30 * 60 ) then
  257.                                 flame_dungeon.make_dungeon()
  258.                             else
  259.                                 --say("test : ÆÄƼ¿øÀÇ ÀÔÀå Á¦Çѽð£ÀÌ ³¡³ªÁö ¾Ê¾Ò½À´Ï´Ù.")
  260.                                 say(gameforge.flame_dungeon._600_say)
  261.                             end
  262.                         end
  263.                        
  264.                         party.setf("flame_dungeon_boss_kill_count", 0)
  265.                        
  266.                     else
  267.                         say(gameforge.flame_dungeon._150_say)
  268.                     end
  269.                 end
  270.             else
  271.                 say(gameforge.flame_dungeon._160_say)
  272.             end
  273.         end
  274.         -- when 20394.chat."Test : ¸®¼Ò½ºÈ®ÀÎ" with is_test_server() begin -- Å×½ºÆ®¿ë
  275.             -- local setting = flame_dungeon.setting()
  276.             -- pc.setf("flame_dungeon","fdRtest",1)
  277.             -- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, 351)
  278.         -- end
  279.        
  280.        
  281.         when 20394.chat."TEST : Init time limit init" with is_test_server() begin -- Å×½ºÆ®¿ë
  282.             pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
  283.             say("Done")
  284.         end
  285.         -- when 20385.chat."Test : ÇöÀç »óÅÂ" with is_test_server() begin -- Å×½ºÆ®¿ë
  286.             -- say("³²Àº ¸ó½ºÅÍ : "..d.count_monster())
  287.             -- say("level : "..d.getf("level"))
  288.             -- say("Dmap index : "..d.get_map_index())
  289.             -- say("Pmap index : "..pc.get_map_index())
  290.             -- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
  291.             -- say("global time : "..get_global_time())
  292.             -- if flame_dungeon.is_flamed(d.get_map_index()) then
  293.                 -- say("in dungeon") -- is_flamed ÇÔ¼ö üũ
  294.             -- end
  295.             -- if d.is_unique_dead("stone1") then
  296.                 -- say("stone1 is dead")
  297.             -- else
  298.                 -- say("stone1 is not dead")
  299.             -- end
  300.         -- end
  301.         -- when 20385.chat."óÀ½À¸·Î" begin -- Å×½ºÆ®¿ë
  302.             -- say("ÃʱâÈ­ ÇÕ´Ï´Ù")
  303.             -- flame_dungeon.clear_timer(d.get_map_index())
  304.             -- flame_dungeon.make_dungeon()
  305.         -- end
  306.         when 20385.chat."Test : Boss Room" with is_test_server() begin -- Å×½ºÆ®¿ë
  307.             flame_dungeon.go_boss()
  308.         end
  309.        
  310.         -- < ½Ã°£ °æ°ú ŸÀ̸Ó>
  311.         -- when 20385.chat."³ª°¡±â" begin -- ´øÀü¿¡¼­ ƨ±âÁö ¾Ê°Ô ÇÒ °æ¿ì È°¼ºÈ­
  312.             -- local setting = flame_dungeon.setting()
  313.             -- say("¹ÛÀ¸·Î ³ª°¡½Ã°Ú½À´Ï±î?")
  314.             -- local warp = select("È®ÀÎ","Ãë¼Ò")
  315.             -- if warp == 1 then
  316.                 -- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
  317.             -- end
  318.         -- end
  319.         when flame_dungeon_45m_left_timer.server_timer begin
  320.             if d.select(get_server_timer_arg()) then
  321.                 notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
  322.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  323.                 server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
  324.             end
  325.         end
  326.         when flame_dungeon_30m_left_timer.server_timer begin
  327.             if d.select(get_server_timer_arg()) then
  328.                 notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
  329.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  330.                 server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
  331.             end
  332.         end
  333.         when flame_dungeon_15m_left_timer.server_timer begin
  334.             if d.select(get_server_timer_arg()) then
  335.                 notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
  336.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  337.                 server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
  338.             end
  339.         end
  340.         when flame_dungeon_5m_left_timer.server_timer begin
  341.             if d.select(get_server_timer_arg()) then
  342.                 notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
  343.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  344.                 server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
  345.             end
  346.         end
  347.         when flame_dungeon_1m_left_timer.server_timer begin
  348.             if d.select(get_server_timer_arg()) then
  349.                 notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
  350.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  351.                 server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
  352.             end
  353.         end
  354.         when flame_dungeon_0m_left_timer.server_timer begin
  355.             local setting = flame_dungeon.setting()
  356.             if d.select(get_server_timer_arg()) then       
  357.                 notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
  358.                 notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
  359.                 server_timer("dungeon_end_timer",10,d.get_map_index()) 
  360.             end
  361.         end
  362.  
  363.  
  364.         -- <<<< ´øÀü ÁøÇà>>>> --
  365.         when 20385.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'´Â x¹ø° ·¹º§ Äù½ºÆ® ¹ÞÀ» ¼ö ÀÖ´Â »óÅ , '1x'´Â x¹ø° ·¹º§ Äù½ºÆ® ÁøÇàÁß
  366.             local setting = flame_dungeon.setting()
  367.             if d.getf("started") == 0 then
  368.                 say(gameforge.flame_dungeon._230_say)
  369.                 say(gameforge.flame_dungeon._240_say)
  370.                 wait()
  371.                 d.setf("started",1)
  372.                 -- ÆÄƼ¿øÀÌ Æ¨°Ü¹ö·È´Âµ¥ Àڱ⸸ ³²¾Æ¼­ exit timer°¡ ¸®¼ÂµÇ¸é ¾ÈµÇ´Ï±ñ ´ÙÀ½·¹º§À» ´­·¶À»¶§¸¦ ½ÃÀÛÇÒ¶§·Î º½
  373.                 server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
  374.                 notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
  375.                 notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
  376.                
  377.                 -- ÅëÇàÁõ °ü·ÃµÈ ó¸®
  378.                 -- ÀÔÀå ÈÄ¿¡ ƼÄÏÀ» ¾ø¾Ø »ç¶÷À» ƨ°Ü³»±â À§Çؼ­ ŸÀ̸Ӹ¦ ÀÌ¿ëÇØ Æ¼ÄÏÀ» Á¦°ÅÇÑ´Ù.
  379.                 local pids = {party.get_member_pids()}
  380.                 local ticketGroup = {get_special_item_group (10033)}
  381.                 for i, pid in next, pids, nil do
  382.                     q.begin_other_pc_block(pid)
  383.                     local canPass = false
  384.                     for idx=1, table.getn(ticketGroup),2 do
  385.                         if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
  386.                             canPass = true
  387.                             pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
  388.                             break
  389.                         end
  390.                     end
  391.                    
  392.                     if not canPass then
  393.                         pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, 62)
  394.                     end
  395.                     q.end_other_pc_block()
  396.                 end
  397.                 d.setqf2("flame_dungeon","ticket_delete",1)
  398.                 d.setf("dungeon_enter",1)
  399.                
  400.                 -- ´øÀü°ú ÆÄƼ¿¡ ¼­·Î¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÑ´Ù.
  401.                 party.setf("dungeon_index", d.get_map_index())
  402.                 d.setf("party_leader_pid", party.get_leader_pid())
  403.             end
  404.             if d.getf("level") < 7 then --ÁøÇàÁßÀÌ ¾Æ´Ï¸é
  405.                 if d.getf("clear_count") == 6 then -- ¹æ ¿©¼¸°³ ÇßÀ¸¸é º¸½º¹æ
  406.                     d.setf("level",7)
  407.                 else
  408.                     local rand = number(1,6)--·£´ý¿¡¼­ ¹æ¹®Ã¼Å©´Â µû·Î ¹è¿­¾øÀÌ ¹æÀÇ ¹®ÀÇ ¿­·ÁÀÖ´ÂÁö·Î üũÇÔ
  409.                     local setlev = 0
  410.                     d.setf("level",7) -- Ȥ½Ã ¸ð¸¦ ¹®Á¦°¡ »ý°Ü ·¹º§ÀÌ ¾ÈÀâÈú°æ¿ì¸¦ ´ëºñÇØ º¸½º·ëÀ¸·Î ¼ÂÆÃÇصÒ
  411.                     for i=1,50 do
  412.                         setlev = setlev + 1
  413.                         if setlev > 6 then
  414.                             setlev = 1
  415.                         end
  416.                         if not d.is_unique_dead("door"..setlev) then
  417.                             rand = rand - 1
  418.                             if rand == 0 then
  419.                                 d.setf("level",setlev)
  420.                                 d.setf("clear_count",d.getf("clear_count")+1)
  421.                                 break
  422.                             end
  423.                         end
  424.                     end
  425.                 end
  426.             end
  427.                 if d.getf("level") == 1 then
  428.                     say(gameforge.flame_dungeon._260_say)
  429.                     notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
  430.                     d.kill_unique("door1")
  431.                     d.kill_unique("idoor1")
  432.                     d.setf("level",11)
  433.                     d.regen_file ("data/dungeon/flame_dungeon/".."fd_a.txt")
  434.                        
  435.                     server_timer ("killed_A_1", 12, d.get_map_index())
  436.                 elseif d.getf("level") == 11 then
  437.                     say(gameforge.flame_dungeon._270_say)
  438.                     say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
  439.                 elseif d.getf("level") == 2 then
  440.                         say(gameforge.flame_dungeon._290_say)
  441.                         say(gameforge.flame_dungeon._300_say)
  442.                         notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
  443.                         notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
  444.                         d.spawn_mob(20386, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- ºÀÀμ® ¼Òȯ
  445.                         d.kill_unique("door2")
  446.                         d.kill_unique("idoor2")
  447.                         d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_b.txt")
  448.                         d.setf("level",12)
  449.                 elseif d.getf("level") == 12 then
  450.                     say(gameforge.flame_dungeon._310_say)
  451.                 elseif d.getf("level") == 3 then
  452.                     say(gameforge.flame_dungeon._260_say)
  453.                     notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
  454.                     d.kill_unique("door3")
  455.                     d.kill_unique("idoor3")
  456.                     d.setf("level",13)
  457.                     d.regen_file ("data/dungeon/flame_dungeon/".."fd_c.txt")
  458.                     server_timer ("killed_A_1", 12, d.get_map_index())
  459.                 elseif d.getf("level") == 13 then
  460.                     say(gameforge.flame_dungeon._270_say)
  461.                     say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
  462.                 elseif d.getf("level") == 4 then -- 474 178
  463.                     say(gameforge.flame_dungeon._320_notice)
  464.                     notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
  465.                     d.setf("level",14)
  466.                     d.kill_unique("door4")
  467.                     d.kill_unique("idoor4")
  468.                     d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_d.txt")
  469.                     d.spawn_mob(6051,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- Ÿ°Ù¸ó½ºÅÍ ¼ÒÇÑ
  470.                 elseif d.getf("level") == 14 then
  471.                     say(gameforge.flame_dungeon._330_say)
  472.                     say(gameforge.flame_dungeon._340_say)
  473.                 elseif d.getf("level") == 5 then -- 510 355
  474.                     say(gameforge.flame_dungeon._350_say)
  475.                     say(gameforge.flame_dungeon._360_say)
  476.                     notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
  477.                     notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
  478.                     d.kill_unique("door5")
  479.                     d.kill_unique("idoor5")
  480.                     d.setf("level",15)
  481.                     d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  482.                     local vis = { 0,0,0,0,0,0,0}
  483.                     for i=1,7 do
  484.                         vis[i] = 0
  485.                     end
  486.                     for i = 1, 7 do -- ·£´ýÇÏ°Ô µ¹¼Òȯ
  487.                         local ran = number(1,7)
  488.                         local st = 0
  489.                         for j = 1, 50 do
  490.                             st = st + 1
  491.                             if st > 7 then
  492.                                 st = 1
  493.                             end
  494.                             if vis[st] == 0 then
  495.                                 ran = ran - 1
  496.                                 if ran == 0 then
  497.                                     vis[st] = 1
  498.                                     d.set_unique("stone5_"..st, d.spawn_mob(20386, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
  499.                                     break
  500.                                 end
  501.                             end
  502.                         end
  503.                     end  
  504.                 elseif d.getf("level") == 15 then
  505.                     say(gameforge.flame_dungeon._370_say)
  506.                 elseif d.getf("level") == 6 then -- 507 490
  507.                     say(gameforge.flame_dungeon._380_say)
  508.                     notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
  509.                     d.setf("level",16)
  510.                     d.kill_unique("door6")
  511.                     d.kill_unique("idoor6")
  512.                     d.set_regen_file ("data/dungeon/flame_dungeon/".."fd_f.txt")
  513.                     d.spawn_mob(8057, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- Ÿ°Ù¿ÀºêÁ§Æ® ¼Òȯ
  514.                 elseif d.getf("level") == 16 then
  515.                     say(gameforge.flame_dungeon._390_say)
  516.                     say(gameforge.flame_dungeon._400_say)
  517.                 elseif d.getf("level") == 7 then
  518.                     -- setskin(NOWINDOW)
  519.                     flame_dungeon.go_boss()
  520.                 else
  521.                     say(gameforge.flame_dungeon._410_say)
  522.                 end
  523.             npc.unlock()       
  524.         end
  525.    
  526.  
  527.  
  528.         when dungeon_end_timer.server_timer begin -- Á¾·á ŸÀÌ¸Ó (³¡³ª°í ³ª°¡´Â°Å)
  529.             local setting = flame_dungeon.setting()
  530.             if d.select(get_server_timer_arg()) then
  531.                 flame_dungeon.clear_timer(d.get_map_index())       
  532.                 d.set_warp_location(62, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
  533.                 d.exit_all()
  534.                 d.setf("party_leader_pid", 0)
  535.             end
  536.         end
  537.  
  538.         when killed_A_1.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â1 (level1,level3)
  539.             if d.select(get_server_timer_arg()) then
  540.                 if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
  541.                     if d.getf("level") == 11 then
  542.                         notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
  543.                         notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  544.                     else
  545.                         notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
  546.                         notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  547.                     end
  548.                     d.setf("level",0)
  549.                 else
  550.                     server_timer ("killed_A_2", 6, get_server_timer_arg())
  551.                 end
  552.             end
  553.         end
  554.         when killed_A_2.server_timer begin -- ŸÀÌ¸Ó µ¹¸®±â2 (1°ú 2 ¹ø°¥¾Æ°¡¸é¼­ µ¹¾Æ°¨)
  555.             if d.select(get_server_timer_arg()) then
  556.                 if d.count_monster() <= 0 then -- 1·¹º§ ¸ó½ºÅÍ Àü¸ê½Ã
  557.                     if d.getf("level") == 11 then
  558.                         notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
  559.                         notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  560.                     else
  561.                         notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
  562.                         notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  563.                     end
  564.                     d.setf("level",0)
  565.                 else
  566.                     server_timer ("killed_A_1", 6, get_server_timer_arg())
  567.                 end
  568.             end
  569.         end
  570.  
  571.         when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2·¹º§ ºÀÀμ® ¿­¼è µå¶ø
  572.             local i = number(1, 100) -- 100ºÐÀÇ 1 È®·ü·Î ¿­¼èµå¶ø
  573.             if i == 1 then
  574.                 game.drop_item (30329, 1)
  575.             end
  576.         end
  577.         when 20386.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == 30329 and d.getf("level") == 12 begin -- 2·¹º§ ¿­¼è ¸Ô¾úÀ»¶§
  578.             local i = number(1, 5) -- 5ºÐÀÇ 1 È®·ü·Î ÁøÂ¥ ¿­¼è
  579.             if i == 1 then
  580.                 npc.purge()
  581.                 item.remove()
  582.                 notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
  583.                 notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  584.                 flame_dungeon.level_clear()
  585.             else
  586.                 item.remove()
  587.                 say(gameforge.flame_dungeon._450_say)
  588.             end
  589.         end
  590.  
  591.         when 6051.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
  592.             notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
  593.             notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  594.             flame_dungeon.level_clear()
  595.         end
  596.  
  597.         when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5·¹º§ ºÀÀμ® ¿­¼è µå¶ø
  598.             local i = number(1, 30) -- 30ºÐÀÇ 1 È®·ü·Î ¿­¼èµå¶ø
  599.             if i == 1 then
  600.                 game.drop_item (30330, 1)
  601.             end
  602.         end
  603.         when 20386.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == 30330 and d.getf("level") == 15 begin -- 5·¹º§ ÁøÂ¥¿­¼è ¸Ô¾úÀ»¶§
  604.             local setting = flame_dungeon.setting()
  605.             if npc.get_vid() == d.get_unique_vid("stone5_1") then -- ù¹ø° ²¨´Â ¼±ÇàµÇ¾î¾ß ÇÒ ÀÏÀÌ ÇÊ¿ä¾øÀ¸´Ï ãÀÚ¸¶ÀÚ Á¦°ÅÇØÁÜ
  606.                 npc.purge()
  607.                 item.remove()
  608.                 say(gameforge.flame_dungeon._470_say)
  609.                 d.setf("stonekill",2) -- 2¹ø µ¹À» Á׿©¶ó
  610.                 if d.count_monster() < 100 then
  611.                     d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  612.                 end
  613.             elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
  614.                 if d.getf("stonekill") == 2 then -- 2¹øµ¹À» Á×ÀÏ Â÷·Ëµ¥ 2¹øµ¹¿¡°Ô ¿­¼è¸¦ ¸Ô¿´À» ¶§
  615.                     npc.purge()
  616.                     item.remove()
  617.                     say(gameforge.flame_dungeon._480_say)
  618.                     d.setf("stonekill",3)
  619.                     if d.count_monster() < 100 then
  620.                         d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  621.                     end
  622.                 else
  623.                     item.remove()
  624.                     say(gameforge.flame_dungeon._490_say)
  625.             --      say("2¹ø")
  626.                 end
  627.             elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
  628.                 if d.getf("stonekill") == 3 then
  629.                     npc.purge()
  630.                     item.remove()
  631.                     say(gameforge.flame_dungeon._500_say)
  632.                     d.setf("stonekill",4)
  633.                     if d.count_monster() < 100 then
  634.                         d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  635.                     end
  636.                 else
  637.                     item.remove()
  638.                     say(gameforge.flame_dungeon._490_say)
  639.             --      say("3¹ø")
  640.                 end
  641.             elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
  642.                 if d.getf("stonekill") == 4 then
  643.                     npc.purge()
  644.                     item.remove()
  645.                     say(gameforge.flame_dungeon._510_say)
  646.                     d.setf("stonekill",5)
  647.                     if d.count_monster() < 100 then
  648.                         d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  649.                     end
  650.                 else
  651.                     item.remove()
  652.                     say(gameforge.flame_dungeon._490_say)
  653.                 --  say("4¹ø")
  654.                 end
  655.             elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
  656.                 if d.getf("stonekill") == 5 then
  657.                     npc.purge()
  658.                     item.remove()
  659.                     say(gameforge.flame_dungeon._520_say)
  660.                     d.setf("stonekill",6)
  661.                     if d.count_monster() < 100 then
  662.                         d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  663.                     end
  664.                 else
  665.                     item.remove()
  666.                     say(gameforge.flame_dungeon._490_say)
  667.             --      say("5¹ø")
  668.                 end
  669.             elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
  670.                 if d.getf("stonekill") == 6 then
  671.                     npc.purge()
  672.                     item.remove()
  673.                     say(gameforge.flame_dungeon._530_say)
  674.                     d.setf("stonekill",7)
  675.                     if d.count_monster() < 100 then
  676.                         d.regen_file ("data/dungeon/flame_dungeon/".."fd_e.txt")
  677.                     end
  678.                 else
  679.                     item.remove()
  680.                     say(gameforge.flame_dungeon._490_say)
  681.             --      say("6¹ø")
  682.                 end
  683.             else
  684.                 if d.getf("stonekill") == 7 then
  685.                     npc.purge()
  686.                     item.remove()
  687.                     notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
  688.                     notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  689.                     flame_dungeon.level_clear()
  690.                 else
  691.                     item.remove()
  692.                     say(gameforge.flame_dungeon._490_say)
  693.             --      say("7¹ø")
  694.                 end
  695.             end
  696.         end
  697.  
  698.         when 8057.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ¸Á¸¶¼® Æı«ÇßÀ» ¶§
  699.             notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
  700.             notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
  701.             flame_dungeon.level_clear()
  702.         end
  703.  
  704.         when 6091.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- º¸½º Á׿´À»¶§
  705.             notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
  706.             notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
  707.             server_timer("dungeon_end_timer", 60,d.get_map_index())
  708.             flame_dungeon.level_clear()
  709.            
  710.             -- ÆÄƼ¿ø Áß, ¾ß¸¶Ãµ Àâ´Â Äù½ºÆ®(104·¾, 105·¾ Äù½ºÆ®) ÁøÇàÁßÀÎ »ç¶÷ÀÌ ÀÖÀ¸¸é Äù½ºÆ® Ŭ¸®¾î µÇµµ·Ï.
  711.             if party.is_party() then
  712.                 party.setf("flame_dungeon_boss_kill_count", 1)
  713.             end
  714.            
  715.         end
  716.     end
  717. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement