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!;
 	},