diff --git a/sim/warrior/items.go b/sim/warrior/items.go index 62a98ad16..289903c04 100644 --- a/sim/warrior/items.go +++ b/sim/warrior/items.go @@ -277,6 +277,13 @@ func (warrior *Warrior) ApplyRegicideWarriorEffect(itemID int32, aura *core.Aura Duration: time.Second * 15, }) }) + // Regicide aura for APL use on trigger from stacks + regicideAura := warrior.RegisterAura( + core.Aura{ + ActionID: core.ActionID{SpellID: 1231436}, + Label: "Regicide", + Duration: time.Second * 10, + }) executeDamageMod := warrior.AddDynamicMod(core.SpellModConfig{ Kind: core.SpellMod_DamageDone_Pct, @@ -301,6 +308,7 @@ func (warrior *Warrior) ApplyRegicideWarriorEffect(itemID int32, aura *core.Aura ClassSpellMask: ClassSpellMask_WarriorExecute, Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { debuffAuras.Get(result.Target).Deactivate(sim) + regicideAura.Deactivate(sim) }, }) warrior.ItemSwap.RegisterProc(itemID, consumptionTrigger) @@ -315,13 +323,19 @@ func (warrior *Warrior) ApplyRegicideWarriorEffect(itemID int32, aura *core.Aura Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { debuff := debuffAuras.Get(result.Target) debuff.Activate(sim) + if debuff.MaxStacks > 0 { debuff.AddStack(sim) } + // Activate aura for APL usage when effect is triggered + // Implementation of cast condition is below in 'ApplyOnInit' + if debuff.GetStacks() == 20 { + regicideAura.Activate(sim) + } }, }).ApplyOnInit(func(aura *core.Aura, sim *core.Simulation) { warrior.Execute.ApplyExtraCastCondition(func(sim *core.Simulation, target *core.Unit) bool { - return debuffAuras[target.Index].IsActive() && debuffAuras[target.Index].GetStacks() == 20 + return debuffAuras[target.Index].IsActive() && debuffAuras[target.Index].GetStacks() == 20 && regicideAura.IsActive() }) }) }