Aggregate the whole suite wiki onto the Institution page
Wiki/Home.md is the suite's front door; every layer's wiki now mirrors here under Wiki/<layer>/ (core, contraband, justice, gangs, ward), so the whole suite reads in one place with the index linking to the local pages. The layer repos stay canonical -- Tools/sync-wiki.sh refreshes the aggregated copy on demand. The README's main page points to it.
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
# Joining a gang
|
||||
|
||||
*How Gangs decides who runs with a crew — and why a well-run colony keeps almost everyone out.*
|
||||
|
||||
Membership is not random, and it is not a mood event. A pawn joins a gang only when their **disposition
|
||||
and their circumstances line up at once** — the same `Nature × Nurture` engine that drives every other
|
||||
behaviour in the Institution suite. This page covers the exact test, why the bar is set where it is,
|
||||
and how you keep pawns on the right side of it.
|
||||
|
||||
## The rule
|
||||
|
||||
```
|
||||
WouldJoin(pawn) == Propensity.Nature(pawn) * Propensity.Nurture(pawn) >= JoinThreshold
|
||||
JoinThreshold = 0.9
|
||||
```
|
||||
|
||||
Two gates before the maths even runs:
|
||||
|
||||
| Guard | Effect |
|
||||
|---|---|
|
||||
| `pawn == null` | never joins |
|
||||
| not `RaceProps.Humanlike` | never joins — animals and mechs are out |
|
||||
|
||||
Then it is one line: multiply the pawn's **Nature** by their **Nurture** and compare to **0.9**. There
|
||||
is no dice roll here. `WouldJoin` is a deterministic threshold on the two propensity scores, so the
|
||||
same pawn in the same situation always gives the same answer — join, or don't. (This is different from
|
||||
Core's `Propensity.Would(...)`, which *is* a seeded random roll used for one-off acts like a piss
|
||||
spree. Gang membership is a standing condition, so it uses the raw product.)
|
||||
|
||||
### The two halves
|
||||
|
||||
Both terms come from **Institution: Core** — see Core's own documentation for the full tables — but you
|
||||
need the shape of them to understand the bar:
|
||||
|
||||
- **Nature** (`0..1`) is *who the pawn is*: a base of `0.05`, plus trait weights, clamped to `[0, 1]`.
|
||||
Psychopath `+0.45`, Bloodlust `+0.35`, Kleptomaniac `+0.40`, Greedy `+0.25`, Abrasive `+0.15`;
|
||||
and it goes **down** for Kind `−0.30` or Ascetic `−0.15`. This is fixed at pawn creation and barely
|
||||
moves.
|
||||
- **Nurture** (a multiplier, `~≥ 0.4`, base `1.0`) is *the situation you put them in*: a floored mood
|
||||
multiplies it up hard (roughly `×2.5` under 0.20 mood, `×1.6` under 0.35), being held while
|
||||
miserable adds more (`×1.4`), a hardened record (negative reform) raises it, and — critically —
|
||||
**deterrence pulls it down** (`×Lerp(1.3, 0.7, deterrence)`, neutral `1.0` at baseline order, so a
|
||||
high-deterrence colony scales nurture toward `0.7`). This is the half you control.
|
||||
|
||||
## Why the bar is high
|
||||
|
||||
`0.9` is a deliberately steep threshold. From the source, in its own words:
|
||||
|
||||
> A high bar, on purpose: gangs are a symptom of a badly-run colony, not furniture. A healthy Rimworld
|
||||
> — content pawns, an orderly colony — grows few gangs, if any.
|
||||
|
||||
Because the two terms are **multiplied**, both have to be substantial for the product to clear `0.9`.
|
||||
A nasty pawn in a happy, policed colony has a low nurture and stays out. A saintly pawn in a hellhole
|
||||
has a near-zero nature and stays out. You only get a gang when a genuinely disposed pawn is *also*
|
||||
neglected or unpoliced — foul streak **and** bad situation, together.
|
||||
|
||||
That is the design speaking through the arithmetic: a gang is never bad luck. It is feedback.
|
||||
|
||||
## Worked examples
|
||||
|
||||
All numbers below use Core's documented factors; the intermediate nurture figures are rounded to show
|
||||
the shape of the decision.
|
||||
|
||||
| Pawn | Nature | Situation → Nurture | Product | Joins? |
|
||||
|---|---|---|---|---|
|
||||
| **Kind colonist**, ordinary life | `0.05 − 0.30 → 0.00` (clamped) | content, `≈ 1.0` | `0.00` | **No** — nature floors it |
|
||||
| **Greedy prisoner**, content, policed | `0.30` | fed & high deterrence, `≈ 0.7` | `≈ 0.21` | **No** |
|
||||
| **Greedy prisoner**, starved & neglected | `0.30` | mood floored + held, `≈ 3.5` | `≈ 1.05` | **Yes** |
|
||||
| ...same pawn, but you raise deterrence | `0.30` | `× ≈ 0.7` → `≈ 2.45` | `≈ 0.74` | **No** — deterrence tipped them out |
|
||||
| **Psychopath + Bloodlust**, mood floored | `≈ 0.85` | mood floored + held, `≈ 3.5` | `≈ 2.9` | **Yes** — nothing short of reform pulls this back |
|
||||
|
||||
The middle rows are the whole game of it. The **same greedy prisoner** joins or abstains purely on how
|
||||
you run the wing. The Kind colonist and the near-maxed psychopath are the fixed poles: one essentially
|
||||
cannot join, the other essentially always will if you neglect them. Everyone in between is a policy
|
||||
choice.
|
||||
|
||||
The mod's own integration test asserts exactly these poles: a psychopath-plus-bloodlust pawn with a
|
||||
floored mood returns `WouldJoin == true`, and a Kind colonist in ordinary circumstance returns
|
||||
`WouldJoin == false`.
|
||||
|
||||
## It works for every pawn, everywhere
|
||||
|
||||
There is no "prisoners only" special case. The comment is explicit:
|
||||
|
||||
> Any pawn — colonist, prisoner, slave — can, wherever they are.
|
||||
|
||||
`WouldJoin` reads nothing about a pawn's secured status. A disposed **free colonist** can run with a
|
||||
crew on the outside; a **prisoner** can run with theirs on the inside; a **slave** likewise. This is
|
||||
what lets a gang span the wall — an outside member and an inside member of the same crew (see
|
||||
[Networks and Smuggling](Networks-and-Smuggling.md)). Being held raises nurture (misery), but it is not
|
||||
a requirement.
|
||||
|
||||
## The cadence: the 5000-tick check
|
||||
|
||||
Membership is re-evaluated on a fixed interval by the gang map component:
|
||||
|
||||
```
|
||||
CheckInterval = 5000 ticks
|
||||
MapComponentTick: run only when TicksGame % 5000 == 0
|
||||
```
|
||||
|
||||
**5000 ticks** is about **2 in-game hours** (a RimWorld day is 60,000 ticks), or roughly **80 seconds**
|
||||
of real time at normal (1×) speed. On each fire, the component:
|
||||
|
||||
1. Gathers `crew` — every spawned humanlike on the map for whom `WouldJoin` is currently true.
|
||||
2. Pairs up unaffiliated members of `crew` who **share a room and a bond** into gangs (see
|
||||
[Affiliations and Segregation](Affiliations-and-Segregation.md)).
|
||||
3. Runs one round of network resupply inside each gang (see
|
||||
[Networks and Smuggling](Networks-and-Smuggling.md)).
|
||||
|
||||
Because the check re-reads `WouldJoin` every time, membership is *live*: a pawn whose situation improves
|
||||
past the point where the product drops back under `0.9` simply stops being eligible to form new bonds.
|
||||
The bar is not a one-time gate at recruitment — it is a standing condition the colony is continuously
|
||||
graded against.
|
||||
|
||||
## How to keep pawns out
|
||||
|
||||
You do not fight the gang system. You lower nurture, which lowers the product, which drops pawns below
|
||||
`0.9`:
|
||||
|
||||
- **Feed them and give them recreation.** Mood is the biggest nurture multiplier by far. A wing above
|
||||
0.35 mood loses the `×2.5`/`×1.6` spikes entirely.
|
||||
- **Keep deterrence high** (Institution: Justice). Deterrence scales nurture down toward `0.7`; a
|
||||
well-policed colony is *arithmetically* less gang-prone. This is the row in the table above where the
|
||||
same greedy prisoner flips from *joins* to *abstains*.
|
||||
- **Reform, don't just punish.** A hardened record (negative reform) *raises* nurture; discipline that
|
||||
actually reforms (positive reform) lowers it. Harsh punishment that prisonizes a pawn makes the
|
||||
gang problem worse, not better.
|
||||
- **Accept the two poles.** A near-maxed psychopath will run with someone the moment you slip; a Kind
|
||||
pawn essentially never will. Spend your attention on the middle.
|
||||
|
||||
---
|
||||
*Part of the **Institution** suite — Core · Contraband · Justice · Gangs (this). Each mod stands alone; together they are one system.*
|
||||
*AI disclosure: developed with substantial assistance from Claude (Anthropic).*
|
||||
Reference in New Issue
Block a user