using Godot; using System; using System.Collections.Generic; using System.Linq; using Babushka.scripts.CSharp.Common.Inventory; using Babushka.scripts.CSharp.Common.Quest; public partial class DetectInventoryContains : QuestFulfillmentBase { [Export(PropertyHint.ArrayType)] private ItemInstance[] _itemsToContain = null!; public override void _Ready() { QuestManager.Instance!.QuestsChanged += CheckInventory; InventoryManager.Instance.playerInventory.InventoryContentsChanged += CheckInventory; CheckInventory(); } public override void _ExitTree() { QuestManager.Instance!.QuestsChanged -= CheckInventory; InventoryManager.Instance.playerInventory.InventoryContentsChanged -= CheckInventory; } private void CheckInventory() { if (IsQuestActive() && InventoryManager.Instance.playerInventory.HasItems(_itemsToContain)) { Fulfill(); } } }