Stops colonists from eating in rooms that don’t belong to them!
Get Out Of My Chair! Mod features
This mini-mod adds a toggle on chairs and sofas that allows you to specify them as Public, Private, or Disallowed for eating. When set to Private, colonists will only use the specified chair to eat at if their assigned bed is in the same room as the chair.
For convenience, there is also a toggle on tables to set the dining policy of all chairs adjacent to it.
Get Out Of My Chair! uses a single transpiler on Toils_Ingest.CarryIngestibleToChewSpot() to alter the validator pawns use to determine whether a chair is a valid place to sit at to eat. This should add minimal overhead that is only incurred when a pawn picks up a meal to eat and decides where it can sit to eat.
Get Out Of My Chair! also uses three postfixes on CompGatherSpot.CompGetGizmosExtra(), Building.GetGizmos(), and Building.ExposeData() to display the dining policy toggle and save and load chair settings.
This mod operates on chairs instead of tables because the logic in Toils_Ingest.CarryIngestibleToChewSpot() actually searches for unreserved chairs first before validating that they are in fact adjacent to a table surface. Policy data is kept in a single Dictionary<int, enum> that uses the chair’s thingIDNumber as the key for minimal memory footprint.
Get Out Of My Chair! is potentially incompatible with Table Diner, which appears to use a destructive prefix on the vanilla chair-finding code.
Furniture in the preview image is from Eccentric Tech – Spacer Furniture.