protected virtual void SetUserEncounter(WaitableTask <UserEncounter> result, User user, TaskResult <IMenuEncountersInfo> encounters, int recordNumber) { if (encounters.IsError()) { result.SetError(encounters.Exception); return; } foreach (var encounter in encounters.Value.GetEncounters()) { var typedMetadata = encounter.GetLatestTypedMetada(); if (typedMetadata.Value.RecordNumber != recordNumber) { continue; } ImageHolder.HoldImage(typedMetadata.Value.Sprite); var userEncounter = EncounterReader.GetUserEncounter(user, typedMetadata.Value, encounter.Status, typedMetadata.Key); userEncounter.CopyValueWhenCompleted(result); return; } result.SetError(new Exception("Could not find an encounter with the given record number.")); }