public static bool Check(int index, int type) { using (new Profiler(nameof(KeyItemCheck))) { NWPlayer player = _.GetPCSpeaker(); NWObject talkingTo = _.OBJECT_SELF; int count = 1; List <int> requiredKeyItemIDs = new List <int>(); int keyItemID = talkingTo.GetLocalInt($"KEY_ITEM_{index}_REQ_{count}"); while (keyItemID > 0) { requiredKeyItemIDs.Add(keyItemID); count++; keyItemID = talkingTo.GetLocalInt($"KEY_ITEM_{index}_REQ_{count}"); } // Type 1 = ALL // Anything else = ANY return(type == 1 ? KeyItemService.PlayerHasAllKeyItems(player, requiredKeyItemIDs.ToArray()) : KeyItemService.PlayerHasAnyKeyItem(player, requiredKeyItemIDs.ToArray())); } }