public static List <int> RemoveInvalidIDListEntries(this List <int> starterList, bool checkPlayerInventories = true, bool checkUnlocked = true) { List <int> returnList = new List <int>(); returnList.AddRange(starterList); for (int i = returnList.Count; i > 0; i--) { int ID = returnList[i - 1]; if (checkPlayerInventories) { if (GameManager.Instance.PrimaryPlayer && GameManager.Instance.PrimaryPlayer.HasPickupID(ID)) { returnList.RemoveAt(i - 1); } else if (GameManager.Instance.SecondaryPlayer && GameManager.Instance.SecondaryPlayer.HasPickupID(ID)) { returnList.RemoveAt(i - 1); } } if (checkUnlocked) { PickupObject itemByID = PickupObjectDatabase.GetById(ID); if (!itemByID.PrerequisitesMet()) { returnList.RemoveAt(i - 1); } } } return(returnList); }