private int ExtraCardDrawFromPowerUps() { int extraCards = 0; foreach (PowerUp cardDrawBuff in battleData.GetPowerUpsOfType(PowerUp.PowerUpType.Agility)) { if (CheckPercentageChance(cardDrawBuff.GetAmount())) { extraCards++; } } return(extraCards); }
private int CalculateModifiedDamage(int damageAmount, int critChance) { ConfigData configData = FindObjectOfType <ConfigData>(); BattleData battleData = FindObjectOfType <BattleData>(); playerCurrentStatusEffects = configData.GetPlayerStatusEffects(); enemyCurrentStatusEffects = configData.GetEnemyStatusEffects(); int dodgeChance = Mathf.Clamp(playerCurrentStatusEffects.GetDodgeChance() + FindObjectOfType <BattleData>().GetPlayerDodgeMapBuff(), 0, 80); if (PercentChance(dodgeChance)) { Debug.Log("Dodged!"); // Counterattack List <PowerUp> counterattacks = battleData.GetPowerUpsOfType(PowerUp.PowerUpType.Counterattack); foreach (PowerUp powerUp in counterattacks) { SelfDamage(powerUp.GetAmount()); } return(0); } damageAmount += enemyCurrentStatusEffects.GetMomentumStacks(); damageAmount += playerCurrentStatusEffects.GetVulnerableStacks(); damageAmount -= playerCurrentStatusEffects.GetDamageResistStacks(); damageAmount -= enemyCurrentStatusEffects.GetWeaknessStacks(); damageAmount -= battleData.GetEnemyDamageDebuff(); // Minimum damage = 1 is probably not necessary any more... //if (damageAmount < 1) // damageAmount = 1; damageAmount -= battleData.GetPlayerDefenseBuff(); damageAmount = CheckAndApplyCritical(damageAmount, critChance); if (damageAmount < 0) { return(0); } return(damageAmount); }