static bool Prefix(ref bool __result, CompAssignableToPawn_Bed __instance, Pawn pawn) { if (!Helpers.ShouldRunForPawn(pawn)) { return(true); } // This is only used to display pawn list, so use the pawn ownership on the current map instead of their current bed var pawnBeds = Helpers.PawnBedsOnMap(pawn, Find.CurrentMap); __result = pawnBeds.Any(); return(false); }
static bool Prefix(CompAssignableToPawn_Bed __instance, ref List <Pawn> ___assignedPawns, ThingWithComps ___parent) { if (Scribe.mode != LoadSaveMode.PostLoadInit) { return(true); } var unreciprocatedOwners = ___assignedPawns .Where(p => p?.ownership?.OwnedBed != ___parent) .ToList(); if (unreciprocatedOwners.Count > 0) { if (unreciprocatedOwners.Any(p => p.IsFreeColonist)) { return(false); } ___assignedPawns.RemoveAll(p => p?.IsFreeColonist == false && unreciprocatedOwners.Contains(p)); } return(true); }