diff --git a/ArcdpsLogManager/ArcdpsLogManager.csproj b/ArcdpsLogManager/ArcdpsLogManager.csproj index 3022817e..89578f74 100644 --- a/ArcdpsLogManager/ArcdpsLogManager.csproj +++ b/ArcdpsLogManager/ArcdpsLogManager.csproj @@ -17,7 +17,7 @@ Each new log data update causes a revision increase. See LogDataUpdater for the updates. --> - 1.11.1.4 + 1.11.1.5 diff --git a/ArcdpsLogManager/Logs/Updates/LogDataUpdater.cs b/ArcdpsLogManager/Logs/Updates/LogDataUpdater.cs index 73559a7c..14b5b5b2 100644 --- a/ArcdpsLogManager/Logs/Updates/LogDataUpdater.cs +++ b/ArcdpsLogManager/Logs/Updates/LogDataUpdater.cs @@ -205,6 +205,9 @@ x.Profession is Profession.Thief or Profession.Engineer or Profession.Ranger && log.Encounter == Encounter.Other && log.MapId == MapIds.LonelyTower, "Added support for Eparch in the Lonely Tower fractal"), + new LogUpdate(log => log.ParsingVersion < new Version(1, 11, 1, 5) + && log.Encounter == Encounter.SoullessHorror, + "Fix detection for Soulless Horror in case the encounter resets before all players are dead.") // When adding a new update, you need to increase the revision (last value) of the version in the .csproj file // unless the version changes more significantly, in that case it can be reset to 0. }; diff --git a/EVTCAnalytics/Processing/EncounterDataProvider.cs b/EVTCAnalytics/Processing/EncounterDataProvider.cs index 8a207531..950bb013 100644 --- a/EVTCAnalytics/Processing/EncounterDataProvider.cs +++ b/EVTCAnalytics/Processing/EncounterDataProvider.cs @@ -205,12 +205,24 @@ private IEncounterData GetPvEEncounterData(Encounter encounter, Agent mainTarget // Raids - Wing 5 case Encounter.SoullessHorror: { - return GetDefaultBuilder(encounter, mainTarget) - .WithResult(new AgentBuffGainedDeterminer(mainTarget, SkillIds.SoullessHorrorDetermined)) + var soullessHorror = GetTargetBySpeciesId(agents, SpeciesIds.SoullessHorror); + var desmina = GetTargetBySpeciesId(agents, SpeciesIds.Desmina); + + var targets = new Agent[] { soullessHorror, desmina }.Where(x => x != null).ToList(); + + return GetDefaultBuilder(encounter, targets) + .WithResult(new ConditionalResultDeterminer( + (desmina == null, new ConstantResultDeterminer(EncounterResult.Failure)), + (soullessHorror != null && desmina != null, new AllCombinedResultDeterminer( + new AgentBuffGainedDeterminer(soullessHorror, SkillIds.SoullessHorrorDetermined), + new NPCSpawnDeterminer(SpeciesIds.Desmina) + )) + )) // Necrosis is applied faster in Challenge Mode. It is first removed and then reapplied // so we check the remaining time of the removed buff. .WithModes(new RemovedBuffStackRemainingTimeModeDeterminer(SkillIds.Necrosis, EncounterMode.Challenge, 23000, EncounterMode.Normal, 18000)) + .WithTargets(targets) .Build(); } case Encounter.RiverOfSouls: