ShowMessage("ħ $Rev: 100 $")

--[[
[author]
perday_max=1
descript="Ĭϵ˴bossŻῪԶʰȡ"
]]--

script_name="ħ"

local g_MissionMap = 651
local g_nParam = {}
local g_nIndex, g_idMission, g_idScript = DataPool:GetPlayerMission(script_name)
local g_ConfirmId = 20150402
local g_ConfirmData = {}
local g_StartFuben2 = -1

function GetConfirmData()

	for i=0,9 do
		g_ConfirmData[i] = GetConfimDataBySid(g_ConfirmId,i,"data")
		DbgPrintf("ConfirmData [%d]%d", i, g_ConfirmData[i])
	end

end

function GetMissionComplete()

	g_nIndex, g_idMission, g_idScript = DataPool:GetPlayerMission(script_name)

	if g_nIndex ~= -1 then

		DbgPrintf("%s Index:%d MissionID:%d ScriptID:%d", script_name, g_nIndex, g_idMission, g_idScript)

		-- ȡ
		for i=0,7 do
			g_nParam[i] = DataPool:GetPlayerMission_Variable(g_nIndex, i)
			DbgPrintf("[%d]%d", i, g_nParam[i])
		end
		
		return tonumber(g_nParam[0])
	end

	return -1
end


function GetMissionStep( nGate )
	
	if nGate == 1 then
		if g_nParam[2] < 1 or g_nParam[3] < 1 or g_nParam[7] < 60 then
			return 1
		elseif g_nParam[4] < 1 then
			return 2
		end

		return 0
	end

	GetConfirmData()

	DbgPrintf("Gate=%d , data1=%d" , tonumber(nGate) , tonumber(g_ConfirmData[1]))

	if g_ConfirmData[1] ~= nGate then
		return 0
	end

	local node = g_ConfirmData[2]
	local nCount = g_ConfirmData[3]

	DbgPrintf("node=%d, nCount=%d" , tonumber(node), tonumber(nCount))
 
	if nGate == 2 then 
		if node == 1 then
			if nCount < 1 then 
				return 1
			else
				return 2
			end
		elseif node == 2 then
			if nCount < 1 then
				return 2
			else
				return 3
			end
		elseif node == 3 then
			if nCount < 1 then
				return 3
			else
				return 4
			end
		elseif node == 4 then
			if nCount < 1 then
				return 4
			else
				return 5
			end
		elseif node == 5 then
			if nCount < 1 then
				return 5
			else
				return 6
			end
		elseif node == 6 then
			if nCount < 1 then
				return 6
			else
				g_StartFuben2 = 7
				return 7
			end
		else
			return 0
		end
	elseif nGate == 3 then
		return 0
	end

	return 0
end

function IsInFuben()

	local sceneNow = GetActiveDataSceneID()
	if sceneNow ~= g_MissionMap then
		return false
	end

	return true 
end

local g_Mission_Pos1 = {

	[0] = {
   		{x=154,y=179},{x=137,y=181} , {x=130,y=166} , {x=114,y=180} , {x=110,y=157} , {x=90,y=181}	
	},
	[1] = {
		{x=154,y=179},{x=137,y=181} , {x=130,y=166} , {x=114,y=180} , {x=110,y=157} ,  
	},
	[2] = {
		{x=90,y=181}
	}
}


function OnFuben1()

	local vResult = GetMissionComplete()

	if vResult ~= 0 then
		return
	end

	local nPreStep = 0
	if g_nParam[1] == 0 then
		-- 
		AI:SetAI("ɱ")
		AI:SetParameter("ʼ")
		AI:SetParameter("ʰȡ", 0)
		AI:SetParameter("ͼ", g_MissionMap )

		nPreStep = GetMissionStep(1)
		DbgPrintf(" %d" , nPreStep)

		for i, pos in ipairs( g_Mission_Pos1[nPreStep]) do
			AI:SetParameter("", "", pos.x, pos.y ) 
		end
	else
		return
	end

	AI:Start()

	AI:SetParameter("в" , "Ӹ" , 1)
	AI:SetParameter("в" , "" , 1)
	AI:SetParameter("в" , "" , 1)

	while true do 

		System:Sleep(500)

		if IsInFuben() == false then
			break
		end
		
		nComplete = GetMissionComplete()
		if nComplete ~= 0 then 
			break
		else
			if g_nParam[2] == 1 and g_nParam[3] == 1 and g_nParam[4] == 1 and g_nParam[7] == 60 then
				--ɵһ
				break 
			end
		end

		local newStep = GetMissionStep(1)
		if newStep ~= nPreStep then
			break
		end

		g_StartFuben2 = 1
	end

	AI:Stop()
			
end

local g_Mission_Pos2 = {
	[0] = {{x=56,y=81},{x=79,y=67},{x=83,y=39},{x=52,y=31},{x=32,y=64},{x=55,y=56}},
	[1] = {{x=56,y=81}},
	[2] = {{x=79,y=67}},
	[3] = {{x=83,y=39}},
	[4] = {{x=52,y=31}},
	[5] = {{x=32,y=64}},
	[6] = {{x=55,y=56}},
}

local g_Mission_Name2 = {
	[0] = "δ֪" ,
	[1] = "˺ħ" ,
	[2] = "ѵߵ" ,
	[3] = "嶾ħʹħ" ,
	[4] = "" , 
	[5] = "ߵ" ,
	[6] = "鼬" 
}

function OnFuben2()

	local nPreStep = GetMissionStep(2)
	if nPreStep < 7 then
		-- 
		AI:SetAI("ɱ")
		AI:SetParameter("ʼ")
		AI:SetParameter("ʰȡ", 0)
		AI:SetParameter("ͼ", g_MissionMap )

		DbgPrintf(" %d" , nPreStep)

		if nPreStep == 0 then
			if g_StartFuben2 > 0 then
				nPreStep = g_StartFuben2
			end
		elseif nPreStep ~= 0 then 
			g_StartFuben2 = nPreStep
		end

		for i, pos in ipairs( g_Mission_Pos2[nPreStep]) do
			AI:SetParameter("", "", pos.x, pos.y ) 
		end

	else
		return
	end

	AI:Start()

	AI:SetParameter("в" ,"", 1)
	AI:SetParameter("в" ,"Ӹ", 1)
	AI:SetParameter("в" , "" , 1)
	AI:SetParameter("в" , "ɱѭ")

	while true do 

		System:Sleep(500)

		if AI:IsStop() == true then
			break
		end

		if IsInFuben() == false then
			break
		end

		nComplete = GetMissionComplete()
		if nComplete ~= 0 then 
			break
		end

		local nRound = AI:GetParameter("ɱѭ")
		DbgPrintf("ǰɱѭ %d" , tonumber(nRound))
		local newStep = GetMissionStep(2)
		if g_StartFuben2 > 6 then
			break
		end

		if nRound > 0 then
			--and newStep ~= nPreStep 
			if FindObjectByName( g_Mission_Name2[nPreStep] , "NPC") ~= INVALID_ID then
				g_StartFuben2 = nPreStep
				System:Sleep(500)
				AI:SetParameter("в" , "ɱѭ")
			else
				if newStep > 0 then
					g_StartFuben2 = newStep
				else
					g_StartFuben2 = nPreStep + 1 
				end
					
				System:Sleep(500)
				break 
			end
		end
	end

	AI:Stop()
			
end

local g_Mission_Pos3 = {
	[0] = {{x=210,y=40}}
	--{x=83,y=160},{x=85,y=181},{x=63,y=174},
}

function OnFuben3()

	GetMissionComplete()
	if g_StartFuben2 > 6 then
		-- 
		AI:SetAI("ɱ")
		AI:SetParameter("ʼ")
		AI:SetParameter("ʰȡ", 0)
		AI:SetParameter("ͼ", g_MissionMap )

		for i, pos in ipairs( g_Mission_Pos3[0]) do
			AI:SetParameter("", "", pos.x, pos.y ) 
		end

	else
		return
	end

	AI:Start()

	AI:SetParameter("в" ,"", 1)
	AI:SetParameter("в" ,"Ӹ", 0)
	AI:SetParameter("в" , "" , 1)

	while true do 

		System:Sleep(500)

		if IsInFuben() == false then
			break
		end
		
		nComplete = GetMissionComplete()
		if nComplete ~= 0 then 
			if nComplete == 1 then
				--ͣһʱ
				if IsMsgCold("Quest_JF_Complete" , 15000) == true then
					break
				else
					OnPickup()
				end
			else
				break
			end
		else
			UpdateMsg("Quest_JF_Complete")
		end

	end

	AI:Stop()
			
end

function _SMain(...)

	-- ж϶
	if DataPool:GetTeamMemCount() < 3 then 
		ShowMessage(" 3 ˣ")
		return
	end

	while true do

		local nComplete = GetMissionComplete() 

		if IsInFuben() == false then
			g_StartFuben2 = -1
			--
			if nComplete == INVALID_ID then

				--ShowMessage("%s δȡ" , script_name )
				MoveToNPC(295 , 67 , 246 , "" )
				QuestFrameOptionClicked( script_name , CMP_PART_MATCH)	-- ѡѡ
				QuestFrameAcceptClicked()
				System:Sleep(2000)

				local strType,_,_,_,szText = DataPool:GetNPCEventList_Item(0)

				if strType == "text" then
					if string.find(szText, "һֻ") then
						System:UpdateRecord( script_name )
						break
					end
				end

			elseif nComplete == 0 then

				--ӳԻnpc
				MoveToNPC(295 , 67 , 246 , "" )
				QuestFrameOptionClicked( script_name , CMP_PART_MATCH)	-- ѡѡ
				QuestFrameOptionClicked( "ǰħɽ" , CMP_PART_MATCH)	-- ѡѡ
				System:Sleep(2000)

			elseif nComplete == 1 then

				--
				--ShowMessage("ִн")
				MoveToNPC(295 , 67 , 246 , "" )
				QuestFrameOptionClicked( script_name , CMP_PART_MATCH)	-- ѡѡ
				QuestFrameMissionContinue()
				QuestFrameMissionComplete()

			else

				--
				QuestFrameMissionAbnegate(g_idScript)

			end
		else
			--ڸ
			if nComplete == 0 then
				if g_nParam[2] ~= 1 or g_nParam[3] ~= 1 or g_nParam[4] ~=1 or g_nParam[7] ~=60 then
					OnFuben1()
				elseif g_StartFuben2 < 7 then
					OnFuben2()
				else
					OnFuben3()
				end
			else
				--
				MoveToNPC(209,48,g_MissionMap,"")
				QuestFrameOptionClicked( "뿪" , CMP_PART_MATCH)	-- ѡѡ
				System:Sleep(2000)
			end			
		end			

		System:Sleep(500)
	end

end

_SMain()
