public override void OnUpdate()
    {
        if (isInitialised == false)
        {
            Initialise();
        }

        if (stalkingPlayer == true)
        {
            if (shouldWeFollowPlayer() == true)
            {
                move();

                if (refreshPathToPlayer())
                {
                    myController.pf.getPath(this.gameObject, CommonObjectsStore.player);
                }
            }
            else
            {
                if (areWeTooCloseToPlayer())
                {
                    stalkingPlayer = false;
                }
            }
        }
        else
        {
            if (myController.npcB.alarmed == false)
            {
                if (hasPathToCivilianAction == false)
                {
                    actionToDo = LevelController.me.getCivilianAction();
                    if (myController.pf.target == null || myController.pf.target != actionToDo.positionForAction.gameObject)
                    {
                        myController.pf.getPath(this.gameObject, actionToDo.positionForAction.gameObject);
                    }
                    hasPathToCivilianAction = true;
                }
                move();
                avoidPlayerTimer -= Time.deltaTime;
                if (goBackToStalkingPlayer() == true)
                {
                    stalkingPlayer          = true;
                    hasPathToCivilianAction = false;
                }
            }
            else
            {
                myController.npcB.doing = whatAiIsDoing.attacking;
            }
        }
    }
    public override void Initialise()
    {
        myType       = behaviourType.civilianAction;
        myController = this.gameObject.GetComponent <NPCController> ();

        if (actionToDo == null)
        {
            actionToDo = LevelController.me.getCivilianAction();
        }
        myController.pf.getPath(this.gameObject, actionToDo.positionForAction.gameObject);

        isInitialised = true;
    }
    public override void OnUpdate()
    {
        if (isInitialised == false)
        {
            Initialise();
        }


        if (needNewPath == true || actionToDo.actionAvailable == false)
        {
            if (getActionOfSameType == false)
            {
                actionToDo = LevelController.me.getCivilianAction();
            }
            else
            {
                actionToDo = LevelController.me.getActionOfSameType(actionToDo.actionName);
            }
            //if (myController.pf.target != actionToDo.positionForAction.gameObject && myController.pf.waitingForPath==false) {
            //Debug.Log(this.gameObject.name + " is wanting to search for a new path to civilian action!");
            if (myController.pf.target == null || myController.pf.target != actionToDo.positionForAction.gameObject)
            {
                myController.pf.getPath(this.gameObject, actionToDo.positionForAction.gameObject);
            }
            needNewPath = false;
            //}
        }



        posImGoingTo = actionToDo.positionForAction.transform.position.ToString();
        if (areWeAtPosition() == false)
        {
            if (myController.pf.askedForNewPath == false)
            {
                moveToPosition();
            }
        }
        else
        {
            if (actionToDo.doingAction == null)
            {
                actionToDo.setNPCAction(this.gameObject);
                myController.pf.target = null;
                needNewPath            = false;
            }
            else
            {
                if (actionToDo.doingAction == this.gameObject)
                {
                    if (actionToDo.doWeHaveNPCDoingAnimation == true && actionToDo.doingAction == this.gameObject)
                    {
                        //			////////Debug.Log ("Calling update on civilian action " + actionToDo.gameObject.ToString ());
                        myController.pf.target = null;

                        actionToDo.OnUpdate();

                        if (actionToDo.timeActionTakes <= 0)
                        {
                            //myController.pf.clearPath ();
                            Destroy(this);                             //done with action
                        }
                    }
                }
                else
                {
                    getActionOfSameType = true;
                    needNewPath         = true;
                }
            }
            //////////Debug.Log ("Calling update on civilian action in the wrong place " + actionToDo.gameObject.ToString ());
        }
    }