public void Depossess()
    {
        transform.parent = null;

        transform.tag = "Human";

        state = HUMANSTATE.RESUME_PATROL;
    }
    public void Possess(Transform p)
    {
        transform.parent = p;

        transform.tag = "Possessed";

        lastCriticalState = state;
        state             = HUMANSTATE.POSSESSED;
    }
    public void BecomeCurious(Vector3 position)
    {
        if (state != HUMANSTATE.DEAD && state != HUMANSTATE.ALERT &&
            state != HUMANSTATE.RESUME_PATROL && state != HUMANSTATE.POSSESSED)
        {
            StopCurrentPath(prevState);  // path gets stopped a bit early here

            investigatePosition = position;

            lastCriticalState     = state;
            lastCriticalTransform = transform;

            state = HUMANSTATE.INVESTIGATE;
        }
    }
    void StopCurrentPath(HUMANSTATE prev)
    {
        switch (prev)
        {
        case HUMANSTATE.LINE:
            linePath.StopPath();
            break;

        case HUMANSTATE.SQUARE:
            squarePath.StopPath();
            break;

        default:
            break;
        }
    }
    void Start()
    {
        player = GameObject.FindWithTag("Player");

        prevState = HUMANSTATE.NONE;
    }