//Creates a stronger attack when the end of a branch is reached.
    public void EndAttack()
    {
        List <DamageValues> dmgs   = new List <DamageValues>();
        SoldierEndAttack    attack = balanceController.GetEndAttack();

        if (grid.lastDirection == Constants.Direction.LEFT)
        {
            dmgs = battleController.enemyController.GetRandomEnemies(attack.hits, attack.value, true, true);
        }
        else if (grid.lastDirection == Constants.Direction.RIGHT)
        {
            dmgs = battleController.enemyController.GetRandomEnemies(attack.hits, attack.value, true, false);
        }

        foreach (DamageValues dv in dmgs)
        {
            Transform enemy = dv.entityHit;

            var shotTransform = Instantiate(lightningProjectile) as Transform;
            shotTransform.GetComponent <Projectile>().SetDamage(dv.GetDamage(), soldierAttack.value, 1);
            shotTransform.position = enemy.position;
        }
        if (dmgs.Count > 0)
        {
            currentSfx.value.Enqueue(specialActivationSound.clip);
            playSfxEvent.Invoke();
        }
    }
Example #2
0
    /// <summary>
    /// Generates the end attack's damage and hits depending on the current heat value.
    /// </summary>
    /// <returns></returns>
    public SoldierEndAttack GetEndAttack()
    {
        float            heatValue = balanceValue.value / maxBalanceValue.value;
        SoldierEndAttack attack    = new SoldierEndAttack();

        attack.type = SoldierEndAttack.Type.DAMAGE;
        if (heatValue < 0.25f)
        {
            attack.hits  = 1;
            attack.value = damage;
        }
        else if (heatValue < 0.5f)
        {
            attack.hits  = 2;
            attack.value = damage;
        }
        else if (heatValue < 0.75f)
        {
            attack.hits  = 3;
            attack.value = damage;
        }
        else
        {
            attack.hits  = 2;
            attack.value = damage;
        }
        return(attack);
    }