From ebdd0682014c14ce966342d6689eaf9c62ef93cb Mon Sep 17 00:00:00 2001 From: Putro <29204244+Pewtro@users.noreply.github.com> Date: Fri, 3 May 2024 21:31:11 +0200 Subject: [PATCH] [Chore] Remove unused exports detected by Knip (#6734) --- src/CHANGELOG.tsx | 1 + .../modules/features/AlwaysBeCasting.tsx | 2 +- .../modules/normalizers/CastLinkNormalizer.ts | 43 +-- .../normalizers/SwiftmendNormalizer.ts | 2 +- .../shaman/shared/totems/totemConstants.ts | 4 +- .../modules/spells/BloodShield/normalizer.tsx | 2 +- .../retail/demonhunter/havoc/constants.ts | 18 - .../AcceleratingBladeExplanation.tsx | 4 +- .../normalizers/EssenceBreakNormalizer.ts | 8 - .../normalizers/UnboundChaosNormalizer.ts | 19 +- .../retail/demonhunter/shared/index.ts | 7 +- .../retail/demonhunter/vengeance/constants.ts | 22 -- .../DefensiveBuffLinkNormalizer.tsx | 10 +- .../SoulCleaveEventLinkNormalizer.ts | 16 +- .../retail/druid/balance/constants.ts | 6 +- .../balance/modules/spells/FriendOfTheFae.tsx | 2 +- .../balance/normalizers/CastLinkNormalizer.ts | 16 +- src/analysis/retail/druid/feral/constants.ts | 30 +- .../feral/normalizers/CastLinkNormalizer.ts | 14 +- .../FerociousBiteDrainLinkNormalizer.ts | 2 +- .../normalizers/SuddenAmbushLinkNormalizer.ts | 10 - .../modules/core/rage/RageTracker.tsx | 8 +- .../guardian/test-fixtures/SimpleFight.jsx | 4 +- .../druid/restoration/modules/core/Mastery.ts | 4 +- .../restoration/modules/spells/Innervate.tsx | 2 +- .../modules/spells/Tranquility.tsx | 2 +- .../normalizers/CastLinkNormalizer.ts | 14 +- .../normalizers/ClearcastingNormalizer.ts | 6 +- .../SoulOfTheForestLinkNormalizer.ts | 4 +- .../normalizers/SwiftmendNormalizer.ts | 2 +- .../druid/shared/spells/ConvokeSpirits.tsx | 16 +- .../breahtofeons/BreathOfEonsRotational.tsx | 2 +- .../modules/normalizers/CastLinkNormalizer.ts | 28 +- .../modules/normalizers/CastLinkNormalizer.ts | 4 +- .../retail/evoker/preservation/constants.ts | 1 - .../normalizers/CastLinkNormalizer.ts | 68 ++-- .../DefensiveCastLinkNormalizer.ts | 2 +- .../modules/normalizers/EmpowerNormalizer.ts | 2 +- .../retail/hunter/survival/constants.ts | 7 - .../arcane/normalizers/CastLinkNormalizer.ts | 33 +- .../fire/normalizers/CastLinkNormalizer.ts | 43 +-- .../retail/mage/fire/talents/SearingTouch.tsx | 2 +- .../frost/normalizers/CastLinkNormalizer.ts | 60 +-- .../normalizers/CometStormLinkNormalizer.ts | 10 +- src/analysis/retail/mage/shared/Abilities.tsx | 1 - src/analysis/retail/mage/shared/constants.tsx | 1 - .../retail/monk/brewmaster/constants.tsx | 8 - .../retail/monk/brewmaster/modules/charts.ts | 2 +- .../DefensiveBuffLinkNormalizer.tsx | 10 +- .../modules/core/StaggerLinkNormalizer.tsx | 4 +- .../modules/problems/PurifyingBrew/index.tsx | 6 +- .../modules/spells/BreathOfFire/normalizer.ts | 2 +- .../spells/CelestialBrew/normalizer.ts | 5 - .../modules/spells/HighTolerance.tsx | 16 - .../modules/spells/RushingJadeWind.tsx | 2 +- .../talents/BonedustBrew/normalizer.tsx | 2 +- .../talents/PressTheAdvantage/normalizer.ts | 14 +- .../brewmaster/normalizers/GiftOfTheOx.jsx | 2 +- .../normalizers/SpinningCraneKick.ts | 2 +- .../brewmaster/test-fixtures/SimpleFight.jsx | 12 +- .../retail/monk/mistweaver/constants.ts | 1 - .../dragonflight/T31HealingBreakdown.tsx | 2 +- .../normalizers/CastLinkNormalizer.ts | 68 ++-- .../retail/monk/windwalker/castDamage.ts | 11 - .../retail/monk/windwalker/constants.ts | 89 ----- .../holy/normalizers/CastLinkNormalizer.ts | 6 +- .../protection/modules/CastLinkNormalizer.ts | 16 - .../DefensiveBuffLinkNormalizer.tsx | 10 +- .../modules/talents/GiftOfTheGoldenValkyr.tsx | 2 +- .../modules/talents/ResoluteDefender.tsx | 2 +- .../retail/paladin/retribution/constants.tsx | 31 -- .../retail/paladin/shared/constants.ts | 4 +- .../priest/discipline/SpellCalculations.ts | 26 -- .../retail/priest/discipline/constants.ts | 50 --- .../normalizers/AtonementTracker.ts | 7 +- .../discipline/normalizers/DamageCastLink.ts | 4 - .../holy/normalizers/CastLinkNormalizer.ts | 17 +- .../retail/priest/shadow/constants.ts | 7 - .../shadow/modules/guide/ExtraComponents.tsx | 2 +- .../priest/shared/BoonOfTheAscended.tsx | 352 ------------------ .../retail/priest/shared/FaeGuardians.tsx | 160 -------- .../retail/priest/shared/UnholyNova.tsx | 185 --------- src/analysis/retail/priest/shared/index.ts | 3 - .../retail/rogue/assassination/constants.tsx | 49 +-- .../guide/ExperimentalKingsbaneContext.tsx | 2 +- .../normalizers/CastLinkNormalizer.ts | 14 +- .../normalizers/KingsbaneLinkNormalizer.ts | 23 +- .../outlaw/modules/core/RestlessBlades.ts | 4 +- .../outlaw/normalizers/CastLinkNormalizer.ts | 21 +- src/analysis/retail/rogue/shared/index.ts | 2 - .../shadowlands/conduits/WellPlacedSteel.tsx | 62 --- .../rogue/shared/talents/Reverberation.tsx | 41 -- .../talents/ThistleTeaCastLinkNormalizer.tsx | 21 +- .../retail/shaman/elemental/constants.tsx | 11 - .../retail/shaman/enhancement/constants.tsx | 4 - .../retail/shaman/restoration/constants.ts | 17 - .../normalizers/CastLinkNormalizer.ts | 26 -- .../retail/shaman/shared/constants.ts | 2 - src/analysis/retail/shaman/shared/index.ts | 3 - .../shadowlands/conduits/TumblingWaves.tsx | 30 -- .../legendaries/ElementalConduit.tsx | 60 --- .../shared/shadowlands/spells/ChainHarvest.ts | 45 --- .../shaman/shared/talents/ElementalOrbit.tsx | 2 +- .../shaman/shared/talents/SurgingShields.tsx | 2 +- .../demonology/modules/pets/CONSTANTS.ts | 4 +- .../shared/images/warlock_soulshard_bw.jpg | Bin 2093 -> 0 bytes src/analysis/retail/warlock/shared/index.ts | 4 - src/common/SPELLS/classic/index.ts | 12 - src/common/indexById.ts | 37 -- src/common/makeApiUrl.ts | 10 - src/common/regions.ts | 11 +- src/game/ROLES.ts | 41 -- src/game/VERSIONS.ts | 7 - src/game/classColor.ts | 12 - src/game/raids/index.ts | 7 +- src/game/shadowlands/COVENANTS.ts | 16 - src/interface/Ad.tsx | 4 +- src/interface/PerformanceStrong.tsx | 2 +- src/interface/PremiumPage.jsx | 2 +- src/interface/ReportSelecter.tsx | 8 +- .../guide/components/Explanation.tsx | 4 +- .../guide/components/ExplanationRow.tsx | 2 +- src/interface/guide/components/GuideDivs.tsx | 4 +- .../MajorDefensives/AllCooldownUsagesList.tsx | 4 +- .../components/MajorDefensives/Timeline.tsx | 8 +- .../components/PerformanceBoxRow/index.tsx | 2 +- src/interface/guide/index.tsx | 8 +- src/interface/reducers/combatants.ts | 2 +- src/interface/reducers/internetExplorer.ts | 2 +- src/interface/reducers/language.ts | 2 +- src/interface/reducers/openModals.ts | 2 +- src/interface/reducers/report.ts | 2 +- .../reportCodesIgnoredPreviousPatchWarning.ts | 3 +- src/interface/reducers/reportHistory.ts | 2 +- .../specsIgnoredNotSupportedWarning.ts | 3 +- src/interface/reducers/user.ts | 1 - .../report/CombatLogParserContext.tsx | 2 +- src/interface/report/ExpansionContext.tsx | 4 +- src/interface/report/context/PatchContext.tsx | 12 +- .../report/context/PlayerContext.tsx | 2 - .../report/context/ReportContext.tsx | 2 - .../report/hooks/useTimeEventFilter.ts | 2 +- .../selectors/url/report/getFightName.ts | 12 - .../selectors/url/report/getPlayerId.ts | 7 - src/interface/selectors/url/report/index.ts | 2 - src/interface/useTooltip.tsx | 10 +- .../modules/items/CombatPotionChecker.tsx | 2 +- src/parser/core/DotSnapshots.ts | 6 +- src/parser/core/EventCalculateLib.tsx | 61 --- src/parser/core/ParseResults.tsx | 4 +- src/parser/core/SpellUsage/core.tsx | 2 +- src/parser/core/tests/constants.ts | 2 +- src/parser/retail/armorMitigation.ts | 11 +- .../shared/metrics/apl/ChecklistRule.tsx | 2 +- src/parser/shared/metrics/apl/annotate.tsx | 2 +- .../metrics/apl/conditions/test-tools.ts | 2 +- src/parser/shared/metrics/apl/index.ts | 8 +- src/parser/shared/metrics/buffApplications.ts | 2 +- src/parser/shared/metrics/resourceGained.ts | 12 - src/parser/shared/metrics/resourceWasted.ts | 17 - src/parser/shared/modules/Enemies.ts | 5 - src/parser/shared/modules/Entities.ts | 2 +- src/parser/shared/modules/SpellUsable.ts | 2 +- src/parser/shared/modules/StatTracker.ts | 2 +- src/parser/shared/modules/features/STAT.tsx | 4 - .../shared/modules/helpers/Probability.tsx | 28 +- .../shared/modules/hit-tracking/utilities.ts | 2 +- src/parser/shared/normalizers/Channeling.ts | 12 +- src/parser/ui/PerformanceLabel.tsx | 2 +- 169 files changed, 317 insertions(+), 2305 deletions(-) delete mode 100644 src/analysis/retail/priest/shared/BoonOfTheAscended.tsx delete mode 100644 src/analysis/retail/priest/shared/FaeGuardians.tsx delete mode 100644 src/analysis/retail/priest/shared/UnholyNova.tsx delete mode 100644 src/analysis/retail/rogue/shared/shadowlands/conduits/WellPlacedSteel.tsx delete mode 100644 src/analysis/retail/rogue/shared/talents/Reverberation.tsx delete mode 100644 src/analysis/retail/shaman/shared/shadowlands/conduits/TumblingWaves.tsx delete mode 100644 src/analysis/retail/shaman/shared/shadowlands/legendaries/ElementalConduit.tsx delete mode 100644 src/analysis/retail/shaman/shared/shadowlands/spells/ChainHarvest.ts delete mode 100644 src/analysis/retail/warlock/shared/images/warlock_soulshard_bw.jpg delete mode 100644 src/interface/selectors/url/report/getFightName.ts diff --git a/src/CHANGELOG.tsx b/src/CHANGELOG.tsx index a943c755c1c..b3a4e4e3fa3 100644 --- a/src/CHANGELOG.tsx +++ b/src/CHANGELOG.tsx @@ -35,6 +35,7 @@ import SpellLink from 'interface/SpellLink'; // prettier-ignore export default [ + change(date(2024, 5, 3), 'Second pass at cleaning up dead code using knip', Putro), change(date(2024, 5, 2), 'Fix issue with boss detection', emallson), change(date(2024, 4, 26), 'Actually fix friendly/enemy determination', emallson), change(date(2024, 4, 22), 'Improve display of dense performance boxes', emallson), diff --git a/src/analysis/classic/druid/balance/modules/features/AlwaysBeCasting.tsx b/src/analysis/classic/druid/balance/modules/features/AlwaysBeCasting.tsx index 38346bc1c59..853d7ebb4f9 100644 --- a/src/analysis/classic/druid/balance/modules/features/AlwaysBeCasting.tsx +++ b/src/analysis/classic/druid/balance/modules/features/AlwaysBeCasting.tsx @@ -8,7 +8,7 @@ import Gauge from 'parser/ui/Gauge'; import Statistic from 'parser/ui/Statistic'; import STATISTIC_ORDER from 'parser/ui/STATISTIC_ORDER'; -export const instantCastSpells = [SPELLS.STARFALL, SPELLS.MOONFIRE, SPELLS.INSECT_SWARM]; +const instantCastSpells = [SPELLS.STARFALL, SPELLS.MOONFIRE, SPELLS.INSECT_SWARM]; export const displayInstantCastSpells = () => instantCastSpells.map((s, i) => ( diff --git a/src/analysis/classic/druid/restoration/modules/normalizers/CastLinkNormalizer.ts b/src/analysis/classic/druid/restoration/modules/normalizers/CastLinkNormalizer.ts index 6b1128e4d87..bd41fe6d91f 100644 --- a/src/analysis/classic/druid/restoration/modules/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/classic/druid/restoration/modules/normalizers/CastLinkNormalizer.ts @@ -8,7 +8,6 @@ import { GetRelatedEvents, HasRelatedEvent, HealEvent, - RefreshBuffEvent, RemoveBuffEvent, ResourceChangeEvent, } from 'parser/core/Events'; @@ -17,14 +16,14 @@ import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 65; const TRANQ_CHANNEL_BUFFER_MS = 10_000; -export const APPLIED_HEAL = 'AppliedHeal'; -export const FROM_HARDCAST = 'FromHardcast'; -export const FROM_EXPIRING_LIFEBLOOM = 'FromExpiringLifebloom'; -export const CAUSED_BLOOM = 'CausedBloom'; -export const CAUSED_TICK = 'CausedTick'; -export const REGEN_FROM_LIFEBLOOM = 'RegenFromLifebloom'; -export const CAUSED_REGEN = 'CausedRegen'; -export const FROM_CLEARCAST = 'FromClearcast'; +const APPLIED_HEAL = 'AppliedHeal'; +const FROM_HARDCAST = 'FromHardcast'; +const FROM_EXPIRING_LIFEBLOOM = 'FromExpiringLifebloom'; +const CAUSED_BLOOM = 'CausedBloom'; +const CAUSED_TICK = 'CausedTick'; +const REGEN_FROM_LIFEBLOOM = 'RegenFromLifebloom'; +const CAUSED_REGEN = 'CausedRegen'; +const FROM_CLEARCAST = 'FromClearcast'; const EVENT_LINKS: EventLink[] = [ { @@ -149,15 +148,6 @@ export function isFromHardcast(event: AbilityEvent): boolean { return HasRelatedEvent(event, FROM_HARDCAST); } -/** Returns the hardcast event that caused this buff or heal, if there is one */ -export function getHardcast(event: AbilityEvent): CastEvent | undefined { - return GetRelatedEvents( - event, - FROM_HARDCAST, - (e): e is CastEvent => e.type === EventType.Cast, - ).pop(); -} - /** Returns the buff application and direct heal events caused by the given hardcast */ export function getHeals(event: CastEvent): AnyEvent[] { return GetRelatedEvents(event, APPLIED_HEAL); @@ -170,23 +160,6 @@ export function getDirectHeal(event: CastEvent): HealEvent | undefined { .pop(); } -/** Returns true iff the given bloom heal can be linked to the refresh or removal of a lifebloom - * buff - used to differentiate from a Photosynthesis proc */ -export function isFromExpiringLifebloom(event: HealEvent): boolean { - return HasRelatedEvent(event, FROM_EXPIRING_LIFEBLOOM); -} - -/** Returns true iff the bloom expiration caused a bloom to proc */ -export function causedBloom(event: RemoveBuffEvent | RefreshBuffEvent): boolean { - return HasRelatedEvent(event, CAUSED_BLOOM); -} - -/** Gets the tranquility "tick cast" events caused by channeling the given Tranquility w/ - * cast ID `TRANQUILITY_CAST`. */ -export function getTranquilityTicks(event: CastEvent): AnyEvent[] { - return GetRelatedEvents(event, CAUSED_TICK); -} - export function getBloomCausingRegen(event: ResourceChangeEvent): RemoveBuffEvent | undefined { return GetRelatedEvents( event, diff --git a/src/analysis/classic/druid/restoration/modules/normalizers/SwiftmendNormalizer.ts b/src/analysis/classic/druid/restoration/modules/normalizers/SwiftmendNormalizer.ts index 17dea3ac702..31645e0266d 100644 --- a/src/analysis/classic/druid/restoration/modules/normalizers/SwiftmendNormalizer.ts +++ b/src/analysis/classic/druid/restoration/modules/normalizers/SwiftmendNormalizer.ts @@ -11,7 +11,7 @@ import { Options } from 'parser/core/Module'; const REMOVE_BUFFER_MS = 50; -export const CONSUMED_HOT = 'ConsumedHot'; +const CONSUMED_HOT = 'ConsumedHot'; const EVENT_LINKS: EventLink[] = [ { diff --git a/src/analysis/classic/shaman/shared/totems/totemConstants.ts b/src/analysis/classic/shaman/shared/totems/totemConstants.ts index 82b2eacb41f..54358a5900a 100644 --- a/src/analysis/classic/shaman/shared/totems/totemConstants.ts +++ b/src/analysis/classic/shaman/shared/totems/totemConstants.ts @@ -45,15 +45,13 @@ export const TOTEMS_BY_ELEMENT = { ], }; -export const All_TOTEMS = [ +const All_TOTEMS = [ ...TOTEMS_BY_ELEMENT[TotemElements.Fire], ...TOTEMS_BY_ELEMENT[TotemElements.Water], ...TOTEMS_BY_ELEMENT[TotemElements.Earth], ...TOTEMS_BY_ELEMENT[TotemElements.Air], ]; -export const TotemFilter = (element: TotemElements) => - TOTEMS_BY_ELEMENT[element].map((totemId) => ({ id: totemId })); export const AllTotemsFilter = () => All_TOTEMS.map((totemId) => ({ id: totemId })); export const TotemDurations = { diff --git a/src/analysis/retail/deathknight/blood/modules/spells/BloodShield/normalizer.tsx b/src/analysis/retail/deathknight/blood/modules/spells/BloodShield/normalizer.tsx index 9fa03b8ac1a..ad3ac16a398 100644 --- a/src/analysis/retail/deathknight/blood/modules/spells/BloodShield/normalizer.tsx +++ b/src/analysis/retail/deathknight/blood/modules/spells/BloodShield/normalizer.tsx @@ -3,7 +3,7 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { AbsorbedEvent, DamageEvent, EventType } from 'parser/core/Events'; -export const BLOOD_SHIELD_ABSORB = 'blood-shield-absorb'; +const BLOOD_SHIELD_ABSORB = 'blood-shield-absorb'; export const BLOOD_SHIELD_ABSORBED_HIT = 'blood-shield-absorbed-hit'; const absorbLink: EventLink = { diff --git a/src/analysis/retail/demonhunter/havoc/constants.ts b/src/analysis/retail/demonhunter/havoc/constants.ts index aba37c46094..4e34f4f1fd7 100644 --- a/src/analysis/retail/demonhunter/havoc/constants.ts +++ b/src/analysis/retail/demonhunter/havoc/constants.ts @@ -1,25 +1,7 @@ -export const CRITICAL_CHAOS_SCALING = [0, 0.25, 0.5]; - -export const FELFIRE_HEART_SCALING = [0, 1, 2]; - export const UNBOUND_CHAOS_SCALING = [0, 2, 4]; -export const BLIND_FURY_FURY_SCALING = [0, 20, 40]; - -export const BLIND_FURY_DURATION_SCALING = [0, 0.25, 0.5]; - -export const SERRATED_GLAIVE_SCALING = [0, 0.1, 0.2]; - -export const RELENTLESS_ONSLAUGHT_SCALING = [0, 0.06, 0.12]; - -export const KNOW_YOUR_ENEMY_SCALING = [0, 0.5, 1.0]; - export const CYCLE_OF_HATRED_SCALING = [0, 0.5, 1]; -export const SOULREND_SCALING = [0, 0.6, 1.2]; - export const GROWING_INFERNO_SCALING = [0, 0.08, 0.15]; -export const BURNING_WOUND_SCALING = [0, 0.4]; - export const MOMENTUM_SCALING = [0, 0.08]; diff --git a/src/analysis/retail/demonhunter/havoc/modules/spells/ThrowGlaive/AcceleratingBladeExplanation.tsx b/src/analysis/retail/demonhunter/havoc/modules/spells/ThrowGlaive/AcceleratingBladeExplanation.tsx index 9097eb069da..24eb06a393e 100644 --- a/src/analysis/retail/demonhunter/havoc/modules/spells/ThrowGlaive/AcceleratingBladeExplanation.tsx +++ b/src/analysis/retail/demonhunter/havoc/modules/spells/ThrowGlaive/AcceleratingBladeExplanation.tsx @@ -5,8 +5,8 @@ import { formatPercentage } from 'common/format'; import Tooltip from 'interface/Tooltip'; import InformationIcon from 'interface/icons/Information'; -export const SCALING_PER_TARGET_HIT = 0.3; -export const INITIAL_HIT_SCALING = 0.6; +const SCALING_PER_TARGET_HIT = 0.3; +const INITIAL_HIT_SCALING = 0.6; export const AcceleratingBladeExplanation = () => { const info = useInfo(); diff --git a/src/analysis/retail/demonhunter/havoc/normalizers/EssenceBreakNormalizer.ts b/src/analysis/retail/demonhunter/havoc/normalizers/EssenceBreakNormalizer.ts index 6ade0cc7286..ff5623b9c47 100644 --- a/src/analysis/retail/demonhunter/havoc/normalizers/EssenceBreakNormalizer.ts +++ b/src/analysis/retail/demonhunter/havoc/normalizers/EssenceBreakNormalizer.ts @@ -71,11 +71,3 @@ export function getPreviousVengefulRetreat(event: CastEvent): CastEvent | undefi (e): e is CastEvent => e.type === EventType.Cast, ).find(Boolean); } - -export function getPreviousEyeBeam(event: CastEvent): CastEvent | undefined { - return GetRelatedEvents( - event, - ESSENCE_BREAK_AFTER_EYE_BEAM, - (e): e is CastEvent => e.type === EventType.Cast, - ).find(Boolean); -} diff --git a/src/analysis/retail/demonhunter/havoc/normalizers/UnboundChaosNormalizer.ts b/src/analysis/retail/demonhunter/havoc/normalizers/UnboundChaosNormalizer.ts index 110321de07d..a80f7923922 100644 --- a/src/analysis/retail/demonhunter/havoc/normalizers/UnboundChaosNormalizer.ts +++ b/src/analysis/retail/demonhunter/havoc/normalizers/UnboundChaosNormalizer.ts @@ -1,12 +1,5 @@ import SPELLS from 'common/SPELLS/demonhunter'; -import { - ApplyBuffEvent, - CastEvent, - EventType, - GetRelatedEvent, - RefreshBuffEvent, - RemoveBuffEvent, -} from 'parser/core/Events'; +import { CastEvent, EventType, GetRelatedEvent, RemoveBuffEvent } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import TALENTS from 'common/TALENTS/demonhunter'; @@ -47,16 +40,6 @@ export default class UnboundChaosNormalizer extends EventLinkNormalizer { } } -export function getUnboundChaosApplication( - event: ApplyBuffEvent | RefreshBuffEvent, -): CastEvent | undefined { - return GetRelatedEvent( - event, - UNBOUND_CHAOS_APPLICATION, - (e): e is CastEvent => e.type === EventType.Cast, - ); -} - export function getUnboundChaosConsumption(event: RemoveBuffEvent): CastEvent | undefined { return GetRelatedEvent( event, diff --git a/src/analysis/retail/demonhunter/shared/index.ts b/src/analysis/retail/demonhunter/shared/index.ts index 40b998e8c69..c529fe0daa6 100644 --- a/src/analysis/retail/demonhunter/shared/index.ts +++ b/src/analysis/retail/demonhunter/shared/index.ts @@ -10,10 +10,7 @@ export { default as SwallowedAnger } from './modules/talents/SwallowedAnger'; export { default as FlamesOfFury } from './modules/talents/FlamesOfFury'; export { default as DisruptingFury } from './modules/talents/DisruptingFury'; export { default as DemonSoulBuff } from './modules/spells/DemonSoulBuff'; -export { default as TheHuntNormalizer, getChargeImpact } from './normalizers/TheHuntNormalizer'; -export { - default as SigilOfFlameNormalizer, - getSigilOfFlameDamages, -} from './normalizers/SigilOfFlameNormalizer'; +export { default as TheHuntNormalizer } from './normalizers/TheHuntNormalizer'; +export { default as SigilOfFlameNormalizer } from './normalizers/SigilOfFlameNormalizer'; export { default as SigilOfFlame } from './modules/spells/SigilOfFlame'; export * from './constants'; diff --git a/src/analysis/retail/demonhunter/vengeance/constants.ts b/src/analysis/retail/demonhunter/vengeance/constants.ts index 9432a4a7fa4..1f57ea748d8 100644 --- a/src/analysis/retail/demonhunter/vengeance/constants.ts +++ b/src/analysis/retail/demonhunter/vengeance/constants.ts @@ -1,27 +1,5 @@ export const EXTENDED_SPIKES_SCALING = [0, 2]; -export const CHAINS_OF_ANGER_SCALING = [0, 2]; - -export const AGONIZING_FLAMES_SPEED_SCALING = [0, 0.2]; - -export const AGONIZING_FLAMES_DURATION_SCALING = [0, 0.5]; - -export const PAINBRINGER_SCALING = [0, 0.01, 0.02]; - -export const DARKGLARE_BOON_CDR_SCALING = [0, 40]; - -export const DARKGLARE_BOON_FURY_REFUND_SCALING = [0, 40]; - -export const CYCLE_OF_BINDING_SCALING = [0, 3]; - -export const VULNERABILITY_SCALING = [0, 0.02, 0.04]; - -export const FEED_THE_DEMON_SCALING = [0, 0.25, 0.5]; - -export const CHARRED_FLESH_SCALING = [0, 0.25, 0.5]; - -export const FIERY_DEMISE_SCALING = [0, 0.25, 0.5]; - export const PERFECTLY_BALANCED_GLAIVE_SCALING = [0, 6]; export const METEORIC_STRIKES_SCALING = [0, 10]; diff --git a/src/analysis/retail/demonhunter/vengeance/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx b/src/analysis/retail/demonhunter/vengeance/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx index 18aa131e827..6e3055fd59c 100644 --- a/src/analysis/retail/demonhunter/vengeance/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx +++ b/src/analysis/retail/demonhunter/vengeance/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx @@ -1,6 +1,6 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { ApplyBuffEvent, EventType, GetRelatedEvent, RemoveBuffEvent } from 'parser/core/Events'; +import { EventType } from 'parser/core/Events'; import { buffId, MAJOR_DEFENSIVES } from './DefensiveBuffs'; import { isTalent } from 'common/TALENTS/types'; @@ -27,11 +27,3 @@ export default class DefensiveBuffLinkNormalizer extends EventLinkNormalizer { super(options, links); } } - -export function defensiveApplication(event: RemoveBuffEvent): ApplyBuffEvent | undefined { - return GetRelatedEvent(event, reverseRelation); -} - -export function defensiveExpiration(event: ApplyBuffEvent): RemoveBuffEvent | undefined { - return GetRelatedEvent(event, relation); -} diff --git a/src/analysis/retail/demonhunter/vengeance/normalizers/SoulCleaveEventLinkNormalizer.ts b/src/analysis/retail/demonhunter/vengeance/normalizers/SoulCleaveEventLinkNormalizer.ts index 036d4296b69..2e489662d29 100644 --- a/src/analysis/retail/demonhunter/vengeance/normalizers/SoulCleaveEventLinkNormalizer.ts +++ b/src/analysis/retail/demonhunter/vengeance/normalizers/SoulCleaveEventLinkNormalizer.ts @@ -1,11 +1,5 @@ import SPELLS from 'common/SPELLS/demonhunter'; -import { - CastEvent, - DamageEvent, - EventType, - GetRelatedEvents, - RemoveBuffStackEvent, -} from 'parser/core/Events'; +import { CastEvent, DamageEvent, EventType, GetRelatedEvents } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; @@ -47,14 +41,6 @@ export default class SoulCleaveEventLinkNormalizer extends EventLinkNormalizer { } } -export function getSoulCleaveSoulConsumptions(event: CastEvent): RemoveBuffStackEvent[] { - return GetRelatedEvents( - event, - SOUL_CLEAVE_SOUL_CONSUME, - (e): e is RemoveBuffStackEvent => e.type === EventType.RemoveBuffStack, - ); -} - export function getSoulCleaveDamages(event: CastEvent): DamageEvent[] { return GetRelatedEvents( event, diff --git a/src/analysis/retail/druid/balance/constants.ts b/src/analysis/retail/druid/balance/constants.ts index f05687100f5..8e2011d3fb5 100644 --- a/src/analysis/retail/druid/balance/constants.ts +++ b/src/analysis/retail/druid/balance/constants.ts @@ -32,8 +32,8 @@ export function cdSpell(c: Combatant): Spell { : SPELLS.CELESTIAL_ALIGNMENT; } -export const CA_DURATION = 20_000; -export const INCARN_DURATION = 30_000; +const CA_DURATION = 20_000; +const INCARN_DURATION = 30_000; /** Returns the duration of Balance Druid's primary cooldown spell, which changes based on talent */ export function cdDuration(c: Combatant): number { return c.hasTalent(TALENTS_DRUID.INCARNATION_CHOSEN_OF_ELUNE_TALENT) @@ -57,8 +57,6 @@ export function currentEclipse(c: Combatant): 'none' | 'solar' | 'lunar' | 'both } export const GUIDE_CORE_EXPLANATION_PERCENT = 40; -export const STARSURGE_ELUNES_GUIDANCE_DISCOUNT = 8; -export const STARFALL_ELUNES_GUIDANCE_DISCOUNT = 10; export const STARSURGE_BASE_COST = 40; export const STARFALL_BASE_COST = 50; export const ASTRAL_POWER_SCALE_FACTOR = 0.1; // in events all values are x10 diff --git a/src/analysis/retail/druid/balance/modules/spells/FriendOfTheFae.tsx b/src/analysis/retail/druid/balance/modules/spells/FriendOfTheFae.tsx index 8581a4e2ac5..a7a03fd1a90 100644 --- a/src/analysis/retail/druid/balance/modules/spells/FriendOfTheFae.tsx +++ b/src/analysis/retail/druid/balance/modules/spells/FriendOfTheFae.tsx @@ -11,7 +11,7 @@ import SPELLS from 'common/SPELLS'; import UptimeIcon from 'interface/icons/Uptime'; import { WHITELIST_ABILITIES } from '../../constants'; -export const FOTF_DAMAGE_INCREASE = 0.1; +const FOTF_DAMAGE_INCREASE = 0.1; class FriendOfTheFae extends Analyzer { totalAddedDamage = 0; diff --git a/src/analysis/retail/druid/balance/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/druid/balance/normalizers/CastLinkNormalizer.ts index f868d37f207..cf0dde6e852 100644 --- a/src/analysis/retail/druid/balance/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/druid/balance/normalizers/CastLinkNormalizer.ts @@ -1,18 +1,12 @@ import SPELLS from 'common/SPELLS'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { - CastEvent, - DamageEvent, - EventType, - GetRelatedEvents, - HasRelatedEvent, -} from 'parser/core/Events'; +import { CastEvent, EventType, GetRelatedEvents } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 100; -export const FROM_HARDCAST = 'FromHardcast'; -export const HITS_TARGET = 'HitsTarget'; +const FROM_HARDCAST = 'FromHardcast'; +const HITS_TARGET = 'HitsTarget'; const EVENT_LINKS: EventLink[] = [ { @@ -39,10 +33,6 @@ class CastLinkNormalizer extends EventLinkNormalizer { } } -export function isFromHardcast(event: DamageEvent): boolean { - return HasRelatedEvent(event, FROM_HARDCAST); -} - export function hardcastTargetsHit(event: CastEvent): number { return GetRelatedEvents(event, HITS_TARGET).length; } diff --git a/src/analysis/retail/druid/feral/constants.ts b/src/analysis/retail/druid/feral/constants.ts index cc603c27439..aecaaf4b8b7 100644 --- a/src/analysis/retail/druid/feral/constants.ts +++ b/src/analysis/retail/druid/feral/constants.ts @@ -83,7 +83,7 @@ export const FEROCIOUS_BITE_MAX_DRAIN = 25; // DOT DURATIONS // -export const CIRCLE_DOT_DURATION_MULT = 0.8; +const CIRCLE_DOT_DURATION_MULT = 0.8; /** Gets the multiplier to apply to a DoT's duration depending on if player is using * the 'Circle of Life and Death' talent */ function getCircleMult(c: Combatant): number { @@ -92,30 +92,30 @@ function getCircleMult(c: Combatant): number { : 1; } -export const VEINRIPPER_DURATION_MULT = 1.25; +const VEINRIPPER_DURATION_MULT = 1.25; /** Gets the multiplier to apply to Rip / Rake / Thrash's duration depending on if player is using * the 'Veinripper' talent */ function getVeinripperMult(c: Combatant): number { return c.hasTalent(TALENTS_DRUID.VEINRIPPER_TALENT) ? VEINRIPPER_DURATION_MULT : 1; } -export const RAKE_BASE_DURATION = 15000; +const RAKE_BASE_DURATION = 15000; export function getRakeDuration(c: Combatant): number { return RAKE_BASE_DURATION * getCircleMult(c) * getVeinripperMult(c); } -export const MOONFIRE_BASE_DURATION = 16000; +const MOONFIRE_BASE_DURATION = 16000; export function getMoonfireDuration(c: Combatant): number { return MOONFIRE_BASE_DURATION * getCircleMult(c); } -export const THRASH_FERAL_BASE_DURATION = 15000; +const THRASH_FERAL_BASE_DURATION = 15000; export function getThrashFeralDuration(c: Combatant): number { return THRASH_FERAL_BASE_DURATION * getCircleMult(c) * getVeinripperMult(c); } export const RIP_DURATION_BASE = 4000; -export const RIP_DURATION_PER_CP = 4000; +const RIP_DURATION_PER_CP = 4000; export function getRipDuration(cast: CastEvent, c: Combatant): number { return ( (RIP_DURATION_BASE + @@ -125,8 +125,8 @@ export function getRipDuration(cast: CastEvent, c: Combatant): number { ); } -export const PRIMAL_WRATH_RIP_DURATION_BASE = 2000; -export const PRIMAL_WRATH_RIP_DURATION_PER_CP = 2000; +const PRIMAL_WRATH_RIP_DURATION_BASE = 2000; +const PRIMAL_WRATH_RIP_DURATION_PER_CP = 2000; export function getPrimalWrathDuration(cast: CastEvent, c: Combatant): number { return ( (PRIMAL_WRATH_RIP_DURATION_BASE + @@ -147,7 +147,7 @@ export function getRipFullDuration(c: Combatant): number { // export const BASE_TIGERS_FURY_DAMAGE_BONUS = 0.15; -export const CARNIVOROUS_INSTINCT_DAMAGE_BONUS = 0.06; +const CARNIVOROUS_INSTINCT_DAMAGE_BONUS = 0.06; export function getTigersFuryDamageBonus(c: Combatant): number { return ( BASE_TIGERS_FURY_DAMAGE_BONUS + @@ -157,7 +157,6 @@ export function getTigersFuryDamageBonus(c: Combatant): number { export const BLOODTALONS_DAMAGE_BONUS = 0.25; export const LIONS_STRENGTH_DAMAGE_BONUS = 0.15; -export const MOMENT_OF_CLARITY_DAMAGE_BONUS = 0.15; export const PROWL_RAKE_DAMAGE_BONUS = 0.6; /** Max time left on a DoT for us to not yell if snapshot is downgraded */ @@ -179,13 +178,6 @@ export function cdSpell(c: Combatant): Spell { : SPELLS.BERSERK; } -/** Returns the Feral Druid's direct damage AoE builder, which changes based on talent */ -export function directAoeBuilder(c: Combatant): Spell { - return c.hasTalent(TALENTS_DRUID.BRUTAL_SLASH_TALENT) - ? TALENTS_DRUID.BRUTAL_SLASH_TALENT - : SPELLS.SWIPE_CAT; -} - /////////////////////////////////////////////////////////////////////////////// // MISC // @@ -226,8 +218,8 @@ export function getFerociousBiteMaxDrain(c: Combatant) { ); } -export const TIGERS_FURY_BASE_DURATION = 10_000; -export const PREDATOR_DURATION_BOOST = 5_000; +const TIGERS_FURY_BASE_DURATION = 10_000; +const PREDATOR_DURATION_BOOST = 5_000; export function getTigersFuryDuration(c: Combatant) { return ( diff --git a/src/analysis/retail/druid/feral/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/druid/feral/normalizers/CastLinkNormalizer.ts index 808fc0ec056..24933b3d4be 100644 --- a/src/analysis/retail/druid/feral/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/druid/feral/normalizers/CastLinkNormalizer.ts @@ -19,10 +19,10 @@ import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 200; const AFTER_CAST_BUFFER_MS = 300; // parries can be delayed even more... -export const FROM_HARDCAST = 'FromHardcast'; -export const FROM_DOUBLE_CLAWED_RAKE = 'FromDoubleClawedRake'; -export const FROM_PRIMAL_WRATH = 'FromPrimalWrath'; -export const HIT_TARGET = 'HitTarget'; +const FROM_HARDCAST = 'FromHardcast'; +const FROM_DOUBLE_CLAWED_RAKE = 'FromDoubleClawedRake'; +const FROM_PRIMAL_WRATH = 'FromPrimalWrath'; +const HIT_TARGET = 'HitTarget'; const EVENT_LINKS: EventLink[] = [ { @@ -175,12 +175,6 @@ export function getHardcast( return GetRelatedEvent(event, FROM_HARDCAST); } -// TODO get hardcast energy / cp? - -export function isFromPrimalWrath(event: ApplyDebuffEvent | RefreshDebuffEvent): boolean { - return HasRelatedEvent(event, FROM_PRIMAL_WRATH); -} - export function getPrimalWrath( event: ApplyDebuffEvent | RefreshDebuffEvent | DamageEvent, ): CastEvent | undefined { diff --git a/src/analysis/retail/druid/feral/normalizers/FerociousBiteDrainLinkNormalizer.ts b/src/analysis/retail/druid/feral/normalizers/FerociousBiteDrainLinkNormalizer.ts index 88a291094c9..128ef1dc31a 100644 --- a/src/analysis/retail/druid/feral/normalizers/FerociousBiteDrainLinkNormalizer.ts +++ b/src/analysis/retail/druid/feral/normalizers/FerociousBiteDrainLinkNormalizer.ts @@ -3,7 +3,7 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer' import { CastEvent, DrainEvent, EventType, GetRelatedEvent } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; -export const ADDITIONAL_ENERGY_USED = 'AdditionalEnergyUsed'; +const ADDITIONAL_ENERGY_USED = 'AdditionalEnergyUsed'; const BUFFER_MS = 50; diff --git a/src/analysis/retail/druid/feral/normalizers/SuddenAmbushLinkNormalizer.ts b/src/analysis/retail/druid/feral/normalizers/SuddenAmbushLinkNormalizer.ts index 8c42a37ff67..90378802b7d 100644 --- a/src/analysis/retail/druid/feral/normalizers/SuddenAmbushLinkNormalizer.ts +++ b/src/analysis/retail/druid/feral/normalizers/SuddenAmbushLinkNormalizer.ts @@ -3,7 +3,6 @@ import { Options } from 'parser/core/Module'; import SPELLS from 'common/SPELLS'; import { ApplyDebuffEvent, - BuffEvent, DamageEvent, EventType, GetRelatedEvents, @@ -54,15 +53,6 @@ class SuddenAmbushLinkNormalizer extends EventLinkNormalizer { export default SuddenAmbushLinkNormalizer; -export function getSuddenAmbushBoostedBleeds(event: RemoveBuffEvent): BuffEvent[] { - return GetRelatedEvents( - event, - BOOSTED_BLEED, - (e): e is BuffEvent => - e.type === EventType.ApplyDebuff || e.type === EventType.RefreshDebuff, - ); -} - export function getSuddenAmbushBoostedDamage(event: RemoveBuffEvent): DamageEvent[] { return GetRelatedEvents( event, diff --git a/src/analysis/retail/druid/guardian/modules/core/rage/RageTracker.tsx b/src/analysis/retail/druid/guardian/modules/core/rage/RageTracker.tsx index f61ecad5176..df42f6809a4 100644 --- a/src/analysis/retail/druid/guardian/modules/core/rage/RageTracker.tsx +++ b/src/analysis/retail/druid/guardian/modules/core/rage/RageTracker.tsx @@ -9,12 +9,12 @@ import { TALENTS_DRUID } from 'common/TALENTS'; /** Internally, all rage values are out of 1000, but player facing they are out of 100 */ export const RAGE_SCALE_FACTOR = 0.1; -export const BERSERK_UA_COST_MULT = 0.5; -export const BERSERK_PERSISTENCE_COST_MULT = 0.5; -export const GORY_FUR_COST_MULT = 0.75; +const BERSERK_UA_COST_MULT = 0.5; +const BERSERK_PERSISTENCE_COST_MULT = 0.5; +const GORY_FUR_COST_MULT = 0.75; // buffer after expiration to make sure reduction is cost -export const GORY_FUR_BUFFER = 30; +const GORY_FUR_BUFFER = 30; export const PERFECT_RAGE_WASTED = 0.05; export const GOOD_RAGE_WASTED = 0.1; diff --git a/src/analysis/retail/druid/guardian/test-fixtures/SimpleFight.jsx b/src/analysis/retail/druid/guardian/test-fixtures/SimpleFight.jsx index d692df8829b..ce63422ba03 100644 --- a/src/analysis/retail/druid/guardian/test-fixtures/SimpleFight.jsx +++ b/src/analysis/retail/druid/guardian/test-fixtures/SimpleFight.jsx @@ -1,8 +1,6 @@ import SPELLS from 'common/SPELLS'; import { EventType } from 'parser/core/Events'; -export const FIGHT_END = 15000; - const thisPlayer = 1; const enemy = 2; @@ -177,7 +175,7 @@ export const buffsRefreshed = [ }, ]; -export const buffsRemoved = [ +const buffsRemoved = [ { type: EventType.RemoveBuff, sourceid: thisPlayer, diff --git a/src/analysis/retail/druid/restoration/modules/core/Mastery.ts b/src/analysis/retail/druid/restoration/modules/core/Mastery.ts index cbb886d32e8..fa9a1e291e3 100644 --- a/src/analysis/retail/druid/restoration/modules/core/Mastery.ts +++ b/src/analysis/retail/druid/restoration/modules/core/Mastery.ts @@ -325,7 +325,7 @@ type MasteryAttributionsBySpell = { [key: number]: MasterySpellAttribution }; /** * A HoT's mastery attribution. */ -export class MasterySpellAttribution { +class MasterySpellAttribution { direct: number; // the direct healing from the HoT, should be same as entry in WCL. Includes benefit from own stack of Mastery. mastery: { [key: number]: number }; // a mapping from spell ID to how much this HoT boosted it via Mastery. @@ -351,7 +351,7 @@ type MasteryAttributionsByBuff = { [key: number]: MasteryBuffAttribution }; /** * A Buff's mastery attribution. */ -export class MasteryBuffAttribution { +class MasteryBuffAttribution { attributable: number; // the amount of healing attributable to the buff buffAmount: number; // the amount of mastery rating the buff provides diff --git a/src/analysis/retail/druid/restoration/modules/spells/Innervate.tsx b/src/analysis/retail/druid/restoration/modules/spells/Innervate.tsx index 8168f12460c..03d94814cb9 100644 --- a/src/analysis/retail/druid/restoration/modules/spells/Innervate.tsx +++ b/src/analysis/retail/druid/restoration/modules/spells/Innervate.tsx @@ -19,7 +19,7 @@ import { explanationAndDataSubsection } from 'interface/guide/components/Explana import { abilityToSpell } from 'common/abilityToSpell'; // TODO double check this is a reasonable number -export const INNERVATE_MANA_REQUIRED = 7000; +const INNERVATE_MANA_REQUIRED = 7000; class Innervate extends Analyzer { casts = 0; diff --git a/src/analysis/retail/druid/restoration/modules/spells/Tranquility.tsx b/src/analysis/retail/druid/restoration/modules/spells/Tranquility.tsx index 81748635e8e..42a4634fec1 100644 --- a/src/analysis/retail/druid/restoration/modules/spells/Tranquility.tsx +++ b/src/analysis/retail/druid/restoration/modules/spells/Tranquility.tsx @@ -15,7 +15,7 @@ import HotTrackerRestoDruid from 'analysis/retail/druid/restoration/modules/core import { explanationAndDataSubsection } from 'interface/guide/components/ExplanationRow'; import { QualitativePerformance } from 'parser/ui/QualitativePerformance'; -export const MAX_TRANQ_TICKS = 5; +const MAX_TRANQ_TICKS = 5; /** * Tracks stats relating to Tranquility diff --git a/src/analysis/retail/druid/restoration/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/druid/restoration/normalizers/CastLinkNormalizer.ts index 78c50a9f69f..b6313ebe439 100644 --- a/src/analysis/retail/druid/restoration/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/druid/restoration/normalizers/CastLinkNormalizer.ts @@ -18,13 +18,13 @@ import { TALENTS_DRUID } from 'common/TALENTS'; const CAST_BUFFER_MS = 65; const TRANQ_CHANNEL_BUFFER_MS = 10_000; -export const APPLIED_HEAL = 'AppliedHeal'; -export const FROM_HARDCAST = 'FromHardcast'; -export const FROM_OVERGROWTH = 'FromOvergrowth'; -export const FROM_EXPIRING_LIFEBLOOM = 'FromExpiringLifebloom'; -export const CAUSED_BLOOM = 'CausedBloom'; -export const CAUSED_TICK = 'CausedTick'; -export const CAUSED_SUMMON = 'CausedSummon'; +const APPLIED_HEAL = 'AppliedHeal'; +const FROM_HARDCAST = 'FromHardcast'; +const FROM_OVERGROWTH = 'FromOvergrowth'; +const FROM_EXPIRING_LIFEBLOOM = 'FromExpiringLifebloom'; +const CAUSED_BLOOM = 'CausedBloom'; +const CAUSED_TICK = 'CausedTick'; +const CAUSED_SUMMON = 'CausedSummon'; const EVENT_LINKS: EventLink[] = [ { diff --git a/src/analysis/retail/druid/restoration/normalizers/ClearcastingNormalizer.ts b/src/analysis/retail/druid/restoration/normalizers/ClearcastingNormalizer.ts index dc6035ed105..f46f9a07b20 100644 --- a/src/analysis/retail/druid/restoration/normalizers/ClearcastingNormalizer.ts +++ b/src/analysis/retail/druid/restoration/normalizers/ClearcastingNormalizer.ts @@ -1,5 +1,5 @@ import SPELLS from 'common/SPELLS'; -import { CastEvent, EventType, HasRelatedEvent, RemoveBuffEvent } from 'parser/core/Events'; +import { CastEvent, EventType, HasRelatedEvent } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; @@ -28,10 +28,6 @@ class ClearcastingNormalizer extends EventLinkNormalizer { } } -export function buffedRegrowth(event: RemoveBuffEvent): boolean { - return HasRelatedEvent(event, BUFFED_REGROWTH); -} - export function buffedByClearcast(event: CastEvent): boolean { return HasRelatedEvent(event, BUFFED_BY_CLEARCAST); } diff --git a/src/analysis/retail/druid/restoration/normalizers/SoulOfTheForestLinkNormalizer.ts b/src/analysis/retail/druid/restoration/normalizers/SoulOfTheForestLinkNormalizer.ts index 02364e1fcc8..713d093a1cf 100644 --- a/src/analysis/retail/druid/restoration/normalizers/SoulOfTheForestLinkNormalizer.ts +++ b/src/analysis/retail/druid/restoration/normalizers/SoulOfTheForestLinkNormalizer.ts @@ -13,8 +13,8 @@ import { } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; -export const BUFFED_BY_SOTF = 'BuffedBySotf'; -export const SOTF_BUFFS_HEAL = 'BuffsHeal'; +const BUFFED_BY_SOTF = 'BuffedBySotf'; +const SOTF_BUFFS_HEAL = 'BuffsHeal'; const SOTF_BUFFER_MS = 50; diff --git a/src/analysis/retail/druid/restoration/normalizers/SwiftmendNormalizer.ts b/src/analysis/retail/druid/restoration/normalizers/SwiftmendNormalizer.ts index b09b6172c1b..f5202a9e325 100644 --- a/src/analysis/retail/druid/restoration/normalizers/SwiftmendNormalizer.ts +++ b/src/analysis/retail/druid/restoration/normalizers/SwiftmendNormalizer.ts @@ -12,7 +12,7 @@ import { TALENTS_DRUID } from 'common/TALENTS'; const REMOVE_BUFFER_MS = 50; -export const CONSUMED_HOT = 'ConsumedHot'; +const CONSUMED_HOT = 'ConsumedHot'; const EVENT_LINKS: EventLink[] = [ { diff --git a/src/analysis/retail/druid/shared/spells/ConvokeSpirits.tsx b/src/analysis/retail/druid/shared/spells/ConvokeSpirits.tsx index 19e1e542d20..0ff6ecdbdac 100644 --- a/src/analysis/retail/druid/shared/spells/ConvokeSpirits.tsx +++ b/src/analysis/retail/druid/shared/spells/ConvokeSpirits.tsx @@ -30,7 +30,7 @@ const DEBUG = false; */ /** All convokable spells that 'hit' with a buff application */ -export const CONVOKE_BUFF_SPELLS = [ +const CONVOKE_BUFF_SPELLS = [ SPELLS.REJUVENATION, SPELLS.REJUVENATION_GERMINATION, SPELLS.REGROWTH, @@ -42,16 +42,16 @@ export const CONVOKE_BUFF_SPELLS = [ SPELLS.STARFALL_CAST, // apparently this is also the ID for the buff ]; /** All convokable spells that 'hit' with a debuff application */ -export const CONVOKE_DEBUFF_SPELLS = [ +const CONVOKE_DEBUFF_SPELLS = [ SPELLS.MOONFIRE_DEBUFF, SPELLS.MOONFIRE_FERAL, SPELLS.RAKE_BLEED, SPELLS.THRASH_BEAR_DOT, ]; /** All convokable spells that 'hit' with direct healing */ -export const CONVOKE_HEAL_SPELLS = [SPELLS.SWIFTMEND]; +const CONVOKE_HEAL_SPELLS = [SPELLS.SWIFTMEND]; /** All convokable spells that 'hit' with direct damage */ -export const CONVOKE_DAMAGE_SPELLS = [ +const CONVOKE_DAMAGE_SPELLS = [ SPELLS.WRATH, SPELLS.WRATH_MOONKIN, SPELLS.STARSURGE_AFFINITY, @@ -63,7 +63,7 @@ export const CONVOKE_DAMAGE_SPELLS = [ TALENTS.PULVERIZE_TALENT, ]; /** Convokable spells that do direct damage (and possibly also a DoT portion) - for damage tallying */ -export const CONVOKE_DIRECT_DAMAGE_SPELLS = [ +const CONVOKE_DIRECT_DAMAGE_SPELLS = [ ...CONVOKE_DAMAGE_SPELLS, SPELLS.RAKE, SPELLS.THRASH_BEAR, @@ -73,16 +73,16 @@ export const CONVOKE_DIRECT_DAMAGE_SPELLS = [ SPELLS.RAMPANT_FEROCITY, ]; /** Convokable spells that have travel time */ -export const SPELLS_WITH_TRAVEL_TIME = [ +const SPELLS_WITH_TRAVEL_TIME = [ SPELLS.STARSURGE_AFFINITY, SPELLS.STARSURGE_MOONKIN, SPELLS.FULL_MOON, SPELLS.WRATH, SPELLS.WRATH_MOONKIN, ]; -export const SPELL_IDS_WITH_TRAVEL_TIME = SPELLS_WITH_TRAVEL_TIME.map((s) => s.id); +const SPELL_IDS_WITH_TRAVEL_TIME = SPELLS_WITH_TRAVEL_TIME.map((s) => s.id); /** Convokable spells that can hit multiple targets */ -export const SPELL_IDS_WITH_AOE = [ +const SPELL_IDS_WITH_AOE = [ SPELLS.MOONFIRE_DEBUFF.id, SPELLS.MOONFIRE_FERAL.id, SPELLS.FULL_MOON.id, diff --git a/src/analysis/retail/evoker/augmentation/modules/breahtofeons/BreathOfEonsRotational.tsx b/src/analysis/retail/evoker/augmentation/modules/breahtofeons/BreathOfEonsRotational.tsx index ad6f7398114..1973cd3c2de 100644 --- a/src/analysis/retail/evoker/augmentation/modules/breahtofeons/BreathOfEonsRotational.tsx +++ b/src/analysis/retail/evoker/augmentation/modules/breahtofeons/BreathOfEonsRotational.tsx @@ -84,7 +84,7 @@ type BreathWindowPerformance = { * */ -export const GRAPH_BUFFER = 3000; +const GRAPH_BUFFER = 3000; class BreathOfEonsRotational extends Analyzer { static dependencies = { diff --git a/src/analysis/retail/evoker/augmentation/modules/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/evoker/augmentation/modules/normalizers/CastLinkNormalizer.ts index b2f3fccee92..8a2c4e97ba8 100644 --- a/src/analysis/retail/evoker/augmentation/modules/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/evoker/augmentation/modules/normalizers/CastLinkNormalizer.ts @@ -26,9 +26,9 @@ import { LEAPING_FLAMES_HITS } from 'analysis/retail/evoker/shared/modules/norma * 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'; +const FAILED_EXTENSION_LINK = 'failedExtensionLink'; -export const PRESCIENCE_BUFF_CAST_LINK = 'prescienceBuffCastLink'; +const PRESCIENCE_BUFF_CAST_LINK = 'prescienceBuffCastLink'; export const PRESCIENCE_APPLY_REMOVE_LINK = 'prescienceApplyRemoveLink'; export const BREATH_EBON_APPLY_LINK = 'breathEbonApplyLink'; export const EBON_MIGHT_BUFF_LINKS = 'ebonMightBuffLinks'; @@ -38,24 +38,24 @@ export const BREATH_OF_EONS_CAST_DEBUFF_APPLY_LINK = 'breathOfEonsCastDebuffAppl export const BREATH_OF_EONS_CAST_BUFF_LINK = 'breathOfEonsCastBuffLink'; export const BREATH_OF_EONS_DAMAGE_LINK = 'breathOfEonsDamageLink'; -export const ERUPTION_CAST_DAM_LINK = 'eruptionCastDamLink'; -export const ERUPTION_CHITIN_LINK = 'eruptionChitinLink'; -export const PUPIL_OF_ALEXSTRASZA_LINK = 'pupilOfAlexstraszaLink'; +const ERUPTION_CAST_DAM_LINK = 'eruptionCastDamLink'; +const ERUPTION_CHITIN_LINK = 'eruptionChitinLink'; +const PUPIL_OF_ALEXSTRASZA_LINK = 'pupilOfAlexstraszaLink'; // Tier export const TREMBLING_EARTH_DAM_LINK = 'tremblingEarthDamLink'; -export const PRESCIENCE_BUFFER = 150; -export const CAST_BUFFER_MS = 100; -export const BREATH_EBON_BUFFER = 250; -export const EBON_MIGHT_BUFFER = 150; -export const BREATH_OF_EONS_DEBUFF_APPLY_BUFFER = 8000; -export const BREATH_OF_EONS_BUFF_BUFFER = 8000; -export const BREATH_OF_EONS_DAMAGE_BUFFER = 100; -export const PUPIL_OF_ALEXSTRASZA_BUFFER = 1000; +const PRESCIENCE_BUFFER = 150; +const CAST_BUFFER_MS = 100; +const BREATH_EBON_BUFFER = 250; +const EBON_MIGHT_BUFFER = 150; +const BREATH_OF_EONS_DEBUFF_APPLY_BUFFER = 8000; +const BREATH_OF_EONS_BUFF_BUFFER = 8000; +const BREATH_OF_EONS_DAMAGE_BUFFER = 100; +const PUPIL_OF_ALEXSTRASZA_BUFFER = 1000; // Tier // No clue why but this gets very weirdly staggered/delayed -export const TREMBLING_EARTH_BUFFER = 500; +const TREMBLING_EARTH_BUFFER = 500; const EVENT_LINKS: EventLink[] = [ { diff --git a/src/analysis/retail/evoker/devastation/modules/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/evoker/devastation/modules/normalizers/CastLinkNormalizer.ts index 9c3c5d9c65f..1a1b443ad17 100644 --- a/src/analysis/retail/evoker/devastation/modules/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/evoker/devastation/modules/normalizers/CastLinkNormalizer.ts @@ -5,8 +5,8 @@ import { TALENTS_EVOKER } from 'common/TALENTS'; import { CastEvent, EventType, HasRelatedEvent } from 'parser/core/Events'; export const ESSENCE_BURST_CONSUME = 'EssenceBurstConsumption'; -export const BURNOUT_CONSUME = 'BurnoutConsumption'; -export const SNAPFIRE_CONSUME = 'SnapfireConsumption'; +const BURNOUT_CONSUME = 'BurnoutConsumption'; +const SNAPFIRE_CONSUME = 'SnapfireConsumption'; export const IRIDESCENCE_RED_CONSUME = 'IridescentRedConsumption'; export const IRIDESCENCE_BLUE_CONSUME = 'IridescentBlueConsumption'; export const DISINTEGRATE_REMOVE_APPLY = 'DisintegrateRemoveApply'; diff --git a/src/analysis/retail/evoker/preservation/constants.ts b/src/analysis/retail/evoker/preservation/constants.ts index 6253c07ac49..e92a582ba82 100644 --- a/src/analysis/retail/evoker/preservation/constants.ts +++ b/src/analysis/retail/evoker/preservation/constants.ts @@ -76,7 +76,6 @@ export const STASIS_CAST_IDS = [ ]; // hots -export const ECHO_BASE_DURATION = 15000; export const DREAM_BREATH_MIN_DURATION = 4000; export const DREAM_BREATH_MAX_DURATION = 16000; export const REVERSION_BASE_DURATION = 12000; diff --git a/src/analysis/retail/evoker/preservation/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/evoker/preservation/normalizers/CastLinkNormalizer.ts index 5929d01b93b..e4fc33c7c64 100644 --- a/src/analysis/retail/evoker/preservation/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/evoker/preservation/normalizers/CastLinkNormalizer.ts @@ -29,40 +29,40 @@ import LeapingFlamesNormalizer, { import { EMPOWERED_CAST } from '../../shared/modules/normalizers/EmpowerNormalizer'; import { EssenceBurstRefreshNormalizer } from '../../shared'; -export const ANCIENT_FLAME = 'AncientFlame'; // links cast to buff apply -export const ANCIENT_FLAME_CONSUME = 'AncientFlameConnsume'; // links buff remove to buff apply +const ANCIENT_FLAME = 'AncientFlame'; // links cast to buff apply +const ANCIENT_FLAME_CONSUME = 'AncientFlameConnsume'; // links buff remove to buff apply // BEGIN ECHO constants -export const FROM_HARDCAST = 'FromHardcast'; // for linking a buffapply or heal to its cast -export const FROM_TEMPORAL_ANOMALY = 'FromTemporalAnomaly'; // for linking TA echo apply to TA shield apply -export const FROM_TIER = 'FromTier'; // for linking tier echo apply to tier lf damage/heal -export const ECHO_REMOVAL = 'EchoRemoval'; // for linking echo removal to echo apply -export const TA_ECHO_REMOVAL = 'TaEchoTemoval'; // for linking TA echo removal to echo apply -export const TIER_ECHO_REMOVAL = 'TierEchoRemoval'; // for linking tier echo to echo apply +const FROM_HARDCAST = 'FromHardcast'; // for linking a buffapply or heal to its cast +const FROM_TEMPORAL_ANOMALY = 'FromTemporalAnomaly'; // for linking TA echo apply to TA shield apply +const FROM_TIER = 'FromTier'; // for linking tier echo apply to tier lf damage/heal +const ECHO_REMOVAL = 'EchoRemoval'; // for linking echo removal to echo apply +const TA_ECHO_REMOVAL = 'TaEchoTemoval'; // for linking TA echo removal to echo apply +const TIER_ECHO_REMOVAL = 'TierEchoRemoval'; // for linking tier echo to echo apply export const ECHO_TEMPORAL_ANOMALY = 'TemporalAnomaly'; // for linking BuffApply/Heal to echo removal export const ECHO = 'Echo'; // for linking BuffApply/Heal to echo removal -export const ECHO_TIER = 'EchoT31'; // for linking BuffApply/Heal to echo removal +const ECHO_TIER = 'EchoT31'; // for linking BuffApply/Heal to echo removal // END ECHO constants -export const ESSENCE_BURST_LINK = 'EssenceBurstLink'; // link eb removal to apply -export const ESSENCE_BURST_CONSUME = 'EssenceBurstConsumption'; // link essence cast to removing the essence burst buff -export const DREAM_BREATH_CALL_OF_YSERA = 'DreamBreathCallOfYsera'; // link DB hit to buff removal -export const DREAM_BREATH_CALL_OF_YSERA_HOT = 'DreamBreathCallOfYseraHoT'; // link DB hot to buff removal -export const FIELD_OF_DREAMS_PROC = 'FromFieldOfDreams'; // link EB heal to fluttering heal -export const GOLDEN_HOUR = 'GoldenHour'; // link GH heal to reversion application -export const LIFEBIND = 'Lifebind'; // link lifebind buff apply to lifebind heal event -export const LIFEBIND_APPLY = 'LifebindApply'; // link lifebind apply to verdant embrace -export const LIFEBIND_HEAL = 'LifebindHeal'; // link lifebind heal to trigger heal event -export const LIVING_FLAME_CALL_OF_YSERA = 'LivingFlameCallOfYsera'; // link buffed living flame to buff removal -export const HEAL_GROUPING = 'HealGrouping'; // link EB healevents and TA pulses together to easily fetch groups of heals/absorbs -export const ECHO_HEAL_GROUPING = 'HealGrouping'; // link EB healevents and TA pulses together to easily fetch groups of heals/absorbs -export const BUFF_GROUPING = 'BuffGrouping'; // link ApplyBuff events together -export const SHIELD_FROM_TA_CAST = 'ShieldFromTACast'; -export const SPARK_OF_INSIGHT = 'SparkOfInsight'; // link TC stack removals to Spark -export const STASIS = 'Stasis'; -export const STASIS_FOR_RAMP = 'ForRamp'; -export const ESSENCE_RUSH = 'EssenceRush'; -export const T31_2PC = 'T31LFProc'; -export const EB_REVERSION = 'EssenceBurstReversion'; -export const TIME_OF_NEED_HEALING = 'TimeOfNeedHealing'; +const ESSENCE_BURST_LINK = 'EssenceBurstLink'; // link eb removal to apply +const ESSENCE_BURST_CONSUME = 'EssenceBurstConsumption'; // link essence cast to removing the essence burst buff +const DREAM_BREATH_CALL_OF_YSERA = 'DreamBreathCallOfYsera'; // link DB hit to buff removal +const DREAM_BREATH_CALL_OF_YSERA_HOT = 'DreamBreathCallOfYseraHoT'; // link DB hot to buff removal +const FIELD_OF_DREAMS_PROC = 'FromFieldOfDreams'; // link EB heal to fluttering heal +const GOLDEN_HOUR = 'GoldenHour'; // link GH heal to reversion application +const LIFEBIND = 'Lifebind'; // link lifebind buff apply to lifebind heal event +const LIFEBIND_APPLY = 'LifebindApply'; // link lifebind apply to verdant embrace +const LIFEBIND_HEAL = 'LifebindHeal'; // link lifebind heal to trigger heal event +const LIVING_FLAME_CALL_OF_YSERA = 'LivingFlameCallOfYsera'; // link buffed living flame to buff removal +const HEAL_GROUPING = 'HealGrouping'; // link EB healevents and TA pulses together to easily fetch groups of heals/absorbs +const ECHO_HEAL_GROUPING = 'HealGrouping'; // link EB healevents and TA pulses together to easily fetch groups of heals/absorbs +const BUFF_GROUPING = 'BuffGrouping'; // link ApplyBuff events together +const SHIELD_FROM_TA_CAST = 'ShieldFromTACast'; +const SPARK_OF_INSIGHT = 'SparkOfInsight'; // link TC stack removals to Spark +const STASIS = 'Stasis'; +const STASIS_FOR_RAMP = 'ForRamp'; +const ESSENCE_RUSH = 'EssenceRush'; +const T31_2PC = 'T31LFProc'; +const EB_REVERSION = 'EssenceBurstReversion'; +const TIME_OF_NEED_HEALING = 'TimeOfNeedHealing'; export enum ECHO_TYPE { NONE, @@ -874,10 +874,6 @@ export function didEchoExpire(event: RemoveBuffEvent) { return !HasRelatedEvent(event, ECHO) && !HasRelatedEvent(event, ECHO_TEMPORAL_ANOMALY); } -export function isFromHardcast(event: ApplyBuffEvent) { - return HasRelatedEvent(event, FROM_HARDCAST); -} - export function getEssenceBurstConsumeAbility( event: RemoveBuffEvent | RemoveBuffStackEvent, ): null | CastEvent { @@ -923,10 +919,6 @@ export function getHealEvents(event: HealEvent) { return [event].concat(GetRelatedEvents(event, HEAL_GROUPING)); } -export function getEchoHealEvents(event: HealEvent) { - return [event].concat(GetRelatedEvents(event, ECHO_HEAL_GROUPING)); -} - export function getBuffEvents(event: ApplyBuffEvent) { return [event].concat(GetRelatedEvents(event, BUFF_GROUPING)); } diff --git a/src/analysis/retail/evoker/shared/modules/normalizers/DefensiveCastLinkNormalizer.ts b/src/analysis/retail/evoker/shared/modules/normalizers/DefensiveCastLinkNormalizer.ts index 871db3d8bea..073d76a6906 100644 --- a/src/analysis/retail/evoker/shared/modules/normalizers/DefensiveCastLinkNormalizer.ts +++ b/src/analysis/retail/evoker/shared/modules/normalizers/DefensiveCastLinkNormalizer.ts @@ -8,7 +8,7 @@ export const OBSIDIAN_SCALES = 'obsidianScales'; // links cast to buff apply export const RENEWING_BLAZE = 'renewingBlaze'; // links cast to buff apply export const RENEWING_BLAZE_BUFFS = 'renewingBlazeBuffs'; // links acc & heal buffs export const RENEWING_BLAZE_HEAL = 'renewingBlazeHeal'; // links heal buff and healing -export const TWIN_GUARDIAN_PARTNER = 'twinGuardianPartner'; // links external and personal buffs +const TWIN_GUARDIAN_PARTNER = 'twinGuardianPartner'; // links external and personal buffs const CAST_BUFFER = 25; /** Heal buff gets applied once you first take damage, so there is a non-zero chance it won't apply diff --git a/src/analysis/retail/evoker/shared/modules/normalizers/EmpowerNormalizer.ts b/src/analysis/retail/evoker/shared/modules/normalizers/EmpowerNormalizer.ts index d7ed75c515b..9df53364c0a 100644 --- a/src/analysis/retail/evoker/shared/modules/normalizers/EmpowerNormalizer.ts +++ b/src/analysis/retail/evoker/shared/modules/normalizers/EmpowerNormalizer.ts @@ -12,7 +12,7 @@ import { Options } from 'parser/core/Module'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { EMPOWERS } from '../../constants'; -export const TIP_THE_SCALES_CONSUME = 'TipTheScalesConsume'; +const TIP_THE_SCALES_CONSUME = 'TipTheScalesConsume'; export const EMPOWERED_CAST = 'EmpoweredCast'; const EMPOWERED_CAST_BUFFER = 6000; diff --git a/src/analysis/retail/hunter/survival/constants.ts b/src/analysis/retail/hunter/survival/constants.ts index ebc357e971d..a195ae54c90 100644 --- a/src/analysis/retail/hunter/survival/constants.ts +++ b/src/analysis/retail/hunter/survival/constants.ts @@ -36,13 +36,6 @@ export const BASELINE_AOTE_CD = 90000; /** Bird of Prey */ //Bird of Prey extends Coordinated Assault by 1.5 seconds per trigger export const BOP_CA_EXTENSION_PER_CAST = 1500; -/** Chakrams */ -//Chakrams has a bunch of different spellIDs for damage -export const SURVIVAL_CHAKRAM_TYPES = [ - SPELLS.CHAKRAMS_TO_MAINTARGET, - SPELLS.CHAKRAMS_BACK_FROM_MAINTARGET, - SPELLS.CHAKRAMS_NOT_MAINTARGET, -]; /** Flanking Strike */ //Flanking Strikes regenerates 30 focus export const FLANKING_STRIKE_FOCUS_GAIN = 30; diff --git a/src/analysis/retail/mage/arcane/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/mage/arcane/normalizers/CastLinkNormalizer.ts index 0acda419bee..275108d0d2c 100644 --- a/src/analysis/retail/mage/arcane/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/mage/arcane/normalizers/CastLinkNormalizer.ts @@ -1,25 +1,16 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/mage'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { - ApplyDebuffEvent, - CastEvent, - DamageEvent, - EventType, - GetRelatedEvent, - GetRelatedEvents, - HasRelatedEvent, - RefreshDebuffEvent, -} from 'parser/core/Events'; +import { CastEvent, EventType, GetRelatedEvents } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 75; -export const SPELL_CAST = 'SpellCast'; -export const SPELL_DAMAGE = 'SpellDamage'; -export const DEBUFF_APPLY = 'DebuffApply'; -export const DEBUFF_REMOVE = 'DebuffRemove'; -export const SPARK_REMOVED = 'SparkRemoved'; +const SPELL_CAST = 'SpellCast'; +const SPELL_DAMAGE = 'SpellDamage'; +const DEBUFF_APPLY = 'DebuffApply'; +const DEBUFF_REMOVE = 'DebuffRemove'; +const SPARK_REMOVED = 'SparkRemoved'; const EVENT_LINKS: EventLink[] = [ { @@ -114,18 +105,6 @@ class CastLinkNormalizer extends EventLinkNormalizer { } } -export function isFromHardcast( - event: ApplyDebuffEvent | RefreshDebuffEvent | DamageEvent, -): boolean { - return HasRelatedEvent(event, SPELL_CAST); -} - -export function getHardcast( - event: ApplyDebuffEvent | RefreshDebuffEvent | DamageEvent, -): CastEvent | undefined { - return GetRelatedEvent(event, SPELL_CAST); -} - export function getHitCount(aoeCastEvent: CastEvent): number { return GetRelatedEvents(aoeCastEvent, SPELL_DAMAGE).length; } diff --git a/src/analysis/retail/mage/fire/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/mage/fire/normalizers/CastLinkNormalizer.ts index 23fbad3bb9e..8ab8cd766fa 100644 --- a/src/analysis/retail/mage/fire/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/mage/fire/normalizers/CastLinkNormalizer.ts @@ -2,13 +2,10 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/mage'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { - AbilityEvent, BeginCastEvent, - RemoveBuffEvent, CastEvent, EventType, GetRelatedEvents, - HasRelatedEvent, HasTarget, } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; @@ -17,14 +14,13 @@ import { encodeTargetString } from 'parser/shared/modules/Enemies'; const CAST_BUFFER_MS = 75; const EXTENDED_CAST_BUFFER_MS = 150; -export const BUFF_APPLY = 'BuffApply'; -export const BUFF_REMOVE = 'BuffRemove'; -export const BUFF_REFRESH = 'BuffRefresh'; -export const CAST_BEGIN = 'CastBegin'; -export const SPELL_CAST = 'SpellCast'; -export const PRE_CAST = 'PreCast'; -export const SPELL_DAMAGE = 'SpellDamage'; -export const EXPLODE_DEBUFF = 'ExplosionDebuff'; +const BUFF_APPLY = 'BuffApply'; +const BUFF_REMOVE = 'BuffRemove'; +const CAST_BEGIN = 'CastBegin'; +const SPELL_CAST = 'SpellCast'; +const PRE_CAST = 'PreCast'; +const SPELL_DAMAGE = 'SpellDamage'; +const EXPLODE_DEBUFF = 'ExplosionDebuff'; const EVENT_LINKS: EventLink[] = [ { @@ -334,32 +330,9 @@ class CastLinkNormalizer extends EventLinkNormalizer { } } -/** Returns true iff the given buff application or heal can be matched back to a hardcast */ -export function isFromHardcast(event: AbilityEvent): boolean { - return HasRelatedEvent(event, SPELL_CAST); -} - -export function isInstantCast(event: CastEvent): boolean { +function isInstantCast(event: CastEvent): boolean { const beginCast = GetRelatedEvents(event, CAST_BEGIN)[0]; return !beginCast || event.timestamp - beginCast.timestamp <= CAST_BUFFER_MS; } -export function hasPreCast(event: AbilityEvent): boolean { - return HasRelatedEvent(event, PRE_CAST); -} - -/** Returns the hardcast event that caused this buff or heal, if there is one */ -export function getHardcast(event: AbilityEvent): CastEvent | undefined { - return GetRelatedEvents( - event, - SPELL_CAST, - (e): e is CastEvent => e.type === EventType.Cast, - ).pop(); -} - -export function isProcExpired(event: RemoveBuffEvent, spenderId: number): boolean { - const cast = GetRelatedEvents(event, SPELL_CAST)[0]; - return !cast || cast.ability.guid !== spenderId; -} - export default CastLinkNormalizer; diff --git a/src/analysis/retail/mage/fire/talents/SearingTouch.tsx b/src/analysis/retail/mage/fire/talents/SearingTouch.tsx index 11243883f8a..de6e22d64a3 100644 --- a/src/analysis/retail/mage/fire/talents/SearingTouch.tsx +++ b/src/analysis/retail/mage/fire/talents/SearingTouch.tsx @@ -12,7 +12,7 @@ import BoringSpellValueText from 'parser/ui/BoringSpellValueText'; import Statistic from 'parser/ui/Statistic'; import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; -export const DAMAGE_MODIFIER = 1.5; +const DAMAGE_MODIFIER = 1.5; const debug = false; diff --git a/src/analysis/retail/mage/frost/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/mage/frost/normalizers/CastLinkNormalizer.ts index 752e49f3175..8d9ceb668ad 100644 --- a/src/analysis/retail/mage/frost/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/mage/frost/normalizers/CastLinkNormalizer.ts @@ -1,32 +1,20 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/mage'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { - AbilityEvent, - BeginCastEvent, - RemoveBuffEvent, - CastEvent, - DamageEvent, - EventType, - GetRelatedEvents, - HasRelatedEvent, - HasTarget, -} from 'parser/core/Events'; +import { CastEvent, DamageEvent, EventType, HasRelatedEvent, HasTarget } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; import { encodeTargetString } from 'parser/shared/modules/Enemies'; const CAST_BUFFER_MS = 75; -export const BUFF_APPLY = 'BuffApply'; -export const BUFF_REMOVE = 'BuffRemove'; -export const BUFF_REFRESH = 'BuffRefresh'; -export const DEBUFF_APPLY = 'DebuffApply'; -export const DEBUFF_REMOVE = 'DebuffRemove'; -export const CAST_BEGIN = 'CastBegin'; -export const SPELL_CAST = 'SpellCast'; -export const PRE_CAST = 'PreCast'; -export const SPELL_DAMAGE = 'SpellDamage'; -export const CLEAVE_DAMAGE = 'CleaveDamage'; +const BUFF_APPLY = 'BuffApply'; +const BUFF_REMOVE = 'BuffRemove'; +const DEBUFF_APPLY = 'DebuffApply'; +const DEBUFF_REMOVE = 'DebuffRemove'; +const SPELL_CAST = 'SpellCast'; +const PRE_CAST = 'PreCast'; +const SPELL_DAMAGE = 'SpellDamage'; +const CLEAVE_DAMAGE = 'CleaveDamage'; const EVENT_LINKS: EventLink[] = [ { @@ -288,35 +276,7 @@ class CastLinkNormalizer extends EventLinkNormalizer { } } -/** Returns true iff the given buff application or heal can be matched back to a hardcast */ -export function isFromHardcast(event: AbilityEvent): boolean { - return HasRelatedEvent(event, SPELL_CAST); -} - -export function isInstantCast(event: CastEvent): boolean { - const beginCast = GetRelatedEvents(event, CAST_BEGIN)[0]; - return !beginCast || event.timestamp - beginCast.timestamp <= CAST_BUFFER_MS; -} - -export function hasPreCast(event: AbilityEvent): boolean { - return HasRelatedEvent(event, PRE_CAST); -} - -/** Returns the hardcast event that caused this buff or heal, if there is one */ -export function getHardcast(event: AbilityEvent): CastEvent | undefined { - return GetRelatedEvents( - event, - SPELL_CAST, - (e): e is CastEvent => e.type === EventType.Cast, - ).pop(); -} - -export function isProcExpired(event: RemoveBuffEvent, spenderId: number): boolean { - const cast = GetRelatedEvents(event, SPELL_CAST)[0]; - return !cast || cast.ability.guid !== spenderId; -} - -export function isCleaveDamage(castEvent: CastEvent, damageEvent: DamageEvent): boolean { +function isCleaveDamage(castEvent: CastEvent, damageEvent: DamageEvent): boolean { const castTarget = HasTarget(castEvent) && encodeTargetString(castEvent.targetID, castEvent.targetInstance); const damageTarget = diff --git a/src/analysis/retail/mage/frost/normalizers/CometStormLinkNormalizer.ts b/src/analysis/retail/mage/frost/normalizers/CometStormLinkNormalizer.ts index 283c23dc0fa..5b59750551a 100644 --- a/src/analysis/retail/mage/frost/normalizers/CometStormLinkNormalizer.ts +++ b/src/analysis/retail/mage/frost/normalizers/CometStormLinkNormalizer.ts @@ -1,13 +1,13 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/mage'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { AnyEvent, EventType, GetRelatedEvents } from 'parser/core/Events'; +import { EventType } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 2500; -export const FROM_HARDCAST = 'FromHardcast'; -export const HITS_TARGET = 'HitsTarget'; +const FROM_HARDCAST = 'FromHardcast'; +const HITS_TARGET = 'HitsTarget'; const EVENT_LINKS: EventLink[] = [ { @@ -30,8 +30,4 @@ class CometStormLinkNormalizer extends EventLinkNormalizer { } } -export function cometStormHits(event: AnyEvent) { - return GetRelatedEvents(event, HITS_TARGET); -} - export default CometStormLinkNormalizer; diff --git a/src/analysis/retail/mage/shared/Abilities.tsx b/src/analysis/retail/mage/shared/Abilities.tsx index 6ab67a8ce52..899bd9b70ae 100644 --- a/src/analysis/retail/mage/shared/Abilities.tsx +++ b/src/analysis/retail/mage/shared/Abilities.tsx @@ -329,4 +329,3 @@ class Abilities extends CoreAbilities { } export default Abilities; -export { Abilities as MAGE_SHARED_ABILITIES }; diff --git a/src/analysis/retail/mage/shared/constants.tsx b/src/analysis/retail/mage/shared/constants.tsx index 3ba5618e81e..1c5c6cd6af0 100644 --- a/src/analysis/retail/mage/shared/constants.tsx +++ b/src/analysis/retail/mage/shared/constants.tsx @@ -30,7 +30,6 @@ export const FIRE_DIRECT_DAMAGE_SPELLS = [ //Arcane export const ARCANE_CHARGE_MAX_STACKS = 4; -export const AP_MANA_THRESHOLD_PERCENT = 0.4; export const ARCANE_BLAST_BASE_MANA_COST = 1375; export const ARCANE_EXPLOSION_BASE_MANA_COST = 5000; diff --git a/src/analysis/retail/monk/brewmaster/constants.tsx b/src/analysis/retail/monk/brewmaster/constants.tsx index 967f2e7546f..d61daa4a523 100644 --- a/src/analysis/retail/monk/brewmaster/constants.tsx +++ b/src/analysis/retail/monk/brewmaster/constants.tsx @@ -3,14 +3,6 @@ import talents from 'common/TALENTS/monk'; export const MAGIC_STAGGER_EFFECTIVENESS = 0.45; -export const BREWS = [ - talents.PURIFYING_BREW_TALENT, - talents.FORTIFYING_BREW_TALENT, - talents.BLACK_OX_BREW_TALENT, - talents.CELESTIAL_BREW_TALENT, - talents.BONEDUST_BREW_TALENT, -]; - // Yes there are 7... The cake is a lie (8 really) export const GIFT_OF_THE_OX_SPELLS = [ SPELLS.GIFT_OF_THE_OX_1, diff --git a/src/analysis/retail/monk/brewmaster/modules/charts.ts b/src/analysis/retail/monk/brewmaster/modules/charts.ts index 929d35fb316..eb4031dd3e7 100644 --- a/src/analysis/retail/monk/brewmaster/modules/charts.ts +++ b/src/analysis/retail/monk/brewmaster/modules/charts.ts @@ -5,7 +5,7 @@ import { NonNormalizedSpec } from 'vega-lite/build/src/spec'; import { UnitSpec } from 'vega-lite/build/src/spec/unit'; import { Transform } from 'vega-lite/build/src/transform'; -export const POINT_SIZE = 75; +const POINT_SIZE = 75; export const normalizeTimestampTransform = (info: Info, key: string = 'timestamp'): Transform => ({ calculate: `datum.${key} - ${info.fightStart}`, diff --git a/src/analysis/retail/monk/brewmaster/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx b/src/analysis/retail/monk/brewmaster/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx index 811c63a176e..d0965766b48 100644 --- a/src/analysis/retail/monk/brewmaster/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/core/MajorDefensives/DefensiveBuffLinkNormalizer.tsx @@ -1,6 +1,6 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { ApplyBuffEvent, EventType, GetRelatedEvent, RemoveBuffEvent } from 'parser/core/Events'; +import { EventType } from 'parser/core/Events'; import { buffId, MAJOR_DEFENSIVES } from './DefensiveBuffs'; const relation = 'defensive-buff-remove'; @@ -26,11 +26,3 @@ export default class DefensiveBuffLinkNormalizer extends EventLinkNormalizer { super(options, links); } } - -export function defensiveApplication(event: RemoveBuffEvent): ApplyBuffEvent | undefined { - return GetRelatedEvent(event, reverseRelation); -} - -export function defensiveExpiration(event: ApplyBuffEvent): RemoveBuffEvent | undefined { - return GetRelatedEvent(event, relation); -} diff --git a/src/analysis/retail/monk/brewmaster/modules/core/StaggerLinkNormalizer.tsx b/src/analysis/retail/monk/brewmaster/modules/core/StaggerLinkNormalizer.tsx index 0e50f0a1c31..7710c6817ee 100644 --- a/src/analysis/retail/monk/brewmaster/modules/core/StaggerLinkNormalizer.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/core/StaggerLinkNormalizer.tsx @@ -3,8 +3,8 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { AbsorbedEvent, DamageEvent, EventType } from 'parser/core/Events'; -export const StaggerDamageSource = 'StaggerDamageSource'; -export const StaggerAbsorb = 'StaggerAbsorb'; +const StaggerDamageSource = 'StaggerDamageSource'; +const StaggerAbsorb = 'StaggerAbsorb'; const staggerLinks: EventLink[] = [ { linkRelation: StaggerDamageSource, diff --git a/src/analysis/retail/monk/brewmaster/modules/problems/PurifyingBrew/index.tsx b/src/analysis/retail/monk/brewmaster/modules/problems/PurifyingBrew/index.tsx index a0c684d8580..b913e77d3c4 100644 --- a/src/analysis/retail/monk/brewmaster/modules/problems/PurifyingBrew/index.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/problems/PurifyingBrew/index.tsx @@ -87,11 +87,7 @@ const PurifyProblemDescription = ({ data }: { data: ProblemData }) =>

); -export function PurifyProblem({ - problem, - events, - info, -}: ProblemRendererProps): JSX.Element { +function PurifyProblem({ problem, events, info }: ProblemRendererProps): JSX.Element { const stagger: Array = events.filter( ({ type }) => type === EventType.AddStagger || type === EventType.RemoveStagger, ) as Array; diff --git a/src/analysis/retail/monk/brewmaster/modules/spells/BreathOfFire/normalizer.ts b/src/analysis/retail/monk/brewmaster/modules/spells/BreathOfFire/normalizer.ts index 54042d5e786..21412592d4c 100644 --- a/src/analysis/retail/monk/brewmaster/modules/spells/BreathOfFire/normalizer.ts +++ b/src/analysis/retail/monk/brewmaster/modules/spells/BreathOfFire/normalizer.ts @@ -3,7 +3,7 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { EventType } from 'parser/core/Events'; -export const targetRelation = 'bof-target'; +const targetRelation = 'bof-target'; const links: EventLink[] = [ { linkRelation: targetRelation, diff --git a/src/analysis/retail/monk/brewmaster/modules/spells/CelestialBrew/normalizer.ts b/src/analysis/retail/monk/brewmaster/modules/spells/CelestialBrew/normalizer.ts index 0474d3875f7..aa59e2b835c 100644 --- a/src/analysis/retail/monk/brewmaster/modules/spells/CelestialBrew/normalizer.ts +++ b/src/analysis/retail/monk/brewmaster/modules/spells/CelestialBrew/normalizer.ts @@ -32,8 +32,3 @@ export default class CelestialBrewNormalizer extends EventLinkNormalizer { export function damageEvent(event: AbsorbedEvent): DamageEvent | undefined { return event._linkedEvents?.find((rel) => rel.relation === relation)?.event as DamageEvent; } - -export function cbAbsorb(event: DamageEvent): AbsorbedEvent | undefined { - return event._linkedEvents?.find((rel) => rel.relation === reverseRelation) - ?.event as AbsorbedEvent; -} diff --git a/src/analysis/retail/monk/brewmaster/modules/spells/HighTolerance.tsx b/src/analysis/retail/monk/brewmaster/modules/spells/HighTolerance.tsx index 272f34f1be5..d842f1bd1a6 100644 --- a/src/analysis/retail/monk/brewmaster/modules/spells/HighTolerance.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/spells/HighTolerance.tsx @@ -4,7 +4,6 @@ import talents from 'common/TALENTS/monk'; import { SpellIcon } from 'interface'; import HasteIcon from 'interface/icons/Haste'; import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer'; -import Combatant from 'parser/core/Combatant'; import Events, { ApplyDebuffEvent, RemoveDebuffEvent } from 'parser/core/Events'; import BoringValue from 'parser/ui/BoringValueText'; import Statistic from 'parser/ui/Statistic'; @@ -16,21 +15,6 @@ export const HIGH_TOLERANCE_HASTE = { [SPELLS.HEAVY_STAGGER_DEBUFF.id]: 0.1, }; -function hasteFnGenerator(value: number) { - return { - haste: (combatant: Combatant) => - (combatant.getTalentRank(talents.HIGH_TOLERANCE_TALENT) / - talents.HIGH_TOLERANCE_TALENT.maxRanks) * - value, - }; -} - -export const HIGH_TOLERANCE_HASTE_FNS = { - [SPELLS.LIGHT_STAGGER_DEBUFF.id]: hasteFnGenerator(0.05), - [SPELLS.MODERATE_STAGGER_DEBUFF.id]: hasteFnGenerator(0.07), - [SPELLS.HEAVY_STAGGER_DEBUFF.id]: hasteFnGenerator(0.1), -}; - class HighTolerance extends Analyzer { protected ranks = 0; get meanHaste() { diff --git a/src/analysis/retail/monk/brewmaster/modules/spells/RushingJadeWind.tsx b/src/analysis/retail/monk/brewmaster/modules/spells/RushingJadeWind.tsx index 0d19ca3f252..5356803d2be 100644 --- a/src/analysis/retail/monk/brewmaster/modules/spells/RushingJadeWind.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/spells/RushingJadeWind.tsx @@ -6,7 +6,7 @@ import Analyzer, { Options } from 'parser/core/Analyzer'; import { ThresholdStyle, When } from 'parser/core/ParseResults'; // the buff events all use this spell -export const RUSHING_JADE_WIND_BUFF = talents.RUSHING_JADE_WIND_TALENT; +const RUSHING_JADE_WIND_BUFF = talents.RUSHING_JADE_WIND_TALENT; class RushingJadeWind extends Analyzer { get uptimeThreshold() { diff --git a/src/analysis/retail/monk/brewmaster/modules/talents/BonedustBrew/normalizer.tsx b/src/analysis/retail/monk/brewmaster/modules/talents/BonedustBrew/normalizer.tsx index 72df1931cbe..df1a61c2a09 100644 --- a/src/analysis/retail/monk/brewmaster/modules/talents/BonedustBrew/normalizer.tsx +++ b/src/analysis/retail/monk/brewmaster/modules/talents/BonedustBrew/normalizer.tsx @@ -3,7 +3,7 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { EventType } from 'parser/core/Events'; -export const debuffApplicationRelation = 'bdb-applyrefreshdebuff'; +const debuffApplicationRelation = 'bdb-applyrefreshdebuff'; const links: EventLink[] = [ { linkRelation: debuffApplicationRelation, diff --git a/src/analysis/retail/monk/brewmaster/modules/talents/PressTheAdvantage/normalizer.ts b/src/analysis/retail/monk/brewmaster/modules/talents/PressTheAdvantage/normalizer.ts index fb9973b7916..2541cd25e05 100644 --- a/src/analysis/retail/monk/brewmaster/modules/talents/PressTheAdvantage/normalizer.ts +++ b/src/analysis/retail/monk/brewmaster/modules/talents/PressTheAdvantage/normalizer.ts @@ -13,13 +13,13 @@ import { } from 'parser/core/Events'; export const PTA_TRIGGER_BUFF = 'pta-trigger-buff'; -export const PTA_TRIGGER_CAST = 'pta-trigger-cast'; -export const PTA_BONUS_CAST = 'pta-bonus-cast'; -export const PTA_BUFF = 'pta-buff'; +const PTA_TRIGGER_CAST = 'pta-trigger-cast'; +const PTA_BONUS_CAST = 'pta-bonus-cast'; +const PTA_BUFF = 'pta-buff'; export const KS_DAMAGE = 'ks-damage'; -export const KS_CAST = 'ks-cast'; -export const RSK_CAST = 'rsk-cast'; -export const RSK_DAMAGE = 'rsk-damage'; +const KS_CAST = 'ks-cast'; +const RSK_CAST = 'rsk-cast'; +const RSK_DAMAGE = 'rsk-damage'; const LINKS: EventLink[] = [ { @@ -72,7 +72,7 @@ const LINKS: EventLink[] = [ }, ]; -export function isPtaBonusCast(event: CastEvent): boolean { +function isPtaBonusCast(event: CastEvent): boolean { return GetRelatedEvents(event, PTA_BUFF).length > 0; } diff --git a/src/analysis/retail/monk/brewmaster/normalizers/GiftOfTheOx.jsx b/src/analysis/retail/monk/brewmaster/normalizers/GiftOfTheOx.jsx index 178b687ef89..0fe7254f0c3 100644 --- a/src/analysis/retail/monk/brewmaster/normalizers/GiftOfTheOx.jsx +++ b/src/analysis/retail/monk/brewmaster/normalizers/GiftOfTheOx.jsx @@ -3,7 +3,7 @@ import EventsNormalizer from 'parser/core/EventsNormalizer'; import { GIFT_OF_THE_OX_SPELL_IDS } from '../constants'; -export const GOTOX_GENERATED_EVENT = 'orb-generated'; +const GOTOX_GENERATED_EVENT = 'orb-generated'; /** * Gift of the Ox orbs show up as 'casts' which messes with other things diff --git a/src/analysis/retail/monk/brewmaster/normalizers/SpinningCraneKick.ts b/src/analysis/retail/monk/brewmaster/normalizers/SpinningCraneKick.ts index d551b178833..bf6084a3d3e 100644 --- a/src/analysis/retail/monk/brewmaster/normalizers/SpinningCraneKick.ts +++ b/src/analysis/retail/monk/brewmaster/normalizers/SpinningCraneKick.ts @@ -4,7 +4,7 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer' import { EventType } from 'parser/core/Events'; export const SCK_DAMAGE_LINK = 'sck-damage'; -export const SCK_CAST_LINK = 'sck-cast'; +const SCK_CAST_LINK = 'sck-cast'; // the damage link is the reverse of the cast link. // diff --git a/src/analysis/retail/monk/brewmaster/test-fixtures/SimpleFight.jsx b/src/analysis/retail/monk/brewmaster/test-fixtures/SimpleFight.jsx index 15a67491e17..741e918f31a 100644 --- a/src/analysis/retail/monk/brewmaster/test-fixtures/SimpleFight.jsx +++ b/src/analysis/retail/monk/brewmaster/test-fixtures/SimpleFight.jsx @@ -203,7 +203,7 @@ export const incomingDamage = [ ]; // Damage taken: amount: 0, absorbed: 0, overkill: 0 -export const casts = [ +const casts = [ { type: EventType.Cast, sourceID: thisPlayer, @@ -234,7 +234,7 @@ export const casts = [ }, ]; -export const dpsCasts = [ +const dpsCasts = [ { type: EventType.Cast, sourceID: thisPlayer, @@ -287,10 +287,10 @@ export const dpsCasts = [ ]; // Damage taken: amount: 0, absorbed: 0, overkill: 0 -export const isbCasts = []; +const isbCasts = []; // Damage taken: amount: 0, absorbed: 0, overkill: 0 -export const applybuff = [ +const applybuff = [ { type: EventType.ApplyBuff, sourceID: thisPlayer, @@ -314,7 +314,7 @@ export const applybuff = [ }, ]; -export const refreshBuff = [ +const refreshBuff = [ { type: EventType.RefreshBuff, sourceID: thisPlayer, @@ -324,7 +324,7 @@ export const refreshBuff = [ }, ]; -export const removebuff = [ +const removebuff = [ { type: EventType.RemoveBuff, sourceID: thisPlayer, diff --git a/src/analysis/retail/monk/mistweaver/constants.ts b/src/analysis/retail/monk/mistweaver/constants.ts index 6d9a3d03d3e..b917b75be40 100644 --- a/src/analysis/retail/monk/mistweaver/constants.ts +++ b/src/analysis/retail/monk/mistweaver/constants.ts @@ -29,7 +29,6 @@ export const ABILITIES_AFFECTED_BY_HEALING_INCREASES = [ // Core Constants export const LIFE_COCOON_HEALING_BOOST = 0.5; -export const TEACHINGS_OF_THE_MONASTERY_DURATION = 20000; // Talent Constants export const LEGACY_OF_WISDOM_TARGETS = 2; diff --git a/src/analysis/retail/monk/mistweaver/modules/dragonflight/T31HealingBreakdown.tsx b/src/analysis/retail/monk/mistweaver/modules/dragonflight/T31HealingBreakdown.tsx index 6fca19793ce..eceddc5cb0f 100644 --- a/src/analysis/retail/monk/mistweaver/modules/dragonflight/T31HealingBreakdown.tsx +++ b/src/analysis/retail/monk/mistweaver/modules/dragonflight/T31HealingBreakdown.tsx @@ -15,7 +15,7 @@ interface Props { owner: CombatLogParser; } -export const ChiHarmonyHealingBreakdown = ({ +const ChiHarmonyHealingBreakdown = ({ analyzer: { fourPieceSourceMap, fourPieceHealing }, owner: { fightDuration }, }: Props) => { diff --git a/src/analysis/retail/monk/mistweaver/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/monk/mistweaver/normalizers/CastLinkNormalizer.ts index 1d4acebae6f..53553624215 100644 --- a/src/analysis/retail/monk/mistweaver/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/monk/mistweaver/normalizers/CastLinkNormalizer.ts @@ -18,38 +18,38 @@ import { } from 'parser/core/Events'; import ITEMS from 'common/ITEMS'; -export const APPLIED_HEAL = 'AppliedHeal'; -export const FORCE_BOUNCE = 'ForceBounce'; -export const OVERHEAL_BOUNCE = 'OverhealBounce'; -export const BOUNCED = 'Bounced'; -export const ESSENCE_FONT = 'EssenceFont'; -export const FROM_DANCING_MISTS = 'FromDM'; -export const SOURCE_APPLY = 'SourceApply'; -export const FROM_HARDCAST = 'FromHardcast'; -export const FROM_MISTY_PEAKS = 'FromMistyPeaks'; -export const FROM_MISTS_OF_LIFE = 'FromMOL'; -export const FROM_RAPID_DIFFUSION = 'FromRD'; // can be linked to env mist or rsk cast -export const ENVELOPING_MIST_GOM = 'EnvGOM'; -export const RENEWING_MIST_GOM = 'ReMGOM'; -export const VIVIFY_GOM = 'ViVGOM'; -export const REVIVAL_GOM = 'RevivalGOM'; -export const ZEN_PULSE_GOM = 'ZPGOM'; -export const SHEILUNS_GIFT_GOM = 'SGGOM'; -export const SHEILUNS_GIFT = 'SheilunsGift'; -export const EXPEL_HARM_GOM = 'EHGOM'; -export const SOOM_GOM = 'SoomGOM'; -export const VIVIFY = 'Vivify'; -export const CALMING_COALESCENCE = 'Calming Coalescence'; -export const MANA_TEA_CHANNEL = 'MTChannel'; -export const MANA_TEA_CAST_LINK = 'MTLink'; -export const MT_BUFF_REMOVAL = 'MTStack'; -export const LIFECYCLES = 'Lifecycles'; -export const MT_STACK_CHANGE = 'MTStackChange'; -export const ANCIENT_TEACHINGS_FLS = 'ATFaelineStomp'; -export const ANCIENT_TEACHINGS_EF = 'ATEssenceFont'; +const APPLIED_HEAL = 'AppliedHeal'; +const FORCE_BOUNCE = 'ForceBounce'; +const OVERHEAL_BOUNCE = 'OverhealBounce'; +const BOUNCED = 'Bounced'; +const ESSENCE_FONT = 'EssenceFont'; +const FROM_DANCING_MISTS = 'FromDM'; +const SOURCE_APPLY = 'SourceApply'; +const FROM_HARDCAST = 'FromHardcast'; +const FROM_MISTY_PEAKS = 'FromMistyPeaks'; +const FROM_MISTS_OF_LIFE = 'FromMOL'; +const FROM_RAPID_DIFFUSION = 'FromRD'; // can be linked to env mist or rsk cast +const ENVELOPING_MIST_GOM = 'EnvGOM'; +const RENEWING_MIST_GOM = 'ReMGOM'; +const VIVIFY_GOM = 'ViVGOM'; +const REVIVAL_GOM = 'RevivalGOM'; +const ZEN_PULSE_GOM = 'ZPGOM'; +const SHEILUNS_GIFT_GOM = 'SGGOM'; +const SHEILUNS_GIFT = 'SheilunsGift'; +const EXPEL_HARM_GOM = 'EHGOM'; +const SOOM_GOM = 'SoomGOM'; +const VIVIFY = 'Vivify'; +const CALMING_COALESCENCE = 'Calming Coalescence'; +const MANA_TEA_CHANNEL = 'MTChannel'; +const MANA_TEA_CAST_LINK = 'MTLink'; +const MT_BUFF_REMOVAL = 'MTStack'; +const LIFECYCLES = 'Lifecycles'; +const MT_STACK_CHANGE = 'MTStackChange'; +const ANCIENT_TEACHINGS_FLS = 'ATFaelineStomp'; +const ANCIENT_TEACHINGS_EF = 'ATEssenceFont'; // -export const FRAGILE_ECHO_SOURCE = 'FragileEchoSource'; +const FRAGILE_ECHO_SOURCE = 'FragileEchoSource'; const RAPID_DIFFUSION_BUFFER_MS = 300; const DANCING_MIST_BUFFER_MS = 250; @@ -541,10 +541,6 @@ export function isFromHardcast(event: AbilityEvent): boolean { return false; } -export function isForceBounce(event: ApplyBuffEvent | RefreshBuffEvent) { - return HasRelatedEvent(event, FORCE_BOUNCE); -} - export function isBounceTick(event: HealEvent) { return HasRelatedEvent(event, OVERHEAL_BOUNCE); } @@ -622,10 +618,6 @@ export function isFromRevival(event: HealEvent) { return HasRelatedEvent(event, REVIVAL_GOM) && !isFromEssenceFont(event); } -export function isFromZenPulse(event: HealEvent) { - return HasRelatedEvent(event, ZEN_PULSE_GOM) && !isFromEssenceFont(event); -} - export function isFromExpelHarm(event: HealEvent) { return HasRelatedEvent(event, EXPEL_HARM_GOM) && !isFromEssenceFont(event); } diff --git a/src/analysis/retail/monk/windwalker/castDamage.ts b/src/analysis/retail/monk/windwalker/castDamage.ts index 0f25a3b001a..94ed756f78a 100644 --- a/src/analysis/retail/monk/windwalker/castDamage.ts +++ b/src/analysis/retail/monk/windwalker/castDamage.ts @@ -19,14 +19,3 @@ export const castDamageMap: ReadonlyMap = new Map([ [TALENTS_MONK.RISING_SUN_KICK_TALENT, [SPELLS.RISING_SUN_KICK_DAMAGE]], [TALENTS_MONK.JADEFIRE_STOMP_TALENT, [SPELLS.FAELINE_STOMP_PULSE_DAMAGE]], ]); - -const entries = Array.from(castDamageMap); - -/** Provide id of cast ability and get damage spell(s) back */ -export const castToDamage = Object.fromEntries( - entries.map(([cast, damage]) => [cast.id, damage] as const), -); -/** Provide id of damage ability and get cast ability back */ -export const damageToCast = Object.fromEntries( - entries.map(([cast, dSpells]) => dSpells.map((d) => [d.id, cast] as const)).flat(), -); diff --git a/src/analysis/retail/monk/windwalker/constants.ts b/src/analysis/retail/monk/windwalker/constants.ts index 8db73d721a4..202c398f5e3 100644 --- a/src/analysis/retail/monk/windwalker/constants.ts +++ b/src/analysis/retail/monk/windwalker/constants.ts @@ -1,9 +1,6 @@ import SPELLS from 'common/SPELLS'; -import Spell from 'common/SPELLS/Spell'; import { TALENTS_MONK } from 'common/TALENTS'; -import { castDamageMap } from './castDamage'; - // Based on SpellData for Hit Combo and Serenity export const ABILITIES_AFFECTED_BY_DAMAGE_INCREASES = [ SPELLS.MELEE, @@ -50,26 +47,6 @@ export const ABILITIES_AFFECTED_BY_MASTERY = [ TALENTS_MONK.STRIKE_OF_THE_WINDLORD_TALENT, ]; -export const DAMAGE_AFFECTED_BY_MASTERY = [ - SPELLS.TIGER_PALM, - SPELLS.BLACKOUT_KICK, - SPELLS.FISTS_OF_FURY_DAMAGE, - TALENTS_MONK.RISING_SUN_KICK_TALENT, - SPELLS.SPINNING_CRANE_KICK_DAMAGE, - SPELLS.FLYING_SERPENT_KICK_DAMAGE, - SPELLS.CRACKLING_JADE_LIGHTNING, - SPELLS.WHIRLING_DRAGON_PUNCH_TALENT, - TALENTS_MONK.CHI_WAVE_TALENT, - SPELLS.CHI_WAVE_TALENT_DAMAGE, - TALENTS_MONK.CHI_BURST_TALENT, - SPELLS.CHI_BURST_TALENT_DAMAGE, - TALENTS_MONK.RUSHING_JADE_WIND_TALENT, - SPELLS.EXPEL_HARM_DAMAGE, - TALENTS_MONK.JADEFIRE_STOMP_TALENT, - SPELLS.FAELINE_STOMP_PULSE_DAMAGE, - TALENTS_MONK.STRIKE_OF_THE_WINDLORD_TALENT, -]; - export const CHI_SPENDERS = [ SPELLS.BLACKOUT_KICK, TALENTS_MONK.RISING_SUN_KICK_TALENT, @@ -79,70 +56,4 @@ export const CHI_SPENDERS = [ TALENTS_MONK.STRIKE_OF_THE_WINDLORD_TALENT, ]; -export const ABILITIES_CLONED_BY_SEF = [ - SPELLS.TIGER_PALM, - SPELLS.BLACKOUT_KICK, - SPELLS.FISTS_OF_FURY_CAST, - SPELLS.FISTS_OF_FURY_DAMAGE, - TALENTS_MONK.RISING_SUN_KICK_TALENT, - SPELLS.RISING_SUN_KICK_DAMAGE, - TALENTS_MONK.CHI_WAVE_TALENT, - SPELLS.SPINNING_CRANE_KICK, - SPELLS.SPINNING_CRANE_KICK_DAMAGE, - SPELLS.CRACKLING_JADE_LIGHTNING, - SPELLS.WHIRLING_DRAGON_PUNCH_TALENT, - TALENTS_MONK.STRIKE_OF_THE_WINDLORD_TALENT, -]; - -/** - * Abilities that are affected by the T28 4-set bonus - * "Primordial Power" - * https://www.wowhead.com/spell=363924/primordial-power - * - * https://docs.google.com/spreadsheets/d/1QvAtBtaFKaAuhy9iGiMmEzCd--kuwL3oWIDwny6GEoQ/edit - */ -export const ABILITIES_THAT_CONSUME_PRIMORDIAL_POWER: Spell[] = [ - SPELLS.BLACKOUT_KICK, - TALENTS_MONK.CHI_BURST_TALENT, - TALENTS_MONK.CHI_WAVE_TALENT, - SPELLS.CRACKLING_JADE_LIGHTNING, - TALENTS_MONK.JADEFIRE_STOMP_TALENT, - SPELLS.FISTS_OF_FURY_CAST, - SPELLS.FLYING_SERPENT_KICK, - TALENTS_MONK.RISING_SUN_KICK_TALENT, - TALENTS_MONK.RUSHING_JADE_WIND_TALENT, - SPELLS.SPINNING_CRANE_KICK, - SPELLS.TIGER_PALM, - SPELLS.WHIRLING_DRAGON_PUNCH_TALENT, -]; - -/** - * Damage that is affected by the T28 4-set bonus - * "Primordial Power" - * https://www.wowhead.com/spell=363924/primordial-power - * - * https://docs.google.com/spreadsheets/d/1QvAtBtaFKaAuhy9iGiMmEzCd--kuwL3oWIDwny6GEoQ/edit - */ -export const DAMAGE_AFFECTED_BY_PRIMORDIAL_POWER: Spell[] = [ - // Include both all original cast events - ...ABILITIES_THAT_CONSUME_PRIMORDIAL_POWER, - // And all known damage spells - ...ABILITIES_THAT_CONSUME_PRIMORDIAL_POWER.map((a) => castDamageMap.get(a) || []).flat(), - SPELLS.EYE_OF_THE_TIGER_HEAL, - SPELLS.JADE_IGNITION_DAMAGE, -]; - -/** - * These spells are special cases that benefit from the 4p bonus while the - * buff is up, regardless if the cast was powered or not - * - * https://docs.google.com/spreadsheets/d/1QvAtBtaFKaAuhy9iGiMmEzCd--kuwL3oWIDwny6GEoQ/edit - */ -export const DAMAGE_AFFECTED_BY_PRIMORDIAL_POWER_NAIVELY: Spell[] = [ - ...(castDamageMap.get(TALENTS_MONK.CHI_BURST_TALENT) || []), - ...(castDamageMap.get(TALENTS_MONK.CHI_WAVE_TALENT) || []), - SPELLS.EYE_OF_THE_TIGER_HEAL, - SPELLS.JADE_IGNITION_DAMAGE, -]; - export const BLACKOUT_KICK_COOLDOWN_REDUCTION_MS = 1000; diff --git a/src/analysis/retail/paladin/holy/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/paladin/holy/normalizers/CastLinkNormalizer.ts index 96378c77602..e33ce39d9e3 100644 --- a/src/analysis/retail/paladin/holy/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/paladin/holy/normalizers/CastLinkNormalizer.ts @@ -11,12 +11,12 @@ import { } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; -export const LIGHTS_HAMMER_HEAL = 'LightsHammerHeal'; -export const FROM_DAYBREAK = 'FromDaybreak'; +const LIGHTS_HAMMER_HEAL = 'LightsHammerHeal'; +const FROM_DAYBREAK = 'FromDaybreak'; export const DAYBREAK_MANA = 'DaybreakMana'; export const GLIMMER_PROC = 'GlimmerProc'; export const HOLY_SHOCK_SOURCE = 'HolyShockSource'; -export const RISING_SUNLIGHT = 'RisingSunlight'; +const RISING_SUNLIGHT = 'RisingSunlight'; const SHORT_BUFFER_MS = 100; const MED_BUFFER_MS = 350; diff --git a/src/analysis/retail/paladin/protection/modules/CastLinkNormalizer.ts b/src/analysis/retail/paladin/protection/modules/CastLinkNormalizer.ts index 570017c7fe0..52d4259248e 100644 --- a/src/analysis/retail/paladin/protection/modules/CastLinkNormalizer.ts +++ b/src/analysis/retail/paladin/protection/modules/CastLinkNormalizer.ts @@ -2,11 +2,9 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/paladin'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { - CastEvent, EventType, DamageEvent, GetRelatedEvents, - HasRelatedEvent, ApplyBuffEvent, RefreshBuffEvent, } from 'parser/core/Events'; @@ -20,8 +18,6 @@ const GRAND_CRUSADER_HAMMER_OF_THE_RIGHTEOUS_CAST = 'FromHardcast'; const GRAND_CRUSADER_BLESSED_HAMMER_CAST = 'FromHardCast'; const GRAND_CRUSADER_JUDGMENT_CRIT = 'FromHardCast'; const GRAND_CRUSADER_PARRY = 'FromHardCast'; -const FROM_HARDCAST = 'FromHardcast'; -const CONSUMED_PROC = 'ConsumedProc'; const EVENT_LINKS: EventLink[] = [ // Crusader Strike Cast @@ -167,16 +163,4 @@ export function gcJudgmentCrit(event: ApplyBuffEvent | RefreshBuffEvent): Damage ).at(-1); } -export function getHardcast(event: DamageEvent): CastEvent | undefined { - return GetRelatedEvents( - event, - FROM_HARDCAST, - (e): e is CastEvent => e.type === EventType.Cast, - ).at(-1); -} - -export function consumedProc(event: DamageEvent): boolean { - return HasRelatedEvent(event, CONSUMED_PROC); -} - export default CastLinkNormalizer; diff --git a/src/analysis/retail/paladin/protection/modules/core/Defensives/DefensiveBuffLinkNormalizer.tsx b/src/analysis/retail/paladin/protection/modules/core/Defensives/DefensiveBuffLinkNormalizer.tsx index c1fe167e04f..1cbf65e0f97 100644 --- a/src/analysis/retail/paladin/protection/modules/core/Defensives/DefensiveBuffLinkNormalizer.tsx +++ b/src/analysis/retail/paladin/protection/modules/core/Defensives/DefensiveBuffLinkNormalizer.tsx @@ -1,6 +1,6 @@ import { Options } from 'parser/core/Analyzer'; import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { ApplyBuffEvent, EventType, GetRelatedEvents, RemoveBuffEvent } from 'parser/core/Events'; +import { EventType } from 'parser/core/Events'; import { buffId, MAJOR_DEFENSIVES } from './Defensivebuffs'; import { isTalent } from 'common/TALENTS/types'; @@ -27,11 +27,3 @@ export default class DefensiveBuffLinkNormalizer extends EventLinkNormalizer { super(options, links); } } - -export function defensiveApplication(event: RemoveBuffEvent): ApplyBuffEvent | undefined { - return GetRelatedEvents(event, reverseRelation)[0] as ApplyBuffEvent | undefined; -} - -export function defensiveExpiration(event: ApplyBuffEvent): RemoveBuffEvent | undefined { - return GetRelatedEvents(event, relation)[0] as RemoveBuffEvent | undefined; -} diff --git a/src/analysis/retail/paladin/protection/modules/talents/GiftOfTheGoldenValkyr.tsx b/src/analysis/retail/paladin/protection/modules/talents/GiftOfTheGoldenValkyr.tsx index 5b3638cec61..dbd9ab5585f 100644 --- a/src/analysis/retail/paladin/protection/modules/talents/GiftOfTheGoldenValkyr.tsx +++ b/src/analysis/retail/paladin/protection/modules/talents/GiftOfTheGoldenValkyr.tsx @@ -12,7 +12,7 @@ import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; import STATISTIC_ORDER from 'parser/ui/STATISTIC_ORDER'; import * as React from 'react'; -export const BASE_REDUCTION_TIME = 1000; // ms, per talent point, per target hit +const BASE_REDUCTION_TIME = 1000; // ms, per talent point, per target hit const SECOND = 1000; /** * Avenger's Shield reduces the cooldown of Guardian of Ancient Kings for 0.5seconds per target hit per talent point. diff --git a/src/analysis/retail/paladin/protection/modules/talents/ResoluteDefender.tsx b/src/analysis/retail/paladin/protection/modules/talents/ResoluteDefender.tsx index bdd8f3dd457..2f961702291 100644 --- a/src/analysis/retail/paladin/protection/modules/talents/ResoluteDefender.tsx +++ b/src/analysis/retail/paladin/protection/modules/talents/ResoluteDefender.tsx @@ -12,7 +12,7 @@ import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; import STATISTIC_ORDER from 'parser/ui/STATISTIC_ORDER'; import * as React from 'react'; -export const BASE_REDUCTION_TIME = 1000; // ms, per talent point +const BASE_REDUCTION_TIME = 1000; // ms, per talent point const SECOND = 1000; /** * Shield of the Righteous reduces the remaining cooldown on Divine Shield and Ardent Defender by 1 seconds. diff --git a/src/analysis/retail/paladin/retribution/constants.tsx b/src/analysis/retail/paladin/retribution/constants.tsx index 3abf57c0f35..80f9ad34912 100644 --- a/src/analysis/retail/paladin/retribution/constants.tsx +++ b/src/analysis/retail/paladin/retribution/constants.tsx @@ -2,36 +2,6 @@ import SPELLS from 'common/SPELLS/paladin'; import TALENTS from 'common/TALENTS/paladin'; import Spell from 'common/SPELLS/Spell'; -// Based on spelldata for Avenging Wrath -// Avenging Wrath also increases melee damage by 20% - this is added in their modules. -export const ABILITIES_AFFECTED_BY_DAMAGE_INCREASES = [ - SPELLS.CRUSADER_STRIKE, - SPELLS.JUDGMENT_CAST, - SPELLS.TEMPLARS_VERDICT_DAMAGE, - SPELLS.DIVINE_STORM_DAMAGE, - SPELLS.CONSECRATION_CAST, - SPELLS.ZEAL_DAMAGE, - SPELLS.SANCTIFIED_WRATH_DAMAGE, - TALENTS.BLADE_OF_JUSTICE_TALENT, - TALENTS.HAMMER_OF_WRATH_TALENT, - TALENTS.WAKE_OF_ASHES_TALENT, - TALENTS.EXECUTION_SENTENCE_TALENT, - TALENTS.JUSTICARS_VENGEANCE_TALENT, -]; - -// Stuff like Retribution mastery and Execution sentence increases damage done by these sources of holy damage -export const ABILITIES_AFFECTED_BY_HOLY_DAMAGE_INCREASES = [ - SPELLS.JUDGMENT_CAST, - SPELLS.TEMPLARS_VERDICT_DAMAGE, - SPELLS.DIVINE_STORM_DAMAGE, - SPELLS.CONSECRATION_CAST, - SPELLS.ZEAL_DAMAGE, - SPELLS.SANCTIFIED_WRATH_DAMAGE, - TALENTS.HAMMER_OF_WRATH_TALENT, - TALENTS.WAKE_OF_ASHES_TALENT, - TALENTS.JUSTICARS_VENGEANCE_TALENT, -]; - export const HOLY_POWER_FINISHERS: Spell[] = [ SPELLS.TEMPLARS_VERDICT_DAMAGE, SPELLS.FINAL_VERDICT_FINISHER, @@ -40,7 +10,6 @@ export const HOLY_POWER_FINISHERS: Spell[] = [ TALENTS.JUSTICARS_VENGEANCE_TALENT, ]; -export const CRUSADER_STRIKE_EMPYREAN_POWER_CHANCE = 0.15; export const CRUSADING_STRIKE_EMPYREAN_POWER_CHANCE = 0.05; export const HOLY_POWER_BUILDERS: Spell[] = [ diff --git a/src/analysis/retail/paladin/shared/constants.ts b/src/analysis/retail/paladin/shared/constants.ts index edf68b7b6ca..14670b00823 100644 --- a/src/analysis/retail/paladin/shared/constants.ts +++ b/src/analysis/retail/paladin/shared/constants.ts @@ -22,7 +22,7 @@ export const DAMAGE_HOLY_POWER_SPENDERS: readonly Spell[] = [ TALENTS.EXECUTION_SENTENCE_TALENT, ] as const; -export const BUFF_HOLY_POWER_SPENDERS: readonly Spell[] = [] as const; +const BUFF_HOLY_POWER_SPENDERS: readonly Spell[] = [] as const; export const ALL_HOLY_POWER_SPENDERS: readonly Spell[] = [ ...HEALING_HOLY_POWER_SPENDERS, @@ -30,7 +30,7 @@ export const ALL_HOLY_POWER_SPENDERS: readonly Spell[] = [ ...BUFF_HOLY_POWER_SPENDERS, ] as const; -export const SHARED_HOLY_POWER_GENERATORS = [ +const SHARED_HOLY_POWER_GENERATORS = [ SPELLS.CRUSADER_STRIKE, TALENTS.HAMMER_OF_WRATH_TALENT, TALENTS.DIVINE_TOLL_TALENT, diff --git a/src/analysis/retail/priest/discipline/SpellCalculations.ts b/src/analysis/retail/priest/discipline/SpellCalculations.ts index fdf21261028..dff9d9a9253 100644 --- a/src/analysis/retail/priest/discipline/SpellCalculations.ts +++ b/src/analysis/retail/priest/discipline/SpellCalculations.ts @@ -1,16 +1,11 @@ -import SinsOfTheMany from 'analysis/retail/priest/discipline/modules/spells/SinsOfTheMany'; import StatTracker from 'parser/shared/modules/StatTracker'; import { ATONEMENT_COEFFICIENT, PENANCE_COEFFICIENCT, - SMITE_COEFFICIENT, DISCIPLINE_DAMAGE_AURA_VALUE, } from './constants'; -// 50% dmg increase passive -const SMITE_DAMAGE_BUFF = 0.5; - /* * Wraps a spell calculation to accept the stats module * Essentially lets you compose modules with spell estimations @@ -50,24 +45,3 @@ export const OffensivePenanceBoltEstimation = statWrapper((stats: StatTracker) = boltHealing: penanceBoltHealing, }; }); - -// Estimation of how much output a Smite will do -export const SmiteEstimation = (stats: StatTracker, sins: SinsOfTheMany) => () => { - const currentIntellect = stats.currentIntellectRating; - const currentVers = 1 + stats.currentVersatilityPercentage; - const currentMastery = 1 + stats.currentMasteryPercentage; - const smiteCoefficient = SMITE_COEFFICIENT; - - let smiteDamage = currentIntellect * smiteCoefficient; - - smiteDamage = Math.round( - smiteDamage * currentVers * (1 + sins.currentBonus) * (1 + SMITE_DAMAGE_BUFF), - ); - - const smiteHealing = Math.round(smiteDamage * ATONEMENT_COEFFICIENT * currentMastery); - - return { - smiteDamage, - smiteHealing, - }; -}; diff --git a/src/analysis/retail/priest/discipline/constants.ts b/src/analysis/retail/priest/discipline/constants.ts index 017b7c4455b..648605cac0e 100644 --- a/src/analysis/retail/priest/discipline/constants.ts +++ b/src/analysis/retail/priest/discipline/constants.ts @@ -1,6 +1,5 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/priest'; -import { SpellFilter } from 'parser/core/EventFilter'; import { TALENTS_PRIEST } from 'common/TALENTS'; export const DISCIPLINE_ABILITIES_AFFECTED_BY_HEALING_INCREASES = [ SPELLS.ATONEMENT_HEAL_NON_CRIT.id, @@ -69,53 +68,6 @@ export const ATONEMENT_DAMAGE_IDS = [ SPELLS.ULTIMATE_PENITENCE_DAMAGE.id, ]; -export const ATONEMENT_SOURCE_FILTER: SpellFilter = [ - SPELLS.MAGIC_MELEE, - SPELLS.LIGHTSPAWN_MELEE, - SPELLS.SMITE, - SPELLS.PENANCE, - SPELLS.HALO_DAMAGE, - SPELLS.SHADOW_WORD_PAIN, - SPELLS.PURGE_THE_WICKED_TALENT, - SPELLS.PURGE_THE_WICKED_BUFF, - TALENTS_PRIEST.SCHISM_TALENT, - SPELLS.DIVINE_STAR_DAMAGE, - TALENTS.HOLY_NOVA_TALENT, - SPELLS.MIND_SEAR, - SPELLS.MIND_BLAST, - TALENTS_PRIEST.MINDGAMES_TALENT, - SPELLS.MINDGAMES_HEAL_REVERSAL, - SPELLS.SHADOW_HALO_DAMAGE, - SPELLS.SHADOW_DIVINE_STAR_DAMAGE, -]; - -// Spells which are consumed by the holy buff of Twilight Equilibrium -export const HOLY_DAMAGE_SPELLS = [ - SPELLS.SMITE.id, - SPELLS.PENANCE.id, - SPELLS.HALO_DAMAGE.id, - TALENTS_PRIEST.PURGE_THE_WICKED_TALENT.id, - SPELLS.DIVINE_STAR_DAMAGE.id, - TALENTS_PRIEST.HOLY_NOVA_TALENT.id, -]; -// Spells which are consumed by the shadow buff of Twilight Equilibrium -export const SHADOW_DAMAGE_SPELLS = [ - SPELLS.SHADOW_WORD_PAIN.id, - SPELLS.MIND_BLAST.id, - TALENTS_PRIEST.MINDGAMES_TALENT.id, - TALENTS_PRIEST.SHADOW_WORD_DEATH_TALENT.id, - TALENTS_PRIEST.SCHISM_TALENT.id, - SPELLS.SHADOW_HALO_DAMAGE.id, - SPELLS.SHADOW_DIVINE_STAR_DAMAGE.id, -]; - -export const ATONEMENT_APPLICATORS = [ - TALENTS_PRIEST.RENEW_TALENT.id, - SPELLS.FLASH_HEAL.id, - TALENTS_PRIEST.POWER_WORD_RADIANCE_TALENT.id, - SPELLS.POWER_WORD_SHIELD.id, -]; - export const EFFECTS_INCREASED_BY_BENEVOLENCE_DISCIPLINE = [ SPELLS.ATONEMENT_HEAL_NON_CRIT.id, SPELLS.ATONEMENT_HEAL_CRIT.id, @@ -139,12 +91,10 @@ export const EFFECTS_INCREASED_BY_BENEVOLENCE_DISCIPLINE = [ TALENTS_PRIEST.DIVINE_AEGIS_TALENT.id, ]; -export const SPIRIT_SHELL_COEFFICIENT = 0.8; export const ATONEMENT_COEFFICIENT = 0.5; export const DISCIPLINE_DAMAGE_AURA_VALUE = 0.94; export const PENANCE_COEFFICIENCT = 0.4; -export const SMITE_COEFFICIENT = 0.47; export const POWER_WORD_SHIELD_ATONEMENT_DUR = 15000; export const POWER_WORD_RADIANCE_ATONEMENT_DUR = 9000; diff --git a/src/analysis/retail/priest/discipline/normalizers/AtonementTracker.ts b/src/analysis/retail/priest/discipline/normalizers/AtonementTracker.ts index ed65365d629..e99b04a5d98 100644 --- a/src/analysis/retail/priest/discipline/normalizers/AtonementTracker.ts +++ b/src/analysis/retail/priest/discipline/normalizers/AtonementTracker.ts @@ -40,7 +40,7 @@ const EVENT_LINKS: EventLink[] = [ }, ]; -export function checkAtonementTargetsHealed(damageEvent: DamageEvent): number[] { +function checkAtonementTargetsHealed(damageEvent: DamageEvent): number[] { return getHealEvents(damageEvent).map((healEvent) => healEvent.targetID); } @@ -58,11 +58,8 @@ export function getDamageEvent(event: HealEvent) { return GetRelatedEvents(event, ATONEMENT_DAMAGE_EVENT).at(-1); } -export function getHealEvents(event: DamageEvent) { +function getHealEvents(event: DamageEvent) { return GetRelatedEvents(event, ATONEMENT_HEAL_EVENT); } -export function getAtonementHealEvents(event: DamageEvent) { - return GetRelatedEvents(event, ATONEMENT_HEAL_EVENT); -} export default AtonementNormalizer; diff --git a/src/analysis/retail/priest/discipline/normalizers/DamageCastLink.ts b/src/analysis/retail/priest/discipline/normalizers/DamageCastLink.ts index 69b7b12d535..ad03aa25f4f 100644 --- a/src/analysis/retail/priest/discipline/normalizers/DamageCastLink.ts +++ b/src/analysis/retail/priest/discipline/normalizers/DamageCastLink.ts @@ -103,10 +103,6 @@ class DamageCastLink extends EventLinkNormalizer { } } -export function getDamageAbility(event: CastEvent) { - return GetRelatedEvent(event, DAMAGE); -} - export function getCastAbility(event: DamageEvent) { return GetRelatedEvent(event, CAST); } diff --git a/src/analysis/retail/priest/holy/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/priest/holy/normalizers/CastLinkNormalizer.ts index 5934a0e0df1..8bb7d22971b 100644 --- a/src/analysis/retail/priest/holy/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/priest/holy/normalizers/CastLinkNormalizer.ts @@ -14,15 +14,14 @@ import SPELLS from 'common/SPELLS/priest'; const CAST_BUFFER_MS = 200; -export const FROM_HARDCAST = 'FromHardcast'; // for linking a heal to its cast -export const LIGHTWEAVER_APPLY = 'LightweaverApplication'; // link flash heal cast to applying the lightweaver buff -export const LIGHTWEAVER_CONSUME = 'LightweaverConsumption'; // link heal cast to removing the lightweaver buff -export const POH_CAST = 'PrayerOfHealingCast'; -export const COH_CAST = 'CircleOfHealingCast'; -export const SERENITY_CAST = 'HolyWordSerenityCast'; -export const SANCTIFY_CAST = 'HolyWordSanctifyCast'; -export const SALVATION_CAST = 'HolyWordSalvationCast'; -export const CHASTISE_CAST = 'HolyWordChastiseCast'; +const FROM_HARDCAST = 'FromHardcast'; // for linking a heal to its cast +const LIGHTWEAVER_CONSUME = 'LightweaverConsumption'; // link heal cast to removing the lightweaver buff +const POH_CAST = 'PrayerOfHealingCast'; +const COH_CAST = 'CircleOfHealingCast'; +const SERENITY_CAST = 'HolyWordSerenityCast'; +const SANCTIFY_CAST = 'HolyWordSanctifyCast'; +const SALVATION_CAST = 'HolyWordSalvationCast'; +const CHASTISE_CAST = 'HolyWordChastiseCast'; export const LIGHTWELL_RENEW_HEALS = 'LightwellRenewHeal'; export const SALVATION_RENEW_HEALS = 'SalvationRenewHeal'; export const LIGHTWELL_RENEW = 'LightwellRenew'; diff --git a/src/analysis/retail/priest/shadow/constants.ts b/src/analysis/retail/priest/shadow/constants.ts index 98b7a45a1c5..2c7a3a346aa 100644 --- a/src/analysis/retail/priest/shadow/constants.ts +++ b/src/analysis/retail/priest/shadow/constants.ts @@ -1,25 +1,18 @@ -import TALENTS from 'common/TALENTS/priest'; - export const DISPERSION_BASE_CD = 120; export const DISPERSION_UPTIME_MS = 6000; export const SHADOW_WORD_DEATH_EXECUTE_RANGE = 0.2; -export const MINDBENDER_UPTIME_MS = 15000; - export const MS_BUFFER = 100; export const AUSPICIOUS_SPIRITS_DAMAGE_MULTIPLIER = 1.15; -export const TWIST_OF_FATE_INCREASE = 1.1; - export const VOID_TORRENT_MAX_TIME = 3000; export const VOID_TORRENT_MAX_INSANITY = 24; export const VOID_TORRENT_INSANITY_PER_TICK = 6; export const INESCAPABLE_TORMENT_EXTENSION = 0.7; -export const VOID_FORM_ACTIVATORS = [TALENTS.VOID_ERUPTION_TALENT.id]; export const VOID_FORM_DURATION = 20; export const INSIDIOUS_IRE_DAMAGE_PER_RANK = 0.2; diff --git a/src/analysis/retail/priest/shadow/modules/guide/ExtraComponents.tsx b/src/analysis/retail/priest/shadow/modules/guide/ExtraComponents.tsx index e78d711e74b..119318f38b5 100644 --- a/src/analysis/retail/priest/shadow/modules/guide/ExtraComponents.tsx +++ b/src/analysis/retail/priest/shadow/modules/guide/ExtraComponents.tsx @@ -3,7 +3,7 @@ import { QualitativePerformance } from 'parser/ui/QualitativePerformance'; import { ComponentProps, ReactNode } from 'react'; import { PerformanceMark, qualitativePerformanceToColor } from 'interface/guide'; -export const ColoredStrong = styled.strong` +const ColoredStrong = styled.strong` color: ${(props) => props.color}; `; diff --git a/src/analysis/retail/priest/shared/BoonOfTheAscended.tsx b/src/analysis/retail/priest/shared/BoonOfTheAscended.tsx deleted file mode 100644 index cb43946f8dc..00000000000 --- a/src/analysis/retail/priest/shared/BoonOfTheAscended.tsx +++ /dev/null @@ -1,352 +0,0 @@ -import AtonementDamageSource from 'analysis/retail/priest/discipline/modules/features/AtonementDamageSource'; -import { formatNumber, formatPercentage } from 'common/format'; -import SPECS from 'game/SPECS'; -import { SpellIcon, TooltipElement } from 'interface'; -import Analyzer from 'parser/core/Analyzer'; -import { DamageEvent } from 'parser/core/Events'; -import { Options } from 'parser/core/Module'; -import Abilities from 'parser/core/modules/Abilities'; - -// const DAMAGING_SPELL_IDS = [ -// SPELLS.ASCENDED_BLAST.id, -// SPELLS.ASCENDED_NOVA.id, -// SPELLS.ASCENDED_ERUPTION.id, -// ]; - -// const HEALING_SPELL_ID_MAP = { -// [SPELLS.ASCENDED_BLAST_HEAL.id]: SPELLS.ASCENDED_BLAST.id, -// [SPELLS.ASCENDED_NOVA_HEAL.id]: SPELLS.ASCENDED_NOVA.id, -// [SPELLS.ASCENDED_ERUPTION_HEAL.id]: SPELLS.ASCENDED_ERUPTION.id, -// }; - -interface AscendedSpellTracker { - casts: number; - friendlyHits: number; - enemyHits: number; - healingDone: number; - overHealingDone: number; - atonmentHealingDone: number; - atonementOverHealingDone: number; - damageDone: number; -} - -// Shadow: https://www.warcraftlogs.com/reports/CdrMAqzkLaKZTVn4#fight=1&type=damage-done&graphperf=1&source=19 -// Holy: https://www.warcraftlogs.com/reports/xf7zjvNghdXVRrFT#fight=7&type=healing&graphperf=1&source=18 -// Disc: https://www.warcraftlogs.com/reports/FwfkDG87xzV9CWra#fight=17&type=healing&source=14 -class BoonOfTheAscended extends Analyzer { - static dependencies = { - abilities: Abilities, - }; - protected abilities!: Abilities; - - castCount = 0; - stackTracker: number[] = []; - - // Disc Specific - atonementDamageSource: AtonementDamageSource | null = null; - - ascendedSpellTracker: { [spellId: number]: AscendedSpellTracker } = { - // [SPELLS.ASCENDED_BLAST.id]: { - // casts: 0, - // friendlyHits: 0, - // enemyHits: 0, - // healingDone: 0, - // overHealingDone: 0, - // atonmentHealingDone: 0, - // atonementOverHealingDone: 0, - // damageDone: 0, - // }, - // [SPELLS.ASCENDED_NOVA.id]: { - // casts: 0, - // friendlyHits: 0, - // enemyHits: 0, - // healingDone: 0, - // overHealingDone: 0, - // atonmentHealingDone: 0, - // atonementOverHealingDone: 0, - // damageDone: 0, - // }, - // [SPELLS.ASCENDED_ERUPTION.id]: { - // casts: 0, - // friendlyHits: 0, - // enemyHits: 0, - // healingDone: 0, - // overHealingDone: 0, - // atonmentHealingDone: 0, - // atonementOverHealingDone: 0, - // damageDone: 0, - // }, - }; - - get totalDamage() { - return Object.values(this.ascendedSpellTracker).reduce((a, b) => a + b.damageDone, 0); - } - - get totalDirectHealing() { - return Object.values(this.ascendedSpellTracker).reduce((a, b) => a + b.healingDone, 0); - } - - get totalDirectOverHealing() { - return Object.values(this.ascendedSpellTracker).reduce((a, b) => a + b.overHealingDone, 0); - } - - get totalAtonementHealing() { - return Object.values(this.ascendedSpellTracker).reduce((a, b) => a + b.atonmentHealingDone, 0); - } - - get totalAtonementOverHealing() { - return Object.values(this.ascendedSpellTracker).reduce( - (a, b) => a + b.atonementOverHealingDone, - 0, - ); - } - - get averageStacks() { - if (this.stackTracker.length === 0) { - return 0; - } - - return this.stackTracker.reduce((a, b) => a + b, 0) / this.stackTracker.length; - } - - get isDisc() { - return this.selectedCombatant.spec === SPECS.DISCIPLINE_PRIEST; - } - - constructor(options: Options) { - super(options); - - this.active = false; - if (!this.active) { - return; - } - - // const castEfficiency = - // this.selectedCombatant.spec === SPECS.SHADOW_PRIEST - // ? { - // suggestion: true, - // recommendedEfficiency: 0.9, - // averageIssueEfficiency: 0.8, - // majorIssueEfficiency: 0.7, - // } - // : { - // suggestion: true, - // recommendedEfficiency: 0.8, - // averageIssueEfficiency: 0.6, - // majorIssueEfficiency: 0.4, - // }; - // (options.abilities as Abilities).add({ - // spell: SPELLS.BOON_OF_THE_ASCENDED.id, - // category: SPELL_CATEGORY.ROTATIONAL, - // cooldown: 180, - // enabled: true, - // gcd: { - // base: 1500, - // }, - // castEfficiency: castEfficiency, - // }); - // (options.abilities as Abilities).add({ - // spell: SPELLS.ASCENDED_BLAST.id, - // category: SPELL_CATEGORY.ROTATIONAL, - // enabled: true, - // gcd: { - // base: 1000, - // }, - // }); - // (options.abilities as Abilities).add({ - // spell: SPELLS.ASCENDED_NOVA.id, - // category: SPELL_CATEGORY.ROTATIONAL, - // enabled: true, - // gcd: { - // base: 1000, - // }, - // }); - // (options.abilities as Abilities).add({ - // spell: SPELLS.ASCENDED_ERUPTION.id, - // category: SPELL_CATEGORY.ROTATIONAL, - // enabled: true, - // gcd: { - // base: 0, - // }, - // }); - - // if (this.isDisc) { - // this.atonementDamageSource = this.owner.getModule(AtonementDamageSource); - // this.addEventListener( - // Events.heal - // .by(SELECTED_PLAYER) - // .spell([SPELLS.ATONEMENT_HEAL_NON_CRIT, SPELLS.ATONEMENT_HEAL_CRIT]), - // this.onAtonmentHeal, - // ); - // } - - // this.addEventListener( - // Events.cast.by(SELECTED_PLAYER).spell(SPELLS.BOON_OF_THE_ASCENDED), - // this.onCast, - // ); - // this.addEventListener( - // Events.removebuff.by(SELECTED_PLAYER).spell(SPELLS.BOON_OF_THE_ASCENDED), - // this.onBuffRemove, - // ); - // this.addEventListener( - // Events.damage - // .by(SELECTED_PLAYER) - // .spell([SPELLS.ASCENDED_BLAST, SPELLS.ASCENDED_NOVA, SPELLS.ASCENDED_ERUPTION]), - // this.onDamage, - // ); - // this.addEventListener( - // Events.heal - // .by(SELECTED_PLAYER) - // .spell([ - // SPELLS.ASCENDED_BLAST_HEAL, - // SPELLS.ASCENDED_NOVA_HEAL, - // SPELLS.ASCENDED_ERUPTION_HEAL, - // ]), - // this.onNormalHeal, - // ); - } - - onCast() { - this.castCount += 1; - } - - onDamage(event: DamageEvent) { - this.ascendedSpellTracker[event.ability.guid].damageDone += - event.amount + (event.absorbed || 0); - this.ascendedSpellTracker[event.ability.guid].enemyHits += 1; - } - - // onAtonmentHeal(event: HealEvent) { - // if (!this.atonementDamageSource) { - // return; - // } - // const atonenementDamageEvent = this.atonementDamageSource.event; - // if ( - // !atonenementDamageEvent || - // !DAMAGING_SPELL_IDS.includes(atonenementDamageEvent.ability.guid) - // ) { - // return; - // } - // - // this.ascendedSpellTracker[atonenementDamageEvent.ability.guid].atonmentHealingDone += - // event.amount; - // // TODO: Fix Spirit Shell - // if (!this.selectedCombatant.hasBuff(SPELLS.SPIRIT_SHELL_TALENT_BUFF.id)) { - // this.ascendedSpellTracker[atonenementDamageEvent.ability.guid].atonmentHealingDone += - // event.absorb || 0; - // } - // - // this.ascendedSpellTracker[atonenementDamageEvent.ability.guid].atonementOverHealingDone += - // event.overheal || 0; - // } - - // onNormalHeal(event: HealEvent) { - // this.ascendedSpellTracker[HEALING_SPELL_ID_MAP[event.ability.guid]].healingDone += event.amount; - // // TODO: Fix Spirit Shell - // if (!this.selectedCombatant.hasBuff(SPELLS.SPIRIT_SHELL_TALENT_BUFF.id)) { - // this.ascendedSpellTracker[HEALING_SPELL_ID_MAP[event.ability.guid]].healingDone += - // event.absorb || 0; - // } - // - // this.ascendedSpellTracker[HEALING_SPELL_ID_MAP[event.ability.guid]].overHealingDone += - // event.overheal || 0; - // this.ascendedSpellTracker[HEALING_SPELL_ID_MAP[event.ability.guid]].friendlyHits += 1; - // } - - onBuffRemove() { - // This has an accurate buff count until after this event resolves. - // this.stackTracker.push(this.selectedCombatant.getBuffStacks(SPELLS.BOON_OF_THE_ASCENDED.id)); - } - - getOverhealingPercent(totalHealing: number, totalOverHealing: number) { - return formatPercentage(totalOverHealing / (totalHealing + totalOverHealing)); - } - - spellTable() { - return Object.entries(this.ascendedSpellTracker).map(([spellId, data]) => ( - - - - - - - {formatNumber(data.healingDone)} - - - {this.isDisc && ( - - - {formatNumber(data.atonmentHealingDone)} - - - )} - {formatNumber(data.damageDone)} - - {data.friendlyHits} | - {data.enemyHits} - - - )); - } - - // statistic() { - // return ( - // - // Total Casts: {this.castCount} - //
- // Average Boon Stacks: {this.averageStacks} - // - // } - // dropdown={ - // - // - // - // - // - // {this.isDisc && } - // - // - // - // - // - // {this.spellTable()} - //
SpellHealingAtonement HealingDamage - // - // Friendly |{' '} - // Enemy - // - // } - // > - // Targets Hit - // - //
- // } - // category={STATISTIC_CATEGORY.COVENANTS} - // > - // - // - //
- // - //
- //
- // ); - // } -} - -export default BoonOfTheAscended; diff --git a/src/analysis/retail/priest/shared/FaeGuardians.tsx b/src/analysis/retail/priest/shared/FaeGuardians.tsx deleted file mode 100644 index 4bc80352cb8..00000000000 --- a/src/analysis/retail/priest/shared/FaeGuardians.tsx +++ /dev/null @@ -1,160 +0,0 @@ -import RESOURCE_TYPES from 'game/RESOURCE_TYPES'; -import Analyzer, { Options } from 'parser/core/Analyzer'; -import { calculateEffectiveDamageReduction } from 'parser/core/EventCalculateLib'; -import { - ApplyBuffEvent, - DamageEvent, - RemoveBuffEvent, - ResourceChangeEvent, -} from 'parser/core/Events'; -import Abilities from 'parser/core/modules/Abilities'; -import Combatants from 'parser/shared/modules/Combatants'; - -const GUARDIAN_DAMAGE_REDUCTION = 0.2; - -// Holy: https://www.warcraftlogs.com/reports/2frFV7hnRg4ZxXcA#fight=5 -// Shadow: https://www.warcraftlogs.com/reports/WqcaKR9nNkChXyfm#fight=5 -// Disc: https://www.warcraftlogs.com/reports/6bRMLg9fr4wThkdP#fight=37 -class FaeGuardians extends Analyzer { - static dependencies = { - combatants: Combatants, - abilities: Abilities, - }; - protected combatants!: Combatants; - protected abilities!: Abilities; - - totalCasts = 0; - - // Wrathful Faerie - manaGenerated = 0; - insanityGenerated = 0; - - // Guardian Faerie - currentShieldedTargetId = -1; - damageReduced = 0; - - // Benevolent Faerie - benevolentApplicationTime = 0; - benevolentBuffUptime = 0; - - constructor(options: Options) { - super(options); - - this.active = false; - if (!this.active) { - return; - } - - // const castEfficiency = - // this.selectedCombatant.spec === SPECS.SHADOW_PRIEST - // ? { - // suggestion: true, - // recommendedEfficiency: 0.9, - // averageIssueEfficiency: 0.8, - // majorIssueEfficiency: 0.7, - // } - // : { - // suggestion: true, - // recommendedEfficiency: 0.8, - // averageIssueEfficiency: 0.6, - // majorIssueEfficiency: 0.4, - // }; - // (options.abilities as Abilities).add({ - // spell: SPELLS.FAE_GUARDIANS.id, - // category: SPELL_CATEGORY.COOLDOWNS, - // cooldown: 90, - // enabled: true, - // gcd: { - // base: 1500, - // }, - // castEfficiency: castEfficiency, - // }); - // - // this.addEventListener(Events.cast.by(SELECTED_PLAYER).spell(SPELLS.FAE_GUARDIANS), this.onCast); - // this.addEventListener( - // Events.resourcechange.by(SELECTED_PLAYER).spell(SPELLS.WRATHFUL_FAERIE_ENERGIZE), - // this.onEnergize, - // ); - // this.addEventListener( - // Events.applybuff.by(SELECTED_PLAYER).spell(SPELLS.GUARDIAN_FAERIE), - // this.onGuardianApply, - // ); - // this.addEventListener( - // Events.removebuff.by(SELECTED_PLAYER).spell(SPELLS.GUARDIAN_FAERIE), - // this.onGuardianRemove, - // ); - // this.addEventListener( - // Events.applybuff.by(SELECTED_PLAYER).spell(SPELLS.BENEVOLENT_FAERIE), - // this.onBenevolentApply, - // ); - // this.addEventListener( - // Events.removebuff.by(SELECTED_PLAYER).spell(SPELLS.BENEVOLENT_FAERIE), - // this.onBenevolentRemove, - // ); - // this.addEventListener(Events.damage, this.onDamage); - } - - onDamage(event: DamageEvent) { - if (event.targetID !== this.currentShieldedTargetId) { - return; - } - this.damageReduced += calculateEffectiveDamageReduction(event, GUARDIAN_DAMAGE_REDUCTION); - } - - onEnergize(event: ResourceChangeEvent) { - if (event.resourceChangeType === RESOURCE_TYPES.MANA.id) { - this.manaGenerated += event.resourceChange || 0; - } - if (event.resourceChangeType === RESOURCE_TYPES.INSANITY.id) { - this.insanityGenerated += event.resourceChange || 0; - } - } - - onGuardianApply(event: ApplyBuffEvent) { - this.currentShieldedTargetId = event.targetID; - } - - onGuardianRemove() { - this.currentShieldedTargetId = -1; - } - - onBenevolentApply(event: ApplyBuffEvent) { - this.benevolentApplicationTime = event.timestamp; - } - - onBenevolentRemove(event: RemoveBuffEvent) { - this.benevolentBuffUptime += event.timestamp - this.benevolentApplicationTime; - } - - onCast() { - this.totalCasts += 1; - } - - // statistic() { - // return ( - // - // - // <> - // {this.manaGenerated > 0 && ( - // <> - // - //
- // - // )} - // {this.insanityGenerated > 0 && ( - // <> - // - //
- // - // )} - // {formatNumber(this.damageReduced)} Dmg Reduced - //
- // {formatNumber(this.benevolentBuffUptime / 1000)} Seconds CDR - // - //
- //
- // ); - // } -} - -export default FaeGuardians; diff --git a/src/analysis/retail/priest/shared/UnholyNova.tsx b/src/analysis/retail/priest/shared/UnholyNova.tsx deleted file mode 100644 index cf6104e0f34..00000000000 --- a/src/analysis/retail/priest/shared/UnholyNova.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import Analyzer, { Options } from 'parser/core/Analyzer'; -import { ApplyDebuffEvent, CastEvent, DamageEvent, HealEvent } from 'parser/core/Events'; -import Abilities from 'parser/core/modules/Abilities'; -import { ThresholdStyle } from 'parser/core/ParseResults'; - -const APPLICATION_THRESHOLD = 5000; - -// Holy: https://www.warcraftlogs.com/reports/MtraPqxwdB4hRG7j#fight=2 -// Shadow: https://www.warcraftlogs.com/reports/KVDfG2wnb8pABJhj#fight=45 -// Disc: https://www.warcraftlogs.com/reports/GWPC9kQ41yg6z8Xx#fight=47 -class UnholyNova extends Analyzer { - static dependencies = { - abilities: Abilities, - }; - protected abilities!: Abilities; - - totalDamage = 0; - totalHealing = 0; - totalOverHealing = 0; - - castEvents: CastEvent[] = []; - applicationEvents: ApplyDebuffEvent[] = []; - - get totalCasts(): number { - return this.castEvents.length; - } - - get totalApplications(): number { - return this.applicationEvents.length; - } - - get totalMisses(): number { - let totalMisses = 0; - for (const castEvent of this.castEvents) { - let didHit = false; - for (const applicationEvent of this.applicationEvents) { - if (Math.abs(applicationEvent.timestamp - castEvent.timestamp) < APPLICATION_THRESHOLD) { - didHit = true; - break; - } - } - if (!didHit) { - totalMisses += 1; - } - } - return totalMisses; - } - - constructor(options: Options) { - super(options); - - this.active = false; - if (!this.active) { - return; - } - - // const castEfficiency = - // this.selectedCombatant.spec === SPECS.SHADOW_PRIEST - // ? { - // suggestion: true, - // recommendedEfficiency: 0.9, - // averageIssueEfficiency: 0.8, - // majorIssueEfficiency: 0.7, - // } - // : { - // suggestion: true, - // recommendedEfficiency: 0.8, - // averageIssueEfficiency: 0.6, - // majorIssueEfficiency: 0.4, - // }; - // (options.abilities as Abilities).add({ - // spell: SPELLS.UNHOLY_NOVA.id, - // category: SPELL_CATEGORY.COOLDOWNS, - // cooldown: 60, - // enabled: true, - // gcd: { - // base: 1500, - // }, - // castEfficiency: castEfficiency, - // }); - // - // this.addEventListener(Events.cast.by(SELECTED_PLAYER).spell(SPELLS.UNHOLY_NOVA), this.onCast); - // this.addEventListener( - // Events.damage.by(SELECTED_PLAYER).spell(SPELLS.UNHOLY_TRANSFUSION_DAMAGE), - // this.onDamage, - // ); - // this.addEventListener( - // Events.heal.by(SELECTED_PLAYER).spell(SPELLS.UNHOLY_NOVA_BUFF), - // this.onHeal, - // ); - // this.addEventListener( - // Events.heal.by(SELECTED_PLAYER).spell(SPELLS.UNHOLY_TRANSFUSION), - // this.onHeal, - // ); - // this.addEventListener( - // Events.applydebuff.by(SELECTED_PLAYER).spell(SPELLS.UNHOLY_TRANSFUSION_DAMAGE), - // this.onApplyDebuff, - // ); - } - - onCast(event: CastEvent) { - this.castEvents.push(event); - } - - onApplyDebuff(event: ApplyDebuffEvent) { - this.applicationEvents.push(event); - } - - onDamage(event: DamageEvent) { - this.totalDamage += event.amount + (event.absorb || 0); - } - - onHeal(event: HealEvent) { - this.totalHealing += event.amount; - this.totalOverHealing += event.overheal || 0; - } - - get efficiencySuggestionThresholds() { - return { - actual: this.totalMisses, - isGreaterThan: { - minor: 0, - average: 0, - major: 0, - }, - style: ThresholdStyle.NUMBER, - }; - } - - // suggestions(when: When) { - // when(this.efficiencySuggestionThresholds).addSuggestion((suggest, actual, recommended) => - // suggest( - // <> - // - // Try not to miss with . - // - //
- // - // is a projectile that targets the ground where - // your target is currently standing. If your target moves or becomes untargetable, Unholy - // Nova can completely miss. Try and avoid casting Unholy Nova when the target is about to - // move. - // - // , - // ) - // .icon(SPELLS.UNHOLY_NOVA.icon) - // .actual(`${this.totalMisses} misses out of ${this.totalCasts} total casts.`) - // .recommended(`0 misses is recommended`), - // ); - // } - - // statistic() { - // return ( - // - // <>Enemies hit per cast: {(this.totalApplications / this.totalCasts).toFixed(2)} - //
- // <>Complete misses: {this.totalMisses} - //
- // <> - // Total Healing: {formatNumber(this.totalHealing)} ( - // {formatPercentage( - // this.totalOverHealing / (this.totalHealing + this.totalOverHealing), - // )} - // % OH) - // - // - // } - // > - // - // <> - // - //
- // - // - //
- //
- // ); - // } -} - -export default UnholyNova; diff --git a/src/analysis/retail/priest/shared/index.ts b/src/analysis/retail/priest/shared/index.ts index 5c3bffa48a2..97db064a3cc 100644 --- a/src/analysis/retail/priest/shared/index.ts +++ b/src/analysis/retail/priest/shared/index.ts @@ -1,9 +1,6 @@ -export { default as BoonOfTheAscended } from './BoonOfTheAscended'; export { default as DesperatePrayer } from './DesperatePrayer'; -export { default as FaeGuardians } from './FaeGuardians'; export { default as Mindgames } from './Mindgames'; export { default as ShadowfiendNormalizer } from './ShadowfiendNormalizer'; export { default as TwinsOfTheSunPriestess } from './TwinsOfTheSunPriestess'; -export { default as UnholyNova } from './UnholyNova'; export { default as TranslucentImage } from './TranslucentImage'; export { default as TwistOfFate } from './TwistOfFate'; diff --git a/src/analysis/retail/rogue/assassination/constants.tsx b/src/analysis/retail/rogue/assassination/constants.tsx index fca3811f2b4..7be4111c5dc 100644 --- a/src/analysis/retail/rogue/assassination/constants.tsx +++ b/src/analysis/retail/rogue/assassination/constants.tsx @@ -9,47 +9,12 @@ import { ChecklistUsageInfo } from 'parser/core/SpellUsage/core'; import { QualitativePerformance } from 'parser/ui/QualitativePerformance'; import Fight from 'parser/core/Fight'; -// from https://www.wowhead.com/spell=137037/assassination-rogue -export const ABILITIES_AFFECTED_BY_DAMAGE_INCREASES = [ - SPELLS.MELEE, - // SPELLS.BLINDSIDE_TALENT, - // SPELLS.CRIMSON_TEMPEST_TALENT, - SPELLS.ENVENOM, - SPELLS.FAN_OF_KNIVES, - SPELLS.GARROTE, - SPELLS.MUTILATE, - SPELLS.MUTILATE_MAINHAND, - SPELLS.MUTILATE_OFFHAND, - SPELLS.POISON_BOMB, - SPELLS.POISONED_KNIFE, - SPELLS.RUPTURE, - // SPELLS.INTERNAL_BLEEDING_TALENT, - SPELLS.DEADLY_POISON_DOT, - SPELLS.DEADLY_POISON_PROC, - SPELLS.WOUND_POISON, -]; - -// from https://www.wowhead.com/spell=196864/master-poisoner -export const ABILITIES_AFFECTED_BY_POISON_DAMAGE_INCREASES = [ - SPELLS.DEADLY_POISON_DOT, - SPELLS.DEADLY_POISON_PROC, - SPELLS.WOUND_POISON, -]; - -export const NIGHTSTALKER_BLACKLIST = [ - SPELLS.MELEE, - SPELLS.RUPTURE, - SPELLS.GARROTE, - // SPELLS.CRIMSON_TEMPEST_TALENT, - SPELLS.DEADLY_POISON_DOT, -]; - export const GARROTE_BASE_DURATION = 18000; export const getGarroteDuration = (): number => GARROTE_BASE_DURATION; -export const animachargedFinisherComboPoints = 7; +const animachargedFinisherComboPoints = 7; -export const getMaxComboPoints = (c: Combatant) => { +const getMaxComboPoints = (c: Combatant) => { return 5 + c.getTalentRank(TALENTS.DEEPER_STRATAGEM_TALENT); }; @@ -58,7 +23,7 @@ export const getTargetComboPoints = (c: Combatant) => { }; export const RUPTURE_BASE_DURATION = 4000; -export const RUPTURE_DURATION_PR_CP_SPENT = 4000; +const RUPTURE_DURATION_PR_CP_SPENT = 4000; export const getRuptureDuration = (c: Combatant, cast: CastEvent): number => { if (isAnimachargedFinisherCast(c, cast)) { return getRuptureFullDuration(c); @@ -77,7 +42,7 @@ export const getRuptureFullDuration = (c: Combatant) => { }; export const CRIMSON_TEMPEST_BASE_DURATION = 2000; -export const CRIMSON_TEMPEST_DURATION_PR_CP_SPENT = 2000; +const CRIMSON_TEMPEST_DURATION_PR_CP_SPENT = 2000; export const getCrimsonTempestDuration = (cast: CastEvent): number => CRIMSON_TEMPEST_BASE_DURATION + CRIMSON_TEMPEST_DURATION_PR_CP_SPENT * getResourceSpent(cast, RESOURCE_TYPES.COMBO_POINTS); @@ -155,8 +120,8 @@ export const isAnimachargedFinisherCast = (c: Combatant, event: CastEvent): bool return false; }; -export const AnimachargedFinisherSummary = () =>
Consumed Animacharged CP
; -export const AnimachargedFinisherDetails = () =>
You consumed an Animacharged CP.
; +const AnimachargedFinisherSummary = () =>
Consumed Animacharged CP
; +const AnimachargedFinisherDetails = () =>
You consumed an Animacharged CP.
; export const animachargedCheckedUsageInfo = ( c: Combatant, @@ -177,7 +142,5 @@ export const animachargedCheckedUsageInfo = ( ]; }; -export const pandemicMaxDuration = (duration: number) => duration * 1.3; - export const isInOpener = (event: AnyEvent, fight: Fight) => event.timestamp - fight.start_time <= OPENER_MAX_DURATION_MS; diff --git a/src/analysis/retail/rogue/assassination/guide/ExperimentalKingsbaneContext.tsx b/src/analysis/retail/rogue/assassination/guide/ExperimentalKingsbaneContext.tsx index 9fcf599a372..b884e79b2cd 100644 --- a/src/analysis/retail/rogue/assassination/guide/ExperimentalKingsbaneContext.tsx +++ b/src/analysis/retail/rogue/assassination/guide/ExperimentalKingsbaneContext.tsx @@ -13,7 +13,7 @@ const ExperimentalKingsbaneCtx = createContext({ }, }); -export const useExperimentalKingsbane = () => useContext(ExperimentalKingsbaneCtx); +const useExperimentalKingsbane = () => useContext(ExperimentalKingsbaneCtx); export const ExperimentalKingsbaneToggle = () => { const { isExplanationEnabled, setExplanationEnabled } = useExperimentalKingsbane(); diff --git a/src/analysis/retail/rogue/assassination/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/rogue/assassination/normalizers/CastLinkNormalizer.ts index 01db965ca09..ff76980edb8 100644 --- a/src/analysis/retail/rogue/assassination/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/rogue/assassination/normalizers/CastLinkNormalizer.ts @@ -1,16 +1,12 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { Options } from 'parser/core/Module'; import { - AbilityEvent, - AnyEvent, ApplyDebuffEvent, CastEvent, DamageEvent, EventType, GetRelatedEvent, GetRelatedEvents, - HasAbility, - HasRelatedEvent, RefreshDebuffEvent, } from 'parser/core/Events'; import SPELLS from 'common/SPELLS/rogue'; @@ -19,7 +15,7 @@ import TALENTS from 'common/TALENTS/rogue'; export const CAST_BUFFER_MS = 200; export const FROM_HARDCAST = 'FromHardcast'; -export const HIT_TARGET = 'HitTarget'; +const HIT_TARGET = 'HitTarget'; const EVENT_LINKS: EventLink[] = [ { @@ -91,10 +87,6 @@ export default class CastLinkNormalizer extends EventLinkNormalizer { } } -export function isFromHardcast(event: AnyEvent): boolean { - return HasRelatedEvent(event, FROM_HARDCAST); -} - export function getHardcast( event: ApplyDebuffEvent | RefreshDebuffEvent | DamageEvent, ): CastEvent | undefined { @@ -104,7 +96,3 @@ export function getHardcast( export function getHitCount(aoeCastEvent: CastEvent): number { return GetRelatedEvents(aoeCastEvent, HIT_TARGET).length; } - -export function getHits(castEvent: CastEvent): AbilityEvent[] { - return GetRelatedEvents(castEvent, HIT_TARGET, HasAbility); -} diff --git a/src/analysis/retail/rogue/assassination/normalizers/KingsbaneLinkNormalizer.ts b/src/analysis/retail/rogue/assassination/normalizers/KingsbaneLinkNormalizer.ts index 9d8f39dd50b..e06333a83e5 100644 --- a/src/analysis/retail/rogue/assassination/normalizers/KingsbaneLinkNormalizer.ts +++ b/src/analysis/retail/rogue/assassination/normalizers/KingsbaneLinkNormalizer.ts @@ -1,13 +1,7 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { Options } from 'parser/core/Module'; import TALENTS from 'common/TALENTS/rogue'; -import { - ApplyDebuffEvent, - CastEvent, - EventType, - GetRelatedEvents, - RemoveDebuffEvent, -} from 'parser/core/Events'; +import { CastEvent, EventType, GetRelatedEvents } from 'parser/core/Events'; import SPELLS from 'common/SPELLS/rogue'; export const SHIV_KINGSBANE_BUFFER_MS = 2000; @@ -113,18 +107,3 @@ export const getMatchingDeathmarkOrKingsbaneCast = (event: CastEvent) => GetRelatedEvents(event, DEATHMARK_KINGSBANE_CAST) .filter((e): e is CastEvent => e.type === EventType.Cast) .at(0); - -export const getMatchingDeathmarkOrKingsbaneApplyDebuff = (event: ApplyDebuffEvent) => - GetRelatedEvents(event, DEATHMARK_KINGSBANE_APPLY) - .filter((e): e is ApplyDebuffEvent => e.type === EventType.ApplyDebuff) - .at(0); - -export const getMatchingDeathmarkOrKingsbaneRemoveDebuff = (event: ApplyDebuffEvent) => - GetRelatedEvents(event, DEATHMARK_KINGSBANE_REMOVE) - .filter((e): e is RemoveDebuffEvent => e.type === EventType.RemoveDebuff) - .at(0); - -export const getMatchingShadowDanceOrKingsbaneCast = (event: CastEvent) => - GetRelatedEvents(event, SHADOW_DANCE_DANCE_KINGSBANE_CAST) - .filter((e): e is CastEvent => e.type === EventType.Cast) - .at(0); diff --git a/src/analysis/retail/rogue/outlaw/modules/core/RestlessBlades.ts b/src/analysis/retail/rogue/outlaw/modules/core/RestlessBlades.ts index 5a04a85130e..45c129c008d 100644 --- a/src/analysis/retail/rogue/outlaw/modules/core/RestlessBlades.ts +++ b/src/analysis/retail/rogue/outlaw/modules/core/RestlessBlades.ts @@ -24,8 +24,8 @@ const AFFECTED_ABILITIES: number[] = [ SPELLS.BLADE_FLURRY.id, ]; -export const RESTLESS_BLADES_BASE_CDR = 1000; -export const TRUE_BEARING_CDR = 500; +const RESTLESS_BLADES_BASE_CDR = 1000; +const TRUE_BEARING_CDR = 500; class RestlessBlades extends Analyzer { static dependencies = { diff --git a/src/analysis/retail/rogue/outlaw/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/rogue/outlaw/normalizers/CastLinkNormalizer.ts index e15df87847d..57f4ca3a817 100644 --- a/src/analysis/retail/rogue/outlaw/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/rogue/outlaw/normalizers/CastLinkNormalizer.ts @@ -1,24 +1,19 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; import { Options } from 'parser/core/Module'; import { - AbilityEvent, - AnyEvent, ApplyDebuffEvent, CastEvent, DamageEvent, EventType, GetRelatedEvent, - GetRelatedEvents, - HasAbility, - HasRelatedEvent, RefreshDebuffEvent, } from 'parser/core/Events'; import SPELLS from 'common/SPELLS/rogue'; const CAST_BUFFER_MS = 400; -export const FROM_HARDCAST = 'FromHardcast'; -export const HIT_TARGET = 'HitTarget'; +const FROM_HARDCAST = 'FromHardcast'; +const HIT_TARGET = 'HitTarget'; const EVENT_LINKS: EventLink[] = [ { @@ -58,20 +53,8 @@ export default class CastLinkNormalizer extends EventLinkNormalizer { } } -export function isFromHardcast(event: AnyEvent): boolean { - return HasRelatedEvent(event, FROM_HARDCAST); -} - export function getHardcast( event: ApplyDebuffEvent | RefreshDebuffEvent | DamageEvent, ): CastEvent | undefined { return GetRelatedEvent(event, FROM_HARDCAST); } - -export function getHitCount(aoeCastEvent: CastEvent): number { - return GetRelatedEvents(aoeCastEvent, HIT_TARGET).length; -} - -export function getHits(castEvent: CastEvent): AbilityEvent[] { - return GetRelatedEvents(castEvent, HIT_TARGET, HasAbility); -} diff --git a/src/analysis/retail/rogue/shared/index.ts b/src/analysis/retail/rogue/shared/index.ts index c3761efa398..4832ae1b663 100644 --- a/src/analysis/retail/rogue/shared/index.ts +++ b/src/analysis/retail/rogue/shared/index.ts @@ -12,11 +12,9 @@ export { default as SpellEnergyCost } from './SpellEnergyCost'; export { default as StealthDamageTracker } from './StealthDamageTracker'; export * from './constants'; export { default as DeeperDaggers } from './DeeperDaggers'; -export { default as WellPlacedSteel } from './shadowlands/conduits/WellPlacedSteel'; export { default as EchoingReprimand } from './talents/EchoingReprimand'; export { default as SerratedBoneSpike } from './talents/SerratedBoneSpike'; export { default as Sepsis } from './talents/Sepsis'; export { default as StealthAbilityFollowingSepsis } from './StealthAbilityFollowingSepsis'; -export { default as Reverberation } from './talents/Reverberation'; export { default as Flagellation } from './talents/Flagellation'; export { default as ThistleTeaCastLinkNormalizer } from './talents/ThistleTeaCastLinkNormalizer'; diff --git a/src/analysis/retail/rogue/shared/shadowlands/conduits/WellPlacedSteel.tsx b/src/analysis/retail/rogue/shared/shadowlands/conduits/WellPlacedSteel.tsx deleted file mode 100644 index b8ad3f8669c..00000000000 --- a/src/analysis/retail/rogue/shared/shadowlands/conduits/WellPlacedSteel.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import SPELLS from 'common/SPELLS'; -import TALENTS from 'common/TALENTS/rogue'; -import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer'; -import { calculateEffectiveDamage } from 'parser/core/EventCalculateLib'; -import Events, { DamageEvent } from 'parser/core/Events'; -import Enemies from 'parser/shared/modules/Enemies'; -import ItemDamageDone from 'parser/ui/ItemDamageDone'; -import Statistic from 'parser/ui/Statistic'; -import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; -import BoringSpellValueText from 'parser/ui/BoringSpellValueText'; - -const DAMAGE_BONUS = [ - 0, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, -]; - -class WellPlacedSteel extends Analyzer { - static dependencies = { - enemies: Enemies, - }; - protected enemies!: Enemies; - - conduitRank = 0; - bonusDamage = 0; - - constructor(options: Options) { - super(options); - this.active = false; - this.conduitRank = 0; - - this.addEventListener( - Events.damage - .by(SELECTED_PLAYER) - .spell([ - SPELLS.DEADLY_POISON, - SPELLS.DEADLY_POISON_PROC, - SPELLS.DEADLY_POISON_DOT, - SPELLS.ENVENOM, - ]), - this.onDamage, - ); - this.addEventListener(Events.damage.by(SELECTED_PLAYER).spell(SPELLS.ENVENOM), this.onDamage); - } - - onDamage(event: DamageEvent) { - const enemy = this.enemies.getEntity(event); - if (enemy && enemy.hasBuff(SPELLS.SHIV_DEBUFF.id, event.timestamp)) { - this.bonusDamage += calculateEffectiveDamage(event, DAMAGE_BONUS[this.conduitRank]); - } - } - - statistic() { - return ( - - - - - - ); - } -} - -export default WellPlacedSteel; diff --git a/src/analysis/retail/rogue/shared/talents/Reverberation.tsx b/src/analysis/retail/rogue/shared/talents/Reverberation.tsx deleted file mode 100644 index d3a0a7a1579..00000000000 --- a/src/analysis/retail/rogue/shared/talents/Reverberation.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import TALENTS from 'common/TALENTS/rogue'; -import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer'; -import { calculateEffectiveDamage } from 'parser/core/EventCalculateLib'; -import Events, { DamageEvent } from 'parser/core/Events'; -import ItemDamageDone from 'parser/ui/ItemDamageDone'; -import Statistic from 'parser/ui/Statistic'; -import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; -import TalentSpellText from 'parser/ui/TalentSpellText'; - -const DAMAGE_BONUS = 0.75; - -class Reverberation extends Analyzer { - conduitRank = 0; - bonusDamage = 0; - - constructor(options: Options) { - super(options); - this.active = this.selectedCombatant.hasTalent(TALENTS.REVERBERATION_TALENT); - this.conduitRank = 0; - this.addEventListener( - Events.damage.by(SELECTED_PLAYER).spell(TALENTS.ECHOING_REPRIMAND_TALENT), - this.onDamage, - ); - } - - onDamage(event: DamageEvent) { - this.bonusDamage += calculateEffectiveDamage(event, DAMAGE_BONUS); - } - - statistic() { - return ( - - - - - - ); - } -} - -export default Reverberation; diff --git a/src/analysis/retail/rogue/shared/talents/ThistleTeaCastLinkNormalizer.tsx b/src/analysis/retail/rogue/shared/talents/ThistleTeaCastLinkNormalizer.tsx index fc7f73e4b00..3eb9f3fca72 100644 --- a/src/analysis/retail/rogue/shared/talents/ThistleTeaCastLinkNormalizer.tsx +++ b/src/analysis/retail/rogue/shared/talents/ThistleTeaCastLinkNormalizer.tsx @@ -1,19 +1,12 @@ import EventLinkNormalizer, { EventLink } from 'parser/core/EventLinkNormalizer'; -import { - AnyEvent, - CastEvent, - EventType, - GetRelatedEvent, - HasRelatedEvent, - ResourceChangeEvent, -} from 'parser/core/Events'; +import { CastEvent, EventType, GetRelatedEvent, ResourceChangeEvent } from 'parser/core/Events'; import TALENTS from 'common/TALENTS/rogue'; import { Options } from 'parser/core/Module'; const CAST_BUFFER_MS = 50; -export const FROM_HARDCAST = 'FromHardcast'; -export const RESOURCE_CHANGE = 'ResourceChange'; +const FROM_HARDCAST = 'FromHardcast'; +const RESOURCE_CHANGE = 'ResourceChange'; const EVENT_LINKS: EventLink[] = [ { @@ -35,14 +28,6 @@ export default class ThistleTeaCastLinkNormalizer extends EventLinkNormalizer { } } -export function isFromHardcast(event: AnyEvent): boolean { - return HasRelatedEvent(event, FROM_HARDCAST); -} - -export function getHardcast(event: ResourceChangeEvent): CastEvent | undefined { - return GetRelatedEvent(event, FROM_HARDCAST); -} - export function getResourceChange(event: CastEvent): ResourceChangeEvent | undefined { return GetRelatedEvent( event, diff --git a/src/analysis/retail/shaman/elemental/constants.tsx b/src/analysis/retail/shaman/elemental/constants.tsx index 5364a7f6d32..5bb1fd24f47 100644 --- a/src/analysis/retail/shaman/elemental/constants.tsx +++ b/src/analysis/retail/shaman/elemental/constants.tsx @@ -1,14 +1,3 @@ -import SPELLS from 'common/SPELLS'; -import { SpellInfo } from 'parser/core/EventFilter'; - -export const ELEMENTAL_BLAST_BUFFS: SpellInfo[] = [ - SPELLS.ELEMENTAL_BLAST_CRIT, - SPELLS.ELEMENTAL_BLAST_MASTERY, - SPELLS.ELEMENTAL_BLAST_HASTE, -]; - -export const CRIT_MULTIPLIER = 2.5; - /** * Grace-period for checking if a buff is applied to the player. Buffs that are * removed on-cast (SK, MotE, SoP) may get removed before the actual spell cast diff --git a/src/analysis/retail/shaman/enhancement/constants.tsx b/src/analysis/retail/shaman/enhancement/constants.tsx index a2c14a01510..8272c5b9eb2 100644 --- a/src/analysis/retail/shaman/enhancement/constants.tsx +++ b/src/analysis/retail/shaman/enhancement/constants.tsx @@ -13,10 +13,6 @@ export const STORMSTRIKE_DAMAGE_SPELLS = [ export const MOLTEN_ASSAULT_SCALING = [0, 3, 6]; -export const ESSENTIAL_EXTRACTION_EFFECT_BY_RANK = [ - 0, -25, -26, -27, -28, -29, -30, -31, -33, -34, -35, -36, -37, -38, -39, -40, -]; - export const MERGE_SPELLS = [ { SpellIds: [SPELLS.MELEE.id, SPELLS.WINDLASH.id, SPELLS.WINDLASH_OFFHAND.id], diff --git a/src/analysis/retail/shaman/restoration/constants.ts b/src/analysis/retail/shaman/restoration/constants.ts index 2844678ae78..79cc1c413f5 100644 --- a/src/analysis/retail/shaman/restoration/constants.ts +++ b/src/analysis/retail/shaman/restoration/constants.ts @@ -3,7 +3,6 @@ import TALENTS from 'common/TALENTS/shaman'; //event link attribution strings export const HARDCAST = 'Hardcast'; -export const RIPTIDE_HIT = 'RiptideHit'; export const RIPTIDE_PWAVE = 'PrimordialWave'; export const PWAVE_REMOVAL = 'PrimordialWaveRemoved'; export const HEALING_WAVE_PWAVE = 'HealingWavePrimordialWave'; @@ -55,10 +54,7 @@ export const RESTORATION_COLORS = { // Spell Coefficients export const CHAIN_HEAL_COEFFICIENT = 2.31; -export const HEALING_WAVE_COEFFICIENT = 3.498; -export const HEALING_SURGE_COEFFICIENT = 3.1372; export const HIGH_TIDE_COEFFICIENT = 2.541; -export const HEALING_WAVE_CAST_TIME = 2.5; // Your normal healing toolkit, default spells and talents // TODO: Check all these lists again, maybe restructure to remove repeats @@ -112,19 +108,6 @@ export const ABILITIES_AFFECTED_BY_MASTERY = [ SPELLS.LEECH, ]; -export const ABILITIES_FEEDING_INTO_CBT = [...SHAMAN_BASE_ABILITIES]; - -export const ABILITIES_NOT_FEEDING_INTO_ASCENDANCE = [ - SPELLS.HEALING_TIDE_TOTEM_HEAL, - SPELLS.HEALING_STREAM_TOTEM_HEAL, - SPELLS.SPIRIT_LINK_TOTEM_REDISTRIBUTE, - SPELLS.LEECH, - SPELLS.ASCENDANCE_HEAL, - SPELLS.CLOUDBURST_TOTEM_HEAL, - SPELLS.ASCENDANCE_INITIAL_HEAL, - SPELLS.ANCESTRAL_GUIDANCE_HEAL, -]; - export const FLASH_FLOOD_CAST_SPEED_MODIFIER = 0.1; // per rank export const HEALING_RAIN_DURATION = 10000; diff --git a/src/analysis/retail/shaman/restoration/normalizers/CastLinkNormalizer.ts b/src/analysis/retail/shaman/restoration/normalizers/CastLinkNormalizer.ts index 36bda2225ad..48e991baaa9 100644 --- a/src/analysis/retail/shaman/restoration/normalizers/CastLinkNormalizer.ts +++ b/src/analysis/retail/shaman/restoration/normalizers/CastLinkNormalizer.ts @@ -4,14 +4,11 @@ import { ApplyBuffEvent, CastEvent, EventType, - GetRelatedEvent, GetRelatedEvents, - HasAbility, HasRelatedEvent, HealEvent, RefreshBuffEvent, RemoveBuffEvent, - RemoveBuffStackEvent, } from 'parser/core/Events'; import { Options } from 'parser/core/Module'; import talents from 'common/TALENTS/shaman'; @@ -312,18 +309,6 @@ export function isFromPrimalTideCore(event: ApplyBuffEvent | HealEvent): boolean return !HasRelatedEvent(event, HARDCAST) && !HasRelatedEvent(event, RIPTIDE_PWAVE); } -//this should only be used for initial hit events if passing in a heal event, not ticks -export function getRiptideCastEvent( - event: ApplyBuffEvent | RefreshBuffEvent | HealEvent, -): CastEvent | null { - if (isFromHardcast(event)) { - return GetRelatedEvent(event, HARDCAST) ?? null; - } else if (isRiptideFromPrimordialWave(event)) { - return GetRelatedEvent(event, RIPTIDE_PWAVE) ?? null; - } - return null; -} - export function getHealingRainEvents(event: CastEvent) { return GetRelatedEvents(event, HEALING_RAIN); } @@ -344,23 +329,12 @@ export function wasRiptideConsumed(event: CastEvent | RemoveBuffEvent): boolean return HasRelatedEvent(event, FLOW_OF_THE_TIDES); } -export function getConsumedRiptide(event: CastEvent): AbilityEvent | undefined { - return GetRelatedEvent>(event, FLOW_OF_THE_TIDES, HasAbility); -} - export function getChainHeals(event: CastEvent): HealEvent[] { return GetRelatedEvents(event, CHAIN_HEAL) as HealEvent[]; } -export function getChainHealGrouping(event: HealEvent) { - return [event].concat(GetRelatedEvents(event, CHAIN_HEAL_GROUPING)); -} - export function isBuffedByHighTide(event: CastEvent) { return HasRelatedEvent(event, HIGH_TIDE); } -export function wasHighTideConsumed(event: RemoveBuffEvent | RemoveBuffStackEvent): boolean { - return HasRelatedEvent(event, HIGH_TIDE); -} export default CastLinkNormalizer; diff --git a/src/analysis/retail/shaman/shared/constants.ts b/src/analysis/retail/shaman/shared/constants.ts index 5dc5eb81a99..732929bb7cd 100644 --- a/src/analysis/retail/shaman/shared/constants.ts +++ b/src/analysis/retail/shaman/shared/constants.ts @@ -1,7 +1,5 @@ import SPELLS from 'common/SPELLS'; -// TODO: Re-enable when working on resto-shaman for dragonflight -export const HEALING_ABILITIES_AMPED_BY_EARTH_SHIELD = []; // export const HEALING_ABILITIES_AMPED_BY_EARTH_SHIELD = [...ABILITIES_AFFECTED_BY_HEALING_INCREASES]; export const ELEMENTAL_BLAST_BUFFS = [ diff --git a/src/analysis/retail/shaman/shared/index.ts b/src/analysis/retail/shaman/shared/index.ts index 7cf59e70d45..579cd9638f1 100644 --- a/src/analysis/retail/shaman/shared/index.ts +++ b/src/analysis/retail/shaman/shared/index.ts @@ -6,6 +6,3 @@ export { default as EarthShield } from './talents/EarthShield'; export * from './talents/EarthShield'; export { default as SpiritWolf } from './talents/SpiritWolf'; export { default as StaticCharge } from './talents/StaticCharge'; -export { default as TumblingWaves } from './shadowlands/conduits/TumblingWaves'; -export { default as ElementalConduit } from './shadowlands/legendaries/ElementalConduit'; -export { default as ChainHarvest } from './shadowlands/spells/ChainHarvest'; diff --git a/src/analysis/retail/shaman/shared/shadowlands/conduits/TumblingWaves.tsx b/src/analysis/retail/shaman/shared/shadowlands/conduits/TumblingWaves.tsx deleted file mode 100644 index 99aceac461a..00000000000 --- a/src/analysis/retail/shaman/shared/shadowlands/conduits/TumblingWaves.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import TALENTS from 'common/TALENTS/shaman'; -import Analyzer, { Options } from 'parser/core/Analyzer'; -import SpellUsable from 'parser/shared/modules/SpellUsable'; - -class TumblingWaves extends Analyzer { - static dependencies = { - spellUsable: SpellUsable, - }; - - protected spellUsable!: SpellUsable; - - constructor(options: Options) { - super(options); - - this.active = false; - - // this.addEventListener( - // Events.applybuff.by(SELECTED_PLAYER).spell(SPELLS.TUMBLING_WAVES_BUFF), - // this.onApplyBuff, - // ); - } - - onApplyBuff() { - if (this.spellUsable.isOnCooldown(TALENTS.PRIMORDIAL_WAVE_RESTORATION_TALENT.id)) { - this.spellUsable.endCooldown(TALENTS.PRIMORDIAL_WAVE_RESTORATION_TALENT.id); - } - } -} - -export default TumblingWaves; diff --git a/src/analysis/retail/shaman/shared/shadowlands/legendaries/ElementalConduit.tsx b/src/analysis/retail/shaman/shared/shadowlands/legendaries/ElementalConduit.tsx deleted file mode 100644 index 08b84cd54dc..00000000000 --- a/src/analysis/retail/shaman/shared/shadowlands/legendaries/ElementalConduit.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import SPELLS from 'common/SPELLS'; -import HIT_TYPES from 'game/HIT_TYPES'; -import Analyzer, { Options, SELECTED_PLAYER } from 'parser/core/Analyzer'; -import Events, { DamageEvent } from 'parser/core/Events'; -import SpellUsable from 'parser/shared/modules/SpellUsable'; - -// const cooldownDecrease = 1000; - -class ElementalConduit extends Analyzer { - static dependencies = { - spellUsable: SpellUsable, - }; - - protected spellUsable!: SpellUsable; - protected totalCdrGained = 0; - protected totalCdrWasted = 0; - - constructor(options: Options) { - super(options); - this.active = false; - - this.addEventListener( - Events.damage.by(SELECTED_PLAYER).spell(SPELLS.FLAME_SHOCK), - this.reduceChanShockCooldown, - ); - } - - reduceChanShockCooldown(event: DamageEvent) { - if (event.hitType !== HIT_TYPES.CRIT) { - return; - } - - // if (this.spellUsable.isOnCooldown(SPELLS.CHAIN_HARVEST.id)) { - // this.spellUsable.reduceCooldown(SPELLS.CHAIN_HARVEST.id, cooldownDecrease, event.timestamp); - // this.totalCdrGained += cooldownDecrease; - // } else { - // this.totalCdrWasted += cooldownDecrease; - // } - } - - // statistic() { - // return ( - // - // - // {formatDuration(this.totalCdrGained)}s{' '} - // of Chain Harvest CDR - //
- // {formatDuration(this.totalCdrWasted)}s{' '} - // of Chain Harvest CDR wasted - //
- //
- // ); - // } -} - -export default ElementalConduit; diff --git a/src/analysis/retail/shaman/shared/shadowlands/spells/ChainHarvest.ts b/src/analysis/retail/shaman/shared/shadowlands/spells/ChainHarvest.ts deleted file mode 100644 index 32992b6374c..00000000000 --- a/src/analysis/retail/shaman/shared/shadowlands/spells/ChainHarvest.ts +++ /dev/null @@ -1,45 +0,0 @@ -import HIT_TYPES from 'game/HIT_TYPES'; -import Analyzer, { Options } from 'parser/core/Analyzer'; -import { DamageEvent, HealEvent } from 'parser/core/Events'; -import SpellUsable from 'parser/shared/modules/SpellUsable'; - -// const cooldownDecrease = 5000; - -/** - * CD is reduced by crits - */ - -class ChainHarvest extends Analyzer { - static dependencies = { - spellUsable: SpellUsable, - }; - - protected spellUsable!: SpellUsable; - - constructor(options: Options) { - super(options); - this.active = false; - - // this.addEventListener( - // Events.heal.by(SELECTED_PLAYER).spell(SPELLS.CHAIN_HARVEST_HEAL), - // this.reduceCooldownOnCriticalHit, - // ); - // - // this.addEventListener( - // Events.damage.by(SELECTED_PLAYER).spell(SPELLS.CHAIN_HARVEST_DAMAGE), - // this.reduceCooldownOnCriticalHit, - // ); - } - - reduceCooldownOnCriticalHit(event: HealEvent | DamageEvent) { - if (event.hitType !== HIT_TYPES.CRIT) { - return; - } - - // if (this.spellUsable.isOnCooldown(SPELLS.CHAIN_HARVEST.id)) { - // this.spellUsable.reduceCooldown(SPELLS.CHAIN_HARVEST.id, cooldownDecrease); - // } - } -} - -export default ChainHarvest; diff --git a/src/analysis/retail/shaman/shared/talents/ElementalOrbit.tsx b/src/analysis/retail/shaman/shared/talents/ElementalOrbit.tsx index 4790895eb37..1c26b84170f 100644 --- a/src/analysis/retail/shaman/shared/talents/ElementalOrbit.tsx +++ b/src/analysis/retail/shaman/shared/talents/ElementalOrbit.tsx @@ -9,7 +9,7 @@ import Combatants from 'parser/shared/modules/Combatants'; import STATISTIC_CATEGORY from 'parser/ui/STATISTIC_CATEGORY'; import StatisticListBoxItem from 'parser/ui/StatisticListBoxItem'; -export const EARTHSHIELD_HEALING_INCREASE = 0.2; +const EARTHSHIELD_HEALING_INCREASE = 0.2; class ElementalOrbit extends Analyzer { static dependencies = { diff --git a/src/analysis/retail/shaman/shared/talents/SurgingShields.tsx b/src/analysis/retail/shaman/shared/talents/SurgingShields.tsx index 1e90a892d7a..05bb201bc70 100644 --- a/src/analysis/retail/shaman/shared/talents/SurgingShields.tsx +++ b/src/analysis/retail/shaman/shared/talents/SurgingShields.tsx @@ -6,7 +6,7 @@ import { calculateEffectiveDamage, calculateEffectiveHealing } from 'parser/core import Events, { DamageEvent, HealEvent, ResourceChangeEvent } from 'parser/core/Events'; import Combatants from 'parser/shared/modules/Combatants'; -export const EARTHSHIELD_HEALING_BONUS_PER_POINT = 0.125; +const EARTHSHIELD_HEALING_BONUS_PER_POINT = 0.125; const WATERSHIELD_MANA_INCREASE_PER_POINT = 0.25; const LIGHTNINGSHIELD_DMG_INCREASE_PER_POINT = 0.5; diff --git a/src/analysis/retail/warlock/demonology/modules/pets/CONSTANTS.ts b/src/analysis/retail/warlock/demonology/modules/pets/CONSTANTS.ts index f262194c49e..de170e4572b 100644 --- a/src/analysis/retail/warlock/demonology/modules/pets/CONSTANTS.ts +++ b/src/analysis/retail/warlock/demonology/modules/pets/CONSTANTS.ts @@ -2,7 +2,7 @@ import SPELLS from 'common/SPELLS'; import TALENTS from 'common/TALENTS/warlock'; // ability guids from 'summon' events - sometimes different from 'cast' ids -export const PERMANENT_PET_SUMMON_ABILITY_IDS = [ +const PERMANENT_PET_SUMMON_ABILITY_IDS = [ SPELLS.SUMMON_IMP.id, SPELLS.SUMMON_VOIDWALKER.id, SPELLS.SUMMON_FELHUNTER.id, @@ -17,7 +17,7 @@ export const PERMANENT_PET_SUMMON_ABILITY_IDS = [ SPELLS.WRATHGUARD_PERMANENT_SUMMON.id, ]; -export const TEMPORARY_PET_SUMMON_ABILITY_IDS = [ +const TEMPORARY_PET_SUMMON_ABILITY_IDS = [ SPELLS.WILD_IMP_HOG_SUMMON.id, SPELLS.DREADSTALKER_SUMMON_1.id, SPELLS.DREADSTALKER_SUMMON_2.id, diff --git a/src/analysis/retail/warlock/shared/images/warlock_soulshard_bw.jpg b/src/analysis/retail/warlock/shared/images/warlock_soulshard_bw.jpg deleted file mode 100644 index e50f12afd21b0c6d195c9c64dc1f20b4296e6d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2093 zcmb7EX;@R&7QHvg4Iu=%fdrv|7!y$jDU%G!(8v%HMGf*na0I1@f&wZ-sR{(7fI$d@ ztpaL*D2NP+Whh#KAgEv}K|sI(s0jrtm9Zd*^ul}k-q#;}-&^PWIp5jm?0wccYcKXJ z4gfIAjp+t}APBf416X_xI0I-DYH1?CAQQqt5C#L`m6WhJ0-iun!KLfC0=@Jl)oWVfK5Tr~}RZ%7V-&m9YL>yoX*rGuqfFgou zBDi=T&;bB6QY#wx3<#@)!+vPnXA{)WXqfPe-86pV%e0F1WJtn~We=17iJ zFn~hvUj?8sCPi}9BpVK?0fbOp(=^}GC|2?P{_RCHY=zs~Tc8WSh~)^sSrOyF z&HW_{mHl*x~Ydlh0ypofu*^vTMNl+J=S?<{Jmc9SU+^M-Iy=*4(_^AWbn_-YpP zJpSf}2i?_~-LB8_^ukPfN^PaFomt?flGl0_9s7#-d0rPlwkVMu$T~v_8JQbN+@Dw0 zd@>1I*RGo65M8~)*27r$ybgD4gQ-%UR0Tg5FO;{%arTB*r#d+FD9MiK0Ey zBW&p`8$5W3E0+A5JggH+V>>}?_n7m>!~XW+n$|mU*NHn;qdqi#$C^n$A77i@mi@6) zmaSOJ_ejmsJN}*a(0c2Yp*kgXRZ{}3u88uO!^LMZ$zO%+39__##%eZR@4E&_A#p~0 z4g6|$W$suy%=&3xEWzusr99j4r>b*lfg)n03T3==!H{yXAt5JV@a5iOoXwfGx+Kze zvCD%~36Y+z-&*w)2c(%&Fa8MKKoQd>V*n#Ro@QE*PSXkT_h*S`%~ z7{O#pA3fdsH6JUZPZx_!9?mAE2Tr8v&z1Va!@fbk`S){9b6$BVR*%0eX?;g1vC!9- zzxUoHeK)wpRl+-KvvcyJSM2NY=uS(iV>djLNhwUP+SGhLU7H)&=UkPtC$~#DZ`^;v zRI|U=z=<_{C@k$PL7e{nhJ?q=E-?Ua8$F{&+nYp%S0JB)1|$C-jfVc?O~keobNaH@ z0?`=UDEs6NC(75A-s}h;ixep z{t-5DsIs+#?WX$IhME$>(%l7-ZADl6y=aXGJ<&wQeMRBOR<*5T_yrBG-jAhx zlLxzRTss;jzm_pc4CGvH_kHSljiZt3nz2xZlOBy^)ak8N4J(LgW~|mZA1v3M`rW7L zN-bXV;4jVn{Lq-~7IVcul=w?|qfO$BgB>(x*@z$4uAVvXYHu2>$IiM zc7!f$kUW3s&CijAri(8arl3yw34}kS1(VEH|FMo@k?&z>>G@>*`@Z#grub+^9k+a= zC+?Cbb9ni=;O8a7!~e_h%K?b^OS&U{5&UHM z&*F<@d_m*j_-FCqiF{Env*6uBVawyEm5T4@1GdTT7@2RZA8KHqZLO~UnLYKS;v##U zkFj5=T&{CtVyqxsrPQJzG`&SlZZ@eu&?v;m*Izg{ozNoLS6xfDj=b|)o9~Hv%-SlP zo8ig2HZuhMxZ+FY9*vqQU#asF1vG|1Ob7SWJlgCC!H z&=ZGk7(~}?y92bt#|E5#eNR|dS&F}&v*%c9tuZtgX*F!i>%gA!c%Ptq;V;cIc1B8o!Y?_TmK>nSzQEvwot5B*xMpGO z=I!~|0W(U)8TPQl#Ms@teb!XJ=z&FGTV|Mq9Xz>d+^XqS!!U~eGGP%gACa*uDq0ut zql*1?%HdJ9Z4(d83i!Q~xhHLGYa(Z9nF=`Otbt2}-|yYV0+kxGeV4Otyl7Tco|&7| zo=)cGfkyd1o(<*2l2d~S<$|ofhv1{#3+65ZbjOw7>f^Qy@(YXU`MHy-vKEt_MWL-W m5t@E++@?nBhj$KC@kPRu^+b9S*@?EMQJ_&z)U diff --git a/src/analysis/retail/warlock/shared/index.ts b/src/analysis/retail/warlock/shared/index.ts index e982f2d6285..6e0d459ae63 100644 --- a/src/analysis/retail/warlock/shared/index.ts +++ b/src/analysis/retail/warlock/shared/index.ts @@ -1,7 +1,3 @@ -import SoulShardIcon from './images/warlock_soulshard_bw.jpg'; - -export { SoulShardIcon }; - export { default as GrimoireOfSacrifice } from './GrimoireOfSacrifice'; export { default as GrimoireOfSacrificeNormalizer } from './GrimoireOfSacrificeNormalizer'; export { default as WarlockMissingDotApplyDebuffPrePull } from './WarlockMissingDotApplyDebuffPrePull'; diff --git a/src/common/SPELLS/classic/index.ts b/src/common/SPELLS/classic/index.ts index 3d434b11686..ae822b63166 100644 --- a/src/common/SPELLS/classic/index.ts +++ b/src/common/SPELLS/classic/index.ts @@ -64,15 +64,3 @@ export default CLASSIC_SPELLS; export const maybeGetSpell = (key: string | number | undefined): Spell | undefined => key ? InternalSpellTable[key as any] : undefined; - -export const registerSpell = (id: number, name: string, icon: string) => { - if (InternalSpellTable[id]) { - return; - } - - InternalSpellTable[id] = { - id, - name, - icon, - }; -}; diff --git a/src/common/indexById.ts b/src/common/indexById.ts index 58b4a52ff6d..42f1bae633f 100644 --- a/src/common/indexById.ts +++ b/src/common/indexById.ts @@ -1,4 +1,3 @@ -import { shallowEqual } from 'react-redux'; import typedKeys from 'common/typedKeys'; interface BaseIndexableObj { @@ -36,42 +35,6 @@ const indexById = ` where `T` is fixed and `E` is inferred. - */ -export const asRestrictedTable = - () => - (value: RestrictedTable): RestrictedTable => - value; - -export const indexOnlyById = < - ValueT extends BaseIndexableObj, - Map extends RestrictedTable, ->( - arg: Map, -): Record => { - const indexedByNameAndId: Record = {}; - typedKeys(arg).forEach((key) => { - const value = arg[key]; - - if (import.meta.env.DEV) { - // check if there's already an existing value by the same ID - // and throw an error if it's not exactly equal - // the shallow equality check is added to support cases like Warrior's Sudden Death talent - if ( - indexedByNameAndId[value.id] && - !indexedByNameAndId[value.id].__ignoreDuplication && - !value.__ignoreDuplication && - !shallowEqual(indexedByNameAndId[value.id], value) - ) { - throw new Error(`A spell with this ID already exists: ${value.id}, ${String(key)}`); - } - } - indexedByNameAndId[value.id] = value; - }); - return indexedByNameAndId; -}; - export const proxyRestrictedTable = < ValueT extends BaseIndexableObj, Map extends RestrictedTable, diff --git a/src/common/makeApiUrl.ts b/src/common/makeApiUrl.ts index 15fe85e181e..1de72cdce07 100644 --- a/src/common/makeApiUrl.ts +++ b/src/common/makeApiUrl.ts @@ -52,13 +52,3 @@ export function makeGuildApiUrl(region?: string, realm?: string, name?: string, return makeApiUrl(parts.map((part) => encodeURIComponent(part)).join('/')); } - -export function makeItemApiUrl(itemId: string) { - const parts = ['item', itemId]; - return makeApiUrl(parts.map((part) => encodeURIComponent(part)).join('/')); -} - -export function makeSpellApiUrl(spellId: number) { - const parts = ['spell', spellId]; - return makeApiUrl(parts.map((part) => encodeURIComponent(part)).join('/')); -} diff --git a/src/common/regions.ts b/src/common/regions.ts index 2bd894510f1..f019df6dfc7 100644 --- a/src/common/regions.ts +++ b/src/common/regions.ts @@ -1,19 +1,14 @@ // All regions for WoW -export const ALL_REGIONS = ['EU', 'US', 'TW', 'KR', 'CN'] as const; +const ALL_REGIONS = ['EU', 'US', 'TW', 'KR', 'CN'] as const; export type Region = (typeof ALL_REGIONS)[number]; -export const CLASSIC_REGIONS = ['EU', 'US', 'TW', 'KR'] as const; +const CLASSIC_REGIONS = ['EU', 'US', 'TW', 'KR'] as const; export type ClassicRegion = (typeof CLASSIC_REGIONS)[number]; // WoWAnalyzer/Blizzard API supported regions -export const SUPPORTED_REGIONS = ['EU', 'US', 'TW', 'KR'] as const; +const SUPPORTED_REGIONS = ['EU', 'US', 'TW', 'KR'] as const; type SupportedRegion = (typeof SUPPORTED_REGIONS)[number]; -export function isRegion(region: string | undefined): region is Region { - // the 'as' below is just to allow the use of .includes - return ALL_REGIONS.includes(region as Region); -} - /** * Not every region is supported by the Blizzard API (and, by extension, the bits of the * WoWA API that use the Blizzard API). This is used to check that a region is supported before diff --git a/src/game/ROLES.ts b/src/game/ROLES.ts index 5a64ad9d824..8be51bf1158 100644 --- a/src/game/ROLES.ts +++ b/src/game/ROLES.ts @@ -1,5 +1,3 @@ -import { defineMessage, plural } from '@lingui/macro'; - const ROLES = { TANK: 0, HEALER: 1, @@ -10,45 +8,6 @@ const ROLES = { }; export default ROLES; -const naming = { - [ROLES.TANK]: (num: number) => - defineMessage({ - id: 'common.roles.tank', - message: plural(num, { - one: 'Tank', - other: 'Tanks', - }), - }), - [ROLES.HEALER]: (num: number) => - defineMessage({ - id: 'common.roles.healer', - message: plural(num, { - one: 'Healer', - other: 'Healers', - }), - }), - [ROLES.DPS.MELEE]: (num: number) => - defineMessage({ - id: 'common.roles.dps.melee', - message: plural(num, { - one: 'Melee DPS', - other: 'Melee DPS', - }), - }), - [ROLES.DPS.RANGED]: (num: number) => - defineMessage({ - id: 'common.roles.dps.ranged', - message: plural(num, { - one: 'Ranged DPS', - other: 'Ranged DPS', - }), - }), -}; - -export function getName(role: number) { - return naming[role]; -} - export function getClassName(role: number) { switch (Number(role)) { case ROLES.TANK: diff --git a/src/game/VERSIONS.ts b/src/game/VERSIONS.ts index dccf64cd5a2..a98e4f91f3d 100644 --- a/src/game/VERSIONS.ts +++ b/src/game/VERSIONS.ts @@ -8,13 +8,6 @@ const VERSIONS: Partial<{ [expansion in Expansion]: string }> = { export default VERSIONS; -export const WCL_GAME_VERSIONS: Partial<{ [expansion in Expansion]: number }> = { - [Expansion.Dragonflight]: 1, - [Expansion.Vanilla]: 2, - [Expansion.TheBurningCrusade]: 3, - [Expansion.WrathOfTheLichKing]: 4, -}; - export const wclGameVersionToExpansion = (gameVersion: number): Expansion => { switch (gameVersion) { case 2: diff --git a/src/game/classColor.ts b/src/game/classColor.ts index 0ff3fdbf509..b2ce7985707 100644 --- a/src/game/classColor.ts +++ b/src/game/classColor.ts @@ -26,15 +26,3 @@ export default function classColor(input: string | Combatant | Spec): string { return classColor(base); } } - -/** - * Takes name of a player class, {@link Spec}, or {@link Combatant} and - * returns a `className` that can be used to color the background in the - * appropiate class color. - * - * > The css classes themselves are defined in - * > [src\interface\Game.scss](../interface/Game.scss#L41-L79) - */ -export function classBgColor(input: string | Combatant | Spec): string { - return `${classColor(input)}-bg`; -} diff --git a/src/game/raids/index.ts b/src/game/raids/index.ts index baeeadc6305..1c28a0357d0 100644 --- a/src/game/raids/index.ts +++ b/src/game/raids/index.ts @@ -50,7 +50,7 @@ export interface Phase extends PhaseConfig { end: number[]; } -export const dungeons = { +const dungeons = { // Dragonflight MythicPlusSeasonOne, MythicPlusSeasonTwo, @@ -68,15 +68,14 @@ const raids = { IcecrownCitadel, // tier 10 RubySanctum, // tier 11 }; -export default raids; -export function findByDungeonBossId(id: number) { +function findByDungeonBossId(id: number) { return Object.values(dungeons) .flatMap((dungeon) => Object.values(dungeon.bosses)) .find((boss) => boss.id === id); } -export function findByRaidBossId(id: number) { +function findByRaidBossId(id: number) { return Object.values(raids) .flatMap((raid) => Object.values(raid.bosses)) .find((boss) => boss.id === id); diff --git a/src/game/shadowlands/COVENANTS.ts b/src/game/shadowlands/COVENANTS.ts index 8276ae1b200..3639b0b4781 100644 --- a/src/game/shadowlands/COVENANTS.ts +++ b/src/game/shadowlands/COVENANTS.ts @@ -37,19 +37,3 @@ const COVENANTS = { } satisfies Record; export default indexById(COVENANTS); - -export function getCovenantById(id: number): Covenant | undefined { - switch (id) { - case 1: - return COVENANTS.KYRIAN; - case 2: - return COVENANTS.VENTHYR; - case 3: - return COVENANTS.NIGHT_FAE; - case 4: - return COVENANTS.NECROLORD; - default: - console.error('Invalid convenant selection: ', id); - return undefined; - } -} diff --git a/src/interface/Ad.tsx b/src/interface/Ad.tsx index 99f7fca3d29..e999c99ce3a 100644 --- a/src/interface/Ad.tsx +++ b/src/interface/Ad.tsx @@ -85,7 +85,7 @@ declare global { } } -export function refreshAds() { +function refreshAds() { const tyche = window.tyche; try { if (tyche && tyche.destroyUnits) { @@ -108,7 +108,7 @@ export function refreshAds() { window.refreshAds = refreshAds; -export function destroyAds() { +function destroyAds() { console.log('destroying ads'); const destroy = window.tyche?.destroyUnits; diff --git a/src/interface/PerformanceStrong.tsx b/src/interface/PerformanceStrong.tsx index 705cc4596f3..da29957b826 100644 --- a/src/interface/PerformanceStrong.tsx +++ b/src/interface/PerformanceStrong.tsx @@ -3,7 +3,7 @@ import { QualitativePerformance } from 'parser/ui/QualitativePerformance'; import { ComponentProps, ReactNode } from 'react'; import { PerformanceMark, qualitativePerformanceToColor } from 'interface/guide'; -export const ColoredStrong = styled.strong` +const ColoredStrong = styled.strong` color: ${(props) => props.color}; `; diff --git a/src/interface/PremiumPage.jsx b/src/interface/PremiumPage.jsx index bf1a88f9b81..8e79b52dac1 100644 --- a/src/interface/PremiumPage.jsx +++ b/src/interface/PremiumPage.jsx @@ -18,7 +18,7 @@ import './PremiumPage.scss'; import LoginPanel from './PremiumLoginPanel'; // eslint-disable-next-line react/prefer-stateless-function -- This should be rewritten in TypeScript. -export class PremiumPage extends PureComponent { +class PremiumPage extends PureComponent { static propTypes = { user: PropTypes.oneOfType([ PropTypes.shape({ diff --git a/src/interface/ReportSelecter.tsx b/src/interface/ReportSelecter.tsx index 4b78da783ba..f92aafe0320 100644 --- a/src/interface/ReportSelecter.tsx +++ b/src/interface/ReportSelecter.tsx @@ -13,17 +13,17 @@ export function getReportCode(input: string) { return match && match[2]; } -export function getFight(input: string) { +function getFight(input: string) { const match = input.trim().match(/fight=([^&]*)/); return match && match[1]; } -export function getPlayer(input: string) { +function getPlayer(input: string) { const match = input.trim().match(/source=([^&]*)/); return match && match[1]; } -export function getCharacterFromWCLUrl(input: string) { +function getCharacterFromWCLUrl(input: string) { const match = input.trim().match(/^(.*character\/)(\S*)\/(\S*)\/(\S*)/); return ( match && { @@ -34,7 +34,7 @@ export function getCharacterFromWCLUrl(input: string) { ); } -export function getCharacterFromBattleNetUrl(input: string) { +function getCharacterFromBattleNetUrl(input: string) { const match = input.trim().match(/^(.*)\/([A-Za-z]{2}-[A-Za-z]{2})\/(character)\/(\S*)\/(\S*)/); return ( match && diff --git a/src/interface/guide/components/Explanation.tsx b/src/interface/guide/components/Explanation.tsx index 75a955eb65f..56be6178ee5 100644 --- a/src/interface/guide/components/Explanation.tsx +++ b/src/interface/guide/components/Explanation.tsx @@ -6,7 +6,7 @@ interface ExplanationContextValue { hideExplanations: boolean; setHideExplanations: (p: boolean) => void; } -export const ExplanationContext = createContext({ +const ExplanationContext = createContext({ hideExplanations: false, setHideExplanations: () => { // no-op @@ -29,7 +29,7 @@ export const useExplanationContext = () => useContext(ExplanationContext); /** A container for explanatory text. * For now this is just a div, a future update will allow a toggle to hide all Explanations. */ -export const StyledExplanation = styled.div` +const StyledExplanation = styled.div` .text-muted, small { color: rgba(202, 200, 196, 0.77); diff --git a/src/interface/guide/components/ExplanationRow.tsx b/src/interface/guide/components/ExplanationRow.tsx index 269ca8e131d..f8f8e7bd35d 100644 --- a/src/interface/guide/components/ExplanationRow.tsx +++ b/src/interface/guide/components/ExplanationRow.tsx @@ -3,7 +3,7 @@ import styled from '@emotion/styled'; import { SubSection } from 'interface/guide/index'; import Explanation, { useExplanationContext } from 'interface/guide/components/Explanation'; -export const leftPercentDefault = 30; +const leftPercentDefault = 30; /** * A container for holding two side-by-side panels, an explanation and data. By default, the left diff --git a/src/interface/guide/components/GuideDivs.tsx b/src/interface/guide/components/GuideDivs.tsx index ed193f4287d..b7411962f14 100644 --- a/src/interface/guide/components/GuideDivs.tsx +++ b/src/interface/guide/components/GuideDivs.tsx @@ -30,7 +30,7 @@ export const SideBySidePanels = styled.div` * Version of {@link RoundedPanel} that aligns content to the start of the * box instead of the center. */ -export const StartAlignedRoundedPanel = styled(RoundedPanel)` +const StartAlignedRoundedPanel = styled(RoundedPanel)` align-content: start; `; @@ -38,7 +38,7 @@ export const StartAlignedRoundedPanel = styled(RoundedPanel)` * Version of {@link StartAlignedRoundedPanel} that has an inset box shadow to show * color on the left side of the panel. */ -export const RoundedPanelWithColorBoxShadow = styled(StartAlignedRoundedPanel)` +const RoundedPanelWithColorBoxShadow = styled(StartAlignedRoundedPanel)` box-shadow: inset 0.5em 0 0 ${(props) => props.color}; `; diff --git a/src/interface/guide/components/MajorDefensives/AllCooldownUsagesList.tsx b/src/interface/guide/components/MajorDefensives/AllCooldownUsagesList.tsx index 83866634417..811547e3bdf 100644 --- a/src/interface/guide/components/MajorDefensives/AllCooldownUsagesList.tsx +++ b/src/interface/guide/components/MajorDefensives/AllCooldownUsagesList.tsx @@ -109,7 +109,7 @@ export type CooldownDetailsProps = { mit?: Mitigation; }; -export const CooldownDetails = ({ analyzer, mit }: CooldownDetailsProps) => { +const CooldownDetails = ({ analyzer, mit }: CooldownDetailsProps) => { if (!mit) { return ( @@ -126,7 +126,7 @@ export const CooldownDetails = ({ analyzer, mit }: CooldownDetailsProps) => { ); }; -export const BreakdownByTalent = ({ analyzer, mit }: Required) => { +const BreakdownByTalent = ({ analyzer, mit }: Required) => { const segments = analyzer.mitigationSegments(mit); const maxValue = Math.max(analyzer.firstSeenMaxHp, mit.amount, mit.maxAmount ?? 0); diff --git a/src/interface/guide/components/MajorDefensives/Timeline.tsx b/src/interface/guide/components/MajorDefensives/Timeline.tsx index 550b36d074f..0a38503225a 100644 --- a/src/interface/guide/components/MajorDefensives/Timeline.tsx +++ b/src/interface/guide/components/MajorDefensives/Timeline.tsx @@ -60,13 +60,7 @@ const MitigationDataRow = styled.div` margin-top: 0.4em; `; -export const MitigationLabel = ({ - mitigation, - long, -}: { - mitigation: Mitigation; - long?: boolean; -}) => { +const MitigationLabel = ({ mitigation, long }: { mitigation: Mitigation; long?: boolean }) => { const fightStart = useInfo()?.fightStart ?? 0; return ( <> diff --git a/src/interface/guide/components/PerformanceBoxRow/index.tsx b/src/interface/guide/components/PerformanceBoxRow/index.tsx index 7c79b1dc4b6..fb2283346e0 100644 --- a/src/interface/guide/components/PerformanceBoxRow/index.tsx +++ b/src/interface/guide/components/PerformanceBoxRow/index.tsx @@ -33,7 +33,7 @@ export type BoxRowEntry = { className?: string; }; -export function getBlockClassName(value: BoxRowEntry) { +function getBlockClassName(value: BoxRowEntry) { switch (value.value) { case QualitativePerformance.Perfect: return 'perfect-block'; diff --git a/src/interface/guide/index.tsx b/src/interface/guide/index.tsx index b196aaf6a98..0793b218bd5 100644 --- a/src/interface/guide/index.tsx +++ b/src/interface/guide/index.tsx @@ -315,10 +315,10 @@ export const SubSection = ({ * Common styling colors and marks */ -export const PerfectMark = () => ; -export const GoodMark = () => ; -export const OkMark = () => ; -export const BadMark = () => ; +const PerfectMark = () => ; +const GoodMark = () => ; +const OkMark = () => ; +const BadMark = () => ; export const PerfectColor = getComputedStyle(document.documentElement).getPropertyValue( '--guide-perfect-color', diff --git a/src/interface/reducers/combatants.ts b/src/interface/reducers/combatants.ts index 70b41ec91c2..a3cc0d9f261 100644 --- a/src/interface/reducers/combatants.ts +++ b/src/interface/reducers/combatants.ts @@ -16,5 +16,5 @@ const combatantsSlice = createSlice({ }, }); -export const { resetSlice, setCombatants } = combatantsSlice.actions; +export const { setCombatants } = combatantsSlice.actions; export default combatantsSlice.reducer; diff --git a/src/interface/reducers/internetExplorer.ts b/src/interface/reducers/internetExplorer.ts index e6316b11c49..9bf3bb1055d 100644 --- a/src/interface/reducers/internetExplorer.ts +++ b/src/interface/reducers/internetExplorer.ts @@ -15,5 +15,5 @@ const internetExplorerSlice = createSlice({ }, }); -export const { resetSlice, setInternetExplorer } = internetExplorerSlice.actions; +export const { setInternetExplorer } = internetExplorerSlice.actions; export default internetExplorerSlice.reducer; diff --git a/src/interface/reducers/language.ts b/src/interface/reducers/language.ts index 038e0b24368..968c2ee569c 100644 --- a/src/interface/reducers/language.ts +++ b/src/interface/reducers/language.ts @@ -23,5 +23,5 @@ const languageSlice = createSlice({ }, }); -export const { resetSlice, setLanguage } = languageSlice.actions; +export const { setLanguage } = languageSlice.actions; export default languageSlice.reducer; diff --git a/src/interface/reducers/openModals.ts b/src/interface/reducers/openModals.ts index 86eece77727..f602e725d85 100644 --- a/src/interface/reducers/openModals.ts +++ b/src/interface/reducers/openModals.ts @@ -17,5 +17,5 @@ const openModalsSlice = createSlice({ }, }); -export const { resetSlice, openModal, closeModal } = openModalsSlice.actions; +export const { openModal, closeModal } = openModalsSlice.actions; export default openModalsSlice.reducer; diff --git a/src/interface/reducers/report.ts b/src/interface/reducers/report.ts index 16f1b3f0b01..4eb2b866863 100644 --- a/src/interface/reducers/report.ts +++ b/src/interface/reducers/report.ts @@ -15,5 +15,5 @@ const reportSlice = createSlice({ }, }); -export const { resetSlice, setReport } = reportSlice.actions; +export const { setReport } = reportSlice.actions; export default reportSlice.reducer; diff --git a/src/interface/reducers/reportCodesIgnoredPreviousPatchWarning.ts b/src/interface/reducers/reportCodesIgnoredPreviousPatchWarning.ts index 90a71b4d341..c5c8cd1ad16 100644 --- a/src/interface/reducers/reportCodesIgnoredPreviousPatchWarning.ts +++ b/src/interface/reducers/reportCodesIgnoredPreviousPatchWarning.ts @@ -18,6 +18,5 @@ const reportCodesIgnoredPreviousPatchWarningSlice = createSlice({ }, }); -export const { resetSlice, ignorePreviousPatchWarning } = - reportCodesIgnoredPreviousPatchWarningSlice.actions; +export const { ignorePreviousPatchWarning } = reportCodesIgnoredPreviousPatchWarningSlice.actions; export default reportCodesIgnoredPreviousPatchWarningSlice.reducer; diff --git a/src/interface/reducers/reportHistory.ts b/src/interface/reducers/reportHistory.ts index 1d80a3c99ee..44895b5d597 100644 --- a/src/interface/reducers/reportHistory.ts +++ b/src/interface/reducers/reportHistory.ts @@ -48,5 +48,5 @@ const reportHistorySlice = createSlice({ }, }); -export const { resetSlice, appendReportHistory } = reportHistorySlice.actions; +export const { appendReportHistory } = reportHistorySlice.actions; export default reportHistorySlice.reducer; diff --git a/src/interface/reducers/specsIgnoredNotSupportedWarning.ts b/src/interface/reducers/specsIgnoredNotSupportedWarning.ts index a664ab3a4c8..9ff6eabb9e2 100644 --- a/src/interface/reducers/specsIgnoredNotSupportedWarning.ts +++ b/src/interface/reducers/specsIgnoredNotSupportedWarning.ts @@ -15,6 +15,5 @@ const specsIgnoredNotSupportedWarningSlice = createSlice({ }, }); -export const { resetSlice, ignoreSpecNotSupportedWarning } = - specsIgnoredNotSupportedWarningSlice.actions; +export const { ignoreSpecNotSupportedWarning } = specsIgnoredNotSupportedWarningSlice.actions; export default specsIgnoredNotSupportedWarningSlice.reducer; diff --git a/src/interface/reducers/user.ts b/src/interface/reducers/user.ts index 3ee788d1c0a..c35bf385320 100644 --- a/src/interface/reducers/user.ts +++ b/src/interface/reducers/user.ts @@ -75,5 +75,4 @@ const userSlice = createSlice({ }, }); -export const { reset } = userSlice.actions; export default userSlice.reducer; diff --git a/src/interface/report/CombatLogParserContext.tsx b/src/interface/report/CombatLogParserContext.tsx index d37da4de44f..aa0d1f5bf7d 100644 --- a/src/interface/report/CombatLogParserContext.tsx +++ b/src/interface/report/CombatLogParserContext.tsx @@ -7,7 +7,7 @@ interface CombatLogParserContext { // This starts off undefined as we don't have an instance of CombatLogParser to work with // until it gets provided by the Provider. -export const CombatLogParserCtx = createContext(undefined); +const CombatLogParserCtx = createContext(undefined); interface Props { children: ReactNode; diff --git a/src/interface/report/ExpansionContext.tsx b/src/interface/report/ExpansionContext.tsx index f1f5b23139f..000a985c407 100644 --- a/src/interface/report/ExpansionContext.tsx +++ b/src/interface/report/ExpansionContext.tsx @@ -8,12 +8,12 @@ interface ExpansionContext { gameVersion: number; } -export const ExpansionCtx = createContext({ +const ExpansionCtx = createContext({ expansion: Expansion.Dragonflight, gameVersion: 0, }); -export const ExpansionContextProvider = ({ +const ExpansionContextProvider = ({ children, gameVersion, }: { diff --git a/src/interface/report/context/PatchContext.tsx b/src/interface/report/context/PatchContext.tsx index a15c2c273d5..3a8516b3640 100644 --- a/src/interface/report/context/PatchContext.tsx +++ b/src/interface/report/context/PatchContext.tsx @@ -1,21 +1,11 @@ import { Patch } from 'interface/report/PATCHES'; -import { createContext, ReactNode, useContext } from 'react'; +import { createContext, ReactNode } from 'react'; interface PatchContext { patch: Patch | undefined; } const PatchCtx = createContext(undefined); -export default PatchCtx; - -export const usePatch = () => { - const ctx = useContext(PatchCtx); - if (ctx === undefined) { - throw new Error('Unable to get patch'); - } - return ctx; -}; - interface Props { children: ReactNode; patch: Patch | undefined; diff --git a/src/interface/report/context/PlayerContext.tsx b/src/interface/report/context/PlayerContext.tsx index d76b69fa3b1..dbf9a540c07 100644 --- a/src/interface/report/context/PlayerContext.tsx +++ b/src/interface/report/context/PlayerContext.tsx @@ -10,8 +10,6 @@ interface PlayerContext { const PlayerCtx = createContext(undefined); -export default PlayerCtx; - export const usePlayer = () => { const ctx = useContext(PlayerCtx); if (ctx === undefined) { diff --git a/src/interface/report/context/ReportContext.tsx b/src/interface/report/context/ReportContext.tsx index 619067868f1..663794ecf49 100644 --- a/src/interface/report/context/ReportContext.tsx +++ b/src/interface/report/context/ReportContext.tsx @@ -7,8 +7,6 @@ interface ReportContext { } const ReportCtx = createContext(undefined); -export default ReportCtx; - export const useReport = () => { const ctx = useContext(ReportCtx); if (ctx === undefined) { diff --git a/src/interface/report/hooks/useTimeEventFilter.ts b/src/interface/report/hooks/useTimeEventFilter.ts index 72b2364492a..afc5a9a4ed3 100644 --- a/src/interface/report/hooks/useTimeEventFilter.ts +++ b/src/interface/report/hooks/useTimeEventFilter.ts @@ -157,7 +157,7 @@ function findRelevantPreFilterEvents(events: AnyEvent[]) { * @return {Array} * List of filtered events */ -export function filterEvents(events: AnyEvent[], start: number, end: number) { +function filterEvents(events: AnyEvent[], start: number, end: number) { function createFilterBuffInfoEvent(e: BuffEvent | StackEvent): FilterBuffInfoEvent { return { ...e, diff --git a/src/interface/selectors/url/report/getFightName.ts b/src/interface/selectors/url/report/getFightName.ts deleted file mode 100644 index ef0d421cbd2..00000000000 --- a/src/interface/selectors/url/report/getFightName.ts +++ /dev/null @@ -1,12 +0,0 @@ -import getFightParts from './getFightParts'; - -export default (pathname: string) => { - const parts = getFightParts(pathname); - if (parts) { - const fightName = parts[1]; - if (fightName) { - return fightName; - } - } - return null; -}; diff --git a/src/interface/selectors/url/report/getPlayerId.ts b/src/interface/selectors/url/report/getPlayerId.ts index 58ff456e69a..c4a1fe0e060 100644 --- a/src/interface/selectors/url/report/getPlayerId.ts +++ b/src/interface/selectors/url/report/getPlayerId.ts @@ -1,5 +1,3 @@ -import { getMatchWithPlayer } from './getMatch'; - export const getPlayerIdFromParam = (param: string | null | undefined) => { if (param) { const playerId = Number(param.split('-')[0]); @@ -9,8 +7,3 @@ export const getPlayerIdFromParam = (param: string | null | undefined) => { } return null; }; - -export default (pathname: string) => { - const match = getMatchWithPlayer(pathname); - return getPlayerIdFromParam(match?.params?.player); -}; diff --git a/src/interface/selectors/url/report/index.ts b/src/interface/selectors/url/report/index.ts index 59058337a06..d98227285cb 100644 --- a/src/interface/selectors/url/report/index.ts +++ b/src/interface/selectors/url/report/index.ts @@ -1,7 +1,5 @@ export { default as getReportCode } from './getReportCode'; export { default as getFightId } from './getFightId'; -export { default as getFightName } from './getFightName'; export { default as getPlayerName } from './getPlayerName'; -export { default as getPlayerId } from './getPlayerId'; export { default as getResultTab } from './getResultTab'; export { default as getBuild } from './getBuild'; diff --git a/src/interface/useTooltip.tsx b/src/interface/useTooltip.tsx index 27871c1d7cd..f68996b0b84 100644 --- a/src/interface/useTooltip.tsx +++ b/src/interface/useTooltip.tsx @@ -1,7 +1,7 @@ import { useWaSelector } from 'interface/utils/useWaSelector'; import RESOURCE_TYPES from 'game/RESOURCE_TYPES'; -export const itemRelative = (id: number, details: any): string => { +const itemRelative = (id: number, details: any): string => { const base = `item=${id}`; if (!details) { return base; @@ -23,19 +23,19 @@ export const itemRelative = (id: number, details: any): string => { } }; -export const itemSetRelative = (id: number): string => { +const itemSetRelative = (id: number): string => { return `item-set=${id}`; }; -export const npcRelative = (id: number): string => { +const npcRelative = (id: number): string => { return `npc=${id}`; }; -export const resourceRelative = (id: number): string => { +const resourceRelative = (id: number): string => { return RESOURCE_TYPES[id].url; }; -export const spellRelative = (id: number, details: any): string => { +const spellRelative = (id: number, details: any): string => { const base = `spell=${id}`; if (!details) { return base; diff --git a/src/parser/classic/modules/items/CombatPotionChecker.tsx b/src/parser/classic/modules/items/CombatPotionChecker.tsx index 368ad759a23..27d682f2147 100644 --- a/src/parser/classic/modules/items/CombatPotionChecker.tsx +++ b/src/parser/classic/modules/items/CombatPotionChecker.tsx @@ -1,7 +1,7 @@ import Potion from 'parser/retail/modules/items/Potion'; import SPELLS from 'common/SPELLS/classic/potions'; -export const COMBAT_POTIONS: number[] = [ +const COMBAT_POTIONS: number[] = [ SPELLS.CRAZY_ALCHEMISTS_POTION.id, SPELLS.INDESTRUCTIBLE_POTION.id, SPELLS.MIGHTY_ARCANE_PROTECTION_POTION.id, diff --git a/src/parser/core/DotSnapshots.ts b/src/parser/core/DotSnapshots.ts index 5e844f776b0..31839b67d63 100644 --- a/src/parser/core/DotSnapshots.ts +++ b/src/parser/core/DotSnapshots.ts @@ -18,11 +18,7 @@ import Combatant from 'parser/core/Combatant'; export const BUFF_DROP_BUFFER = 200; /** Default fraction of DoT duration carried over to new applications */ -export const DEFAULT_PANDEMIC_FRACTION = 0.3; - -export function hasSpec(snapshots: SnapshotSpec[], sss: StaticSnapshotSpec) { - return snapshots.find((ss) => ss.name === sss.name) !== undefined; -} +const DEFAULT_PANDEMIC_FRACTION = 0.3; /** * Many DoT spells 'snapshot' certain buffs on cast, benefitting from them over the DoT's diff --git a/src/parser/core/EventCalculateLib.tsx b/src/parser/core/EventCalculateLib.tsx index 2cd2dbfade4..e88504a6bd5 100644 --- a/src/parser/core/EventCalculateLib.tsx +++ b/src/parser/core/EventCalculateLib.tsx @@ -95,39 +95,6 @@ export function calculateOverhealing( return overhealing; } -/** - * Calculates the effective healing attributable to the *last stack* of a stacking percent healing buff. - * See `calculateEffectiveHealing` first for more info on the calculation and how overheal is handled. - * - * This can be useful for calculating the marginal benefit of 'one more point' in something. - * For example, consider an effect that grants +10% healing per point, and the player has 4 points. - * We can't consider the boost from the 4th point to be another +10% because it stacks additively with the previous +30%, - * so for a 1400 heal the calculation would be 1300 from base heal + 30%, 100 attributable from extra +10%. - * If we had considered the +10% in a vacuum the calculation would have been 1400 - (1400 / 1.1) = 127. - * - * @param event a healing event (or heal-like event) that was boosted by an effect - * @param relativeHealIncreasePerStack the boost's added multiplier per stack (for +10% pass 0.10) - * @param stacks the number of stacks active, *including the marginal stack we're calculating for* - * (so in the above example we'd pass 4) - * @return the amount of healing attributable on the given heal from the last stack of the given boost - */ -export function calculateEffectiveHealingStacked( - event: LightWeightHealingEvent, - relativeHealIncreasePerStack: number, - stacks: number, -): number { - const amount = event.amount; - const absorbed = event.absorbed || 0; - const overheal = event.overheal || 0; - const raw = amount + absorbed + overheal; - const relativeHealingIncreaseFactor = 1 + relativeHealIncreasePerStack * stacks; - const totalHealingIncrease = raw - raw / relativeHealingIncreaseFactor; - const oneStackHealingIncrease = totalHealingIncrease / stacks; - const effectiveHealing = oneStackHealingIncrease - overheal; - - return Math.max(0, effectiveHealing); -} - /** * Gets raw max casts of a spell over a period of time. * @param cooldown the cooldown time of the spell, in seconds @@ -138,34 +105,6 @@ export function calculateMaxCasts(cooldown: number, duration: number, charges = return duration / 1000 / cooldown + charges - 1; } -/** - * Calculates the effective damage attributable to the *last stack* of a stacking percent damage buff. - * - * This can be useful for calculating the marginal benefit of 'one more point' in something. - * For example, consider an effect that grants +10% damage per point, and the player has 4 points. - * We can't consider the boost from the 4th point to be another +10% because it stacks additively with the previous +30%, - * so for a 1400 damage the calculation would be 1300 from base damage + 30%, 100 attributable from extra +10%. - * If we had considered the +10% in a vacuum the calculation would have been 1400 - (1400 / 1.1) = 127. - * - * @param event a damage event that was boosted by an effect - * @param increase the boost's added multiplier per stack (for +10% pass 0.10) - * @param stacks the number of stacks active, *including the marginal stack we're calculating for* - * (so in the above example we'd pass 4) - * @return the amount of damage attributable on the given damage event from the last stack of the given boost - */ -export function calculateEffectiveDamageStacked( - event: DamageEvent, - increase: number, - stacks: number, -): number { - const raw = (event.amount || 0) + (event.absorbed || 0); - const relativeDamageIncreaseFactor = 1 + increase * stacks; - const totalIncrease = raw - raw / relativeDamageIncreaseFactor; - const oneStackIncrease = totalIncrease / stacks; - - return Math.max(0, oneStackIncrease); -} - export function calculateEffectiveDamageReduction(event: DamageEvent, reduction: number) { const raw = (event.amount || 0) + (event.absorbed || 0); return (raw / (1 - reduction)) * reduction; diff --git a/src/parser/core/ParseResults.tsx b/src/parser/core/ParseResults.tsx index 93baedd7e6b..66ba80f68e1 100644 --- a/src/parser/core/ParseResults.tsx +++ b/src/parser/core/ParseResults.tsx @@ -56,7 +56,7 @@ abstract class SuggestionAssertion { } } -export class NumberSuggestionAssertion extends SuggestionAssertion { +class NumberSuggestionAssertion extends SuggestionAssertion { _threshold?: number | ThresholdRange; _mode?: AssertionMode | null; @@ -171,7 +171,7 @@ export class NumberSuggestionAssertion extends SuggestionAssertion { } } -export class BoolSuggestionAssertion extends SuggestionAssertion { +class BoolSuggestionAssertion extends SuggestionAssertion { _compareTo?: boolean; constructor(options: boolean | BoolThreshold, addIssue: (issue: Issue) => void) { diff --git a/src/parser/core/SpellUsage/core.tsx b/src/parser/core/SpellUsage/core.tsx index a08c376a490..eef3c53f4d2 100644 --- a/src/parser/core/SpellUsage/core.tsx +++ b/src/parser/core/SpellUsage/core.tsx @@ -106,7 +106,7 @@ interface SpellUsageContextValue { setHideGoodCasts: (p: boolean) => void; } -export const SpellUsageContext = createContext({ +const SpellUsageContext = createContext({ hideGoodCasts: false, setHideGoodCasts: () => { // no-op diff --git a/src/parser/core/tests/constants.ts b/src/parser/core/tests/constants.ts index 22939d46bb7..0699423aac8 100644 --- a/src/parser/core/tests/constants.ts +++ b/src/parser/core/tests/constants.ts @@ -7,7 +7,7 @@ import type { PlayerInfo } from 'parser/core/Player'; import type Fight from 'parser/core/Fight'; import type CharacterProfile from 'parser/core/CharacterProfile'; -export const TEST_SPEC: Spec = { +const TEST_SPEC: Spec = { className: { id: '', }, diff --git a/src/parser/retail/armorMitigation.ts b/src/parser/retail/armorMitigation.ts index fa561cc8cd8..e62cc89bd7d 100644 --- a/src/parser/retail/armorMitigation.ts +++ b/src/parser/retail/armorMitigation.ts @@ -2,7 +2,7 @@ import { WCLFight } from 'parser/core/Fight'; import DIFFICULTIES from 'game/DIFFICULTIES'; import { DamageEvent } from 'parser/core/Events'; -export const maximumArmorMitigation = 0.85; +const maximumArmorMitigation = 0.85; enum ArmorCoefficientKey { BASE = 'base', @@ -14,7 +14,7 @@ enum ArmorCoefficientKey { } // These were pulled from Peak of Serenity theorycrafting channel and need to be updated every tier. -export const armorCoefficients = { +const armorCoefficients = { [ArmorCoefficientKey.BASE]: 11766.0, [ArmorCoefficientKey.MYTHIC_PLUS]: 18672.64, [ArmorCoefficientKey.RAID_LFR]: 19155.05, @@ -26,7 +26,7 @@ export const armorCoefficients = { /** * Gets the {@link ArmorCoefficientKey} for a given fight. */ -export const getArmorCoefficientKey = (fight: WCLFight) => { +const getArmorCoefficientKey = (fight: WCLFight) => { switch (fight.difficulty) { case DIFFICULTIES.LFR_RAID: return ArmorCoefficientKey.RAID_LFR; @@ -46,8 +46,7 @@ export const getArmorCoefficientKey = (fight: WCLFight) => { /** * Gets the armor coefficient for a given fight. */ -export const getArmorCoefficient = (fight: WCLFight) => - armorCoefficients[getArmorCoefficientKey(fight)]; +const getArmorCoefficient = (fight: WCLFight) => armorCoefficients[getArmorCoefficientKey(fight)]; const clamp = (actual: number, min: number, max: number) => Math.min(max, Math.max(min, actual)); @@ -66,7 +65,7 @@ interface ArmorMitigationResult { /** * Gets armor mitigation values for a given amount of armor, fight, and unmitigated amount of damage. */ -export const getArmorMitigation = ({ +const getArmorMitigation = ({ armor, fight, unmitigatedAmount = 0, diff --git a/src/parser/shared/metrics/apl/ChecklistRule.tsx b/src/parser/shared/metrics/apl/ChecklistRule.tsx index deb2b54b1d2..2df65f934ee 100644 --- a/src/parser/shared/metrics/apl/ChecklistRule.tsx +++ b/src/parser/shared/metrics/apl/ChecklistRule.tsx @@ -139,7 +139,7 @@ function CooldownList({ castEfficiency, cooldowns }: Pick {spells(rule).map((spell, index) => ( diff --git a/src/parser/shared/metrics/apl/annotate.tsx b/src/parser/shared/metrics/apl/annotate.tsx index dd01c257c88..c66fbd87841 100644 --- a/src/parser/shared/metrics/apl/annotate.tsx +++ b/src/parser/shared/metrics/apl/annotate.tsx @@ -32,7 +32,7 @@ export function ConditionDescription({ ); } -export function InefficientCastAnnotation({ violation }: { violation: Violation }) { +function InefficientCastAnnotation({ violation }: { violation: Violation }) { return ( <> {violation.expectedCast.map((spell, index) => ( diff --git a/src/parser/shared/metrics/apl/conditions/test-tools.ts b/src/parser/shared/metrics/apl/conditions/test-tools.ts index a29f3a6636b..d9f00ca0aa7 100644 --- a/src/parser/shared/metrics/apl/conditions/test-tools.ts +++ b/src/parser/shared/metrics/apl/conditions/test-tools.ts @@ -19,7 +19,7 @@ export const dummyCast: Spell = { icon: 'cast', }; -export const playerInfo: PlayerInfo = { +const playerInfo: PlayerInfo = { playerId: 1, combatant: {} as unknown as Combatant, defaultRange: AbilityRange.Melee, diff --git a/src/parser/shared/metrics/apl/index.ts b/src/parser/shared/metrics/apl/index.ts index 14a88993407..a31e4db6159 100644 --- a/src/parser/shared/metrics/apl/index.ts +++ b/src/parser/shared/metrics/apl/index.ts @@ -367,7 +367,7 @@ type ApplicableRule = { /** * Find the first applicable rule. See also: `ruleApplies` **/ -export function applicableRule( +function applicableRule( apl: Apl, abilities: Set, result: CheckState, @@ -401,7 +401,7 @@ function updateAbilities(state: AbilityState, event: AnyEvent): AbilityState { * Whether the APL applies to the given event. APL condition state is updated * on every event, this only determines if the rule checking needs to apply. */ -export function aplProcessesEvent( +function aplProcessesEvent( event: AnyEvent, result: CheckState, applicableSpells: Set, @@ -438,7 +438,7 @@ export function aplProcessesEvent( ); } -export function knownSpells( +function knownSpells( apl: Apl, info: PlayerInfo, ): { abilities: Set; applicableSpells: Set } { @@ -454,7 +454,7 @@ export function knownSpells( return { abilities, applicableSpells }; } -export function updateCheckState(result: CheckState, apl: Apl, event: AnyEvent): CheckState { +function updateCheckState(result: CheckState, apl: Apl, event: AnyEvent): CheckState { if (event.type === EventType.Cast) { result.mostRecentCast = event; } diff --git a/src/parser/shared/metrics/buffApplications.ts b/src/parser/shared/metrics/buffApplications.ts index 396eb7f69f6..a2b2c92f6c8 100644 --- a/src/parser/shared/metrics/buffApplications.ts +++ b/src/parser/shared/metrics/buffApplications.ts @@ -10,7 +10,7 @@ import metric from 'parser/core/metric'; * order, until it finds one where predicate returns true. If such an element is found, * findLast immediately returns that element. Otherwise, findLast returns undefined. */ -export function findLast( +function findLast( array: T[], predicate: (value: T, index: number, obj: T[]) => boolean, ): T | undefined { diff --git a/src/parser/shared/metrics/resourceGained.ts b/src/parser/shared/metrics/resourceGained.ts index 09a8104f00e..ba680f01d34 100644 --- a/src/parser/shared/metrics/resourceGained.ts +++ b/src/parser/shared/metrics/resourceGained.ts @@ -27,18 +27,6 @@ const resourceGained = (events: AnyEvent[]) => export default metric(resourceGained); -export const sumResourceGained = ( - resourcesGained: ResourcesGained, - resourceId: number, - playerId: number, -) => - Object.values(resourcesGained[playerId]?.[resourceId]).reduce((sum, item) => sum + item, 0) || 0; -export const sumResourceGainedByPlayerBySpell = ( - resourcesGained: ResourcesGained, - resourceId: number, - playerId: number, - spellId: number, -) => resourcesGained[playerId]?.[resourceId]?.[spellId] || 0; export const sumResourceGainedByPlayerPerSpell = ( resourcesGained: ResourcesGained, resourceId: number, diff --git a/src/parser/shared/metrics/resourceWasted.ts b/src/parser/shared/metrics/resourceWasted.ts index 86de7d912bf..0dd3bdff21a 100644 --- a/src/parser/shared/metrics/resourceWasted.ts +++ b/src/parser/shared/metrics/resourceWasted.ts @@ -26,23 +26,6 @@ const resourceWasted = (events: AnyEvent[]) => export default metric(resourceWasted); -export const sumResourceWasted = ( - resourcesWasted: ResourcesWasted, - resourceId: number, - playerId: number, -) => - Object.values(resourcesWasted[playerId]?.[resourceId]).reduce((sum, item) => sum + item, 0) || 0; -export const sumResourceWastedByPlayerBySpell = ( - resourcesWasted: ResourcesWasted, - resourceId: number, - playerId: number, - spellId: number, -) => resourcesWasted[playerId]?.[resourceId]?.[spellId] || 0; -export const sumResourceWastedByPlayerPerSpell = ( - resourcesWasted: ResourcesWasted, - resourceId: number, - playerId: number, -) => resourcesWasted[playerId]?.[resourceId]; export const sumResourceWastedBySpell = ( resourcesWasted: ResourcesWasted, resourceId: number, diff --git a/src/parser/shared/modules/Enemies.ts b/src/parser/shared/modules/Enemies.ts index 4a2f5ea5136..389eda4eab3 100644 --- a/src/parser/shared/modules/Enemies.ts +++ b/src/parser/shared/modules/Enemies.ts @@ -44,11 +44,6 @@ export function encodeTargetString(id: number, instance = 0) { return `${id}.${instance}`; } -export function decodeTargetString(string: string) { - const [id, instance = 0] = string.split('.'); - return { id, instance }; -} - class Enemies extends Entities { enemies: { [enemyId: string]: Enemy } = {}; /** diff --git a/src/parser/shared/modules/Entities.ts b/src/parser/shared/modules/Entities.ts index 8a55fe071c2..2c0327fbab9 100644 --- a/src/parser/shared/modules/Entities.ts +++ b/src/parser/shared/modules/Entities.ts @@ -29,7 +29,7 @@ export function encodeFriendlyEventTargetString(event: AnyEvent) { return encodeTargetString(event.targetID, event.targetInstance, event.timestamp); } -export function encodeTargetString(id: number, instance = 0, time: number) { +function encodeTargetString(id: number, instance = 0, time: number) { return `${id}.${instance}.${time}`; } diff --git a/src/parser/shared/modules/SpellUsable.ts b/src/parser/shared/modules/SpellUsable.ts index 431110c3d03..b06d3425739 100644 --- a/src/parser/shared/modules/SpellUsable.ts +++ b/src/parser/shared/modules/SpellUsable.ts @@ -20,7 +20,7 @@ import { maybeGetTalentOrSpell } from 'common/maybeGetTalentOrSpell'; const DEBUG = false; /** Margin in milliseconds beyond which we log errors if numbers don't line up */ -export const COOLDOWN_LAG_MARGIN = 150; +const COOLDOWN_LAG_MARGIN = 150; function spellName(spellId: number) { return maybeGetTalentOrSpell(spellId)?.name ?? '???'; diff --git a/src/parser/shared/modules/StatTracker.ts b/src/parser/shared/modules/StatTracker.ts index 8cfbe93382f..196c9925763 100644 --- a/src/parser/shared/modules/StatTracker.ts +++ b/src/parser/shared/modules/StatTracker.ts @@ -28,7 +28,7 @@ import { calculateSecondaryStatDefault } from 'parser/core/stats'; * Generates a {@link StatBuff} that defines a buff that gives the * appropiate `PRIMARY_STAT` for the current spec. */ -export function primaryStat(value: number): StatBuff { +function primaryStat(value: number): StatBuff { return { [PRIMARY_STAT.STRENGTH]: (selectedCombatant) => selectedCombatant.primaryStat === PRIMARY_STAT.STRENGTH ? value : 0, diff --git a/src/parser/shared/modules/features/STAT.tsx b/src/parser/shared/modules/features/STAT.tsx index 243b7773283..7e5995f6c4a 100644 --- a/src/parser/shared/modules/features/STAT.tsx +++ b/src/parser/shared/modules/features/STAT.tsx @@ -176,10 +176,6 @@ export function getClassNameColor(stat: STAT) { } } -export function getClassNameBackgroundColor(stat: STAT) { - return `${getClassNameColor(stat)}-bg`; -} - export function getIcon(stat: STAT): (props: any) => JSX.Element { switch (stat) { case STAT.HEALTH: diff --git a/src/parser/shared/modules/helpers/Probability.tsx b/src/parser/shared/modules/helpers/Probability.tsx index 827396706cc..65e5d7aadbb 100644 --- a/src/parser/shared/modules/helpers/Probability.tsx +++ b/src/parser/shared/modules/helpers/Probability.tsx @@ -100,7 +100,7 @@ function resetProbabilityArray( return procProbabilities; } -export function setMinMaxProbabilities( +function setMinMaxProbabilities( actualProcs: number, procAttempts: number, procChance: number | number[], @@ -155,7 +155,7 @@ function Ekj(k: number, j: number, p: number[], lookup: any[][]): number { * @param n {Number} Number of total tries * @param p {[Number]} Probability vector */ -export function poissonBinomialPMF(k: number, n: number, p: any[]) { +function poissonBinomialPMF(k: number, n: number, p: any[]) { // denoted in the paper as ξk, I'll call it Ek for simplicity // using the recursive formula in chapter 2.5 if (p.length !== n) { @@ -170,30 +170,6 @@ export function poissonBinomialPMF(k: number, n: number, p: any[]) { return Ekj(k, n, p, lookup); } -/** - * Calculates the probability that out of n tries with p probabilities, we get less than or equal k positive outcomes - * @param k {Number} Number of desired positive outcomes - * @param n {Number} Number of total tries - * @param p {[Number]} Probability vector - */ -export function poissonBinomialCDF(k: number, n: number, p: number[]) { - // While technically equal to summing Ei from i = 0 to k, since we use recursion, a better solution is a lookup table - if (p.length !== n) { - throw new Error( - 'You must supply a probability vector with the same length as the number of total tries into Poisson Binomial CDF', - ); - } - // see comments in poissonBinomialPMF - const lookup = [...Array(n + 1)].map((_) => Array(n + 1).fill(null)); - let probability = 0; - // since Ekj uses the values from "previous row" (Ekj(k - 1, j - 1, ...)), it's better to iterate from 0 - // this way, it produces the least necessary amount of calculations with the lookup table (only the Ekj(k, j - 1) parts) - for (let i = 0; i <= k; i += 1) { - probability += Ekj(i, n, p, lookup); - } - return probability; -} - export function plotOneVariableBinomChart( actualProcs: number, procAttempts: number, diff --git a/src/parser/shared/modules/hit-tracking/utilities.ts b/src/parser/shared/modules/hit-tracking/utilities.ts index 572fe71fe26..02af78c23c6 100644 --- a/src/parser/shared/modules/hit-tracking/utilities.ts +++ b/src/parser/shared/modules/hit-tracking/utilities.ts @@ -4,7 +4,7 @@ import Enemies, { encodeEventSourceString } from 'parser/shared/modules/Enemies' import IgnoredAbilities from './IgnoredAbilities'; -export function notableEnemy(enemies: Enemies, event: DamageEvent): boolean { +function notableEnemy(enemies: Enemies, event: DamageEvent): boolean { const enemyId = encodeEventSourceString(event); if (!enemyId) { return false; diff --git a/src/parser/shared/normalizers/Channeling.ts b/src/parser/shared/normalizers/Channeling.ts index 0d026b068bd..6e321845576 100644 --- a/src/parser/shared/normalizers/Channeling.ts +++ b/src/parser/shared/normalizers/Channeling.ts @@ -207,7 +207,7 @@ export function isRealCast(event: CastEvent): boolean { } /** Updates the ChannelState with a BeginChannelEvent */ -export function beginCurrentChannel(event: BeginCastEvent | CastEvent, channelState: ChannelState) { +function beginCurrentChannel(event: BeginCastEvent | CastEvent, channelState: ChannelState) { const beginChannel: BeginChannelEvent = { type: EventType.BeginChannel, ability: event.ability, @@ -232,7 +232,7 @@ function copyTargetData(target: ChannelState['unresolvedChannel'], source: AnyEv } /** Updates the ChannelState with a EndChannelEvent tied to the current channel */ -export function endCurrentChannel(event: AnyEvent, channelState: ChannelState) { +function endCurrentChannel(event: AnyEvent, channelState: ChannelState) { if (!channelState.unresolvedChannel) { // TODO log error? return; @@ -295,7 +295,7 @@ function attachChannelToCast(endChannelEvent: EndChannelEvent): void { * @param channelState the current channel state * @param currentEvent the current event being handled */ -export function cancelCurrentChannel(currentEvent: AnyEvent, channelState: ChannelState) { +function cancelCurrentChannel(currentEvent: AnyEvent, channelState: ChannelState) { if (channelState.unresolvedChannel !== null) { channelState.unresolvedChannel.isCancelled = true; channelState.unresolvedChannel = null; @@ -317,7 +317,7 @@ export function cancelCurrentChannel(currentEvent: AnyEvent, channelState: Chann * * @param spellId the guid for the tracked Cast and RemoveBuff/RemoveDebuff events. */ -export function buffChannelSpec(spellId: number): ChannelSpec { +function buffChannelSpec(spellId: number): ChannelSpec { const guids = [spellId]; const handler: ChannelHandler = ( event: AnyEvent, @@ -355,7 +355,7 @@ export function buffChannelSpec(spellId: number): ChannelSpec { * * @param spellId the guid for the tracked Empower Cast event. */ -export function empowerChannelSpec(spellId: number): ChannelSpec { +function empowerChannelSpec(spellId: number): ChannelSpec { const guids = [spellId]; const handler: ChannelHandler = ( event: AnyEvent, @@ -400,7 +400,7 @@ export function empowerChannelSpec(spellId: number): ChannelSpec { * * @param spellId the guid for the tracked Cast events */ -export function nextCastChannelSpec(spellId: number): ChannelSpec { +function nextCastChannelSpec(spellId: number): ChannelSpec { const guids = [spellId]; const handler: ChannelHandler = ( event: AnyEvent, diff --git a/src/parser/ui/PerformanceLabel.tsx b/src/parser/ui/PerformanceLabel.tsx index 3d6ea231ec1..e1e7311a8bd 100644 --- a/src/parser/ui/PerformanceLabel.tsx +++ b/src/parser/ui/PerformanceLabel.tsx @@ -3,7 +3,7 @@ import { QualitativePerformance } from 'parser/ui/QualitativePerformance'; import { ComponentProps, ReactNode } from 'react'; import { PerformanceMark, qualitativePerformanceToColor } from 'interface/guide'; -export const ColoredText = styled.span` +const ColoredText = styled.span` color: ${(props) => props.color}; `;