private void GainStatus(StatusEffect.StatusType statusType, int stacks, int duration)
    {
        ConfigData configData = FindObjectOfType <ConfigData>();

        enemyCurrentStatusEffects = configData.GetEnemyStatusEffects();
        enemyCurrentStatusEffects.InflictStatus(statusType, stacks, playerOrEnemy, duration);
    }
 public void SetupStatusEffectHolders()
 {
     StatusEffectHolder[] statusEffectHolders = FindObjectsOfType <StatusEffectHolder>();
     foreach (StatusEffectHolder statusEffectHolder in statusEffectHolders)
     {
         if (statusEffectHolder.IsPlayerOrEnemy() == "Player")
         {
             playerStatusEffects = statusEffectHolder;
         }
         else if (statusEffectHolder.IsPlayerOrEnemy() == "Enemy")
         {
             enemyStatusEffects = statusEffectHolder;
         }
     }
 }
    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);
    }
Example #4
0
    private void SetupStartingBuffs()
    {
        string playerOrEnemy = "player";

        // ELEMENT OF SURPRISE
        StatusEffectHolder playerCurrentStatusEffects = configData.GetPlayerStatusEffects();
        int startingMomentum = GetCombinedAmountFromPowerUps(GetPowerUpsOfType(PowerUp.PowerUpType.ElementOfSurprise));

        if (startingMomentum > 0)
        {
            playerCurrentStatusEffects.InflictStatus(StatusEffect.StatusType.Momentum, startingMomentum, playerOrEnemy);
        }

        // PERSONAL SHIELD
        personalShieldStacks = GetCombinedAmountFromPowerUps(GetPowerUpsOfType(PowerUp.PowerUpType.PersonalShield));

        // THE BEST OFFENSE
        int startingRetaliation = GetCombinedAmountFromPowerUps(GetPowerUpsOfType(PowerUp.PowerUpType.TheBestOffense));

        if (startingRetaliation > 0)
        {
            playerCurrentStatusEffects.InflictStatus(StatusEffect.StatusType.Retaliate, startingRetaliation, playerOrEnemy, 99999);
        }
    }
    private void InflictStatus(StatusEffect.StatusType whichStatus, int amountOfStacks)
    {
        StatusEffectHolder playerStatusEffects = FindObjectOfType <ConfigData>().GetPlayerStatusEffects();

        playerStatusEffects.InflictStatus(whichStatus, amountOfStacks, playerOrEnemy);
    }