Guest User

Untitled

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