Skip to content

Commit

Permalink
Merge pull request #1000 from wowsims/feral
Browse files Browse the repository at this point in the history
Feral 4pT12 Implementation
  • Loading branch information
NerdEgghead authored Sep 5, 2024
2 parents 2582f2e + 725a930 commit 5012773
Show file tree
Hide file tree
Showing 13 changed files with 97 additions and 25 deletions.
10 changes: 5 additions & 5 deletions sim/death_knight/frost/TestFrost.results
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ dps_results: {
value: {
dps: 21998.53427
tps: 19961.6477
hps: 245.25883
hps: 245.25882
}
}
dps_results: {
Expand All @@ -336,15 +336,15 @@ dps_results: {
value: {
dps: 21944.09428
tps: 20055.84482
hps: 245.25883
hps: 245.25882
}
}
dps_results: {
key: "TestFrost-AllItems-DarkmoonCard:Hurricane-62051"
value: {
dps: 21351.64308
tps: 19499.4618
hps: 245.25883
hps: 245.25882
}
}
dps_results: {
Expand All @@ -368,7 +368,7 @@ dps_results: {
value: {
dps: 21150.92099
tps: 19199.08409
hps: 245.25883
hps: 245.25882
}
}
dps_results: {
Expand Down Expand Up @@ -1024,7 +1024,7 @@ dps_results: {
value: {
dps: 20899.85176
tps: 19038.60319
hps: 245.25883
hps: 245.25882
}
}
dps_results: {
Expand Down
4 changes: 4 additions & 0 deletions sim/druid/barkskin.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ func (druid *Druid) registerBarkskinCD() {
if hasGlyph {
druid.PseudoStats.ReducedCritTakenChance -= 0.25
}

if druid.Feral4pT12Active {
druid.SmokescreenAura.Activate(sim)
}
},
})

Expand Down
16 changes: 16 additions & 0 deletions sim/druid/berserk.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,19 @@ func (druid *Druid) registerBerserkCD() {
},
})
}

func (druid *Druid) ApplyFeral4pT12(sim *core.Simulation) {
if !druid.Feral4pT12Active || !druid.BerserkAura.IsActive() {
return
}

berserkExtensionChance := 0.2 * float64(druid.ComboPoints())

if sim.Proc(berserkExtensionChance, "Feral 4pT12") {
druid.BerserkAura.UpdateExpires(druid.BerserkAura.ExpiresAt() + time.Second*2)

if sim.Log != nil {
druid.Log(sim, "Berserk extended by 2 seconds from finisher proc.")
}
}
}
2 changes: 2 additions & 0 deletions sim/druid/druid.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ type Druid struct {
BleedsActive int
AssumeBleedActive bool
LeatherSpecActive bool
Feral4pT12Active bool
RipTfSnapshot bool

MHAutoSpell *core.Spell
Expand Down Expand Up @@ -99,6 +100,7 @@ type Druid struct {
PulverizeAura *core.Aura
SavageDefenseAura *core.Aura
SavageRoarAura *core.Aura
SmokescreenAura *core.Aura
SolarEclipseProcAura *core.Aura
StampedeCatAura *core.Aura
StampedeBearAura *core.Aura
Expand Down
7 changes: 7 additions & 0 deletions sim/druid/feral/TestFeral.results
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,13 @@ dps_results: {
tps: 35195.58064
}
}
dps_results: {
key: "TestFeral-AllItems-ObsidianArborweaveBattlegarb"
value: {
dps: 26518.95905
tps: 34825.16855
}
}
dps_results: {
key: "TestFeral-AllItems-ObsidianArborweaveRegalia"
value: {
Expand Down
1 change: 1 addition & 0 deletions sim/druid/ferocious_bite.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ func (druid *Druid) registerFerociousBiteSpell() {

if result.Landed() {
druid.SpendEnergy(sim, excessEnergy, spell.Cost.(*core.EnergyCost).ResourceMetrics)
druid.ApplyFeral4pT12(sim)
druid.SpendComboPoints(sim, spell.ComboPointMetrics())

// Blood in the Water
Expand Down
7 changes: 7 additions & 0 deletions sim/druid/guardian/TestGuardian.results
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,13 @@ dps_results: {
tps: 39126.51635
}
}
dps_results: {
key: "TestGuardian-AllItems-ObsidianArborweaveBattlegarb"
value: {
dps: 9048.58927
tps: 45312.13551
}
}
dps_results: {
key: "TestGuardian-AllItems-ObsidianArborweaveRegalia"
value: {
Expand Down
33 changes: 33 additions & 0 deletions sim/druid/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,39 @@ var ItemSetStormridersRegalia = core.NewItemSet(core.ItemSet{
},
})

// T12 Feral
var ItemSetObsidianArborweaveBattlegarb = core.NewItemSet(core.ItemSet{
Name: "Obsidian Arborweave Battlegarb",
Bonuses: map[int32]core.ApplyEffect{
2: func(agent core.Agent) {
// TODO: Implement after PTR testing
},
4: func(agent core.Agent) {
// Full implementation in berserk.go and barkskin.go
druid := agent.(DruidAgent).GetDruid()
druid.Feral4pT12Active = true

if !druid.InForm(Bear) {
return
}

druid.SmokescreenAura = druid.RegisterAura(core.Aura{
Label: "Smokescreen",
ActionID: core.ActionID{SpellID: 99011},
Duration: time.Second * 12,

OnGain: func(_ *core.Aura, _ *core.Simulation) {
druid.PseudoStats.BaseDodgeChance += 0.1
},

OnExpire: func(_ *core.Aura, _ *core.Simulation) {
druid.PseudoStats.BaseDodgeChance -= 0.1
},
})
},
},
})

// T12 Balance
var ItemSetObsidianArborweaveRegalia = core.NewItemSet(core.ItemSet{
Name: "Obsidian Arborweave Regalia",
Expand Down
1 change: 1 addition & 0 deletions sim/druid/rip.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ func (druid *Druid) registerRipSpell() {
dot.BaseTickCount = RipBaseNumTicks
comboPointSnapshot = druid.ComboPoints()
dot.Apply(sim)
druid.ApplyFeral4pT12(sim)
druid.SpendComboPoints(sim, spell.ComboPointMetrics())
} else {
spell.IssueRefund(sim)
Expand Down
1 change: 1 addition & 0 deletions sim/druid/savage_roar.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ func (druid *Druid) registerSavageRoarSpell() {
ApplyEffects: func(sim *core.Simulation, _ *core.Unit, spell *core.Spell) {
druid.SavageRoarAura.Duration = druid.SavageRoarDurationTable[druid.ComboPoints()]
druid.SavageRoarAura.Activate(sim)
druid.ApplyFeral4pT12(sim)
druid.SpendComboPoints(sim, spell.ComboPointMetrics())
},
})
Expand Down
4 changes: 2 additions & 2 deletions ui/core/constants/item_notices.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ export const SET_BONUS_NOTICES = new Map<number, SetBonusNoticeData>([
[
1002, // Feral T12
new Map<number, string>([
[2, "Requires PTR testing for implementation"],
[4, "Will be implemented in the next few days"],
[2, "Not implemented, requires PTR testing!"],
[4, "Implemented and working for both cat and bear"],
]),
],
[
Expand Down
34 changes: 17 additions & 17 deletions ui/druid/feral/gear_sets/p3.gear.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
{"items": [
{"id":48204,"enchant":3817,"gems":[41398,40146]},
{"id":47060,"gems":[40117]},
{"id":48207,"enchant":3808,"gems":[40146]},
{"id":47545,"enchant":3605,"gems":[40117]},
{"id":48206,"enchant":3832,"gems":[40117,40146]},
{"id":45611,"enchant":3845,"gems":[40146,0]},
{"id":47945,"enchant":3604,"gems":[40112,40117,0]},
{"id":47112,"gems":[40146,40117,40117]},
{"id":48205,"enchant":3823,"gems":[40117,49110]},
{"id":47077,"enchant":4223,"gems":[40146,40117]},
{"id":47075,"gems":[40117]},
{"id":45608,"gems":[40117]},
{"id":45931},
{"id":47131},
{"id":47239,"enchant":3789,"gems":[40146,40117]},
{"id":71488,"enchant":4209,"gems":[68778,52212],"reforging":147},
{"id":71610,"reforging":151},
{"id":71490,"enchant":4204,"gems":[52212],"reforging":146},
{"id":71415,"enchant":1099,"gems":[52212,52212]},
{"id":71486,"enchant":4102,"gems":[52212,52212],"reforging":147},
{"id":71428,"randomSuffix":-133,"enchant":4258,"gems":[0],"reforging":140},
{"id":71440,"enchant":4107,"gems":[52212,0],"reforging":144},
{"id":71641,"gems":[52212,52212],"reforging":147},
{"id":71489,"enchant":4126,"gems":[52212,52212],"reforging":139},
{"id":71467,"enchant":4076,"gems":[52212],"reforging":144},
{"id":71216,"gems":[52212],"reforging":151},
{"id":71401,"reforging":153},
{"id":69150},
{"id":69112},
{"id":71466,"enchant":4227,"reforging":146},
{},
{"id":47668}
]}
{"id":71567,"gems":[52212]}
]}
2 changes: 1 addition & 1 deletion ui/druid/feral/sim.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ const SPEC_CONFIG = registerSpecConfig(Spec.SpecFeralDruid, {
talents: [Presets.StandardTalents, Presets.HybridTalents],
rotations: [Presets.SIMPLE_ROTATION_DEFAULT, Presets.AOE_ROTATION_DEFAULT],
// Preset gear configurations that the user can quickly select.
gear: [Presets.PRERAID_PRESET, Presets.P1_PRESET],
gear: [Presets.PRERAID_PRESET, Presets.P1_PRESET, Presets.P3_PRESET],
},

autoRotation: (_player: Player<Spec.SpecFeralDruid>): APLRotation => {
Expand Down

0 comments on commit 5012773

Please sign in to comment.