/// <inheritdoc /> public void Initialize(IPlayerEntity player) { IEnumerable <QuestInfo> playerQuests = _database.Quests.Where(x => x.CharacterId == player.PlayerData.Id) .AsNoTracking() .AsEnumerable() .Select(x => { IQuestScript questScript = _gameResources.Quests.GetValueOrDefault(x.QuestId); if (questScript == null) { return(null); } var quest = new QuestInfo(x.QuestId, x.CharacterId, questScript, x.Id) { IsChecked = x.IsChecked, IsFinished = x.Finished, StartTime = x.StartTime, IsPatrolDone = x.IsPatrolDone }; if (questScript.EndConditions.Monsters != null && questScript.EndConditions.Monsters.Any()) { quest.Monsters = new Dictionary <int, short> { { _gameResources.GetDefinedValue(questScript.EndConditions.Monsters.ElementAtOrDefault(0)?.Id), (short)x.MonsterKilled1 }, { _gameResources.GetDefinedValue(questScript.EndConditions.Monsters.ElementAtOrDefault(1)?.Id), (short)x.MonsterKilled2 } }; } return(quest); }) .Where(x => x != null); player.QuestDiary = new QuestDiaryComponent(playerQuests); }