コード例 #1
0
        public void GenerateKillLoot(ICharacter victim, IContainer container)
        {
            if (victim.Blueprint == null)
            {
                return;
            }
            QuestKillLootTable <int> table;

            if (!Blueprint.KillLootTable.TryGetValue(victim.Blueprint.Id, out table))
            {
                return;
            }
            List <int> killLoots = table.GenerateLoots();

            if (killLoots != null)
            {
                foreach (int loot in killLoots)
                {
                    ItemQuestBlueprint questItemBlueprint = DependencyContainer.Instance.GetInstance <IWorld>().GetItemBlueprint(loot) as ItemQuestBlueprint;
                    if (questItemBlueprint != null)
                    {
                        IItemQuest questItem = DependencyContainer.Instance.GetInstance <IWorld>().AddItemQuest(Guid.NewGuid(), questItemBlueprint, container);
                        Log.Default.WriteLine(LogLevels.Debug, $"Loot objective {loot} generated for {_character.DisplayName}");
                    }
                    else
                    {
                        Log.Default.WriteLine(LogLevels.Warning, $"Loot objective {loot} doesn't exist (or is not quest item) for quest {Blueprint.Id}");
                    }
                }
            }
        }
コード例 #2
0
 public void Update(IItemQuest item)
 {
     if (item.Blueprint == null)
     {
         return;
     }
     if (IsCompleted)
     {
         return;
     }
     foreach (ItemQuestObjective objective in _objectives.OfType <ItemQuestObjective>().Where(x => !x.IsCompleted && x.Blueprint.Id == item.Blueprint.Id))
     {
         objective.Count++;
         _character.Send($"%y%Quest {Blueprint.Title}: {objective.CompletionState}%x%");
         if (IsCompleted)
         {
             _character.Send($"%R%Quest {Blueprint.Title}: complete%x%");
         }
     }
 }