Re-package the aggregate: bundle Ward + ship the policing layer

Fold Ward into the single Institution install as its psychiatric-care
layer. package.sh now builds Ward clean and vendors Ward.dll plus its
defs and textures alongside the other layers, and the settings shim
gains a Ward (psychiatric care) checkbox that writes the shared
InstitutionSettings.ward flag.

Re-assembling also carries in Justice's now-shipping policing defs (the
constable work type and crime thoughts), so the aggregate finally
bundles colony crime and the weighed arrest as well. README updated to
five layers over one Core with policing shipped and Ward folded in;
adds the changelog, the Workshop preview, and the preview generator.
This commit is contained in:
flan
2026-07-15 20:10:56 +00:00
parent bd96c2c516
commit 2d46fef192
21 changed files with 1135 additions and 6 deletions
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!--
The whole mod hangs off this def.
RimWorld.GuestStatus is a compiled 3-value enum (Guest / Prisoner / Slave). A mod cannot
add a fourth. That is exactly why Hospitality carries ~74 Harmony patches: it wants a pawn
who is in your colony but is not your colonist, the enum has no slot for one, so it keeps a
shadow guest system alive by patching bed validity, allowed areas and the work JobGiver.
Ward does not pay that tax. A committed pawn IS a prisoner in vanilla's own sense of the
word. Arresting your own colonist already performs the colonist to prisoner transition.
All Ward adds is a new *mode* to hold them under, and PrisonerInteractionModeDef is a Def,
not an enum. Prison Labor already proves this works: it ships seven of them.
Non-exclusive, so it stacks rather than competing for the radio button. That is what lets
Ward coexist with Prison Labor's work modes and with Custom Prisoner Interactions instead
of fighting them for the same slot.
-->
<PrisonerInteractionModeDef>
<defName>Ward_PsychiatricCare</defName>
<label>psychiatric care</label>
<listOrder>150</listOrder> <!-- between ReduceResistance (100) and Release (200) -->
<isNonExclusiveInteraction>true</isNonExclusiveInteraction>
<mustBeAwake>false</mustBeAwake>
<allowOnWildMan>false</allowOnWildMan>
<allowInClassicIdeoMode>true</allowInClassicIdeoMode>
</PrisonerInteractionModeDef>
</Defs>