Home Town wire

Town wire

NPCs surprise players with news the simulator already knows — heroics, public board quests, and DM notes — scoped to 1–N boundary zones. Live chat may rephrase a canonical bullet; it must not invent extra deeds.

This replaces scheduled Postgres dialog-overlay regen (archived as plan 55). Overlay regen paraphrased static YAML, the sim never posted events, and overlays were unused in deterministic talk.

Model

Layer Storage Who edits
Authored situations / topics the content files<npc_id>.yaml, Dialogue tab Designers
Live chat voice OpenRouter via npc_live_chat Per-NPC / role groups
Town wire facts In-memory GossipStore on the region sim Sim emitters + DM inject
Wire scope Boundary zone ids on each fact Map layout + inject picker

Pickup

A humanoid NPC hears a fact when their current exterior or home exterior is inside any listed boundary zone. They carry it until TTL.

Sim heroics and public quests also pin civilized town boundaries so Ada in Starter Town can mention a bog kill. DM notes never auto-spread.

Delivery

  • Deterministic talk: template mention when greeting or the player asks for news (news, gossip, heard, …).
  • Live LLM: up to three canonical bullets in world context, with an explicit “do not invent” rail.
  • Cooldown per NPC + listener + fact (gossip.mention_cooldown_game_hours).
  • Skip UUID-looking player names.

Kill thresholds: 5 / 10 / 25 plus notable refs (ogre_1, shadow stalker, high-level).

Related