public static bool TryFindBestBetterStorageFor(Thing t, Pawn carrier, Map map, StoragePriority currentPriority, Faction faction, out IntVec3 foundCell, out IHaulDestination haulDestination, bool needAccurateResult = true) { IntVec3 invalid = IntVec3.Invalid; StoragePriority storagePriority = StoragePriority.Unstored; if (StoreUtility.TryFindBestBetterStoreCellFor(t, carrier, map, currentPriority, faction, out invalid, needAccurateResult)) { storagePriority = invalid.GetSlotGroup(map).Settings.Priority; } IHaulDestination haulDestination2; if (!StoreUtility.TryFindBestBetterNonSlotGroupStorageFor(t, carrier, map, currentPriority, faction, out haulDestination2)) { haulDestination2 = null; } if (storagePriority == StoragePriority.Unstored && haulDestination2 == null) { foundCell = IntVec3.Invalid; haulDestination = null; return(false); } if (haulDestination2 != null && (storagePriority == StoragePriority.Unstored || haulDestination2.GetStoreSettings().Priority > storagePriority)) { foundCell = IntVec3.Invalid; haulDestination = haulDestination2; return(true); } foundCell = invalid; haulDestination = invalid.GetSlotGroup(map).parent; return(true); }