Exemplo n.º 1
0
    public void ResetFoe(bool hostileReset = false)
    {
        animator.SetBool("isDead", false);
        animator.SetBool("isPreparingAttack", false);
        animator.SetBool("isMoving", false);
        animator.SetBool("isAttacking", false);
        life       = maxLife;
        morals     = maxMorals;
        patrolPath = null;

        if (hostileReset)
        {
            target = playerTransform;
            state  = State.POSITIONING;
            foesManager.RegisterToFightingList(this);
        }
        else
        {
            state = State.IDLE;

            // Check if inside a building
            if (patrolPathGenerator.isInOpenBuilding(transform.position))
            {
                return;
            }

            // Try to get a patrol path
            patrolPath = patrolPathGenerator.GeneratePatrolPath(transform.position);

            // If no patrol path has been return, prepare to wander around the map
            if (patrolPath == null)
            {
                wanderingPoint.transform.position = patrolPathGenerator.GetRandomWalkableNode();
                target = wanderingPoint.transform;
                pathFindingManager.RegisterToQueue(this);
            }
            else
            {
                wanderingPoint.transform.position = Vector3.zero;
            }
        }
    }