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: