public static List <BlueprintUnit> SelectUnits(int cr, UnitTag tag) { int minCR = cr - 6; List <BlueprintUnit> list = BlueprintRoot.Instance.RE.UnitsForRandomEncounters.Where <BlueprintUnit>((Func <BlueprintUnit, bool>)(u => OwlcatRESelector.ContainsTag(u.GetComponent <AddTags>(), tag))).Where <BlueprintUnit>((Func <BlueprintUnit, bool>)(u => OwlcatRESelector.GetCR(u) >= minCR)).ToList <BlueprintUnit>(); int xp = OwlcatRESelector.GetXp(cr); int maxTotalXp = OwlcatRESelector.GetXp(cr + 1); int currentXp = 0; List <BlueprintUnit> blueprintUnitList = new List <BlueprintUnit>(); while (currentXp < xp) { list.RemoveAll((Predicate <BlueprintUnit>)(u => OwlcatRESelector.GetXp(u) > maxTotalXp - currentXp)); if (list.Count != 0) { BlueprintUnit unit = list.Random <BlueprintUnit>(); currentXp += OwlcatRESelector.GetXp(unit); blueprintUnitList.Add(unit); } else { break; } } return(blueprintUnitList); }
public static int GetXp(BlueprintUnit unit) { return(OwlcatRESelector.GetXp(OwlcatRESelector.GetCR(unit))); }