private void CompleteQuestsAtLocation() { foreach (var quest in CurrentLocation.AvailibleQuests) { QuestStatus questToComplete = CurrentPlayer.Quests.FirstOrDefault(q => q.PlayerQuest.ID == quest.ID && !q.IsComplete); if (questToComplete != null && CurrentPlayer.Inventory.HasAllThisItems(quest.Requirements)) { CurrentPlayer.RemoveItemsFromInventory(quest.Requirements); _messageBroker.RaiseMessage($"\n You completed '{quest.Name}' quest!"); _messageBroker.RaiseMessage($"You got {quest.RewardCredits} credits"); CurrentPlayer.ReciveCredits(quest.RewardCredits); if (quest.RewardItems != null) { _messageBroker.RaiseMessage("Also you got:"); foreach (var item in quest.RewardItems) { _messageBroker.RaiseMessage($"{item.Quantity} x {ItemFactory.GetItemNameById(item.ItemId)}"); CurrentPlayer.AddItemToInventory(ItemFactory.CreateItem(item.ItemId)); } } _messageBroker.RaiseMessage($"You got {quest.RewardExperience} exp"); CurrentPlayer.AddExp(quest.RewardExperience); questToComplete.IsComplete = true; } } }