public void Shake(float scale) { cameraShakeController.Shake(scale); }
public void Attack(EnemyBase[] enemyStats, int selectedEnemy, Skill skill, CameraShakeController cameraShakeController) { int playerDamage = damage; Color attackColor = Color.white; int criticalChance = 10 + ((criticalHit - 1) * 2); if (Random.Range(1, 101) <= criticalChance) { // Critical hit float criticalMultiplier = 2 + (criticalHit / 10f); Debug.Log("Player damage: " + playerDamage); playerDamage = Mathf.RoundToInt(playerDamage * criticalMultiplier); Debug.Log("Critical multiplier: " + criticalMultiplier); Debug.Log("Critical damage: " + playerDamage); attackColor = Color.red; StartCoroutine(cameraShakeController.Shake(0.1f, 0.8f)); } if (IsBuffed()) { playerDamage *= 2; } if (skill == Skill.Areal) { // Damage all enemies foreach (EnemyBase eb in enemyStats) { if (!eb.isDestroyed) { eb.TakeDamage(playerDamage, attackColor); } } } else { if (skill == Skill.Basic) { playerDamage += Mathf.RoundToInt(playerDamage * (PlayerStatsController.ps.basicEffect / 100f)); // Chance for poison attack if (PlayerStatsController.ps.isSkillUnlocked[(int)Skill.PoisonChance] && Random.Range(1, 101) <= PlayerStatsController.ps.poisonChance) { enemyStats[selectedEnemy].ApplyPoison(PlayerStatsController.ps.poisonLength); } } else if (skill == Skill.Stun) { playerDamage = Mathf.RoundToInt(playerDamage / 2f); // half damage enemyStats[selectedEnemy].ApplyStun(PlayerStatsController.ps.stunLength); } else if (skill == Skill.Ultimate) { playerDamage = Mathf.RoundToInt(playerDamage * PlayerStatsController.ps.ultimateEffect); } else if (skill == Skill.Poison) { enemyStats[selectedEnemy].ApplyPoison(PlayerStatsController.ps.poisonLength); } enemyStats[selectedEnemy].TakeDamage(playerDamage, attackColor); } }