}
// have any of the previous sequences interacted with the issuer?
- var previousSequences =
+ var previousSteps =
quest.AllSequences()
.Where(x => x.Sequence > 0 // quest accept doesn't ever put us into a mount
&& x.Sequence < sequence.Sequence)
+ .SelectMany(x => x.Steps)
.ToList();
- if (previousSequences.SelectMany(x => x.Steps).All(x => x.DataId != mountConfiguration.IssuerDataId))
+ if (!previousSteps.Any(x => x.DataId != null && mountConfiguration.IssuerDataIds.Contains(x.DataId.Value)))
{
// this quest hasn't given us a mount yet
logger.LogInformation("Haven't talked to mount NPC for this allied society quest; {Aetheryte}", mountConfiguration.ClosestAetheryte);
public ReadOnlyDictionary<ushort, AlliedSocietyMountConfiguration> Mounts { get; } =
new Dictionary<ushort, AlliedSocietyMountConfiguration>
{
- { 66, new(1016093, EAetheryteLocation.SeaOfCloudsOkZundu) },
- { 79, new(1017031, EAetheryteLocation.DravanianForelandsAnyxTrine) },
- { 88, new(1017470, EAetheryteLocation.ChurningMistsZenith) },
- { 89, new(1017322, EAetheryteLocation.ChurningMistsZenith) },
- { 147, new(1024777, EAetheryteLocation.FringesPeeringStones) },
- { 369, new(1051798, EAetheryteLocation.KozamaukaDockPoga) },
+ { 66, new([1016093], EAetheryteLocation.SeaOfCloudsOkZundu) },
+ { 79, new([1017031], EAetheryteLocation.DravanianForelandsAnyxTrine) },
+ { 88, new([1017470, 1017432], EAetheryteLocation.ChurningMistsZenith) },
+ { 89, new([1017322], EAetheryteLocation.ChurningMistsZenith) },
+ { 147, new([1024777], EAetheryteLocation.FringesPeeringStones) },
+ { 369, new([1051798], EAetheryteLocation.KozamaukaDockPoga) },
}.AsReadOnly();
public EAlliedSociety GetCommonAlliedSocietyTurnIn(ElementId elementId)
}
}
-public sealed record AlliedSocietyMountConfiguration(uint IssuerDataId, EAetheryteLocation ClosestAetheryte);
+public sealed record AlliedSocietyMountConfiguration(List<uint> IssuerDataIds, EAetheryteLocation ClosestAetheryte);