diff --git a/sim/druid/item_sets_pve_phase_8.go b/sim/druid/item_sets_pve_phase_8.go index 1ae9d77359..36b39f69c1 100644 --- a/sim/druid/item_sets_pve_phase_8.go +++ b/sim/druid/item_sets_pve_phase_8.go @@ -278,6 +278,7 @@ func (druid *Druid) applyScarletEnclaveFeral6PBonus() { } finisherMask := ClassSpellMask_DruidFerociousBite | ClassSpellMask_DruidRip | ClassSpellMask_DruidSavageRoar + extension := time.Second * 6 // https://www.wowhead.com/classic/spell=1226118/s03-item-scarlet-enclave-druid-feral-6p-bonus-trigger // Not needed but this way procs can be easily tracked. @@ -290,7 +291,8 @@ func (druid *Druid) applyScarletEnclaveFeral6PBonus() { ApplyEffects: func(sim *core.Simulation, target *core.Unit, spell *core.Spell) { druid.ClearcastingAura.Activate(sim) if druid.TigersFuryAura.IsActive() { - druid.TigersFuryAura.Refresh(sim) + newExpireTime := druid.TigersFuryAura.ExpiresAt() + extension + druid.TigersFuryAura.UpdateExpires(sim, newExpireTime) } }, }) @@ -301,7 +303,12 @@ func (druid *Druid) applyScarletEnclaveFeral6PBonus() { })) druid.OnComboPointsSpent(func(sim *core.Simulation, spell *core.Spell, comboPoints int32) { - if spell.Matches(finisherMask) && sim.Proc(0.2*float64(comboPoints), label) { + // Savage Roar seems to always proc and instead rolls for an additional +6s for +12s total. + if spell.Matches(ClassSpellMask_DruidSavageRoar) { + extension = core.TernaryDuration(sim.Proc(0.2*float64(comboPoints), label), 12*time.Second, 6*time.Second) + triggerSpell.Cast(sim, &druid.Unit) + extension = 6 * time.Second + } else if spell.Matches(finisherMask) && sim.Proc(0.2*float64(comboPoints), label) { triggerSpell.Cast(sim, &druid.Unit) } }) diff --git a/sim/druid/tigers_fury.go b/sim/druid/tigers_fury.go index 76c8dca09b..6211e65984 100644 --- a/sim/druid/tigers_fury.go +++ b/sim/druid/tigers_fury.go @@ -49,7 +49,11 @@ func (druid *Druid) registerTigersFurySpell() { }, ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { - druid.TigersFuryAura.Activate(sim) + // This condition is here because of T3.5 6pc. + // Using TF doesn't reset the duration back to 6s if it currently lasts longer. + if !druid.TigersFuryAura.IsActive() || druid.TigersFuryAura.RemainingDuration(sim) < druid.TigersFuryAura.Duration { + druid.TigersFuryAura.Activate(sim) + } }, }) @@ -80,7 +84,11 @@ func (druid *Druid) registerTigersFurySpellKotJ() { ApplyEffects: func(sim *core.Simulation, _ *core.Unit, _ *core.Spell) { druid.AddEnergy(sim, 60.0, energyMetrics) - druid.TigersFuryAura.Activate(sim) + // This condition is here because of T3.5 6pc. + // Using TF doesn't reset the duration back to 6s if it currently lasts longer. + if !druid.TigersFuryAura.IsActive() || druid.TigersFuryAura.RemainingDuration(sim) < druid.TigersFuryAura.Duration { + druid.TigersFuryAura.Activate(sim) + } }, })