Exemple #1
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb = sAI.GetBlackboard();

        if (bb.enemyTarget != null)
        {
            if (bb.enemyTarget.getEnemyType() == EnemyType.HELLEPHANT || bb.enemyTarget.getEnemyType() == EnemyType.ZOMBEAR)
            {
                Vector3 dir             = bb.enemyTarget.transform.position - sAI.transform.position;
                float   distFromCrystal = (Vector3.zero - sAI.transform.position).magnitude;
                float   dist            = dir.magnitude;
                if (dist > 5.0f && distFromCrystal < 50.0f)
                {
                    UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>();

                    agent.destination = bb.enemyTarget.transform.position;

                    output = TASK_RETURN_STATUS.SUCCEED;
                }
            }
        }


        return(output);
    }
Exemple #2
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb = sAI.GetBlackboard();

        if (bb.enemyTarget != null)
        {
            Vector3 dir = sAI.transform.position - bb.enemyTarget.gameObject.transform.position;

            float dist = dir.magnitude;
            if (dist < 5.0f)
            {
                //dir.Normalize();

                dir += sAI.transform.position;
                UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>();
                agent.destination = dir;

                //sAI.transform.position += dir;

                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }
        return(output);
    }
Exemple #3
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        Blackboard bb = sAI.GetBlackboard();

        if (GameManager.GetCurrentWaveNumber() > 4 && GameManager.GetCurrentGold() > 150)
        {
            if (bb.ne == null)
            {
                bb.ne = new Tower();
                GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST);
            }
            else if (bb.nw == null)
            {
                bb.nw = new Tower();
                GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHWEST);
            }
            else if (bb.se == null)
            {
                bb.se = new Tower();
                GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST);
            }
            else
            {
                GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST);
                bb.sw = new Tower();
            }
        }
        return(TASK_RETURN_STATUS.SUCCEED);
    }
Exemple #4
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb   = sAI.GetBlackboard();
        float      dist = (sAI.transform.position - bb.moveToPosition).magnitude;

        if (dist > 1.0f)
        {
            UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>();
            agent.destination = bb.moveToPosition;

            output = TASK_RETURN_STATUS.FAILED;
        }
        else
        {
            bb.nodesForAStar.Remove(bb.currNodeToGetTo);
            if (bb.nodesForAStar.Count > 0)
            {
                bb.currNodeToGetTo = bb.nodesForAStar[0];
                bb.moveToPosition  = bb.currNodeToGetTo.transform.position;
            }
            output = TASK_RETURN_STATUS.SUCCEED;
        }

        return(output);
    }
Exemple #5
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        //run A*
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb = sAI.GetBlackboard();


        if (bb.nodesForAStar.Count <= 0)
        {
            GameObject go       = GameObject.FindGameObjectWithTag("AStar");
            AStarObj   aStarObj = go.GetComponent <AStarObj>();
            //AStarObj aStarObj = GameObject.FindGameObjectWithTag("AStar").GetComponent<AStarObj>(); //new AStarObj();
            aStarObj.RunThroughPath(sAI, bb.startNode, bb.goalNode);
            if (bb.nodesForAStar.Count > 0)
            {
                output             = TASK_RETURN_STATUS.SUCCEED;
                bb.currNodeToGetTo = bb.nodesForAStar[0];
                bb.moveToPosition  = bb.currNodeToGetTo.transform.position;
            }
        }
        else
        {
            output = TASK_RETURN_STATUS.SUCCEED;
        }

        return(output);
    }
Exemple #6
0
    Enemy FindClosestHellephantTarget(Survivor_AI sAI)
    {
        Enemy target = null;

        float closestSoFar = Mathf.Infinity;
        //int worst = 0;

        List <Enemy> allEnemies = GameManager.getHellephantList();

        foreach (Enemy e in allEnemies)
        {
            if (e.getState() != EnemyState.DEAD)
            {
                float dist = (e.transform.position - sAI.transform.position).magnitude;
                if (dist < closestSoFar)
                {
                    target       = e;
                    closestSoFar = dist;
                    sAI.GetBlackboard().distFromTarget = closestSoFar;
                }
            }
        }


        return(target);
    }
Exemple #7
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Enemy e = FindClosestHellephantTarget(sAI);

        if (e != null)
        {
            if (sAI.GetBlackboard().distFromTarget < 20.0f)
            {
                sAI.GetBlackboard().enemyTarget = e;
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #8
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Enemy closest = FindClosestTarget(sAI);

        if (closest != null)
        {
            sAI.GetBlackboard().enemyTarget = closest;
            float dist = (closest.transform.position - sAI.transform.position).magnitude;
            sAI.GetBlackboard().distFromTarget = dist;
            output = TASK_RETURN_STATUS.SUCCEED;
        }


        return(output);
    }
Exemple #9
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Enemy e = FindClosestBearTarget(sAI);

        if (e != null)
        {
            if (sAI.GetBlackboard().distFromTarget < 40.0f && (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SNIPER).getAmmo() > 0 || sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.ASSAULT).getAmmo() > 0))
            {
                sAI.GetBlackboard().enemyTarget = e;
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #10
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        if (sAI.GetBlackboard().nodesForAStar.Count <= 0)
        {
            output = TASK_RETURN_STATUS.SUCCEED;
        }

        return(output);
    }
Exemple #11
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb = sAI.GetBlackboard();

        bb.distFromTarget = GetDistFromTarget(bb.enemyTarget, sAI);
        output            = TASK_RETURN_STATUS.SUCCEED;

        return(output);
    }
Exemple #12
0
    /* FOR SHOWING OFF ASTAR IN GAME IF TIME *****************************************/
    void SearchForLoot()
    {
        if (SearchingForLoot == false) // && GameManager.GetCurrentWaveNumber() < 4)
        {
            List <Loot> lootlist = GameManager.GetLootList();
            if (lootlist.Count > 0)
            {
                this.UpdateSurvivorList();

                foreach (Loot loot in lootlist)
                {
                    //if(loot.GetLootType() != LOOT_TYPE.GRENADES || loot.GetLootType() != LOOT_TYPE.NULL)
                    //{
                    Survivor_AI moving = GetClosestSurvivor(loot.transform.position);
                    PathNode[]  nodes  = GetClosestPathNode(moving.transform.position, loot.transform.position);
                    if (moving != null)
                    {
                        if (moving.mvmtTracker != Moving.MOVING_ON_ASTAR)
                        {
                            moving.start = nodes[0];
                            moving.end   = nodes[1];
                            moving.GetBlackboard().startNode = nodes[0];
                            moving.GetBlackboard().goalNode  = nodes[1];
                            moving.SetMvmtTree(MOVEMENT_TREE.ASTAR);
                            SearchingForLoot   = true;
                            moving.mvmtTracker = Moving.MOVING_ON_ASTAR;
                            break;
                        }
                    }
                    //}
                }
            }
            else
            {
                Invoke("SearchForLoot", 15.0f);
            }
        }
    }
Exemple #13
0
    /* DO NOT USE UNLESS FOR SURE THAT THE ENEMY ORDERING IS EASIEST TO HARDEST IN ENUM*/

    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Enemy target = FindClosestWorstTarget(sAI);

        if (target != null)
        {
            sAI.GetBlackboard().enemyTarget = target;
            output = TASK_RETURN_STATUS.SUCCEED;
        }


        return(output);
    }
Exemple #14
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.GRENADE_LAUNCHER).getAmmo() > 0)
        {
            if ((sAI.transform.position - sAI.GetBlackboard().enemyTarget.transform.position).magnitude <= 10)
            {
                sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.GRENADE_LAUNCHER);
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #15
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;
        Blackboard         bb     = sAI.GetBlackboard();

        if (bb.nodesForAStar.Count > 0)
        {
            output = TASK_RETURN_STATUS.SUCCEED;
        }
        //for breakpointing
        else
        {
            output = TASK_RETURN_STATUS.FAILED;
        }
        return(output);
    }
Exemple #16
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        WEAPON_TYPE prevType = sAI.GetSurvivor().GetCurrentWeapon().type;

        sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.GRENADE_LAUNCHER);
        if (sAI.GetSurvivor().GetCurrentWeapon().getAmmo() > 0)
        {
            Enemy target = sAI.GetBlackboard().enemyTarget;
            sAI.GetSurvivor().Fire(target.transform.position + (sAI.GetEnemyHeightOffset() * Vector3.up));
            sAI.GetSurvivor().SwitchWeapons(prevType);
            output = TASK_RETURN_STATUS.SUCCEED;
        }
        return(output);
    }
Exemple #17
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;
        Blackboard         bb     = sAI.GetBlackboard();

        if (bb.distFromTarget < 10.0f)
        {
            if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SHOTGUN).getAmmo() > 0)
            {
                sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.SHOTGUN);
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #18
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;
        Blackboard         bb     = sAI.GetBlackboard();

        if (bb.distFromTarget <= 25.0f) //&& bb.distFromTarget >= 10.0f)
        {
            //if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.PISTOL).getAmmo() > 0)
            //{
            sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.PISTOL);
            output = TASK_RETURN_STATUS.SUCCEED;
            //}
        }

        return(output);
    }
Exemple #19
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Enemy target = sAI.GetBlackboard().enemyTarget;


        if (target != null)
        {
            sAI.GetSurvivor().Fire(target.transform.position + (sAI.GetEnemyHeightOffset() * Vector3.up));
            output = TASK_RETURN_STATUS.SUCCEED;
        }



        return(output);
    }
Exemple #20
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;

        Blackboard bb = sAI.GetBlackboard();

        if (GameManager.getZomBunnyList().Count > 5)
        {
            if ((FindClosestBunnyTarget(sAI).transform.position - sAI.transform.position).magnitude < 8.0f)
            {
                //sAI.gameObject
                Vector3 normalizedDir             = FleeHord(sAI);
                UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>();

                agent.destination = normalizedDir + sAI.transform.position;
                output            = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #21
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;
        Blackboard         bb     = sAI.GetBlackboard();

        if (sAI.mvmtTracker == Moving.MOVING_ON_ASTAR)
        {
            return(output);
        }

        if (bb.distFromTarget < 35.0f && bb.distFromTarget > 25.0f)
        {
            if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.ASSAULT).getAmmo() > 0)
            {
                sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.ASSAULT);
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #22
0
    public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
    {
        TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED;
        Blackboard         bb     = sAI.GetBlackboard();

        if (sAI.mvmtTracker == Moving.MOVING_ON_ASTAR)
        {
            return(output);
        }

        if (bb.distFromTarget > 25.0f && bb.distFromTarget < 37.0f && bb.enemyTarget.getEnemyType() == EnemyType.ZOMBEAR)
        {
            if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SNIPER).getAmmo() > 0) //&& sAI.GetBlackboard().enemyTarget.getEnemyType() != EnemyType.ZOMBUNNY)
            {
                sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.SNIPER);
                output = TASK_RETURN_STATUS.SUCCEED;
            }
        }

        return(output);
    }
Exemple #23
0
    /*public AStarObj()
     * {
     *  pathNodeArr = GameObject.FindGameObjectsWithTag("PNode");
     *  pathNodeList = new List<PathNode>();
     *
     *
     *  foreach (GameObject go in pathNodeArr)
     *  {
     *      PathNode n = go.GetComponent<PathNode>();
     *      pathNodeList.Add(n);
     *  }
     *
     *  open = new List<PathNode>();
     *  closed = new List<PathNode>();
     *  finalPath = new List<PathNode>();
     * }*/


    public void RunThroughPath(Survivor_AI sAI, PathNode start, PathNode end)
    {
        NullOutParentsAndDist();
        CalculatePath(sAI, start, end);
        sAI.GetBlackboard().nodesForAStar = finalPath;
    }
Exemple #24
0
 public override TASK_RETURN_STATUS Run(Survivor_AI sAI)
 {
     sAI.GetBlackboard().WaveNumber++;
     return(TASK_RETURN_STATUS.SUCCEED);
 }