protected override void FinishedRemoving() { pawn.Map.GetComponent <PlacedBedsMapComponent>().placedBeds.Remove(pawn); Thing minifiedThing = Building.Uninstall(); pawn.inventory.innerContainer.TryAdd(minifiedThing.SplitOff(1)); if (HomeBedComp.Get(pawn, out Building_Bed bed)) { pawn?.ownership?.ClaimBedIfNonMedical(bed); } }
//public override IEnumerable<Gizmo> GetGizmos() public static void Postfix(ref IEnumerable <Gizmo> __result, Building_Bed __instance) { if (HomeBedComp.Get(__instance, out Pawn traveler)) { if (traveler != null) { List <Gizmo> result = __result.ToList(); result.Add(new BedOwnerGizmo(traveler, "TD.TravelerOwned")); __result = result; } } }
//public override void SpawnSetup(Map map, bool respawningAfterLoad) public static void Postfix(Pawn __instance, Map map, bool respawningAfterLoad) { if (respawningAfterLoad) { return; } if (map?.IsPlayerHome ?? false) { if (HomeBedComp.Get(__instance, out Building_Bed homeBed) && homeBed?.Map == map && !homeBed.ForPrisoners && (Settings.Get().reclaimAggresively || RestUtility.IsValidBedFor(homeBed, __instance, __instance, false, true))) { Log.Message($"Re-claming Home bed {homeBed} for {__instance}"); __instance.ownership?.ClaimBedIfNonMedical(homeBed); } Log.Message($"Removing Home beds for {__instance}"); HomeBedComp.Remove(__instance); } }
public static void Prefix(Pawn __instance) { if (!__instance.IsColonistPlayerControlled) { return; } if (__instance.ownership?.OwnedBed is Building_Bed bed) { if (__instance.Map?.IsPlayerHome ?? false) { HomeBedComp.Set(__instance, bed); Log.Message($"Saving Home bed {bed} for {__instance}"); } if (Settings.Get().unassignOnExit) { __instance.ownership.UnclaimBed(); } } }
public static void Prefix(Building_Bed __instance) { Log.Message($"Removing {__instance}"); HomeBedComp.Remove(__instance); }