From 95718a5df81864c854cde505281a8b7c6357b807 Mon Sep 17 00:00:00 2001 From: James Tanner Date: Wed, 14 Dec 2022 23:54:46 -0500 Subject: [PATCH] Fix 3 panics --- sim/druid/balance/rotation.go | 9 +++++---- sim/paladin/exorcism.go | 4 +++- sim/priest/healing/rotation.go | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sim/druid/balance/rotation.go b/sim/druid/balance/rotation.go index 7dc982cbe5..1074cd0d27 100644 --- a/sim/druid/balance/rotation.go +++ b/sim/druid/balance/rotation.go @@ -29,8 +29,10 @@ func (moonkin *BalanceDruid) rotation(sim *core.Simulation) *core.Spell { return moonkin.FaerieFire } - shouldRebirth := sim.GetRemainingDuration().Seconds() < moonkin.RebirthTiming - lunarUptime := core.TernaryDuration(moonkin.LunarEclipseProcAura == nil, 0, moonkin.LunarEclipseProcAura.RemainingDuration(sim)) + var lunarUptime time.Duration + if moonkin.LunarEclipseProcAura != nil { + lunarUptime = moonkin.LunarEclipseProcAura.RemainingDuration(sim) + } if moonkin.MoonkinT84PCAura.IsActive() && moonkin.MoonkinT84PCAura.RemainingDuration(sim).Seconds() < moonkin.SpellGCD().Seconds() { if (rotation.UseSmartCooldowns && lunarUptime > 14*time.Second) || sim.GetRemainingDuration() < 15*time.Second { @@ -39,8 +41,7 @@ func (moonkin *BalanceDruid) rotation(sim *core.Simulation) *core.Spell { moonkin.useTrinkets(stats.SpellHaste, sim, target) } return moonkin.Starfire - } - if rotation.UseBattleRes && shouldRebirth && moonkin.Rebirth.IsReady(sim) { + } else if rotation.UseBattleRes && sim.GetRemainingDuration().Seconds() < moonkin.RebirthTiming && moonkin.Rebirth.IsReady(sim) { return moonkin.Rebirth } else if moonkin.Talents.ForceOfNature && moonkin.ForceOfNature.IsReady(sim) { moonkin.useTrinkets(stats.SpellPower, sim, target) diff --git a/sim/paladin/exorcism.go b/sim/paladin/exorcism.go index db94b864a4..65d08ff043 100644 --- a/sim/paladin/exorcism.go +++ b/sim/paladin/exorcism.go @@ -37,7 +37,9 @@ func (paladin *Paladin) registerExorcismSpell() { cast.CastTime = 0 return } - paladin.AutoAttacks.StopMeleeUntil(sim, sim.CurrentTime+cast.CastTime) + if paladin.CurrentMana() >= cast.Cost { + paladin.AutoAttacks.StopMeleeUntil(sim, sim.CurrentTime+cast.CastTime) + } }, }, diff --git a/sim/priest/healing/rotation.go b/sim/priest/healing/rotation.go index aa7311cf88..4c1c413d2b 100644 --- a/sim/priest/healing/rotation.go +++ b/sim/priest/healing/rotation.go @@ -89,6 +89,9 @@ func (hpriest *HealingPriest) makeCustomRotation() *common.CustomRotation { }, int32(proto.HealingPriest_Rotation_CircleOfHealing): { Spell: hpriest.CircleOfHealing, + Condition: func(sim *core.Simulation) bool { + return hpriest.CircleOfHealing.IsReady(sim) + }, }, int32(proto.HealingPriest_Rotation_PrayerOfHealing): { Spell: hpriest.PrayerOfHealing,