Adv 2.0 D&D Phase 12 E4c: !region command + inter-region travel

Spec §11.3. New !region command surface:
  !region          — list regions w/ status (▶ current, ✓ cleared,
                     · visited, ★ zone boss,  base camp)
  !region travel   — move to next region in order

Travel burns one day of supplies via applyDailyBurn (so harsh / siege
multipliers stack normally), advances current_day +1, fires one
transit wandering check (resolveTransitWanderingCheck — same buckets
as the night check but campMod = 0 since you're not bedded down),
then writes region-transition narration on both ends.

Two new flavor pools (RegionTransitDeparture / RegionTransitArrival)
with [REGION_NEXT] interpolation. Travel rejected when camped, and
when already in the final (zone-boss) region.

Tests cover the campMod=0 invariant, the day/supply/region delta on
travel, and the marker rendering in renderRegionList.
This commit is contained in:
prosolis
2026-05-08 16:19:33 -07:00
parent c2bed4282d
commit e392cf7d8f
4 changed files with 401 additions and 0 deletions

View File

@@ -261,6 +261,9 @@ func (p *AdventurePlugin) OnMessage(ctx MessageContext) error {
if p.IsCommand(ctx.Body, "threat") {
return p.handleThreatCmd(ctx)
}
if p.IsCommand(ctx.Body, "region") {
return p.handleRegionCmd(ctx, p.GetArgs(ctx.Body, "region"))
}
// 1. Arena commands (work in rooms and DMs)
if p.IsCommand(ctx.Body, "bail") {