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.
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 :)
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).
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
andflat_add
; for HL4-HL8, it's clear that theflat_add
is quite accurate whilesp
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)
Holy Light(Rank 3)
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 a0.7
coefficient. Presumably, higher-ranked spells all use a1.0
coefficient.Lastly, I decided to revisit rank 1 with the same methodology:
Holy Light(Rank 1)
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 of0.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:
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
Blessing of Light