Wiki: player-facing rewrite of every layer + add a scenario FAQ, linked from Home
This commit is contained in:
+34
-55
@@ -3,48 +3,39 @@
|
||||
*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.
|
||||
and their circumstances line up at once** — the same Nature × Nurture propensity 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
|
||||
```
|
||||
A pawn joins when their **Nature multiplied by their Nurture reaches 0.9 or higher**. Only humanlike
|
||||
pawns are ever eligible — animals and mechs never join.
|
||||
|
||||
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.)
|
||||
Beyond that it is one line of arithmetic: multiply the pawn's **Nature** by their **Nurture** and
|
||||
compare to **0.9**. There is no dice roll here. The same pawn in the same situation always gives the
|
||||
same answer — join, or don't. (That makes membership different from one-off acts like a piss spree,
|
||||
which *do* roll the dice each time. Gang membership is a standing condition, so it uses the raw product
|
||||
with no randomness.)
|
||||
|
||||
### 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.
|
||||
- **Nature** (`0` to `1`) is *who the pawn is*: a base of `0.05`, plus trait weights, floored at `0`
|
||||
and capped at `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, roughly `0.4` at the floor, `1.0` at baseline) 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** (toward about `0.7` in a high-deterrence colony; a neutral,
|
||||
baseline order sits at `1.0`). 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:
|
||||
`0.9` is a deliberately steep threshold. In the design's 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.
|
||||
@@ -63,7 +54,7 @@ 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 |
|
||||
| **Kind colonist**, ordinary life | `0.05 − 0.30`, floored at `0.00` | 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 |
|
||||
@@ -74,44 +65,33 @@ you run the wing. The Kind colonist and the near-maxed psychopath are the fixed
|
||||
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:
|
||||
There is no "prisoners only" special case: any pawn — colonist, prisoner, slave — can run with a crew,
|
||||
wherever they are.
|
||||
|
||||
> 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
|
||||
Membership pays no attention to 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
|
||||
## The cadence: every 5000 ticks
|
||||
|
||||
Membership is re-evaluated on a fixed interval by the gang map component:
|
||||
Gang membership is re-evaluated on a fixed interval — every **5000 ticks**, which 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 pass, the game:
|
||||
|
||||
```
|
||||
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
|
||||
1. Gathers everyone on the map who currently meets the Nature × Nurture ≥ 0.9 join bar.
|
||||
2. Pairs up unaffiliated members 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.
|
||||
Because the join bar is re-checked from scratch every pass, membership is *live*: a pawn whose situation
|
||||
improves until 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
|
||||
|
||||
@@ -131,4 +111,3 @@ You do not fight the gang system. You lower nurture, which lowers the product, w
|
||||
|
||||
---
|
||||
*Part of the **Institution** suite — Core · Contraband · Justice · Gangs (this). Each mod stands alone; together they are one system.*
|
||||
**
|
||||
|
||||
Reference in New Issue
Block a user