public static Pawn UsablePackAnimalWithTheMostFreeSpace(Pawn pawn) { IEnumerable <Pawn> enumerable = GiveToPackAnimalUtility.CarrierCandidatesFor(pawn); Pawn pawn2 = null; float num = 0f; foreach (Pawn pawn3 in enumerable) { if (pawn3.RaceProps.packAnimal && pawn3 != pawn && pawn.CanReach(pawn3, PathEndMode.Touch, Danger.Deadly, false, TraverseMode.ByPawn)) { float num2 = MassUtility.FreeSpace(pawn3); if (pawn2 == null || num2 > num) { pawn2 = pawn3; num = num2; } } } return(pawn2); }
public static Pawn UsablePackAnimalWithTheMostFreeSpace(Pawn pawn) { IEnumerable <Pawn> enumerable = CarrierCandidatesFor(pawn); Pawn pawn2 = null; float num = 0f; foreach (Pawn item in enumerable) { if (item.RaceProps.packAnimal && item != pawn && pawn.CanReach(item, PathEndMode.Touch, Danger.Deadly)) { float num2 = MassUtility.FreeSpace(item); if (pawn2 == null || num2 > num) { pawn2 = item; num = num2; } } } return(pawn2); }
public static Pawn PackAnimalWithTheMostFreeSpace(Map map, Faction faction) { List <Pawn> list = map.mapPawns.SpawnedPawnsInFaction(faction); Pawn pawn = null; float num = 0f; for (int i = 0; i < list.Count; i++) { if (list[i].RaceProps.packAnimal) { float num2 = MassUtility.FreeSpace(list[i]); if (pawn == null || num2 > num) { pawn = list[i]; num = num2; } } } return(pawn); }
public static int CountToPickUpUntilOverEncumbered(Pawn pawn, Thing thing) { return(Mathf.FloorToInt(MassUtility.FreeSpace(pawn) / thing.GetStatValue(StatDefOf.Mass, true))); }
public static bool WillBeOverEncumberedAfterPickingUp(Pawn pawn, Thing thing, int count) { return(MassUtility.FreeSpace(pawn) < (float)count * thing.GetStatValue(StatDefOf.Mass, true)); }