HELP SCREEN LAYOUT FIX - v0.3.3
------------------------------
HELP1.ANS through HELP5.ANS now use DOS CRLF line endings consistently.
Page 4's LF-only lines caused horizontal stair-stepping over FOSSIL.
All five pages fit within 24 rows and 78 visible columns, with navigation
on row 24 and no trailing newline to scroll the terminal. Surplus blank
rows were removed and a few long sentences shortened without changing rules.
Source and runtime copies match. No executables or game data changed.

Copy DISPLAY\HELP1.ANS through DISPLAY\HELP5.ANS into the live display
folder (and ATDT's seed/static files tree). Start a fresh door session to
load the updated screens. Keep MATRIX.CFG and DATA unchanged.

ATDT CALLER IDENTITY FIX - v0.3.3
--------------------------------
This build corrects the shared-character bug with ATDT BBS 1.7.6. ATDT writes
1 as the user record number on DOOR.SYS line 26 for every caller; the actual
caller handle is on line 10. Line 36 is blank. The previous Matrix reader
used record number 1 as the player-file key for everyone.

The updated door uses the line-10 name as the identity to verify. For callers
with record number 1, new player filenames are derived from the handle.
An existing DATA\P0000001.DAT is kept in place and selected only when its
stored handle matches the caller (case-insensitive). Every loaded character
is checked against the caller's full handle before play or recovery writes.
A filename hash collision with a different handle refuses access without
changing that character. Missing, incomplete, or invalid DOOR.SYS files stop
both MATRIX.EXE and COMMONS.EXE; they never silently select the local test user.
Explicit /LOCAL remains available for deliberate SysOp testing only.

UPGRADE THIS BUILD
1. Close ALL Matrix/Commons/editor sessions and prevent new launches.
2. Back up the live DATA directory and configuration.
3. Replace MATRIX.EXE, COMMONS.EXE and EDITOR.EXE together from this package.
   MATRIX.MAP may also be replaced. The editor was rebuilt; its binary is
   unchanged from the preceding gambling-limit build because its linked code
   does not use the caller-launch path.
4. Keep MATRIX.CFG, DATA and ENEMIES.DAT/BAK. Do not reset the game or rename
   P0000001.DAT. No configuration setting is needed for this fix.
5. Re-enable access and test your login plus a second, different ATDT handle.
   Your matching existing character should retain its progress; the other
   caller should create/load their own character.

Do not rename a character's handle in the editor independently of its BBS
identity. BBS handle changes require SysOp data review. Caller names longer
than 35 characters or containing non-ASCII/control bytes are rejected instead
of silently truncating identities. A hash collision or damaged legacy record
requires SysOp review; do not delete files merely to bypass that warning.

This fix cannot undo purchases/combat or other progress already performed by
the wrong caller before the fix. Restore from your own backup if needed.
Version is now v0.3.3; the centered splash version is preserved. Seven guesses,
three daily gambling games by default, and disconnect wager accounting remain.

Previous release notes and general instructions follow.

THE MATRIX v0.3.3 - UPGRADE / RECOVERY
====================================
This update automatically converts older player records for daily gambling usage.
World record format is unchanged. Back up before upgrading; do not downgrade
individual binaries after player records have been converted.
Do not reset the game or delete player records to apply this update.

UPGRADING AN EXISTING INSTALLATION
---------------------------------
1. Stop new Matrix door launches and wait for every active Matrix/Commons
   session to end. Close EDITOR.EXE too. Do not mix old and new executable versions.
2. Back up the entire live door directory, including DATA, MATRIX.CFG,
   MATRIX.BAK and both ENEMIES.DAT / ENEMIES.BAK.
3. Replace these files from the package's MATRIX directory:
     MATRIX.EXE
     COMMONS.EXE
     EDITOR.EXE
     MATRIX.MAP (optional diagnostic map)
     DISPLAY\GAMBLE.ANS
     DISPLAY\HELP5.ANS
     DISPLAY\MATRIX.ANS (centered version label below THE MATRIX)
   If these ANSI screens were customized, merge their wording changes:
   Oracle's Numbers has SEVEN guesses, three daily games by default, and a
   committed wager consumes a daily game and is forfeited
   when the caller disconnects or cancels the guessing prompt.
4. Keep the live DATA directory, MATRIX.CFG, MATRIX.BAK, ENEMIES.DAT and
   ENEMIES.BAK. Older players convert automatically on load/save.
   CommonsDailyGames=3 is the new configuration key; if absent it defaults to 3.
   Configure it in EDITOR.EXE -> 9 -> 6, then save the configuration.
   Other displays and TEXT.DAT have not changed in this maintenance release.
5. Keep the new SOURCE and DOCS directories with your offline package/archive.
6. Re-enable launches. Confirm existing characters load, enter/leave Commons,
   purchase or train, and quit/re-enter with their progress intact.

ATDT
----
Use the existing ATDT door installation described in ATDTINST.TXT. Update the
fixed binaries and the two displays in dosdoors/matrix/files/ and in the live
Matrix directory if your update workflow does not refresh those files there.
The previously documented live directory is data/doorstore/dos/matrix/.
Close old caller/maintenance machines before testing the refreshed files.
Preserve all mutable live files; never use Reset game state as an upgrade step.
The included dosdoor.json keeps the same command, shared-state layout and
max_nodes setting. No manifest change is required for v0.3.3.

FRESH INSTALL
-------------
The full package still contains MATRIX, SOURCE, DOCS, GETINST.EXE,
install.bat and dosdoor.json. INSTALL.BAT is for a fresh DOS installation;
it now refuses to overwrite an existing MATRIX.EXE or MATRIX.CFG.
ATDT installation uses its PHP-side DOS door workflow, not INSTALL.BAT.

LOCK RECOVERY AFTER A CRASH
---------------------------
Locks no longer expire automatically. A session that has been open longer than
five minutes remains protected. Ordinary exits and detected fatal save errors
release the locks owned by that process.

A killed/frozen DOS machine or forced BBS termination can leave DATA\*.LCK.
Before removing a leftover lock, stop ALL Matrix, Commons and editor sessions
on ALL nodes. Back up the DATA folder. Only after confirming none are running,
remove the leftover .LCK files in that game's DATA folder, then restart access.
Never schedule automatic age-based deletion of lock files. Never remove a lock
while its owner may still be active. An old lock is not proof of a dead session.

DAMAGED RECORDS / FAILED SAVES
------------------------------
A valid BAK remains an automatic recovery source. If neither DAT nor BAK can be
validated, or only an orphan TMP exists, player creation stops and leaves the
files available for SysOp recovery. Corrupt world data likewise stops loading.
Back up the affected files, close every session, and restore a verified backup.
Do not delete a player's files merely to suppress the recovery warning.

A failed critical player/world save ends the session with an explicit warning
and an entry in DATA\RECOVER.LOG. The last action may not have persisted.
Resolve storage/access failures before reopening the game. The editor reports
its save failures and allows retry/discard instead of claiming success.

Saves protect individual files with validation and backup rotation. Separate
player, opponent and world files are not one all-or-nothing database transaction;
a host crash between those writes can still require backup review. Maintain
regular full backups in addition to the in-game BAK files.

VISIBLE GAMEPLAY CHANGES
------------------------
- Oracle's Numbers: seven HIGHER/LOWER guesses; three daily games by default.
- The stake is saved before guessing. Disconnect/cancel does not refund it.
- Default maximum net profit is 6,000 credits/day (3 x 1,000 x 2).
  Custom limits, wagers or payouts change the ceiling. Accepted wagers consume
  the daily play even on disconnect/cancellation; re-entry does not reset it.
- Zero Focus stays zero on re-entry unless normal healing or daily reset applies.
- Credit/XP additions saturate at 4,290,000,000. Percentage penalties no longer
  overflow at large balances; existing values above that cap are normalized
  when entering gameplay (and carried/earned credits when entering Commons).

VALIDATION
----------
See BUILDINF.TXT for build details and tests. Host-side regression tests passed;
this package has not been exercised in your live FreeDOS/ATDT/FOSSIL environment.

NEWS AND MENU UPDATE (v0.3.3)
----------------------------
Zion Network News keeps events from the past ten days (240 hours), pruning
NEWS.DAT when news is viewed or added. The screen shows the latest 12 entries.
No background cleanup runs while the door is idle. Retention uses the DOS
system clock. NEWS.LCK serializes updates; NEWS.TMP/BAK protect replacement.
Menus now use bright white hotkeys and spaced, colored player status values.
Install the supplied MATRIX.EXE, COMMONS.EXE and EDITOR.EXE together, and copy
DISPLAY and TEXT.DAT (merge any local display/text customizations as needed).
Keep your live MATRIX.CFG, DATA and enemy files; no configuration edit is needed.

LEVEL ADVANCEMENT REWARD (v0.3.3)
-------------------------------
Each accepted advancement with Morpheus grants 250 x (new level - 1) carried
credits: level 2 gives 250, level 5 gives 1,000, level 10 gives 2,250.
The reward and new level save together. Existing credit caps apply.
Existing characters receive rewards for future advancements only. No player
format or live MATRIX.CFG change is required.
