From 824452aa486eacb0235c8e78a2d55a030bb90c23 Mon Sep 17 00:00:00 2001 From: Josh Date: Thu, 28 Sep 2023 00:20:55 -0400 Subject: [PATCH] add downrank penalty for flamestrike rank 8 (#3769) --- sim/mage/TestFire.results | 24 ++++++++++++------------ sim/mage/flamestrike.go | 8 ++++++-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/sim/mage/TestFire.results b/sim/mage/TestFire.results index 4c6578e87d..9a1d3ffade 100644 --- a/sim/mage/TestFire.results +++ b/sim/mage/TestFire.results @@ -770,43 +770,43 @@ dps_results: { dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-FullBuffs-LongMultiTarget" value: { - dps: 42416.39983 - tps: 39729.68683 + dps: 42304.64393 + tps: 39629.66856 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-FullBuffs-LongSingleTarget" value: { - dps: 2577.32039 - tps: 2014.10626 + dps: 2559.98392 + tps: 1998.67226 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-FullBuffs-ShortSingleTarget" value: { - dps: 3869.13982 - tps: 2902.37696 + dps: 3829.65787 + tps: 2867.27969 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-NoBuffs-LongMultiTarget" value: { - dps: 22690.85888 - tps: 22825.29888 + dps: 22660.76278 + tps: 22798.32887 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-NoBuffs-LongSingleTarget" value: { - dps: 1228.0223 - tps: 985.44411 + dps: 1220.0746 + tps: 978.35309 } } dps_results: { key: "TestFire-Settings-Troll-P1Fire-Fire-AOE-NoBuffs-ShortSingleTarget" value: { - dps: 2206.59777 - tps: 1737.79695 + dps: 2185.96357 + tps: 1719.38981 } } dps_results: { diff --git a/sim/mage/flamestrike.go b/sim/mage/flamestrike.go index a945ecbf48..81e0022f40 100644 --- a/sim/mage/flamestrike.go +++ b/sim/mage/flamestrike.go @@ -11,6 +11,7 @@ func (mage *Mage) registerFlamestrikeSpell(rank8 bool) *core.Spell { dotDamage := 780.0 / 4 minDamage := 876.0 maxDamage := 1071.0 + spCoeffMultiplier := 1.0 label := "Flamestrike (Rank 9)" if rank8 { actionID = core.ActionID{SpellID: 42925}.WithTag(8) @@ -18,6 +19,9 @@ func (mage *Mage) registerFlamestrikeSpell(rank8 bool) *core.Spell { minDamage = 699.0 maxDamage = 854.0 label = "Flamestrike (Rank 8)" + // Flamestrike (Rank 8) has a 90% SP coefficient penalty + // https://wowpedia.fandom.com/wiki/Downranking#Wrath_of_the_Lich_King + spCoeffMultiplier = 0.9 } return mage.RegisterSpell(core.SpellConfig{ @@ -52,7 +56,7 @@ func (mage *Mage) registerFlamestrikeSpell(rank8 bool) *core.Spell { TickLength: time.Second * 2, OnSnapshot: func(sim *core.Simulation, _ *core.Unit, dot *core.Dot, _ bool) { target := mage.CurrentTarget - dot.SnapshotBaseDamage = dotDamage + 0.122*dot.Spell.SpellPower() + dot.SnapshotBaseDamage = dotDamage + 0.122*dot.Spell.SpellPower()*spCoeffMultiplier dot.SnapshotAttackerMultiplier = dot.Spell.AttackerDamageMultiplier(dot.Spell.Unit.AttackTables[target.UnitIndex]) }, OnTick: func(sim *core.Simulation, target *core.Unit, dot *core.Dot) { @@ -63,7 +67,7 @@ func (mage *Mage) registerFlamestrikeSpell(rank8 bool) *core.Spell { }, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - dmgFromSP := 0.243 * spell.SpellPower() + dmgFromSP := 0.243 * spell.SpellPower() * spCoeffMultiplier for _, aoeTarget := range sim.Encounter.TargetUnits { baseDamage := sim.Roll(minDamage, maxDamage) + dmgFromSP baseDamage *= sim.Encounter.AOECapMultiplier()