From f9d2fa88ef831391f43942dd918fac2a669468ca Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Thu, 5 Sep 2024 13:47:26 -0700 Subject: [PATCH 1/4] Implemented cat 4pT12 bonus On branch feral Changes to be committed: modified: sim/death_knight/frost/TestFrost.results modified: sim/druid/berserk.go modified: sim/druid/druid.go modified: sim/druid/feral/TestFeral.results modified: sim/druid/ferocious_bite.go modified: sim/druid/guardian/TestGuardian.results modified: sim/druid/items.go modified: sim/druid/rip.go modified: sim/druid/savage_roar.go --- sim/death_knight/frost/TestFrost.results | 10 +++++----- sim/druid/berserk.go | 16 ++++++++++++++++ sim/druid/druid.go | 1 + sim/druid/feral/TestFeral.results | 7 +++++++ sim/druid/ferocious_bite.go | 1 + sim/druid/guardian/TestGuardian.results | 7 +++++++ sim/druid/items.go | 15 +++++++++++++++ sim/druid/rip.go | 1 + sim/druid/savage_roar.go | 1 + 9 files changed, 54 insertions(+), 5 deletions(-) diff --git a/sim/death_knight/frost/TestFrost.results b/sim/death_knight/frost/TestFrost.results index ac59202e87..8ed8a069cb 100644 --- a/sim/death_knight/frost/TestFrost.results +++ b/sim/death_knight/frost/TestFrost.results @@ -320,7 +320,7 @@ dps_results: { value: { dps: 21998.53427 tps: 19961.6477 - hps: 245.25883 + hps: 245.25882 } } dps_results: { @@ -336,7 +336,7 @@ dps_results: { value: { dps: 21944.09428 tps: 20055.84482 - hps: 245.25883 + hps: 245.25882 } } dps_results: { @@ -344,7 +344,7 @@ dps_results: { value: { dps: 21351.64308 tps: 19499.4618 - hps: 245.25883 + hps: 245.25882 } } dps_results: { @@ -368,7 +368,7 @@ dps_results: { value: { dps: 21150.92099 tps: 19199.08409 - hps: 245.25883 + hps: 245.25882 } } dps_results: { @@ -1024,7 +1024,7 @@ dps_results: { value: { dps: 20899.85176 tps: 19038.60319 - hps: 245.25883 + hps: 245.25882 } } dps_results: { diff --git a/sim/druid/berserk.go b/sim/druid/berserk.go index 86e22de34c..d3c273f582 100644 --- a/sim/druid/berserk.go +++ b/sim/druid/berserk.go @@ -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.") + } + } +} diff --git a/sim/druid/druid.go b/sim/druid/druid.go index 841c57cf84..5b75e821f3 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -30,6 +30,7 @@ type Druid struct { BleedsActive int AssumeBleedActive bool LeatherSpecActive bool + Feral4pT12Active bool RipTfSnapshot bool MHAutoSpell *core.Spell diff --git a/sim/druid/feral/TestFeral.results b/sim/druid/feral/TestFeral.results index 818ec99009..4a0e5ef458 100644 --- a/sim/druid/feral/TestFeral.results +++ b/sim/druid/feral/TestFeral.results @@ -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: { diff --git a/sim/druid/ferocious_bite.go b/sim/druid/ferocious_bite.go index 5c03861a00..112110b07d 100644 --- a/sim/druid/ferocious_bite.go +++ b/sim/druid/ferocious_bite.go @@ -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 diff --git a/sim/druid/guardian/TestGuardian.results b/sim/druid/guardian/TestGuardian.results index c94b41cd60..08ab3bdfb6 100644 --- a/sim/druid/guardian/TestGuardian.results +++ b/sim/druid/guardian/TestGuardian.results @@ -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: { diff --git a/sim/druid/items.go b/sim/druid/items.go index a237cc541d..212e2ea4d4 100644 --- a/sim/druid/items.go +++ b/sim/druid/items.go @@ -97,6 +97,21 @@ 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 + }, + }, +}) + // T12 Balance var ItemSetObsidianArborweaveRegalia = core.NewItemSet(core.ItemSet{ Name: "Obsidian Arborweave Regalia", diff --git a/sim/druid/rip.go b/sim/druid/rip.go index 13b68a705b..fd81eb68d1 100644 --- a/sim/druid/rip.go +++ b/sim/druid/rip.go @@ -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) diff --git a/sim/druid/savage_roar.go b/sim/druid/savage_roar.go index 52f19b1cc4..eee74ee7ec 100644 --- a/sim/druid/savage_roar.go +++ b/sim/druid/savage_roar.go @@ -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()) }, }) From dd14d2c53de39a51a7f94bd6aa4cd67f83244d36 Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Thu, 5 Sep 2024 14:15:31 -0700 Subject: [PATCH 2/4] Added tentative P3 DPS gear preset On branch feral Changes to be committed: modified: ui/druid/feral/gear_sets/p3.gear.json modified: ui/druid/feral/sim.ts --- ui/druid/feral/gear_sets/p3.gear.json | 34 +++++++++++++-------------- ui/druid/feral/sim.ts | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ui/druid/feral/gear_sets/p3.gear.json b/ui/druid/feral/gear_sets/p3.gear.json index 6732be6dd2..6962d76b64 100644 --- a/ui/druid/feral/gear_sets/p3.gear.json +++ b/ui/druid/feral/gear_sets/p3.gear.json @@ -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} -]} \ No newline at end of file + {"id":71567,"gems":[52212]} +]} diff --git a/ui/druid/feral/sim.ts b/ui/druid/feral/sim.ts index 73447ce01d..8bdc5beba5 100644 --- a/ui/druid/feral/sim.ts +++ b/ui/druid/feral/sim.ts @@ -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): APLRotation => { From 4b81e8332e090ac619ba3c3dcd2adca842723f7b Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Thu, 5 Sep 2024 16:18:58 -0700 Subject: [PATCH 3/4] Implemented bear 4pT12 bonus On branch feral Changes to be committed: modified: sim/druid/barkskin.go modified: sim/druid/druid.go modified: sim/druid/items.go --- sim/druid/barkskin.go | 4 ++++ sim/druid/druid.go | 1 + sim/druid/items.go | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/sim/druid/barkskin.go b/sim/druid/barkskin.go index 3ec8e0c703..5a5d0f4d8e 100644 --- a/sim/druid/barkskin.go +++ b/sim/druid/barkskin.go @@ -30,6 +30,10 @@ func (druid *Druid) registerBarkskinCD() { if hasGlyph { druid.PseudoStats.ReducedCritTakenChance -= 0.25 } + + if druid.Feral4pT12Active { + druid.SmokescreenAura.Activate(sim) + } }, }) diff --git a/sim/druid/druid.go b/sim/druid/druid.go index 5b75e821f3..00c51d46bd 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -100,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 diff --git a/sim/druid/items.go b/sim/druid/items.go index 212e2ea4d4..66c58e5df0 100644 --- a/sim/druid/items.go +++ b/sim/druid/items.go @@ -108,6 +108,24 @@ var ItemSetObsidianArborweaveBattlegarb = core.NewItemSet(core.ItemSet{ // 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 + }, + }) }, }, }) From d3635d125f4bad313107ee9e52dee093f4ee6eb7 Mon Sep 17 00:00:00 2001 From: NerdEgghead Date: Thu, 5 Sep 2024 16:22:54 -0700 Subject: [PATCH 4/4] Updated set bonus notices to reflect working 4p implementation On branch feral Changes to be committed: modified: ui/core/constants/item_notices.tsx --- ui/core/constants/item_notices.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/core/constants/item_notices.tsx b/ui/core/constants/item_notices.tsx index 449474970b..a16c7d2726 100644 --- a/ui/core/constants/item_notices.tsx +++ b/ui/core/constants/item_notices.tsx @@ -38,8 +38,8 @@ export const SET_BONUS_NOTICES = new Map([ [ 1002, // Feral T12 new Map([ - [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"], ]), ],