From bcd7a1262052a9cfef6a72cf0d010de58f7e6ba1 Mon Sep 17 00:00:00 2001 From: Matthew Cheung <70357013+Mcheung7272@users.noreply.github.com> Date: Wed, 13 Nov 2024 20:10:24 -0500 Subject: [PATCH] Enable Hunter MM Core for TWW 11.05 (#7175) * reenable hunter mm spec * Updated support lvl, patch, example report and uncommented changelog + parser * fixed error on icon name * edited to use correct serpent sting * added foundation guide, removed death chak, murder of crows, steel trap and serpent sting * removed serpent sting pandemic and uptime * fixed wailing arrow id * added serpent sting and fixed fort of bear id * fixed description for true shot * removed steel trap. added fort of bear. edited serpent sting * removed serpent sting * null check * addressed some constants. will need to revisit * steady focus now provides either 0 or 8% haste * edited description * added skardyns grace * added black arrow as focus spender * added variations of black arrow * should not display kill shot if talented into black arrow * add black arrow to abilities * added display for black arrow. still WIP * undo change in this file as its generated * remove gcd and cooldown. current wailing has neither * fixed id * added focus spender * added other version of wailing arrow * remove console log * added changelogs * fixed changelog issue * revert nullish change in `SpellIcon` * removed outdated changelogs --------- Co-authored-by: mcheung7272 Co-authored-by: emallson --- src/CHANGELOG.tsx | 3 +- src/CONTRIBUTORS.ts | 2 +- .../retail/hunter/marksmanship/CHANGELOG.tsx | 8 +-- .../retail/hunter/marksmanship/CONFIG.tsx | 18 +++---- .../hunter/marksmanship/CombatLogParser.ts | 19 ++++--- .../retail/hunter/marksmanship/constants.ts | 20 +++---- .../hunter/marksmanship/modules/Abilities.tsx | 41 +++++++------- .../modules/checklist/Component.tsx | 23 -------- .../marksmanship/modules/checklist/Module.tsx | 5 -- .../marksmanship/modules/spells/Trueshot.tsx | 2 +- .../talents/SerpentstalkersTrickery.tsx | 5 +- .../modules/talents/SteadyFocus.tsx | 2 +- .../retail/hunter/shared/constants.ts | 1 + .../hunter/shared/talents/BlackArrow.tsx | 53 +++++++++++++++++++ .../retail/hunter/shared/talents/KillShot.tsx | 4 +- .../hunter/shared/talents/WailingArrow.tsx | 4 ++ src/common/ITEMS/thewarwithin/trinkets.ts | 9 +++- src/common/SPELLS/hunter.ts | 27 +++++++++- src/common/SPELLS/thewarwithin/trinkets.ts | 8 ++- .../thewarwithin/trinkets/SkardynsGrace.ts | 24 +++++++++ tsconfig.json | 5 +- 21 files changed, 192 insertions(+), 91 deletions(-) create mode 100644 src/analysis/retail/hunter/shared/talents/BlackArrow.tsx create mode 100644 src/parser/retail/modules/items/thewarwithin/trinkets/SkardynsGrace.ts diff --git a/src/CHANGELOG.tsx b/src/CHANGELOG.tsx index a0837716255..59231d965a0 100644 --- a/src/CHANGELOG.tsx +++ b/src/CHANGELOG.tsx @@ -40,7 +40,8 @@ import SpellLink from 'interface/SpellLink'; // prettier-ignore export default [ - change(date(2024, 11, 9), `Added Ovinax Egg and Mad Queens Mandate - Trinkets & Spells`, Yellot), + change(date(2024, 11, 10), <>Added , Yellot), + change(date(2024, 11, 9), <>Added and , Yellot), change(date(2024, 10, 28), `Updated annotation list rendering for the annotation debugger`, Rzial), change(date(2024, 10, 14), `Fixed some technical issues with rendering of lists`, nullDozzer), change(date(2024, 10, 12), `Fixed an issue with the effective healing/damage patch causing the per-second damage and healing graphs to be incorrect and causing some by-ability healing and damage numbers to be too low`, Sref), diff --git a/src/CONTRIBUTORS.ts b/src/CONTRIBUTORS.ts index fbe085138bd..f1ac2684514 100644 --- a/src/CONTRIBUTORS.ts +++ b/src/CONTRIBUTORS.ts @@ -2536,7 +2536,7 @@ export const Rzial: Contributor = { export const Yellot: Contributor = { nickname: 'Yellot', - github: 'mcheung7272', + github: 'Mcheung7272', mains: [ { name: 'Yellot', diff --git a/src/analysis/retail/hunter/marksmanship/CHANGELOG.tsx b/src/analysis/retail/hunter/marksmanship/CHANGELOG.tsx index ca2a8b6f5fb..dfda305f169 100644 --- a/src/analysis/retail/hunter/marksmanship/CHANGELOG.tsx +++ b/src/analysis/retail/hunter/marksmanship/CHANGELOG.tsx @@ -1,18 +1,20 @@ import { change, date } from 'common/changelog'; -import { Arlie, emallson, Putro, Swolorno, ToppleTheNun, Trevor } from 'CONTRIBUTORS'; +import { Arlie, emallson, Putro, Swolorno, ToppleTheNun, Trevor, Yellot } from 'CONTRIBUTORS'; import { ItemLink, SpellLink } from 'interface'; import TALENTS from 'common/TALENTS/hunter'; import ITEMS from 'common/ITEMS'; export default [ + change(date(2024, 11, 10), 'Enable Marksmanship again for usage', Yellot), + change(date(2024, 11, 10), 'Added Black Arrow, Wailing Arrow and Fort of Bear', Yellot), + change(date(2024, 11, 10), 'Updated some constants values to match TWW 11.05', Yellot), + change(date(2024, 11, 10), 'Removed DeathChakrams, Murder of crows, Steel trap', Yellot), change(date(2023, 10, 24), <>Add buff to the timeline., Putro), - change(date(2023, 10, 3), <>Add as a trackable talent., Putro), change(date(2023, 7, 3), 'Update SpellLink usage.', ToppleTheNun), change(date(2023, 6, 4), <>Add module to hunter, Trevor), change(date(2023, 5, 9), <>Added support for T29 tier sets, Swolorno), change(date(2023, 1, 30), 'Fixed a crashing bug in the Checklist due to a no-longer generated statistic.', emallson), change(date(2023, 1, 30), <>Updated to be 2.5 seconds per 50 focus as of 10.0.5., Putro), change(date(2023, 1, 30), <>Added tracking to module., Putro), - change(date(2023, 1, 30), <>Fixed an issue with when combined with resulting in incorrect warnings about refreshing., Putro), change(date(2022, 12, 23), 'Enable Marksmanship for Dragonflight analysis', Putro), change(date(2022, 11, 11), 'Initial transition of Marksmanship to Dragonflight', [Arlie, Putro]), ]; diff --git a/src/analysis/retail/hunter/marksmanship/CONFIG.tsx b/src/analysis/retail/hunter/marksmanship/CONFIG.tsx index 9412fd22397..1022daf17b5 100644 --- a/src/analysis/retail/hunter/marksmanship/CONFIG.tsx +++ b/src/analysis/retail/hunter/marksmanship/CONFIG.tsx @@ -2,15 +2,15 @@ import { Putro } from 'CONTRIBUTORS'; import GameBranch from 'game/GameBranch'; import SPECS from 'game/SPECS'; import Config, { SupportLevel } from 'parser/Config'; -// import CHANGELOG from './CHANGELOG'; +import CHANGELOG from './CHANGELOG'; const config: Config = { // The people that have contributed to this spec recently. People don't have to sign up to be long-time maintainers to be included in this list. If someone built a large part of the spec or contributed something recently to that spec, they can be added to the contributors list. If someone goes MIA, they may be removed after major changes or during a new expansion. contributors: [Putro], branch: GameBranch.Retail, // The WoW client patch this spec was last updated. - patchCompatibility: null, - supportLevel: SupportLevel.Unmaintained, + patchCompatibility: '11.0.5', + supportLevel: SupportLevel.Foundation, // Explain the status of this spec's analysis here. Try to mention how complete it is, and perhaps show links to places users can learn more. // If this spec's analysis does not show a complete picture please mention this in the `` component. description: ( @@ -37,18 +37,18 @@ const config: Config = { ), // A recent example report to see interesting parts of the spec. Will be shown on the homepage. - exampleReport: '/report/qbwPzJ6QDkamCdKR/10-Heroic+Hungering+Destroyer+-+Kill+(4:43)/Blindsite', + exampleReport: 'report/AqYvnpjk2MCHmgca/21-Mythic+The+Bloodbound+Horror+-+Kill+(5:10)/Yellot', // Don't change anything below this line; // The current spec identifier. This is the only place (in code) that specifies which spec this parser is about. spec: SPECS.MARKSMANSHIP_HUNTER, // The contents of your changelog. - // changelog: CHANGELOG, + changelog: CHANGELOG, // The CombatLogParser class for your spec. - // parser: () => - // import('./CombatLogParser' /* webpackChunkName: "MarksmanshipHunter" */).then( - // (exports) => exports.default, - // ), + parser: () => + import('./CombatLogParser' /* webpackChunkName: "MarksmanshipHunter" */).then( + (exports) => exports.default, + ), // The path to the current directory (relative form project root). This is used for generating a GitHub link directly to your spec's code. path: import.meta.url, }; diff --git a/src/analysis/retail/hunter/marksmanship/CombatLogParser.ts b/src/analysis/retail/hunter/marksmanship/CombatLogParser.ts index b584088cd26..4da866d4767 100644 --- a/src/analysis/retail/hunter/marksmanship/CombatLogParser.ts +++ b/src/analysis/retail/hunter/marksmanship/CombatLogParser.ts @@ -1,11 +1,9 @@ import { - AMurderOfCrows, Barrage, BindingShot, BornToBeWild, CancelledCasts, Channeling, - DeathChakrams, DeathTracker, FocusDetails, FocusTracker, @@ -13,7 +11,6 @@ import { NaturalMending, RejuvenatingWind, SpellFocusCost, - SteelTrap, Trailblazer, TranquilizingShot, WailingArrow, @@ -47,7 +44,6 @@ import ChimaeraShot from './modules/talents/ChimaeraShot'; import ExplosiveShot from '../shared/talents/ExplosiveShot'; import LockAndLoad from './modules/talents/LockAndLoad'; import MasterMarksman from '../shared/talents/MasterMarksman'; -import SerpentSting from '../shared/talents/SerpentSting'; import SteadyFocus from './modules/talents/SteadyFocus'; import Streamline from './modules/talents/Streamline'; import Volley from './modules/talents/Volley'; @@ -55,8 +51,15 @@ import AimedShotPrepullNormalizer from './normalizers/AimedShotPrepullNormalizer import Deathblow from './modules/talents/Deathblow'; import T29MMTier2P from './modules/items/T29MMTier2P'; import T29MMTier4P from './modules/items/T29MMTier4P'; +import FoundationGuide from 'interface/guide/foundation/FoundationGuide'; +import OvinaxMercurialEgg from 'parser/retail/modules/items/thewarwithin/trinkets/OvinaxMercurialEgg'; +import MadQueensMandate from 'parser/retail/modules/items/thewarwithin/trinkets/MadQueensMandate'; +import SkardynsGrace from 'parser/retail/modules/items/thewarwithin/trinkets/SkardynsGrace'; +import BlackArrow from '../shared/talents/BlackArrow'; class CombatLogParser extends CoreCombatLogParser { + static guide = FoundationGuide; + static specModules = { // Core statistics abilities: Abilities, @@ -111,22 +114,22 @@ class CombatLogParser extends CoreCombatLogParser { //Shared Talents rejuvenatingWind: RejuvenatingWind, - deathChakrams: DeathChakrams, tranquilizingShot: TranquilizingShot, trailblazer: Trailblazer, naturalMending: NaturalMending, bornToBeWild: BornToBeWild, - aMurderOfCrows: AMurderOfCrows, explosiveShot: ExplosiveShot, masterMarksman: MasterMarksman, wailingArrow: WailingArrow, - steelTrap: SteelTrap, - serpentSting: SerpentSting, barrage: Barrage, + blackArrow: BlackArrow, // items t292p: T29MMTier2P, t294p: T29MMTier4P, + ovinaxMercurialEgg: OvinaxMercurialEgg, + madQueensMandate: MadQueensMandate, + skardynsGrace: SkardynsGrace, // There's no throughput benefit from casting Arcane Torrent on cooldown arcaneTorrent: [ArcaneTorrent, { castEfficiency: null }] as const, diff --git a/src/analysis/retail/hunter/marksmanship/constants.ts b/src/analysis/retail/hunter/marksmanship/constants.ts index 53af53b0f81..31316ea94fa 100644 --- a/src/analysis/retail/hunter/marksmanship/constants.ts +++ b/src/analysis/retail/hunter/marksmanship/constants.ts @@ -18,8 +18,8 @@ export const TRUESHOT_AIMED_SHOT_CAST_TIME_SPEED_UP = 0.5; //Trueshot increases focus regen by 50% export const TRUESHOT_FOCUS_INCREASE = 0.5; /** Lone Wolf */ -//Lone Wolf increases damage done by up to 10% -export const MAX_LONE_WOLF_MODIFIER = 0.1; +//Lone Wolf increases damage done by up to 5% +export const MAX_LONE_WOLF_MODIFIER = 0.05; //Lone Wolf ramps up every 2 seconds if it isn't capped export const LONE_WOLF_RAMP_INTERVAL_MS = 2000; //Lone Wolf increases its damage done by 1% every 2 seconds @@ -44,10 +44,10 @@ export const LONE_WOLF_AFFECTED_SPELLS = [ SPELLS.KILL_SHOT_MM_BM, ]; /** Precise Shots */ -//Logs give no indication whether we gain 1 or 2 stacks - we assume 2 and work from there. -export const PRECISE_SHOTS_ASSUMED_PROCS = 2; -//Precise Shots increase damage of Arcane or Multi-Shot by 75% -export const PRECISE_SHOTS_MODIFIER = 0.75; +//Changes from 11.05 has made it so this is definitely 1 proc +export const PRECISE_SHOTS_ASSUMED_PROCS = 1; +//Precise Shots increase damage of Arcane or Multi-Shot by 100% +export const PRECISE_SHOTS_MODIFIER = 1; //Because the spells have traveltime we need to take it into account export const ARCANE_SHOT_MAX_TRAVEL_TIME = 500; /** Steady Shot */ @@ -62,8 +62,8 @@ export const STREAMLINE_RAPID_FIRE_DAMAGE_INCREASE = 0.15; //Rapid Fire causes the next Aimed Shot to cast 30% faster. export const STREAMLINE_AIMED_SHOT_CAST_SPEED_UP = 0.3; /** Steady Focus */ -//Steady Focus increases haste by 7% -export const STEADY_FOCUS_HASTE_PERCENT = [0, 0.04, 0.08]; +//Steady Focus increases haste by 8% +export const STEADY_FOCUS_HASTE_PERCENT = [0, 0.08]; /** Calling the Shots */ //2.5 seconds per 50 focus spent export const CTS_CDR_PER_FOCUS = 2500 / 50; @@ -93,7 +93,9 @@ export const LIST_OF_FOCUS_SPENDERS_MM = [ TALENTS.WAILING_ARROW_TALENT, TALENTS.MULTI_SHOT_MARKSMANSHIP_TALENT, TALENTS.BURSTING_SHOT_TALENT, - TALENTS.CHIMAERA_SHOT_TALENT, + TALENTS.EXPLOSIVE_SHOT_TALENT, + SPELLS.WING_CLIP, + SPELLS.WAILING_ARROW_DAMAGE_FOCUS, ]; //endregion diff --git a/src/analysis/retail/hunter/marksmanship/modules/Abilities.tsx b/src/analysis/retail/hunter/marksmanship/modules/Abilities.tsx index 0299ab30916..c1a11661581 100644 --- a/src/analysis/retail/hunter/marksmanship/modules/Abilities.tsx +++ b/src/analysis/retail/hunter/marksmanship/modules/Abilities.tsx @@ -82,6 +82,16 @@ class Abilities extends CoreAbilities { recommendedEfficiency: 0.95, }, }, + { + spell: SPELLS.WAILING_ARROW_DAMAGE.id, + enabled: combatant.hasTalent(TALENTS.WAILING_ARROW_TALENT), + category: SPELL_CATEGORY.ROTATIONAL, + }, + { + spell: SPELLS.WAILING_ARROW_DAMAGE_FOCUS.id, + enabled: combatant.hasTalent(TALENTS.WAILING_ARROW_TALENT), + category: SPELL_CATEGORY.ROTATIONAL, + }, //endregion //region Talents @@ -89,14 +99,6 @@ class Abilities extends CoreAbilities { spell: TALENTS.WAILING_ARROW_TALENT.id, enabled: combatant.hasTalent(TALENTS.WAILING_ARROW_TALENT), category: SPELL_CATEGORY.ROTATIONAL, - gcd: { - base: 1500, - }, - cooldown: 60, - castEfficiency: { - suggestion: true, - recommendedEfficiency: 0.9, - }, }, { spell: TALENTS.CHIMAERA_SHOT_TALENT.id, @@ -121,10 +123,9 @@ class Abilities extends CoreAbilities { }, }, { - spell: TALENTS.SERPENT_STING_TALENT.id, - buffSpellId: TALENTS.SERPENT_STING_TALENT.id, + spell: SPELLS.SERPENT_STING_MM.id, category: SPELL_CATEGORY.ROTATIONAL, - enabled: combatant.hasTalent(TALENTS.SERPENT_STING_TALENT), + enabled: combatant.hasTalent(TALENTS.SERPENTSTALKERS_TRICKERY_TALENT), gcd: { base: 1500, }, @@ -165,17 +166,12 @@ class Abilities extends CoreAbilities { }, }, { - spell: TALENTS.STEEL_TRAP_TALENT.id, + spell: SPELLS.BLACK_ARROW_DAMAGE.id, category: SPELL_CATEGORY.ROTATIONAL, - cooldown: 30, - enabled: combatant.hasTalent(TALENTS.STEEL_TRAP_TALENT), + enabled: combatant.hasTalent(TALENTS.BLACK_ARROW_TALENT), gcd: { base: 1500, }, - castEfficiency: { - suggestion: true, - recommendedEfficiency: 0.85, - }, }, //endregion @@ -211,6 +207,15 @@ class Abilities extends CoreAbilities { static: 0, }, }, + { + spell: SPELLS.FORTITUDE_OF_THE_BEAR.id, + category: SPELL_CATEGORY.DEFENSIVE, + isDefensive: true, + cooldown: 120, + gcd: { + static: 0, + }, + }, //endregion //region Baseline Utility diff --git a/src/analysis/retail/hunter/marksmanship/modules/checklist/Component.tsx b/src/analysis/retail/hunter/marksmanship/modules/checklist/Component.tsx index 94b58f729a6..ff8bca25a8d 100644 --- a/src/analysis/retail/hunter/marksmanship/modules/checklist/Component.tsx +++ b/src/analysis/retail/hunter/marksmanship/modules/checklist/Component.tsx @@ -67,29 +67,6 @@ const MarksmanshipChecklist = (props: ChecklistProps) => { thresholds={thresholds.preciseShotsThresholds} /> - {combatant.hasTalent(TALENTS_HUNTER.SERPENT_STING_TALENT) && ( - - uptime - - } - thresholds={thresholds.serpentStingUptimeThresholds} - /> - )} - - {combatant.hasTalent(TALENTS_HUNTER.SERPENT_STING_TALENT) && ( - - Refreshes of that didn't - pandemic{' '} - - } - thresholds={thresholds.serpentStingNonPandemicThresholds} - /> - )} - {combatant.hasTalent(TALENTS_HUNTER.CALLING_THE_SHOTS_TALENT) && ( + + + + + ); + } +} + +export default BlackArrow; diff --git a/src/analysis/retail/hunter/shared/talents/KillShot.tsx b/src/analysis/retail/hunter/shared/talents/KillShot.tsx index 93dcd0b7baa..bdcb79d9079 100644 --- a/src/analysis/retail/hunter/shared/talents/KillShot.tsx +++ b/src/analysis/retail/hunter/shared/talents/KillShot.tsx @@ -35,8 +35,8 @@ class KillShot extends ExecuteHelper { constructor(options: Options) { super(options); - this.active = - this.selectedCombatant.hasTalent(TALENTS.KILL_SHOT_SHARED_TALENT) || + this.active = !this.selectedCombatant.hasTalent(TALENTS.BLACK_ARROW_TALENT); + this.selectedCombatant.hasTalent(TALENTS.KILL_SHOT_SHARED_TALENT) || this.selectedCombatant.hasTalent(TALENTS.KILL_SHOT_SURVIVAL_TALENT); const ctor = this.constructor as typeof ExecuteHelper; diff --git a/src/analysis/retail/hunter/shared/talents/WailingArrow.tsx b/src/analysis/retail/hunter/shared/talents/WailingArrow.tsx index 17a04242095..7c3ce71e3ce 100644 --- a/src/analysis/retail/hunter/shared/talents/WailingArrow.tsx +++ b/src/analysis/retail/hunter/shared/talents/WailingArrow.tsx @@ -17,6 +17,10 @@ class WailingArrow extends Analyzer { if (!this.active) { return; } + this.addEventListener( + Events.damage.by(SELECTED_PLAYER).spell(SPELLS.WAILING_ARROW_DAMAGE_FOCUS), + this.onWailingDamage, + ); this.addEventListener( Events.damage.by(SELECTED_PLAYER).spell(SPELLS.WAILING_ARROW_DAMAGE), this.onWailingDamage, diff --git a/src/common/ITEMS/thewarwithin/trinkets.ts b/src/common/ITEMS/thewarwithin/trinkets.ts index 04250b515dc..b79fd60922d 100644 --- a/src/common/ITEMS/thewarwithin/trinkets.ts +++ b/src/common/ITEMS/thewarwithin/trinkets.ts @@ -29,12 +29,17 @@ const trinkets = { OVINAXS_MERCURIAL_EGG: { id: 220305, name: "Ovi'nax's Mercurial Egg", - icon: 'Inv_raid_mercurialegg_purple', + icon: 'inv_raid_mercurialegg_purple', }, MAD_QUEENS_MANDATE: { id: 212454, name: "Mad Queen's Mandate", - icon: 'Inv_raid_abyssaleffigy_purple', + icon: 'inv_raid_abyssaleffigy_purple', + }, + SKARDYNS_GRACE: { + id: 133282, + name: "Skardyn's Grace", + icon: 'inv_misc_coin_08', }, } satisfies Record; diff --git a/src/common/SPELLS/hunter.ts b/src/common/SPELLS/hunter.ts index fcb5208de9f..34ada5155ec 100644 --- a/src/common/SPELLS/hunter.ts +++ b/src/common/SPELLS/hunter.ts @@ -230,6 +230,11 @@ const spells = { name: 'Deathblow', icon: 'ability_hunter_runningshot', }, + SERPENT_STING_MM: { + id: 271788, + name: 'Serpent Sting', + icon: 'spell_hunter_exoticmunitions_poisoned', + }, //endregion //region Survival @@ -508,6 +513,26 @@ const spells = { name: 'Wailing Arrow', icon: 'ability_theblackarrow', }, + WAILING_ARROW_DAMAGE_FOCUS: { + id: 392060, + name: 'Wailing Arrow', + icon: 'ability_theblackarrow', + }, + BLACK_ARROW_DAMAGE: { + id: 466930, + name: 'Black Arrow', + icon: 'inv_ability_darkrangerhunter_blackarrow', + }, + BLACK_ARROW_DAMAGE_2: { + id: 468037, + name: 'Black Arrow', + icon: 'inv_ability_darkrangerhunter_blackarrow', + }, + BLACK_ARROW_DAMAGE_3: { + id: 468572, + name: 'Black Arrow', + icon: 'inv_ability_darkrangerhunter_blackarrow', + }, //endregion //region Pets @@ -587,7 +612,7 @@ const spells = { icon: 'ability_hunter_masterscall', }, FORTITUDE_OF_THE_BEAR: { - id: 272679, + id: 392956, name: 'Fortitude of the Bear', icon: 'spell_druid_bearhug', }, diff --git a/src/common/SPELLS/thewarwithin/trinkets.ts b/src/common/SPELLS/thewarwithin/trinkets.ts index 6b6b675c115..c1cf9a08852 100644 --- a/src/common/SPELLS/thewarwithin/trinkets.ts +++ b/src/common/SPELLS/thewarwithin/trinkets.ts @@ -39,7 +39,13 @@ const spells = { ABYSSAL_GLUTTONY: { id: 443124, name: 'Abyssal Gluttony', - icon: 'Ability_creature_poison_01_purple', + icon: 'ability_creature_poison_01_purple', + }, + //Skardyns Grace + SPEED_OF_THOUGHT: { + id: 92099, + name: 'Speed of Thought', + icon: 'ability_mage_studentofthemind', }, } satisfies Record; diff --git a/src/parser/retail/modules/items/thewarwithin/trinkets/SkardynsGrace.ts b/src/parser/retail/modules/items/thewarwithin/trinkets/SkardynsGrace.ts new file mode 100644 index 00000000000..bfc224fa21a --- /dev/null +++ b/src/parser/retail/modules/items/thewarwithin/trinkets/SkardynsGrace.ts @@ -0,0 +1,24 @@ +import ITEMS from 'common/ITEMS/thewarwithin/trinkets'; +import SPELLS from 'common/SPELLS/thewarwithin/trinkets'; +import Analyzer, { Options } from 'parser/core/Analyzer'; +import SPELL_CATEGORY from 'parser/core/SPELL_CATEGORY'; +import Abilities from 'parser/core/modules/Abilities'; + +export default class SkardynsGrace extends Analyzer.withDependencies({ + abilities: Abilities, +}) { + constructor(options: Options) { + super(options); + + this.active = this.selectedCombatant.hasTrinket(ITEMS.SKARDYNS_GRACE.id); + if (!this.active) { + return; + } + + this.deps.abilities.add({ + spell: SPELLS.SPEED_OF_THOUGHT.id, + category: SPELL_CATEGORY.COOLDOWNS, + cooldown: 120, + }); + } +} diff --git a/tsconfig.json b/tsconfig.json index 0940fe7b6eb..8a955f63740 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -47,9 +47,7 @@ "src/analysis/retail/warlock/demonology", "src/analysis/retail/warlock/destruction", "src/analysis/retail/warrior/fury", - "src/analysis/retail/hunter/marksmanship", - "src/analysis/retail/hunter/survival", - "src/analysis/retail/hunter/shared" + "src/analysis/retail/hunter/survival" ], "files": [ "./src/analysis/retail/deathknight/unholy/CONFIG.tsx", @@ -61,7 +59,6 @@ "./src/analysis/retail/warlock/demonology/CONFIG.tsx", "./src/analysis/retail/warlock/destruction/CONFIG.tsx", "./src/analysis/retail/warrior/fury/CONFIG.tsx", - "./src/analysis/retail/hunter/marksmanship/CONFIG.tsx", "./src/analysis/retail/hunter/survival/CONFIG.tsx" ] }