diff --git a/sim/druid/druid.go b/sim/druid/druid.go index cbd6ed431a..34b44f66db 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -121,6 +121,8 @@ type Druid struct { SolarEclipseProcAura *core.Aura LunarEclipseProcAura *core.Aura WildStrikesBuffAura *core.Aura + Tank2PieceAqAura *core.Aura + Tank2PieceAqProcAura *core.Aura BleedCategories core.ExclusiveCategoryArray SavageRoarDurationTable [6]time.Duration diff --git a/sim/druid/item_sets_pve.go b/sim/druid/item_sets_pve.go index e378579253..a9e0258fea 100644 --- a/sim/druid/item_sets_pve.go +++ b/sim/druid/item_sets_pve.go @@ -677,11 +677,52 @@ var ItemSetGenesisFury = core.NewItemSet(core.ItemSet{ Bonuses: map[int32]core.ApplyEffect{ // Each time you Dodge while in Dire Bear Form, you gain 10% increased damage on your next Mangle or Swipe, stacking up to 5 times. 2: func(agent core.Agent) { - // TODO Bear + druid := agent.(DruidAgent).GetDruid() + + druid.Tank2PieceAqProcAura = druid.RegisterAura(core.Aura{ + Label: "Feral 2P Bonus Proc", + ActionID: core.ActionID{SpellID: 1213188}, + Duration: time.Second * 10, + MaxStacks: 5, + OnStacksChange: func(aura *core.Aura, sim *core.Simulation, oldStacks, newStacks int32) { + druid.MangleBear.DamageMultiplierAdditive += 0.1 * (newStacks - oldStacks) + druid.SwipeBear.DamageMultiplierAdditive += 0.1 * (newStacks - oldStacks) + }, + }) + + druid.Tank2PieceAqAura = druid.RegisterAura(core.Aura{ + Label: "S03 - Item - TAQ - Druid - Feral 2P Bonus", + ActionID: core.ActionID{SpellID: 1213188}, + ActionIDForProc: core.ActionID{SpellID: 1213190}, + Duration: core.NeverExpires, + OnReset: func(aura *core.Aura, sim *core.Simulation) { + aura.Activate(sim) + }, + OnSpellHitTaken: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + if druid.HasRageBar() && spell.ProcMask.Matches(core.ProcMaskMelee|core.ProcMaskRanged) && result.Outcome.Matches(core.OutcomeDodge) { + druid.Tank2PieceAqProcAura.Activate(sim) + druid.Tank2PieceAqProcAura.AddStack(sim) + } + }, + OnSpellHitDealt: func(aura *core.Aura, sim *core.Simulation, spell *core.Spell, result *core.SpellResult) { + if spell.SpellID == druid.MangleBear.SpellID || spell.SpellID == druid.SwipeBear.SpellID { + druid.Tank2PieceAqProcAura.SetStacks(sim, 0) + } + }, + }) }, // Reduces the cooldown on Mangle (Bear) by 1.5 sec. 4: func(agent core.Agent) { - // TODO Bear + druid := agent.(DruidAgent).GetDruid() + if !druid.HasRune(proto.DruidRune_RuneHandsMangle) { + return + } + druid.RegisterAura(core.Aura{ + Label: "S03 - Item - TAQ - Druid - Feral 4P Bonus", + OnInit: func(aura *core.Aura, sim *core.Simulation) { + druid.MangleBear.CD.Duration -= (time.Second + 500*time.Millisecond) + }, + }) }, }, })