require( "common" )


-- 마렌느
function AdlFH_Marlene( Handle, MapIndex )
cExecCheck "AdlFH_Marlene"

	return Guarder( Handle, MapIndex )

end

-- 경비병
function AdlFH_GuardAlber( Handle, MapIndex )
cExecCheck "AdlFH_GuardAlber"

	return Guarder( Handle, MapIndex )

end

-- 경비병
function AdlFH_GuardEstelle( Handle, MapIndex )
cExecCheck "AdlFH_GuardEstelle"

	return Guarder( Handle, MapIndex )

end



GuardMemBlock = {}

function Guarder( Handle, MapIndex )
cExecCheck "Guarder"

	local Var = GuardMemBlock[Handle]

	if cIsObjectDead( Handle ) then	-- 죽었음

		-- 죽은 경비병이 마렌느 일 경우 대사하고 죽음
		if InstanceField[MapIndex] ~= nil then

			local Field = InstanceField[MapIndex]

			if Field ~= nil then

				if Handle == Field.Marlene then

					cMobDialog( MapIndex,
									DialogInfo.Marlene_Death[1].Portrait,
									DialogInfo.Marlene_Death[1].FileName,
									DialogInfo.Marlene_Death[1].Index )

				end

			end
		end

		cAIScriptSet( Handle )		-- 스크립트 없앰
		GuardMemBlock[Handle] = nil	-- 메모리해제

		return ReturnAI.END
	end


	if Var == nil then
		GuardMemBlock[Handle] = {}

		Var					= GuardMemBlock[Handle]

		Var.Handle			= Handle
		Var.MapIndex		= MapIndex

		Var.StepFunc		= GuarderStop
	end


	return Var.StepFunc( Var )

end




function CheckOnSurvivalOfLoussier( Var )
cExecCheck "CheckOnSurvivalOfLoussier"

	if Var == nil then
		return
	end

	-- 필드 전역변수. 루시에 핸들
	if InstanceField[Var.MapIndex] == nil then
		return
	end

	local loussier = InstanceField[Var.MapIndex].LoussierHandle

	-- 마렌느와 경비병은 대기하다가 루시에가 죽으면 없앰
	if loussier == nil then

		cAIScriptSet( Handle )		-- 스크립트 없앰
		cNPCVanish( Var.Handle )

		Var = nil
	end

end


function GuarderStop( Var )
cExecCheck "GuarderStop"

	CheckOnSurvivalOfLoussier( Var )

	return ReturnAI.END

end


function GuarderActivity( Var )
cExecCheck "GuarderActivity"

	CheckOnSurvivalOfLoussier( Var )

	return ReturnAI.CPP

end