--2013.02.08 김용욱

--퀘스트 진행 npc
define YACKHWAN 	20377 -- 약령도장 약환
define SCHOLAR 		20380 -- 학자
define ALCHEMIST 	20001 -- 연금술사
define BLACKSMITH 	20016 -- 대장장이
define YUHWAN		20017 -- 유환

define MOB1_1  6005
define MOB1_2  6006
define MOB1_3  6007
define MOB1_4  6008


define ITEM2_1		31081
define ITEM2_1_NEED	10
define ITEM2_1_PCT	50

define ITEM3_1		50819
define ITEM3_1_NEED	50
define ITEM3_2		51001
define ITEM3_2_NEED	100

define DUNGEON_MAP_INDEX 351

quest main_quest_flame_lv102 begin
	state start begin
	end
	state state0 begin
		when login or levelup or enter with pc.level >= 102 begin
			set_state (state1_1)
		end
	end
	
	-- 돌입
	state state1_1 begin 
		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._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_lv102._010_sendLetter) 
			say(gameforge.main_quest_flame_lv102._020_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when YACKHWAN.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._030_say) 
			wait()--추가 대화 

			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._040_say) 
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._050_say) 
			wait()--추가 대화 

			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._060_say) 
			--다음 스테이트로
			set_state (state1_2)
		end

		when leave begin 
			--q.done()
		end
	end
	
    state state1_2 begin --몬스터 잡아오는 부분.
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._070_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._010_sendLetter) 
			q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
			main_quest_flame_lv102.kill_count() 
 		end
        
		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._080_sayTitle) 
			say(gameforge.main_quest_flame_lv102._090_say) 
			--남은 아이템 안내문
			local remain1 = 30 - pc.getqf("mob1")
			if remain1 < 0 then
				remain1 = 0
			end
			local remain2 = 30 - pc.getqf("mob2")
			if remain2 < 0 then
				remain2 = 0
			end
			local remain3 = 30 - pc.getqf("mob3")
			if remain3 < 0 then
				remain3 = 0
			end
			local remain4 = 30 - pc.getqf("mob4")
			if remain4 < 0 then
				remain4 = 0
			end
			say(gameforge.main_quest_lv97._670_counterName)
			say(string.format(gameforge.main_quest_flame_lv102._100_say,mob_name(MOB1_1), remain1,mob_name(MOB1_2), remain2))
			say(string.format(gameforge.main_quest_flame_lv102._110_say,mob_name(MOB1_3), remain3,mob_name(MOB1_4), remain4))
		end

		when YACKHWAN.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin 
			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._120_say) 
		end

		when MOB1_1.kill begin
			if number(1,1) == 1 then
				local kill_count = pc.getqf("mob1")
				pc.setqf("mob1", kill_count + 1)
				main_quest_flame_lv102.kill_count() 
			end
		end

		when MOB1_2.kill begin
			if number(1,1) == 1 then
				local kill_count = pc.getqf("mob2")
				pc.setqf("mob2", kill_count + 1)
				main_quest_flame_lv102.kill_count() 
			end
		end

		when MOB1_3.kill begin
			if number(1,1) == 1 then
				local kill_count = pc.getqf("mob3")
				pc.setqf("mob3", kill_count + 1)
				main_quest_flame_lv102.kill_count() 
			end
		end

		when MOB1_4.kill begin
			if number(1,1) == 1 then
				local kill_count = pc.getqf("mob4")
				pc.setqf("mob4", kill_count + 1)
				main_quest_flame_lv102.kill_count() 
			end
		end
		
		function kill_count()
			local total_remain = 0
			local remain1 = 30 - pc.getqf("mob1")
			if remain1 < 0 then
				remain1 = 0
			end
			local remain2 = 30 - pc.getqf("mob2")
			if remain2 < 0 then
				remain2 = 0
			end
			local remain3 = 30 - pc.getqf("mob3")
			if remain3 < 0 then
				remain3 = 0
			end
			local remain4 = 30 - pc.getqf("mob4")
			if remain4 < 0 then
				remain4 = 0
			end
			total_remain = remain1 + remain2 + remain3 + remain4
			q.set_counter_value(total_remain)
            if total_remain == 0 then
				set_state ("state1_3")
			end
		end

		when leave begin 
			--q.done()
		end
	end
	state state1_3 begin 
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._130_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._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_lv102._010_sendLetter) 
			say(gameforge.main_quest_flame_lv102._140_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when YACKHWAN.chat.gameforge.main_quest_flame_lv102._010_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._150_say) 
			wait()--추가 대화 

			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._170_say) 
			--보상
			wait()--reward

			say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 49584000))
			pc.give_exp2( 49584000)
			say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 157000))
			pc.change_money(157000)
			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(72723),1)) -- 화룡의 축복(소)
			pc.give_item2(72723, 1)
			say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(70050),1)) -- 선왕의 증표
			pc.give_item2(70050, 1)
			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_lv102._180_sendLetter) 
 			--npc 타겟 
			local v = find_npc_by_vnum(SCHOLAR) 
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(SCHOLAR))
			end
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._180_sendLetter) 
			say(gameforge.main_quest_flame_lv102._190_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when SCHOLAR.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._200_say) 
			wait()--추가 대화 

			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._220_say) 
			wait()--추가 대화 
			
			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._250_say) 
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._050_say) 
			wait()--추가 대화 

			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._260_say) 
			--다음 스테이트로
			set_state (state2_2)
		end

		when leave begin 
			--q.done()
		end
	end
	state state2_2 begin 
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._270_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._180_sendLetter) 
 			--아이템 지급 설정
			q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._280_sayTitle) 
			say(gameforge.main_quest_flame_lv102._290_say) 
			--남은 아이템 안내문
			say(gameforge.main_quest_lv97._670_counterName)
			say(string.format(gameforge.main_quest_lv90._1190_say,item_name(ITEM2_1), ITEM2_1_NEED - pc.count_item(ITEM2_1)))
			say_reward(gameforge.main_quest_flame_lv102._300_sayReward)
		end

		when SCHOLAR.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin 
			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._310_say) 
		end

		when kill with pc.get_map_index() >= DUNGEON_MAP_INDEX * 10000 and pc.get_map_index() < (DUNGEON_MAP_INDEX + 1) *10000 begin
			if number(1,ITEM2_1_PCT) == 1 then
				pc.give_item2(ITEM2_1, 1)
				main_quest_flame_lv102.item_count() 
			end
		end

		function item_count()
			if pc.count_item(ITEM2_1) >= ITEM2_1_NEED then
				set_state ("state2_3")
			end
			q.set_counter_value(ITEM2_1_NEED - pc.count_item(ITEM2_1))
		end

		when leave begin 
			--q.done()
		end
	end
	state state2_3 begin 
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._320_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._180_sendLetter) 
 			--npc 타겟 
			local v = find_npc_by_vnum(SCHOLAR) 
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(SCHOLAR))
			end
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._180_sendLetter) 
			say(gameforge.main_quest_flame_lv102._140_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when SCHOLAR.chat.gameforge.main_quest_flame_lv102._180_sendLetter begin 
			target.delete("__TARGET__") 
			--아이템 제거
			pc.remove_item(ITEM2_1, pc.count_item(ITEM2_1)) 
			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._330_say) 
			
			wait()--추가 대화 
            say_title(gameforge.main_quest_lv27._120_sayTitle)
			say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 52484000))
			pc.give_exp2( 52484000)
			say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 159000))
			pc.change_money( 159000)
			say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(72301),5)) -- 축복의 서
			pc.give_item2(72301, 1)
			pc.give_item2(72301, 1)
			pc.give_item2(72301, 1)
			pc.give_item2(72301, 1)
			pc.give_item2(72301, 1)
			--다음 스테이트로
			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_lv102._350_sendLetter) 
 			--npc 타겟 
			local v = find_npc_by_vnum(SCHOLAR) 
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(SCHOLAR))
			end
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._350_sendLetter) 
			say(gameforge.main_quest_flame_lv102._190_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when SCHOLAR.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._360_say) 
			wait()--추가 대화 

			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._380_say) 
			wait()--추가 대화 

			say_title(mob_name(SCHOLAR)) 
			say(gameforge.main_quest_flame_lv102._390_say) 
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._050_say) 

			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_lv102._410_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._350_sendLetter) 
			q.set_counter_name(gameforge.main_quest_lv97._670_counterName)
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._420_sayTitle) 
			say(gameforge.main_quest_flame_lv102._430_say) 
			say(gameforge.main_quest_lv97._670_counterName)			
			
			local remain1 = ITEM3_1_NEED - pc.count_item(ITEM3_1)
			local remain2 = ITEM3_2_NEED - pc.count_item(ITEM3_2)
			if remain1 < 0 then
				remain1 = 0
			end
			if remain2 < 0 then
				remain2 = 0
			end
			
			say(string.format(gameforge.main_quest_lv98._690_sayReward,item_name(ITEM3_1) ,remain1,item_name(ITEM3_2) ,remain2))

			q.set_counter_value(remain1 + remain2)
			
			if remain1 + remain2 == 0 then
				set_state ("state3_3")
			end
			
		end

		when YUHWAN.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin 
			if pc.count_item(ITEM3_1) >= ITEM3_1_NEED and pc.count_item(ITEM3_2) >= ITEM3_2_NEED then
				pc.remove_item ( ITEM3_1,ITEM3_1_NEED)	
				pc.remove_item ( ITEM3_2,ITEM3_2_NEED)	
				
				say_title(mob_name(YUHWAN)) 
				say(gameforge.main_quest_flame_lv102._440_say) 
				wait()
				
				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, 160000))
				pc.change_money( 160000)
				say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- 산뽕나무
				pc.give_item2(50708, 10)
				say()
				
				set_state (state4_1)
			else
				say_title(mob_name(YUHWAN)) 
				say(gameforge.main_quest_flame_lv102._450_say) 
			end
		end

		when leave begin 
			--q.done()
		end
	end
	state state3_3 begin 
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._460_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._350_sendLetter) 
 			--npc 타겟 
			local v = find_npc_by_vnum(YUHWAN) 
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(YUHWAN))
			end
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._350_sendLetter) 
			say(gameforge.main_quest_flame_lv102._470_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when YUHWAN.chat.gameforge.main_quest_flame_lv102._350_sendLetter begin 
			if pc.count_item(ITEM3_1) >= ITEM3_1_NEED and pc.count_item(ITEM3_2) >= ITEM3_2_NEED then
				pc.remove_item ( ITEM3_1,ITEM3_1_NEED)	
				pc.remove_item ( ITEM3_2,ITEM3_2_NEED)	
				
				target.delete("__TARGET__") 
				say_title(mob_name(YUHWAN)) 
				say(gameforge.main_quest_flame_lv102._440_say) 
				wait()
				
				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, 160000))
				pc.change_money( 160000)
				say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50708),10)) -- 산뽕나무
				pc.give_item2(50708, 10)
				say()
				
				set_state (state4_1)
			else
				say_title(mob_name(YUHWAN)) 
				say(gameforge.main_quest_flame_lv102._450_say) 
				set_state (state3_2)
			end
		end

		when leave begin 
			--q.done()
		end
	end
	
	
	-- 정화액 전달
	state state4_1 begin 
		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._480_sendLetter) 
 			--npc 타겟 
			local v = find_npc_by_vnum(YUHWAN) 
			if 0 != v then
				target.vid("__TARGET__", v, mob_name(YUHWAN))
			end
		end

		when button or info begin 
			say_title(gameforge.main_quest_flame_lv102._480_sendLetter) 
			say(gameforge.main_quest_flame_lv102._490_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when YUHWAN.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(YUHWAN)) 
			say(gameforge.main_quest_flame_lv102._500_say) 
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._510_say) 
			wait()--추가 대화 

			say_title(mob_name(YUHWAN)) 
			say(gameforge.main_quest_flame_lv102._520_say) 
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._050_say) 
			wait()--추가 대화 

			say_title(mob_name(YUHWAN)) 
			say(gameforge.main_quest_flame_lv102._530_say) 
			--다음 스테이트로
			set_state (state4_2)
		end

		when leave begin 
			--q.done()
		end
	end
	state state4_2 begin 
		when enter begin 
			-- notice 설정
			notice_multiline(gameforge.main_quest_flame_lv102._540_notice,notice)
		end

		when letter begin 
			send_letter(gameforge.main_quest_flame_lv102._480_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_lv102._480_sendLetter) 
			say(gameforge.main_quest_flame_lv102._140_say) 
			--npc 타겟 안내문
			--say_reward(locale.target_npc_info) 
		end

		when YUHWAN.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin 
			say_title(mob_name(YUHWAN)) 
			say(gameforge.main_quest_flame_lv102._550_say) 
		end
		
		when YACKHWAN.chat.gameforge.main_quest_flame_lv102._480_sendLetter begin 
			target.delete("__TARGET__") 
			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._560_say)
			wait()--추가 대화 

			say_title(pc.getname()) 
			say(gameforge.main_quest_flame_lv102._570_say)
			wait()--추가 대화 

			say_title(mob_name(YACKHWAN)) 
			say(gameforge.main_quest_flame_lv102._580_say) 
			--보상
			wait()--reward

			say_reward(string.format(gameforge.main_quest_lv60._190_sayReward, 42584000))
			pc.give_exp2(42584000)
			say_reward(string.format(gameforge.main_quest_lv60._200_sayReward, 161000))
			pc.change_money( 161000)
			say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(76011),1))  -- 육도
			pc.give_item2_select(76011)
			item.set_socket(2, 60)
			say_reward(string.format(gameforge.main_quest_lv60._210_sayReward, item_name(50707),5)) -- 만병초
			pc.give_item2(50707, 5)
			say()
			say_title(string.format(gameforge.main_quest_flame_lv99._430_say, 103))
			--다음 스테이트로
			set_state (__COMPLETE__)
			set_quest_state ("main_quest_flame_lv103", "state0")
		end

		when leave begin 
			--q.done()
		end
	end
	
	state __COMPLETE__ begin
		when enter begin
			--q.done()
		end
	end	
end