From 064e24ef8041a028d80ab514b9000cf51625d0fb Mon Sep 17 00:00:00 2001 From: EliphasNUIT Date: Sat, 15 Jul 2023 02:19:58 +0200 Subject: [PATCH] simplified access cleanup --- .editorconfig | 3 + GW2EIBuilders/HtmlModels/PhaseDto.cs | 14 +- GW2EIBuilders/JsonModels/JsonLogBuilder.cs | 4 +- .../EIData/Actors/AbstractSingleActor.cs | 2 +- .../ActorsHelper/SingleActorBuffsHelper.cs | 2 +- .../ActorsHelper/SingleActorGraphsHelper.cs | 6 +- .../EIData/Buffs/BuffInfoSolver.cs | 108 ++++----- .../DamageModifiers/CommonDamageModifiers.cs | 2 +- .../EIData/ProfHelpers/Thief/SpecterHelper.cs | 4 +- .../EncounterLogic/EncounterLogicUtils.cs | 158 +------------- GW2EIEvtcParser/EncounterLogic/FightLogic.cs | 10 +- .../Fractals/ShatteredObservatory/Arkk.cs | 4 +- .../Fractals/ShatteredObservatory/Skorvald.cs | 80 +++---- .../Fractals/SunquaPeak/AiKeeperOfThePeak.cs | 6 +- .../EncounterLogic/Raids/W1/Gorseval.cs | 4 +- .../EncounterLogic/Raids/W3/Escort.cs | 4 +- .../EncounterLogic/Raids/W3/KeepConstruct.cs | 22 +- .../EncounterLogic/Raids/W3/TwistedCastle.cs | 2 +- .../EncounterLogic/Raids/W3/Xera.cs | 4 +- .../EncounterLogic/Raids/W4/Deimos.cs | 20 +- .../EncounterLogic/Raids/W4/Samarog.cs | 8 +- .../EncounterLogic/Raids/W5/River.cs | 2 +- .../EncounterLogic/Raids/W5/SoullessHorror.cs | 4 +- .../Raids/W5/StatueOfDarkness.cs | 2 +- .../EncounterLogic/Raids/W5/StatueOfDeath.cs | 4 +- .../EncounterLogic/Raids/W5/StatueOfIce.cs | 4 +- .../EncounterLogic/Raids/W6/Qadim.cs | 206 +++++++++--------- .../EncounterLogic/Raids/W7/Adina.cs | 4 +- .../EncounterLogic/Raids/W7/PeerlessQadim.cs | 4 +- .../EndOfDragons/AetherbladeHideout.cs | 6 +- .../Strikes/EndOfDragons/HarvestTemple.cs | 4 +- .../Strikes/EndOfDragons/KainengOverlook.cs | 4 +- .../CombatEvents/CombatEventFactory.cs | 114 +++++----- .../NonDirectHealthDamageEvent.cs | 10 +- .../MetaDataEvents/BuffInfoEvent.cs | 8 +- GW2EIEvtcParser/ParserHelpers/ArcDPSEnums.cs | 2 +- 36 files changed, 346 insertions(+), 499 deletions(-) diff --git a/.editorconfig b/.editorconfig index 7314dde76e..515b3c1008 100644 --- a/.editorconfig +++ b/.editorconfig @@ -230,6 +230,9 @@ csharp_style_prefer_top_level_statements = true:silent csharp_style_expression_bodied_lambdas = true:silent csharp_style_expression_bodied_local_functions = false:silent +# IDE0002: Simplify Member Access +dotnet_diagnostic.IDE0002.severity = warning + [*.vb] # Modifier preferences visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion diff --git a/GW2EIBuilders/HtmlModels/PhaseDto.cs b/GW2EIBuilders/HtmlModels/PhaseDto.cs index f5ed0625fa..ec9c43ae44 100644 --- a/GW2EIBuilders/HtmlModels/PhaseDto.cs +++ b/GW2EIBuilders/HtmlModels/PhaseDto.cs @@ -174,13 +174,13 @@ public PhaseDto(PhaseData phase, IReadOnlyList phases, ParsedEvtcLog } StatisticsHelper statistics = log.StatisticsHelper; - DpsStats = PhaseDto.BuildDPSData(log, phase); - DpsStatsTargets = PhaseDto.BuildDPSTargetsData(log, phase); - OffensiveStatsTargets = PhaseDto.BuildOffensiveStatsTargetsData(log, phase); - OffensiveStats = PhaseDto.BuildOffensiveStatsData(log, phase); - GameplayStats = PhaseDto.BuildGameplayStatsData(log, phase); - DefStats = PhaseDto.BuildDefenseData(log, phase); - SupportStats = PhaseDto.BuildSupportData(log, phase); + DpsStats = BuildDPSData(log, phase); + DpsStatsTargets = BuildDPSTargetsData(log, phase); + OffensiveStatsTargets = BuildOffensiveStatsTargetsData(log, phase); + OffensiveStats = BuildOffensiveStatsData(log, phase); + GameplayStats = BuildGameplayStatsData(log, phase); + DefStats = BuildDefenseData(log, phase); + SupportStats = BuildSupportData(log, phase); // BoonStats = BuffData.BuildBuffUptimeData(log, statistics.PresentBoons, phase); BoonDictionaries = BuffData.BuildBuffDictionariesData(log, statistics.PresentBoons, phase); diff --git a/GW2EIBuilders/JsonModels/JsonLogBuilder.cs b/GW2EIBuilders/JsonModels/JsonLogBuilder.cs index 88020cafab..0d4b55eb29 100644 --- a/GW2EIBuilders/JsonModels/JsonLogBuilder.cs +++ b/GW2EIBuilders/JsonModels/JsonLogBuilder.cs @@ -41,8 +41,8 @@ internal static BuffDesc BuildBuffDesc(Buff buff, ParsedEvtcLog log) Name = buff.Name, Icon = buff.Link, Stacking = buff.Type == Buff.BuffType.Intensity, - ConversionBasedHealing = log.CombatData.HasEXTHealing ? log.CombatData.EXTHealingCombatData.GetHealingType(buff, log) == GW2EIEvtcParser.Extensions.HealingStatsExtensionHandler.EXTHealingType.ConversionBased : false, - HybridHealing = log.CombatData.HasEXTHealing ? log.CombatData.EXTHealingCombatData.GetHealingType(buff, log) == GW2EIEvtcParser.Extensions.HealingStatsExtensionHandler.EXTHealingType.Hybrid : false + ConversionBasedHealing = log.CombatData.HasEXTHealing ? log.CombatData.EXTHealingCombatData.GetHealingType(buff, log) == HealingStatsExtensionHandler.EXTHealingType.ConversionBased : false, + HybridHealing = log.CombatData.HasEXTHealing ? log.CombatData.EXTHealingCombatData.GetHealingType(buff, log) == HealingStatsExtensionHandler.EXTHealingType.Hybrid : false }; BuffInfoEvent buffInfoEvent = log.CombatData.GetBuffInfoEvent(buff.ID); if (buffInfoEvent != null) diff --git a/GW2EIEvtcParser/EIData/Actors/AbstractSingleActor.cs b/GW2EIEvtcParser/EIData/Actors/AbstractSingleActor.cs index 1fd3676c73..037d8b290f 100644 --- a/GW2EIEvtcParser/EIData/Actors/AbstractSingleActor.cs +++ b/GW2EIEvtcParser/EIData/Actors/AbstractSingleActor.cs @@ -472,7 +472,7 @@ protected void SetCastEvents(ParsedEvtcLog log) CastEvents.AddRange(log.CombatData.GetInstantCastData(AgentItem)); foreach (WeaponSwapEvent wepSwap in log.CombatData.GetWeaponSwapData(AgentItem)) { - if (CastEvents.Count > 0 && (wepSwap.Time - CastEvents.Last().Time) < ParserHelper.ServerDelayConstant && CastEvents.Last().SkillId == SkillIDs.WeaponSwap) + if (CastEvents.Count > 0 && (wepSwap.Time - CastEvents.Last().Time) < ServerDelayConstant && CastEvents.Last().SkillId == SkillIDs.WeaponSwap) { CastEvents[CastEvents.Count - 1] = wepSwap; } diff --git a/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorBuffsHelper.cs b/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorBuffsHelper.cs index 9f4e6f1fc1..7987e8ffa9 100644 --- a/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorBuffsHelper.cs +++ b/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorBuffsHelper.cs @@ -272,7 +272,7 @@ private void ComputeBuffMap(ParsedEvtcLog log) { // _buffMap = new BuffDictionary(); - if (Actor.AgentItem == ParserHelper._unknownAgent) + if (Actor.AgentItem == _unknownAgent) { _buffMap.Finalize(log, Actor.AgentItem, out _trackedBuffs); return; diff --git a/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorGraphsHelper.cs b/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorGraphsHelper.cs index d5056d6589..a5eb9b33a1 100644 --- a/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorGraphsHelper.cs +++ b/GW2EIEvtcParser/EIData/Actors/ActorsHelper/SingleActorGraphsHelper.cs @@ -52,7 +52,7 @@ public IReadOnlyList GetBarrierUpdates(ParsedEvtcLog log) - public IReadOnlyList Get1SDamageList(ParsedEvtcLog log, long start, long end, AbstractSingleActor target, ParserHelper.DamageType damageType = ParserHelper.DamageType.All) + public IReadOnlyList Get1SDamageList(ParsedEvtcLog log, long start, long end, AbstractSingleActor target, ParserHelper.DamageType damageType = DamageType.All) { if (!_damageList1S.TryGetValue(damageType, out CachingCollectionWithTarget graphs)) { @@ -139,7 +139,7 @@ public double GetCurrentHealthPercent(ParsedEvtcLog log, long time) } foreach (Segment seg in hps) { - if (seg.IntersectSegment(time - ParserHelper.ServerDelayConstant, time + ParserHelper.ServerDelayConstant)) + if (seg.IntersectSegment(time - ServerDelayConstant, time + ServerDelayConstant)) { return seg.Value; } @@ -156,7 +156,7 @@ public double GetCurrentBarrierPercent(ParsedEvtcLog log, long time) } foreach (Segment seg in hps) { - if (seg.IntersectSegment(time - ParserHelper.ServerDelayConstant, time + ParserHelper.ServerDelayConstant)) + if (seg.IntersectSegment(time - ServerDelayConstant, time + ServerDelayConstant)) { return seg.Value; } diff --git a/GW2EIEvtcParser/EIData/Buffs/BuffInfoSolver.cs b/GW2EIEvtcParser/EIData/Buffs/BuffInfoSolver.cs index 1c6a646508..c1d652ee35 100644 --- a/GW2EIEvtcParser/EIData/Buffs/BuffInfoSolver.cs +++ b/GW2EIEvtcParser/EIData/Buffs/BuffInfoSolver.cs @@ -52,7 +52,7 @@ public bool Match(BuffFormula formula, Dictionary 0 && _constantOffset == AnyPositive) || (formula.ConstantOffset < 0 && _constantOffset == AnyNegative)) { @@ -83,85 +83,85 @@ public bool Match(BuffFormula formula, Dictionary _recognizer = new Dictionary { - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.PhysRec2, GW2Builds.EODBeta3), Protection }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.CondRec2, GW2Builds.EODBeta3), Resolution }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.PhysRec2, GW2Builds.EODBeta3), Protection }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.CondRec2, GW2Builds.EODBeta3), Resolution }, // CriticalChance - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.CriticalChance), Fury }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.CriticalChance), Fury }, // Fishing Power - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.FishingPower), PlateOfImperialPalaceSpecial }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.FishingPower), PlateOfCrispyFishPancakes }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.FishingPower), BowlOfJadeSeaBounty }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.FishingPower), BowlOfEchovaldHotpot }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.FishingPower), PlateOfImperialPalaceSpecial }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.FishingPower), PlateOfCrispyFishPancakes }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.FishingPower), BowlOfJadeSeaBounty }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.FishingPower), BowlOfEchovaldHotpot }, // Life Leech - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.SiphonInc, GW2Builds.May2021Balance), KallasFervor }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.SiphonInc, GW2Builds.May2021Balance), ImprovedKallasFervor }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, ArcDPSEnums.BuffAttribute.SiphonInc, GW2Builds.May2021Balance), Fury }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.SiphonInc, GW2Builds.May2021Balance), KallasFervor }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.SiphonInc, GW2Builds.May2021Balance), ImprovedKallasFervor }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, BuffAttribute.SiphonInc, GW2Builds.May2021Balance), Fury }, // ConditionDurationIncrease - {new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, ArcDPSEnums.BuffAttribute.ConditionDurationInc), Fury }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, BuffAttribute.ConditionDurationInc), Fury }, // SkillRechargeSpeedIncrease - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.SkillRechargeSpeedIncrease), Alacrity }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.SkillRechargeSpeedIncrease), Alacrity }, // HealingOutputFormula - {new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingOutputFormula), Regeneration }, + {new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.HealingOutputFormula), Regeneration }, // EnduranceRegeneration - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.EnduranceRegeneration), Vigor }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.EnduranceRegeneration), Vigor }, // MovementSpeed - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MovementSpeed), Swiftness }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MovementSpeed), Swiftness }, // DamageFormulaSquaredLevel - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DamageFormulaSquaredLevel, 0, GW2Builds.May2021Balance), Retaliation }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.DamageFormulaSquaredLevel, 0, GW2Builds.May2021Balance), Retaliation }, // DamageFormula - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DamageFormula), Bleeding }, - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DamageFormula), Burning }, - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DamageFormula), Poison }, - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DamageFormula), Confusion }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.DamageFormula), Bleeding }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.DamageFormula), Burning }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.DamageFormula), Poison }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, 0, 0, 0, 0, 0, BuffAttribute.DamageFormula), Confusion }, // SkillActivationDamageFormula - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.SkillActivationDamageFormula), Confusion }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, 0, 0, 0, BuffAttribute.SkillActivationDamageFormula), Confusion }, // MovementActivationDamageFormula - { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, AnyPositive, 0, 0, ArcDPSEnums.BuffAttribute.MovementActivationDamageFormula), Torment }, + { new BuffFormulaDescriptor(AnyPositive, AnyPositive, AnyPositive, 0, AnyPositive, 0, 0, BuffAttribute.MovementActivationDamageFormula), Torment }, // IncomingHealingEffectiveness - { new BuffFormulaDescriptor(AnyNegative, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessRec), Poison }, + { new BuffFormulaDescriptor(AnyNegative, 0, 0, 0, 0, 0, 0, BuffAttribute.HealingEffectivenessRec), Poison }, // GlancingBlow - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.GlancingBlow), Weakness }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.GlancingBlow), Weakness }, // OutgoingHealingEffectivenessFlatInc - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessFlatInc), SuperiorRuneOfTheMonk }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessFlatInc), DeliciousRiceBall }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessFlatInc), InvokingHarmony }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessFlatInc), CelestialAvatar }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessFlatInc), NaturalMender }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.HealingEffectivenessFlatInc), SuperiorRuneOfTheMonk }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.HealingEffectivenessFlatInc), DeliciousRiceBall }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.HealingEffectivenessFlatInc), InvokingHarmony }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, BuffAttribute.HealingEffectivenessFlatInc), CelestialAvatar }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, AnyPositive, 0, 0, 0, BuffAttribute.HealingEffectivenessFlatInc), NaturalMender }, // Damage to HP - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.StrikeDamageToHP), BloodReckoning }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.StrikeDamageToHP), LitanyOfWrath }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.StrikeDamageToHP), BloodReckoning }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.StrikeDamageToHP), LitanyOfWrath }, // Condition to HP - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ConditionDamageToHP), BloodReckoning }, - { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ConditionDamageToHP), LitanyOfWrath }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ConditionDamageToHP), BloodReckoning }, + { new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ConditionDamageToHP), LitanyOfWrath }, // BoonDurationIncrease - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.BoonDurationInc), WovenWater }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.BoonDurationInc), PerfectWeave }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.BoonDurationInc), WovenWater }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.BoonDurationInc), PerfectWeave }, // Experience from kills - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), RareVeggiePizza }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), PlateOfBeefRendang }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), SoulPastry }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), BowlOfFireMeatChili }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), SuperiorSharpeningStone }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), ToxicFocusingCrystal }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), BowlOfSweetAndSpicyButternutSquashSoup }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromKills), MasterMaintenanceOil }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), RareVeggiePizza }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), PlateOfBeefRendang }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), SoulPastry }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), BowlOfFireMeatChili }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), SuperiorSharpeningStone }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), ToxicFocusingCrystal }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), BowlOfSweetAndSpicyButternutSquashSoup }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromKills), MasterMaintenanceOil }, // Experience from all - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.ExperienceFromAll), RedLentilSaobosa }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.ExperienceFromAll), RedLentilSaobosa }, // HealingEffectivenessRec2 - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.HealingEffectivenessRec2), EternalOasis }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.HealingEffectivenessRec2), EternalOasis }, // MagicFind - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MagicFind), GuildItemResearch }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MagicFind), GuildItemResearch }, // Stacking Movement Speed - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MovementSpeedStacking), RisingMomentum }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MovementSpeedStacking2), FormUpAndAdvance }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MovementSpeedStacking2), UnseenBurden }, - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.MovementSpeedStacking2), Hamstrung }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MovementSpeedStacking), RisingMomentum }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MovementSpeedStacking2), FormUpAndAdvance }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MovementSpeedStacking2), UnseenBurden }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.MovementSpeedStacking2), Hamstrung }, // Maximum HP - {new BuffFormulaDescriptor(AnyNegative, 0, 0, 0, 0, MistlockInstabilityBoonOverload, 0, ArcDPSEnums.BuffAttribute.MaximumHP), Might }, + {new BuffFormulaDescriptor(AnyNegative, 0, 0, 0, 0, MistlockInstabilityBoonOverload, 0, BuffAttribute.MaximumHP), Might }, // Vitality Percent - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.VitalityPercent), ReinforcedArmor }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.VitalityPercent), ReinforcedArmor }, // Defense Percent - {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, ArcDPSEnums.BuffAttribute.DefensePercent), ReinforcedArmor }, + {new BuffFormulaDescriptor(AnyPositive, 0, 0, 0, 0, 0, 0, BuffAttribute.DefensePercent), ReinforcedArmor }, }; public static void AdjustBuffs(CombatData combatData, IReadOnlyDictionary buffsByID, ParserController operation) diff --git a/GW2EIEvtcParser/EIData/DamageModifiers/CommonDamageModifiers.cs b/GW2EIEvtcParser/EIData/DamageModifiers/CommonDamageModifiers.cs index 1477a8b7ac..5eaab47144 100644 --- a/GW2EIEvtcParser/EIData/DamageModifiers/CommonDamageModifiers.cs +++ b/GW2EIEvtcParser/EIData/DamageModifiers/CommonDamageModifiers.cs @@ -44,7 +44,7 @@ internal static class CommonDamageModifiers new BuffDamageModifierTarget(Exposed31589, "Exposed (Condition)", "20%", DamageSource.All, 20.0, DamageType.Condition, DamageType.All, Source.Common, ByPresence, "https://wiki.guildwars2.com/images/6/6b/Exposed.png", DamageModifierMode.All).WithBuilds(GW2Builds.March2022Balance2), new BuffDamageModifierTarget(OldExposed, "Old Exposed (Strike)", "30%", DamageSource.All, 30.0, DamageType.Strike, DamageType.All, Source.Common, ByPresence, "https://wiki.guildwars2.com/images/6/6b/Exposed.png", DamageModifierMode.All).WithBuilds(GW2Builds.March2022Balance2), new BuffDamageModifierTarget(OldExposed, "Old Exposed (Condition)", "100%", DamageSource.All, 100.0, DamageType.Condition, DamageType.All, Source.Common, ByPresence, "https://wiki.guildwars2.com/images/6/6b/Exposed.png", DamageModifierMode.All).WithBuilds(GW2Builds.March2022Balance2), - new BuffDamageModifierTarget(Vulnerability, "Vulnerability", "1% per Stack", DamageSource.All, 1.0, DamageType.StrikeAndCondition, DamageType.All, Source.Common, ByStack, "https://wiki.guildwars2.com/images/a/af/Vulnerability.png", DamageModifierMode.All).UsingChecker((evt, log) => !evt.To.HasBuff(log, Resistance, evt.Time) && (!evt.To.IsSpecies(ArcDPSEnums.TargetID.Sabir) || !evt.To.HasBuff(log, IonShield, evt.Time))), // Ion shield disabled vulnerability, so we check the presence of the buff when hitting Sabir + new BuffDamageModifierTarget(Vulnerability, "Vulnerability", "1% per Stack", DamageSource.All, 1.0, DamageType.StrikeAndCondition, DamageType.All, Source.Common, ByStack, "https://wiki.guildwars2.com/images/a/af/Vulnerability.png", DamageModifierMode.All).UsingChecker((evt, log) => !evt.To.HasBuff(log, Resistance, evt.Time) && (!evt.To.IsSpecies(TargetID.Sabir) || !evt.To.HasBuff(log, IonShield, evt.Time))), // Ion shield disabled vulnerability, so we check the presence of the buff when hitting Sabir new BuffDamageModifier(FrostSpirit, "Frost Spirit", "5%", DamageSource.NoPets, 5.0, DamageType.Strike, DamageType.All, Source.Common, ByPresence, "https://wiki.guildwars2.com/images/thumb/c/c6/Frost_Spirit.png/33px-Frost_Spirit.png", DamageModifierMode.All).WithBuilds(88541 ,GW2Builds.June2022Balance), new DamageLogDamageModifier("Soulcleave's Summit", "per hit (no ICD)", DamageSource.NoPets, 0, DamageType.Power, DamageType.All, Source.Common,"https://wiki.guildwars2.com/images/7/78/Soulcleave%27s_Summit.png", ((x, log) => x.SkillId == SoulcleavesSummit), BySkill, DamageModifierMode.All).WithBuilds(GW2Builds.StartOfLife ,GW2Builds.May2021Balance), new DamageLogDamageModifier("Soulcleave's Summit", "per hit (1s ICD per target)", DamageSource.NoPets, 0, DamageType.Power, DamageType.All, Source.Common,"https://wiki.guildwars2.com/images/7/78/Soulcleave%27s_Summit.png", ((x, log) => x.SkillId == SoulcleavesSummit), BySkill, DamageModifierMode.All).WithBuilds(GW2Builds.May2021Balance), diff --git a/GW2EIEvtcParser/EIData/ProfHelpers/Thief/SpecterHelper.cs b/GW2EIEvtcParser/EIData/ProfHelpers/Thief/SpecterHelper.cs index be9a3b4d56..544b86e1a3 100644 --- a/GW2EIEvtcParser/EIData/ProfHelpers/Thief/SpecterHelper.cs +++ b/GW2EIEvtcParser/EIData/ProfHelpers/Thief/SpecterHelper.cs @@ -39,8 +39,8 @@ public static bool IsShroudTransform(long id) new Buff("Shadow Shroud", ShadowShroud, Source.Specter, BuffClassification.Other, BuffImages.EnterShadowShroud), new Buff("Endless Night", EndlessNight, Source.Specter, BuffClassification.Other, BuffImages.EndlessNight), new Buff("Shrouded Ally", ShroudedAlly, Source.Specter, BuffClassification.Other, BuffImages.Siphon), - new Buff("Rot Wallow Venom", RotWallowVenom, Source.Specter, ArcDPSEnums.BuffStackType.StackingConditionalLoss, 100, BuffClassification.Offensive, BuffImages.DarkSentry), - new Buff("Consume Shadows", ConsumeShadows, Source.Specter, ArcDPSEnums.BuffStackType.StackingConditionalLoss, 5, BuffClassification.Other, BuffImages.ConsumeShadows), + new Buff("Rot Wallow Venom", RotWallowVenom, Source.Specter, BuffStackType.StackingConditionalLoss, 100, BuffClassification.Offensive, BuffImages.DarkSentry), + new Buff("Consume Shadows", ConsumeShadows, Source.Specter, BuffStackType.StackingConditionalLoss, 5, BuffClassification.Other, BuffImages.ConsumeShadows), }; private static HashSet Minions = new HashSet() diff --git a/GW2EIEvtcParser/EncounterLogic/EncounterLogicUtils.cs b/GW2EIEvtcParser/EncounterLogic/EncounterLogicUtils.cs index 208077ce48..b6f0085f77 100644 --- a/GW2EIEvtcParser/EncounterLogic/EncounterLogicUtils.cs +++ b/GW2EIEvtcParser/EncounterLogic/EncounterLogicUtils.cs @@ -26,162 +26,6 @@ internal static void RegroupTargetsByID(int id, AgentData agentData, IReadOnlyLi } } - internal delegate bool ExtraRedirection(CombatItem evt, AgentItem from, AgentItem to); - /// - /// Method used to redirect a subset of events from redirectFrom to to - /// - /// - /// - /// - /// AgentItem the events need to be redirected from - /// AgentItems from where last known states (hp, position, etc) will be copied from - /// AgentItem the events need to be redirected to - /// function to handle special conditions, given event either src or dst matches from - internal static void RedirectEventsAndCopyPreviousStates(List combatData, IReadOnlyDictionary extensions, AgentData agentData, AgentItem redirectFrom, List stateCopyFroms, AgentItem to, ExtraRedirection extraRedirections = null) - { - // Redirect combat events - foreach (CombatItem evt in combatData) - { - if (to.InAwareTimes(evt.Time)) - { - var srcMatchesAgent = evt.SrcMatchesAgent(redirectFrom, extensions); - var dstMatchesAgent = evt.DstMatchesAgent(redirectFrom, extensions); - if (extraRedirections != null && !extraRedirections(evt, redirectFrom, to)) - { - continue; - } - if (srcMatchesAgent) - { - evt.OverrideSrcAgent(to.Agent); - } - if (dstMatchesAgent) - { - evt.OverrideDstAgent(to.Agent); - } - } - } - var toCopy = new List(); - Func canCopy = (evt) => stateCopyFroms.Any(x => evt.SrcMatchesAgent(x)); - CombatItem lastBreakbarStateToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.BreakbarState && canCopy(x) && x.Time <= to.FirstAware); - if (lastBreakbarStateToCopy != null) - { - toCopy.Add(lastBreakbarStateToCopy); - } - CombatItem lastPositionToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.Position && canCopy(x) && x.Time <= to.FirstAware); - if (lastPositionToCopy != null) - { - toCopy.Add(lastPositionToCopy); - } - CombatItem lastRotationToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.Rotation && canCopy(x) && x.Time <= to.FirstAware); - if (lastRotationToCopy != null) - { - toCopy.Add(lastRotationToCopy); - } - CombatItem lastVelocityToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.Velocity && canCopy(x) && x.Time <= to.FirstAware); - if (lastVelocityToCopy != null) - { - toCopy.Add(lastVelocityToCopy); - } - CombatItem lastMaxHealthUpdateToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.MaxHealthUpdate && canCopy(x) && x.Time <= to.FirstAware); - if (lastMaxHealthUpdateToCopy != null) - { - toCopy.Add(lastMaxHealthUpdateToCopy); - } - CombatItem lastHealthUpdateToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.HealthUpdate && canCopy(x) && x.Time <= to.FirstAware); - if (lastHealthUpdateToCopy != null) - { - toCopy.Add(lastHealthUpdateToCopy); - } - CombatItem lastBreakbarUpdateToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.BreakbarPercent && canCopy(x) && x.Time <= to.FirstAware); - if (lastBreakbarUpdateToCopy != null) - { - toCopy.Add(lastBreakbarUpdateToCopy); - } - CombatItem lastBarrierUpdateToCopy = combatData.LastOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.BarrierUpdate && canCopy(x) && x.Time <= to.FirstAware); - if (lastBarrierUpdateToCopy != null) - { - toCopy.Add(lastBarrierUpdateToCopy); - } - CombatItem lastCombatStatusUpdateToCopy = combatData.LastOrDefault(x => (x.IsStateChange == ArcDPSEnums.StateChange.EnterCombat || x.IsStateChange == ArcDPSEnums.StateChange.ExitCombat) && canCopy(x) && x.Time <= to.FirstAware); - if (lastCombatStatusUpdateToCopy != null) - { - toCopy.Add(lastCombatStatusUpdateToCopy); - } - CombatItem lastStatusEventToCopy = combatData.LastOrDefault(x => (x.IsStateChange == ArcDPSEnums.StateChange.Spawn || x.IsStateChange == ArcDPSEnums.StateChange.Despawn || x.IsStateChange == ArcDPSEnums.StateChange.ChangeDead || x.IsStateChange == ArcDPSEnums.StateChange.ChangeDown || x.IsStateChange == ArcDPSEnums.StateChange.ChangeUp) && canCopy(x) && x.Time <= to.FirstAware); - if (lastStatusEventToCopy != null) - { - toCopy.Add(lastStatusEventToCopy); - } - foreach (CombatItem c in toCopy) - { - var cExtra = new CombatItem(c); - cExtra.OverrideTime(to.FirstAware); - cExtra.OverrideSrcAgent(to.Agent); - combatData.Add(cExtra); - } - // Copy attack targets - var attackTargets = combatData.Where(x => x.IsStateChange == ArcDPSEnums.StateChange.AttackTarget && x.DstMatchesAgent(redirectFrom)).ToList(); - foreach (CombatItem c in attackTargets) - { - var cExtra = new CombatItem(c); - cExtra.OverrideTime(to.FirstAware); - cExtra.OverrideDstAgent(to.Agent); - combatData.Add(cExtra); - } - // Redirect NPC masters - foreach (AgentItem ag in agentData.GetAgentByType(AgentItem.AgentType.NPC)) - { - if (ag.Master == redirectFrom && to.InAwareTimes(ag.FirstAware)) - { - ag.SetMaster(to); - } - } - // Redirect Gadget masters - foreach (AgentItem ag in agentData.GetAgentByType(AgentItem.AgentType.Gadget)) - { - if (ag.Master == redirectFrom && to.InAwareTimes(ag.FirstAware)) - { - ag.SetMaster(to); - } - } - } - - /// - /// Method used to redirect all events from redirectFrom to to - /// - /// - /// - /// - /// AgentItem the events need to be redirected from - /// AgentItem the events need to be redirected to - /// function to handle special conditions, given event either src or dst matches from - internal static void RedirectAllEvents(IReadOnlyList combatData, IReadOnlyDictionary extensions, AgentData agentData, AgentItem redirectFrom, AgentItem to, ExtraRedirection extraRedirections = null) - { - // Redirect combat events - foreach (CombatItem evt in combatData) - { - var srcMatchesAgent = evt.SrcMatchesAgent(redirectFrom, extensions); - var dstMatchesAgent = evt.DstMatchesAgent(redirectFrom, extensions); - if (!dstMatchesAgent && !srcMatchesAgent) - { - continue; - } - if (extraRedirections != null && !extraRedirections(evt, redirectFrom, to)) - { - continue; - } - if (srcMatchesAgent) - { - evt.OverrideSrcAgent(to.Agent); - } - if (dstMatchesAgent) - { - evt.OverrideDstAgent(to.Agent); - } - } - agentData.SwapMasters(redirectFrom, to); - } - internal static void NegateDamageAgainstBarrier(CombatData combatData, IReadOnlyList agentItems) { var dmgEvts = new List(); @@ -260,7 +104,7 @@ internal static List GetFilteredList(CombatData combatData, l if (padEnd && filtered.Any() && filtered.Last() is BuffApplyEvent) { AbstractBuffEvent last = filtered.Last(); - filtered.Add(new BuffRemoveAllEvent(ParserHelper._unknownAgent, last.To, target.LastAware, int.MaxValue, last.BuffSkill, BuffRemoveAllEvent.FullRemoval, int.MaxValue)); + filtered.Add(new BuffRemoveAllEvent(_unknownAgent, last.To, target.LastAware, int.MaxValue, last.BuffSkill, BuffRemoveAllEvent.FullRemoval, int.MaxValue)); } return filtered; } diff --git a/GW2EIEvtcParser/EncounterLogic/FightLogic.cs b/GW2EIEvtcParser/EncounterLogic/FightLogic.cs index cb0b77793e..6edc15afe9 100644 --- a/GW2EIEvtcParser/EncounterLogic/FightLogic.cs +++ b/GW2EIEvtcParser/EncounterLogic/FightLogic.cs @@ -48,7 +48,7 @@ protected enum FallBackMethod { protected List EnvironmentDecorations { get; private set; } = null; - protected ArcDPSEnums.ChestID ChestID { get; set; } = ArcDPSEnums.ChestID.None; + protected ArcDPSEnums.ChestID ChestID { get; set; } = ChestID.None; protected List<(Buff buff, int stack)> InstanceBuffs { get; private set; } = null; @@ -186,7 +186,7 @@ internal virtual void ComputeFightTargets(AgentData agentData, List if (trashIDs.Any(x => targetIDs.Contains((int)x))) { throw new InvalidDataException("ID collision between trash and targets"); } - var aList = agentData.GetAgentByType(AgentItem.AgentType.NPC).Where(x => trashIDs.Contains(ArcDPSEnums.GetTrashID(x.ID))).ToList(); + var aList = agentData.GetAgentByType(AgentItem.AgentType.NPC).Where(x => trashIDs.Contains(GetTrashID(x.ID))).ToList(); //aList.AddRange(agentData.GetAgentByType(AgentItem.AgentType.Gadget).Where(x => ids2.Contains(ParseEnum.GetTrashIDS(x.ID)))); foreach (AgentItem a in aList) { @@ -246,8 +246,8 @@ internal List GetBreakbarPhases(ParsedEvtcLog log, bool requirePhases { int i = 0; IReadOnlyList breakbarStateEvents = log.CombatData.GetBreakbarStateEvents(target.AgentItem); - var breakbarActiveEvents = breakbarStateEvents.Where(x => x.State == ArcDPSEnums.BreakbarState.Active).ToList(); - var breakbarNotActiveEvents = breakbarStateEvents.Where(x => x.State != ArcDPSEnums.BreakbarState.Active).ToList(); + var breakbarActiveEvents = breakbarStateEvents.Where(x => x.State == BreakbarState.Active).ToList(); + var breakbarNotActiveEvents = breakbarStateEvents.Where(x => x.State != BreakbarState.Active).ToList(); foreach (BreakbarStateEvent active in breakbarActiveEvents) { long start = Math.Max(active.Time - 2000, log.FightData.FightStart); @@ -402,7 +402,7 @@ internal long GetEnterCombatTime(FightData fightData, AgentData agentData, List< internal virtual long GetFightOffset(int evtcVersion, FightData fightData, AgentData agentData, List combatData) { long startToUse = GetGenericFightOffset(fightData); - CombatItem logStartNPCUpdate = combatData.FirstOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.LogStartNPCUpdate); + CombatItem logStartNPCUpdate = combatData.FirstOrDefault(x => x.IsStateChange == StateChange.LogStartNPCUpdate); if (logStartNPCUpdate != null) { startToUse = GetEnterCombatTime(fightData, agentData, combatData, logStartNPCUpdate.Time); diff --git a/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Arkk.cs b/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Arkk.cs index 4563c0544d..fb93390eb4 100644 --- a/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Arkk.cs +++ b/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Arkk.cs @@ -33,8 +33,8 @@ public Arkk(int triggerID) : base(triggerID) new PlayerDstBuffApplyMechanic(CosmicMeteor, "Cosmic Meteor", new MechanicPlotlySetting(Symbols.CircleOpen,Colors.Green), "Green","Temporal Realignment (Green) application", "Green",0), new PlayerDstBuffApplyMechanic(Fear, "Fear", new MechanicPlotlySetting(Symbols.SquareOpen,Colors.Red), "Eye","Hit by the Overhead Eye Fear", "Eye (Fear)",0).UsingChecker((ba, log) => ba.AppliedDuration == 3000), // //not triggered under stab, still get blinded/damaged, seperate tracking desired? new EnemyCastStartMechanic(ArkkBreakbarCast, "Breakbar Start", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.DarkTeal), "Breakbar","Start Breakbar", "CC",0), - new EnemyDstBuffApplyMechanic(Exposed31589, "Breakbar End", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.Red), "CC.Fail","Breakbar (Failed CC)", "CC Fail",0).UsingChecker((bae,log) => bae.To.IsSpecies(ArcDPSEnums.TargetID.Arkk) && !log.CombatData.GetAnimatedCastData(ArkkBreakbarCast).Any(x => bae.To == x.Caster && x.Time < bae.Time && bae.Time < x.ExpectedEndTime + ParserHelper.ServerDelayConstant)), - new EnemyDstBuffApplyMechanic(Exposed31589, "Breakbar End", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.DarkGreen), "CCed","Breakbar broken", "CCed",0).UsingChecker((bae,log) => bae.To.IsSpecies(ArcDPSEnums.TargetID.Arkk) && log.CombatData.GetAnimatedCastData(ArkkBreakbarCast).Any(x => bae.To == x.Caster && x.Time < bae.Time && bae.Time < x.ExpectedEndTime + ParserHelper.ServerDelayConstant)), + new EnemyDstBuffApplyMechanic(Exposed31589, "Breakbar End", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.Red), "CC.Fail","Breakbar (Failed CC)", "CC Fail",0).UsingChecker((bae,log) => bae.To.IsSpecies(ArcDPSEnums.TargetID.Arkk) && !log.CombatData.GetAnimatedCastData(ArkkBreakbarCast).Any(x => bae.To == x.Caster && x.Time < bae.Time && bae.Time < x.ExpectedEndTime + ServerDelayConstant)), + new EnemyDstBuffApplyMechanic(Exposed31589, "Breakbar End", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.DarkGreen), "CCed","Breakbar broken", "CCed",0).UsingChecker((bae,log) => bae.To.IsSpecies(ArcDPSEnums.TargetID.Arkk) && log.CombatData.GetAnimatedCastData(ArkkBreakbarCast).Any(x => bae.To == x.Caster && x.Time < bae.Time && bae.Time < x.ExpectedEndTime + ServerDelayConstant)), new PlayerDstHitMechanic(OverheadSmashArchdiviner, "Overhead Smash", new MechanicPlotlySetting(Symbols.TriangleLeftOpen,Colors.LightRed), "A.Smsh","Overhead Smash (Arcdiviner)", "Smash (Add)",0), new PlayerDstHitMechanic(RollingChaos, "Rolling Chaos", new MechanicPlotlySetting(Symbols.CircleOpen,Colors.LightRed), "KD Marble","Rolling Chaos (Arrow marble)", "KD Marble",0), new PlayerDstHitMechanic(SolarStomp, "Solar Stomp", new MechanicPlotlySetting(Symbols.TriangleUp,Colors.Magenta), "Stomp","Solar Stomp (Evading Stomp)", "Evading Jump",0), diff --git a/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Skorvald.cs b/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Skorvald.cs index 2680ae45cc..4cb09fa266 100644 --- a/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Skorvald.cs +++ b/GW2EIEvtcParser/EncounterLogic/Fractals/ShatteredObservatory/Skorvald.cs @@ -55,7 +55,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase { // generic method for fractals List phases = GetInitialPhase(log); - AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Skorvald)); + AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Skorvald)); if (skorvald == null) { throw new MissingKeyActorsException("Skorvald not found"); @@ -74,14 +74,14 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase phase.Name = "Split " + (i) / 2; var ids = new List { - (int)ArcDPSEnums.TrashID.FluxAnomaly1, - (int)ArcDPSEnums.TrashID.FluxAnomaly2, - (int)ArcDPSEnums.TrashID.FluxAnomaly3, - (int)ArcDPSEnums.TrashID.FluxAnomaly4, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM1, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM2, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM3, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM4, + (int)TrashID.FluxAnomaly1, + (int)TrashID.FluxAnomaly2, + (int)TrashID.FluxAnomaly3, + (int)TrashID.FluxAnomaly4, + (int)TrashID.FluxAnomalyCM1, + (int)TrashID.FluxAnomalyCM2, + (int)TrashID.FluxAnomalyCM3, + (int)TrashID.FluxAnomalyCM4, }; AddTargetsToPhaseAndFit(phase, ids, log); } @@ -97,7 +97,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List combatData, IReadOnlyDictionary extensions) { base.EIEvtcParse(gw2Build, fightData, agentData, combatData, extensions); - AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Skorvald)); + AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Skorvald)); if (skorvald == null) { throw new MissingKeyActorsException("Skorvald not found"); @@ -108,20 +108,20 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat foreach (NPC target in _targets) { switch (target.ID) { - case (int) ArcDPSEnums.TrashID.FluxAnomaly1: - case (int) ArcDPSEnums.TrashID.FluxAnomalyCM1: + case (int)TrashID.FluxAnomaly1: + case (int)TrashID.FluxAnomalyCM1: target.OverrideName(target.Character + " " + (1 + 4 * nameCount[0]++)); break; - case (int) ArcDPSEnums.TrashID.FluxAnomaly2: - case (int) ArcDPSEnums.TrashID.FluxAnomalyCM2: + case (int)TrashID.FluxAnomaly2: + case (int)TrashID.FluxAnomalyCM2: target.OverrideName(target.Character + " " + (2 + 4 * nameCount[1]++)); break; - case (int) ArcDPSEnums.TrashID.FluxAnomaly3: - case (int) ArcDPSEnums.TrashID.FluxAnomalyCM3: + case (int)TrashID.FluxAnomaly3: + case (int)TrashID.FluxAnomalyCM3: target.OverrideName(target.Character + " " + (3 + 4 * nameCount[2]++)); break; - case (int) ArcDPSEnums.TrashID.FluxAnomaly4: - case (int) ArcDPSEnums.TrashID.FluxAnomalyCM4: + case (int)TrashID.FluxAnomaly4: + case (int)TrashID.FluxAnomalyCM4: target.OverrideName(target.Character + " " + (4 + 4 * nameCount[3]++)); break; } @@ -130,18 +130,18 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat internal override long GetFightOffset(int evtcVersion, FightData fightData, AgentData agentData, List combatData) { - CombatItem logStartNPCUpdate = combatData.FirstOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.LogStartNPCUpdate); + CombatItem logStartNPCUpdate = combatData.FirstOrDefault(x => x.IsStateChange == StateChange.LogStartNPCUpdate); if (logStartNPCUpdate != null) { - AgentItem skorvald = agentData.GetNPCsByID(ArcDPSEnums.TargetID.Skorvald).FirstOrDefault(); + AgentItem skorvald = agentData.GetNPCsByID(TargetID.Skorvald).FirstOrDefault(); if (skorvald == null) { throw new MissingKeyActorsException("Skorvald not found"); } long upperLimit = GetPostLogStartNPCUpdateDamageEventTime(fightData, agentData, combatData, logStartNPCUpdate.Time, skorvald); // Skorvald may spawns with 0% hp - CombatItem firstNonZeroHPUpdate = combatData.FirstOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.HealthUpdate && x.SrcMatchesAgent(skorvald) && x.DstAgent > 0); - CombatItem enterCombat = combatData.FirstOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.EnterCombat && x.SrcMatchesAgent(skorvald) && x.Time <= upperLimit + ParserHelper.ServerDelayConstant); + CombatItem firstNonZeroHPUpdate = combatData.FirstOrDefault(x => x.IsStateChange == StateChange.HealthUpdate && x.SrcMatchesAgent(skorvald) && x.DstAgent > 0); + CombatItem enterCombat = combatData.FirstOrDefault(x => x.IsStateChange == StateChange.EnterCombat && x.SrcMatchesAgent(skorvald) && x.Time <= upperLimit + ServerDelayConstant); return firstNonZeroHPUpdate != null ? Math.Min(firstNonZeroHPUpdate.Time, enterCombat != null ? enterCombat.Time : long.MaxValue) : GetGenericFightOffset(fightData); } return GetGenericFightOffset(fightData); @@ -149,7 +149,7 @@ internal override long GetFightOffset(int evtcVersion, FightData fightData, Agen internal override FightData.EncounterMode GetEncounterMode(CombatData combatData, AgentData agentData, FightData fightData) { - AbstractSingleActor target = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Skorvald)); + AbstractSingleActor target = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Skorvald)); if (target == null) { throw new MissingKeyActorsException("Skorvald not found"); @@ -193,15 +193,15 @@ protected override List GetTargetsIDs() { return new List() { - (int)ArcDPSEnums.TargetID.Skorvald, - (int)ArcDPSEnums.TrashID.FluxAnomaly1, - (int)ArcDPSEnums.TrashID.FluxAnomaly2, - (int)ArcDPSEnums.TrashID.FluxAnomaly3, - (int)ArcDPSEnums.TrashID.FluxAnomaly4, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM1, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM2, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM3, - (int)ArcDPSEnums.TrashID.FluxAnomalyCM4, + (int)TargetID.Skorvald, + (int)TrashID.FluxAnomaly1, + (int)TrashID.FluxAnomaly2, + (int)TrashID.FluxAnomaly3, + (int)TrashID.FluxAnomaly4, + (int)TrashID.FluxAnomalyCM1, + (int)TrashID.FluxAnomalyCM2, + (int)TrashID.FluxAnomalyCM3, + (int)TrashID.FluxAnomalyCM4, }; } @@ -213,7 +213,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, { return; } - AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Skorvald)); + AbstractSingleActor skorvald = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Skorvald)); if (skorvald == null) { throw new MissingKeyActorsException("Skorvald not found"); @@ -233,7 +233,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, { var trashIDs = new List { - ArcDPSEnums.TrashID.SolarBloom + TrashID.SolarBloom }; trashIDs.AddRange(base.GetTrashMobsIDs()); return trashIDs; @@ -245,7 +245,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo switch (target.ID) { - case (int)ArcDPSEnums.TargetID.Skorvald: + case (int)TargetID.Skorvald: // Horizon Strike var horizonStrike = casts.Where(x => x.SkillId == HorizonStrikeSkorvald2 || x.SkillId == HorizonStrikeSkorvald4).ToList(); foreach (AbstractCastEvent c in horizonStrike) @@ -432,10 +432,10 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo AddKickIndicatorDecoration(replay, target, start, attackEnd, rotation + angle, translation, cascadeCount); } break; - case (int)ArcDPSEnums.TrashID.FluxAnomalyCM1: - case (int)ArcDPSEnums.TrashID.FluxAnomalyCM2: - case (int)ArcDPSEnums.TrashID.FluxAnomalyCM3: - case (int)ArcDPSEnums.TrashID.FluxAnomalyCM4: + case (int)TrashID.FluxAnomalyCM1: + case (int)TrashID.FluxAnomalyCM2: + case (int)TrashID.FluxAnomalyCM3: + case (int)TrashID.FluxAnomalyCM4: // Solar Stomp var solarStomp = casts.Where(x => x.SkillId == SolarStomp).ToList(); foreach (AbstractCastEvent c in solarStomp) @@ -540,7 +540,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } } break; - case (int)ArcDPSEnums.TrashID.SolarBloom: + case (int)TrashID.SolarBloom: break; default: break; diff --git a/GW2EIEvtcParser/EncounterLogic/Fractals/SunquaPeak/AiKeeperOfThePeak.cs b/GW2EIEvtcParser/EncounterLogic/Fractals/SunquaPeak/AiKeeperOfThePeak.cs index 9a3b53a769..3f4b2e91b8 100644 --- a/GW2EIEvtcParser/EncounterLogic/Fractals/SunquaPeak/AiKeeperOfThePeak.cs +++ b/GW2EIEvtcParser/EncounterLogic/Fractals/SunquaPeak/AiKeeperOfThePeak.cs @@ -32,7 +32,7 @@ public AiKeeperOfThePeak(int triggerID) : base(triggerID) new PlayerDstHitMechanic(new long[] { FulgorSphere1, FulgorSphere2 }, "Fulgor Sphere", new MechanicPlotlySetting(Symbols.Circle,Colors.Magenta), "Flg.Sph.","Fulgor Sphere", "Fulgor Sphere",0), new PlayerDstHitMechanic(VolatileWind, "Volatile Wind", new MechanicPlotlySetting(Symbols.TriangleLeft,Colors.Magenta), "Vlt.Wnd.","Volatile Wind", "Volatile Wind",0), new PlayerDstHitMechanic(WindBurst, "Wind Burst", new MechanicPlotlySetting(Symbols.TriangleDownOpen,Colors.Magenta), "Wnd.Brst.","Wind Burst", "Wind Burst",0), - new PlayerDstHitMechanic(WindBurst, "Wind Burst Launch", new MechanicPlotlySetting(Symbols.TriangleDown,Colors.Magenta), "L.Wnd.Burst","Launched up by Wind Burst", "Wind Burst Launch",0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(WindBurst, "Wind Burst Launch", new MechanicPlotlySetting(Symbols.TriangleDown,Colors.Magenta), "L.Wnd.Burst","Launched up by Wind Burst", "Wind Burst Launch",0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ServerDelayConstant)), new PlayerDstHitMechanic(CallOfStorms , "Call of Storms", new MechanicPlotlySetting(Symbols.TriangleUp,Colors.Magenta), "Call.Strs","Call of Storms", "Call of Storms",0), new EnemyDstBuffApplyMechanic(WhirlwindShield, "Whirlwind Shield",new MechanicPlotlySetting(Symbols.AsteriskOpen,Colors.Magenta), "W.Shield" ,"Whirlwind Shield","Whirlwind Shield",0), // Fire @@ -50,7 +50,7 @@ public AiKeeperOfThePeak(int triggerID) : base(triggerID) new PlayerDstHitMechanic(AquaticBurst, "Aquatic Burst", new MechanicPlotlySetting(Symbols.TriangleDown,Colors.LightBlue), "Aq.Brst.","Aquatic Burst", "Aquatic Burst",0), new EnemyDstBuffApplyMechanic(TidalBarrier, "Tidal Barrier", new MechanicPlotlySetting(Symbols.AsteriskOpen,Colors.LightBlue), "Tdl.Bar.", "Tidal Barrier", "Tidal Barrier", 0), new PlayerDstBuffApplyMechanic(TidalBargain, "Tidal Bargain", new MechanicPlotlySetting(Symbols.StarOpen,Colors.LightBlue), "Tdl.Brgn.","Downed by Tidal Bargain", "Tidal Bargain",0), - new PlayerDstBuffRemoveMechanic(TidalBargain, "Tidal Bargain Downed", new MechanicPlotlySetting(Symbols.Star,Colors.LightBlue), "Tdl.Brgn.Dwn.","Downed by Tidal Bargain", "Tidal Bargain Downed",0).UsingChecker((evt, log) => evt.RemovedStacks == 10 && Math.Abs(evt.RemovedDuration - 90000) < 10 * ParserHelper.ServerDelayConstant && log.CombatData.GetBuffData(Downed).Any(x => Math.Abs(x.Time - evt.Time) < 50 && x is BuffApplyEvent bae && bae.To == evt.To)), + new PlayerDstBuffRemoveMechanic(TidalBargain, "Tidal Bargain Downed", new MechanicPlotlySetting(Symbols.Star,Colors.LightBlue), "Tdl.Brgn.Dwn.","Downed by Tidal Bargain", "Tidal Bargain Downed",0).UsingChecker((evt, log) => evt.RemovedStacks == 10 && Math.Abs(evt.RemovedDuration - 90000) < 10 * ServerDelayConstant && log.CombatData.GetBuffData(Downed).Any(x => Math.Abs(x.Time - evt.Time) < 50 && x is BuffApplyEvent bae && bae.To == evt.To)), // Dark new PlayerDstHitMechanic(new long[] { EmpathicManipulationGuilt, EmpathicManipulation2, EmpathicManipulationSorrow, EmpathicManipulationFear, EmpathicManipulation5, EmpathicManipulation6, EmpathicManipulation7, EmpathicManipulation8, EmpathicManipulation9 }, "Empathic Manipulation", new MechanicPlotlySetting(Symbols.Square,Colors.LightPurple), "Emp.Mnp.","Empathic Manipulation", "Empathic Manipulation",0), @@ -58,7 +58,7 @@ public AiKeeperOfThePeak(int triggerID) : base(triggerID) new PlayerDstHitMechanic(NegativeBurst, "Negative Burst", new MechanicPlotlySetting(Symbols.DiamondWide,Colors.LightPurple), "N.Brst.","Negative Burst", "Negative Burst",500), new PlayerDstHitMechanic(Terrorstorm, "Terrorstorm", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.LightPurple), "TrrStrm","Terrorstorm", "Terrorstorm",0), new PlayerDstBuffApplyMechanic(CrushingGuilt, "Crushing Guilt", new MechanicPlotlySetting(Symbols.StarOpen,Colors.LightPurple), "Crsh.Glt.","Crushing Guilt", "Crushing Guilt",0), - new PlayerDstBuffRemoveMechanic(CrushingGuilt, "Crushing Guilt Down", new MechanicPlotlySetting(Symbols.Star,Colors.LightPurple), "Crsh.Glt.Dwn.","Downed by Crushing Guilt", "Crushing Guilt Down",0).UsingChecker((evt, log) => evt.RemovedStacks == 10 && Math.Abs(evt.RemovedDuration - 90000) < 10 * ParserHelper.ServerDelayConstant && log.CombatData.GetBuffData(Downed).Any(x => Math.Abs(x.Time - evt.Time) < 50 && x is BuffApplyEvent bae && bae.To == evt.To)), + new PlayerDstBuffRemoveMechanic(CrushingGuilt, "Crushing Guilt Down", new MechanicPlotlySetting(Symbols.Star,Colors.LightPurple), "Crsh.Glt.Dwn.","Downed by Crushing Guilt", "Crushing Guilt Down",0).UsingChecker((evt, log) => evt.RemovedStacks == 10 && Math.Abs(evt.RemovedDuration - 90000) < 10 * ServerDelayConstant && log.CombatData.GetBuffData(Downed).Any(x => Math.Abs(x.Time - evt.Time) < 50 && x is BuffApplyEvent bae && bae.To == evt.To)), new EnemyCastStartMechanic(EmpathicManipulationFear, "Empathic Manipulation (Fear)", new MechanicPlotlySetting(Symbols.TriangleUp,Colors.LightPurple), "Fear Mnp.", "Empathic Manipulation (Fear)", "Empathic Manipulation (Fear)", 0), new EnemyCastEndMechanic(EmpathicManipulationFear, "Empathic Manipulation (Fear) Interrupt", new MechanicPlotlySetting(Symbols.TriangleUpOpen,Colors.LightPurple), "IntFear.Mnp.", "Empathic Manipulation (Fear) Interrupt", "Empathic Manipulation (Fear) Interrupt", 0).UsingChecker((evt, log) => evt is AnimatedCastEvent ace && ace.Status == AbstractCastEvent.AnimationStatus.Interrupted), new EnemyCastStartMechanic(EmpathicManipulationSorrow, "Empathic Manipulation (Sorrow)", new MechanicPlotlySetting(Symbols.TriangleLeft,Colors.LightPurple), "Sor.Mnp.", "Empathic Manipulation (Sorrow)", "Empathic Manipulation (Sorrow)", 0), diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W1/Gorseval.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W1/Gorseval.cs index e108ab6336..bb6c72a85b 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W1/Gorseval.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W1/Gorseval.cs @@ -18,11 +18,11 @@ public Gorseval(int triggerID) : base(triggerID) { MechanicList.AddRange(new List { - new PlayerDstHitMechanic(SpectralImpact, "Spectral Impact", new MechanicPlotlySetting(Symbols.Hexagram,Colors.Red), "Slam","Spectral Impact (KB Slam)", "Slam",4000).UsingChecker((de, log) => !de.To.HasBuff(log, SkillIDs.Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(SpectralImpact, "Spectral Impact", new MechanicPlotlySetting(Symbols.Hexagram,Colors.Red), "Slam","Spectral Impact (KB Slam)", "Slam",4000).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), new PlayerDstBuffApplyMechanic(GhastlyPrison, "Ghastly Prison", new MechanicPlotlySetting(Symbols.Circle,Colors.LightOrange), "Egg","Ghastly Prison (Egged)", "Egged",500), new PlayerDstBuffApplyMechanic(SpectralDarkness, "Spectral Darkness", new MechanicPlotlySetting(Symbols.Circle,Colors.Blue), "Orb Debuff","Spectral Darkness (Stood in Orb AoE)", "Orb Debuff",100), new EnemyDstBuffApplyMechanic(SpiritedFusion, "Spirited Fusion", new MechanicPlotlySetting(Symbols.Square,Colors.LightOrange), "Spirit Buff","Spirited Fusion (Consumed a Spirit)", "Ate Spirit",0), - new PlayerDstHitMechanic(SpiritKick, "Kick", new MechanicPlotlySetting(Symbols.TriangleRight,Colors.Magenta), "Kick","Kicked by small add", "Spirit Kick",0).UsingChecker((de, log) => !de.To.HasBuff(log, SkillIDs.Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(SpiritKick, "Kick", new MechanicPlotlySetting(Symbols.TriangleRight,Colors.Magenta), "Kick","Kicked by small add", "Spirit Kick",0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), new PlayerDstBuffApplyMechanic(Vulnerability, "Ghastly Rampage Black Goo Hit", new MechanicPlotlySetting(Symbols.Circle,Colors.Black), "Black","Hit by Black Goo","Black Goo",3000).UsingChecker( (ba,log) => ba.AppliedDuration == 10000), new EnemyCastStartMechanic(GhastlyRampage, "Ghastly Rampage", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.DarkTeal), "CC","Ghastly Rampage (Breakbar)", "Breakbar",0), new EnemyCastEndMechanic(GhastlyRampage, "Ghastly Rampage", new MechanicPlotlySetting(Symbols.DiamondTall,Colors.Red), "CC End","Ghastly Rampage (Full duration)", "CC ran out",0).UsingChecker( (ce,log) => ce.ActualDuration > 21985), diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W3/Escort.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W3/Escort.cs index 7a8caa1a2e..44a017c36d 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W3/Escort.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W3/Escort.cs @@ -148,7 +148,7 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat // to keep the pre event as we need targets if (_hasPreEvent && !agentData.GetNPCsByID(ArcDPSEnums.TrashID.WargBloodhound).Any(x => x.FirstAware < mcLeod.FirstAware)) { - agentData.AddCustomNPCAgent(fightData.FightStart, fightData.FightEnd, "Escort", ParserHelper.Spec.NPC, ArcDPSEnums.TargetID.DummyTarget, true); + agentData.AddCustomNPCAgent(fightData.FightStart, fightData.FightEnd, "Escort", Spec.NPC, ArcDPSEnums.TargetID.DummyTarget, true); needsRefresh = false; } if (needsRefresh) @@ -187,7 +187,7 @@ internal override long GetFightOffset(int evtcVersion, FightData fightData, Agen CombatItem logStartNPCUpdate = combatData.FirstOrDefault(x => x.IsStateChange == ArcDPSEnums.StateChange.LogStartNPCUpdate); if (logStartNPCUpdate != null) { - if (mcLeod.FirstAware - fightData.LogStart > ParserHelper.MinimumInCombatDuration) + if (mcLeod.FirstAware - fightData.LogStart > MinimumInCombatDuration) { _hasPreEvent = true; } diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W3/KeepConstruct.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W3/KeepConstruct.cs index 6d704bd354..ba79ed19ee 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W3/KeepConstruct.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W3/KeepConstruct.cs @@ -110,7 +110,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase start = c.Time; } } - if (fightEnd - start > ParserHelper.PhaseTimeLimit && start >= phases.Last().End) + if (fightEnd - start > PhaseTimeLimit && start >= phases.Last().End) { phases.Add(new PhaseData(start, fightEnd)); start = fightEnd; @@ -323,7 +323,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo replay.Decorations.Add(new PieDecoration(true, 0, 1600, facing, 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long for (int i = 1; i < ticks; i++) { - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(facing.Y, facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(facing.Y, facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer } } foreach (AbstractCastEvent c in blades2) @@ -337,11 +337,11 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } replay.Decorations.Add(new CircleDecoration(true, 0, 200, (start, start + (ticks + 1) * 1000), "rgba(255,0,0,0.4)", new AgentConnector(target))); replay.Decorations.Add(new PieDecoration(true, 0, 1600, facing, 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X))), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X))), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long for (int i = 1; i < ticks; i++) { - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(facing.Y, facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(facing.Y, facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer } } foreach (AbstractCastEvent c in blades3) @@ -354,14 +354,14 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo continue; } replay.Decorations.Add(new CircleDecoration(true, 0, 200, (start, start + (ticks + 1) * 1000), "rgba(255,0,0,0.4)", new AgentConnector(target))); - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X))), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + 120), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) - 120), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X))), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + 120), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) - 120), 360 * 3 / 32, (start, start + 2 * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts twice as long for (int i = 1; i < ticks; i++) { - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8 + 120), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer - replay.Decorations.Add(new PieDecoration(true, 0, 1600, (ParserHelper.RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8 - 120), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8 + 120), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer + replay.Decorations.Add(new PieDecoration(true, 0, 1600, (RadianToDegreeF(Math.Atan2(-facing.Y, -facing.X)) + i * 360 / 8 - 120), 360 * 3 / 32, (start + 1000 + i * duration, start + 1000 + (i + 1) * duration), "rgba(255,0,255,0.5)", new AgentConnector(target))); // First blade lasts longer } } break; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W3/TwistedCastle.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W3/TwistedCastle.cs index d123308799..7dcab0a8a1 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W3/TwistedCastle.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W3/TwistedCastle.cs @@ -74,7 +74,7 @@ internal override long GetFightOffset(int evtcVersion, FightData fightData, Agen internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List combatData, IReadOnlyDictionary extensions) { - agentData.AddCustomNPCAgent(fightData.FightStart, fightData.FightEnd, "Twisted Castle", ParserHelper.Spec.NPC, ArcDPSEnums.TargetID.DummyTarget, true); + agentData.AddCustomNPCAgent(fightData.FightStart, fightData.FightEnd, "Twisted Castle", Spec.NPC, ArcDPSEnums.TargetID.DummyTarget, true); ComputeFightTargets(agentData, combatData, extensions); } diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W3/Xera.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W3/Xera.cs index 5842514212..391a41874a 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W3/Xera.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W3/Xera.cs @@ -137,10 +137,10 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase private static AbstractBuffEvent GetInvulXeraEvent(ParsedEvtcLog log, AbstractSingleActor xera) { - AbstractBuffEvent determined = log.CombatData.GetBuffData(SkillIDs.Determined762).FirstOrDefault(x => x.To == xera.AgentItem && x is BuffApplyEvent); + AbstractBuffEvent determined = log.CombatData.GetBuffData(Determined762).FirstOrDefault(x => x.To == xera.AgentItem && x is BuffApplyEvent); if (determined == null) { - determined = log.CombatData.GetBuffData(SkillIDs.SpawnProtection).FirstOrDefault(x => x.To == xera.AgentItem && x is BuffApplyEvent); + determined = log.CombatData.GetBuffData(SpawnProtection).FirstOrDefault(x => x.To == xera.AgentItem && x is BuffApplyEvent); } return determined; } diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W4/Deimos.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W4/Deimos.cs index b6db5ac007..bae68e9877 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W4/Deimos.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W4/Deimos.cs @@ -134,7 +134,7 @@ internal override List SpecialBuffEventProcess(CombatData com throw new MissingKeyActorsException("Deimos not found"); } var res = new List(); - IReadOnlyList signets = combatData.GetBuffData(SkillIDs.UnnaturalSignet); + IReadOnlyList signets = combatData.GetBuffData(UnnaturalSignet); foreach (AbstractBuffEvent bfe in signets) { if (bfe is BuffApplyEvent ba) @@ -142,8 +142,8 @@ internal override List SpecialBuffEventProcess(CombatData com AbstractBuffEvent removal = signets.FirstOrDefault(x => x is BuffRemoveAllEvent && x.Time > bfe.Time && x.Time < bfe.Time + 30000); if (removal == null) { - res.Add(new BuffRemoveAllEvent(ParserHelper._unknownAgent, target.AgentItem, ba.Time + ba.AppliedDuration, 0, skillData.Get(UnnaturalSignet), 1, 0)); - res.Add(new BuffRemoveManualEvent(ParserHelper._unknownAgent, target.AgentItem, ba.Time + ba.AppliedDuration, 0, skillData.Get(UnnaturalSignet))); + res.Add(new BuffRemoveAllEvent(_unknownAgent, target.AgentItem, ba.Time + ba.AppliedDuration, 0, skillData.Get(UnnaturalSignet), 1, 0)); + res.Add(new BuffRemoveManualEvent(_unknownAgent, target.AgentItem, ba.Time + ba.AppliedDuration, 0, skillData.Get(UnnaturalSignet))); } } else if (bfe is BuffRemoveAllEvent) @@ -151,7 +151,7 @@ internal override List SpecialBuffEventProcess(CombatData com AbstractBuffEvent apply = signets.FirstOrDefault(x => x is BuffApplyEvent && x.Time < bfe.Time && x.Time > bfe.Time - 30000); if (apply == null) { - res.Add(new BuffApplyEvent(ParserHelper._unknownAgent, target.AgentItem, bfe.Time - 10000, 10000, skillData.Get(UnnaturalSignet), uint.MaxValue, true)); + res.Add(new BuffApplyEvent(_unknownAgent, target.AgentItem, bfe.Time - 10000, 10000, skillData.Get(UnnaturalSignet), uint.MaxValue, true)); } } } @@ -184,7 +184,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, } AgentItem attackTarget = attackTargets.Last().AttackTarget; // sanity check - TargetableEvent attackableEvent = combatData.GetTargetableEvents(attackTarget).LastOrDefault(x => x.Targetable && x.Time > _deimos10PercentTime - ParserHelper.ServerDelayConstant); + TargetableEvent attackableEvent = combatData.GetTargetableEvents(attackTarget).LastOrDefault(x => x.Targetable && x.Time > _deimos10PercentTime - ServerDelayConstant); if (attackableEvent == null) { return; @@ -214,7 +214,7 @@ private static long AttackTargetSpecialParse(CombatItem targetable, AgentData ag } long firstAware = targetable.Time; AgentItem targetAgent = agentData.GetAgent(targetable.SrcAgent, targetable.Time); - if (targetAgent == ParserHelper._unknownAgent) + if (targetAgent == _unknownAgent) { return 0; } @@ -224,7 +224,7 @@ private static long AttackTargetSpecialParse(CombatItem targetable, AgentData ag return 0; } AgentItem deimosStructBody = agentData.GetAgent(attackTargetEvent.DstAgent, attackTargetEvent.Time); - if (deimosStructBody == ParserHelper._unknownAgent) + if (deimosStructBody == _unknownAgent) { return 0; } @@ -410,7 +410,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase private List AddBossPhases(List phases, ParsedEvtcLog log, AbstractSingleActor mainTarget) { // Determined + additional data on inst change - AbstractBuffEvent invulDei = log.CombatData.GetBuffData(SkillIDs.Determined762).FirstOrDefault(x => x is BuffApplyEvent && x.To == mainTarget.AgentItem); + AbstractBuffEvent invulDei = log.CombatData.GetBuffData(Determined762).FirstOrDefault(x => x is BuffApplyEvent && x.To == mainTarget.AgentItem); if (invulDei != null) { @@ -418,7 +418,7 @@ private List AddBossPhases(List phases, ParsedEvtcLog log, phase100to10.AddTarget(mainTarget); phases.Add(phase100to10); - if (_deimos10PercentTime > 0 && log.FightData.FightEnd - _deimos10PercentTime > ParserHelper.PhaseTimeLimit) + if (_deimos10PercentTime > 0 && log.FightData.FightEnd - _deimos10PercentTime > PhaseTimeLimit) { var phase10to0 = new PhaseData(_deimos10PercentTime, log.FightData.FightEnd, "10% - 0%"); phase10to0.AddTarget(mainTarget); @@ -621,7 +621,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo diffY = -1130; } } - Point3D pos = shackledPrisoner.GetCurrentPosition(log, replay.TimeOffsets.start + ParserHelper.ServerDelayConstant) + new Point3D(diffX, diffY); + Point3D pos = shackledPrisoner.GetCurrentPosition(log, replay.TimeOffsets.start + ServerDelayConstant) + new Point3D(diffX, diffY); replay.Decorations.Add(new LineDecoration(0, ((int)replay.TimeOffsets.start, (int)replay.TimeOffsets.end), "rgba(0, 200, 200, 0.5)", new AgentConnector(shackledPrisoner), new PositionConnector(pos))); } break; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W4/Samarog.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W4/Samarog.cs index 65a6a4a8d3..e28bd5536e 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W4/Samarog.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W4/Samarog.cs @@ -20,8 +20,8 @@ public Samarog(int triggerID) : base(triggerID) MechanicList.AddRange(new List { - new PlayerDstHitMechanic(SamarogShockwave, "Shockwave", new MechanicPlotlySetting(Symbols.Circle,Colors.Blue), "Schk.Wv","Shockwave from Spears", "Shockwave",0).UsingChecker((de, log) => !de.To.HasBuff(log, SkillIDs.Stability, de.Time - ParserHelper.ServerDelayConstant)), - new PlayerDstHitMechanic(PrisonerSweep, "Prisoner Sweep", new MechanicPlotlySetting(Symbols.Hexagon,Colors.Blue), "Swp","Prisoner Sweep (horizontal)", "Sweep",0).UsingChecker((de, log) => !de.To.HasBuff(log, SkillIDs.Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(SamarogShockwave, "Shockwave", new MechanicPlotlySetting(Symbols.Circle,Colors.Blue), "Schk.Wv","Shockwave from Spears", "Shockwave",0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(PrisonerSweep, "Prisoner Sweep", new MechanicPlotlySetting(Symbols.Hexagon,Colors.Blue), "Swp","Prisoner Sweep (horizontal)", "Sweep",0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), new PlayerDstHitMechanic(TramplingRush, "Trampling Rush", new MechanicPlotlySetting(Symbols.TriangleRight,Colors.Red), "Trpl","Trampling Rush (hit by stampede towards home)", "Trampling Rush",0), new PlayerDstHitMechanic(Bludgeon , "Bludgeon", new MechanicPlotlySetting(Symbols.TriangleDown,Colors.Blue), "Slam","Bludgeon (vertical Slam)", "Slam",0), new PlayerDstBuffApplyMechanic(FixatedSamarog, "Fixate: Samarog", new MechanicPlotlySetting(Symbols.Star,Colors.Magenta), "S.Fix","Fixated by Samarog", "Fixate: Samarog",0), @@ -217,7 +217,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { // big bomb - var bigbomb = log.CombatData.GetBuffData(SkillIDs.InevitableBetrayalBig).Where(x => (x.To == p.AgentItem && x is BuffApplyEvent)).ToList(); + var bigbomb = log.CombatData.GetBuffData(InevitableBetrayalBig).Where(x => (x.To == p.AgentItem && x is BuffApplyEvent)).ToList(); foreach (AbstractBuffEvent c in bigbomb) { int bigStart = (int)c.Time; @@ -226,7 +226,7 @@ internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedE replay.Decorations.Add(new CircleDecoration(true, bigEnd, 300, (bigStart, bigEnd), "rgba(150, 80, 0, 0.2)", new AgentConnector(p))); } // small bomb - var smallbomb = log.CombatData.GetBuffData(SkillIDs.InevitableBetrayalSmall).Where(x => (x.To == p.AgentItem && x is BuffApplyEvent)).ToList(); + var smallbomb = log.CombatData.GetBuffData(InevitableBetrayalSmall).Where(x => (x.To == p.AgentItem && x is BuffApplyEvent)).ToList(); foreach (AbstractBuffEvent c in smallbomb) { int smallStart = (int)c.Time; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W5/River.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W5/River.cs index 28a342aef5..f579eacfe3 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W5/River.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W5/River.cs @@ -22,7 +22,7 @@ public River(int triggerID) : base(triggerID) MechanicList.AddRange(new List { new PlayerDstHitMechanic(Bombshell, "Bombshell", new MechanicPlotlySetting(Symbols.Circle,Colors.Orange),"Bomb Hit", "Hit by Hollowed Bomber Exlosion", "Hit by Bomb", 0 ), - new PlayerDstHitMechanic(TimedBomb, "Timed Bomb", new MechanicPlotlySetting(Symbols.Square,Colors.Orange),"Stun Bomb", "Stunned by Mini Bomb", "Stun Bomb", 0).UsingChecker((de, log) => !de.To.HasBuff(log, SkillIDs.Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(TimedBomb, "Timed Bomb", new MechanicPlotlySetting(Symbols.Square,Colors.Orange),"Stun Bomb", "Stunned by Mini Bomb", "Stun Bomb", 0).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ServerDelayConstant)), } ); GenericFallBackMethod = FallBackMethod.ChestGadget; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W5/SoullessHorror.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W5/SoullessHorror.cs index ddeb783c4c..97dc47fea4 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W5/SoullessHorror.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W5/SoullessHorror.cs @@ -88,7 +88,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, { throw new MissingKeyActorsException("Soulless Horror not found"); } - AbstractBuffEvent buffOnDeath = combatData.GetBuffData(SkillIDs.Determined895).Where(x => x.To == mainTarget.AgentItem && x is BuffApplyEvent).LastOrDefault(); + AbstractBuffEvent buffOnDeath = combatData.GetBuffData(Determined895).Where(x => x.To == mainTarget.AgentItem && x is BuffApplyEvent).LastOrDefault(); if (buffOnDeath != null) { fightData.SetSuccess(true, buffOnDeath.Time); @@ -291,7 +291,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo internal override FightData.EncounterMode GetEncounterMode(CombatData combatData, AgentData agentData, FightData fightData) { - var necrosis = combatData.GetBuffData(SkillIDs.Necrosis).Where(x => x is BuffApplyEvent).ToList(); + var necrosis = combatData.GetBuffData(Necrosis).Where(x => x is BuffApplyEvent).ToList(); if (necrosis.Count == 0) { return 0; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDarkness.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDarkness.cs index d4a828585f..f6d2b84a87 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDarkness.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDarkness.cs @@ -99,7 +99,7 @@ internal override long GetFightOffset(int evtcVersion, FightData fightData, Agen private static List GetSubPhases(AbstractSingleActor eye, ParsedEvtcLog log) { var res = new List(); - BuffRemoveAllEvent det762Loss = log.CombatData.GetBuffData(SkillIDs.Determined762).OfType().Where(x => x.To == eye.AgentItem).FirstOrDefault(); + BuffRemoveAllEvent det762Loss = log.CombatData.GetBuffData(Determined762).OfType().Where(x => x.To == eye.AgentItem).FirstOrDefault(); if (det762Loss != null) { int count = 0; diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDeath.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDeath.cs index 98c8f9f446..16d0c3c4a2 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDeath.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfDeath.cs @@ -146,11 +146,11 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { - var spiritTransform = log.CombatData.GetBuffData(SkillIDs.FracturedSpirit).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList(); + var spiritTransform = log.CombatData.GetBuffData(FracturedSpirit).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList(); foreach (AbstractBuffEvent c in spiritTransform) { int duration = 30000; - AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(SkillIDs.MortalCoilStatueOfDeath).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration); + AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(MortalCoilStatueOfDeath).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration); int start = (int)c.Time; int end = start + duration; if (removedBuff != null) diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfIce.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfIce.cs index f92847499d..3e4c9416a6 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfIce.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W5/StatueOfIce.cs @@ -64,11 +64,11 @@ internal override long GetFightOffset(int evtcVersion, FightData fightData, Agen internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay) { - var green = log.CombatData.GetBuffData(SkillIDs.FrozenWind).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList(); + var green = log.CombatData.GetBuffData(FrozenWind).Where(x => x.To == p.AgentItem && x is BuffApplyEvent).ToList(); foreach (AbstractBuffEvent c in green) { int duration = 45000; - AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(SkillIDs.FrozenWind).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration); + AbstractBuffEvent removedBuff = log.CombatData.GetBuffRemoveAllData(FrozenWind).FirstOrDefault(x => x.To == p.AgentItem && x.Time > c.Time && x.Time < c.Time + duration); int start = (int)c.Time; int end = start + duration; if (removedBuff != null) diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W6/Qadim.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W6/Qadim.cs index 5cc3a43021..94c513e632 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W6/Qadim.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W6/Qadim.cs @@ -88,12 +88,12 @@ protected override List GetTargetsIDs() { return new List { - (int)ArcDPSEnums.TargetID.Qadim, - (int)ArcDPSEnums.TrashID.AncientInvokedHydra, - (int)ArcDPSEnums.TrashID.WyvernMatriarch, - (int)ArcDPSEnums.TrashID.WyvernPatriarch, - (int)ArcDPSEnums.TrashID.ApocalypseBringer, - (int)ArcDPSEnums.TrashID.QadimLamp, + (int)TargetID.Qadim, + (int)TrashID.AncientInvokedHydra, + (int)TrashID.WyvernMatriarch, + (int)TrashID.WyvernPatriarch, + (int)TrashID.ApocalypseBringer, + (int)TrashID.QadimLamp, }; } @@ -101,23 +101,23 @@ protected override HashSet GetUniqueNPCIDs() { return new HashSet { - (int)ArcDPSEnums.TargetID.Qadim, - (int)ArcDPSEnums.TrashID.AncientInvokedHydra, - (int)ArcDPSEnums.TrashID.ApocalypseBringer, - (int)ArcDPSEnums.TrashID.WyvernMatriarch, - (int)ArcDPSEnums.TrashID.WyvernPatriarch + (int)TargetID.Qadim, + (int)TrashID.AncientInvokedHydra, + (int)TrashID.ApocalypseBringer, + (int)TrashID.WyvernMatriarch, + (int)TrashID.WyvernPatriarch }; } internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List combatData, IReadOnlyDictionary extensions) { - IReadOnlyList pyres = agentData.GetNPCsByID(ArcDPSEnums.TrashID.PyreGuardian); + IReadOnlyList pyres = agentData.GetNPCsByID(TrashID.PyreGuardian); // Lamps - var lampAgents = combatData.Where(x => x.DstAgent == 14940 && x.IsStateChange == ArcDPSEnums.StateChange.MaxHealthUpdate).Select(x => agentData.GetAgent(x.SrcAgent, x.Time)).Where(x => x.Type == AgentItem.AgentType.Gadget && x.HitboxWidth == 202).ToList(); + var lampAgents = combatData.Where(x => x.DstAgent == 14940 && x.IsStateChange == StateChange.MaxHealthUpdate).Select(x => agentData.GetAgent(x.SrcAgent, x.Time)).Where(x => x.Type == AgentItem.AgentType.Gadget && x.HitboxWidth == 202).ToList(); foreach (AgentItem lamp in lampAgents) { lamp.OverrideType(AgentItem.AgentType.NPC); - lamp.OverrideID(ArcDPSEnums.TrashID.QadimLamp); + lamp.OverrideID(TrashID.QadimLamp); } bool refresh = lampAgents.Count > 0; // Pyres @@ -126,23 +126,23 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat var resolutionRetaliationPyrePositions = new List { new Point3D(-8951, 9429), new Point3D(-5716, 9325), new Point3D(-7846, 10612) }; foreach (AgentItem pyre in pyres) { - CombatItem positionEvt = combatData.FirstOrDefault(x => x.SrcMatchesAgent(pyre) && x.IsStateChange == ArcDPSEnums.StateChange.Position); + CombatItem positionEvt = combatData.FirstOrDefault(x => x.SrcMatchesAgent(pyre) && x.IsStateChange == StateChange.Position); if (positionEvt != null) { Point3D position = AbstractMovementEvent.GetPoint3D(positionEvt.DstAgent, 0); if (protectPyrePositions.Any(x => x.Distance2DToPoint(position) < InchDistanceThreshold)) { - pyre.OverrideID(ArcDPSEnums.TrashID.PyreGuardianProtect); + pyre.OverrideID(TrashID.PyreGuardianProtect); refresh = true; } else if (stabilityPyrePositions.Any(x => x.Distance2DToPoint(position) < InchDistanceThreshold)) { - pyre.OverrideID(ArcDPSEnums.TrashID.PyreGuardianStab); + pyre.OverrideID(TrashID.PyreGuardianStab); refresh = true; } else if (resolutionRetaliationPyrePositions.Any(x => x.Distance2DToPoint(position) < InchDistanceThreshold)) { - pyre.OverrideID(gw2Build >= GW2Builds.May2021Balance ? ArcDPSEnums.TrashID.PyreGuardianResolution : ArcDPSEnums.TrashID.PyreGuardianRetal); + pyre.OverrideID(gw2Build >= GW2Builds.May2021Balance ? TrashID.PyreGuardianResolution : TrashID.PyreGuardianRetal); refresh = true; } } @@ -154,19 +154,19 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat ComputeFightTargets(agentData, combatData, extensions); foreach (NPC target in TrashMobs) { - if (target.IsSpecies(ArcDPSEnums.TrashID.PyreGuardianProtect)) + if (target.IsSpecies(TrashID.PyreGuardianProtect)) { target.OverrideName("Protect " + target.Character); } - if (target.IsSpecies(ArcDPSEnums.TrashID.PyreGuardianRetal)) + if (target.IsSpecies(TrashID.PyreGuardianRetal)) { target.OverrideName("Retal " + target.Character); } - if (target.IsSpecies(ArcDPSEnums.TrashID.PyreGuardianResolution)) + if (target.IsSpecies(TrashID.PyreGuardianResolution)) { target.OverrideName("Resolution " + target.Character); } - if (target.IsSpecies(ArcDPSEnums.TrashID.PyreGuardianStab)) + if (target.IsSpecies(TrashID.PyreGuardianStab)) { target.OverrideName("Stab " + target.Character); } @@ -184,7 +184,7 @@ internal override List GetInstantCastFinders() internal override long GetFightOffset(int evtcVersion, FightData fightData, AgentData agentData, List combatData) { // Find target - AgentItem target = agentData.GetNPCsByID(ArcDPSEnums.TargetID.Qadim).FirstOrDefault(); + AgentItem target = agentData.GetNPCsByID(TargetID.Qadim).FirstOrDefault(); if (target == null) { throw new MissingKeyActorsException("Qadim not found"); @@ -209,7 +209,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase // If changing phase detection, combat replay platform timings may have to be updated. List phases = GetInitialPhase(log); - AbstractSingleActor qadim = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Qadim)); + AbstractSingleActor qadim = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Qadim)); if (qadim == null) { throw new MissingKeyActorsException("Qadim not found"); @@ -229,11 +229,11 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase var pyresFirstAware = new List(); var pyres = new List { - ArcDPSEnums.TrashID.PyreGuardian, - ArcDPSEnums.TrashID.PyreGuardianProtect, - ArcDPSEnums.TrashID.PyreGuardianStab, - ArcDPSEnums.TrashID.PyreGuardianRetal, - ArcDPSEnums.TrashID.PyreGuardianResolution, + TrashID.PyreGuardian, + TrashID.PyreGuardianProtect, + TrashID.PyreGuardianStab, + TrashID.PyreGuardianRetal, + TrashID.PyreGuardianResolution, }; foreach (int pyreId in pyres) { @@ -249,25 +249,25 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase { var ids = new List { - (int) ArcDPSEnums.TrashID.WyvernMatriarch, - (int) ArcDPSEnums.TrashID.WyvernPatriarch, - (int) ArcDPSEnums.TrashID.AncientInvokedHydra, - (int) ArcDPSEnums.TrashID.ApocalypseBringer, - (int) ArcDPSEnums.TrashID.QadimLamp + (int) TrashID.WyvernMatriarch, + (int) TrashID.WyvernPatriarch, + (int) TrashID.AncientInvokedHydra, + (int) TrashID.ApocalypseBringer, + (int) TrashID.QadimLamp }; AddTargetsToPhaseAndFit(phase, ids, log); if (phase.Targets.Count > 0) { var phaseTarIDs = new HashSet(phase.Targets.Select(x => x.ID)); - if (phaseTarIDs.Contains((int)ArcDPSEnums.TrashID.AncientInvokedHydra)) + if (phaseTarIDs.Contains((int)TrashID.AncientInvokedHydra)) { phase.Name = "Hydra"; } - else if (phaseTarIDs.Contains((int)ArcDPSEnums.TrashID.ApocalypseBringer)) + else if (phaseTarIDs.Contains((int)TrashID.ApocalypseBringer)) { phase.Name = "Apocalypse"; } - else if (phaseTarIDs.Contains((int)ArcDPSEnums.TrashID.WyvernPatriarch) || phaseTarIDs.Contains((int)ArcDPSEnums.TrashID.WyvernMatriarch)) + else if (phaseTarIDs.Contains((int)TrashID.WyvernPatriarch) || phaseTarIDs.Contains((int)TrashID.WyvernMatriarch)) { phase.Name = "Wyvern"; } @@ -286,65 +286,65 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase { return new List() { - ArcDPSEnums.TrashID.LavaElemental1, - ArcDPSEnums.TrashID.LavaElemental2, - ArcDPSEnums.TrashID.IcebornHydra, - ArcDPSEnums.TrashID.GreaterMagmaElemental1, - ArcDPSEnums.TrashID.GreaterMagmaElemental2, - ArcDPSEnums.TrashID.FireElemental, - ArcDPSEnums.TrashID.FireImp, - ArcDPSEnums.TrashID.PyreGuardian, - ArcDPSEnums.TrashID.PyreGuardianProtect, - ArcDPSEnums.TrashID.PyreGuardianRetal, - ArcDPSEnums.TrashID.PyreGuardianResolution, - ArcDPSEnums.TrashID.PyreGuardianStab, - ArcDPSEnums.TrashID.ReaperOfFlesh, - ArcDPSEnums.TrashID.DestroyerTroll, - ArcDPSEnums.TrashID.IceElemental, - ArcDPSEnums.TrashID.AngryZommoros, - ArcDPSEnums.TrashID.AssaultCube, - ArcDPSEnums.TrashID.AwakenedSoldier, - ArcDPSEnums.TrashID.Basilisk, - ArcDPSEnums.TrashID.BlackMoa, - ArcDPSEnums.TrashID.BrandedCharr, - ArcDPSEnums.TrashID.BrandedDevourer, - ArcDPSEnums.TrashID.ChakDrone, - ArcDPSEnums.TrashID.CrazedKarkaHatchling, - ArcDPSEnums.TrashID.FireImpLamp, - ArcDPSEnums.TrashID.GhostlyPirateFighter, - ArcDPSEnums.TrashID.GiantBrawler, - ArcDPSEnums.TrashID.GiantHunter, - ArcDPSEnums.TrashID.GoldOoze, - ArcDPSEnums.TrashID.GrawlBascher, - ArcDPSEnums.TrashID.GrawlTrapper, - ArcDPSEnums.TrashID.GuildInitiateModusSceleris, - ArcDPSEnums.TrashID.IcebroodAtrocity, - ArcDPSEnums.TrashID.IcebroodKodan, - ArcDPSEnums.TrashID.IcebroodQuaggan, - ArcDPSEnums.TrashID.Jotun, - ArcDPSEnums.TrashID.JungleWurm, - ArcDPSEnums.TrashID.Karka, - ArcDPSEnums.TrashID.MinotaurBull, - ArcDPSEnums.TrashID.ModnirrBerserker, - ArcDPSEnums.TrashID.MoltenDisaggregator, - ArcDPSEnums.TrashID.MoltenProtector, - ArcDPSEnums.TrashID.MoltenReverberant, - ArcDPSEnums.TrashID.MordremVinetooth, - ArcDPSEnums.TrashID.Murellow, - ArcDPSEnums.TrashID.NightmareCourtier, - ArcDPSEnums.TrashID.OgreHunter, - ArcDPSEnums.TrashID.PirareSkrittSentry, - ArcDPSEnums.TrashID.PolarBear, - ArcDPSEnums.TrashID.Rabbit, - ArcDPSEnums.TrashID.ReefSkelk, - ArcDPSEnums.TrashID.RisenKraitDamoss, - ArcDPSEnums.TrashID.RottingAncientOakheart, - ArcDPSEnums.TrashID.RottingDestroyer, - ArcDPSEnums.TrashID.ShadowSkelk, - ArcDPSEnums.TrashID.SpiritOfExcess, - ArcDPSEnums.TrashID.TamedWarg, - ArcDPSEnums.TrashID.TarElemental, - ArcDPSEnums.TrashID.WindRider, + TrashID.LavaElemental1, + TrashID.LavaElemental2, + TrashID.IcebornHydra, + TrashID.GreaterMagmaElemental1, + TrashID.GreaterMagmaElemental2, + TrashID.FireElemental, + TrashID.FireImp, + TrashID.PyreGuardian, + TrashID.PyreGuardianProtect, + TrashID.PyreGuardianRetal, + TrashID.PyreGuardianResolution, + TrashID.PyreGuardianStab, + TrashID.ReaperOfFlesh, + TrashID.DestroyerTroll, + TrashID.IceElemental, + TrashID.AngryZommoros, + TrashID.AssaultCube, + TrashID.AwakenedSoldier, + TrashID.Basilisk, + TrashID.BlackMoa, + TrashID.BrandedCharr, + TrashID.BrandedDevourer, + TrashID.ChakDrone, + TrashID.CrazedKarkaHatchling, + TrashID.FireImpLamp, + TrashID.GhostlyPirateFighter, + TrashID.GiantBrawler, + TrashID.GiantHunter, + TrashID.GoldOoze, + TrashID.GrawlBascher, + TrashID.GrawlTrapper, + TrashID.GuildInitiateModusSceleris, + TrashID.IcebroodAtrocity, + TrashID.IcebroodKodan, + TrashID.IcebroodQuaggan, + TrashID.Jotun, + TrashID.JungleWurm, + TrashID.Karka, + TrashID.MinotaurBull, + TrashID.ModnirrBerserker, + TrashID.MoltenDisaggregator, + TrashID.MoltenProtector, + TrashID.MoltenReverberant, + TrashID.MordremVinetooth, + TrashID.Murellow, + TrashID.NightmareCourtier, + TrashID.OgreHunter, + TrashID.PirareSkrittSentry, + TrashID.PolarBear, + TrashID.Rabbit, + TrashID.ReefSkelk, + TrashID.RisenKraitDamoss, + TrashID.RottingAncientOakheart, + TrashID.RottingDestroyer, + TrashID.ShadowSkelk, + TrashID.SpiritOfExcess, + TrashID.TamedWarg, + TrashID.TarElemental, + TrashID.WindRider, }; } @@ -359,7 +359,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo int ccRadius = 200; switch (target.ID) { - case (int)ArcDPSEnums.TargetID.Qadim: + case (int)TargetID.Qadim: //CC var breakbar = cls.Where(x => x.SkillId == QadimCC).ToList(); foreach (AbstractCastEvent c in breakbar) @@ -395,7 +395,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } } break; - case (int)ArcDPSEnums.TrashID.AncientInvokedHydra: + case (int)TrashID.AncientInvokedHydra: //CC var fieryMeteor = cls.Where(x => x.SkillId == FieryMeteor).ToList(); foreach (AbstractCastEvent c in fieryMeteor) @@ -418,7 +418,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } } break; - case (int)ArcDPSEnums.TrashID.WyvernMatriarch: + case (int)TrashID.WyvernMatriarch: //Wing Buffet var wingBuffet = cls.Where(x => x.SkillId == WingBuffet).ToList(); foreach (AbstractCastEvent c in wingBuffet) @@ -478,7 +478,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } } break; - case (int)ArcDPSEnums.TrashID.WyvernPatriarch: + case (int)TrashID.WyvernPatriarch: //CC var patCC = cls.Where(x => x.SkillId == PatriarchCC).ToList(); foreach (AbstractCastEvent c in patCC) @@ -527,7 +527,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo } } break; - case (int)ArcDPSEnums.TrashID.ApocalypseBringer: + case (int)TrashID.ApocalypseBringer: var jumpShockwave = cls.Where(x => x.SkillId == ShatteredEarth).ToList(); foreach (AbstractCastEvent c in jumpShockwave) { @@ -593,7 +593,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo internal override FightData.EncounterMode GetEncounterMode(CombatData combatData, AgentData agentData, FightData fightData) { - AbstractSingleActor target = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Qadim)); + AbstractSingleActor target = Targets.FirstOrDefault(x => x.IsSpecies(TargetID.Qadim)); if (target == null) { throw new MissingKeyActorsException("Qadim not found"); @@ -604,7 +604,7 @@ internal override FightData.EncounterMode GetEncounterMode(CombatData combatData private static void AddPlatformsToCombatReplay(AbstractSingleActor qadim, ParsedEvtcLog log, List decorations) { // We later use the target to find out the timing of the last move - Debug.Assert(qadim.IsSpecies(ArcDPSEnums.TargetID.Qadim)); + Debug.Assert(qadim.IsSpecies(TargetID.Qadim)); // These values were all calculated by hand. // It would be way nicer to calculate them here, but we don't have a nice vector library diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W7/Adina.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W7/Adina.cs index 90e6144344..0309d7a2a7 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W7/Adina.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W7/Adina.cs @@ -23,7 +23,7 @@ public Adina(int triggerID) : base(triggerID) new PlayerDstBuffApplyMechanic(RadiantBlindness, "Radiant Blindness", new MechanicPlotlySetting(Symbols.Circle,Colors.Magenta), "R.Blind", "Unremovable blindness", "Radiant Blindness", 0), new PlayerDstBuffApplyMechanic(ErodingCurse, "Eroding Curse", new MechanicPlotlySetting(Symbols.Square,Colors.LightPurple), "Curse", "Stacking damage debuff from Hand of Erosion", "Eroding Curse", 0), new PlayerDstHitMechanic(BoulderBarrage, "Boulder Barrage", new MechanicPlotlySetting(Symbols.Hexagon,Colors.Red), "Boulder", "Hit by boulder thrown during pillars", "Boulder Barrage", 0), - new PlayerDstHitMechanic(PerilousPulse, "Perilous Pulse", new MechanicPlotlySetting(Symbols.TriangleRight,Colors.Pink), "Perilous Pulse", "Perilous Pulse", "Perilous Pulse", 0).UsingChecker( (de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(PerilousPulse, "Perilous Pulse", new MechanicPlotlySetting(Symbols.TriangleRight,Colors.Pink), "Perilous Pulse", "Perilous Pulse", "Perilous Pulse", 0).UsingChecker( (de, log) => !de.To.HasBuff(log, Stability, de.Time - ServerDelayConstant)), new PlayerDstHitMechanic(StalagmitesDetonation, "Stalagmites", new MechanicPlotlySetting(Symbols.Pentagon,Colors.Red), "Mines", "Hit by mines", "Mines", 0), new PlayerDstHitMechanic(DiamondPalisadeEye, "Diamond Palisade", new MechanicPlotlySetting(Symbols.StarDiamond,Colors.Pink), "Eye", "Looked at Eye", "Looked at Eye", 0), new PlayerDstSkillMechanic(new long[] { DoubleRotatingEarthRays, TripleRotatingEarthRays }, "Quantum Quake", new MechanicPlotlySetting(Symbols.Hourglass,Colors.Brown), "S.Thrower", "Hit by rotating SandThrower", "SandThrower", 0).UsingChecker((de, log) => de.HasKilled), @@ -245,7 +245,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase // Main phases var mainPhases = new List(); var pillarApplies = log.CombatData.GetBuffData(PillarPandemonium).OfType().Where(x => x.To == mainTarget.AgentItem).ToList(); - Dictionary> pillarAppliesGroupByTime = ParserHelper.GroupByTime(pillarApplies); + Dictionary> pillarAppliesGroupByTime = GroupByTime(pillarApplies); var mainPhaseEnds = new List(); foreach (KeyValuePair> pair in pillarAppliesGroupByTime) { diff --git a/GW2EIEvtcParser/EncounterLogic/Raids/W7/PeerlessQadim.cs b/GW2EIEvtcParser/EncounterLogic/Raids/W7/PeerlessQadim.cs index 307f8bdf18..ea0b8cfb48 100644 --- a/GW2EIEvtcParser/EncounterLogic/Raids/W7/PeerlessQadim.cs +++ b/GW2EIEvtcParser/EncounterLogic/Raids/W7/PeerlessQadim.cs @@ -22,7 +22,7 @@ public PeerlessQadim(int triggerID) : base(triggerID) { new PlayerDstHitMechanic(PylonDebrisField, "Pylon Debris Field", new MechanicPlotlySetting(Symbols.CircleOpenDot,Colors.Orange), "P.Magma", "Hit by Pylon Magma", "Pylon Magma", 0), new PlayerDstHitMechanic(EnergizedAffliction, "Energized Affliction", new MechanicPlotlySetting(Symbols.CircleOpen,Colors.Green), "E.Aff", "Energized Affliction", "Energized Affliction", 0), - new PlayerDstHitMechanic(ForceOfRetaliation, "Force of Retaliation", new MechanicPlotlySetting(Symbols.CircleOpen,Colors.Black), "Pushed", "Pushed by Shockwave", "Shockwave Push", 1000).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ParserHelper.ServerDelayConstant)), + new PlayerDstHitMechanic(ForceOfRetaliation, "Force of Retaliation", new MechanicPlotlySetting(Symbols.CircleOpen,Colors.Black), "Pushed", "Pushed by Shockwave", "Shockwave Push", 1000).UsingChecker((de, log) => !de.To.HasBuff(log, Stability, de.Time - ServerDelayConstant)), new PlayerDstHitMechanic(ExponentialRepercussionPylon, "Exponential Repercussion", new MechanicPlotlySetting(Symbols.DiamondOpen,Colors.Magenta), "P.KB", "Pushed by Pylon Knockback", "Pylon Knockback", 1000), new PlayerDstHitMechanic(ExponentialRepercussionQadimShield, "Exponential Repercussion", new MechanicPlotlySetting(Symbols.DiamondOpen,Colors.DarkPurple), "Dome.KB", "Pushed by Dome Shield Knockback", "Dome Knockback", 1000), new PlayerDstHitMechanic(ForceOfHavoc, "Force of Havoc", new MechanicPlotlySetting(Symbols.SquareOpen,Colors.Purple), "P.Rect", "Hit by Purple Rectangle", "Purple Rectangle", 0), @@ -219,7 +219,7 @@ internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog lo Point3D position = replay.Positions.LastOrDefault(x => x.Time <= start + 1000); if (facing != null && position != null) { - float direction = ParserHelper.RadianToDegreeF(Math.Atan2(facing.Y, facing.X)); + float direction = RadianToDegreeF(Math.Atan2(facing.Y, facing.X)); replay.Decorations.Add(new RotatedRectangleDecoration(true, 0, roadLength, roadWidth, direction, roadLength / 2 + 200, (start, start + preCastTime), "rgba(255, 0, 0, 0.1)", new PositionConnector(position))); for (int i = 0; i < subdivisions; i++) { diff --git a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/AetherbladeHideout.cs b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/AetherbladeHideout.cs index cb4ed019c0..af67ab2b8c 100644 --- a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/AetherbladeHideout.cs +++ b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/AetherbladeHideout.cs @@ -130,7 +130,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, { throw new MissingKeyActorsException("Mai Trin not found"); } - BuffApplyEvent buffApply = combatData.GetBuffData(SkillIDs.Determined895).OfType().Where(x => x.To == maiTrin.AgentItem).LastOrDefault(); + BuffApplyEvent buffApply = combatData.GetBuffData(Determined895).OfType().Where(x => x.To == maiTrin.AgentItem).LastOrDefault(); if (buffApply != null && buffApply.Time > echoOfScarlet.FirstAware) { fightData.SetSuccess(true, buffApply.Time); @@ -167,7 +167,7 @@ internal override List GetPhases(ParsedEvtcLog log, bool requirePhase HealthUpdateEvent lastHPUpdate = log.CombatData.GetHealthUpdateEvents(maiTrin.AgentItem).LastOrDefault(); long maiTrinEnd = lastHPUpdate.Time; long maiTrinStart = 0; - BuffRemoveAllEvent buffRemove = log.CombatData.GetBuffData(SkillIDs.Determined895).OfType().Where(x => x.To == maiTrin.AgentItem && x.Time > maiTrinStart).FirstOrDefault(); + BuffRemoveAllEvent buffRemove = log.CombatData.GetBuffData(Determined895).OfType().Where(x => x.To == maiTrin.AgentItem && x.Time > maiTrinStart).FirstOrDefault(); if (buffRemove != null) { maiTrinStart = buffRemove.Time; @@ -250,7 +250,7 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat var hpUpdates = combatData.Where(x => x.SrcMatchesAgent(echoOfScarlet.AgentItem) && x.IsStateChange == ArcDPSEnums.StateChange.HealthUpdate).ToList(); if (hpUpdates.Count > 1 && hpUpdates.LastOrDefault().DstAgent == 10000) { - hpUpdates.LastOrDefault().OverrideSrcAgent(ParserHelper._unknownAgent.Agent); + hpUpdates.LastOrDefault().OverrideSrcAgent(_unknownAgent.Agent); } } foreach (NPC target in Targets) diff --git a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/HarvestTemple.cs b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/HarvestTemple.cs index 5335f61d98..43895bf984 100644 --- a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/HarvestTemple.cs +++ b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/HarvestTemple.cs @@ -316,7 +316,7 @@ internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentDat foreach (CombatItem dragonOrbMaxHP in dragonOrbMaxHPs) { AgentItem dragonOrb = agentData.GetAgent(dragonOrbMaxHP.SrcAgent, dragonOrbMaxHP.Time); - if (dragonOrb != ParserHelper._unknownAgent) + if (dragonOrb != _unknownAgent) { dragonOrb.OverrideName("Dragon Orb"); dragonOrb.OverrideID(ArcDPSEnums.TrashID.DragonEnergyOrb); @@ -1133,7 +1133,7 @@ internal override FightData.EncounterMode GetEncounterMode(CombatData combatData if (voidMelters.Count > 5) { long firstAware = voidMelters[0].FirstAware; - if (voidMelters.Count(x => Math.Abs(x.FirstAware - firstAware) < ParserHelper.ServerDelayConstant) > 5) + if (voidMelters.Count(x => Math.Abs(x.FirstAware - firstAware) < ServerDelayConstant) > 5) { return FightData.EncounterMode.CM; } diff --git a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/KainengOverlook.cs b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/KainengOverlook.cs index 963600804b..73bcc46ab3 100644 --- a/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/KainengOverlook.cs +++ b/GW2EIEvtcParser/EncounterLogic/Strikes/EndOfDragons/KainengOverlook.cs @@ -124,7 +124,7 @@ private static void AddSplitPhase(List phases, IReadOnlyList x is BuffRemoveAllEvent && x.BuffID == SkillIDs.Determined762 && x.Time > cbtEnter.Time); + AbstractBuffEvent nextPhaseStartEvt = log.CombatData.GetBuffData(ministerLi.AgentItem).FirstOrDefault(x => x is BuffRemoveAllEvent && x.BuffID == Determined762 && x.Time > cbtEnter.Time); long phaseEnd = nextPhaseStartEvt != null ? nextPhaseStartEvt.Time : log.FightData.FightEnd; var addPhase = new PhaseData(cbtEnter.Time, phaseEnd, "Split Phase " + phaseID); addPhase.AddTargets(targets); @@ -178,7 +178,7 @@ internal override void CheckSuccess(CombatData combatData, AgentData agentData, { throw new MissingKeyActorsException("Minister Li not found"); } - var buffApplies = combatData.GetBuffData(SkillIDs.Resurrection).OfType().Where(x => x.To == ministerLi.AgentItem).ToList(); + var buffApplies = combatData.GetBuffData(Resurrection).OfType().Where(x => x.To == ministerLi.AgentItem).ToList(); if (buffApplies.Any()) { fightData.SetSuccess(true, buffApplies[0].Time); diff --git a/GW2EIEvtcParser/ParsedData/CombatEvents/CombatEventFactory.cs b/GW2EIEvtcParser/ParsedData/CombatEvents/CombatEventFactory.cs index e5da2d2cd0..8e796e8ced 100644 --- a/GW2EIEvtcParser/ParsedData/CombatEvents/CombatEventFactory.cs +++ b/GW2EIEvtcParser/ParsedData/CombatEvents/CombatEventFactory.cs @@ -25,113 +25,113 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag { switch (stateChangeEvent.IsStateChange) { - case ArcDPSEnums.StateChange.EnterCombat: + case StateChange.EnterCombat: var enterCombatEvt = new EnterCombatEvent(stateChangeEvent, agentData); Add(statusEvents.EnterCombatEvents, enterCombatEvt.Src, enterCombatEvt); break; - case ArcDPSEnums.StateChange.ExitCombat: + case StateChange.ExitCombat: var exitCombatEvt = new ExitCombatEvent(stateChangeEvent, agentData); Add(statusEvents.ExitCombatEvents, exitCombatEvt.Src, exitCombatEvt); break; - case ArcDPSEnums.StateChange.ChangeUp: + case StateChange.ChangeUp: var aliveEvt = new AliveEvent(stateChangeEvent, agentData); Add(statusEvents.AliveEvents, aliveEvt.Src, aliveEvt); break; - case ArcDPSEnums.StateChange.ChangeDead: + case StateChange.ChangeDead: var deadEvt = new DeadEvent(stateChangeEvent, agentData); Add(statusEvents.DeadEvents, deadEvt.Src, deadEvt); break; - case ArcDPSEnums.StateChange.ChangeDown: + case StateChange.ChangeDown: var downEvt = new DownEvent(stateChangeEvent, agentData); Add(statusEvents.DownEvents, downEvt.Src, downEvt); break; - case ArcDPSEnums.StateChange.Spawn: + case StateChange.Spawn: var spawnEvt = new SpawnEvent(stateChangeEvent, agentData); Add(statusEvents.SpawnEvents, spawnEvt.Src, spawnEvt); break; - case ArcDPSEnums.StateChange.Despawn: + case StateChange.Despawn: var despawnEvt = new DespawnEvent(stateChangeEvent, agentData); Add(statusEvents.DespawnEvents, despawnEvt.Src, despawnEvt); break; - case ArcDPSEnums.StateChange.HealthUpdate: + case StateChange.HealthUpdate: var healthEvt = new HealthUpdateEvent(stateChangeEvent, agentData); Add(statusEvents.HealthUpdateEvents, healthEvt.Src, healthEvt); break; - case ArcDPSEnums.StateChange.BarrierUpdate: + case StateChange.BarrierUpdate: var barrierEvt = new BarrierUpdateEvent(stateChangeEvent, agentData); Add(statusEvents.BarrierUpdateEvents, barrierEvt.Src, barrierEvt); break; - case ArcDPSEnums.StateChange.InstanceStart: + case StateChange.InstanceStart: metaDataEvents.InstanceStartEvent = new InstanceStartEvent(stateChangeEvent); break; - case ArcDPSEnums.StateChange.LogStart: + case StateChange.LogStart: if (stateChangeEvent.Value == 0 || stateChangeEvent.BuffDmg == 0) { return; } metaDataEvents.LogStartEvent = new LogStartEvent(stateChangeEvent); break; - case ArcDPSEnums.StateChange.LogStartNPCUpdate: + case StateChange.LogStartNPCUpdate: metaDataEvents.LogStartNPCUpdateEvents.Add(new LogStartNPCUpdateEvent(stateChangeEvent, agentData)); break; - case ArcDPSEnums.StateChange.LogEnd: + case StateChange.LogEnd: if (stateChangeEvent.Value == 0 || stateChangeEvent.BuffDmg == 0) { return; } metaDataEvents.LogEndEvent = new LogEndEvent(stateChangeEvent); break; - case ArcDPSEnums.StateChange.MaxHealthUpdate: + case StateChange.MaxHealthUpdate: var maxHealthEvt = new MaxHealthUpdateEvent(stateChangeEvent, agentData); Add(statusEvents.MaxHealthUpdateEvents, maxHealthEvt.Src, maxHealthEvt); break; - case ArcDPSEnums.StateChange.PointOfView: + case StateChange.PointOfView: if (stateChangeEvent.SrcAgent == 0) { return; } metaDataEvents.PointOfViewEvent = new PointOfViewEvent(stateChangeEvent, agentData); break; - case ArcDPSEnums.StateChange.Language: + case StateChange.Language: metaDataEvents.LanguageEvent = new LanguageEvent(stateChangeEvent); break; - case ArcDPSEnums.StateChange.GWBuild: + case StateChange.GWBuild: if (stateChangeEvent.SrcAgent == 0) { return; } metaDataEvents.BuildEvent = new BuildEvent(stateChangeEvent); break; - case ArcDPSEnums.StateChange.ShardId: + case StateChange.ShardId: metaDataEvents.ShardEvents.Add(new ShardEvent(stateChangeEvent)); break; - case ArcDPSEnums.StateChange.Reward: + case StateChange.Reward: #if !NO_REWARDS rewardEvents.Add(new RewardEvent(stateChangeEvent)); #endif break; - case ArcDPSEnums.StateChange.TeamChange: + case StateChange.TeamChange: var tcEvt = new TeamChangeEvent(stateChangeEvent, agentData); Add(statusEvents.TeamChangeEvents, tcEvt.Src, tcEvt); break; - case ArcDPSEnums.StateChange.AttackTarget: + case StateChange.AttackTarget: var aTEvt = new AttackTargetEvent(stateChangeEvent, agentData); Add(statusEvents.AttackTargetEvents, aTEvt.Src, aTEvt); Add(statusEvents.AttackTargetEventsByAttackTarget, aTEvt.AttackTarget, aTEvt); break; - case ArcDPSEnums.StateChange.Targetable: + case StateChange.Targetable: var tarEvt = new TargetableEvent(stateChangeEvent, agentData); Add(statusEvents.TargetableEvents, tarEvt.Src, tarEvt); break; - case ArcDPSEnums.StateChange.MapID: + case StateChange.MapID: metaDataEvents.MapIDEvents.Add(new MapIDEvent(stateChangeEvent)); break; - case ArcDPSEnums.StateChange.Guild: + case StateChange.Guild: var gEvt = new GuildEvent(stateChangeEvent, agentData); Add(metaDataEvents.GuildEvents, gEvt.Src, gEvt); break; - case ArcDPSEnums.StateChange.BuffInfo: - case ArcDPSEnums.StateChange.BuffFormula: + case StateChange.BuffInfo: + case StateChange.BuffFormula: if (metaDataEvents.BuffInfoEvents.TryGetValue(stateChangeEvent.SkillID, out BuffInfoEvent buffInfoEvent)) { buffInfoEvent.CompleteBuffInfoEvent(stateChangeEvent, evtcVersion); @@ -141,7 +141,7 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag buffInfoEvent = new BuffInfoEvent(stateChangeEvent, evtcVersion); metaDataEvents.BuffInfoEvents[stateChangeEvent.SkillID] = buffInfoEvent; } - if (stateChangeEvent.IsStateChange == ArcDPSEnums.StateChange.BuffInfo) + if (stateChangeEvent.IsStateChange == StateChange.BuffInfo) { if (metaDataEvents.BuffInfoEventsByCategory.TryGetValue(buffInfoEvent.CategoryByte, out List bdEvtList)) { @@ -153,8 +153,8 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag } } break; - case ArcDPSEnums.StateChange.SkillInfo: - case ArcDPSEnums.StateChange.SkillTiming: + case StateChange.SkillInfo: + case StateChange.SkillTiming: if (metaDataEvents.SkillInfoEvents.TryGetValue(stateChangeEvent.SkillID, out SkillInfoEvent skillInfoEvent)) { skillInfoEvent.CompleteSkillInfoEvent(stateChangeEvent); @@ -165,54 +165,54 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag metaDataEvents.SkillInfoEvents[stateChangeEvent.SkillID] = skillInfoEvent; } break; - case ArcDPSEnums.StateChange.BreakbarState: + case StateChange.BreakbarState: var bSEvt = new BreakbarStateEvent(stateChangeEvent, agentData); Add(statusEvents.BreakbarStateEvents, bSEvt.Src, bSEvt); break; - case ArcDPSEnums.StateChange.BreakbarPercent: + case StateChange.BreakbarPercent: var bPEvt = new BreakbarPercentEvent(stateChangeEvent, agentData); Add(statusEvents.BreakbarPercentEvents, bPEvt.Src, bPEvt); break; - case ArcDPSEnums.StateChange.Error: + case StateChange.Error: metaDataEvents.ErrorEvents.Add(new ErrorEvent(stateChangeEvent)); break; - case ArcDPSEnums.StateChange.Tag: + case StateChange.Tag: var tagEvent = new TagEvent(stateChangeEvent, agentData); Add(statusEvents.TagEvents, tagEvent.Src, tagEvent); break; - case ArcDPSEnums.StateChange.Velocity: + case StateChange.Velocity: var velEvt = new VelocityEvent(stateChangeEvent, agentData); Add(statusEvents.MovementEvents, velEvt.Src, velEvt); break; - case ArcDPSEnums.StateChange.Rotation: + case StateChange.Rotation: var rotEvt = new RotationEvent(stateChangeEvent, agentData); Add(statusEvents.MovementEvents, rotEvt.Src, rotEvt); break; - case ArcDPSEnums.StateChange.Position: + case StateChange.Position: var posEvt = new PositionEvent(stateChangeEvent, agentData); Add(statusEvents.MovementEvents, posEvt.Src, posEvt); break; - case ArcDPSEnums.StateChange.WeaponSwap: + case StateChange.WeaponSwap: wepSwaps.Add(new WeaponSwapEvent(stateChangeEvent, agentData, skillData)); break; - case ArcDPSEnums.StateChange.StackActive: + case StateChange.StackActive: buffEvents.Add(new BuffStackActiveEvent(stateChangeEvent, agentData, skillData)); break; - case ArcDPSEnums.StateChange.StackReset: + case StateChange.StackReset: buffEvents.Add(new BuffStackResetEvent(stateChangeEvent, agentData, skillData)); break; - case ArcDPSEnums.StateChange.BuffInitial: + case StateChange.BuffInitial: buffEvents.Add(new BuffApplyEvent(stateChangeEvent, agentData, skillData)); break; - case ArcDPSEnums.StateChange.TickRate: + case StateChange.TickRate: metaDataEvents.TickRateEvents.Add(new TickRateEvent(stateChangeEvent)); break; - case ArcDPSEnums.StateChange.Last90BeforeDown: + case StateChange.Last90BeforeDown: var last90Evt = new Last90BeforeDownEvent(stateChangeEvent, agentData); statusEvents.Last90BeforeDownEvents.Add(last90Evt); Add(statusEvents.Last90BeforeDownEventsBySrc, last90Evt.Src, last90Evt); break; - case ArcDPSEnums.StateChange.Effect: + case StateChange.Effect: var effectEvt = new EffectEvent(stateChangeEvent, agentData); statusEvents.EffectEvents.Add(effectEvt); Add(statusEvents.EffectEventsBySrc, effectEvt.Src, effectEvt); @@ -231,17 +231,17 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag Add(statusEvents.EffectEventsByTrackingID, effectEvt.TrackingID, effectEvt); } break; - case ArcDPSEnums.StateChange.EffectIDToGUID: + case StateChange.EffectIDToGUID: if (evtcVersion >= ArcDPSBuilds.FunctionalIDToGUIDEvents) { - switch (ArcDPSEnums.GetContentLocal((byte)stateChangeEvent.OverstackValue)) + switch (GetContentLocal((byte)stateChangeEvent.OverstackValue)) { - case ArcDPSEnums.ContentLocal.Effect: + case ContentLocal.Effect: var effectGUID = new EffectGUIDEvent(stateChangeEvent); metaDataEvents.EffectGUIDEventsByEffectID[effectGUID.ContentID] = effectGUID; metaDataEvents.EffectGUIDEventsByGUID[effectGUID.ContentGUID] = effectGUID; break; - case ArcDPSEnums.ContentLocal.Marker: + case ContentLocal.Marker: var markerGUID = new MarkerGUIDEvent(stateChangeEvent); metaDataEvents.MarkerGUIDEventsByMarkerID[markerGUID.ContentID] = markerGUID; metaDataEvents.MarkerGUIDEventsByGUID[markerGUID.ContentGUID] = markerGUID; @@ -251,7 +251,7 @@ public static void AddStateChangeEvent(CombatItem stateChangeEvent, AgentData ag } } break; - case ArcDPSEnums.StateChange.FractalScale: + case StateChange.FractalScale: // Sanity check if (stateChangeEvent.SrcAgent == 0) { @@ -280,13 +280,13 @@ public static void AddBuffRemoveEvent(CombatItem buffEvent, List CreateCastEvents(Dictionary hpDamage, List brkBarDamage, AgentData agentData, SkillData skillData) { - ArcDPSEnums.PhysicalResult result = ArcDPSEnums.GetPhysicalResult(damageEvent.Result); + ArcDPSEnums.PhysicalResult result = GetPhysicalResult(damageEvent.Result); switch (result) { - case ArcDPSEnums.PhysicalResult.BreakbarDamage: + case PhysicalResult.BreakbarDamage: brkBarDamage.Add(new DirectBreakbarDamageEvent(damageEvent, agentData, skillData)); break; - case ArcDPSEnums.PhysicalResult.Activation: - case ArcDPSEnums.PhysicalResult.Unknown: + case PhysicalResult.Activation: + case PhysicalResult.Unknown: break; default: hpDamage.Add(new DirectHealthDamageEvent(damageEvent, agentData, skillData, result)); @@ -372,13 +372,13 @@ public static void AddDirectDamageEvent(CombatItem damageEvent, List hpDamage, List brkBarDamage, AgentData agentData, SkillData skillData) { - ArcDPSEnums.ConditionResult result = ArcDPSEnums.GetConditionResult(damageEvent.Result); + ArcDPSEnums.ConditionResult result = GetConditionResult(damageEvent.Result); switch (result) { /*case ArcDPSEnums.ConditionResult.BreakbarDamage: brkBarDamage.Add(new NonDirectBreakbarDamageEvent(c, agentData, skillData)); break;*/ - case ArcDPSEnums.ConditionResult.Unknown: + case ConditionResult.Unknown: break; default: hpDamage.Add(new NonDirectHealthDamageEvent(damageEvent, agentData, skillData, result)); diff --git a/GW2EIEvtcParser/ParsedData/CombatEvents/DamageEvents/NonDirectHealthDamageEvent.cs b/GW2EIEvtcParser/ParsedData/CombatEvents/DamageEvents/NonDirectHealthDamageEvent.cs index 6c019dd893..09f60ea4cc 100644 --- a/GW2EIEvtcParser/ParsedData/CombatEvents/DamageEvents/NonDirectHealthDamageEvent.cs +++ b/GW2EIEvtcParser/ParsedData/CombatEvents/DamageEvents/NonDirectHealthDamageEvent.cs @@ -14,11 +14,11 @@ public class NonDirectHealthDamageEvent : AbstractHealthDamageEvent internal NonDirectHealthDamageEvent(CombatItem evtcItem, AgentData agentData, SkillData skillData, ArcDPSEnums.ConditionResult result) : base(evtcItem, agentData, skillData) { HealthDamage = evtcItem.BuffDmg; - IsAbsorbed = result == ArcDPSEnums.ConditionResult.InvulByBuff || - result == ArcDPSEnums.ConditionResult.InvulByPlayerSkill1 || - result == ArcDPSEnums.ConditionResult.InvulByPlayerSkill2 || - result == ArcDPSEnums.ConditionResult.InvulByPlayerSkill3; - HasHit = result == ArcDPSEnums.ConditionResult.ExpectedToHit; + IsAbsorbed = result == ConditionResult.InvulByBuff || + result == ConditionResult.InvulByPlayerSkill1 || + result == ConditionResult.InvulByPlayerSkill2 || + result == ConditionResult.InvulByPlayerSkill3; + HasHit = result == ConditionResult.ExpectedToHit; ShieldDamage = evtcItem.IsShields > 0 ? HealthDamage : 0; _cycle = GetBuffCycle(evtcItem.IsOffcycle); AgainstDowned = evtcItem.Pad1 == 1; diff --git a/GW2EIEvtcParser/ParsedData/CombatEvents/MetaDataEvents/BuffInfoEvent.cs b/GW2EIEvtcParser/ParsedData/CombatEvents/MetaDataEvents/BuffInfoEvent.cs index 259ce531c5..07635e050b 100644 --- a/GW2EIEvtcParser/ParsedData/CombatEvents/MetaDataEvents/BuffInfoEvent.cs +++ b/GW2EIEvtcParser/ParsedData/CombatEvents/MetaDataEvents/BuffInfoEvent.cs @@ -18,7 +18,7 @@ public class BuffInfoEvent : AbstractMetaDataEvent public byte CategoryByte { get; private set; } public byte StackingTypeByte { get; private set; } = 6; - public ArcDPSEnums.BuffStackType StackingType { get; private set; } = ArcDPSEnums.BuffStackType.Unknown; + public ArcDPSEnums.BuffStackType StackingType { get; private set; } = BuffStackType.Unknown; public bool ProbablyResistance { get; private set; } @@ -40,10 +40,10 @@ internal void CompleteBuffInfoEvent(CombatItem evtcItem, int evtcVersion) } switch (evtcItem.IsStateChange) { - case ArcDPSEnums.StateChange.BuffFormula: + case StateChange.BuffFormula: BuildFromBuffFormula(evtcItem, evtcVersion); break; - case ArcDPSEnums.StateChange.BuffInfo: + case StateChange.BuffInfo: BuildFromBuffInfo(evtcItem, evtcVersion); break; default: @@ -63,7 +63,7 @@ private void BuildFromBuffInfo(CombatItem evtcItem, int evtcVersion) if (evtcVersion >= ArcDPSBuilds.BuffAttrFlatIncRemoved) { StackingTypeByte = evtcItem.Pad1; - StackingType = ArcDPSEnums.GetBuffStackType(StackingTypeByte); + StackingType = GetBuffStackType(StackingTypeByte); } ProbablyResistance = evtcItem.Pad2 > 0; } diff --git a/GW2EIEvtcParser/ParserHelpers/ArcDPSEnums.cs b/GW2EIEvtcParser/ParserHelpers/ArcDPSEnums.cs index 9ad245ced1..ab15cad922 100644 --- a/GW2EIEvtcParser/ParserHelpers/ArcDPSEnums.cs +++ b/GW2EIEvtcParser/ParserHelpers/ArcDPSEnums.cs @@ -866,7 +866,7 @@ public enum TrashID : int VoidStormseer = 24677, VoidMelter = 24223, VoidGoliath = 24761, - DragonEnergyOrb = ArcDPSEnums.DragonOrb, + DragonEnergyOrb = DragonOrb, // Freezie FreeziesFrozenHeart = 21328, IceStormer = 21325,