Stat Calculation (normalized stats)
"This will be my inn; a dream I have had for years, an inn that would attract the Big Folk and hobbits alike." —Adso Haybank Under Construction! This article contains information which is currently being worked on. Please coordinate updates with: Gisel Avaleazar (Contribs • User Talk) |
Introduction
Game statistics, or "stats," are fundamental to the progression and combat system in Lord of the Rings Online. Over its long history, LOTRO has seen several significant overhauls to its stat system, evolving from a simple linear progression to a more complex, segmented, and ultimately normalized approach.
Initially, a singular linear stat progression was used. Linear means that with each character level gained, stats in traits or effects increase by a fixed amount. Likewise on gear, item levels drive item stats in the same way.
With the Rise of Isengard expansion, it became apparent that the original linear formulas were insufficient for levels beyond 75. New, steeper linear formulas were introduced to ensure characters continued to scale appropriately at higher levels.
The Mordor expansion marked a major shift with the introduction of a Standard Progression, or "normalized stats". This system moved to a series of linear segments, connected at "graph points" corresponding to expansion start and end levels. This allowed for more precise balancing of player power within specific content tiers.
The Update 37 stat squish further refined the Standard Progression by extending this segmented graph point system to older, lower-level expansions. This unified the stat framework across the entire game.
From Mordor onwards, the starting stat value of a new expansion segment isn't the same as the end of the previous one. This creates a deliberate "gap" or steeper difficulty curve at the start of new content. This design boosts difficulty at the beginning of an expansion, heavily incentivizing players to acquire and use the new gear available in that region to overcome the increased challenge.
Standard Progression
Within the Standard Progression system, the graph point start/end values within an expansion segment are relative to the end point of the previous expansion in a percentual rise. This means that the increase in stats from one expansion to the next is not a flat amount, but rather a percentage of the previous expansion's end-game values. For example, if the previous expansion ended with 10000 Mitigation rating, the next might start with +20% of that, or 12000.
This percentual rise, when applied across multiple expansions, naturally leads to an overall exponential growth in stat values throughout the game. While each segment is linear, the connection points between segments, with their percentage-based increases, compound over time. This exponential growth, if left unchecked, can lead to extremely large and unwieldy stat numbers. This inherent exponential growth is a primary reason why future stat squishes are likely to be necessary in LOTRO. These squishes periodically reduce all stat values by a significant factor, bringing them back down to more manageable numbers and allowing the exponential growth cycle to continue without reaching extreme magnitudes.
Progression Schemes
Inside the game we can identify 4 standard progressions: Health, Energy, Percentage Ratings & Damage. Each progression uses their own percentage settings for each expansion.
The progressions take a base value as input and derive all point values from there. Health, Energy & Damage have all a fixed base value as shown below. Multiple base values exist for ratings.
Any point values taken from these progression schemes need to be Progression Rounded. Percentual rises are always versus the rounded value of the end point in the previous expansion.
Point Index | Player Level | Standard Progression | Expansion | |||
---|---|---|---|---|---|---|
Health | Energy | Percentage Ratings | Damage | |||
1 | 1 | base(4) | base(2) | base | base(2) | Shadows of Angmar |
2 | 50 | 7.5x(30) | 2x(4) | 10x | 10x(20) | |
Mines of Moria | ||||||
3 | 60 | +33% | +33% | +50% | +33% | |
Siege of Mirkwood | ||||||
4 | 65 | +25% | +25% | +33.3% | +9.5% | |
Rise of Isengard | ||||||
5 | 75 | +50% | +50% | +50% | +33% | |
Riders of Rohan | ||||||
6 | 85 | +50% | +50% | +50% | +33% | |
Helm’s Deep | ||||||
7 | 95 | +33% | +33% | +44.5% | +33% | |
The Paths of the Dead | ||||||
8 | 100 | +50% | +31.5% | +39% | +25% | |
The Battle of Pelennor Fields | ||||||
9 | 105 | +33.3% | +33.3% | +33% | +25% | |
10 | 106 | +10% | +10% | +10% | +10% | Mordor |
11 | 115 | +50% | +50% | +50% | +33% | |
12 | 116 | +15% | +15% | +15% | +10% | Where Dragons Dwell |
13 | 120 | +25% | +25% | +25% | +25% | |
14 | 121 | +15% | +15% | +15% | +10% | Minas Morgul |
15 | 130 | +50% | +50% | +50% | +33% | |
16 | 131 | +15% | +15% | +15% | +10% | Gundabad |
17 | 140 | +100% | +100% | +100% | +50% | |
18 | 141 | +15% | +15% | +30% | +10% | Umbar |
19 | 150 | +100% | +100% | +120.5% | +50% | |
20 | 151 | +0% | +0% | +0% | +10% | Future expansion |
21 | 160 | +100% | +100% | +100% | +50% |
Progression Rounding
Values which are generated by the Standard Progressions need to be rounded in a special way. In this rounding type the number of rounding decimals are depending on the value itself. The result is that the number of significant decimals are always 2 or 3.
Decimal Count = 2 - Round( Log10( Raw Value ) )
As you can see, it's 2 minus the rounded base10 logarithm of the raw point value.
For example:
3111 -> Log10(3111) ~ 3.4929 -> Round(3.4929) = 3 -> 2-3 = -1 -> Round(3111,-1) = 3110 (3 significant digits) 3222 -> Log10(3222) ~ 3.5081 -> Round(3.5081) = 4 -> 2-4 = -2 -> Round(3222,-2) = 3200 (2 significant digits)
In CalcStat Expressions you can use the rounding function RoundProg, with just the raw value as parameter.
Stat Group Base Values
Stat Group | Involved Stats | Standard Progression | Base Value |
---|---|---|---|
Health | Max Morale, ICMR, NCMR, Vitality | Health | 4 |
Energy | Max Power, ICPR, NCPR, Fate | Energy | 2 |
Damage | Weapon / Tactical / Monster DPS | Damage | 2 |
Main stats | Agility, Might, Will | Ratings | 1.75 |
Ratings Standard | Ratings | 200 | |
Ratings Extra | Critical Rating/Critical Hit Chance, Mastery/Outgoing Damage, Resistance | Ratings | 300 |
Partial Avoidances | Partial Avoidance Chance/Mitigation | Ratings | 350 |
Devastating Hit chance | Ratings | 400 | |
Outgoing Healing | Ratings | 450 | |
Critical Magnitude | Ratings | 600 |
Calculation example Main stats
For example cLvl65:
+33.3% -> 1.333 x 26.3 = 35.0579 -> RoundProg(35.0579) = 35
Mordor segment:
106: +10% -> 1.1 x 214 = 235.4 -> RoundProg(235.4) = 235 115: +50% -> 1.5 x 214 = 321 -> RoundProg(321) = 320
Point Index | Player Level | Std.Prog. Ratings | Raw value | Prog. Rounded | Expansion |
---|---|---|---|---|---|
1 | 1 | base | 1.75 | 1.75 | Shadows of Angmar |
2 | 50 | 10x | 17.5 | 17.5 | |
Mines of Moria | |||||
3 | 60 | +50% | 26.25 | 26.3 | |
Siege of Mirkwood | |||||
4 | 65 | +33.3% | 35.0579 | 35 | |
Rise of Isengard | |||||
5 | 75 | +50% | 52.5 | 53 | |
Riders of Rohan | |||||
6 | 85 | +50% | 79.5 | 80 | |
Helm’s Deep | |||||
7 | 95 | +44.5% | 115.6 | 116 | |
The Paths of the Dead | |||||
8 | 100 | +39% | 161.24 | 161 | |
The Battle of Pelennor Fields | |||||
9 | 105 | +33% | 214.13 | 214 | |
10 | 106 | +10% | 235.4 | 235 | Mordor |
11 | 115 | +50% | 321 | 320 | |
12 | 116 | +15% | 368 | 370 | Where Dragons Dwell |
13 | 120 | +25% | 400 | 400 | |
14 | 121 | +15% | 460 | 460 | Minas Morgul |
15 | 130 | +50% | 600 | 600 | |
16 | 131 | +15% | 690 | 690 | Gundabad |
17 | 140 | +100% | 1,200 | 1,200 | |
18 | 141 | +30% | 1,560 | 1,560 | Umbar |
19 | 150 | +120.5% | 2,646 | 2,650 | |
20 | 151 | +0% | 2,650 | 2,650 | Future expansion |
21 | 160 | +100% | 5,300 | 5,300 |
Progression Techniques
Inheritance
In LOTRO stat calculations, Standard Progressions are used as base for stat calculations, but often this happens with a twist. Points (level,value) can be removed or added.
In case a point is removed then it simply disappears from the graph and the remaining points will be used for further calculation.
In case of an addition, the new point's value is derived from the parent progression with Linear Interpolation using surrounding points. The new point's value is not rounded.
For example, Main stats are using an extra cLvl25 point. In Stat Group Base Values you can find that the stat's base progression is the Standard Progression for Percentage Ratings with the base value being 1.75, so we have our parent progression there. Inheritance is as follows (only focusing on the first few points):
Parent Progression | Inherited Progression | Expansion | ||||
---|---|---|---|---|---|---|
Point Index | Player Level | Prog. Values | Point Index | Player Level | Prog. Values | |
1 | 1 | 1.75 | 1 | 1 | 1.75 | Shadows of Angmar |
2 | 25 | 9.4642857 | ||||
2 | 50 | 17.5 | 3 | 50 | 17.5 |
In CalcStat Expressions you can use the interpolation function GraphVal, with as parameter the desired level of the new point's value and all the points in the parent progression.
{{#invoke:CalcStat|calc|GraphVal(25, 1, 1.75, 50, 17.5)|||%'.0.7f|NoAdj}}
9.4642857