Dev Blog

Dynamic NPC Party Guests!

February 17, 2026

Organic NPC Join/Departure Detection After each DM post, the system detects when NPCs or creatures narratively join the party Host receives a proposal modal to approve or dismiss each join — supports multiple joins per DM post, queued sequentially Detected NPCs are tagged as "Guest" alongside the NPC badge (teal #00897b) Generated character sheets are fully editable in the proposal modal: name, race, class, description, personality, abilities, and origins (add/remove) Host can swap the generated sheet for an existing character from the library via dropdown; library characters shown read-only Character library lookup uses fuzzy first-name matching with Unicode normalization (curly quotes → straight) Characters already in the session are excluded from library suggestions or additional join requests Organic NPC departure detection: when a guest NPC narratively leaves, the host gets a departure modal to confirm Enemies that switch to "allied" disposition during combat are also marked as organic guests NPCs (guests or manually added) no longer count against the session's MaxPlayers limit DM Prompt Improvements First post mode now places the party in the scene — the DM describes where they are and what's around them, instead of pretending PCs don't exist First post mode only activates when there are no DM messages AND no player input; if a player types before the first /dm, the regular prompt is used First post scenes feel like a natural slice of the world, not curated adventure hooks Regular DM prompt: NPCs are now proactive — they approach, make demands, offer unsolicited advice, pick fights, flirt, lie, or manipulate; the DM actively guides players while respecting their decisions NSFW first post also places characters in the scene with the same guidelines Combat narration toned down from breathless/cinematic to grounded, novel-like prose — varied weight, concrete descriptions, save intensity for moments that earn it Enemy Naming Combat detection and reinforcement prompts now generate proper noun names for enemies ("Fenris" not "Territorial Wolf") Join detection prompt generates proper names for unnamed NPCs ("Silverfang" not "elder wolf") Disposition Analysis Fix No-op disposition changes (fighting → fighting) are now filtered out, preventing spurious narration posts during active combat Previously the filter only matched fighting enemies; now it compares current vs proposed disposition and drops identical ones
Combat UX Overhaul, Web Client

February 17, 2026

Adventure Machine — Changelist Feb 16, 2026 Combat UX Overhaul AOE enemy abilities now display all target rolls simultaneously instead of one-at-a-time Enemies flash their status (defeated/fled/surrendered/allied) inline when it happens, not batched at end of round Defeated enemies now flash at the moment they hit 0 resolve, then disappear (no more reappearing at end of round) Revive system: healing a downed player (0 resolve) always succeeds, no dice roll needed Downed players auto-pass and are blocked from submitting actions Fortuna charges get a gold flash animation, both in and out of combat Crit resist (rolls 19-20) now correctly grants Fortuna Host can adjust enemy resolve with +/- buttons on enemy panels Host can toggle any player or NPC's Fortuna status (with flash on toggle-on) Enemy damage numbers display in red instead of green Health bars update live per individual hit and heal (snapshot-based tracking) Flash Lite 2.5 used for origin bonus evaluation and ally character sheet generation Overlay badge fade curve: long hold with quick fadeout Enemy Disambiguation Same-named enemies (e.g. 3 wolves) are now tracked individually with #1, #2, #3 labels in the combat summary Turn start flash now targets the correct enemy panel instead of always the first matching name DM narration receives numbered labels but is instructed to use descriptive cues instead (position, injuries, size) Enemy list in narration prompt includes resolve status for each individual enemy Narration Improvements DM narration no longer says players "died" — uses knocked out, battered, bloodied, etc. Player knockout called out in narration immediately after the hit that downs them "No valid target" lines excluded from narration Every action in the combat log is now required to appear in the narration (no more skipped actions) Narration word count scales dynamically with the number of actions instead of a fixed cap Bug Fixes Fix heal always targeting self: character names with spaces were truncated during parsing; now uses player ID Fix phantom combat round triggering on session reconnect (LINQ All on empty set returned true) Fix IsOnline flag never persisting due to AsNoTracking on the JoinSession query Fix Fortuna button not updating after combat state changes Fix admin edit buttons disappearing on About and Blog pages UI Polish Fix resolve +/- button alignment in player sidebar Host/NPC badges repositioned below HP bar to avoid close button overlap Fortuna star appears simultaneously with the flash, disappears immediately on use Encounter editor: add enemy controls moved to sticky footer row Encounter editor: dropdown + button pattern allows adding the same mob multiple times Content Add About and Blog pages with admin-editable site content Memory search improvements
Release Notes! Mostly to test the system, but hey! Patches!

February 16, 2026

Dalamud Plugin Updates: v1.0.1.4 Fix OOC input row sizing and Send button alignment v1.0.1.3 Add dedicated OOC input row to session window v1.0.1.2 Remove server URL from settings UI (hardcoded to Adventure Machine server) Add /rp config command to open settings window directly v1.0.1.1 Add /rp config command to open settings window directly v1.0.1.0 Fix character selection when joining/resuming sessions: active sessions now resume with your existing character instead of re-creating from game data Add character picker popup when joining new sessions (public list, join-by-code), defaulting to your in-game character v1.0.0.0 Create, browse, and join roleplay sessions (public, friends-only, private, or by invite code) Auto-create characters from your in-game FFXIV data (name, race, class, appearance) Real-time multiplayer chat with in-character and OOC messages, typing indicators, and streaming DM responses AI Dungeon Master controls for hosts: prompt the DM, retry/regenerate responses, toggle NSFW Combat system with manual encounters, attacks, heals, special abilities, Fortuna points, and DC rolls Friends system: search users, send/accept/decline requests, manage friends list Session host tools: pause/resume sessions, add NPCs, browse enemy templates from mob library, edit enemy stats World and character selection from saved lists or auto-created from current FFXIV zone/character Configurable server URL, display name, and OpenRouter API key for hosting
Soft Launch!

February 15, 2026

Not much else to add here other than to say the website is live, the dalamud plugin connects, and I'm hard at work on new features and bug fixes! I'll do a more detailed update the next time I roll out features, but for now, welcome to the Adventure Machine! 🎉
An unhandled error has occurred. Reload 🗙

Connection lost. Reconnecting to the server...

Still trying to reconnect... next attempt in seconds.

Unable to reconnect to the server.
Check your connection and try again.

The session has been paused by the server.

Unable to resume the session.
Check your connection and try again.