/// <summary>
    /// increases a damage amount by some value based on the Effects on this actor
    /// this should be called whenever the damage of an attack is assigned (Projectile created
    /// area damage removed from player control), some modifiers can be changed
    /// while the player has an item equipped
    /// </summary>
    /// <param name="amount">the base amount of damage to be dealt</param>
    /// <param name="damageType">the type of damage being dealt</param>
    /// <param name="fromCard">false if damage is not set when card is used
    /// this prevents large spikes in damage from equipment</param>
    /// <returns></returns>
    public float modifyDamage(float amount, DamageTypes damageType, bool fromCard)
    {
        DamageIncreaseData damageIncreaseData = new DamageIncreaseData(amount, damageType, fromCard);

        damageIncreaseData = updateDamageIncreseData(damageIncreaseData);
        return(damageIncreaseData.getModifyedDamageAmount());
    }
    public DamageIncreaseData getDamageIcreaseAmounts(float amount, DamageTypes damageType, bool fromCard)
    {
        DamageIncreaseData damageIncreaseData = new DamageIncreaseData(amount, damageType, fromCard);

        damageIncreaseData = updateDamageIncreseData(damageIncreaseData);
        return(damageIncreaseData);
    }
 private DamageIncreaseData updateDamageIncreseData(DamageIncreaseData data)
 {
     DamageDealtChange[] listOfEffects = Array.ConvertAll(getListOfTriggerableEffectsOfType(EffectTypes.damageDealtChange), item => (DamageDealtChange)item);
     for (int i = 0; i < listOfEffects.Length; i++)
     {
         data = listOfEffects[i].damageChanges(data);
         listOfEffects[i].damageChangeEffectUsed();
     }
     return(data);
 }
Example #4
0
    public void updateAreasDamageAmounts(Actor damageAreaUser, bool directFromCard)
    {
        DamageIncreaseData data = damageAreaUser.effects.getDamageIcreaseAmounts(damageAmountForModifications, damageType, directFromCard);

        for (int i = 0; i < damageAreas.Length; i++)
        {
            data.amount = damageAreas[i].damageAmount;
            damageAreas[i].damageAmount = data.getModifyedDamageAmount();
            damageAreas[i].damageType   = damageType;
            damageAreas[i].damageSorce  = damageAreaUser.Team;
        }

        damageSorce = damageAreaUser;
    }
    public DamageIncreaseData damageChanges(DamageIncreaseData damageData)
    {
        if (damageSetTo0)
        {
            damageData.damage0_Flag = true;
            return(damageData);
        }

        //check if the damage type is effected by this instance
        if ((damageData.damageType & damageTypesEffected) != 0)
        {
            damageData.damageAddition       += damageAdditonChange;
            damageData.damageMultiplication *= damageMultiplicationChange;
        }
        return(damageData);
    }