v0.57.10 - NFU, Dungeons, Vex, Ranks, Turf
Five shipsets from a mix of bug reports and follow-on audit work. Thank you to everyone who submits reports through the in-game ! menu, and to Renegade-Exodus on GitHub issue #75 for the long-running BBS investigation.
New: Town Hall
If your team controls the city, you can now type /town (or /townhall) from any location to open a new Town Hall screen. It shows:
- Your ruling team name
- Alive team member count
- Current city and king tax rates
- Tax gold earned this week
- Total tax gold earned over your career
City tax income has always been auto-deposited to your bank account at every shop sale, but up to now there was no in-game visibility into how much turf control was actually earning you. Now there is.
This first iteration is read-only. The city tax rate itself is still set by the King via the Castle. Future iterations may grow civic powers here.
Bug Fixes
BBS doors on NetFoss Utility no longer crash the host node on exit. Launching the game through NFU on a DOS BBS like Renegade would load fine but on exit could leave the FOSSIL driver stuck, NTVDM locked, and the node unusable until the host machine rebooted. Regression from the v0.54.7 Mystic and EleBBS fix. The previous fix's process-exit path skipped .NET finalizers to avoid closing the BBS-owned socket on Mystic and EleBBS, but it also skipped the stdout flush on stdio-mode exits where the child owns no socket and just talks to the parent through pipes. NFU needed that clean EOF. Now the process-exit path checks whether we actually have an inherited socket handle and only takes the skip-finalizers path when we do. Mystic and EleBBS unchanged; NFU, Synchronet stdio mode, MUD relay, and Electron all now get a clean flush and exit.
The dungeon guide no longer claims rooms exist that you can't find. Some players on respawned floors saw "25/25 explored, 24/25 cleared" but the navigator said there were no known destinations. The missing room was a phantom. Latent bug in the hourly floor-respawn code, unmasked by the v0.57.6 fix that made the respawn actually fire. The respawn was clearing "cleared" status on every room, including rooms like settlements, meditation chambers, puzzle rooms, trap gauntlets, and treasure chests that have no monsters to re-clear. Those rooms then sat as permanently-explored-but-uncleared ghosts, counted in the "N cleared" tally but hidden from the guide's destination list because that filter correctly only shows monster rooms. Now respawn only resets clear status on rooms that actually had monsters. Affected saves self-heal on the next floor load.
Vex's personal quest can now trigger in the endgame. Vex's quest was gated on "days since recruit" instead of a dungeon floor range like Aldric's, Mira's, and Lyris's. In online mode the day counter drifts and legacy saves don't serialize the recruitment date correctly, so players could hit level 100 and floor 100 with the counter stuck at 6 days, never eligible for Vex's quest. Added a parallel floor gate: if you are on floor 70 or deeper, the quest is eligible regardless of the day count. The day gate still fires normally for players who hit it organically. Players already on floor 100 should see the first bucket-list event within their next handful of rooms.
The "You moved up N ranks" login message no longer repeats the same numbers every login. Weekly rankings update once a week on Mondays. The login display was firing whenever this week's rank differed from last week's rank, but nothing consumed the delta after rendering, so every login during the week re-printed the same message with the same numbers. Now the delta is consumed after the message prints. You see the weekly update exactly once, on the first login after Monday's ranking refresh. The rivalry line is unchanged.
Turf control now survives a relog. When a player won Gang War at Anchor Road in online mode, the victory correctly set the turf flag on the player and stamped it onto their team NPCs. But the shared NPC snapshot in the world state didn't get re-saved until the next auto-save window. Players who logged out inside that window would find on next login that the old controller (often the default Watchers team) appeared to have taken turf back silently. Fixed: every turf mutation now persists to the shared world state immediately. Also added a login heal: if your save says you hold turf but the world state disagrees, the game resolves it one of two ways depending on which side is stale, and shows a dedicated red banner if you lost turf while offline so the change isn't invisible. Pre-v0.57.10 saves in the stuck state heal themselves on the next login.
Dead teammate NPCs no longer read as non-controllers after a respawn. Related to the above. The Gang War victory flow was only stamping the turf flag on alive team members, so dead teammates coming back later could flip the "who controls town" query back to the old owner. Now the flag is applied to every team member, alive or dead, on both the winning and losing sides.
Offline turf losses now show a banner on relog. If another team takes the city while you're logged off, you now see "While you were gone, X took control of the city. Visit Anchor Road to challenge for it back." on your next login, in addition to the existing "While You Were Gone" news feed.
596 of 596 tests passing. No save format change. Existing saves load cleanly and self-heal the affected turf and dungeon-room states on the next login or floor load.
