Skip to content

Commit

Permalink
Updated Hunter MM Tier Set + Ran Update Script (WoWAnalyzer#7178)
Browse files Browse the repository at this point in the history
* 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

* update to current live version

* auto generated talents

* updated tier set

* deleted file. no longer a talent

* use updated tier set

* fixed naming

* removed

* changelog update

* undo updates to other classes

* update changelog

* add back for beast mastery

---------

Co-authored-by: mcheung7272 <[email protected]>
  • Loading branch information
Mcheung7272 and mcheung7272 authored Nov 14, 2024
1 parent bcd7a12 commit 511f427
Show file tree
Hide file tree
Showing 12 changed files with 234 additions and 266 deletions.
2 changes: 1 addition & 1 deletion scripts/talents/generate-talents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
TalentNode,
} from './talent-tree-types';

const LIVE_WOW_BUILD_NUMBER = '11.0.5.57171';
const LIVE_WOW_BUILD_NUMBER = '11.0.5.57388';
const LIVE_TALENT_DATA_URL = 'https://www.raidbots.com/static/data/live/talents.json';
const LIVE_SPELLPOWER_DATA_URL = `https://wago.tools/db2/SpellPower/csv?build=${LIVE_WOW_BUILD_NUMBER}`;
const PTR_WOW_BUILD_NUMBER = '11.0.2.55763';
Expand Down
1 change: 1 addition & 0 deletions src/CHANGELOG.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import SpellLink from 'interface/SpellLink';

// prettier-ignore
export default [
change(date(2024, 11, 13), <>Updated common hunter spells and talents with script</>, Yellot),
change(date(2024, 11, 10), <>Added <ItemLink id={ITEMS.SKARDYNS_GRACE.id}/></>, Yellot),
change(date(2024, 11, 9), <>Added <ItemLink id={ITEMS.MAD_QUEENS_MANDATE.id}/> and <ItemLink id={ITEMS.OVINAXS_MERCURIAL_EGG.id}/></>, Yellot),
change(date(2024, 10, 28), `Updated annotation list rendering for the annotation debugger`, Rzial),
Expand Down
6 changes: 5 additions & 1 deletion src/analysis/retail/hunter/marksmanship/CHANGELOG.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,22 @@ import { Arlie, emallson, Putro, Swolorno, ToppleTheNun, Trevor, Yellot } from '
import { ItemLink, SpellLink } from 'interface';
import TALENTS from 'common/TALENTS/hunter';
import ITEMS from 'common/ITEMS';
import SPELLS from 'common/SPELLS';
export default [
change(date(2024, 11, 13), 'Updated tier set', Yellot),
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), <>Added <SpellLink spell={TALENTS.BLACK_ARROW_TALENT} />, <SpellLink spell={TALENTS.WAILING_ARROW_TALENT} /> and <SpellLink spell={SPELLS.FORTITUDE_OF_THE_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 <SpellLink spell={TALENTS.DEATHBLOW_TALENT} /> buff to the timeline.</>, Putro),
change(date(2023, 10, 3), <>Add Steel Trap Talent as a trackable talent.</>, Putro),
change(date(2023, 7, 3), 'Update SpellLink usage.', ToppleTheNun),
change(date(2023, 6, 4), <>Add <ItemLink id={ITEMS.CALL_TO_DOMINANCE.id}/> 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 <SpellLink spell={TALENTS.CALLING_THE_SHOTS_TALENT} /> to be 2.5 seconds per 50 focus as of 10.0.5.</>, Putro),
change(date(2023, 1, 30), <>Added <SpellLink spell={TALENTS.DEATHBLOW_TALENT} /> tracking to <SpellLink spell={TALENTS.KILL_SHOT_SHARED_TALENT} /> module.</>, Putro),
change(date(2023, 1, 30), <>Fixed an issue with Serpent Sting Talent when combined with <SpellLink spell={TALENTS.SERPENTSTALKERS_TRICKERY_TALENT} /> 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]),
];
10 changes: 4 additions & 6 deletions src/analysis/retail/hunter/marksmanship/CombatLogParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import GlobalCooldown from './modules/core/GlobalCooldown';
import SpellUsable from './modules/core/SpellUsable';
import AlwaysBeCasting from './modules/features/AlwaysBeCasting';
import CooldownThroughputTracker from './modules/features/CooldownThroughputTracker';
import EagletalonsTrueFocus from './modules/talents/EagletalonsTrueFocus';
import SerpentstalkersTrickery from './modules/talents/SerpentstalkersTrickery';
import SurgingShots from './modules/talents/SurgingShots';
import Focus from './modules/resources/Focus';
Expand All @@ -49,8 +48,8 @@ import Streamline from './modules/talents/Streamline';
import Volley from './modules/talents/Volley';
import AimedShotPrepullNormalizer from './normalizers/AimedShotPrepullNormalizer';
import Deathblow from './modules/talents/Deathblow';
import T29MMTier2P from './modules/items/T29MMTier2P';
import T29MMTier4P from './modules/items/T29MMTier4P';
import MMTier2P from './modules/items/MMTier2P';
import MMTier4P from './modules/items/MMTier4P';
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';
Expand Down Expand Up @@ -110,7 +109,6 @@ class CombatLogParser extends CoreCombatLogParser {
deathblow: Deathblow,
surgingShots: SurgingShots,
serpentstalkersTrickery: SerpentstalkersTrickery,
eagletalonsTrueFocus: EagletalonsTrueFocus,

//Shared Talents
rejuvenatingWind: RejuvenatingWind,
Expand All @@ -125,8 +123,8 @@ class CombatLogParser extends CoreCombatLogParser {
blackArrow: BlackArrow,

// items
t292p: T29MMTier2P,
t294p: T29MMTier4P,
mmTier2P: MMTier2P,
mmTier4P: MMTier4P,
ovinaxMercurialEgg: OvinaxMercurialEgg,
madQueensMandate: MadQueensMandate,
skardynsGrace: SkardynsGrace,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import BaseChecklist from 'parser/shared/modules/features/Checklist/Module';

import AlwaysBeCasting from '../features/AlwaysBeCasting';
import Component from './Component';
import MMTier2P from '../items/MMTier2P';
import MMTier4P from '../items/MMTier4P';

class Checklist extends BaseChecklist {
static dependencies = {
Expand All @@ -35,6 +37,9 @@ class Checklist extends BaseChecklist {
focusGeneratorDetails: FocusDetails,
focusCapTracker: FocusCapTracker,
//endregion

mmTier2P: MMTier2P,
mmTier4P: MMTier4P,
};

//region Core
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,35 @@ import ItemDamageDone from 'parser/ui/ItemDamageDone';
import Events, { DamageEvent } from 'parser/core/Events';

/**
* Arcane Shot and Multi-Shot critical hits cause your next Aimed Shot to cause the target to bleed for 40% of damage dealt over 6 sec.
* Arcane Shot and Multi-Shot damage increased by 20%
*/
export default class T29MMTier2P extends Analyzer {
export default class MMTier2P extends Analyzer {
totalDamage: number = 0;
constructor(options: Options) {
super(options);
this.active = this.selectedCombatant.has2PieceByTier(TIERS.DF1);
this.active = this.selectedCombatant.has2PieceByTier(TIERS.TWW1);
this.addEventListener(
Events.damage.by(SELECTED_PLAYER).spell(SPELLS.HIT_THE_MARK),
this.onHitTheMarkDamage,
Events.damage.by(SELECTED_PLAYER).spell(SPELLS.ARCANE_SHOT),
this.onArcaneShotDamage,
);
this.addEventListener(
Events.damage.by(SELECTED_PLAYER).spell(SPELLS.MULTISHOT_MM),
this.onArcaneShotDamage,
);
}

onArcaneShotDamage(event: DamageEvent) {
this.totalDamage += event.amount + event.amount * 0.2 + (event.absorbed || 0);
}

onHitTheMarkDamage(event: DamageEvent) {
this.totalDamage += event.amount + (event.absorbed || 0);
onMultishotDamage(event: DamageEvent) {
this.totalDamage += event.amount + event.amount * 0.2 + (event.absorbed || 0);
}

statistic() {
return (
<Statistic category={STATISTIC_CATEGORY.ITEMS} size="flexible">
<BoringSpellValueText spell={SPELLS.T29_2P_BONUS_MARKSMANSHIP}>
<BoringSpellValueText spell={SPELLS.TWW_LIGHTLESS_2P_MM}>
<ItemDamageDone amount={this.totalDamage} />
</BoringSpellValueText>
</Statistic>
Expand Down
54 changes: 54 additions & 0 deletions src/analysis/retail/hunter/marksmanship/modules/items/MMTier4P.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer';
import { TIERS } from 'game/TIERS';
import Statistic from 'parser/ui/Statistic';
import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY';
import SPELLS from 'common/SPELLS';
import BoringSpellValueText from 'parser/ui/BoringSpellValueText';
import ItemDamageDone from 'parser/ui/ItemDamageDone';
import Events, { DamageEvent } from 'parser/core/Events';
import { TALENTS_HUNTER } from 'common/TALENTS';

/**
* Consuming Precise Shot increases the damage of your next Aimed Shot by 20%
*/
export default class MMTier4P extends Analyzer {
totalDamage: number = 0;
buffNextAimedShot = false;

constructor(options: Options) {
super(options);
this.active = this.selectedCombatant.has4PieceByTier(TIERS.TWW1);
this.addEventListener(
Events.removebuff.by(SELECTED_PLAYER).spell(SPELLS.PRECISE_SHOTS),
this.onPreciseShotConsumed,
);
this.addEventListener(
Events.damage.by(SELECTED_PLAYER).spell(TALENTS_HUNTER.AIMED_SHOT_TALENT),
this.onAimedShotDamage,
);
}

// Increase Aimed Shot damage if precise shot buff was consumed
onAimedShotDamage(event: DamageEvent) {
if (this.buffNextAimedShot) {
this.totalDamage += event.amount + event.amount * 0.2 + (event.absorbed || 0);
this.buffNextAimedShot = false;
}
}

//On Consumption of this buff, increase damage of next aimed shot
onPreciseShotConsumed() {
this.buffNextAimedShot = true;
}

statistic() {
return (
<Statistic category={STATISTIC_CATEGORY.ITEMS} size="flexible">
<BoringSpellValueText spell={SPELLS.TWW_LIGHTLESS_4P_MM}>
<ItemDamageDone amount={this.totalDamage} />
<br />
</BoringSpellValueText>
</Statistic>
);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class PreciseShots extends Analyzer {

constructor(options: Options) {
super(options);
this.active = this.selectedCombatant.hasTalent(TALENTS_HUNTER.PRECISE_SHOTS_TALENT);
this.active = this.selectedCombatant.hasTalent(TALENTS_HUNTER.PRECISE_SHOT_TALENT);
this.addEventListener(
Events.applybuff.by(SELECTED_PLAYER).spell(SPELLS.PRECISE_SHOTS),
this.onPreciseShotsApplication,
Expand Down

This file was deleted.

15 changes: 15 additions & 0 deletions src/common/SPELLS/hunter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,21 @@ const spells = {
name: 'T30 4P',
icon: 'ability_druid_ferociousbite',
},

//TWW Lightless 2p
TWW_LIGHTLESS_2P_MM: {
id: 453648,
name: 'Hunter MM Lightless 2 Piece Set',
icon: 'trade_engineering',
},

//TWW Lightless 4p
TWW_LIGHTLESS_4P_MM: {
id: 453650,
name: 'Hunter MM Lightless 4 Piece Set',
icon: 'trade_engineering',
},

//endregion
} satisfies Record<string, Spell>;

Expand Down
Loading

0 comments on commit 511f427

Please sign in to comment.