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