forked from WoWAnalyzer/WoWAnalyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
…yzer into dragonflight
- Loading branch information
Showing
28 changed files
with
1,247 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,23 @@ | ||
export { | ||
default as LeapingFlamesNormalizer, | ||
default as LivingFlameNormalizer, | ||
getLeapingDamageEvents, | ||
getLeapingHealEvents, | ||
generatedEssenceBurst, | ||
getCastedGeneratedEssenceBurst, | ||
isFromLeapingFlames, | ||
getWastedEssenceBurst, | ||
} from './modules/normalizers/LeapingFlamesNormalizer'; | ||
export { default as LivingFlameNormalizer } from './modules/normalizers/LivingFlameNormalizer'; | ||
export { default as LeapingFlames } from './modules/talents/LeapingFlames'; | ||
export { default as LivingFlamePrePullNormalizer } from './modules/normalizers/LivingFlamePrePullNormalizer'; | ||
export { default as SpellEssenceCost } from './modules/core/essence/SpellEssenceCost'; | ||
export { default as EssenceTracker } from './modules/core/essence/EssenceTracker'; | ||
export { default as EssenceGraph } from './modules/core/essence/EssenceGraph'; | ||
export { default as SourceOfMagic } from './modules/talents/SourceOfMagic'; | ||
export { default as PotentMana } from './modules/talents/PotentMana'; | ||
export { default as ObsidianScales } from './modules/MajorDefensives/ObsidianScales'; | ||
export { default as DefensiveNormalizer } from './modules/normalizers/DefensiveNormalizer'; | ||
export { default as DefensiveCastLinkNormalizer } from './modules/normalizers/DefensiveCastLinkNormalizer'; | ||
export { default as TwinGuardian } from './modules/MajorDefensives/TwinGuardian'; | ||
export { default as RenewingBlaze } from './modules/MajorDefensives/RenewingBlaze'; | ||
export * from './constants'; |
76 changes: 76 additions & 0 deletions
76
src/analysis/retail/evoker/shared/modules/MajorDefensives/DefensivesGuide.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import { GoodColor, Section, SubSection, useAnalyzers } from 'interface/guide'; | ||
import ObsidianScales from './ObsidianScales'; | ||
import HideExplanationsToggle from 'interface/guide/components/HideExplanationsToggle'; | ||
import Explanation from 'interface/guide/components/Explanation'; | ||
import Timeline from 'interface/guide/components/MajorDefensives/Timeline'; | ||
import AllCooldownUsageList from 'interface/guide/components/MajorDefensives/AllCooldownUsagesList'; | ||
import { SpellLink, TooltipElement } from 'interface'; | ||
import { Highlight } from 'interface/Highlight'; | ||
import TALENTS from 'common/TALENTS/evoker'; | ||
import TwinGuardian from './TwinGuardian'; | ||
import RenewingBlaze from './RenewingBlaze'; | ||
|
||
const MajorDefensives = () => { | ||
const defensiveAnalyzers = [ObsidianScales, TwinGuardian, RenewingBlaze]; | ||
|
||
return ( | ||
<Section title="Defensives"> | ||
<HideExplanationsToggle id="hide-explanations-major-defensives" /> | ||
<Explanation> | ||
<p> | ||
Effectively using your major defensive cooldowns is an important aspect of your | ||
performance, as it will not only increase your own survivability, but also your entire | ||
raid by allowing healers to focus on keeping others alive. | ||
<br /> | ||
As an <span className="Evoker">Evoker</span> you have access to many short CD defensives | ||
such as <SpellLink spell={TALENTS.OBSIDIAN_SCALES_TALENT} />,{' '} | ||
<SpellLink spell={TALENTS.RENEWING_BLAZE_TALENT} />,{' '} | ||
<SpellLink spell={TALENTS.ZEPHYR_TALENT} /> and{' '} | ||
<SpellLink spell={TALENTS.TWIN_GUARDIAN_TALENT} />. | ||
</p> | ||
<p>There are two things you should look for in your cooldown usage:</p> | ||
<ol> | ||
<li> | ||
You should cover as many{' '} | ||
<TooltipElement | ||
content={ | ||
<> | ||
A <strong>damage spike</strong> is when you take much more damage than normal in a | ||
small amount of time. These are visible on the Timeline below as tall spikes. | ||
</> | ||
} | ||
> | ||
damage spikes | ||
</TooltipElement>{' '} | ||
as possible, and use any left over to cover periods of heavy, consistent damage. | ||
<br /> | ||
<small> | ||
In the damage chart below, a spike highlighted in{' '} | ||
<Highlight color={GoodColor} textColor="black"> | ||
green | ||
</Highlight>{' '} | ||
was covered by a defensive. | ||
</small> | ||
</li> | ||
<li> | ||
You should <em>use</em> your cooldowns. This may seem silly—but not using | ||
defensives is a common problem! For <span className="Evoker">Evokers</span>, it is also | ||
likely to be fatal, since most of your mitigation lies in your active cooldowns. | ||
<br /> | ||
<small> | ||
Below the damage chart, your cooldowns are shown. Large gaps may indicate that you | ||
could get more uses—but remember that covering spikes is more important than | ||
maximizing total casts! | ||
</small> | ||
</li> | ||
</ol> | ||
</Explanation> | ||
<SubSection title="Damage Taken"> | ||
<Timeline analyzers={useAnalyzers(defensiveAnalyzers)} /> | ||
</SubSection> | ||
<AllCooldownUsageList analyzers={useAnalyzers(defensiveAnalyzers)} /> | ||
</Section> | ||
); | ||
}; | ||
|
||
export default MajorDefensives; |
51 changes: 51 additions & 0 deletions
51
src/analysis/retail/evoker/shared/modules/MajorDefensives/ObsidianScales.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import { | ||
MajorDefensiveBuff, | ||
absoluteMitigation, | ||
buff, | ||
} from 'interface/guide/components/MajorDefensives/MajorDefensiveAnalyzer'; | ||
import { Options, SELECTED_PLAYER } from 'parser/core/Analyzer'; | ||
import TALENTS from 'common/TALENTS/evoker'; | ||
import Events, { DamageEvent } from 'parser/core/Events'; | ||
import { SpellLink } from 'interface'; | ||
import MajorDefensiveStatistic from 'interface/MajorDefensiveStatistic'; | ||
import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; | ||
|
||
// TWW ScaleCommander hero talent has a +5% buff so just preparing for that. | ||
const BASE_MITIGATION = 0.3; | ||
const HARDENED_SCALES_MITIGATION = 0.05; | ||
|
||
class ObsidianScales extends MajorDefensiveBuff { | ||
hasHardenedScales = false; | ||
mitPct: number = BASE_MITIGATION + (this.hasHardenedScales ? HARDENED_SCALES_MITIGATION : 0); | ||
|
||
constructor(options: Options) { | ||
super(TALENTS.OBSIDIAN_SCALES_TALENT, buff(TALENTS.OBSIDIAN_SCALES_TALENT), options); | ||
this.active = this.selectedCombatant.hasTalent(TALENTS.OBSIDIAN_SCALES_TALENT); | ||
|
||
this.addEventListener(Events.damage.to(SELECTED_PLAYER), this.recordDamage); | ||
} | ||
|
||
private recordDamage(event: DamageEvent) { | ||
if (!this.defensiveActive) { | ||
return; | ||
} | ||
this.recordMitigation({ | ||
event, | ||
mitigatedAmount: absoluteMitigation(event, this.mitPct), | ||
}); | ||
} | ||
|
||
description() { | ||
return ( | ||
<p> | ||
<SpellLink spell={TALENTS.OBSIDIAN_SCALES_TALENT} /> reduces the damage you take by 30%. | ||
</p> | ||
); | ||
} | ||
|
||
statistic() { | ||
return <MajorDefensiveStatistic analyzer={this} category={STATISTIC_CATEGORY.GENERAL} />; | ||
} | ||
} | ||
|
||
export default ObsidianScales; |
Oops, something went wrong.