--2013.02.12 김용욱 --퀘스트 진행 npc define YACKHWAN 20377 -- 약령도장 약환 define SCHOLAR 20380 -- 학자 define ALCHEMIST 20001 -- 연금술사 define BLACKSMITH 20016 -- 대장장이 define YUHWAN 20017 -- 유환 define MOB1_1 6091 -- 염왕 야마천 define DUNGEON_MAP_INDEX 351 quest main_quest_flame_lv105 begin state start begin end state state0 begin when login or levelup or enter with pc.level >= 105 begin set_state (state1_1) end end -- 격전의 시작 state state1_1 begin when letter begin send_letter(gameforge.main_quest_flame_lv105._010_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._010_sendLetter) say(gameforge.main_quest_flame_lv105._020_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin target.delete("__TARGET__") pc.remove_item(31083, 3) say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._030_say) wait()--추가 대화 say_title(pc.getname()) say(gameforge.main_quest_flame_lv105._040_say) wait()--추가 대화 say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._050_say) wait()--추가 대화 say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._060_say) wait()--추가 대화 say_title(pc.getname()) say(gameforge.main_quest_flame_lv105._070_say) --다음 스테이트로 set_state (state1_2) end when leave begin --q.done() end end state state1_2 begin when enter begin --몬스터 처치 수 설정 pc.setqf("kill_count_1", 0) pc.setqf("kill_count_2", 0) pc.setqf("kill_count_3", 0) pc.setqf("kill_count_4", 0) pc.setqf("kill_count_5", 0) -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._080_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._010_sendLetter) --남은 처치 수 안내문 q.set_counter_name(gameforge.main_quest_lv98._680_counterName) main_quest_flame_lv105.kill_count_state1_2() end when button or info begin say_title(gameforge.main_quest_flame_lv105._090_sayTitle) say(gameforge.main_quest_flame_lv105._100_say) --남은 처치 수 안내문 say(gameforge.main_quest_lv98._680_counterName) local remain1 = 10 - pc.getqf("kill_count_1") if remain1 < 0 then remain1 = 0 end local remain2 = 10 - pc.getqf("kill_count_2") if remain2 < 0 then remain2 = 0 end local remain3 = 10 - pc.getqf("kill_count_3") if remain3 < 0 then remain3 = 0 end local remain4 = 10 - pc.getqf("kill_count_4") if remain4 < 0 then remain4 = 0 end local remain5 = 10 - pc.getqf("kill_count_5") if remain5 < 0 then remain5 = 0 end say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6005), remain1,mob_name(6006), remain2)) say(string.format(gameforge.main_quest_lv98._690_sayReward ,mob_name(6007), remain3,mob_name(6008), remain4)) say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(6009), remain5)) say_reward(gameforge.main_quest_flame_lv105._110_sayReward) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._120_say) end when 6005.kill begin local kill_count = pc.getqf("kill_count_1") pc.setqf("kill_count_1", kill_count+1) main_quest_flame_lv105.kill_count_state1_2() end when 6006.kill begin local kill_count = pc.getqf("kill_count_2") pc.setqf("kill_count_2", kill_count+1) main_quest_flame_lv105.kill_count_state1_2() end when 6007.kill begin local kill_count = pc.getqf("kill_count_3") pc.setqf("kill_count_3", kill_count+1) main_quest_flame_lv105.kill_count_state1_2() end when 6008.kill begin local kill_count = pc.getqf("kill_count_4") pc.setqf("kill_count_4", kill_count+1) main_quest_flame_lv105.kill_count_state1_2() end when 6009.kill begin local kill_count = pc.getqf("kill_count_5") pc.setqf("kill_count_5", kill_count+1) main_quest_flame_lv105.kill_count_state1_2() end function kill_count_state1_2() local total_remain = 0 local remain1 = 10 - pc.getqf("kill_count_1") if remain1 < 0 then remain1 = 0 end total_remain = total_remain + remain1 local remain2 = 10 - pc.getqf("kill_count_2") if remain2 < 0 then remain2 = 0 end total_remain = total_remain + remain2 local remain3 = 10 - pc.getqf("kill_count_3") if remain3 < 0 then remain3 = 0 end total_remain = total_remain + remain3 local remain4 = 10 - pc.getqf("kill_count_4") if remain4 < 0 then remain4 = 0 end total_remain = total_remain + remain4 local remain5 = 10 - pc.getqf("kill_count_5") if remain5 < 0 then remain5 = 0 end total_remain = total_remain + remain5 q.set_counter_value(total_remain) if total_remain == 0 then set_state ("state1_3") end end when leave begin pc.setqf("kill_count_1", 0) pc.setqf("kill_count_2", 0) pc.setqf("kill_count_3", 0) pc.setqf("kill_count_4", 0) pc.setqf("kill_count_5", 0) --q.done() end end state state1_3 begin when enter begin -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._130_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._010_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._010_sendLetter) say(gameforge.main_quest_flame_lv105._140_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._010_sendLetter begin target.delete("__TARGET__") say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._150_say) --보상 wait()--reward say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000)) pc.give_exp2(48584000) say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 174000)) pc.change_money(174000) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1)) pc.give_item2(71095, 1) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(30033),3)) -- 깨진 사기그릇 pc.give_item2(30033, 3) say() --다음 스테이트로 set_state (state2_1) end when leave begin --q.done() end end -- 은원 state state2_1 begin when letter begin send_letter(gameforge.main_quest_flame_lv105._160_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._160_sendLetter) say(gameforge.main_quest_flame_lv105._020_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin target.delete("__TARGET__") say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._170_say) wait()--추가 대화 say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._180_say) wait()--추가 대화 say_title(pc.getname()) say(gameforge.main_quest_flame_lv105._070_say) --다음 스테이트로 set_state (state2_2) end when leave begin --q.done() end end state state2_2 begin when enter begin --몬스터 처치 수 설정 pc.setqf("kill_count_1", 0) -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._190_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._160_sendLetter) --남은 처치 수 안내문 q.set_counter_name(gameforge.main_quest_lv98._680_counterName) -- 파티원에 의해 야마천을 잡았을 때, 퀘스트가 클리어 되도록 하는 코드. if party.is_party() then local map_index = pc.get_map_index() -- 적룡성에 입장했다는 것을 기록함. if map_index >= DUNGEON_MAP_INDEX * 10000 and map_index < (DUNGEON_MAP_INDEX + 1) *10000 then pc.setqf("in_dungeon", 1) else -- 적룡성으로 부터 나왔을때, 보스를 잡고 나왔으면 퀘스트를 클리어 해준다. if pc.getqf("in_dungeon") == 1 then if party.getf("flame_dungeon_boss_kill_count") == 1 then set_state (state2_3) end pc.setqf("in_dungeon", 0) end end end main_quest_flame_lv105.kill_count_state2_2() end when logout begin if party.is_party() then if party.getf("flame_dungeon_boss_kill_count") == 0 then pc.setqf("in_dungeon", 0) end end end when button or info begin say_title(gameforge.main_quest_flame_lv105._200_sayTitle) say(gameforge.main_quest_flame_lv105._210_say) --남은 처치 수 안내문 say(gameforge.main_quest_lv98._680_counterName) say(string.format(gameforge.main_quest_lv98._670_sayReward,mob_name(MOB1_1), 1 - pc.getqf("kill_count_1"))) say_reward(gameforge.main_quest_flame_lv105._110_sayReward) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._220_say) end when MOB1_1.kill begin local kill_count = pc.getqf("kill_count_1") pc.setqf("kill_count_1", kill_count+1) main_quest_flame_lv105.kill_count_state2_2() end function kill_count_state2_2() local total_remain = 0 local remain1 = 1 - pc.getqf("kill_count_1") if remain1 < 0 then remain1 = 0 end total_remain = total_remain + remain1 q.set_counter_value(total_remain) if total_remain == 0 then set_state ("state2_3") end end when leave begin pc.setqf("kill_count_1", 0) pc.setqf("in_dungeon", 0) --q.done() end end state state2_3 begin when enter begin -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._230_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._160_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._160_sendLetter) say(gameforge.main_quest_flame_lv105._140_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._160_sendLetter begin target.delete("__TARGET__") say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._240_say) --보상 wait()--reward say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 60583000)) pc.give_exp2(60583000) say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 175000)) pc.change_money(175000) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71095),1)) pc.give_item2(71095, 1) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71026),1)) -- 현철 pc.give_item2(71026, 1) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71025),2)) -- 야공석 pc.give_item2(71025, 1) pc.give_item2(71025, 1) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72001),1)) -- 경험의 반지 pc.give_item2_select(72001) item.set_socket(2, 60) say() --다음 스테이트로 set_state (state3_1) end when leave begin --q.done() end end -- 적룡의 금제 state state3_1 begin when letter begin send_letter(gameforge.main_quest_flame_lv105._250_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._250_sendLetter) say(gameforge.main_quest_flame_lv105._020_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin target.delete("__TARGET__") say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._260_say) wait()--추가 대화 say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._270_say) wait()--추가 대화 say_title(pc.getname()) say(gameforge.main_quest_flame_lv105._070_say) --다음 스테이트로 say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(31083),1)) pc.give_item2(31083, 1) set_state (state3_2) end when leave begin --q.done() end end state state3_2 begin when enter begin -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._280_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._250_sendLetter) q.set_counter_name(gameforge.main_quest_flame_lv105._290_say) end when button or info begin say_title(gameforge.main_quest_flame_lv105._300_sayTitle) say(gameforge.main_quest_flame_lv105._310_say) say_title(gameforge.main_quest_flame_lv105._290_say) say(gameforge.main_quest_flame_lv105._320_say) say() say_reward(gameforge.main_quest_flame_lv105._110_sayReward) end when 20390.take with item.vnum == 31083 begin item.remove() say_title(gameforge.main_quest_flame_lv105._330_sayTitle) say(gameforge.main_quest_flame_lv105._340_say) --다음 스테이트로 set_state (state3_3) end when leave begin --q.done() end end state state3_3 begin when enter begin -- notice 설정 notice_multiline(gameforge.main_quest_flame_lv105._350_notice,notice) end when letter begin send_letter(gameforge.main_quest_flame_lv105._250_sendLetter) --npc 타겟 local v = find_npc_by_vnum(YACKHWAN) if 0 != v then target.vid("__TARGET__", v, mob_name(YACKHWAN)) end end when button or info begin say_title(gameforge.main_quest_flame_lv105._250_sendLetter) say(gameforge.main_quest_flame_lv105._140_say) --npc 타겟 안내문 --say_reward(locale.target_npc_info) end when YACKHWAN.chat.gameforge.main_quest_flame_lv105._250_sendLetter begin target.delete("__TARGET__") say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._360_say) wait()--추가 대화 say_title(pc.getname()) say(gameforge.main_quest_flame_lv105._370_say) wait()--추가 대화 say_title(mob_name(YACKHWAN)) say(gameforge.main_quest_flame_lv105._380_say) --보상 wait()--reward say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 48584000)) pc.give_exp2(177000) say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 177000)) pc.change_money(177000) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72024),1)) -- 행운의 금화 pc.give_item2_select(72024) item.set_socket(2, 180) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71094),1)) -- 선인의 교훈 pc.give_item2(71094, 1) say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(71001),5)) -- 주안술서 pc.give_item2(71001, 5) say() --다음 스테이트로 set_state (__COMPLETE__) end when leave begin --q.done() end end state __COMPLETE__ begin when enter begin --q.done() end end end