Example #1
0
 private void Awake()
 {
     if (statRef == null)
     {
         statRef = this;
     }
 }
Example #2
0
    protected virtual void Awake()
    {
        FiniteStateMachine = new FiniteStateMachine();
        StatsManager       = new EnemyStatsManager(_enemyStatsData);

        FacingDirection = 1;
    }
Example #3
0
 void Awake()
 {
     stats = gameObject.GetComponent <EnemyStatsManager>();
     agent = gameObject.GetComponent <NavMeshAgent>();
     // Determine the figher class... AI actions based on weightclass.
     determineBuild = this.gameObject.tag.ToString();
     playerID       = Resources.Load("Prefabs/Characters/PlayerCharacter").name as string;
 }
Example #4
0
 // Use this for initialization
 void Start()
 {
     player            = GameObject.FindGameObjectWithTag("Player");
     gameManager       = GameObject.FindGameObjectWithTag("GameManager");
     radiusOfPlayer    = gameManager.GetComponent <StatsManager>().PlayerRadius;
     enemyStatsManager = GetComponent <EnemyStatsManager>();
     enemyType         = enemyStatsManager.EnemyType;
     generateNewLocation();
 }
Example #5
0
 // Start is called before the first frame update
 void Start()
 {
     player             = FindObjectOfType <PlayerController>();
     enemyCurrentHealth = enemyMaxHealth;
     enemyInfoManager   = FindObjectOfType <EnemyInfoManager>();
     enemyStats         = FindObjectOfType <EnemyStatsManager>();
     respawnController  = FindObjectOfType <RespawnController>();
     qki           = FindObjectOfType <QuestKillsIncrease>();
     questsManager = FindObjectOfType <QuestsManager>();
 }
Example #6
0
    void Awake()
    {
        //Instantiate(soundManager, this.gameObject.transform);

        if (Toolbox._instance != null)
        {
            Destroy(this.gameObject);
        }

        //manager = GameObject.FindGameObjectWithTag("Manager");

        if (manager == null)
        {
            var go = new GameObject(nameof(manager));
            go.transform.SetParent(transform);
            manager = go.AddComponent <SceneLoader>();
        }

        if (statsManager == null)
        {
            var go = new GameObject(nameof(statsManager));
            go.transform.SetParent(transform);
            statsManager = go.AddComponent <EnemyStatsManager>();
        }

        if (soundManager == null)
        {
            soundManager = Instantiate(Resources.Load(nameof(SoundManager), typeof(GameObject)) as GameObject);
            soundManager.transform.SetParent(transform);
        }

        if (musicManager == null)
        {
            if (soundManager != null)
            {
                musicManager = soundManager.GetComponent <MusicManager>();
            }
        }

        if (uIManager == null)
        {
            uIManager = Instantiate(Resources.Load(nameof(UIManager), typeof(GameObject)) as GameObject);
            uIManager.transform.SetParent(transform);
        }

        if (screenFade == null)
        {
            screenFade = Instantiate(Resources.Load(nameof(ScreenFade), typeof(GameObject)) as GameObject);
            screenFade.transform.SetParent(transform);
        }
    }
Example #7
0
 public void UpdateTargetedObjectManager()
 {
     // Check if the cursor is showing an enemy
     if (theCursor.shownObject.tag == "Enemy")
     {
         enemyStatsManager = theCursor.shownObject.GetComponent <EnemyStatsManager>();
         healthBar.fillRect.GetComponentInChildren <Image>().color = Color.red;
         healthBar.maxValue = enemyStatsManager.maxHealthPoints;
         // If overkilled, show current health as 0
         if (enemyStatsManager.currentHealthPoints <= 0)
         {
             healthBar.value   = 0;
             healthPoints.text = "0/" + enemyStatsManager.maxHealthPoints;
             // Otherwise show current health
         }
         else
         {
             healthBar.value   = enemyStatsManager.currentHealthPoints;
             healthPoints.text = "" + enemyStatsManager.currentHealthPoints + "/" + enemyStatsManager.maxHealthPoints;
         }
         objectName.text  = "" + enemyStatsManager.enemyName;
         objectLevel.text = "" + enemyStatsManager.enemyLevel;
     }
     // Check if the cursor is showing an NPC
     if (theCursor.shownObject.tag == "NPC")
     {
         NPCController = theCursor.shownObject.GetComponent <NPCController>();
         // Check if not a sign
         if (!NPCController.isSign)
         {
             healthBar.fillRect.GetComponentInChildren <Image>().color = Color.green;
             healthBar.maxValue = 1;
             healthBar.value    = 1;
             healthPoints.text  = "Friendly";
             objectName.text    = "" + NPCController.NPCName;
             objectLevel.text   = "" + NPCController.NPCLevel;
         }
     }
 }
Example #8
0
 // Use this for initialization
 void Start()
 {
     enemyStatsManager = GetComponent <EnemyStatsManager>();
     Player            = GameObject.FindGameObjectWithTag("Player");
 }
Example #9
0
    // Auto-attack the player
    // TODO: SET THIS TO AUTO ATTACK FUNCTION
    public void AttackPlayer()
    {
        PlayerLevelStats  playerStats = thePlayer.GetComponent <PlayerLevelStats>();
        EnemyStatsManager enemyStats  = gameObject.GetComponent <EnemyStatsManager>();

        if (distanceFromPlayer <= attackRange)
        {
            // Don't move if in attack range
            enemyRigidbody.velocity = Vector2.zero;
            // Check if one of the 2 halves is over
            if (attackTimerCounter <= 0)
            {
                // Set the counter back to the max
                attackTimerCounter = attackTimer;
                // If attack is not on cooldown after one half
                if (!attackCooldown)
                {
                    int   i = enemyStats.enemyLevel;
                    float enemyDamageAfterMultipliers = attackDamage;
                    // Check if player is higher level than enemy
                    if (enemyStats.enemyLevel > playerStats.currentLevel)
                    {
                        while (i > playerStats.currentLevel)
                        {
                            // Multiply damage by 150%
                            enemyDamageAfterMultipliers *= 1.5f;
                            i--;
                        }
                    }
                    else if (enemyStats.enemyLevel < playerStats.currentLevel)
                    {
                        while (i < playerStats.currentLevel)
                        {
                            // Reduce damage by 50%
                            enemyDamageAfterMultipliers *= 0.5f;
                            i++;
                        }
                    }
                    // Equation for the damage reduction per defense
                    float damageReductionPercentage = 100f - Mathf.Pow(10f, 2 - 0.0030103f * playerStats.defense);
                    enemyDamageAfterMultipliers -= enemyDamageAfterMultipliers * (damageReductionPercentage / 100);
                    // Crit chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, critChance, critMultiplier);
                    // Reduce damage chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, playerStats.reduceDamageChance, -playerStats.reduceDamageMultiplier);
                    // Miss chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, playerStats.missChance, -100);
                    // Deal damage
                    thePlayer.GetComponent <PlayerHealthManager>().SetCurrentHeatlh(-Mathf.RoundToInt(enemyDamageAfterMultipliers), true);
                    // Set the cooldown to true
                    attackCooldown = true;
                }
                else
                {
                    // Set the cooldown to false
                    attackCooldown = false;
                }
            }
            // Countdown time
            attackTimerCounter -= Time.deltaTime;
        }
        else
        {
            // Enemy is moving
            //transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, moveSpeed * Time.deltaTime);
            enemyRigidbody.velocity = new Vector2((thePlayer.transform.position.x - transform.position.x) / distanceFromPlayer * moveSpeed, (thePlayer.transform.position.y - transform.position.y) / distanceFromPlayer * moveSpeed);
        }
    }
Example #10
0
 // Use this for initialization
 void Start()
 {
     stats = GetComponent <EnemyStatsManager>();
 }
 void Start()
 {
     _statsManager              = GetComponentInParent <Enemy>().StatsManager;
     _statsManager.DamageEvent += OnDamage;
 }
Example #12
0
 // Use this for initialization
 void Start()
 {
     enemyStatsManager = transform.parent.parent.GetComponent <EnemyStatsManager>();
 }
Example #13
0
 // Use this for initialization
 void Start()
 {
     gameManager = GameObject.FindGameObjectWithTag("GameManager");
     stats       = GetComponent <EnemyStatsManager>();
 }
Example #14
0
    // Attack an enemy
    private void AttackEnemy(GameObject enemy)
    {
        // Reduce amount of getting component
        SlimeController   targetedEnemyController = enemy.GetComponent <SlimeController>();
        EnemyStatsManager targetedEnemyStats      = enemy.GetComponent <EnemyStatsManager>();

        // 3 stages to attack, first half windup, instance of damage, second half cooldown
        if (!engaging)
        {
            attackTimerCounter = attackTimer;
            engaging           = true;
            attackCooldown     = false;
            attacking          = false;
        }
        // Check if one of the 2 halves is over
        if (attackTimerCounter <= 0)
        {
            // Set the counter back to the max
            attackTimerCounter = attackTimer;
            // If attack is not on cooldown after one half
            if (!attackCooldown)
            {
                // Check what player is targeting
                if (targetedEnemyController.targeted == true && engaging)
                {
                    int   i = playerStats.currentLevel;
                    float playerDamageAfterMultipliers = playerStats.attack;
                    // Add power to damage
                    playerDamageAfterMultipliers += playerStats.power;
                    // Check if player is higher level than enemy
                    if (playerStats.currentLevel > targetedEnemyStats.enemyLevel)
                    {
                        while (i > targetedEnemyStats.enemyLevel)
                        {
                            // Multiply damage by 150%
                            playerDamageAfterMultipliers *= 1.5f;
                            i--;
                        }
                    }
                    else if (playerStats.currentLevel < targetedEnemyStats.enemyLevel)
                    {
                        while (i < targetedEnemyStats.enemyLevel)
                        {
                            // Reduce damage by 50%
                            playerDamageAfterMultipliers *= 0.5f;
                            i++;
                        }
                    }
                    // Equation for the damage reduction per defense
                    float damageReductionPercentage = 100f - Mathf.Pow(10f, 2 - 0.0030103f * targetedEnemyController.defense);
                    playerDamageAfterMultipliers -= playerDamageAfterMultipliers * (damageReductionPercentage / 100);
                    // Crit chance
                    playerDamageAfterMultipliers = CheckChance(playerDamageAfterMultipliers, weaponCritChance, weaponCritMultiplier);
                    // Reduce damage chance
                    playerDamageAfterMultipliers = CheckChance(playerDamageAfterMultipliers, targetedEnemyController.reduceDamageChance, -targetedEnemyController.reduceDamageMultiplier);
                    // Miss chance
                    playerDamageAfterMultipliers = CheckChance(playerDamageAfterMultipliers, targetedEnemyController.missChance, -100);
                    // Deal damage
                    targetedEnemyStats.SetEnemyHealth(-Mathf.RoundToInt(playerDamageAfterMultipliers), true);
                    // Make the enemy hostile
                    targetedEnemyController.resetHostile = true;
                }
                // Set the cooldown to true
                attackCooldown = true;
                // Set animation to attacking
                attacking = true;
            }
            else
            {
                // Set the cooldown to false
                attackCooldown = false;
                // Set the animation to idling
                attacking = false;
            }
        }
        // Countdown time
        attackTimerCounter -= Time.deltaTime;
    }