Re-package with the corrections layer bundled; sync the wiki (Rehabilitation page, loop update)

This commit is contained in:
flan
2026-07-15 21:01:28 +00:00
parent 3530100ed5
commit 18a983b7cc
16 changed files with 298 additions and 6 deletions
+36
View File
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!--
The visible reform track, on Core's shared treatment engine (the same one Ward's recovery rides).
A rehab session advances it; it decays without sustained sessions, so rehabilitation has to be
kept up. It is a readout and a pressure, not the parole gate itself: parole keys off the reform
SCORE and the security grade, and the "Ready for parole" alert fires from that.
-->
<HediffDef>
<defName>Institution_Reforming</defName>
<label>reforming</label>
<description>This prisoner is being rehabilitated — worked with toward turning a corner. Progress decays without sustained sessions. When they have reformed enough and their security grade is low enough, they can be paroled back into the colony.</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.55, 0.85, 0.65)</defaultLabelColor>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.0</maxSeverity>
<isBad>false</isBad>
<comps>
<li Class="HediffCompProperties_SeverityPerDay">
<severityPerDay>-0.08</severityPerDay>
</li>
</comps>
<stages>
<li>
<minSeverity>0</minSeverity>
<label>reforming</label>
</li>
<li>
<minSeverity>0.999</minSeverity>
<label>reformed</label>
</li>
</stages>
</HediffDef>
</Defs>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!-- Distinct defNames from the interaction modes: [DefOf] binds by name, so a job and a mode that
shared one name could not both be reached. -->
<JobDef>
<defName>Institution_RehabilitateJob</defName>
<driverClass>Contraband.JobDriver_Rehabilitate</driverClass>
<reportString>rehabilitating TargetA.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
<JobDef>
<defName>Institution_ParoleJob</defName>
<driverClass>Contraband.JobDriver_Parole</driverClass>
<reportString>paroling TargetA.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
</Defs>
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!--
Two non-exclusive prisoner modes, exactly the shape Ward's psychiatric-care mode uses (and Prison
Labor's seven). Non-exclusive so they STACK: set Rehabilitate to run the reform programme, and
Parole so a warden releases them the moment they are eligible; or set Rehabilitate alone and
parole by hand when the alert fires.
-->
<PrisonerInteractionModeDef>
<defName>Institution_Rehabilitate</defName>
<label>rehabilitate</label>
<listOrder>120</listOrder>
<isNonExclusiveInteraction>true</isNonExclusiveInteraction>
<mustBeAwake>false</mustBeAwake>
<allowOnWildMan>false</allowOnWildMan>
<allowInClassicIdeoMode>true</allowInClassicIdeoMode>
</PrisonerInteractionModeDef>
<PrisonerInteractionModeDef>
<defName>Institution_Parole</defName>
<label>parole when reformed</label>
<listOrder>210</listOrder>
<isNonExclusiveInteraction>true</isNonExclusiveInteraction>
<mustBeAwake>false</mustBeAwake>
<allowOnWildMan>false</allowOnWildMan>
<allowInClassicIdeoMode>true</allowInClassicIdeoMode>
</PrisonerInteractionModeDef>
</Defs>
+46
View File
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<ThoughtDef>
<defName>Institution_Rehabilitated</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>2</durationDays>
<stackLimit>3</stackLimit>
<stages>
<li>
<label>counselled</label>
<description>Someone sat with me and talked it through. Maybe I can turn this around.</description>
<baseMoodEffect>5</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Institution_Paroled</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>8</durationDays>
<stackLimit>1</stackLimit>
<stages>
<li>
<label>paroled</label>
<description>They gave me a second chance and let me back in. I mean to earn it.</description>
<baseMoodEffect>12</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>Institution_ReformNeglected</defName>
<thoughtClass>Thought_Memory</thoughtClass>
<durationDays>3</durationDays>
<stackLimit>4</stackLimit>
<stages>
<li>
<label>left to rot</label>
<description>They said they would help me change, then forgot I exist. Why should I bother?</description>
<baseMoodEffect>-6</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!--
New WorkGiver subclasses, not patches: they inherit WorkGiver_Warden.ShouldSkip (so they respect
Prison Commons areas for free) and are invisible to Custom Prisoner Interactions, which only
patches the named vanilla warden givers.
-->
<WorkGiverDef>
<defName>Institution_WardenRehabilitate</defName>
<label>rehabilitate prisoner</label>
<giverClass>Contraband.WorkGiver_Warden_Rehabilitate</giverClass>
<workType>Warden</workType>
<verb>rehabilitate</verb>
<gerund>rehabilitating</gerund>
<priorityInType>65</priorityInType>
<requiredCapacities>
<li>Talking</li>
<li>Hearing</li>
</requiredCapacities>
</WorkGiverDef>
<WorkGiverDef>
<defName>Institution_WardenParole</defName>
<label>parole prisoner</label>
<giverClass>Contraband.WorkGiver_Warden_Parole</giverClass>
<workType>Warden</workType>
<verb>parole</verb>
<gerund>paroling</gerund>
<priorityInType>85</priorityInType>
<requiredCapacities>
<li>Talking</li>
</requiredCapacities>
</WorkGiverDef>
</Defs>