REGISTER_GOAL(GOAL_COMMON_ApproachTarget, "ApproachTarget")
REGISTER_DBG_GOAL_PARAM(GOAL_COMMON_ApproachTarget, 0, "ړΏ", 0)
REGISTER_DBG_GOAL_PARAM(GOAL_COMMON_ApproachTarget, 1, "B苗", 0)
REGISTER_DBG_GOAL_PARAM(GOAL_COMMON_ApproachTarget, 2, "Ώ", 0)
REGISTER_DBG_GOAL_PARAM(GOAL_COMMON_ApproachTarget, 3, "?", 0)
REGISTER_DBG_GOAL_PARAM(GOAL_COMMON_ApproachTarget, 4, "K[hEzStateԍ", 0)
REGISTER_GOAL_UPDATE_TIME(GOAL_COMMON_ApproachTarget, 0, 0)
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_ApproachTarget, true)
function ApproachTarget_Activate(ai, goal)
    local life_time = goal:GetLife()
    local targetType = goal:GetParam(0)
    local range = goal:GetParam(1)
    local turnTarget = goal:GetParam(2)
    local bWalk = goal:GetParam(3)
    local guardActionId = goal:GetParam(4)
    local moveTargetType = AI_DIR_TYPE_CENTER
    local distDir = 0
    local resultTypeIfGuardSuccess = goal:GetParam(5)
    local isLifeSuccessGuard = goal:GetParam(6)
    goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, life_time, targetType, moveTargetType, range, turnTarget, bWalk, moveTargetType, distDir)
    if 0 < guardActionId then
        local targetDist = ai:GetDist(targetType)
        if range < targetDist then
            ai:DoEzAction(life_time, guardActionId)
        end
    end
    return 
end

function ApproachTarget_Update(ai, goal, dT)
    local guardActionId = goal:GetParam(4)
    if 0 < guardActionId then
        if ai:IsInterupt(INTERUPT_Damaged) then
            return GOAL_RESULT_Failed
        elseif ai:IsInterupt(INTERUPT_SuccessGuard) then
            local resultTypeIfGuardSuccess = goal:GetParam(5)
            if resultTypeIfGuardSuccess ~= GOAL_RESULT_Continue then
                return resultTypeIfGuardSuccess
            end
        end
    end
    if goal:GetLife() <= 0 then
        local isLifeSuccessGuard = goal:GetParam(6)
        if isLifeSuccessGuard then
            return GOAL_RESULT_Success
        else
            return GOAL_RESULT_Failed
        end
    else
        return GOAL_RESULT_Continue
    end
end

function ApproachTarget_Terminate(ai, goal)
    return 
end

function ApproachTarget_Interupt(ai, goal)
    return false
end

return 
