Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dummy pr for xeph #1

Closed
wants to merge 49 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
e4d1b6e
Update and rework Devastation AplCheck
Krealle Mar 16, 2024
ed35f0b
Add living flame to EssenceBurstNormalizer
Krealle Mar 16, 2024
6ae32fe
Cleanup buffs
Krealle Mar 16, 2024
2c4b932
Add Nymue to Channeling normalizer
Krealle Mar 16, 2024
376641f
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
Krealle Mar 16, 2024
c3e46de
split living flame filler up
Krealle Mar 16, 2024
cb515da
adding typing
Krealle Mar 16, 2024
fb3ffff
simplify talentCheck and add some comments
Krealle Mar 16, 2024
905681e
more typing
Krealle Mar 16, 2024
194d92d
changelogs
Krealle Mar 16, 2024
5cb6e00
add missing comment
Krealle Mar 16, 2024
35e3b4a
rename spells to rules for better consistency
Krealle Mar 16, 2024
10ff857
rename AplCheck file so its more consistent with other analyzers
Krealle Mar 16, 2024
fa2919e
Update hasResource cnd to allow for setting initial resources
Krealle Mar 17, 2024
12aa20a
Update debuffMissing cnd to allow for custom fallback when no target …
Krealle Mar 17, 2024
a771307
move standardEmpowerConditional to conditions file
Krealle Mar 17, 2024
2dcecab
add range to spells to fix inconsistencies with APL range check
Krealle Mar 17, 2024
2aafa26
Implement buffSoonPresent apl condition
Krealle Mar 17, 2024
9b9453e
Update apl rules
Krealle Mar 17, 2024
f5964d8
add buffSoonPresent to index.tsx
Krealle Mar 17, 2024
051b528
change magic number range to const surely we get more range soon copium
Krealle Mar 17, 2024
c76d340
update buffSoonPresent key
Krealle Mar 17, 2024
e00e662
Fix duplicate spell entry and add proper damage id for Nymue
Krealle Mar 17, 2024
76be5c5
Add PrePullCooldowns dep to Channeling normalizer
Krealle Mar 17, 2024
9589720
Implement prepull normalizer for living flame to handle specific scen…
Krealle Mar 17, 2024
1164314
changelog
Krealle Mar 17, 2024
a7e3fbe
add maximumLinks to BURNOUT_CONSUME castLink
Krealle Mar 17, 2024
54ab6de
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
Krealle Mar 18, 2024
994798f
Make overcap description generic
Krealle Mar 18, 2024
eb2026c
add some comments to the rules
Krealle Mar 18, 2024
937e2ef
use isFromBurnout
Krealle Mar 18, 2024
e6ba0fe
Fix APLCheck skipping chain casted abilities
Krealle Mar 18, 2024
10ff20c
Reverting some of the timeline changes to reduce scope of PR - moving…
Krealle Mar 19, 2024
4fa9536
changelog
Krealle Mar 19, 2024
f4fa34a
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
Krealle Mar 21, 2024
930fea7
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
Krealle Mar 27, 2024
2fe5fbd
update TIERS enum in Buffs to match new format
Krealle Mar 27, 2024
9d01fa2
add suggested docblock for buffSoonPresent
Krealle Mar 28, 2024
0c2639f
Merge branch 'dragonflight' of https://github.com/WoWAnalyzer/WoWAnal…
Krealle Apr 2, 2024
5a9a541
update pupil related links for aug
Krealle Apr 2, 2024
8461724
add EB_FROM_ARCANE_VIGOR castlink for deva
Krealle Apr 2, 2024
378c79b
rework of LeapingFlamesNormalizer
Krealle Apr 2, 2024
58b0af5
Reworked LeapingFlames
Krealle Apr 2, 2024
bbc7578
some minor changes
Krealle Apr 2, 2024
49e6d84
Merge branch 'dragonflight' of https://github.com/Krealle/WoWAnalyzer…
Krealle Apr 5, 2024
8c5f845
this is prolly just redundant
Krealle Apr 5, 2024
fd68cf7
Merge branch 'leaping-flames' of https://github.com/Krealle/WoWAnalyz…
Krealle Apr 5, 2024
8fb7b9d
broooooooooo
Krealle Apr 5, 2024
aa524ba
Merge branch 'leaping-flames' of https://github.com/Krealle/WoWAnalyz…
Krealle Apr 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,27 @@ import SPELLS from 'common/SPELLS/evoker';
import TALENTS from 'common/TALENTS/evoker';
import {
ApplyBuffEvent,
ApplyBuffStackEvent,
ApplyDebuffEvent,
CastEvent,
DamageEvent,
EmpowerEndEvent,
EventType,
GetRelatedEvent,
GetRelatedEvents,
HasRelatedEvent,
HasTarget,
RefreshBuffEvent,
RemoveDebuffEvent,
} from 'parser/core/Events';
import { Options } from 'parser/core/Module';
import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer';
import { encodeEventTargetString } from 'parser/shared/modules/Enemies';

/** So sometimes when Ebon Might should be extended
* it just kinda doesn't? This messes with our analysis so
* let's check if it failed to extend where it should
* See example of this here (upheavel should have extended but didnt):
* See example of this here (upheaval should have extended but didn't):
* https://www.warcraftlogs.com/reports/1JqKrX2vLxb6Zyp9/#fight=8&source=3&pins=2%24Off%24%23244F4B%24expression%24type%20%3D%20%22empowerend%22%20or%20type%3D%22removebuff%22&view=events&start=1402475&end=1408776
*/
export const FAILED_EXTENSION_LINK = 'failedExtensionLink';
Expand All @@ -30,7 +34,7 @@ export const BREATH_EBON_APPLY_LINK = 'breathEbonApplyLink';
export const EBON_MIGHT_BUFF_LINKS = 'ebonMightBuffLinks';
export const EBON_MIGHT_APPLY_REMOVE_LINK = 'ebonMightApplyRemoveLink';

export const ESSENCE_BURST_GENERATED = 'EssenceBurstGenerated';
export const EB_FROM_PRESCIENCE = 'ebFromPrescience';

export const BREATH_OF_EONS_CAST_DEBUFF_APPLY_LINK = 'breathOfEonsCastDebuffApplyLink';
export const BREATH_OF_EONS_CAST_BUFF_LINK = 'breathOfEonsCastBuffLink';
Expand Down Expand Up @@ -163,8 +167,15 @@ const EVENT_LINKS: EventLink[] = [
referencedEventId: SPELLS.LIVING_FLAME_DAMAGE.id,
referencedEventType: EventType.Damage,
anyTarget: true,
maximumLinks: 2,
maximumLinks: 1,
forwardBufferMs: PUPIL_OF_ALEXSTRASZA_BUFFER,
additionalCondition(linkingEvent, referencedEvent) {
// No targets so we can't be sure which hit is the correct one, so we just claim it
if (!HasTarget(linkingEvent) && !HasTarget(referencedEvent)) {
return true;
}
return encodeEventTargetString(linkingEvent) !== encodeEventTargetString(referencedEvent);
},
},
{
linkRelation: ERUPTION_CAST_DAM_LINK,
Expand All @@ -177,15 +188,16 @@ const EVENT_LINKS: EventLink[] = [
forwardBufferMs: CAST_BUFFER_MS,
},
{
linkRelation: ESSENCE_BURST_GENERATED,
reverseLinkRelation: ESSENCE_BURST_GENERATED,
linkRelation: EB_FROM_PRESCIENCE,
reverseLinkRelation: EB_FROM_PRESCIENCE,
linkingEventId: TALENTS.PRESCIENCE_TALENT.id,
linkingEventType: EventType.Cast,
referencedEventId: SPELLS.ESSENCE_BURST_AUGMENTATION_BUFF.id,
referencedEventType: [EventType.ApplyBuff, EventType.ApplyBuffStack],
referencedEventType: [EventType.ApplyBuff, EventType.ApplyBuffStack, EventType.RefreshBuff],
anyTarget: true,
forwardBufferMs: CAST_BUFFER_MS,
backwardBufferMs: CAST_BUFFER_MS,
maximumLinks: 1,
},
{
linkRelation: FAILED_EXTENSION_LINK,
Expand Down Expand Up @@ -239,9 +251,9 @@ const EVENT_LINKS: EventLink[] = [

class CastLinkNormalizer extends EventLinkNormalizer {
// This is set to lower priority than default since
// to create proper links on events fabcricated using PrePullCooldownsNormalizer
// to create proper links on events fabricated using PrePullCooldownsNormalizer
// We need to ensure this runs after the PrePullCooldownsNormalizer
// This is neccessary if we want BreathOfEons module to function properly
// This is necessary if we want BreathOfEons module to function properly
// With pre-pull casts of Breath of Eons
priority = 100;
constructor(options: Options) {
Expand Down Expand Up @@ -297,8 +309,8 @@ export function getEruptionDamageEvents(event: CastEvent): DamageEvent[] {
);
}

export function getPupilDamageEvents(event: CastEvent): DamageEvent[] {
return GetRelatedEvents(
export function getPupilDamageEvent(event: CastEvent): DamageEvent | undefined {
return GetRelatedEvent(
event,
PUPIL_OF_ALEXSTRASZA_LINK,
(e): e is DamageEvent => e.type === EventType.Damage,
Expand All @@ -318,7 +330,13 @@ export function ebonIsFromBreath(event: ApplyBuffEvent | CastEvent) {
}

export function generatedEssenceBurst(event: CastEvent) {
return HasRelatedEvent(event, ESSENCE_BURST_GENERATED);
const maybeGenerate = GetRelatedEvent(
event,
EB_FROM_PRESCIENCE,
(e): e is ApplyBuffEvent | ApplyBuffStackEvent =>
e.type === EventType.ApplyBuff || e.type === EventType.ApplyBuffStack,
);
return Boolean(maybeGenerate);
}

export function failedEbonMightExtension(event: CastEvent | EmpowerEndEvent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { formatNumber } from 'common/format';
import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer';
import ItemDamageDone from 'parser/ui/ItemDamageDone';
import Events, { CastEvent } from 'parser/core/Events';
import { getPupilDamageEvents } from '../normalizers/CastLinkNormalizer';
import { getPupilDamageEvent } from '../normalizers/CastLinkNormalizer';

import Statistic from 'parser/ui/Statistic';
import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY';
Expand All @@ -29,12 +29,12 @@ class PupilOfAlexstrasza extends Analyzer {
}

onCast(event: CastEvent) {
const damageEvents = getPupilDamageEvents(event);
if (damageEvents.length > 1) {
damageEvents.forEach((damEvent) => {
this.PupilOfAlexstraszaDamage += damEvent.amount + (damEvent.absorbed ?? 0);
});
const damageEvent = getPupilDamageEvent(event);
if (!damageEvent) {
return;
}

this.PupilOfAlexstraszaDamage += damageEvent.amount + (damageEvent.absorbed ?? 0);
}

statistic() {
Expand All @@ -45,12 +45,12 @@ class PupilOfAlexstrasza extends Analyzer {
category={STATISTIC_CATEGORY.TALENTS}
tooltip={
<>
<li>Damage: {formatNumber(this.PupilOfAlexstraszaDamage / 2)}</li>
<li>Damage: {formatNumber(this.PupilOfAlexstraszaDamage)}</li>
</>
}
>
<TalentSpellText talent={TALENTS.PUPIL_OF_ALEXSTRASZA_TALENT}>
<ItemDamageDone amount={this.PupilOfAlexstraszaDamage / 2} />
<ItemDamageDone amount={this.PupilOfAlexstraszaDamage} />
</TalentSpellText>
</Statistic>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export const SNAPFIRE_CONSUME = 'SnapfireConsumption';
export const IRIDESCENCE_RED_CONSUME = 'IridescentRedConsumption';
export const IRIDESCENCE_BLUE_CONSUME = 'IridescentBlueConsumption';
export const DISINTEGRATE_REMOVE_APPLY = 'DisintegrateRemoveApply';
export const EB_FROM_ARCANE_VIGOR = 'ebFromArcaneVigor';

const CAST_BUFFER_MS = 100;
const EVENT_LINKS: EventLink[] = [
Expand Down Expand Up @@ -114,6 +115,24 @@ const EVENT_LINKS: EventLink[] = [
referencedEventType: EventType.ApplyDebuff,
anyTarget: true,
},
{
linkRelation: EB_FROM_ARCANE_VIGOR,
reverseLinkRelation: EB_FROM_ARCANE_VIGOR,
linkingEventId: [SPELLS.SHATTERING_STAR.id],
linkingEventType: EventType.Cast,
referencedEventId: [
TALENTS_EVOKER.RUBY_ESSENCE_BURST_TALENT.id,
SPELLS.ESSENCE_BURST_DEV_BUFF.id,
],
referencedEventType: [EventType.ApplyBuff, EventType.ApplyBuffStack, EventType.RefreshBuff],
anyTarget: true,
forwardBufferMs: CAST_BUFFER_MS,
backwardBufferMs: CAST_BUFFER_MS,
maximumLinks: 1,
isActive(c) {
return c.hasTalent(TALENTS_EVOKER.ARCANE_VIGOR_TALENT);
},
},
];

class CastLinkNormalizer extends EventLinkNormalizer {
Expand Down
8 changes: 3 additions & 5 deletions src/analysis/retail/evoker/shared/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
export {
default as LeapingFlamesNormalizer,
getLeapingDamageEvents,
getLeapingHealEvents,
generatedEssenceBurst,
getCastedGeneratedEssenceBurst,
eventGeneratedEB,
getGeneratedEBEvents,
isFromLeapingFlames,
getWastedEssenceBurst,
getWastedEBEvents,
} from './modules/normalizers/LeapingFlamesNormalizer';
export { default as LivingFlameNormalizer } from './modules/normalizers/LivingFlameNormalizer';
export { default as LeapingFlames } from './modules/talents/LeapingFlames';
Expand Down
Loading
Loading