/// <summary>Whether the given Item is needed for an active Quest</summary> /// <param name="item"></param> /// <returns></returns> public bool RequiresItem(Asda2ItemId item) { for (int index1 = 0; index1 < m_RequireItemsQuests.Count; ++index1) { Quest requireItemsQuest = m_RequireItemsQuests[index1]; for (int index2 = 0; index2 < requireItemsQuest.Template.CollectableItems.Length; ++index2) { Asda2ItemStackDescription collectableItem = requireItemsQuest.Template.CollectableItems[index2]; if (collectableItem.ItemId == item) { return(requireItemsQuest.CollectedItems[index2] < collectableItem.Amount); } } for (int index2 = 0; index2 < requireItemsQuest.Template.CollectableSourceItems.Length; ++index2) { Asda2ItemStackDescription collectableSourceItem = requireItemsQuest.Template.CollectableSourceItems[index2]; if (collectableSourceItem.ItemId == item) { return(requireItemsQuest.CollectedSourceItems[index2] < collectableSourceItem.Amount); } } } return(false); }
/// <summary> /// Is called when the owner of this QuestLog receives or looses the given amount of Items /// </summary> /// <param name="item"></param> internal void OnItemAmountChanged(Item item, int delta) { for (int index1 = 0; index1 < this.m_RequireItemsQuests.Count; ++index1) { Quest requireItemsQuest = this.m_RequireItemsQuests[index1]; for (int index2 = 0; index2 < requireItemsQuest.Template.CollectableItems.Length; ++index2) { Asda2ItemStackDescription collectableItem = requireItemsQuest.Template.CollectableItems[index2]; if (collectableItem.ItemId == item.Template.ItemId) { int collectedItem = requireItemsQuest.CollectedItems[index2]; int num = collectedItem + delta; bool flag = collectedItem < collectableItem.Amount || num < collectableItem.Amount; requireItemsQuest.CollectedItems[index2] = num; if (flag) { QuestHandler.SendUpdateItems(item.Template.ItemId, delta, this.m_Owner); requireItemsQuest.UpdateStatus(); break; } break; } } for (int index2 = 0; index2 < requireItemsQuest.Template.CollectableSourceItems.Length; ++index2) { Asda2ItemStackDescription collectableSourceItem = requireItemsQuest.Template.CollectableSourceItems[index2]; if (collectableSourceItem.ItemId == item.Template.ItemId) { int collectedSourceItem = requireItemsQuest.CollectedSourceItems[index2]; int num = collectedSourceItem + delta; bool flag = collectedSourceItem < collectableSourceItem.Amount || num < collectableSourceItem.Amount; requireItemsQuest.CollectedSourceItems[index2] = num; if (flag) { QuestHandler.SendUpdateItems(item.Template.ItemId, delta, this.m_Owner); requireItemsQuest.UpdateStatus(); break; } break; } } } }