Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ArcdpsLogManager/Controls/LogEncounterFilterTree.cs
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ private Image GetCategoryIcon(EncounterCategory category)
EncounterCategory.FractalSunquaPeak => imageProvider.GetFractalMapIcon(),
EncounterCategory.FractalSilentSurf => imageProvider.GetFractalMapIcon(),
EncounterCategory.FractalLonelyTower => imageProvider.GetFractalMapIcon(),
EncounterCategory.FractalKinfall => imageProvider.GetFractalMapIcon(),
EncounterCategory.Map => imageProvider.GetTinyInstanceIcon(),
_ => null
};
Expand Down
4 changes: 4 additions & 0 deletions ArcdpsLogManager/ImageProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public class ImageProvider
// RAID BOSSES
// WING 1
private Lazy<Image> ValeGuardianIcon { get; } = new Lazy<Image>(Resources.GetValeGuardianIcon);
private Lazy<Image> SpiritRaceIcon { get; } = new Lazy<Image>(Resources.GetSpiritRaceIcon);
private Lazy<Image> GorsevalIcon { get; } = new Lazy<Image>(Resources.GetGorsevalIcon);
private Lazy<Image> SabethaIcon { get; } = new Lazy<Image>(Resources.GetSabethaIcon);

Expand Down Expand Up @@ -151,6 +152,7 @@ public class ImageProvider
private Lazy<Image> BothPhasesAiKeeperOfThePeakIcon { get; } = new Lazy<Image>(Resources.GetBothPhasesAiKeeperOfThePeakIcon);
private Lazy<Image> KanaxaiIcon { get; } = new Lazy<Image>(Resources.GetKanaxaiIcon);
private Lazy<Image> EparchIcon { get; } = new Lazy<Image>(Resources.GetEparchIcon);
private Lazy<Image> WhisperingShadowIcon { get; } = new Lazy<Image>(Resources.GetWhisperingShadowIcon);

// FESTIVALS
private Lazy<Image> FreezieIcon { get; } = new Lazy<Image>(Resources.GetFreezieIcon);
Expand Down Expand Up @@ -314,6 +316,7 @@ public Image GetTinyEncounterIcon(Encounter encounter)
// RAIDS
// W1
Encounter.ValeGuardian => ValeGuardianIcon.Value,
Encounter.SpiritRace => SpiritRaceIcon.Value,
Encounter.Gorseval => GorsevalIcon.Value,
Encounter.Sabetha => SabethaIcon.Value,
// W2
Expand Down Expand Up @@ -380,6 +383,7 @@ public Image GetTinyEncounterIcon(Encounter encounter)
Encounter.AiKeeperOfThePeakDayAndNight => BothPhasesAiKeeperOfThePeakIcon.Value,
Encounter.Kanaxai => KanaxaiIcon.Value,
Encounter.Eparch => EparchIcon.Value,
Encounter.WhisperingShadow => WhisperingShadowIcon.Value,
// FESTIVALS
Encounter.Freezie => FreezieIcon.Value,
// TRAINING AREA
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions ArcdpsLogManager/Logs/Filters/Groups/CategoryLogGroup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class CategoryLogGroup : LogGroup
{EncounterCategory.FractalSunquaPeak, "Sunqua Peak" },
{EncounterCategory.FractalSilentSurf, "Silent Surf" },
{EncounterCategory.FractalLonelyTower, "Lonely Tower" },
{EncounterCategory.FractalKinfall, "Kinfall" },
{EncounterCategory.SpecialForcesTrainingArea, "Special Forces Training Area"},
{EncounterCategory.Other, "Uncategorized (PvE)"},
{EncounterCategory.Festival, "Festivals"},
Expand Down
2 changes: 2 additions & 0 deletions ArcdpsLogManager/Resources.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public static Image GetInstabilityImage(string iconName)

// WING 1
public static Image GetValeGuardianIcon() => GetEncounterImage("Mini_Vale_Guardian");
public static Image GetSpiritRaceIcon() => GetEncounterImage("Spirit_Thread");
public static Image GetGorsevalIcon() => GetEncounterImage("Mini_Gorseval_the_Multifarious");
public static Image GetSabethaIcon() => GetEncounterImage("Mini_Sabetha");

Expand Down Expand Up @@ -188,6 +189,7 @@ public static Image GetInstabilityImage(string iconName)
public static Image GetBothPhasesAiKeeperOfThePeakIcon() => GetEncounterImage("Both_Phases_Ai");
public static Image GetKanaxaiIcon() => GetEncounterImage("Mini_Kanaxai");
public static Image GetEparchIcon() => GetEncounterImage("Mini_Eparch");
public static Image GetWhisperingShadowIcon() => GetEncounterImage("Whispering_Shadow");

// FESTIVALS
public static Image GetFreezieIcon() => GetEncounterImage("Mini_Freezie");
Expand Down
4 changes: 4 additions & 0 deletions EVTCAnalytics/GameData/Encounters/Encounter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public enum Encounter

// Raids - Wing 1
ValeGuardian = 11,
SpiritRace = 12,
Gorseval = 13,
Sabetha = 14,

Expand Down Expand Up @@ -99,6 +100,9 @@ public enum Encounter
// Fractals - Lonely Tower
Eparch = 10041,

// Fractals - Kinfall
WhisperingShadow = 10051,

// Festivals - Wintersday
Freezie = 20001,

Expand Down
3 changes: 3 additions & 0 deletions EVTCAnalytics/GameData/Encounters/EncounterCategories.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public static class EncounterCategories
{
{Encounter.Other, EncounterCategory.Other},
{Encounter.ValeGuardian, EncounterCategory.RaidWing1},
{Encounter.SpiritRace, EncounterCategory.RaidWing1},
{Encounter.Gorseval, EncounterCategory.RaidWing1},
{Encounter.Sabetha, EncounterCategory.RaidWing1},
{Encounter.Slothasor, EncounterCategory.RaidWing2},
Expand Down Expand Up @@ -55,6 +56,7 @@ public static class EncounterCategories
{Encounter.AiKeeperOfThePeakDayAndNight, EncounterCategory.FractalSunquaPeak},
{Encounter.Kanaxai, EncounterCategory.FractalSilentSurf},
{Encounter.Eparch, EncounterCategory.FractalLonelyTower},
{Encounter.WhisperingShadow, EncounterCategory.FractalKinfall},
{Encounter.Freezie, EncounterCategory.StrikeMissionFestival},
{Encounter.StandardKittyGolem, EncounterCategory.SpecialForcesTrainingArea},
{Encounter.MediumKittyGolem, EncounterCategory.SpecialForcesTrainingArea},
Expand Down Expand Up @@ -108,6 +110,7 @@ public static class EncounterCategories
EncounterCategory.FractalSunquaPeak,
EncounterCategory.FractalSilentSurf,
EncounterCategory.FractalLonelyTower,
EncounterCategory.FractalKinfall,
};

/// <summary>
Expand Down
1 change: 1 addition & 0 deletions EVTCAnalytics/GameData/Encounters/EncounterCategory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public enum EncounterCategory
FractalSunquaPeak = 303,
FractalSilentSurf = 304,
FractalLonelyTower = 305,
FractalKinfall = 306,
Map = 2000,
}
}
4 changes: 3 additions & 1 deletion EVTCAnalytics/GameData/Encounters/EncounterNames.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public static class EncounterNames
public static IReadOnlyDictionary<Encounter, string> EnglishNames { get; } = new Dictionary<Encounter, string>
{
{Encounter.ValeGuardian, "Vale Guardian"},
{Encounter.SpiritRace, "Spirit Race" },
{Encounter.Gorseval, "Gorseval the Multifarious"},
{Encounter.Sabetha, "Sabetha the Saboteur"},
{Encounter.Slothasor, "Slothasor"},
Expand Down Expand Up @@ -53,7 +54,8 @@ public static class EncounterNames
{Encounter.AiKeeperOfThePeakNightOnly, "Ai, Keeper of the Peak – Dark"},
{Encounter.AiKeeperOfThePeakDayAndNight, "Ai, Keeper of the Peak – Both Phases"},
{Encounter.Kanaxai, "Kanaxai, Scythe of House Aurkus"},
{Encounter.Eparch, "Eparch" },
{Encounter.Eparch, "Eparch"},
{Encounter.WhisperingShadow, "Whispering Shadow"},
{Encounter.Freezie, "Freezie"},
{Encounter.StandardKittyGolem, "Standard Kitty Golem"},
{Encounter.MediumKittyGolem, "Medium Kitty Golem"},
Expand Down
3 changes: 3 additions & 0 deletions EVTCAnalytics/GameData/GadgetIds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ namespace GW2Scratch.EVTCAnalytics.GameData
/// </remarks>
public static class GadgetIds
{
// Wing 1
public const int EtherealBarrier = 47188;

// Wing 4
// Deimos
public const int ShackledPrisoner = 53040;
Expand Down
12 changes: 12 additions & 0 deletions EVTCAnalytics/GameData/GameBuilds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,17 @@ public static class GameBuilds
/// https://wiki.guildwars2.com/wiki/Game_updates/2025-03-11
/// </summary>
public static int MountBalriorCMRelease = 176750;

/// <summary>
/// Kinfall Fractal Release<br/>
/// https://wiki.guildwars2.com/wiki/Game_updates/2025-06-03
/// </summary>
public static int KinfallRelease = 181657;

/// <summary>
/// Kinfall Fractal CM Release<br/>
/// https://wiki.guildwars2.com/wiki/Game_updates/2025-06-24
/// </summary>
public static int KinfallCMRelease = 182824;
}
}
2 changes: 2 additions & 0 deletions EVTCAnalytics/GameData/SkillIds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,7 @@ public static class SkillIds
public const int SabirFirstAutoattack = 56620;

public const int Emboldened = 68087;

public const int LifeFireCircleCM = 76339;
}
}
2 changes: 2 additions & 0 deletions EVTCAnalytics/GameData/SpeciesIds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ public static class SpeciesIds
public const int KanaxaiCM = 25577;
// Lonely Tower
public const int Eparch = 26231;
// Kinfall
public const int WhisperingShadow = 27010;

// Festivals
public const int Freezie = 21333;
Expand Down
19 changes: 19 additions & 0 deletions EVTCAnalytics/Processing/EncounterDataProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ private IEncounterData GetPvEEncounterData(Encounter encounter, Agent mainTarget
// Raids - Wing 1
case Encounter.ValeGuardian:
return GetDefaultBuilder(encounter, mainTarget).Build();
case Encounter.SpiritRace:
{
return GetDefaultBuilder(encounter, mainTarget)
.WithResult(new RewardDeterminer(404))
.Build();
}
case Encounter.Gorseval:
return GetDefaultBuilder(encounter, mainTarget).Build();
case Encounter.Sabetha:
Expand Down Expand Up @@ -721,6 +727,19 @@ private IEncounterData GetPvEEncounterData(Encounter encounter, Agent mainTarget
))
.Build();
}
case Encounter.WhisperingShadow:
{
// Tier 1 12.404.224 HP
// Tier 2 14.202.094 HP
// Tier 3 16.941.704 HP
// Tier 4 & CM 19.082.024 HP
return GetDefaultBuilder(encounter, mainTarget)
.WithModes(new ConditionalModeDeterminer(
(gameBuild != null && gameBuild < GameBuilds.KinfallRelease, new ConstantModeDeterminer(EncounterMode.Normal)),
(gameBuild != null && gameBuild >= GameBuilds.KinfallCMRelease, new SkillPresentModeDeterminer(SkillIds.LifeFireCircleCM, EncounterMode.Challenge))
))
.Build();
}
default:
return GetDefaultBuilder(encounter, mainTarget, mergeMainTarget: false).Build();
}
Expand Down
8 changes: 8 additions & 0 deletions EVTCAnalytics/Processing/EncounterIdentifier.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ public Encounter IdentifyEncounter(Agent mainTarget, IReadOnlyList<Agent> agents
return Encounter.Kanaxai;
case SpeciesIds.Eparch:
return Encounter.Eparch;
case SpeciesIds.WhisperingShadow:
return Encounter.WhisperingShadow;
case SpeciesIds.Freezie:
return Encounter.Freezie;
case SpeciesIds.IcebroodConstruct:
Expand Down Expand Up @@ -233,6 +235,8 @@ public Encounter IdentifyEncounter(Agent mainTarget, IReadOnlyList<Agent> agents
{
switch (gadgetBoss.VolatileId)
{
case GadgetIds.EtherealBarrier:
return Encounter.SpiritRace;
case GadgetIds.ConjuredAmalgamate:
return Encounter.ConjuredAmalgamate;
case GadgetIds.TheDragonvoidFinal:
Expand Down Expand Up @@ -347,6 +351,8 @@ public IEnumerable<Encounter> IdentifyPotentialEncounters(ParsedBossData bossDat
return new[] { Encounter.Kanaxai };
case SpeciesIds.Eparch:
return new[] { Encounter.Eparch };
case SpeciesIds.WhisperingShadow:
return new[] { Encounter.WhisperingShadow };
case SpeciesIds.Freezie:
return new[] { Encounter.Freezie };
case SpeciesIds.IcebroodConstruct:
Expand Down Expand Up @@ -385,6 +391,8 @@ public IEnumerable<Encounter> IdentifyPotentialEncounters(ParsedBossData bossDat
return new[] { Encounter.CosmicObservatory };
case SpeciesIds.Cerus:
return new[] { Encounter.TempleOfFebe };
case GadgetIds.EtherealBarrier:
return new[] { Encounter.SpiritRace };
case GadgetIds.ConjuredAmalgamate:
return new[] { Encounter.ConjuredAmalgamate };
case GadgetIds.TheDragonvoidFinal:
Expand Down
Loading