From 1f558b747c735ad6eaa8a0dbc367dbe645dfc914 Mon Sep 17 00:00:00 2001 From: Wiktor Phillips Date: Wed, 25 Sep 2024 12:09:44 -0400 Subject: [PATCH 1/3] set scaling to 2.2x bv --- sim/paladin/shield_of_righteousness.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sim/paladin/shield_of_righteousness.go b/sim/paladin/shield_of_righteousness.go index 800ea42cd7..2f3a98d85a 100644 --- a/sim/paladin/shield_of_righteousness.go +++ b/sim/paladin/shield_of_righteousness.go @@ -1,9 +1,10 @@ package paladin import ( + "time" + "github.com/wowsims/sod/sim/core" "github.com/wowsims/sod/sim/core/proto" - "time" ) func (paladin *Paladin) registerShieldOfRighteousness() { @@ -40,7 +41,7 @@ func (paladin *Paladin) registerShieldOfRighteousness() { ThreatMultiplier: 1, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - baseDamage := damage + paladin.BlockValue() + baseDamage := damage + paladin.BlockValue()*2.2 spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit) }, }) From 1bd704913ffa5a37e00cf0537e073308902b1519 Mon Sep 17 00:00:00 2001 From: Wiktor Phillips Date: Wed, 25 Sep 2024 14:03:01 -0400 Subject: [PATCH 2/3] update tests --- sim/paladin/protection/TestProtection.results | 112 +++++++++--------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index 731b1d453e..d6a4511735 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -50,10 +50,10 @@ character_stats_results: { stat_weights_results: { key: "TestProtection-Phase4-Lvl60-StatWeights-Default" value: { - weights: 0.88823 - weights: 0.77434 + weights: 0.90191 + weights: 0.78435 weights: 0 - weights: 0.00264 + weights: 0.01546 weights: 0 weights: 0.1833 weights: 0 @@ -63,14 +63,14 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.22602 - weights: 1.10534 + weights: 2.07977 + weights: 1.06097 weights: 0 weights: 0 weights: 0.39856 weights: 0 - weights: 15.47198 - weights: 9.87099 + weights: 16.35855 + weights: 10.05565 weights: 0 weights: 0 weights: 0 @@ -80,7 +80,7 @@ stat_weights_results: { weights: 0 weights: 1.96085 weights: 0 - weights: 0.33159 + weights: 0.7295 weights: 0 weights: 0 weights: 0 @@ -99,168 +99,168 @@ stat_weights_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-EmeraldEncrustedBattleplate" value: { - dps: 1257.21714 - tps: 2277.96564 + dps: 1299.97937 + tps: 2359.21387 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Hero'sBrand-231328" value: { - dps: 1567.23292 - tps: 3172.40819 + dps: 1642.03311 + tps: 3336.9686 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate" value: { - dps: 1257.29732 - tps: 2278.66952 + dps: 1300.05954 + tps: 2359.91774 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate" value: { - dps: 1329.37556 - tps: 2404.45206 + dps: 1373.09644 + tps: 2487.52174 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-LibramofDraconicDestruction-221457" value: { - dps: 1618.62735 - tps: 3270.50845 + dps: 1694.05803 + tps: 3436.45595 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ObsessedProphet'sPlate" value: { - dps: 1432.94783 - tps: 2894.25207 + dps: 1487.99164 + tps: 3015.34845 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 1628.89046 - tps: 3282.39677 + dps: 1704.64652 + tps: 3449.06011 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SoulforgeArmor" value: { - dps: 1017.76917 - tps: 1521.25783 + dps: 1045.8893 + tps: 1574.68607 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBelt-231330" value: { - dps: 1341.35831 - tps: 2718.47522 + dps: 1411.69687 + tps: 2873.22005 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBreastplate-231329" value: { - dps: 1586.68077 - tps: 3210.24994 + dps: 1647.01912 + tps: 3342.99431 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Average-Default" value: { - dps: 1606.27371 - tps: 3242.19692 + dps: 1680.94521 + tps: 3406.47422 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1024.84225 - tps: 3249.09921 + dps: 1083.60421 + tps: 3378.37553 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 363.29876 - tps: 1175.42963 + dps: 421.18643 + tps: 1302.78249 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 487.5692 - tps: 1549.73468 + dps: 569.73651 + tps: 1730.50274 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 408.83317 - tps: 1281.71259 + dps: 431.1336 + tps: 1330.77355 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 138.34823 - tps: 432.44309 + dps: 160.63832 + tps: 481.48129 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 279.65152 - tps: 835.44046 + dps: 338.58575 + tps: 965.09576 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 1027.13583 - tps: 3263.79037 + dps: 1086.25267 + tps: 3393.84741 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 368.25674 - tps: 1187.67262 + dps: 426.9177 + tps: 1316.72673 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 489.86342 - tps: 1557.61178 + dps: 572.96317 + tps: 1740.43123 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 403.81269 - tps: 1244.91627 + dps: 426.4802 + tps: 1294.78479 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 148.40566 - tps: 446.92332 + dps: 170.56545 + tps: 495.67485 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 280.93287 - tps: 839.7156 + dps: 339.96209 + tps: 969.57987 } } dps_results: { key: "TestProtection-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 1348.74311 - tps: 2777.93485 + dps: 1412.65284 + tps: 2918.53627 } } From b5282166ed77855ddde583365ba8d8d21b1905df Mon Sep 17 00:00:00 2001 From: Wiktor Phillips Date: Sat, 28 Sep 2024 17:37:48 -0400 Subject: [PATCH 3/3] add missing 20 base damage + update tests --- sim/paladin/protection/TestProtection.results | 112 +++++++++--------- sim/paladin/shield_of_righteousness.go | 4 +- 2 files changed, 59 insertions(+), 57 deletions(-) diff --git a/sim/paladin/protection/TestProtection.results b/sim/paladin/protection/TestProtection.results index 8f28ecc7f2..b747a4cd27 100644 --- a/sim/paladin/protection/TestProtection.results +++ b/sim/paladin/protection/TestProtection.results @@ -50,10 +50,10 @@ character_stats_results: { stat_weights_results: { key: "TestProtection-Phase4-Lvl60-StatWeights-Default" value: { - weights: 0.87874 - weights: 0.58656 + weights: 0.89252 + weights: 0.62257 weights: 0 - weights: 0.02822 + weights: 0.06713 weights: 0 weights: 0.18182 weights: 0 @@ -63,14 +63,14 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.65804 - weights: 1.98062 + weights: 2.73392 + weights: 2.20341 weights: 0 weights: 0 weights: 0.39421 weights: 0 - weights: 14.02298 - weights: 10.87034 + weights: 14.65841 + weights: 11.6138 weights: 0 weights: 0 weights: 0 @@ -80,7 +80,7 @@ stat_weights_results: { weights: 0 weights: 1.94046 weights: 0 - weights: 0.33418 + weights: 0.73519 weights: 0 weights: 0 weights: 0 @@ -99,168 +99,168 @@ stat_weights_results: { dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-EmeraldEncrustedBattleplate" value: { - dps: 1243.66272 - tps: 2230.10878 + dps: 1291.10358 + tps: 2320.24642 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Hero'sBrand-231328" value: { - dps: 1559.84154 - tps: 3122.89213 + dps: 1640.00105 + tps: 3299.24306 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sImbuedPlate" value: { - dps: 1243.74236 - tps: 2230.82631 + dps: 1291.18323 + tps: 2320.96396 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-Knight-Lieutenant'sLamellarPlate" value: { - dps: 1315.26834 - tps: 2354.18958 + dps: 1363.67769 + tps: 2446.16735 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-LibramofDraconicDestruction-221457" value: { - dps: 1612.93081 - tps: 3243.62488 + dps: 1692.17075 + tps: 3417.95275 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ObsessedProphet'sPlate" value: { - dps: 1419.83321 - tps: 2836.90155 + dps: 1481.97522 + tps: 2973.61396 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SanctifiedOrb-20512" value: { - dps: 1616.59626 - tps: 3250.47239 + dps: 1696.986 + tps: 3427.32983 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-SoulforgeArmor" value: { - dps: 1017.76917 - tps: 1521.25783 + dps: 1050.24147 + tps: 1582.95519 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBelt-231330" value: { - dps: 1332.36957 - tps: 2682.6786 + dps: 1407.15495 + tps: 2847.20644 } } dps_results: { key: "TestProtection-Phase4-Lvl60-AllItems-ZandalarFreethinker'sBreastplate-231329" value: { - dps: 1571.19591 - tps: 3157.02583 + dps: 1636.48364 + tps: 3300.65883 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Average-Default" value: { - dps: 1593.90701 - tps: 3190.42093 + dps: 1672.8074 + tps: 3364.0018 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 960.88751 - tps: 3057.10387 + dps: 1022.0213 + tps: 3191.59823 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 349.07485 - tps: 1118.58442 + dps: 407.85704 + tps: 1247.90525 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 466.38772 - tps: 1456.37906 + dps: 553.12148 + tps: 1647.19334 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 381.86884 - tps: 1199.55003 + dps: 405.85275 + tps: 1252.31464 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 133.10532 - tps: 409.5648 + dps: 156.9784 + tps: 462.08557 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Dwarf-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 269.44535 - tps: 791.60717 + dps: 331.97048 + tps: 929.16244 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 994.70238 - tps: 3126.10343 + dps: 1058.11598 + tps: 3265.61334 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 355.06083 - tps: 1129.53061 + dps: 417.95525 + tps: 1267.89833 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-FullBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 469.75829 - tps: 1467.02989 + dps: 557.8935 + tps: 1660.92735 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongMultiTarget" value: { - dps: 385.53284 - tps: 1190.41647 + dps: 409.82501 + tps: 1243.85925 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-LongSingleTarget" value: { - dps: 144.25817 - tps: 428.91643 + dps: 168.21006 + tps: 481.61059 } } dps_results: { key: "TestProtection-Phase4-Lvl60-Settings-Human-p4prot-P4 Prot-p4prot-NoBuffs-P4-Consumes-ShortSingleTarget" value: { - dps: 271.6504 - tps: 801.13104 + dps: 333.65255 + tps: 937.53578 } } dps_results: { key: "TestProtection-Phase4-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 1301.74746 - tps: 2594.6402 + dps: 1368.26875 + tps: 2740.98705 } } diff --git a/sim/paladin/shield_of_righteousness.go b/sim/paladin/shield_of_righteousness.go index 2f3a98d85a..162c3106fc 100644 --- a/sim/paladin/shield_of_righteousness.go +++ b/sim/paladin/shield_of_righteousness.go @@ -14,7 +14,8 @@ func (paladin *Paladin) registerShieldOfRighteousness() { // Base damage formula from wowhead tooltip: // https://www.wowhead.com/classic/spell=440658/shield-of-righteousness - damage := 179.0 * paladin.baseRuneAbilityDamage() / 100.0 + // Testing shows there is an additional 20 base damage included. + damage := (179.0 * paladin.baseRuneAbilityDamage() / 100.0) + 20.0 paladin.RegisterSpell(core.SpellConfig{ ActionID: core.ActionID{SpellID: int32(proto.PaladinRune_RuneCloakShieldOfRighteousness)}, @@ -41,6 +42,7 @@ func (paladin *Paladin) registerShieldOfRighteousness() { ThreatMultiplier: 1, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + // Shield of Righteousness has a hidden scaling coefficient of 2.2x SBV (derived from testing) baseDamage := damage + paladin.BlockValue()*2.2 spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeSpecialHitAndCrit) },