Cooldown calculation

How Cooldown calculation work

Theory

Glossary

Ability Regeneration Scalar — Destiny Data Compendium's term for buffScalar

baseRate — % of ability energy gained per second at tier 3 of the relevant stat.

buffScalar — scalar multiple of the baseRate, stack additively (includes stat Tiers)

buffMultiplier — multiplier on which baseRate is multiplied, stack multiplicatively

flatGain — some effects grant a set amount of ability energy. Note: armor mods like Dynamo, Bomber, Momentim Transfer not only grant different percent of ability energy based on subclass, but also depends on Ability Tier, so there are two factors contributing to it.

{number}% Additional Base Regeneration Rate — Destiny Data Compendium's term for buffScalar expressed as a percentage

{number}x Ability Regeneration Speed — Destiny Data Compendium's term for buffMultiplier

Base Ability Regeneration

Cooldowns of class abilities, grenades, supers and melees depend on corresponding stat tiers. The base unit of ability recharge rate is that ability's recharge rate (% of total energy gained per second) at tier 3 of the relevant stat.

Tier 3 is considered "baseRate"

Ability Regeneration Scalars for Stat Tiers responsible for corresponding abilities
Stat Tier 0 1 2 3 4 5 6 7 8 9 10
Mobility 0.85 0.9 0.95 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7
Resilience 0.7 0.8 0.9 1 1.05 1.1 1.2 1.3 1.4 1.55 1.7
Recovery 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7
Discipline 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.55 1.75 2
Intellect 0.69 0.78 0.87 1 1.06 1.11 1.16 1.22 1.25 1.29 1.31
Strength 0.7 0.8 0.9 1 1.1 1.2 1.3 1.4 1.55 1.75 2

Adding effects

Effects can grant four things:

  1. chargeRate buffs (buffScalars), examples: stats, Sol Invictus buff, Eye of Another World, etc ... (most of the effects, basically)

  2. buffMultipliers, examples: Checkmate ability penalty, FR0ST-EE5 effect in PvE, Citan's Ramparts ...

  3. A stat boost (like + 3 Tiers of Resilience in case of Font of Endurance)

  4. A set amount of ability energy — "flatGain".

    Note: armor mods like Dynamo, Bomber, Momentum Transfer not only grant different percent of ability energy based on class, but it also depends on Ability Tier, so there are two factors contributing to it.

    How flatGains are scaled depending on Ability Tier (source: Destiny Data Compendium)

Final ability charge rate is the sum of all of (buffScalar × baseRate) products multiplied by all buffMultipliers.

In a form of equations

baseRate = 100 % / ability cooldown at [stat] tier 3 [%/s]
totalChargeRate = = ( buffScalar1 × baseRate + ... + buffScalarN × baseRate ) × buffMultiplier1 × ... × buffMultiplierM = = baseRate × buffScalars * buffMultipliers

So basically totalChargeRate is a speed at which Ability Energy Regenerates

By knowing speed it is possible to calculate amount of ability energy in a given period of time

energyGained = time × totalChargeRate

Making calculations round based

All effects affecting Ability regeneration speed can be divided into two big groups: ones with infinite duration and temporary

  1. Infinite duration effects — These are effects active all the time like Checkmate ability regeneration penalty, Citan's Ramparts Towering Barricade cooldown extension or Eye of Another World effect

  2. Finite duration effects — These are effects that have timer or work under specific condition (like low health)

Because the state of the variables affecting energy regeneration depends on the combination of effects at a given time; it is necessary to divide the entire regeneration time into successive segments of combinations of effects (rounds of calculations). Within the round, the value of the variables does not change, so you can use the above formulas without problems

For every round of calculation the following values are needed:

  • Sum of buffScalars

  • Product of buffMultipliers

  • Effective Stat Tier

  • These three allow to calculate totalChargeRate

  • By knowing totalChargeRate and roundDuration it is possible to calculate energyGained. If energyGained > energyNeeded, we can just divide energyNeed by totalChargeRate and get time left (roundDuration).

Example

Effects

Ability: Towering Barricade

Effect What it grants Duration [seconds]
Font of Endurance x1 +30 resilience 10
Ember of Benevolence 400% Additional Class Ability Regeneration Rate (buffScalar = 4) 6
Citan’s Ramparts 0.58x Class Ability Regeneration Rate Multiplier (buffMultiplier = 0.58)
Resilience Tier 5 buffScalar = 1.1

Time Diagram

X-axis — time in seconds

Ability regeneration can be divided into 3 rounds:

Red lines are bounds of rounds

Table summary

Round 1 Round 2 Round 3
needEnergy (on start) [%] 100 73.154285716 68.514285716
cooldown (on start) [s] 0 6 10
roundDuration [s] 6 4
totalChargeRate [%/s] 4.474285714 1.16 0.911428571
energyGained [%] 26.845714284 4.64 the rest needed
needEnergy (on end) [%] 73.154285716 68.514285716 0
cooldown (on end) [s] 6 10 85.17241383

Calculations

Base cooldown: 70 [s]

baseRate = 100 / 70 = 1.4285714285714286 [%/s]

needEnergy = 100 [%]

Round 1

needEnergy = 100 [%]

cooldown = 0 [s]

roundDuration = 6 [s]

Active effects:

  • Resilience Tier 5

  • Font of Endurance: + 3 tiers of Resilience

  • Ember of Benevolence (Effect): +400% Additional Class Ability Regeneration Rate

  • Citan's Ramparts: 0.58x Class Ability Regeneration Rate Multiplier

buffScalar1 = 1.4 (5 + 3 = 8 Tier of Resilience => Ability Regeneration Rate = 1.4)

buffScalar2 = 4 (Ember of Benevolence)

buffMultiplier1 = 0.58 (Citan's Ramparts)

totalChargeRate = baseRate * (buffScalar1 + buffScalar2) * buffMultiplier1 = 1.4285714285714286 * (1.4 + 4) * 0.58 = 4.474285714 [%/s]

energyGained = totalChargeRate * roundDuration = 4.474285714 * 6 = 26.845714284 [%]

needEnergy = needEnergy – energyGained = 100 – 26.845714284 = 73.154285716 [%]

cooldown = cooldown + roundDuration = 0 + 6 = 6 [s]

Round 2

needEnergy = 73.154285716 [%]

cooldown = 6 [s]

roundDuration = 4 [s]

Active effects:

  • Resilience Tier 5

  • Font of Endurance: + 3 tiers of Resilience

  • Citan's Ramparts: 0.58x Class Ability Regeneration Rate Multiplier

buffScalar1 = 1.4 (5 + 3 = 8 Tier of Resilience => Ability Regeneration Rate = 1.4)

buffMultiplier1 = 0.58 (Citan's Ramparts)

totalChargeRate = baseRate * (buffScalar1) * buffMultiplier1 = 1.4285714285714286 * (1.4) * 0.58 = 1.16 [%/s]

energyGained = totalChargeRate * roundDuration = 1.16 * 4 = 4.64 [%]

needEnergy = needEnergy – energyGained = 73.154285716 – 4.64 = 68.514285716 [%]

cooldown = cooldown + roundDuration = 6 + 4 = 10 [s]

Round 3

needEnergy = 68.514285716 [%]

cooldown = 10 [s]

roundDuration = infinite [s]

Active effects:

  • Resilience Tier 5

  • Citan's Ramparts: 0.58x Class Ability Regeneration Rate Multiplier

buffScalar1 = 1.1 (5 Tier of Resilience => Ability Regeneration Rate = 1.1)

buffMultiplier1 = 0.58 (Citan's Ramparts)

totalChargeRate = baseRate * (buffScalar1) * buffMultiplier1 = 1.4285714285714286 * (1.1) * 0.58 = 0.911428571 [%/s]

This round duration is infinite, so buff configuration will not change (Citan's Ramparts and Resilience Tier 5 will not turn off), so we can just divide energyNeed by totalChargeRate and get time left (roundDuration). The same can be done if energyGained is more than needEnergy

roundDuration = energyNeed / totalChargeRate = 68.514285716 / 0.911428571 = 75.17241383 [s]

cooldown = cooldown + roundDuration = 10 + 75.17241383 = 85.17241383 [s]

So Towering Barricade Cooldown with this buff configuration will be [85] seconds.