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}"); } } } }
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%"); } } }