Exemplo n.º 1
0
        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;
                }
            }
        }