public static int ProgressiveItemsAquired(this LogicObjects.LogicEntry entry, LogicObjects.TrackerInstance Instance, bool Unique = true) { var set = entry.ProgressiveItemSet(Instance).Where(x => x.LogicItemAquired()).ToList(); var setIDs = set.Select(x => x.ID); if (Unique) { return(set.Where(x => x.LogicItemAquired()).Count()); } return(Instance.Logic.Where(x => setIDs.Contains(x.RandomizedItem) && x.Checked).Count()); }
public static int ProgressiveItemsNeeded(this LogicObjects.LogicEntry entry, LogicObjects.TrackerInstance Instance, bool IndexValue = false) { var set = entry.ProgressiveItemSet(Instance); if (set == null) { return(0); } int offset = (IndexValue) ? 0 : 1; return(set.IndexOf(entry) + offset); }
public static bool ItemUseable(this LogicObjects.LogicEntry entry, LogicObjects.TrackerInstance Instance, List <int> usedItems = null) { if (usedItems == null) { usedItems = new List <int>(); } var Set = entry.ProgressiveItemSet(Instance); if (Set == null) { return(NonProgressiveItemUseable()); } var AquiredSet = Set.Where(x => x.LogicItemAquired()).ToList(); var ItemsNeeded = entry.ProgressiveItemsNeeded(Instance); if (AquiredSet.Count() >= ItemsNeeded) { for (var i = 0; i < ItemsNeeded; i++) { usedItems.Add(AquiredSet[i].ID); } return(true); } return(false); bool NonProgressiveItemUseable() { if (entry.LogicItemAquired()) { usedItems.Add(entry.ID); return(true); } else { return(false); } } }
public static bool IsProgressiveItem(this LogicObjects.LogicEntry entry, LogicObjects.TrackerInstance Instance) { return(entry.ProgressiveItemSet(Instance) != null); }