diff --git a/sim/warrior/dps_warrior/TestArms.results b/sim/warrior/dps_warrior/TestArms.results index ef814d4fa5..6824918f60 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: 1.16152 - weights: 0.71412 + weights: 1.28336 + weights: 0.80641 weights: 0 weights: 0 weights: 0 @@ -67,9 +67,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.48311 - weights: 17.65005 - weights: 11.04028 + weights: 0.57244 + weights: 16.67654 + weights: 10.5069 weights: 0 weights: 0 weights: 0 @@ -99,15 +99,15 @@ stat_weights_results: { dps_results: { key: "TestArms-Lvl50-AllItems-BattlegearofHeroism" value: { - dps: 825.95914 - tps: 715.68449 + dps: 815.15405 + tps: 705.68016 } } dps_results: { key: "TestArms-Lvl50-Average-Default" value: { - dps: 1193.71442 - tps: 1020.35534 + dps: 1189.32287 + tps: 1014.87036 } } dps_results: { @@ -197,7 +197,7 @@ dps_results: { dps_results: { key: "TestArms-Lvl50-SwitchInFrontOfTarget-Default" value: { - dps: 1101.63619 - tps: 942.14306 + dps: 1110.05407 + tps: 947.54801 } } diff --git a/sim/warrior/dps_warrior/TestFury.results b/sim/warrior/dps_warrior/TestFury.results index 8099afda2d..84180f7eef 100644 --- a/sim/warrior/dps_warrior/TestFury.results +++ b/sim/warrior/dps_warrior/TestFury.results @@ -99,8 +99,8 @@ character_stats_results: { stat_weights_results: { key: "TestFury-Lvl40-StatWeights-Default" value: { - weights: 1.14306 - weights: 0.80328 + weights: 1.11186 + weights: 0.46909 weights: 0 weights: 0 weights: 0 @@ -116,9 +116,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.721 - weights: 6.65428 - weights: 8.47037 + weights: 0.49852 + weights: 8.03267 + weights: 7.42202 weights: 0 weights: 0 weights: 0 @@ -148,8 +148,8 @@ stat_weights_results: { stat_weights_results: { key: "TestFury-Lvl60-StatWeights-Default" value: { - weights: 1.81805 - weights: 2.25629 + weights: 2.36901 + weights: 1.97882 weights: 0 weights: 0 weights: 0 @@ -165,9 +165,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.78043 - weights: 14.03212 - weights: 27.40603 + weights: 1.07316 + weights: 7.04635 + weights: 29.57867 weights: 0 weights: 0 weights: 0 @@ -197,15 +197,15 @@ stat_weights_results: { dps_results: { key: "TestFury-Lvl40-AllItems-BattlegearofHeroism" value: { - dps: 538.4304 - tps: 479.67884 + dps: 548.33219 + tps: 487.14109 } } dps_results: { key: "TestFury-Lvl40-Average-Default" value: { - dps: 598.53114 - tps: 529.54172 + dps: 602.3906 + tps: 532.56978 } } dps_results: { @@ -295,147 +295,147 @@ dps_results: { dps_results: { key: "TestFury-Lvl40-SwitchInFrontOfTarget-Default" value: { - dps: 559.87735 - tps: 496.64252 + dps: 564.51331 + tps: 500.30612 } } dps_results: { key: "TestFury-Lvl60-AllItems-BanishedMartyr'sFullPlate" value: { - dps: 2558.50099 - tps: 2261.74001 + dps: 2418.63136 + tps: 2099.75618 } } dps_results: { key: "TestFury-Lvl60-AllItems-BattlegearofHeroism" value: { - dps: 1875.13256 - tps: 1680.6678 + dps: 1870.00407 + tps: 1655.56943 } } dps_results: { key: "TestFury-Lvl60-AllItems-BloodGuard'sPlate" value: { - dps: 2183.42916 - tps: 1922.96912 + dps: 2226.51669 + tps: 1931.10456 } } dps_results: { key: "TestFury-Lvl60-AllItems-EmeraldDreamPlate" value: { - dps: 2174.33168 - tps: 1918.65749 + dps: 2202.31654 + tps: 1911.29467 } } dps_results: { key: "TestFury-Lvl60-AllItems-Knight-Lieutenant'sPlate" value: { - dps: 2183.42916 - tps: 1922.96912 + dps: 2226.51669 + tps: 1931.10456 } } dps_results: { key: "TestFury-Lvl60-AllItems-WailingBerserker'sPlateArmor" value: { - dps: 2725.88696 - tps: 2406.69801 + dps: 2579.94628 + tps: 2233.54775 } } dps_results: { key: "TestFury-Lvl60-Average-Default" value: { - dps: 3190.47383 - tps: 2781.38168 + dps: 3135.72914 + tps: 2466.04654 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 1367.65613 - tps: 1377.85847 + dps: 1236.36312 + tps: 1142.30358 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 418.08433 - tps: 412.2446 + dps: 409.29763 + tps: 374.41306 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 495.37116 - tps: 478.49288 + dps: 511.06631 + tps: 458.38038 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 592.63164 - tps: 655.2906 + dps: 541.36466 + tps: 547.83913 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 203.58677 - tps: 231.08628 + dps: 200.62423 + tps: 211.50208 } } dps_results: { key: "TestFury-Lvl60-Settings-Human-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 249.72368 - tps: 268.27756 + dps: 255.15235 + tps: 255.07692 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 1490.04486 - tps: 1493.99997 + dps: 1386.01066 + tps: 1290.532 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 434.46656 - tps: 424.74058 + dps: 430.10556 + tps: 393.36082 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-FullBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 512.16727 - tps: 492.78813 + dps: 530.24687 + tps: 472.40925 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongMultiTarget" value: { - dps: 622.9695 - tps: 685.28449 + dps: 583.28391 + tps: 591.44605 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-LongSingleTarget" value: { - dps: 201.99509 - tps: 228.32634 + dps: 198.58116 + tps: 209.9713 } } dps_results: { key: "TestFury-Lvl60-Settings-Orc-phase_4_dw-Fury-phase_4_fury-NoBuffs-Phase 1 Consumes-ShortSingleTarget" value: { - dps: 249.29055 - tps: 266.85652 + dps: 255.8088 + tps: 253.4769 } } dps_results: { key: "TestFury-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 2459.51359 - tps: 2152.33537 + dps: 2488.571 + tps: 1957.743 } } diff --git a/sim/warrior/heroic_strike_cleave.go b/sim/warrior/heroic_strike_cleave.go index f7f0f214aa..1ba74d7c0e 100644 --- a/sim/warrior/heroic_strike_cleave.go +++ b/sim/warrior/heroic_strike_cleave.go @@ -60,8 +60,6 @@ func (warrior *Warrior) registerHeroicStrikeSpell(realismICD *core.Cooldown) { if warrior.curQueueAura != nil { warrior.curQueueAura.Deactivate(sim) } - - realismICD.Use(sim) }, }) warrior.HeroicStrikeQueue = warrior.makeQueueSpellsAndAura(warrior.HeroicStrike, realismICD) @@ -125,8 +123,6 @@ func (warrior *Warrior) registerCleaveSpell(realismICD *core.Cooldown) { if warrior.curQueueAura != nil { warrior.curQueueAura.Deactivate(sim) } - - realismICD.Use(sim) }, }) warrior.CleaveQueue = warrior.makeQueueSpellsAndAura(warrior.Cleave, realismICD) @@ -164,8 +160,15 @@ func (warrior *Warrior) makeQueueSpellsAndAura(srcSpell *WarriorSpell, realismIC }, ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { - queueAura.Activate(sim) - realismICD.Use(sim) + if realismICD.IsReady(sim) { + realismICD.Use(sim) + sim.AddPendingAction(&core.PendingAction{ + NextActionAt: sim.CurrentTime + realismICD.Duration, + OnAction: func(sim *core.Simulation) { + queueAura.Activate(sim) + }, + }) + } }, }) diff --git a/sim/warrior/runes.go b/sim/warrior/runes.go index 99016a68d7..ab1eb180e2 100644 --- a/sim/warrior/runes.go +++ b/sim/warrior/runes.go @@ -225,16 +225,12 @@ func (warrior *Warrior) applyBloodSurge() { ActionID: core.ActionID{SpellID: 413399}, Duration: time.Second * 15, OnGain: func(aura *core.Aura, sim *core.Simulation) { - if warrior.Slam != nil { - warrior.Slam.DefaultCast.CastTime = 0 - warrior.Slam.Cost.Multiplier -= 100 - } + warrior.Slam.CastTimeMultiplier -= 1 + warrior.Slam.Cost.Multiplier -= 100 }, OnExpire: func(aura *core.Aura, sim *core.Simulation) { - if warrior.Slam != nil { - warrior.Slam.DefaultCast.CastTime = 1500 * time.Millisecond - warrior.Slam.Cost.Multiplier += 100 - } + warrior.Slam.CastTimeMultiplier += 1 + warrior.Slam.Cost.Multiplier += 100 }, OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { // removed even if slam doesn't land @@ -247,8 +243,13 @@ func (warrior *Warrior) applyBloodSurge() { affectedSpells := make(map[*core.Spell]bool) core.MakePermanent(warrior.RegisterAura(core.Aura{ - Label: "Blood Surge", + Label: "Blood Surge Trigger", OnInit: func(aura *core.Aura, sim *core.Simulation) { + if warrior.Slam == nil { + aura.Deactivate(sim) + return + } + affectedSpells[warrior.HeroicStrike.Spell] = true affectedSpells[warrior.Whirlwind.Spell] = true @@ -261,11 +262,7 @@ func (warrior *Warrior) applyBloodSurge() { } }, OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { - if !result.Landed() || !affectedSpells[spell] { - return - } - - if sim.Proc(0.3, "Blood Surge") { + if result.Landed() && affectedSpells[spell] && sim.Proc(0.3, "Blood Surge") { warrior.BloodSurgeAura.Activate(sim) } }, diff --git a/sim/warrior/slam.go b/sim/warrior/slam.go index 56d3b42a3a..9ee16650bb 100644 --- a/sim/warrior/slam.go +++ b/sim/warrior/slam.go @@ -65,7 +65,7 @@ func (warrior *Warrior) registerSlamSpell() { }, CD: cooldown, ModifyCast: func(sim *core.Simulation, spell *core.Spell, cast *core.Cast) { - if cast.CastTime > 0 { + if spell.CastTime() > 0 { warrior.AutoAttacks.StopMeleeUntil(sim, sim.CurrentTime+cast.CastTime, true) } }, diff --git a/sim/warrior/talents.go b/sim/warrior/talents.go index 37911c08d5..a629782f0b 100644 --- a/sim/warrior/talents.go +++ b/sim/warrior/talents.go @@ -307,12 +307,8 @@ func (warrior *Warrior) applyFlurry() { // 2 => 3 warrior.makeFlurryConsumptionTrigger(talentAura) - warrior.RegisterAura(core.Aura{ - Label: "Flurry Proc Trigger", - Duration: core.NeverExpires, - OnReset: func(aura *core.Aura, sim *core.Simulation) { - aura.Activate(sim) - }, + core.MakePermanent(warrior.RegisterAura(core.Aura{ + Label: "Flurry Proc Trigger", OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { if spell.ProcMask.Matches(core.ProcMaskMelee) && result.Outcome.Matches(core.OutcomeCrit) { talentAura.Activate(sim) @@ -322,7 +318,7 @@ func (warrior *Warrior) applyFlurry() { return } }, - }) + })) } // These are separated out because of the T1 Shaman Tank 2P that can proc Flurry separately from the talent. diff --git a/sim/warrior/tank_warrior/TestTankWarrior.results b/sim/warrior/tank_warrior/TestTankWarrior.results index 3e57f8a62c..c86549a320 100644 --- a/sim/warrior/tank_warrior/TestTankWarrior.results +++ b/sim/warrior/tank_warrior/TestTankWarrior.results @@ -50,7 +50,7 @@ character_stats_results: { stat_weights_results: { key: "TestTankWarrior-Lvl60-StatWeights-Default" value: { - weights: 1.36158 + weights: 0.66526 weights: 0 weights: 0 weights: 0 @@ -67,7 +67,7 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 0.3866 + weights: 0.32786 weights: 0 weights: 0 weights: 0 @@ -78,9 +78,9 @@ stat_weights_results: { weights: 0 weights: 0 weights: 0 - weights: 1.63406 + weights: 0.98649 weights: 0 - weights: 0.52775 + weights: 0.52203 weights: 0 weights: 0 weights: 0 @@ -99,50 +99,50 @@ stat_weights_results: { dps_results: { key: "TestTankWarrior-Lvl60-AllItems-BanishedMartyr'sFullPlate" value: { - dps: 1607.9423 - tps: 3551.68394 + dps: 1606.07121 + tps: 3554.94323 } } dps_results: { key: "TestTankWarrior-Lvl60-AllItems-BattlegearofHeroism" value: { - dps: 909.9455 - tps: 1855.66385 + dps: 908.42792 + tps: 1858.90542 } } dps_results: { key: "TestTankWarrior-Lvl60-AllItems-BloodGuard'sPlate" value: { - dps: 911.28386 - tps: 1901.84206 + dps: 909.57183 + tps: 1897.05933 } } dps_results: { key: "TestTankWarrior-Lvl60-AllItems-EmeraldDreamPlate" value: { - dps: 903.18709 - tps: 1891.3736 + dps: 899.99802 + tps: 1877.83817 } } dps_results: { key: "TestTankWarrior-Lvl60-AllItems-Knight-Lieutenant'sPlate" value: { - dps: 911.28386 - tps: 1901.84206 + dps: 909.57183 + tps: 1897.05933 } } dps_results: { key: "TestTankWarrior-Lvl60-AllItems-WailingBerserker'sPlateArmor" value: { - dps: 1698.8023 - tps: 3671.97048 + dps: 1693.68455 + tps: 3664.82577 } } dps_results: { key: "TestTankWarrior-Lvl60-Average-Default" value: { - dps: 1536.44994 - tps: 3980.44574 + dps: 1534.8491 + tps: 3977.75879 } } dps_results: { @@ -232,7 +232,7 @@ dps_results: { dps_results: { key: "TestTankWarrior-Lvl60-SwitchInFrontOfTarget-Default" value: { - dps: 1305.95715 - tps: 3427.93863 + dps: 1310.09758 + tps: 3427.17788 } } diff --git a/sim/warrior/warrior.go b/sim/warrior/warrior.go index 45b376dd27..fa4e6f7140 100644 --- a/sim/warrior/warrior.go +++ b/sim/warrior/warrior.go @@ -157,13 +157,14 @@ func (warrior *Warrior) AddPartyBuffs(_ *proto.PartyBuffs) { } func (warrior *Warrior) RegisterSpell(stanceMask Stance, config core.SpellConfig) *WarriorSpell { - ws := &WarriorSpell{StanceMask: stanceMask} + ws := &WarriorSpell{ + StanceMask: stanceMask, + } castConditionOld := config.ExtraCastCondition config.ExtraCastCondition = func(sim *core.Simulation, target *core.Unit) bool { - // Check if we're in allowed form to cast - // Allow 'humanoid' auto unshift casts - if stance := ws.GetStanceMask(); stance != AnyStance && !warrior.StanceMatches(stance) { + // Check if we're in a correct stance to cast the spell + if stance := ws.GetStanceMask(); !ws.stanceOverride && stance != AnyStance && !warrior.StanceMatches(stance) { if sim.Log != nil { sim.Log("Failed cast to spell %s, wrong stance", ws.ActionID) } @@ -189,7 +190,7 @@ func (warrior *Warrior) RegisterSpell(stanceMask Stance, config core.SpellConfig func (warrior *Warrior) newStanceOverrideExclusiveEffect(stance Stance, aura *core.Aura) *core.ExclusiveEffect { return aura.NewExclusiveEffect("stance-override", false, core.ExclusiveEffect{ - Priority: float64(stance), + Priority: core.TernaryFloat64(stance == AnyStance, 2, 1), OnGain: func(ee *core.ExclusiveEffect, sim *core.Simulation) { if stance.Matches(BattleStance) { for _, spell := range warrior.BattleStanceSpells { @@ -253,7 +254,7 @@ func (warrior *Warrior) Initialize() { // This can cause an unrealistic immediate double-hit around wild strikes procs queuedRealismICD := &core.Cooldown{ Timer: warrior.NewTimer(), - Duration: core.SpellBatchWindow * 5, + Duration: core.SpellBatchWindow * 10, } warrior.registerHeroicStrikeSpell(queuedRealismICD) warrior.registerCleaveSpell(queuedRealismICD) diff --git a/ui/warrior/apls/phase_4_fury.apl.json b/ui/warrior/apls/phase_4_fury.apl.json index 996006da39..a64fc60c0a 100644 --- a/ui/warrior/apls/phase_4_fury.apl.json +++ b/ui/warrior/apls/phase_4_fury.apl.json @@ -1,14 +1,14 @@ { "type": "TypeAPL", "prepullActions": [ - {"action":{"castSpell":{"spellId":{"spellId":2457}}},"doAtValue":{"const":{"val":"-2s"}}}, + {"action":{"castSpell":{"spellId":{"spellId":412513}}},"doAtValue":{"const":{"val":"-2s"}}}, {"action":{"castSpell":{"spellId":{"spellId":2458}}},"doAtValue":{"const":{"val":"-1s"}}}, {"action":{"castSpell":{"spellId":{"spellId":24427}}},"doAtValue":{"const":{"val":"-1s"}}} ], "priorityList": [ {"action":{"condition":{"or":{"vals":[{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"25s"}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"2m25s"}}}}]}},"castSpell":{"spellId":{"itemId":13442}}}}, - {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":457816}}},{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"auraId":{"spellId":457816}}},"rhs":{"const":{"val":"4s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"65"}}}}]}},"castSpell":{"spellId":{"spellId":2458}}}}, - {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":457817}}},{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"auraId":{"spellId":457817}}},"rhs":{"const":{"val":"4s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"34"}}}}]}},"castSpell":{"spellId":{"spellId":2457}}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":457816}}},{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"auraId":{"spellId":457816}}},"rhs":{"const":{"val":"4s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"80"}}}}]}},"castSpell":{"spellId":{"spellId":2458}}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":457817}}},{"cmp":{"op":"OpLe","lhs":{"auraRemainingTime":{"auraId":{"spellId":457817}}},"rhs":{"const":{"val":"4s"}}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"80"}}}}]}},"castSpell":{"spellId":{"spellId":412513}}}}, {"action":{"condition":{"or":{"vals":[{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"35s"}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"155s"}}}}]}},"castSpell":{"spellId":{"spellId":426940}}}}, {"action":{"condition":{"or":{"vals":[{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"31s"}}}},{"cmp":{"op":"OpGt","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"211"}}}}]}},"castSpell":{"spellId":{"spellId":12328}}}}, {"action":{"condition":{"cmp":{"op":"OpLe","lhs":{"remainingTime":{}},"rhs":{"const":{"val":"25s"}}}},"autocastOtherCooldowns":{}}}, @@ -27,8 +27,8 @@ {"action":{"castSpell":{"spellId":{"spellId":1680}}}}, {"action":{"castSpell":{"spellId":{"spellId":402911}}}}, {"action":{"condition":{"and":{"vals":[{"runeIsEquipped":{"runeId":{"spellId":412507}}},{"not":{"val":{"dotIsActive":{"spellId":{"spellId":11574,"rank":7}}}}}]}},"castSpell":{"spellId":{"spellId":11574,"rank":7}}}}, - {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":464241}}},{"auraIsActive":{"auraId":{"spellId":2457}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"34"}}}}]}},"castSpell":{"spellId":{"spellId":2458}}}}, - {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":464241}}},{"auraIsActive":{"auraId":{"spellId":2458}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"34"}}}}]}},"castSpell":{"spellId":{"spellId":2457}}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":464241}}},{"auraIsActive":{"auraId":{"spellId":412513}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"60"}}}}]}},"castSpell":{"spellId":{"spellId":2458}}}}, + {"action":{"condition":{"and":{"vals":[{"auraIsKnown":{"auraId":{"spellId":464241}}},{"auraIsActive":{"auraId":{"spellId":2458}}},{"cmp":{"op":"OpLe","lhs":{"currentRage":{}},"rhs":{"const":{"val":"60"}}}}]}},"castSpell":{"spellId":{"spellId":412513}}}}, {"action":{"castSpell":{"spellId":{"spellId":2687}}}}, {"action":{"castSpell":{"spellId":{"spellId":27584,"rank":3}}}} ] diff --git a/ui/warrior/gear_sets/phase_4_dw.gear.json b/ui/warrior/gear_sets/phase_4_dw.gear.json index a8a0c0c69b..b1e08f2040 100644 --- a/ui/warrior/gear_sets/phase_4_dw.gear.json +++ b/ui/warrior/gear_sets/phase_4_dw.gear.json @@ -3,13 +3,13 @@ {"id":215161,"enchant":1505,"rune":403218}, {"id":228685}, {"id":226492,"enchant":7563}, - {"id":228102,"enchant":7564,"rune":440113}, + {"id":228102,"enchant":7564,"rune":440484}, {"id":226494,"enchant":1891,"rune":402911}, {"id":226499,"enchant":1885,"rune":426940}, {"id":226497,"enchant":931,"rune":413404}, {"id":228295,"rune":413380}, {"id":226493,"enchant":1505,"rune":425418}, - {"id":226496,"enchant":1887,"rune":426490}, + {"id":226496,"enchant":1887,"rune":412513}, {"id":228080,"rune":442813}, {"id":228261,"rune":442890}, {"id":20130}, diff --git a/ui/warrior/presets.ts b/ui/warrior/presets.ts index 78b490b62f..51667f10f0 100644 --- a/ui/warrior/presets.ts +++ b/ui/warrior/presets.ts @@ -8,7 +8,6 @@ import { Consumes, Debuffs, EnchantedSigil, - Flask, Food, HealthElixir, IndividualBuffs, @@ -120,7 +119,6 @@ export const DefaultAPLs: Record<number, Record<number, PresetUtils.PresetRotati 60: { 0: APLPresets[Phase.Phase4][0], // Arms 1: APLPresets[Phase.Phase4][1], // Fury - 3: APLPresets[Phase.Phase4][2], // Glad }, }; @@ -157,9 +155,6 @@ export const TalentsPhase4Arms = PresetUtils.makePresetTalents('60 Arms', SavedT export const TalentsPhase4Fury = PresetUtils.makePresetTalents('60 Fury', SavedTalents.create({ talentsString: '20305020302-05050005525010051' }), { customCondition: player => player.getLevel() === 60, }); -export const TalentsPhase4Prot = PresetUtils.makePresetTalents('60 Prot', SavedTalents.create({ talentsString: '20304300302-03-55200110530201051' }), { - customCondition: player => player.getLevel() === 60, -}); export const TalentsPhase4Glad = PresetUtils.makePresetTalents('60 Glad', SavedTalents.create({ talentsString: '30305020302-05050005025012251' }), { customCondition: player => player.getLevel() === 60, }); @@ -168,13 +163,12 @@ export const TalentPresets = { [Phase.Phase1]: [TalentsPhase1], [Phase.Phase2]: [TalentsPhase2Arms, TalentsPhase2Fury], [Phase.Phase3]: [TalentsPhase3Arms, TalentsPhase3Fury, TalentsPhase3Glad], - [Phase.Phase4]: [TalentsPhase4Arms, TalentsPhase4Fury, TalentsPhase4Prot, TalentsPhase4Glad], + [Phase.Phase4]: [TalentsPhase4Arms, TalentsPhase4Fury, TalentsPhase4Glad], [Phase.Phase5]: [], }; export const DefaultTalentsArms = TalentPresets[Phase.Phase4][0]; export const DefaultTalentsFury = TalentPresets[Phase.Phase4][1]; -export const DefaultTalentsProt = TalentPresets[Phase.Phase4][2]; export const DefaultTalentsGlad = TalentPresets[Phase.Phase4][3]; export const DefaultTalents = DefaultTalentsFury; diff --git a/ui/warrior/sim.ts b/ui/warrior/sim.ts index c890e2b293..b3d4884976 100644 --- a/ui/warrior/sim.ts +++ b/ui/warrior/sim.ts @@ -122,7 +122,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarrior, { autoRotation: player => { const level = player.getLevel(); - let talentTree = player.getTalentTree(); + const talentTree = player.getTalentTree(); if (level < 60) { return Presets.DefaultAPLs[level][talentTree].rotation.rotation!; @@ -132,10 +132,6 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecWarrior, { throw new Error('Automatic level 60 Arms rotation is not supported at this time. Please select an APL in the Rotation tab.'); } - if (player.hasRune(ItemSlot.ItemSlotFeet, WarriorRune.RuneGladiatorStance)) { - talentTree += 1; - } - return Presets.DefaultAPLs[level][talentTree].rotation.rotation!; },