diff --git a/AGENTS.md b/AGENTS.md index a9b095d..f097656 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -103,6 +103,33 @@ gameplay, run in the simulator and play, or use the Dope Wars debug env vars bel `DopeWarsSim` also exposes `debug*` mutators (wallet, debt, price, tier, held, forced RNG rolls) gated behind `#if DEBUG`. +### Dope Wars — wave-1 mechanics (the "make it dynamic" rework) +The classic uniform per-day price roll was replaced with a **momentum + +mean-reversion** model: each day a product carries `momentum` (0.50) of yesterday's +deviation from its **per-borough anchor** (`boroughAnchor`/`methAnchor`/ +`chinaWhiteAnchor`) plus a ±`noisePct` (0.15) random walk, with event **shocks** +(decaying at `shockDecay` 0.70) injected on top. Tuning constants live in the +`// MARK: Wave-1 tuning` block — change them there, not inline. +Other wave-1 systems, all in `DopeWarsSim`: +- **Price history / sparkline** — `spark: [[Int]]` (last 7 days per product) feeds the + per-row `SKShapeNode` sparkline on the board. +- **Market impact** — `marketImpact()` nudges today's local price by the share of the + day's volume you traded (buy pushes up, sell pushes down); `buy` charges the + post-impact price. +- **Paid information** — `buyForecast(for:)` (Bronx contact, 70% accurate, 1-day) + + the existing free `Rumor`. +- **Reputation** — hidden `rep` (0…100, starts 50) moved by `changeRep`; drives + `fenceBonus`, `heatMult`, and shark terms. +- **Investments** — `Investment` enum (coat +30, fence auto-sell, shark protection); + `buyInvestment` (Bronx only). +- **Chase bribe** — `chaseBribe()` + `bribeCost` (RUN/FIGHT/BRIBE in the chase sheet). +- **Shark favors** — `Favor` (risky no-profit delivery), `acceptFavor`/`refuseFavor`/ + `resolveFavorDelivery`; good-standing cap (`sharkCap`, doubled by protection) sets + `sharkRate` (7% vs 10%). +The Scene mirrors each with a sheet/mode (`.contact`, `.investments`, `.favor`, +`.bronxMenu`, chase BRIBE). Keep the Scene/Sim split — mechanics in the Sim, pixels +in the Scene. + ## 4. Git & Gitea Remote: Gitea `https://git.kwalb.com/kyle/Arcade85` (branch `main`). No git