From 062426b0da23812f68f516bca0bf39df22145d16 Mon Sep 17 00:00:00 2001 From: Kayla Glick Date: Tue, 3 Sep 2024 02:07:03 -0400 Subject: [PATCH] warrior phase 5 rune changes --- sim/warrior/dps_warrior/TestArms.results | 18 ++--- sim/warrior/dps_warrior/TestFury.results | 70 +++++++++---------- sim/warrior/quick_strike.go | 2 +- sim/warrior/rampage.go | 5 +- sim/warrior/runes.go | 20 +++--- sim/warrior/sunder_armor.go | 8 ++- .../tank_warrior/TestTankWarrior.results | 32 ++++----- 7 files changed, 81 insertions(+), 74 deletions(-) diff --git a/sim/warrior/dps_warrior/TestArms.results b/sim/warrior/dps_warrior/TestArms.results index fdf0f278cb..0a69219c3f 100644 --- a/sim/warrior/dps_warrior/TestArms.results +++ b/sim/warrior/dps_warrior/TestArms.results @@ -50,8 +50,8 @@ character_stats_results: { stat_weights_results: { key: "TestArms-Lvl50-StatWeights-Default" value: { - weights: 0.96938 - weights: 0.94115 + weights: 1.32803 + weights: 0.90474 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.29689 - weights: 13.18277 - weights: 10.97717 + weights: 0.51165 + weights: 16.60611 + weights: 11.22814 weights: 0 weights: 0 weights: 0 @@ -106,8 +106,8 @@ dps_results: { dps_results: { key: "TestArms-Lvl50-Average-Default" value: { - dps: 1140.11392 - tps: 969.13226 + dps: 1190.65125 + tps: 1012.94692 } } dps_results: { @@ -197,7 +197,7 @@ dps_results: { dps_results: { key: "TestArms-Lvl50-SwitchInFrontOfTarget-Default" value: { - dps: 1057.42077 - tps: 899.84329 + dps: 1111.33007 + tps: 947.15308 } } diff --git a/sim/warrior/dps_warrior/TestFury.results b/sim/warrior/dps_warrior/TestFury.results index fee9a83491..439b95d599 100644 --- a/sim/warrior/dps_warrior/TestFury.results +++ b/sim/warrior/dps_warrior/TestFury.results @@ -148,8 +148,8 @@ stat_weights_results: { stat_weights_results: { key: "TestFury-Lvl60-StatWeights-Default" value: { - weights: 2.72024 - weights: 0.2116 + weights: 0.75763 + weights: 1.37522 weights: 0 weights: 0 weights: 0 @@ -165,9 +165,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 2.11692 - weights: 6.80157 - weights: 29.43846 + weights: 1.44992 + weights: 3.62881 + weights: 31.64845 weights: 0 weights: 0 weights: 0 @@ -302,8 +302,8 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-AllItems-BanishedMartyr'sFullPlate" value: { - dps: 2586.0156 - tps: 2282.02741 + dps: 2600.08044 + tps: 2301.99384 } } dps_results: { @@ -316,50 +316,50 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-AllItems-BloodGuard'sPlate" value: { - dps: 2174.733 - tps: 1911.88061 + dps: 2175.68789 + tps: 1913.2109 } } dps_results: { key: "TestFury-Lvl60-AllItems-EmeraldDreamPlate" value: { - dps: 2161.45805 - tps: 1903.10474 + dps: 2169.85182 + tps: 1911.43626 } } dps_results: { key: "TestFury-Lvl60-AllItems-Knight-Lieutenant'sPlate" value: { - dps: 2174.733 - tps: 1911.88061 + dps: 2175.68789 + tps: 1913.2109 } } dps_results: { key: "TestFury-Lvl60-AllItems-WailingBerserker'sPlateArmor" value: { - dps: 2796.38015 - tps: 2465.92593 + dps: 2783.37913 + tps: 2454.40955 } } dps_results: { key: "TestFury-Lvl60-Average-Default" value: { - dps: 3242.16144 - tps: 2832.66473 + dps: 3263.8589 + tps: 2851.02817 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 1297.60266 - tps: 1311.31884 + dps: 1317.73966 + tps: 1330.45288 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 407.19885 - tps: 402.21558 + dps: 412.04719 + tps: 406.96082 } } dps_results: { @@ -372,15 +372,15 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 570.41724 - tps: 633.29146 + dps: 578.79622 + tps: 642.56094 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 202.5115 - tps: 229.18915 + dps: 203.85659 + tps: 231.17468 } } dps_results: { @@ -393,15 +393,15 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 1395.19137 - tps: 1400.14264 + dps: 1400.01147 + tps: 1404.59231 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 420.92334 - tps: 412.82339 + dps: 426.6352 + tps: 418.15813 } } dps_results: { @@ -414,15 +414,15 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 594.71646 - tps: 655.29917 + dps: 595.74211 + tps: 656.18596 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 199.58548 - tps: 225.90013 + dps: 203.9354 + tps: 229.94943 } } dps_results: { @@ -435,7 +435,7 @@ dps_results: { dps_results: { key: "TestFury-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 2548.85172 - tps: 2230.54743 + dps: 2554.40805 + tps: 2234.44992 } } diff --git a/sim/warrior/quick_strike.go b/sim/warrior/quick_strike.go index ffbf8bbe4b..4d49c58bf8 100644 --- a/sim/warrior/quick_strike.go +++ b/sim/warrior/quick_strike.go @@ -33,7 +33,7 @@ func (warrior *Warrior) registerQuickStrike() { ThreatMultiplier: 1, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - baseDamage := sim.Roll(0.10, 0.20) * spell.MeleeAttackPower() + baseDamage := sim.Roll(0.25, 0.35) * spell.MeleeAttackPower() result := spell.CalcAndDealDamage(sim, target, baseDamage, spell.OutcomeMeleeWeaponSpecialHitAndCrit) diff --git a/sim/warrior/rampage.go b/sim/warrior/rampage.go index cace693646..1643746032 100644 --- a/sim/warrior/rampage.go +++ b/sim/warrior/rampage.go @@ -31,12 +31,9 @@ func (warrior *Warrior) registerRampage() { warrior.Rampage = warrior.RegisterSpell(AnyStance, core.SpellConfig{ ActionID: actionID, - Flags: core.SpellFlagAPL, + Flags: core.SpellFlagAPL | core.SpellFlagCastTimeNoGCD, Cast: core.CastConfig{ - DefaultCast: core.Cast{ - GCD: core.GCDDefault, - }, CD: core.Cooldown{ Timer: warrior.NewTimer(), Duration: time.Minute * 2, diff --git a/sim/warrior/runes.go b/sim/warrior/runes.go index da768a6d60..e566b2aa50 100644 --- a/sim/warrior/runes.go +++ b/sim/warrior/runes.go @@ -1,6 +1,7 @@ package warrior import ( + "slices" "time" "github.com/wowsims/sod/sim/core" @@ -131,10 +132,12 @@ func (warrior *Warrior) applyFrenziedAssault() { Label: "Frenzied Assault", Duration: core.NeverExpires, OnGain: func(aura *core.Aura, sim *core.Simulation) { - warrior.MultiplyMeleeSpeed(sim, 1.2) + warrior.MultiplyMeleeSpeed(sim, 1.3) + warrior.AddDamageDealtRageBonus(1) }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { - warrior.MultiplyMeleeSpeed(sim, 1/1.2) + warrior.MultiplyMeleeSpeed(sim, 1/1.3) + warrior.AddDamageDealtRageBonus(-1) }, }) @@ -151,7 +154,9 @@ func (warrior *Warrior) applyFrenziedAssault() { return } - buffAura.Activate(sim) + if !buffAura.IsActive() { + buffAura.Activate(sim) + } }, }) }, @@ -325,10 +330,6 @@ func (warrior *Warrior) applyFreshMeat() { return } - hasBloodthirstTalent := warrior.Talents.Bloodthirst - - damagedUnits := make(map[int32]bool) - warrior.FreshMeatEnrageAura = warrior.RegisterAura(core.Aura{ ActionID: core.ActionID{SpellID: 14201}, Label: "Enrage (Fresh Meat)", @@ -341,6 +342,9 @@ func (warrior *Warrior) applyFreshMeat() { }, }) + var damagedUnits map[int32]bool + affectedSpellCodes := []int32{SpellCode_WarriorBloodthirst, SpellCode_WarriorMortalStrike, SpellCode_WarriorShieldSlam} + warrior.RegisterAura(core.Aura{ Label: "Fresh Meat Trigger", Duration: core.NeverExpires, @@ -349,7 +353,7 @@ func (warrior *Warrior) applyFreshMeat() { aura.Activate(sim) }, OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { - if !hasBloodthirstTalent || spell.SpellCode != SpellCode_WarriorBloodthirst { + if !slices.Contains(affectedSpellCodes, spell.SpellCode) { return } diff --git a/sim/warrior/sunder_armor.go b/sim/warrior/sunder_armor.go index 12deff7a6f..0b3d524d6f 100644 --- a/sim/warrior/sunder_armor.go +++ b/sim/warrior/sunder_armor.go @@ -36,7 +36,6 @@ func (warrior *Warrior) registerSunderArmorSpell() *WarriorSpell { CritDamageBonus: warrior.impale(), DamageMultiplier: 1.5, - ThreatMultiplier: 1, ExtraCastCondition: func(sim *core.Simulation, target *core.Unit) bool { @@ -44,10 +43,17 @@ func (warrior *Warrior) registerSunderArmorSpell() *WarriorSpell { }, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { + threatMultiplier := 1.0 + if warrior.Stance == DefensiveStance { + threatMultiplier = 1.50 + } + spell.ThreatMultiplier *= threatMultiplier + weapon := warrior.AutoAttacks.MH() baseDamage := weapon.CalculateAverageWeaponDamage(spell.MeleeAttackPower()) / weapon.SwingSpeed multiplier := 1 + 0.1*float64(effectiveStacks) spell.CalcAndDealDamage(sim, target, baseDamage*multiplier, spell.OutcomeMeleeSpecialCritOnly) + spell.ThreatMultiplier /= threatMultiplier }, }) } diff --git a/sim/warrior/tank_warrior/TestTankWarrior.results b/sim/warrior/tank_warrior/TestTankWarrior.results index 9289879163..2e240ad644 100644 --- a/sim/warrior/tank_warrior/TestTankWarrior.results +++ b/sim/warrior/tank_warrior/TestTankWarrior.results @@ -100,7 +100,7 @@ dps_results: { key: "TestTankWarrior-Lvl60-AllItems-BanishedMartyr'sFullPlate" value: { dps: 1662.45828 - tps: 3390.45454 + tps: 3635.97765 } } dps_results: { @@ -135,104 +135,104 @@ dps_results: { key: "TestTankWarrior-Lvl60-AllItems-WailingBerserker'sPlateArmor" value: { dps: 1748.14203 - tps: 3501.57119 + tps: 3754.1606 } } dps_results: { key: "TestTankWarrior-Lvl60-Average-Default" value: { dps: 1614.4327 - tps: 3913.06401 + tps: 4101.93235 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-LongMultiTarget" value: { dps: 447.10203 - tps: 1216.17194 + tps: 1237.06755 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-LongSingleTarget" value: { dps: 116.97514 - tps: 359.37527 + tps: 381.53055 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-ShortSingleTarget" value: { dps: 169.47875 - tps: 523.39061 + tps: 553.1092 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-LongMultiTarget" value: { dps: 148.30347 - tps: 558.15687 + tps: 564.89887 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-LongSingleTarget" value: { dps: 51.56437 - tps: 198.63073 + tps: 205.47577 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Human-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-ShortSingleTarget" value: { dps: 73.83269 - tps: 289.68739 + tps: 297.43648 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-LongMultiTarget" value: { dps: 464.97412 - tps: 1248.09267 + tps: 1270.01376 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-LongSingleTarget" value: { dps: 121.97747 - tps: 371.7383 + tps: 394.51405 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-FullBuffs-Phase 4 Consumes-ShortSingleTarget" value: { dps: 177.97702 - tps: 541.87673 + tps: 572.56951 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-LongMultiTarget" value: { dps: 148.57173 - tps: 558.91707 + tps: 565.67945 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-LongSingleTarget" value: { dps: 51.59207 - tps: 198.77769 + tps: 205.60761 } } dps_results: { key: "TestTankWarrior-Lvl60-Settings-Orc-phase_4_tanky-Arms-phase_4-NoBuffs-Phase 4 Consumes-ShortSingleTarget" value: { dps: 73.55431 - tps: 289.37977 + tps: 296.97676 } } dps_results: { key: "TestTankWarrior-Lvl60-SwitchInFrontOfTarget-Default" value: { dps: 1341.62443 - tps: 3306.80653 + tps: 3467.59502 } }