Skip to content

Fix Siege instant-defeat on join; Filler AI regulars; refresh vendored SDK#6

Merged
bbjansen merged 3 commits into
mainfrom
bugfix/siege-instant-defeat
Jul 11, 2026
Merged

Fix Siege instant-defeat on join; Filler AI regulars; refresh vendored SDK#6
bbjansen merged 3 commits into
mainfrom
bugfix/siege-instant-defeat

Conversation

@bbjansen

Copy link
Copy Markdown
Contributor

Summary

  • fix(siege): reset the world when a player joins a finished room. The Siege demo opened directly on the game-over screen because the world was only reset for the first joiner, and a room that reached defeat and then emptied stayed durably in the lost state. It now resets on any non-playing phase.
  • feat(npc-chat): Filler AI regulars in the tavern demo — raise the room tick so presence bots animate, and seat a few rules-based regulars alongside the real NPC (zero model tokens, no new storage or alarm writes).
  • chore(vendor): refresh the vendored @plot/client to the current SDK.

Testing

  • Siege handler regression tests (+3) covering join-after-defeat
  • Verified live: filler regulars appear in the tavern with no token usage; the real NPC replies

bbjansen added 3 commits July 11, 2026 14:50
Siege only reset on the first joiner (index===0). A room that hit DEFEAT/VICTORY
and emptied before the 4s auto-restart (which runs in onTick, dead at 0 sockets)
stayed durably in a terminal phase — so the next joiner with any lingering player
record landed straight on the DEFEAT overlay ('instantly over'). Reset on the
first join OR any non-playing phase, computing the spawn slot after the reset.
An actively-playing room is never reset by a newcomer. +3 regression tests.
Adds ambient rules-based 'regulars' to the Prancing Pony alongside Bram: a low
tickRate (5) lets the platform's Filler AI reconcile presence bots; the client
renders bot_ chat-channel lines as muted patron bubbles + a 'regulars by the
fire' count. Filler is zero-token (verified live: usage unchanged) and can't
reach Bram's metered say() path (different channel/shape).
The vendored bundle was built before managed player identity landed; refresh it
so the client surface (auth/playerData + npcChunk/disconnect/reconnect events,
message channel, appId) matches source. Showcase typechecks clean; no call-site
changes needed.
@bbjansen bbjansen merged commit 66dccff into main Jul 11, 2026
1 check passed
@bbjansen bbjansen deleted the bugfix/siege-instant-defeat branch July 11, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant