Legacy — Phase 0¶
Purpose. Document what the original Garry's Mod Applejack actually did, precisely
enough that any subsystem can be rebuilt without opening a .lua file.
Responsibilities.
- Record observable behaviour, tuning values, and edge cases.
- Record the defects so they are never faithfully reproduced.
- Provide a stable citation target for the Architecture/ documents.
Dependencies. None. This folder describes the past and depends on nothing in the new
design. Nothing here may be edited to match a new design decision — if the new design
differs, that belongs in Architecture/ or an ADR.
Public API. N/A (documentation only).
Future improvements. Areas not yet exhaustively documented are marked
> **Gap:** inline. Close them before the corresponding subsystem is implemented.
Contents¶
| Doc | Covers |
|---|---|
| 00_OVERVIEW.md | The legacy stack, the two source copies, load order, what to trust |
| 01_FEATURE_INVENTORY.md | Every feature, one row each, with its legacy file path |
| 02_CHARACTER_AND_PERSISTENCE.md | The character record, MySQL schema, load/save codecs |
| 03_INVENTORY_AND_ITEMS.md | Inventory maths, containers, the full ITEM vocabulary |
| 04_ENTITIES_DOORS_PROPERTY.md | Ownership, access lists, doors, padlocks, sealing |
| 05_TEAMS_JOBS_FACTIONS.md | Group/gang/team hierarchy, every job, demotion and mutiny |
| 06_CRIME_AND_POLICE.md | Warrants, arrest, jail, contraband enforcement, laws |
| 07_ECONOMY.md | Money, salary, payday, stores, taxes, contraband income |
| 08_NEEDS_AND_STATE.md | Hunger, stamina, knockout, tying, bleeding, incapacitation |
| 09_CHAT_AND_COMMANDS.md | Chat channels and the full command table with access flags |
| 10_PLUGINS.md | All 16 legacy plugins and the hooks they consume |
| 11_NETWORKING_LEGACY.md | usermessage / datastream / CSVar, and why none of it survives |
| 12_DEFECTS_AND_LESSONS.md | The do-not-reproduce list. Read this one. |
| 13_DEPENDENCY_GRAPH.md | How tightly the legacy systems are coupled, and where to cut |
How to read these¶
Every factual claim cites a legacy file and, where useful, a line number, relative to
legacy/applejack-old-final/. Values quoted as defaults come from
gamemode/sh_config.lua and are configuration, not constants.
Behaviour is described in the past tense ("the server charged $150"). Where a document
comments on the new design it is called out explicitly as a > **Design note:** block, so
that behaviour and intent are never confused.