tw2002 2026-02-10
TW2002
210 files · 4,059+ · 1,349-

Feature: Real Ship Types from Gold Data

  • Exported all 26 ship classes from GOLD/SHIPD.DAT (Escape Pod through Scorpion + 5 Alien Derelicts) decouple internal
  • Full stats: holds, fighters, shields, speed, costs, combat odds streamline internal
  • Added migration to upgrade existing DBs with fewer ship types baseline internal
  • Replaced 3 hardcoded ship types with authentic game data decouple internal

Feature: Planets, Config, and Ferrengi NPCs

Feature: Player Rank Titles and Documentation System

  • Ranks module maps experience thresholds to titles (Beginner through Ultimate) matching original TW2002 decouple internal
  • Docs module provides paginated help for every menu via z (full docs) and ! (context-sensitive help) specify internal
  • Rank titles shown in ship info, scoreboard, quickstats, and who’s online displays decouple internal

Feature: Character Creation Rewrite and NPC Broadcasting

  • Character creation now matches original BBS flow with confirmation prompts decouple internal
  • Maintenance executor delegates to real runner module decouple internal
  • Limpet manager uses actual player.limpets field with apply_death decouple internal
  • NPC tick messages broadcast to players in the alien’s sector decouple internal

Feature: Context-Sensitive Help System

Bugfix: Dirty-Tracking Persistence for All Game Objects

  • AttrObj now tracks _dirty flag on mutation decouple behavioral
  • persist_dirty() saves only modified sectors, ports, planets, corps, aliens, and players after each command decouple behavioral
  • Previously only player state was saved per-command; other objects deferred to WS close decouple behavioral
  • Fixed movement command input: read_line() now skips leading CR/LF when buffer is empty remediate behavioral

Bugfix: Player Persistence Pipeline

  • Moved player state persistence from game_loop.py into dispatch_command() in commands/__init__.py decouple internal
  • Removed debug code, simplified persistence logic decouple internal
  • Validated planet FK references before insert in do_store decouple internal

Bugfix: Security - Removed /web/players Endpoint

Bugfix: Ship Art Display

Test: Field Name Updates

  • Updated 17 test files to match renamed model fields (cargo_org -> cargo_organics, etc.) qualify internal
  • Fixed 195+ test failures caused by commodity field rename qualify internal