From 6db3e8e6194c2c8adeebbb649cfb8ce7358613d9 Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sat, 6 Jul 2024 12:54:47 -0600 Subject: [PATCH 1/6] Adding p4 features in relation to holy shock updating Infusion of Light Art of War Vindicator Shock and Awe SoR proc mask Adding Avenging Wrath --- sim/paladin/avenging_wrath.go | 53 ++++++++++++++++++++++++++++++ sim/paladin/holy_shock.go | 21 ++++++++---- sim/paladin/paladin.go | 1 + sim/paladin/runes.go | 42 ++++++++++++++++++++++-- sim/paladin/sor.go | 2 +- sim/paladin/talents.go | 61 ++++++++++++++++++++++++----------- 6 files changed, 153 insertions(+), 27 deletions(-) create mode 100644 sim/paladin/avenging_wrath.go diff --git a/sim/paladin/avenging_wrath.go b/sim/paladin/avenging_wrath.go new file mode 100644 index 0000000000..5de4ba0a93 --- /dev/null +++ b/sim/paladin/avenging_wrath.go @@ -0,0 +1,53 @@ +package paladin + +import ( + "time" + + "github.com/wowsims/sod/sim/core" +) + +func (paladin *Paladin) registerAvengingWrath() { + actionID := core.ActionID{SpellID: 407788} + + AvengingWrathAura := paladin.RegisterAura(core.Aura{ + Label: "Avenging Wrath", + ActionID: actionID, + Duration: time.Second * 20, + OnGain: func(aura *core.Aura, sim *core.Simulation) { + aura.Unit.PseudoStats.DamageDealtMultiplier *= 1.2 + }, + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + aura.Unit.PseudoStats.DamageDealtMultiplier /= 1.2 + }, + }) + core.RegisterPercentDamageModifierEffect(AvengingWrathAura, 1.2) + + AvengingWrath := paladin.RegisterSpell(core.SpellConfig{ + ActionID: actionID, + Flags: core.SpellFlagNoOnCastComplete | core.SpellFlagAPL, + + ManaCost: core.ManaCostOptions{ + BaseCost: 0.08, + }, + Cast: core.CastConfig{ + CD: core.Cooldown{ + Timer: paladin.NewTimer(), + Duration: time.Minute*3 - (time.Second * 20), + }, + + }, + ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { + AvengingWrathAura.Activate(sim) + }, + }) + + paladin.AddMajorCooldown(core.MajorCooldown{ + Spell: AvengingWrath, + Type: core.CooldownTypeDPS, + // modify this logic if it should ever not be spammed on CD / maybe should synced with other CDs + ShouldActivate: func(sim *core.Simulation, character *core.Character) bool { + + return true + }, + }) +} diff --git a/sim/paladin/holy_shock.go b/sim/paladin/holy_shock.go index d5a306c293..dff00bbbc0 100644 --- a/sim/paladin/holy_shock.go +++ b/sim/paladin/holy_shock.go @@ -9,9 +9,18 @@ import ( ) func (paladin *Paladin) registerHolyShock() { + + hasInfusionOfLight := paladin.hasRune(proto.PaladinRune_RuneWaistInfusionOfLight) + var cdTime time.Duration + cdTime = 30 + if hasInfusionOfLight { + cdTime = 6 + } + + paladin.holyShockCooldown = &core.Cooldown{ Timer: paladin.NewTimer(), - Duration: time.Second * 15, + Duration: time.Second * cdTime, } if !paladin.Talents.HolyShock { @@ -30,11 +39,11 @@ func (paladin *Paladin) registerHolyShock() { {level: 56, spellID: 20930, manaCost: 325, minDamage: 365, maxDamage: 395}, } - hasInfusionOfLight := paladin.hasRune(proto.PaladinRune_RuneWaistInfusionOfLight) - damageMultiplier := core.TernaryFloat64(hasInfusionOfLight, 1.2, 1.0) + + damageMultiplier := core.TernaryFloat64(hasInfusionOfLight, 1.5, 1.0) - hasArtOfWar := paladin.hasRune(proto.PaladinRune_RuneFeetTheArtOfWar) - manaCostMultiplier := core.TernaryFloat64(hasArtOfWar, 0.2, 1.0) + //hasArtOfWar := paladin.hasRune(proto.PaladinRune_RuneFeetTheArtOfWar) + manaCostMultiplier := 1.0//core.TernaryFloat64(hasArtOfWar, 0.2, 1.0) hasWrath := paladin.hasRune(proto.PaladinRune_RuneHeadWrath) @@ -88,7 +97,7 @@ func (paladin *Paladin) registerHolyShock() { if hasInfusionOfLight && result.Outcome.Matches(core.OutcomeCrit) { paladin.AddMana(sim, rank.manaCost, manaMetrics) paladin.holyShockCooldown.Reset() - paladin.exorcismCooldown.Reset() + //paladin.exorcismCooldown.Reset() } }, }) diff --git a/sim/paladin/paladin.go b/sim/paladin/paladin.go index 761dd46cd1..a43281d1c3 100644 --- a/sim/paladin/paladin.go +++ b/sim/paladin/paladin.go @@ -76,6 +76,7 @@ func (paladin *Paladin) Initialize() { paladin.registerDivineFavor() paladin.registerHammerOfWrath() paladin.registerHolyWrath() + paladin.registerAvengingWrath() } func (paladin *Paladin) Reset(_ *core.Simulation) { diff --git a/sim/paladin/runes.go b/sim/paladin/runes.go index 9b9dc29e61..32bc4ae21e 100644 --- a/sim/paladin/runes.go +++ b/sim/paladin/runes.go @@ -12,6 +12,7 @@ func (paladin *Paladin) ApplyRunes() { paladin.registerTheArtOfWar() paladin.registerSheathOfLight() paladin.registerGuardedByTheLight() + paladin.registerShockAndAwe() // "RuneHeadFanaticism" is handled in Exorcism, Holy Shock, SoC, and SoR // "RuneHeadWrath" is handled in Exorcism, Holy Shock, Consecration (and Holy Wrath once implemented) @@ -41,8 +42,8 @@ func (paladin *Paladin) registerTheArtOfWar() { if !spell.ProcMask.Matches(core.ProcMaskMelee) || !result.Outcome.Matches(core.OutcomeCrit) { return } - paladin.holyShockCooldown.Reset() - paladin.exorcismCooldown.Reset() + //paladin.holyShockCooldown.Reset() + paladin.exorcismCooldown.Set(max(0, paladin.exorcismCooldown.TimeToReady(sim) - time.Second * 2)) }, }) } @@ -84,6 +85,43 @@ func (paladin *Paladin) registerSheathOfLight() { }) } +func (paladin *Paladin) registerShockAndAwe() { + + if !paladin.hasRune(proto.PaladinRune_RuneCloakShockAndAwe) { + return + } + + dep := paladin.NewDynamicStatDependency( + stats.Intellect, stats.SpellPower, 1.0, + ) + + shockAndAweAura := paladin.RegisterAura(core.Aura{ + Label: "Shock and Awe", + Duration: time.Second * 60, + ActionID: core.ActionID{SpellID: 462834}, + OnGain: func(aura *core.Aura, sim *core.Simulation) { + paladin.EnableDynamicStatDep(sim, dep) + }, + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + paladin.DisableDynamicStatDep(sim, dep) + }, + }) + paladin.RegisterAura(core.Aura{ + Label: "Shock and Awe (rune)", + Duration: core.NeverExpires, + ActionID: core.ActionID{SpellID: 462834}, + OnReset: func(aura *core.Aura, sim *core.Simulation) { + aura.Activate(sim) + }, + OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + if !(spell.SpellCode == SpellCode_PaladinHolyShock) { + return + } + shockAndAweAura.Activate(sim) + }, + }) +} + func (paladin *Paladin) registerGuardedByTheLight() { if !paladin.hasRune(proto.PaladinRune_RuneFeetGuardedByTheLight) { return diff --git a/sim/paladin/sor.go b/sim/paladin/sor.go index f5a8f0201d..37c2feb508 100644 --- a/sim/paladin/sor.go +++ b/sim/paladin/sor.go @@ -103,7 +103,7 @@ func (paladin *Paladin) registerSealOfRighteousness() { ActionID: core.ActionID{SpellID: rank.proc.spellID}, SpellSchool: core.SpellSchoolHoly, DefenseType: core.DefenseTypeMelee, - ProcMask: core.ProcMaskEmpty, + ProcMask: core.ProcMaskMeleeMHSpecial,//changed to ProcMaskMeleeMHSpecial, to fix procs from weapons/oils which do proc from SoR, Idk side effects, does WS proc from SoR? Flags: core.SpellFlagMeleeMetrics, //BonusCritRating: paladin.holyCrit(), // TODO to be tested, but unlikely diff --git a/sim/paladin/talents.go b/sim/paladin/talents.go index 5028699c3d..837853f6a9 100644 --- a/sim/paladin/talents.go +++ b/sim/paladin/talents.go @@ -29,6 +29,9 @@ func (paladin *Paladin) ApplyTalents() { if paladin.Talents.Vengeance > 0 { paladin.applyVengeance() } + if paladin.Talents.Vindication > 0 { + paladin.applyVindication() + } // paladin.applyRighteousVengeance() // paladin.applyRedoubt() // paladin.applyReckoning() @@ -186,25 +189,47 @@ func (paladin *Paladin) applyVengeance() { }) } -// func (paladin *Paladin) applyVindication() { -// if paladin.Talents.Vindication == 0 { -// return -// } + func (paladin *Paladin) applyVindication() { + if paladin.Talents.Vindication == 0 { + return + } + //vindicationMultiplier := []float64{1, 1.05, 1.10, 1.15}[paladin.Talents.Vengeance] + vindicationMultiplier := []*stats.StatDependency{ + paladin.NewDynamicMultiplyStat(stats.AttackPower, 1.00), + paladin.NewDynamicMultiplyStat(stats.AttackPower, 1.05), + paladin.NewDynamicMultiplyStat(stats.AttackPower, 1.10), + paladin.NewDynamicMultiplyStat(stats.AttackPower, 1.15), + + } + vindicationAura := paladin.RegisterAura(core.Aura{ + Label: "Vindication Proc", + ActionID: core.ActionID{SpellID: 26021}, + Duration: time.Second * 30, + OnInit: func(aura *core.Aura, sim *core.Simulation) { + paladin.EnableDynamicStatDep(sim, vindicationMultiplier[0]) + }, + OnGain: func(aura *core.Aura, sim *core.Simulation) { + paladin.EnableDynamicStatDep(sim, vindicationMultiplier[paladin.Talents.Vindication]) + }, + OnExpire: func(aura *core.Aura, sim *core.Simulation) { + paladin.DisableDynamicStatDep(sim, vindicationMultiplier[paladin.Talents.Vindication]) + }, + }) // vindicationAuras := paladin.NewEnemyAuraArray(func(target *core.Unit) *core.Aura { // return core.VindicationAura(target, paladin.Talents.Vindication) // }) -// paladin.RegisterAura(core.Aura{ -// Label: "Vindication Talent", -// Duration: core.NeverExpires, -// OnReset: func(aura *core.Aura, sim *core.Simulation) { -// aura.Activate(sim) -// }, -// OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { -// // TODO: Replace with actual proc mask / proc chance -// if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMelee) { -// vindicationAuras.Get(result.Target).Activate(sim) -// } -// }, -// }) -// } + paladin.RegisterAura(core.Aura{ + Label: "Vindication Talent", + Duration: core.NeverExpires, + OnReset: func(aura *core.Aura, sim *core.Simulation) { + aura.Activate(sim) + }, + OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + // TODO: Replace with actual proc mask / proc chance + if result.Landed() && spell.ProcMask.Matches(core.ProcMaskMelee) { + vindicationAura.Activate(sim) + } + }, + }) + } From 1135aab2b4ccc7334d4dd654653ab7f5cad1e787 Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sat, 6 Jul 2024 15:09:26 -0600 Subject: [PATCH 2/6] Update tests, result change due to addition of Vindication adding Attack Power --- .../retribution/TestRetribution.results | 226 +++++++++--------- sim/paladin/retribution/TestShockadin.results | 76 +++--- 2 files changed, 151 insertions(+), 151 deletions(-) diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index 6cf084e9ce..cd71515298 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -148,12 +148,12 @@ character_stats_results: { stat_weights_results: { key: "TestRetribution-Lvl25-StatWeights-Default" value: { - weights: 0.44437 - weights: 0.25095 + weights: 0.45669 + weights: 0.25654 weights: 0 weights: 0 weights: 0 - weights: 0.13219 + weights: 0.13625 weights: 0 weights: 0 weights: 0 @@ -161,13 +161,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.47516 + weights: 0.47579 weights: 0 weights: 0 weights: 0 - weights: 0.20199 - weights: 1.35498 - weights: 2.17677 + weights: 0.20759 + weights: 1.39285 + weights: 2.23703 weights: 0 weights: 0 weights: 0 @@ -197,12 +197,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl40-StatWeights-Default" value: { - weights: 0.67625 - weights: 0.58429 + weights: 0.69522 + weights: 0.82815 weights: 0 weights: 0 weights: 0 - weights: 0.27466 + weights: 0.28166 weights: 0 weights: 0 weights: 0 @@ -210,13 +210,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.24056 - weights: 0.06754 + weights: 1.8649 + weights: 0.05274 weights: 0 weights: 0 - weights: 0.30738 - weights: 6.47424 - weights: 7.27739 + weights: 0.31601 + weights: 5.72863 + weights: 7.52644 weights: 0 weights: 0 weights: 0 @@ -246,12 +246,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl50-StatWeights-Default" value: { - weights: 1.14339 - weights: 0.81896 + weights: 1.16695 + weights: -0.28965 weights: 0 weights: 0 weights: 0 - weights: 0.44187 + weights: 0.44886 weights: 0 weights: 0 weights: 0 @@ -259,13 +259,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 4.89254 - weights: 0.45426 + weights: 5.30454 + weights: 0.48593 weights: 0 weights: 0 - weights: 0.43748 - weights: 7.0091 - weights: 5.43287 + weights: 0.44649 + weights: 19.52105 + weights: 7.69129 weights: 0 weights: 0 weights: 0 @@ -295,315 +295,315 @@ stat_weights_results: { dps_results: { key: "TestRetribution-Lvl25-AllItems-SoulforgeArmor" value: { - dps: 195.69663 - tps: 197.43613 + dps: 201.05956 + tps: 202.79906 } } dps_results: { key: "TestRetribution-Lvl25-Average-Default" value: { - dps: 248.30532 - tps: 254.55191 + dps: 255.29923 + tps: 262.11277 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 173.67039 - tps: 296.83671 + dps: 178.98674 + tps: 318.17173 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 91.55348 - tps: 97.71179 + dps: 94.51676 + tps: 101.47601 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 99.41627 - tps: 104.11419 + dps: 107.16608 + tps: 116.22147 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 94.47486 - tps: 199.75155 + dps: 96.98398 + tps: 202.17027 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 49.4182 - tps: 54.68203 + dps: 50.77024 + tps: 56.02955 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 58.58523 - tps: 66.57844 + dps: 63.1924 + tps: 71.18118 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 175.1736 - tps: 299.51203 + dps: 180.56936 + tps: 320.82745 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 92.46098 - tps: 98.6779 + dps: 95.40107 + tps: 102.41397 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 100.05152 - tps: 104.81132 + dps: 107.7788 + tps: 116.88888 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 95.53462 - tps: 201.50639 + dps: 98.16517 + tps: 204.45366 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 49.78055 - tps: 55.07914 + dps: 51.23921 + tps: 56.55363 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 58.75774 - tps: 66.81345 + dps: 63.3497 + tps: 71.39219 } } dps_results: { key: "TestRetribution-Lvl25-SwitchInFrontOfTarget-Default" value: { - dps: 233.06986 - tps: 239.28678 + dps: 239.77436 + tps: 246.78726 } } dps_results: { key: "TestRetribution-Lvl40-AllItems-SoulforgeArmor" value: { - dps: 330.98056 - tps: 337.96005 + dps: 339.31892 + tps: 346.30444 } } dps_results: { key: "TestRetribution-Lvl40-Average-Default" value: { - dps: 609.3635 - tps: 623.26834 + dps: 624.11137 + tps: 638.17453 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 386.86802 - tps: 637.52066 + dps: 397.65807 + tps: 650.01863 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 214.76758 - tps: 226.98389 + dps: 220.37 + tps: 232.70931 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 228.62839 - tps: 240.62646 + dps: 243.68281 + tps: 255.81565 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 203.18803 - tps: 367.93449 + dps: 208.46466 + tps: 378.86945 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 107.82413 - tps: 115.88333 + dps: 110.59494 + tps: 118.67895 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 126.06416 - tps: 136.6733 + dps: 134.9814 + tps: 145.68641 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 386.0649 - tps: 635.99805 + dps: 397.60078 + tps: 650.87438 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 215.03086 - tps: 227.13257 + dps: 220.64556 + tps: 232.90078 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 229.57138 - tps: 241.60916 + dps: 244.81984 + tps: 257.0104 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 203.99603 - tps: 371.03548 + dps: 208.45591 + tps: 375.54383 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 108.09974 - tps: 116.04617 + dps: 110.66448 + tps: 118.79335 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 126.25589 - tps: 136.90979 + dps: 135.15447 + tps: 145.9114 } } dps_results: { key: "TestRetribution-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 575.43515 - tps: 589.28541 + dps: 589.91306 + tps: 603.9081 } } dps_results: { key: "TestRetribution-Lvl50-AllItems-SoulforgeArmor" value: { - dps: 741.66325 - tps: 776.17463 + dps: 761.45574 + tps: 796.69199 } } dps_results: { key: "TestRetribution-Lvl50-Average-Default" value: { - dps: 1329.56773 - tps: 1362.19869 + dps: 1360.88477 + tps: 1394.23691 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1305.3738 - tps: 1856.68396 + dps: 1336.74353 + tps: 1891.02825 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 357.69694 - tps: 385.32774 + dps: 365.36129 + tps: 393.0624 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 412.50145 - tps: 443.46695 + dps: 432.59938 + tps: 462.73783 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 446.5218 - tps: 720.29695 + dps: 456.71701 + tps: 731.19389 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 134.88055 - tps: 148.56931 + dps: 140.34202 + tps: 154.06586 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 186.34123 - tps: 204.07747 + dps: 196.8667 + tps: 214.73895 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1311.8285 - tps: 1864.49867 + dps: 1348.478 + tps: 1904.89319 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 360.49712 - tps: 388.16937 + dps: 367.75061 + tps: 395.5721 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 415.31569 - tps: 446.44973 + dps: 435.48041 + tps: 465.84474 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 419.2515 - tps: 693.89363 + dps: 465.93652 + tps: 741.58566 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 141.8012 - tps: 155.53331 + dps: 140.37263 + tps: 154.15509 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 186.9483 - tps: 204.77703 + dps: 199.53638 + tps: 217.49768 } } dps_results: { key: "TestRetribution-Lvl50-SwitchInFrontOfTarget-Default" value: { - dps: 1247.39828 - tps: 1280.07407 + dps: 1295.49952 + tps: 1329.41665 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index f5dcee7eea..653c96db62 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestShockadin-Lvl40-StatWeights-Default" value: { - weights: 0.70109 - weights: 0.37829 + weights: 0.77339 + weights: 0.88546 weights: 0 weights: 0 weights: 0 - weights: 0.28292 + weights: 0.2636 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.42539 - weights: 0.41781 + weights: 2.1754 + weights: 0.18168 weights: 0 weights: 0 - weights: 0.28971 - weights: -8.78577 - weights: -6.31697 + weights: 0.31958 + weights: 7.27092 + weights: 6.43913 weights: 0 weights: 0 weights: 0 @@ -99,105 +99,105 @@ stat_weights_results: { dps_results: { key: "TestShockadin-Lvl40-AllItems-SoulforgeArmor" value: { - dps: 377.29661 - tps: 395.94838 + dps: 407.49296 + tps: 427.92141 } } dps_results: { key: "TestShockadin-Lvl40-Average-Default" value: { - dps: 564.94819 - tps: 583.48281 + dps: 610.68404 + tps: 634.86655 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 574.03314 - tps: 859.7505 + dps: 540.2532 + tps: 820.29053 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 168.02008 - tps: 182.30423 + dps: 153.43591 + tps: 167.47003 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 184.6647 - tps: 200.29594 + dps: 183.78453 + tps: 199.81931 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 284.11197 - tps: 468.77024 + dps: 240.63929 + tps: 426.39282 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 85.86582 - tps: 95.09873 + dps: 78.63891 + tps: 87.92659 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 110.29138 - tps: 121.01506 + dps: 108.07573 + tps: 119.00596 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 576.19125 - tps: 863.55893 + dps: 540.51012 + tps: 822.02712 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 170.00941 - tps: 184.39817 + dps: 152.50805 + tps: 166.57372 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 186.49174 - tps: 202.17974 + dps: 184.66921 + tps: 200.75072 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 282.59127 - tps: 468.61772 + dps: 252.69334 + tps: 439.92204 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 87.46112 - tps: 96.76244 + dps: 77.93789 + tps: 87.29933 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 111.90114 - tps: 122.69324 + dps: 108.51121 + tps: 119.50194 } } dps_results: { key: "TestShockadin-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 548.08357 - tps: 566.95366 + dps: 569.86341 + tps: 593.92309 } } From 3cbca9cef386a1ebedb8ba40fbc400e6e01fb204 Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sat, 6 Jul 2024 19:20:39 -0600 Subject: [PATCH 3/6] missed commit for paladin.proto --- proto/paladin.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/proto/paladin.proto b/proto/paladin.proto index 7e945f7df7..5a219a25c8 100644 --- a/proto/paladin.proto +++ b/proto/paladin.proto @@ -64,6 +64,7 @@ enum PaladinRune { RuneCloakShieldOfRighteousness = 440658; RuneCloakVindicator = 440666; + RuneCloakShockAndAwe = 462834; RuneCloakRighteousVengeance = 440672; RuneChestDivineStorm = 407778; From 5fb14c054442c601c1946e7ee9c449ca01ad5618 Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sat, 6 Jul 2024 21:58:38 -0600 Subject: [PATCH 4/6] Updates for code review -Remove "ActionID" for trigger auras in runes.go -misc syntax changes -Shock And Awe change SpellPower to SpellDamage conversion from INT -Fix Avenging Wrath CD to 3 minutes Updates Test Results due to Avenging Wrath Change --- sim/paladin/avenging_wrath.go | 8 +- sim/paladin/holy_shock.go | 8 +- .../retribution/TestRetribution.results | 178 +++++++++--------- sim/paladin/retribution/TestShockadin.results | 58 +++--- sim/paladin/runes.go | 13 +- 5 files changed, 129 insertions(+), 136 deletions(-) diff --git a/sim/paladin/avenging_wrath.go b/sim/paladin/avenging_wrath.go index 5de4ba0a93..97c74fecd3 100644 --- a/sim/paladin/avenging_wrath.go +++ b/sim/paladin/avenging_wrath.go @@ -32,7 +32,7 @@ func (paladin *Paladin) registerAvengingWrath() { Cast: core.CastConfig{ CD: core.Cooldown{ Timer: paladin.NewTimer(), - Duration: time.Minute*3 - (time.Second * 20), + Duration: time.Minute*3, }, }, @@ -44,10 +44,6 @@ func (paladin *Paladin) registerAvengingWrath() { paladin.AddMajorCooldown(core.MajorCooldown{ Spell: AvengingWrath, Type: core.CooldownTypeDPS, - // modify this logic if it should ever not be spammed on CD / maybe should synced with other CDs - ShouldActivate: func(sim *core.Simulation, character *core.Character) bool { - - return true - }, + }) } diff --git a/sim/paladin/holy_shock.go b/sim/paladin/holy_shock.go index dff00bbbc0..cac63ef19a 100644 --- a/sim/paladin/holy_shock.go +++ b/sim/paladin/holy_shock.go @@ -11,16 +11,16 @@ import ( func (paladin *Paladin) registerHolyShock() { hasInfusionOfLight := paladin.hasRune(proto.PaladinRune_RuneWaistInfusionOfLight) - var cdTime time.Duration - cdTime = 30 + + cdTime := time.Second * 30 if hasInfusionOfLight { - cdTime = 6 + cdTime = time.Second * 6 } paladin.holyShockCooldown = &core.Cooldown{ Timer: paladin.NewTimer(), - Duration: time.Second * cdTime, + Duration: cdTime, } if !paladin.Talents.HolyShock { diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index cd71515298..a59d863113 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -148,12 +148,12 @@ character_stats_results: { stat_weights_results: { key: "TestRetribution-Lvl25-StatWeights-Default" value: { - weights: 0.45669 - weights: 0.25654 + weights: 0.45643 + weights: 0.25634 weights: 0 weights: 0 weights: 0 - weights: 0.13625 + weights: 0.13576 weights: 0 weights: 0 weights: 0 @@ -161,13 +161,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.47579 + weights: 0.49331 weights: 0 weights: 0 weights: 0 - weights: 0.20759 - weights: 1.39285 - weights: 2.23703 + weights: 0.20747 + weights: 1.40292 + weights: 2.23139 weights: 0 weights: 0 weights: 0 @@ -197,12 +197,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl40-StatWeights-Default" value: { - weights: 0.69522 - weights: 0.82815 + weights: 0.69506 + weights: 0.83106 weights: 0 weights: 0 weights: 0 - weights: 0.28166 + weights: 0.28155 weights: 0 weights: 0 weights: 0 @@ -210,13 +210,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.8649 - weights: 0.05274 + weights: 1.812 + weights: 0.05144 weights: 0 weights: 0 - weights: 0.31601 - weights: 5.72863 - weights: 7.52644 + weights: 0.31594 + weights: 5.77948 + weights: 7.57888 weights: 0 weights: 0 weights: 0 @@ -246,12 +246,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl50-StatWeights-Default" value: { - weights: 1.16695 - weights: -0.28965 + weights: 1.16638 + weights: -0.44066 weights: 0 weights: 0 weights: 0 - weights: 0.44886 + weights: 0.44814 weights: 0 weights: 0 weights: 0 @@ -259,13 +259,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 5.30454 - weights: 0.48593 + weights: 5.25869 + weights: 0.48387 weights: 0 weights: 0 - weights: 0.44649 - weights: 19.52105 - weights: 7.69129 + weights: 0.44627 + weights: 19.50183 + weights: 7.6249 weights: 0 weights: 0 weights: 0 @@ -295,29 +295,29 @@ stat_weights_results: { dps_results: { key: "TestRetribution-Lvl25-AllItems-SoulforgeArmor" value: { - dps: 201.05956 - tps: 202.79906 + dps: 201.0554 + tps: 202.7949 } } dps_results: { key: "TestRetribution-Lvl25-Average-Default" value: { - dps: 255.29923 - tps: 262.11277 + dps: 255.06965 + tps: 261.88319 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 178.98674 - tps: 318.17173 + dps: 178.91614 + tps: 318.10113 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 94.51676 - tps: 101.47601 + dps: 94.46404 + tps: 101.42328 } } dps_results: { @@ -330,15 +330,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 96.98398 - tps: 202.17027 + dps: 96.90556 + tps: 202.09185 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Dwarf-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 50.77024 - tps: 56.02955 + dps: 50.7845 + tps: 56.04381 } } dps_results: { @@ -351,15 +351,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 180.56936 - tps: 320.82745 + dps: 180.45432 + tps: 320.71241 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 95.40107 - tps: 102.41397 + dps: 95.353 + tps: 102.36591 } } dps_results: { @@ -372,15 +372,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 98.16517 - tps: 204.45366 + dps: 97.93417 + tps: 204.22265 } } dps_results: { key: "TestRetribution-Lvl25-Settings-Human-p1ret-P1 Seal of Command Ret-p1ret-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 51.23921 - tps: 56.55363 + dps: 51.1797 + tps: 56.49412 } } dps_results: { @@ -393,36 +393,36 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl25-SwitchInFrontOfTarget-Default" value: { - dps: 239.77436 - tps: 246.78726 + dps: 239.48638 + tps: 246.49929 } } dps_results: { key: "TestRetribution-Lvl40-AllItems-SoulforgeArmor" value: { - dps: 339.31892 - tps: 346.30444 + dps: 339.33932 + tps: 346.32483 } } dps_results: { key: "TestRetribution-Lvl40-Average-Default" value: { - dps: 624.11137 - tps: 638.17453 + dps: 624.10171 + tps: 638.16382 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 397.65807 - tps: 650.01863 + dps: 397.57578 + tps: 649.91825 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 220.37 - tps: 232.70931 + dps: 220.39071 + tps: 232.72387 } } dps_results: { @@ -435,15 +435,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 208.46466 - tps: 378.86945 + dps: 208.46086 + tps: 379.04024 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 110.59494 - tps: 118.67895 + dps: 110.70224 + tps: 118.78648 } } dps_results: { @@ -456,15 +456,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 397.60078 - tps: 650.87438 + dps: 397.54901 + tps: 650.62568 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 220.64556 - tps: 232.90078 + dps: 220.68442 + tps: 232.9726 } } dps_results: { @@ -477,15 +477,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 208.45591 - tps: 375.54383 + dps: 208.45992 + tps: 377.09342 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 110.66448 - tps: 118.79335 + dps: 110.76581 + tps: 118.9293 } } dps_results: { @@ -498,36 +498,36 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 589.91306 - tps: 603.9081 + dps: 590.23997 + tps: 604.23476 } } dps_results: { key: "TestRetribution-Lvl50-AllItems-SoulforgeArmor" value: { - dps: 761.45574 - tps: 796.69199 + dps: 761.90011 + tps: 796.75547 } } dps_results: { key: "TestRetribution-Lvl50-Average-Default" value: { - dps: 1360.88477 - tps: 1394.23691 + dps: 1360.94304 + tps: 1394.29266 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1336.74353 - tps: 1891.02825 + dps: 1334.75698 + tps: 1889.17879 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 365.36129 - tps: 393.0624 + dps: 366.07471 + tps: 393.78651 } } dps_results: { @@ -540,15 +540,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 456.71701 - tps: 731.19389 + dps: 458.44156 + tps: 733.23377 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 140.34202 - tps: 154.06586 + dps: 139.01952 + tps: 152.75914 } } dps_results: { @@ -561,15 +561,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1348.478 - tps: 1904.89319 + dps: 1346.89762 + tps: 1903.31281 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 367.75061 - tps: 395.5721 + dps: 368.24323 + tps: 396.08477 } } dps_results: { @@ -582,15 +582,15 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 465.93652 - tps: 741.58566 + dps: 463.73281 + tps: 740.01762 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 140.37263 - tps: 154.15509 + dps: 139.23456 + tps: 153.04881 } } dps_results: { @@ -603,7 +603,7 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl50-SwitchInFrontOfTarget-Default" value: { - dps: 1295.49952 - tps: 1329.41665 + dps: 1294.71853 + tps: 1328.62605 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index 653c96db62..a943828f57 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestShockadin-Lvl40-StatWeights-Default" value: { - weights: 0.77339 - weights: 0.88546 + weights: 0.77371 + weights: 0.90587 weights: 0 weights: 0 weights: 0 - weights: 0.2636 + weights: 0.2634 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.1754 + weights: 2.15012 weights: 0.18168 weights: 0 weights: 0 - weights: 0.31958 - weights: 7.27092 - weights: 6.43913 + weights: 0.31972 + weights: 7.27895 + weights: 6.44115 weights: 0 weights: 0 weights: 0 @@ -99,29 +99,29 @@ stat_weights_results: { dps_results: { key: "TestShockadin-Lvl40-AllItems-SoulforgeArmor" value: { - dps: 407.49296 - tps: 427.92141 + dps: 408.89236 + tps: 429.42808 } } dps_results: { key: "TestShockadin-Lvl40-Average-Default" value: { - dps: 610.68404 - tps: 634.86655 + dps: 610.89086 + tps: 635.0729 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 540.2532 - tps: 820.29053 + dps: 525.20092 + tps: 807.10826 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 153.43591 - tps: 167.47003 + dps: 154.98715 + tps: 169.09426 } } dps_results: { @@ -134,15 +134,15 @@ dps_results: { dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 240.63929 - tps: 426.39282 + dps: 237.24513 + tps: 423.1332 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 78.63891 - tps: 87.92659 + dps: 78.6491 + tps: 87.9435 } } dps_results: { @@ -155,15 +155,15 @@ dps_results: { dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 540.51012 - tps: 822.02712 + dps: 535.00049 + tps: 817.45249 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 152.50805 - tps: 166.57372 + dps: 157.65412 + tps: 171.8419 } } dps_results: { @@ -176,15 +176,15 @@ dps_results: { dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 252.69334 - tps: 439.92204 + dps: 255.0648 + tps: 442.2935 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 77.93789 - tps: 87.29933 + dps: 77.85838 + tps: 87.21981 } } dps_results: { @@ -197,7 +197,7 @@ dps_results: { dps_results: { key: "TestShockadin-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 569.86341 - tps: 593.92309 + dps: 570.01838 + tps: 594.06687 } } diff --git a/sim/paladin/runes.go b/sim/paladin/runes.go index 32bc4ae21e..0e8eda957d 100644 --- a/sim/paladin/runes.go +++ b/sim/paladin/runes.go @@ -33,8 +33,7 @@ func (paladin *Paladin) registerTheArtOfWar() { paladin.RegisterAura(core.Aura{ Label: "The Art of War", - Duration: core.NeverExpires, - ActionID: core.ActionID{SpellID: 426157}, + Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, @@ -71,8 +70,7 @@ func (paladin *Paladin) registerSheathOfLight() { }) paladin.RegisterAura(core.Aura{ Label: "Sheath of Light (rune)", - Duration: core.NeverExpires, - ActionID: core.ActionID{SpellID: 426158}, + Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, @@ -92,7 +90,7 @@ func (paladin *Paladin) registerShockAndAwe() { } dep := paladin.NewDynamicStatDependency( - stats.Intellect, stats.SpellPower, 1.0, + stats.Intellect, stats.SpellDamage, 1.0, ) shockAndAweAura := paladin.RegisterAura(core.Aura{ @@ -108,13 +106,12 @@ func (paladin *Paladin) registerShockAndAwe() { }) paladin.RegisterAura(core.Aura{ Label: "Shock and Awe (rune)", - Duration: core.NeverExpires, - ActionID: core.ActionID{SpellID: 462834}, + Duration: core.NeverExpires, OnReset: func(aura *core.Aura, sim *core.Simulation) { aura.Activate(sim) }, OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { - if !(spell.SpellCode == SpellCode_PaladinHolyShock) { + if spell.SpellCode != SpellCode_PaladinHolyShock { return } shockAndAweAura.Activate(sim) From af404e6aaf31e1dedbb4209d7f277689fb1675db Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sun, 7 Jul 2024 07:29:05 -0600 Subject: [PATCH 5/6] Cooldown set command didn't work how I had thought, need to add sim time to get correct duration --- sim/paladin/runes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sim/paladin/runes.go b/sim/paladin/runes.go index 0e8eda957d..6bd374887e 100644 --- a/sim/paladin/runes.go +++ b/sim/paladin/runes.go @@ -42,7 +42,7 @@ func (paladin *Paladin) registerTheArtOfWar() { return } //paladin.holyShockCooldown.Reset() - paladin.exorcismCooldown.Set(max(0, paladin.exorcismCooldown.TimeToReady(sim) - time.Second * 2)) + paladin.exorcismCooldown.Set(sim.CurrentTime + max(0, paladin.exorcismCooldown.TimeToReady(sim) - (time.Second * 2))) }, }) } From 1eae7eecc10a7304858eb6e3ee3d9a78ada600cc Mon Sep 17 00:00:00 2001 From: Michael Robertson Date: Sun, 7 Jul 2024 07:32:47 -0600 Subject: [PATCH 6/6] Updated Test results to reflect change in Art of War working correctly --- .../retribution/TestRetribution.results | 144 +++++++++--------- sim/paladin/retribution/TestShockadin.results | 72 ++++----- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/sim/paladin/retribution/TestRetribution.results b/sim/paladin/retribution/TestRetribution.results index a59d863113..1ae2d6eaeb 100644 --- a/sim/paladin/retribution/TestRetribution.results +++ b/sim/paladin/retribution/TestRetribution.results @@ -197,12 +197,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl40-StatWeights-Default" value: { - weights: 0.69506 - weights: 0.83106 + weights: 0.66485 + weights: 0.57659 weights: 0 weights: 0 weights: 0 - weights: 0.28155 + weights: 0.23304 weights: 0 weights: 0 weights: 0 @@ -210,13 +210,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.812 - weights: 0.05144 + weights: 1.51742 + weights: 0.11162 weights: 0 weights: 0 - weights: 0.31594 - weights: 5.77948 - weights: 7.57888 + weights: 0.3022 + weights: 5.84228 + weights: 4.88324 weights: 0 weights: 0 weights: 0 @@ -246,12 +246,12 @@ stat_weights_results: { stat_weights_results: { key: "TestRetribution-Lvl50-StatWeights-Default" value: { - weights: 1.16638 - weights: -0.44066 + weights: 1.04322 + weights: 1.79414 weights: 0 weights: 0 weights: 0 - weights: 0.44814 + weights: 0.31582 weights: 0 weights: 0 weights: 0 @@ -259,13 +259,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 5.25869 - weights: 0.48387 + weights: 2.77618 + weights: 0.58401 weights: 0 weights: 0 - weights: 0.44627 - weights: 19.50183 - weights: 7.6249 + weights: 0.36323 + weights: 15.17741 + weights: 9.11836 weights: 0 weights: 0 weights: 0 @@ -407,99 +407,99 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl40-Average-Default" value: { - dps: 624.10171 - tps: 638.16382 + dps: 573.23614 + tps: 586.48727 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 397.57578 - tps: 649.91825 + dps: 374.71716 + tps: 619.00123 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 220.39071 - tps: 232.72387 + dps: 207.35619 + tps: 219.23196 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 243.68281 - tps: 255.81565 + dps: 230.23541 + tps: 241.9534 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 208.46086 - tps: 379.04024 + dps: 201.66489 + tps: 364.25761 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 110.70224 - tps: 118.78648 + dps: 105.88523 + tps: 113.91097 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Dwarf-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 134.9814 - tps: 145.68641 + dps: 129.08361 + tps: 139.80772 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 397.54901 - tps: 650.62568 + dps: 374.37825 + tps: 618.02471 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 220.68442 - tps: 232.9726 + dps: 207.29434 + tps: 219.14243 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 244.81984 - tps: 257.0104 + dps: 231.14567 + tps: 242.86397 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 208.45992 - tps: 377.09342 + dps: 200.88112 + tps: 361.7774 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 110.76581 - tps: 118.9293 + dps: 106.00914 + tps: 114.10304 } } dps_results: { key: "TestRetribution-Lvl40-Settings-Human-p2retsoc-P2 Seal of Command Ret-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 135.15447 - tps: 145.9114 + dps: 129.3688 + tps: 140.1492 } } dps_results: { key: "TestRetribution-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 590.23997 - tps: 604.23476 + dps: 541.83406 + tps: 554.98077 } } dps_results: { @@ -512,98 +512,98 @@ dps_results: { dps_results: { key: "TestRetribution-Lvl50-Average-Default" value: { - dps: 1360.94304 - tps: 1394.29266 + dps: 1193.28664 + tps: 1232.29722 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1334.75698 - tps: 1889.17879 + dps: 1355.78224 + tps: 1901.51578 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 366.07471 - tps: 393.78651 + dps: 337.31289 + tps: 364.58807 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 432.59938 - tps: 462.73783 + dps: 403.65778 + tps: 431.41418 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 458.44156 - tps: 733.23377 + dps: 469.97354 + tps: 743.85142 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 139.01952 - tps: 152.75914 + dps: 131.15389 + tps: 144.84778 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Dwarf-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 196.8667 - tps: 214.73895 + dps: 186.6835 + tps: 204.48484 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 1346.89762 - tps: 1903.31281 + dps: 1361.08895 + tps: 1909.62289 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 368.24323 - tps: 396.08477 + dps: 341.68087 + tps: 369.07226 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-FullBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 435.48041 - tps: 465.84474 + dps: 406.8862 + tps: 434.73159 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongMultiTarget" value: { - dps: 463.73281 - tps: 740.01762 + dps: 458.78293 + tps: 733.82615 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-LongSingleTarget" value: { - dps: 139.23456 - tps: 153.04881 + dps: 134.81793 + tps: 148.57009 } } dps_results: { key: "TestRetribution-Lvl50-Settings-Human-p3retsom-P3 Seal of Martyrdom Ret-p3ret-NoBuffs-Phase 3 Consumes-ShortSingleTarget" value: { - dps: 199.53638 - tps: 217.49768 + dps: 187.03007 + tps: 204.91934 } } dps_results: { key: "TestRetribution-Lvl50-SwitchInFrontOfTarget-Default" value: { - dps: 1294.71853 - tps: 1328.62605 + dps: 1132.19417 + tps: 1170.69885 } } diff --git a/sim/paladin/retribution/TestShockadin.results b/sim/paladin/retribution/TestShockadin.results index a943828f57..e2d03304c9 100644 --- a/sim/paladin/retribution/TestShockadin.results +++ b/sim/paladin/retribution/TestShockadin.results @@ -50,12 +50,12 @@ character_stats_results: { stat_weights_results: { key: "TestShockadin-Lvl40-StatWeights-Default" value: { - weights: 0.77371 - weights: 0.90587 + weights: 0.73113 + weights: -0.00711 weights: 0 weights: 0 weights: 0 - weights: 0.2634 + weights: 0.20397 weights: 0 weights: 0 weights: 0 @@ -63,13 +63,13 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.15012 - weights: 0.18168 + weights: 1.99055 + weights: 0.18737 weights: 0 weights: 0 - weights: 0.31972 - weights: 7.27895 - weights: 6.44115 + weights: 0.30212 + weights: 6.84241 + weights: 4.8278 weights: 0 weights: 0 weights: 0 @@ -106,98 +106,98 @@ dps_results: { dps_results: { key: "TestShockadin-Lvl40-Average-Default" value: { - dps: 610.89086 - tps: 635.0729 + dps: 547.59415 + tps: 572.00863 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 525.20092 - tps: 807.10826 + dps: 515.95475 + tps: 794.84944 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 154.98715 - tps: 169.09426 + dps: 149.76546 + tps: 163.69094 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 183.78453 - tps: 199.81931 + dps: 176.69829 + tps: 192.55602 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 237.24513 - tps: 423.1332 + dps: 242.06285 + tps: 427.00913 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 78.6491 - tps: 87.9435 + dps: 76.02769 + tps: 85.275 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Dwarf-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 108.07573 - tps: 119.00596 + dps: 103.55904 + tps: 114.48926 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 535.00049 - tps: 817.45249 + dps: 534.38432 + tps: 813.56919 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 157.65412 - tps: 171.8419 + dps: 149.23947 + tps: 163.22428 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-FullBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 184.66921 - tps: 200.75072 + dps: 178.16161 + tps: 194.04776 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongMultiTarget" value: { - dps: 255.0648 - tps: 442.2935 + dps: 248.90445 + tps: 435.18173 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-LongSingleTarget" value: { - dps: 77.85838 - tps: 87.21981 + dps: 76.20154 + tps: 85.5154 } } dps_results: { key: "TestShockadin-Lvl40-Settings-Human-p2retsom-P2 Seal of Martyrdom Shockadin-p2ret-NoBuffs-Phase 2 Consumes-ShortSingleTarget" value: { - dps: 108.51121 - tps: 119.50194 + dps: 105.03447 + tps: 116.0252 } } dps_results: { key: "TestShockadin-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 570.01838 - tps: 594.06687 + dps: 510.7834 + tps: 535.02541 } }