Era/SoD Paladin - Blessing of Light Miscalculated
ritewhose opened this issue ยท 3 comments
Hi,
Using Blessing of Light throws off the calculation Holy Light spells. Here is what I've tried so far to figure out what's really happening.
Test Results
Here are my results for doing 10 casts per rank. I then compared these results to what is estimated by using power-as-spell-power (proposed) and power-as-flat-addition (currently used in the source code).
HL_Rank | BoL_Rank | Measured | *P(sp) | P(flat) |
---|---|---|---|---|
1 | 0 | 173-182 | 173-183 | 173-183 |
2 | 0 | 308-315 | 300-317 | 300-317 |
3 | 0 | 532-555 | 529-561 | 529-561 |
4 | 0 | 801-850 | 801-853 | 801-853 |
6 | 0 | 1253-1324 | 1243-1336 | 1243-1336 |
8 | 0 | 1872-2023 | 1865-2025 | 1865-2025 |
1 | 1 | 216-225 | 217-227 | 383-393 |
2 | 1 | 384-397 | 371-388 | 510-527 |
3 | 1 | 683-707 | 645-677 | 739-771 |
4 | 1 | 1012-1061 | 951-1003 | 1011-1063 |
6 | 1 | 1455-1541 | 1393-1486 | 1453-1546 |
1 | 2 | 234-243 | 235-245 | 473-483 |
2 | 2 | 420-432 | 402-419 | 600-617 |
3 | 2 | 740-769 | 695-727 | 829-861 |
4 | 2 | 1102-1144 | 1015-1068 | 1101-1153 |
6 | 2 | 1544-1635 | 1458-1550 | 1543-1636 |
1 | 3 | 253-263 | 256-266 | 573-583 |
2 | 3 | 461-475 | 436-453 | 700-717 |
3 | 3 | 809-837 | 750-782 | 929-961 |
4 | 3 | 1202-1240 | 1087-1139 | 1201-1253 |
6 | 3 | 1663-1735 | 1529-1622 | 1643-1736 |
8 | 3 | 2319-2395 | 2151-2311 | 2265-2425 |
For context, I have 617 healing power from gear.
Analysis
The divergence is most dramatically seen in Holy Light(Rank 1) with Blessing of Light(Rank 3)(bolded). If the current calculations were correct I'd be healing close to 600 per normal cast, and this would be the most mana-efficient heal for Paladins in the game. Unfortunately it's not nearly that powerful: My normal casts are around 260. This is in line with what would be expected from calculating Blessing of Light's effect based on spell power alone.
On the other hand, using spell power does not completely solve the problem. For HL2 and HL3, the results are somewhere in the middle of sp
and flat_add
; for HL4-HL8, it's clear that the flat_add
is quite accurate while sp
is not.
Lower Rank Holy Light Scaling
So, Rank 2 and Rank 3 are still unsolved. I found the range of the original unbuffed spells, and then started casting until I had achieved the same range with a Blessing of Light. I then took the buffed lower upper bounds and subtracted them from their respective unbuffed bound to compute the diff column. Here are my results from this (T = tooltip info):
Holy Light(Rank 2)
HL_Rank | BoL_Rank | Measured | Range | Diff | Coeff |
---|---|---|---|---|---|
2 | T | 91-107 | 15 | - | - |
2 | 0 | 300-315 | 15 | - | - |
2 | 1 | 384-399 | 15 | 84/84 | 84/210 =0.4 |
2 | 2 | 420-435 | 15 | 120/120 | 120/300=0.4 |
2 | 3 | 460-475 | 15 | 160/160 | 160/400=0.4 |
Holy Light(Rank 3)
HL_Rank | BoL_Rank | Measured | Range | Diff | Coeff |
---|---|---|---|---|---|
2 | T | 187-219 | 31 | - | - |
3 | 0 | 529-560 | 31 | - | - |
3 | 1 | 676-707 | 31 | 147/147 | 147/210=0.7 |
3 | 2 | 739-770 | 31 | 210/210 | 210/300=0.7 |
3 | 3 | 809-840 | 31 | 280/280 | 280/400=0.7 |
This shows that Blessing of Light applies different heal power coefficients based on the rank of the spell. Rank 2 is modified by a 0.4
coefficient, and Rank 3 is modified by a 0.7
coefficient. Presumably, higher-ranked spells all use a 1.0
coefficient.
Lastly, I decided to revisit rank 1 with the same methodology:
Holy Light(Rank 1)
HL_Rank | BoL_Rank | Measured | Range | Diff | Coeff |
---|---|---|---|---|---|
1 | T | 47-57 | 9 | - | - |
1 | 0 | 173-182 | 9 | - | - |
1 | 1 | 216-225 | 9 | 43/43 | 43/210=0.205 |
1 | 2 | 234-243 | 9 | 61/61 | 61/300=0.203 |
1 | 3 | 253-263 | 10 | 80/81 | 80/400=0.2, 81/400=0.2025 |
So, it seems Holy Light(Rank 1) might have a coefficient of 0.2
, and this just happens to be very close to its normal spell power coefficient of 0.205
, but if that were the case it seems 210*.2, for instance, would equal 42, not 43, and 300*.2 would equal 60, not 61. It seems it would be slightly more accurate to scale it based on spell power.
Implementation
I was hoping this would be pretty straightforward to implement, but it doesn't seem that easy. The calculator is not really built to apply a buff differently to different ranks of the same spell. I did come up with a way to do it, which I'll try to get around to sharing tomorrow.
Holy Light's Effect Ranges Off
This got me most of the way there, but my ranges were still off ever so slightly, being a little higher than expected. While looking into this I noticed Holy Light's effect range changes as you level, but not necessarily in a linear way. For example, here is what the tooltip says for Holy Light(Rank 1) based on several of my characters:
- lvl1: 39 to 47
- lvl5: 42 to 51
- lvl21: 42 to 51
- lvl50: 47 to 57
- lvl60: 47 to 57
The addon currently assumes a base of 39-47, growing by 0.8 from levels 1-5. This accounts for the scaling at lvl5. However, there is evidently a period of no change for this effect range between at least level 5 and 21, then somewhere between levels 21 and 50 some additional effect range changes. I can say, at least, that this is not affected by gear or buffs as the range persists after removing all gear, and I've cross-checked this behavior with Classic Era (non-SoD) servers.
Given that in my implementation the spell effect ranges are very close but only slightly off in inconsistent ways, it seems like the calculator is taking most of this into account already somehow, either intentionally or accidentally.
Greater Blessing of Light
Currently, Greater Blessing of Light (spid:25890) is not recognized as a Blessing of Light, but should carry the same effects as Blessing of Light(Rank 3).
Additional Spell Notes
Holy Light
Note: my testing indicates that the spell range is lowerbound <= x < upperbound. For example, HL3 indicates the spell may land for anywhere in the range of 91-107, but I was only able to achieve 91-106 after spamming it for quite a while.
Rank | Tooltip | Coeff |
---|---|---|
1 | 47-57 | 0.205 |
2 | 91-107 | 0.339 |
3 | 187-219 | 0.554 |
4 | 360-413 | 0.714 |
6 | 803-895 | 0.714 |
8 | 1424-1584 | 0.714 |
Blessing of Light
Rank | FoL_P | HL_P |
---|---|---|
1 | 60 | 210 |
2 | 85 | 300 |
3 | 115 | 400 |
Hey, nice findings.
- Since the Blessing of Light effect appears to depend on Holy Light rank it would be easiest to account for in calc.lua instead of buffs.lua. The codebase may be messy so if you don't find a quick way to do it, don't worry about it and I can work it in next when I can get to it.
- I suspect you have taken Healing Light talent for higher level characters. The addon currently assumes it is applied to the base of the spell and not spell power. If the in-game blizzard tooltip is showing 42-51 rank 1 Holy Light with the talent at higher levels then the addon is wrong and the talent % healing should applied to both base and sp (but not visible from blizz tooltip).
- I wouldn't worry too much about +/- 1 errors for integers in tooltips as they are just rounded for readability. The calculation is done in floating point numbers. A better test is probably seeing if the healing expectation number matches but this requires many samples :)