Consolidate the suite into one installable Institution mod with toggles

This repo is now the single player-facing mod. It bundles the whole engine and
all three feature layers into one folder -- Core, Contraband, Justice, and Gangs
DLLs plus Contraband's Defs -- with one About.xml and a settings shim that turns
each layer on or off from a checkbox (all on by default). A player installs one
mod (this) and Harmony; no separate Core dependency.

- Source/Institution: the only new code, a settings shim (InstitutionMod +
  InstitutionModSettings) that writes the player's choices into Core's shared
  InstitutionSettings. It owns no gameplay.
- Tools/package.sh: rebuilds the sibling DLLs clean and vendors them + Contraband's
  content in here, so the repo stays a complete drop-in.
- Assemblies/, Defs/, Textures/, Languages/: the vendored, assembled mod.

Still fully modular and splittable: the feature code stays in its own repos and
DLLs (their About.xml files remain), so breaking this back into separate mods is
just shipping them individually -- no code change.
This commit is contained in:
flan
2026-07-15 16:11:56 +00:00
parent 401d34f390
commit 18fc44c728
22 changed files with 340 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!--
A crude shiv, whittled from whatever the cell was furnished with. Stuffable, so its stats come
from the harvested material for free: a wood shiv is feeble, a plasteel one is vicious. This is
the whole point of the harvest-by-damage mechanic: the prison's own construction materials
become the weapon materials, and a luxury block is a worse idea than it looks.
Registered as brewable contraband: a held pawn improvises it (AcquireWorker_Improvise), and the
generic use-during-a-break path equips it (no useWorker; an armed prisoner IS the payload,
and JobGiver_UseContraband only lets the disposed pick it up).
-->
<ThingDef ParentName="BaseMeleeWeapon_Sharp">
<defName>CB_Shiv</defName>
<label>shiv</label>
<description>A blade filed off a bed frame and wrapped in cloth for a grip. Barely a weapon -- but a barely-a-weapon in a cell you thought was empty is a dead guard.</description>
<techLevel>Neolithic</techLevel>
<graphicData>
<texPath>Things/Item/Contraband/Shiv</texPath> <!-- light greys: stuffable, so the material tint reads -->
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<stuffCategories>
<li>Metallic</li>
<li>Woody</li>
<li>Stony</li>
</stuffCategories>
<costStuffCount>15</costStuffCount>
<statBases>
<WorkToMake>1500</WorkToMake>
<Mass>0.4</Mass>
</statBases>
<weaponClasses>
<li>Melee</li>
</weaponClasses>
<comps>
<li Class="Contraband.CompProperties_Contraband">
<concealability>0.75</concealability>
<hideIn>OnBody, InCell</hideIn>
<acquireWorker>Contraband.AcquireWorker_Improvise</acquireWorker>
</li>
</comps>
<tools>
<li>
<label>point</label>
<capacities><li>Stab</li></capacities>
<power>7</power>
<cooldownTime>1.5</cooldownTime>
</li>
<li>
<label>handle</label>
<capacities><li>Blunt</li></capacities>
<power>5</power>
<cooldownTime>1.6</cooldownTime>
</li>
</tools>
</ThingDef>
</Defs>