Skip to content

Combat encounter system — pull-based trigger + tiered risk-choice pool

D-020: Combat encounter system — pull-based trigger + tiered risk-choice pool

Picks 2 + 6 from the 2026-05-21 vision verification session. D-010 ratified RNG / turn-order / defeat semantics but explicitly deferred “encounter shape” to mechanics-designer B-level. D-018 made combat the premium Energy sink (~30% of a daily budget per fight); the per-encounter cost shape became load-bearing — a player must be able to see what an encounter will cost BEFORE committing Energy. D-020 closes that gap: pull-based trigger, visible tiered pool, deliberate risk-choice initiation.

1. Trigger = pull-based, no auto-spawn

The Walker initiates every combat from a visible encounter queue. The app NEVER auto-spawns combat as a side-effect of step count, time-of-day, location, or any other passive trigger. Rationale: D-018 force-choice scarcity (a Walker must be able to refuse combat when their daily Energy is earmarked for craft or allocation); D-001 hardcore positioning (auto-spawned mob-grind is the f2p-mobile failure mode WalkRPG explicitly rejects).

2. Pool builds passively from two sources

SourceCadenceNotes
Step-drivenEvery N steps (N B-level, mechanics-designer; nominal ~500-1000) drops one trop of region-appropriate difficultyRegion surfaces tropy keyed to Walker’s current region.<id>
Quest-beat drivenSpecific quest beats inject specific tropy directlyAuthored per-quest (e.g. a beat injects trop.<id> keystone-ready). Quest beats fire on quest-state progression (player advanced step N→N+1), never on raw geofence or time triggers — those would re-introduce push via the quest layer.

Pool fill is server-authoritative (D-007 §3 reconciliation pattern; sink-debit ordering from D-018 §What-not-decide applies to fill events too). Client surfaces the queue read-only until initiation.

3. Pool entries = tropy; each carries one of four difficulty badges

Each encounter card is a trop (singular) / tropy (plural). PL canonical; glossary entry per D-017 four-phase pick is W-level narrative-designer follow-up. Four badges, deliberately small set:

BadgeEnergy cost vs baseReward vs baseRisk tail
easy-50%-30%None
normalbase (per D-018 ~30% of daily)baseNone
hard+30%+40%~15% chance of energy-loss outcome (combat ends; extra Energy debit ≈ 10% of daily)
keystone-ready+50%tree-keystone unlock per D-014 §2 + standard reward~30% chance of energy-loss outcome

The percentages shown are shape-level only — exact tunables are B-level under mechanics-designer within the D-020 envelope. Adding a 5th badge tier (elite, boss, etc.) requires a new D-decision.

Risk tail vs D-010 §3 defeat semantics — orthogonal. The energy-loss tail on hard / keystone-ready is a NEW failure mode separate from D-010 §3’s HP-clamp rule. D-010 §3 governs the HP=0 outcome (clamp to 1, no XP/point/rep loss); D-020’s energy-loss tail governs the engagement-cost outcome (you took the risky encounter, paid extra Energy for the tail). Both can fire independently in the same fight; neither contradicts the other. HP outcome remains non-punitive per D-010 §3.

Cosmetic flags are NOT badges. A quest-beat tropy may want a non-mechanical marker (e.g. boss for a region-finale tropy that uses the existing normal cost/reward shape). These ride on tropy.tags per TagSchema and are W-level (narrative-designer + mechanics-designer). Only new cost/reward tiers require a new D-decision; tagging an existing-tier tropy as cosmetically distinct does not.

4. Risk choice = visible before commit

The badge is shown on the trop BEFORE the player commits Energy. Initiation is a deliberate “I accept this risk-reward” action, not a click-to-dismiss. PoE / Last Epoch farming pattern: the player sees the modifiers, chooses the run. UI surface (badge styling, initiation gesture) is ui-designer’s call within this contract.

5. Terminology disambiguation (D-017 carve-out for D-020)

trop / tropy in D-020 (and all downstream gameplay surfaces) means encounter card — a lead the Walker investigates by initiating combat. This is distinct from “Trop NN” usage in D-013 and decision-process discussion, where “Trop” is a numbered slot for a research proposition (e.g. “Trop 12 — anti-step-spam clause”). Same Polish word, two registers: gameplay (entity) vs process (proposition slot).

PL register fit: trop (lead / clue / trace) sits natively in the D-013 editorial-investigator register — the Walker traces the trop, then commits the editorial act (the fight). Maps cleanly to the cartographer-as-investigator framing in cartographer.ts:11 and to D-013’s evidentiary grammar. Narrative-designer’s four-phase pick should affirm trop as canonical or surface a stronger candidate; the disambiguation requirement below stands either way.

The trop glossary entry per D-017 four-phase pick MUST capture the gameplay-vs-process disambiguation explicitly in transcreationNote (same carve-out shape as D-019 §2 class-vs-rank disambiguation).

What D-020 does NOT decide (delegated)

  • Pool size cap (max concurrent tropy in queue) — B-level (mechanics-designer).
  • Pool refresh cadence per region — B-level.
  • Specific badge cost/reward percentages within the D-020 envelope — B-level (mechanics-designer).
  • 5th tier badges (elite, boss, etc.) — forbidden at B-level; requires a new D-decision.
  • UI surface for tropy queue and initiation flow — ui-designer.
  • Quest-beat → tropy injection math (probability, timing, append vs replace) — W-level (mechanics-designer + narrative-designer per quest).
  • Tropy expiry policy (do unfought tropy decay? after how long?) — B-level; open W/B question.
  • trop glossary entry (handle slug + EN transcreation + disambiguation note) — W-level (narrative-designer, D-017 four-phase pick).
  • Schema additions (Trop entity, Opponent tier-badge metadata) — W-level (tech-architect). Existing data/src/schemas/opponent.ts 8-stat pattern + region binding + tag bag is preserved; tier-badge metadata extends rather than replaces (either as a new field on Opponent, or as a new field on Trop that references an opponent).

Rejected alternatives

  • Push-based (auto-spawn) — contradicts D-018 force-choice scarcity (Walker loses agency over which days they spend Energy on combat vs craft vs allocation); matches the f2p-mobile mob-grind failure mode D-001 rejects.
  • Fully random pool (no badge visibility) — flattens decision space, removes risk-reward, doesn’t match the PoE / Last Epoch reference D-008 hardcore audience expects.
  • Binary safe/risky (no tier visibility) — removes the “I see what I’m getting into” promise; collapses back toward fog-of-war that D-020 rejects.
  • Time-based encounter spawning (encounter appears at 7pm regardless) — re-introduces the push mechanic via the time axis; same failure mode as step-based auto-spawn.

Reasoning

The trigger choice was binary: push (auto-spawn) or pull (player-initiates). Push is incompatible with D-018 single-currency scarcity at the protocol layer — if combat appears unbidden, a player who saved Energy for craft loses agency over their own daily triage. Pull is the only choice coherent with D-018’s promise that “I walked 5k today” is legible at decision time.

Tiered visible pool + risk-choice is the PoE / Last Epoch pattern for a reason: it preserves agency at run-time (you see what you’re committing to) AND creates the engagement loop that grindless variance cannot. Pure RNG trades agency for surprise; tiered visible trades surprise for considered choice. D-008 hardcore audience expects the latter.

The keystone-ready badge is the gameplay surface that wires D-014 §2 keystone-gating into the encounter system. Without it, the keystone-unlock pathway is invisible to the player at the point of decision — they would only learn an encounter was keystone-relevant after the fight, removing the agency the rest of D-020 is built around.

The four-badge set is deliberately small. Two badges (safe / risky) under-discriminates and forces every encounter into one of two molds; six+ badges over-fragments the design space and signals tier-bloat. Four (easy / normal / hard / keystone-ready) matches the natural decision granularity: how cheap can I get this, what is the baseline, how much extra reward do I want, and is this a tree-progression opportunity.

Source: picks 2 + 6 from ops/memory/vision-qa-2026-05-21.md. Triage by game-director (2026-05-21 session). Pre-ratification reconnaissance per [[feedback-decide-triage-recon]] confirmed trop / tropy has zero collision with existing data/src/content/ entities; D-013 process-slot “Trop NN” usage disambiguated inline (§5).