//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(); } }
/// <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); }