Per the updated project policy, AI/Claude attribution lives in exactly one NOTICE file per repo and nowhere else -- removed it from the About description, README, wiki, and roadmap.
135 lines
7.0 KiB
Markdown
135 lines
7.0 KiB
Markdown
# 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.*
|
||
**
|