Add world events: natural disasters (earthquake, flood) and famine/pandemics that hit a specific nation or region, with a pandemic that spreads to adjacent nations over subsequent turns.
A disaster applies stat hits (a famine → economy/population down; an earthquake → a region's infrastructure/marker loss; a pandemic → a tracked pandemics: {origin:string; affected:string[]}[] that spreads each turn to nations sharing a border with an affected one, until contained).
Can be triggered by the LLM (deliberate, e.g. bioweapon) or the engine (a deterministic periodic roll).
Builds on: per-region stats, relations, adjacency (for spread), no-man's-land.
Acceptance
e2e safety (critical): stub returns disasters: { events: [] } (no spontaneous disaster in the deterministic stub), deterministic; additive; must not break the UK-in-wwii-1939 e2e (empty frontier, military 80→85, 7-item legend).
Unit tests in server/engine.test.ts (each disaster type, pandemic spread over turns, containment).
Version bump at PR time.
## What
Add **world events**: natural disasters (earthquake, flood) and **famine/pandemics** that hit a specific nation or region, with a pandemic that **spreads** to adjacent nations over subsequent turns.
## Mechanism
- `TurnResult` gains `disasters: { events: { type: 'earthquake'|'flood'|'famine'|'pandemic'; target: string /* nationRef or regionKey */; severity?: number }[] }` — required, default `[]`.
- A disaster applies stat hits (a famine → economy/population down; an earthquake → a region's infrastructure/marker loss; a **pandemic** → a tracked `pandemics: {origin:string; affected:string[]}[]` that **spreads each turn** to nations sharing a border with an affected one, until contained).
- Can be triggered by the LLM (deliberate, e.g. bioweapon) or the engine (a deterministic periodic roll).
- Builds on: per-region stats, relations, adjacency (for spread), no-man's-land.
## Acceptance
- **e2e safety (critical):** stub returns `disasters: { events: [] }` (no spontaneous disaster in the deterministic stub), deterministic; additive; must **not** break the UK-in-`wwii-1939` e2e (empty frontier, military 80→85, 7-item legend).
- Unit tests in `server/engine.test.ts` (each disaster type, pandemic spread over turns, containment).
- Version bump at PR time.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
Add world events: natural disasters (earthquake, flood) and famine/pandemics that hit a specific nation or region, with a pandemic that spreads to adjacent nations over subsequent turns.
Mechanism
TurnResultgainsdisasters: { events: { type: 'earthquake'|'flood'|'famine'|'pandemic'; target: string /* nationRef or regionKey */; severity?: number }[] }— required, default[].pandemics: {origin:string; affected:string[]}[]that spreads each turn to nations sharing a border with an affected one, until contained).Acceptance
disasters: { events: [] }(no spontaneous disaster in the deterministic stub), deterministic; additive; must not break the UK-in-wwii-1939e2e (empty frontier, military 80→85, 7-item legend).server/engine.test.ts(each disaster type, pandemic spread over turns, containment).