Files
institution/Defs/Medication_Ward.xml
T
flan 2d46fef192 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.
2026-07-15 20:10:56 +00:00

135 lines
4.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!--
The "locked cabinet of sedatives" in the treatment station's description, made real. Sedation is
the other lever a ward has: not therapy, but a way to buy calm through a crisis. It costs a dose
and a groggy, useless day from the patient — it settles a breakdown, it does not treat what
causes them. A warden administers one to a patient at the edge of a break.
-->
<ThingDef ParentName="ResourceBase">
<defName>Ward_Sedative</defName>
<label>sedative</label>
<description>A measured dose of fast-acting sedative. A warden can administer one to a patient on the edge of a breakdown to buy calm — at the cost of a groggy, near-useless day. It settles a crisis; it does not treat one.</description>
<graphicData>
<!-- Placeholder: reuse vanilla industrial medicine's art until Ward ships its own. -->
<texPath>Things/Item/Resource/Medicine/MedicineIndustrial</texPath>
<graphicClass>Graphic_StackCount</graphicClass>
</graphicData>
<stackLimit>25</stackLimit>
<healthAffectsPrice>false</healthAffectsPrice>
<statBases>
<MarketValue>14</MarketValue>
<Mass>0.05</Mass>
<Flammability>0.7</Flammability>
<DeteriorationRate>2</DeteriorationRate>
</statBases>
<thingCategories>
<li>Medicine</li>
</thingCategories>
<tradeTags>
<li>Medicine</li>
</tradeTags>
</ThingDef>
<RecipeDef>
<defName>Ward_MakeSedative</defName>
<label>make sedatives</label>
<description>Synthesize a batch of sedatives from neutroamine.</description>
<jobString>Making sedatives.</jobString>
<workAmount>800</workAmount>
<workSpeedStat>DrugSynthesisSpeed</workSpeedStat>
<effectWorking>Cook</effectWorking>
<soundWorking>Recipe_Drug</soundWorking>
<workSkill>Intellectual</workSkill>
<ingredients>
<li>
<filter>
<thingDefs>
<li>Neutroamine</li>
</thingDefs>
</filter>
<count>1</count>
</li>
</ingredients>
<fixedIngredientFilter>
<thingDefs>
<li>Neutroamine</li>
</thingDefs>
</fixedIngredientFilter>
<products>
<Ward_Sedative>4</Ward_Sedative>
</products>
<recipeUsers>
<li>DrugLab</li>
</recipeUsers>
<researchPrerequisite>DrugProduction</researchPrerequisite>
</RecipeDef>
<!--
The sedated state: very calm (a large negative break-threshold offset = breaks far less), but
groggy and barely productive, and gone in about a day. Deliberately a bad hediff — it is a crutch
with a cost, not free stability.
-->
<HediffDef>
<defName>Ward_Sedated</defName>
<label>sedated</label>
<description>Dosed with a sedative. Very unlikely to break — and too groggy to do much of anything.</description>
<hediffClass>HediffWithComps</hediffClass>
<defaultLabelColor>(0.6, 0.6, 0.9)</defaultLabelColor>
<scenarioCanAdd>false</scenarioCanAdd>
<isBad>true</isBad>
<maxSeverity>1.0</maxSeverity>
<comps>
<!-- About one in-game day from a full dose to nothing. -->
<li Class="HediffCompProperties_SeverityPerDay">
<severityPerDay>-1.0</severityPerDay>
</li>
</comps>
<stages>
<li>
<statOffsets>
<!-- Negative = breaks at a much lower mood = breaks far less. -->
<MentalBreakThreshold>-0.40</MentalBreakThreshold>
</statOffsets>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.25</offset>
</li>
<li>
<capacity>Moving</capacity>
<offset>-0.15</offset>
</li>
</capMods>
</li>
</stages>
</HediffDef>
<!--
A NEW warden work-giver, above treatment in priority: a crisis pre-empts a counselling session.
Like the treatment giver it inherits WorkGiver_Warden.ShouldSkip, so it respects prison-commons
areas for free.
-->
<WorkGiverDef>
<defName>Ward_WardenAdministerSedative</defName>
<label>administer sedative</label>
<giverClass>Ward.WorkGiver_Warden_Sedate</giverClass>
<workType>Warden</workType>
<verb>sedate</verb>
<gerund>sedating</gerund>
<priorityInType>90</priorityInType>
<requiredCapacities>
<li>Manipulation</li>
</requiredCapacities>
</WorkGiverDef>
<JobDef>
<defName>Ward_AdministerSedative</defName>
<driverClass>Ward.JobDriver_AdministerSedative</driverClass>
<reportString>administering a sedative to TargetA.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
</Defs>