Skip to content

Commit

Permalink
Merge pull request #1235 from hillerstorm/enh_t13
Browse files Browse the repository at this point in the history
[Enh] Implement Enhancement T13
  • Loading branch information
hillerstorm authored Nov 29, 2024
2 parents 9e72013 + 51b9a05 commit e204321
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 3 deletions.
2 changes: 1 addition & 1 deletion sim/death_knight/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/wowsims/cata/sim/core/stats"
)

// TODO: T13
// TODO: T13 tank

// T11 - DPS
var ItemSetMagmaPlatedBattlegear = core.NewItemSet(core.ItemSet{
Expand Down
7 changes: 7 additions & 0 deletions sim/shaman/elemental/TestElemental.results
Original file line number Diff line number Diff line change
Expand Up @@ -1620,6 +1620,13 @@ dps_results: {
tps: 644.43022
}
}
dps_results: {
key: "TestElemental-AllItems-Spiritwalker'sBattlegear"
value: {
dps: 28364.09538
tps: 1617.20815
}
}
dps_results: {
key: "TestElemental-AllItems-Spiritwalker'sRegalia"
value: {
Expand Down
7 changes: 7 additions & 0 deletions sim/shaman/enhancement/TestEnhancement.results
Original file line number Diff line number Diff line change
Expand Up @@ -1620,6 +1620,13 @@ dps_results: {
tps: 22733.70092
}
}
dps_results: {
key: "TestEnhancement-AllItems-Spiritwalker'sBattlegear"
value: {
dps: 32546.58817
tps: 20490.42613
}
}
dps_results: {
key: "TestEnhancement-AllItems-Spiritwalker'sRegalia"
value: {
Expand Down
3 changes: 2 additions & 1 deletion sim/shaman/feral_spirit.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ func (shaman *Shaman) registerFeralSpirit() {
})

shaman.FeralSpirit = shaman.RegisterSpell(core.SpellConfig{
ActionID: core.ActionID{SpellID: 51533},
ActionID: core.ActionID{SpellID: 51533},
ClassSpellMask: SpellMaskFeralSpirit,

ManaCost: core.ManaCostOptions{
BaseCost: 0.12,
Expand Down
75 changes: 75 additions & 0 deletions sim/shaman/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,5 +270,80 @@ var ItemSetVolcanicBattlegear = core.NewItemSet(core.ItemSet{
},
})

// T13 enh
// 2 pieces: While you have any stacks of Maelstrom Weapon, your Lightning Bolt, Chain Lightning, and healing spells deal 20% more healing or damage.
// 4 pieces: Your Feral Spirits have a 45% chance to grant you a charge of Maelstrom Weapon each time they deal damage.
var ItemSetSpiritwalkersBattlegear = core.NewItemSet(core.ItemSet{
Name: "Spiritwalker's Battlegear",
Bonuses: map[int32]core.ApplyEffect{
2: func(agent core.Agent) {
shaman := agent.(ShamanAgent).GetShaman()

if shaman.Talents.MaelstromWeapon == 0 {
return
}

// Item sets are registered before talents, so MaelstromWeaponAura doesn't exist yet
// Therefore we need to react on Feral Spirit registration to apply the logic
shaman.OnSpellRegistered(func(spell *core.Spell) {
if spell.ClassSpellMask&SpellMaskFeralSpirit == 0 {
return
}

dmgMod := shaman.AddDynamicMod(core.SpellModConfig{
Kind: core.SpellMod_DamageDone_Pct,
FloatValue: 0.2,
ClassMask: SpellMaskLightningBolt | SpellMaskChainLightning,
})

temporalMaelstrom := shaman.RegisterAura(core.Aura{
Label: "Temporal Maelstrom" + shaman.Label,
ActionID: core.ActionID{SpellID: 105869},
Duration: time.Second * 30,
OnGain: func(aura *core.Aura, sim *core.Simulation) {
dmgMod.Activate()
shaman.PseudoStats.HealingDealtMultiplier *= 1.2
},
OnExpire: func(aura *core.Aura, sim *core.Simulation) {
dmgMod.Deactivate()
shaman.PseudoStats.HealingDealtMultiplier /= 1.2
},
})

shaman.MaelstromWeaponAura.ApplyOnGain(func(aura *core.Aura, sim *core.Simulation) {
temporalMaelstrom.Activate(sim)
})

shaman.MaelstromWeaponAura.ApplyOnExpire(func(aura *core.Aura, sim *core.Simulation) {
temporalMaelstrom.Deactivate(sim)
})
})
},
4: func(agent core.Agent) {
shaman := agent.(ShamanAgent).GetShaman()

if !shaman.Talents.FeralSpirit || shaman.Talents.MaelstromWeapon == 0 {
return
}

for _, wolf := range []*core.Unit{&shaman.SpiritWolves.SpiritWolf1.Unit, &shaman.SpiritWolves.SpiritWolf2.Unit} {
core.MakeProcTriggerAura(wolf, core.ProcTrigger{
Name: "Spiritwalker's Battlegear 4pc" + shaman.Label,
ActionID: core.ActionID{SpellID: 105872},
Callback: core.CallbackOnSpellHitDealt,
Outcome: core.OutcomeLanded,
ProcMask: core.ProcMaskMelee,
Harmful: true,
ProcChance: 0.45,
Handler: func(sim *core.Simulation, spell *core.Spell, result *core.SpellResult) {
shaman.MaelstromWeaponAura.Activate(sim)
shaman.MaelstromWeaponAura.AddStack(sim)
},
})
}
},
},
})

func init() {
}
1 change: 1 addition & 0 deletions sim/shaman/shaman.go
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ const (
SpellMaskUnleashFlame
SpellMaskEarthquake
SpellMaskFlametongueWeapon
SpellMaskFeralSpirit

SpellMaskStormstrike = SpellMaskStormstrikeCast | SpellMaskStormstrikeDamage
SpellMaskFlameShock = SpellMaskFlameShockDirect | SpellMaskFlameShockDot
Expand Down
19 changes: 18 additions & 1 deletion ui/core/constants/item_notices.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ const TENTATIVE_IMPLEMENTATION_ITEMS = [
// Wrath of Unchaining - LFR, Normal, Heroic
77974, 77197, 77994,

// No'Kaled, the Elements of Death - LFR, Normal, Heroic
78481, 77188, 78472,
// Kiril, Fury of Beasts - LFR, Normal, Heroic
78482, 77194, 78473,
// Ti'tahk, the Steps of Time - LFR, Normal, Heroic
Expand Down Expand Up @@ -212,5 +214,20 @@ export const SET_BONUS_NOTICES = new Map<number, SetBonusNoticeData>([
],

// Generic "not yet implemented" notices
[1058, null], // Feral T13
[928, null], // Resto Druid T11
[933, null], // Holy Paladin T11
[935, null], // Healing Priest T11
[938, null], // Resto Shaman T11

[1004, null], // Resto Druid T12
[1009, null], // Healing Priest T12
[1011, null], // Holy Paladin T12
[1014, null], // Resto Shaman T12

[1056, null], // Blood DK T13
[1058, null], // Feral Druid T13
[1060, null], // Resto Druid T13
[1066, null], // Healing Priest T13
[1067, null], // Shadow Priest T13
[1069, null], // Resto Shaman T13
]);

0 comments on commit e204321

Please sign in to comment.