Skip to content

Commit

Permalink
Remove BDK rotational analysis and handle Deathbringer effects
Browse files Browse the repository at this point in the history
I have not had the time to fix up the rotational stuff properly. It
changes a lot with Deathbringer in the mix. So we're removing it
rather than leaving in wrong info.

This also includes fixes to several issues related to Deathbringer:

- Added Reaper's Mark
- Normalize Marrowrend's Rune cost when Exterminate is present
- Handle Exterminate in RuneWaste and MarrowrendUsage
- Handle Deathbringer-related CDR
  • Loading branch information
emallson committed Oct 5, 2024
1 parent cb43de6 commit 802628d
Show file tree
Hide file tree
Showing 10 changed files with 176 additions and 408 deletions.
6 changes: 5 additions & 1 deletion src/analysis/retail/deathknight/blood/CHANGELOG.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import { change, date } from 'common/changelog';
import SPELLS from 'common/SPELLS';
import talents from 'common/TALENTS/deathknight';
import { emallson } from 'CONTRIBUTORS';
import SpellLink from 'interface/SpellLink';

// prettier-ignore
export default [
change(date(2024, 8, 12), <>Fix crash when <SpellLink spell={talents.RAPID_DECOMPOSITION_TALENT} /> was not selected.</>, emallson),
change(date(2024, 10, 5), <>Added warning about repeated <SpellLink spell={talents.DEATH_STRIKE_TALENT} /> casts.</>, emallson),
change(date(2024, 10, 5), <>Removed Dragonflight rotational analysis.</>, emallson),
change(date(2024, 10, 5), <>Fixed handling of <SpellLink spell={SPELLS.EXTERMINATE} /> cost reduction and Deathbringer cooldown reduction effects.</>, emallson),
change(date(2024, 8, 12), <>Fixed crash when <SpellLink spell={talents.RAPID_DECOMPOSITION_TALENT} /> was not selected.</>, emallson),
change(date(2024, 7, 28), 'Basic updates for The War Within', emallson),
];
4 changes: 2 additions & 2 deletions src/analysis/retail/deathknight/blood/CombatLogParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ import WillOfTheNecropolis from './modules/talents/WillOfTheNecropolis';
import RuneTracker from './modules/core/RuneTracker';
import ResourceOrderNormalizer from './modules/core/ResourceOrderNormalizer';
import BoneShieldOrderNormalizer from './modules/core/BoneShieldOrderNormalizer';
import AplCheck from './modules/features/AplCheck';
import ExterminateCostNormalizer from '../shared/ExterminateCostNormalizer';

Check failure on line 49 in src/analysis/retail/deathknight/blood/CombatLogParser.ts

View workflow job for this annotation

GitHub Actions / Typecheck

Cannot find module '../shared/ExterminateCostNormalizer' or its corresponding type declarations.

class CombatLogParser extends CoreCombatLogParser {
static specModules = {
Expand Down Expand Up @@ -104,13 +104,13 @@ class CombatLogParser extends CoreCombatLogParser {
// guide stuff
deathStrike: DeathStrike,
bloodShield: BloodShield,
aplCheck: AplCheck,

// normalizers
deathStrikeNormalizer: DeathStrikeLinkNormalizer,
bloodShieldNormalizer: BloodShieldNormalizer,
resourceOrderNormalizer: ResourceOrderNormalizer,
boneShieldOrderNormalizer: BoneShieldOrderNormalizer,
ExterminateCostNormalizer,
};

static guide = BloodGuide;
Expand Down
14 changes: 11 additions & 3 deletions src/analysis/retail/deathknight/blood/modules/Abilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class Abilities extends CoreAbilities {
spell: SPELLS.LICHBORNE.id,
enabled: combatant.hasTalent(TALENTS.UNHOLY_ENDURANCE_TALENT), //Provides 15% DR if you take this talent
category: SPELL_CATEGORY.DEFENSIVE,
cooldown: 120,
cooldown: 120 - combatant.getTalentRank(TALENTS.DEATHS_MESSENGER_TALENT) * 30,
gcd: null,
castEfficiency: {
suggestion: true,
Expand Down Expand Up @@ -255,7 +255,7 @@ class Abilities extends CoreAbilities {
spell: TALENTS.RAISE_DEAD_SHARED_TALENT.id,
enabled: combatant.hasTalent(TALENTS.RAISE_DEAD_SHARED_TALENT),
category: SPELL_CATEGORY.ROTATIONAL,
cooldown: 120,
cooldown: 120 - combatant.getTalentRank(TALENTS.DEATHS_MESSENGER_TALENT) * 30,
},
{
spell: TALENTS.BLOOD_TAP_TALENT.id,
Expand Down Expand Up @@ -287,7 +287,15 @@ class Abilities extends CoreAbilities {
},
timelineSortIndex: 10,
},

{
spell: TALENTS.REAPERS_MARK_TALENT.id,
category: SPELL_CATEGORY.ROTATIONAL,
enabled: combatant.hasTalent(TALENTS.REAPERS_MARK_TALENT),
cooldown: 45 - combatant.getTalentRank(TALENTS.SWIFT_END_TALENT) * 15,
gcd: {
base: 1500,
},
},
{
spell: TALENTS.BONESTORM_TALENT.id,
category: SPELL_CATEGORY.COOLDOWNS,
Expand Down
299 changes: 0 additions & 299 deletions src/analysis/retail/deathknight/blood/modules/features/AplCheck.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,16 @@ class MarrowrendUsage extends Analyzer {
}

onCast(event: CastEvent) {
// don't count exterminate casts. you're not really casting MR, you're casting exterminate
const exterminateCast =
this.selectedCombatant.hasBuff(SPELLS.EXTERMINATE_BUFF_1) ||
this.selectedCombatant.hasBuff(SPELLS.EXTERMINATE_BUFF_2);
//don't add to wasted casts if MR casts was at ~6sec left on BS duration
const durationLeft = BS_DURATION - (event.timestamp - this.lastMarrowrendCast) / 1000;

if (durationLeft <= REFRESH_AT_SECONDS) {
this.refreshMRCasts += 1;
} else {
} else if (!exterminateCast) {
const boneShieldStacks = this.currentBoneShieldStacks - this.currentBoneShieldBuffer;
let badCast = '';

Expand Down
Loading

0 comments on commit 802628d

Please sign in to comment.