Press J to jump to the feed. Press question mark to learn the rest of the keyboard shortcuts

Cost Reduction is a set of utility affixes introduced in Reaper of Souls. They reduce a skill's Resource Cost or Cooldown by some percentage of the original value. Both affixes are identical in formulation:

New Spell Cost = Base Cost * (1 - % Reduction)

Every instance is essentially applying this effect in isolation, passing the new skill cost onto the next instance. This is expressed as multiplicatively stacking the amount not reduced and subtracting 1 from the product.

Total Reduction = 1 - (1 - % Reduction) * (1 - % Reduction)

On first glance this result gives the impression that the value of cost reduction diminishes as we get more of it, which is not quite true. As more instances of reduction are acquired the effectiveness decreases in terms of amount reduced but increases in the same proportion in terms of output gained. So as each instance of CDR reduces less seconds-per-point-of-reduction the %-uptime-gained-per-point-of-reduction actually increases.

ROS | KIT's reduction tool is a simple way to calculate the result of stacking multiple sources of reduction.

If for some reason you run out of 'Any Reduction' slots, just grab the Total Reduction from inputting all your Any Reduction amounts (making sure that everything else is blank) and use the resulting value as a single 'Any Reduction' value.

It is also interesting to note that the Total Reduction tool can also be used to stack up sources of Elite/Melee/Ranged Damage Reduction (even % reduction from armor and all resistance), since damage and cost reduction formulas are identical.


The latest version can be accessed through the update link on any copy of RosKit

A mirror for this patch is also available



Cost Reduction has been revamped

'Reduction Needed' and 'Missing Reduction' minitools have been replaced with a Breakpoint Finder

New input slots support queries unique to Resource Cost Reduction


Improvements have been made to Relative Difficulty

Limited View has been removed

Chart toggle now switches to 'Endgame' values, exchanging slider difficulties to GR 25-52

Data points are now copy-pasteable


Made some marginal adjustments

Formulas no longer have arbitrary thresholds for generating outputs; syntax is less redundant

Weapon damage and EV outputs less than 100 are now rounded to more decimal places

Some default values have been adjusted to better display their function



Difficulty in Reaper of Souls is split between Slider Difficulties (Normal – Torment 6), and Greater Rift Levels (1 - ∞). It is defined by the health and damage of monsters. Both values are expressed as a percentage of the base value at Normal.

Monster Health/Damage = Value at Normal * (% Relative to Normal)

Difficulty levels scale multiplicatively, meaning that the distance between adjacent difficulties increases with each jump in level. At GR 25 mobs have 8590% Health-Relative-to-Normal. The value at GR 26 is an additional 17%, reaching a total of 10132% Health-Relative-to-Normal. The following Level is another 17% on top of of this, and so on.

The Relative Difficultly charts moves the reference from Normal to any location on the Y (vertical axis). Intersections between a Slider Difficulty and Greater Rift Level represent the ratio between two difficulties:

Slider (Y) Value / Greater Rift (X) Value

Make sure you familiarize yourself with the meaning of individual data points. A value of 1 or 100% shows that the X value and the Y value are equal. A value less than 1 means that a the Y value is some fraction of the Greater Rift's. A value higher than 1 means that the X value is that many times more than the GR Level.

Generally it's a good idea to put your point of reference at a tested difficulty and move in the direction you want to go. Is the new location 1.5 health? Well that means that you'll need 50% more damage. Is it 2x more damage? Then you probably need to put on a unity.

The endgame toggle on relative difficulty charts use the same formula of Y/X but can be more cryptic. This chart should help you get a better sense for Greater Rift trends. Notice that if we place our point of reference on any GR value on the Y axis and then go down the column the values always go up in the same way.


Effective Vitality (EV) is a measure of how much damage a character can take. It is used to compare health and mitigation item affixes as single unit that is still grounded within Diablo 3's item lexicon.

Effective Vitality = HP * 1/(1 - % Mitigation) / HP Per Vitality

HP is the base value and it is multiplied with the inverse of % damage taken, our mitigation value—which is better understood as 'the number of hit points that each point is worth'. This results in the theoretical value of our hit points, commonly known as EHP. Effective Vitality is simply EHP divided by the amount of health granted per point of Vitality (100 at level 70).

Arriving at a final % Mitigation can be a tricky concept and benefits from further explanation:

Combined Mitigation = 1 - (1 - % Reduction) * (1 - % Reduction)

With the exception of Resistance and Armor (which have unique conversion formulas) all sources of mitigation come in the form of some % Reduction. And without exception, all sources of reduction stack independent of one another—even if they're the same affix. This includes Melee/Ranged Reduction, reduction from passive and active skills, % Dodge (which is theoretically just % Reduction for non-ground effects), and even the non-physical reduction found on Esoteric Alteration's base effect. (see example sheet).

When using the Effective Vitality tool, it is generally good practice to isolate your desired output. If you're interested in the difference between varying levels of Armor and Resistance, then there's little need to input a value for Vitality or % Life.

Unlike Blizzard's Toughness formula, the Effective Vitality tool will not average conditional mitigation. This makes the calculations more precise, but one-dimensional. If 15% Elite Reduction is inputted into 'other reduction', then the resulting output represents a situation where all damage is elite. You are welcome to alter this value to capture an average case, but how you do so is up to you. Likewise, it is up to you whether to input your lowest, average, or a specific Single Resistance value into 'All Resistance'. Block has also been left out entirely, as its value is dependent on the size of incoming hits.

Additional Reading:

"EHP Details" by Kieble

"Toughness and You" by dorkish

Discussion of the Effective Vitality tool is welcome in this thread


All skills in Diablo 3 have a hidden scalar called a Proc Coefficient. These coefficients exist so that skills will utilize chance to stun/freeze/etc and legendary properties like Thunderfury's lightning blast, at more or less the same rate.

Actual Chance 'on hit' = Proc Coefficient * Base Chance ‘on hit’ 

Skills hitting a single target once per cast often have a coefficient of 1 and proc at stated rates. Those that hit more than one target, hit multiple times, does damage over time, or grants additional utility usually have smaller coefficients.

Exact coefficients are not shared with players and must be derived in-game. As of writing the accepted best practice is to measure the bonus damage dealt by the 1-hand axe Hack, which grants the user 75-100% Thorns damage on every attack.

Proc Coefficient = Damage Dealt / (% Hack Quality) * (Primary Stat / 400 + 1) * (Thorns Damage) 

Unfortunately this does not work for Demon Hunter skills requiring a ranged weapon. A working alternative is to measure how often a skill triggers the effects of a Windforce bow. This approximates a proc coefficient by comparing the proc rate of the weapon against an observed rate.

Estimated Proc Coefficient = Observed Proc Rate / Base Proc Rate 

Observed rates will vary and this method does not output a precise coefficient the same way that a Hack would. The estimated coefficient should be used along with its margin of error to pinpoint a likely coefficient. Proc Coefficients are can usually be represented by simple fractions (x/3, x/6, etc) and an estimate with a narrow margin of error can often be rounded to one of these commonly used numbers. If you get an estimated coefficient of 0.44 and a range +/- 0.08, then the actual coefficient is unlikely to be anything other than 0.5. If this range is too large for your liking, take a few more samples. It's possible to brute force any coefficient by taking enough samples.

ROS|KIT complies submitted coefficient data into a publicly viewable sheet. Maintaining its accuracy and relevance is collective effort and depends on users like yourself. If you see any skills that are out of date please test and submit your results. Coefficients for up to date skills can also be submitted but you probably won't see any changes until there is confidence that the current coefficient is incorrect.

Discussion of the Proc Coefficient Tool or the Coefficient Results Sheet is welcome in this thread


Resource Cost Reduction and Cooldown Reduction reduce a spell’s attribute by some %. Stacking multiple sources of Cost Reduction is often unintuitive for new players and time consuming for experienced ones. (see details)

The tool on the left stacks multiple sources of Cost Reduction

8/10/15% Reduction expects input in the form of number of instances. ‘Any Reduction’ slots add a custom value (<100%) to the total. Paragon input can adds up to 10% reduction at its max value of 50.

The options near the bottom: Diamond Grade and Leorics Crown, can be used to quickly calculate and input these respective bonuses. Remember: they only apply for Cooldown Reduction.

The tool on the right charts Reduction Breakpoints

The only required input is a skill cost (referring to either seconds or resource cost). The final row of the chart, ‘any’ is an input slot and can be used to calculate % reduction for a custom target cost.

Additional input is used for analysis specific to Resource Cost Reduction. Inputting a ‘casts per second’ value (equal to your attacks per second for most skills) changes the output from a flat cost to resource spent per second (r/sec). This value can be directly compared to how quickly your character regenerates resource. If you generate 8 resource every second passively and a skill requires 50% cost reduction to be at 8 r/sec, then having that much cost reduction will allow you to cast the skill indefinitely.

The class input is can be used to fine tune r/sec breakpoints to common passive regeneration values for that class. These class specific breakpoints can also be tuned to include the Templar's resource buff.


Weapon Damage is made up of all the damage granting item properties in the game. Nearly all offensive skills do some % Weapon Damage.

At its core, Weapon Damage is a simple concept. It is the damage dealt by your weapon on each swing. Its base value is found on all weapons as range below DPS. This number is the sum of the weapon's original value and its + {element} Damage affix. Dual Wield setups alternate the value used from Mainhand to Offhand. Flat damage affixes found on jewellery and class offhands (+x-y damage) add to every swing, and the (6-10)% Damage affix modifies the weapon it is found on.

All other damage granting affixes serve only to multiply the base weapon damage:

Total Damage = Base Damage * (% Increase + 1)

These multipliers are expressed as some % 'Damage Increased'. Since 'Increase' only refers to the amount above the base, 100% or 1 is added to account for the original amount when multiplying for total damage. 100% increased damage is equivalent to a multiplier of x2.

Your primary affix (str/dex/int) is converted in this way at a 1:1 ratio. A Barbarian with 10,000 strength has a 10,000% damage increase—independent of any other multiplier. This means that it does x101 damage on every swing, regardless of any other affix.

All multipliers are either dependent or independent. Independent multipliers (e.g. Primary Affix) multiply directly with base damage. Dependent multipliers belong to a group of affixes that must merge through some operation (usually addition) before becoming independent.

Multiple instances of the same affix always come together through addition.

In ROS|KIT, 'damage increase' affixes are grouped by dependency. The only exception is the 'other multipliers' category which are all independent. In order to get accurate results it's important that all relevant dependent affixes are inputted.

While it is possible (and sometimes fun) to input every single known value it's almost never necessary to do so. In general it's good practice to isolate the relevant affixes. This keeps the numbers manageable, and helps expose underlying trends.

If the goal is to compare Bracer A vs Bracer B, where A has CHC and B has Target Debuff, then total CHC and Target Debuff needs to be inputted along with the dependents: CHD, and all the additive buffs—but in this case we wouldn't need to worry about Primary Attribute or Average Weapon Damage.

Here is some further reading:

"Everything You Should to Know About [Sheet] DPS" by Vrkhyz

"Buffs and Debuffs" by Void

Discussion of anything concerning the Weapon Damage tool is welcome here

Community Details





News, Documentation, and Support for ROS | KIT, a set of spreadsheet tools for Blizzard's Diablo 3.

Create Post
Cookies help us deliver our Services. By using our Services or clicking I agree, you agree to our use of cookies. Learn More.