diff --git a/sim/priest/mind_flay.go b/sim/priest/mind_flay.go index 89cfafdd5c..09de613e93 100644 --- a/sim/priest/mind_flay.go +++ b/sim/priest/mind_flay.go @@ -11,7 +11,14 @@ import ( // TODO Mind Flay (48156) now "periodically triggers" Mind Flay (58381), probably to allow haste to work. // The first never deals damage, so the latter should probably be used as ActionID here. -func (priest *Priest) newMindFlaySpell(numTicks int32) *core.Spell { +func (priest *Priest) newMindFlaySpell(numTicksIdx int32) *core.Spell { + numTicks := numTicksIdx + flags := core.SpellFlagChanneled + if numTicksIdx == 0 { + numTicks = 3 + flags |= core.SpellFlagAPL + } + var mfReducTime time.Duration if priest.HasSetBonus(ItemSetCrimsonAcolyte, 4) { mfReducTime = time.Millisecond * 170 @@ -26,10 +33,10 @@ func (priest *Priest) newMindFlaySpell(numTicks int32) *core.Spell { focusedMind := 0.05 * float64(priest.Talents.FocusedMind) return priest.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 48156}.WithTag(numTicks), + ActionID: core.ActionID{SpellID: 48156}.WithTag(numTicksIdx), SpellSchool: core.SpellSchoolShadow, ProcMask: core.ProcMaskSpellDamage, - Flags: core.SpellFlagChanneled | core.SpellFlagAPL, + Flags: flags, ManaCost: core.ManaCostOptions{ BaseCost: 0.09, @@ -68,7 +75,7 @@ func (priest *Priest) newMindFlaySpell(numTicks int32) *core.Spell { Dot: core.DotConfig{ Aura: core.Aura{ - Label: "MindFlay-" + strconv.Itoa(int(numTicks)), + Label: "MindFlay-" + strconv.Itoa(int(numTicksIdx)), }, NumberOfTicks: numTicks, TickLength: tickLength, diff --git a/sim/priest/mind_sear.go b/sim/priest/mind_sear.go index 609963d60a..25ced8e7c7 100644 --- a/sim/priest/mind_sear.go +++ b/sim/priest/mind_sear.go @@ -11,16 +11,23 @@ import ( // TODO see Mind Flay: Mind Sear (53023) now "periodically triggers" Mind Sear (53022). // Since Mind Flay no longer is a binary spell, Mind Sear likely isn't, either. -func (priest *Priest) newMindSearSpell(numTicks int32) *core.Spell { +func (priest *Priest) newMindSearSpell(numTicksIdx int32) *core.Spell { + numTicks := numTicksIdx + flags := core.SpellFlagChanneled + if numTicksIdx == 0 { + numTicks = 3 + flags |= core.SpellFlagAPL + } + channelTime := time.Second * time.Duration(numTicks) miseryCoeff := 0.2861 * (1 + 0.05*float64(priest.Talents.Misery)) hasGlyphOfShadow := priest.HasGlyph(int32(proto.PriestMajorGlyph_GlyphOfShadow)) return priest.RegisterSpell(core.SpellConfig{ - ActionID: core.ActionID{SpellID: 53023, Tag: numTicks}, + ActionID: core.ActionID{SpellID: 53023, Tag: numTicksIdx}, SpellSchool: core.SpellSchoolShadow, ProcMask: core.ProcMaskSpellDamage, - Flags: core.SpellFlagChanneled | core.SpellFlagAPL, + Flags: flags, ManaCost: core.ManaCostOptions{ BaseCost: 0.28, @@ -42,7 +49,7 @@ func (priest *Priest) newMindSearSpell(numTicks int32) *core.Spell { CritMultiplier: priest.DefaultSpellCritMultiplier(), Dot: core.DotConfig{ Aura: core.Aura{ - Label: "MindSear-" + strconv.Itoa(int(numTicks)), + Label: "MindSear-" + strconv.Itoa(int(numTicksIdx)), }, NumberOfTicks: numTicks, TickLength: time.Second, diff --git a/sim/priest/priest.go b/sim/priest/priest.go index 21c037f66c..e4b3e014e3 100644 --- a/sim/priest/priest.go +++ b/sim/priest/priest.go @@ -132,6 +132,11 @@ func (priest *Priest) Initialize() { priest.registerPowerInfusionCD() + if priest.IsUsingAPL { + priest.newMindFlaySpell(0) + priest.newMindSearSpell(0) + } + priest.MindFlay = []*core.Spell{ nil, // So we can use # of ticks as the index priest.newMindFlaySpell(1), diff --git a/sim/priest/shadow/shadow_priest.go b/sim/priest/shadow/shadow_priest.go index 853d66ed81..1ba2c71634 100644 --- a/sim/priest/shadow/shadow_priest.go +++ b/sim/priest/shadow/shadow_priest.go @@ -75,7 +75,7 @@ func (spriest *ShadowPriest) GetPriest() *priest.Priest { func (spriest *ShadowPriest) Initialize() { spriest.Priest.Initialize() - if spriest.rotation.PrecastType > 0 { + if !spriest.IsUsingAPL && spriest.rotation.PrecastType > 0 { precastSpell := spriest.VampiricTouch if spriest.rotation.PrecastType == 2 { precastSpell = spriest.MindBlast diff --git a/ui/core/components/individual_sim_ui/apl_helpers.ts b/ui/core/components/individual_sim_ui/apl_helpers.ts index ae289568d1..1879df5688 100644 --- a/ui/core/components/individual_sim_ui/apl_helpers.ts +++ b/ui/core/components/individual_sim_ui/apl_helpers.ts @@ -107,7 +107,7 @@ const actionIdSets: Record { - return metadata.getSpells().filter(spell => spell.data.isChanneled).map(actionId => { + return metadata.getSpells().filter(spell => spell.data.isCastable && spell.data.isChanneled).map(actionId => { return { value: actionId.id, };