Progression systems are the forge's favorite work. Added an FFT-inspired job system with 8 starter jobs, a full save/load system with 5 slots and quick save/load, a proper pause menu, and right-click inventory actions. The MMO prototype now has meaningful character progression beyond raw XP grinding.
FFT-Style Job System
Eight jobs from Squire (no prereqs, everyone starts here) through Ninja (requires Daggers Lv.5, Unarmed Lv.3, Rogue Rank 3, Monk Rank 2). Each job has 10 ranks progressed via Job Points earned from combat, 5 abilities across Active/Passive/Reaction/Support types, and per-rank stat bonuses. The key architectural decision was a WeaponSkillTracker separate from the existing SkillProgressionSystem — weapon skills track per-weapon-type XP (Sword, Dagger, Staff, Bow, Unarmed, Axe) and gate job unlocks, while the broad skill categories (Melee, Ranged, Magic) remain their own progression. JP awards split: active job gets full points, other unlocked jobs with matching weapon types get a third. A JobBonusProvider delegate on Player keeps the job system decoupled from entity code.
Hero's Guild Panel
The Hero's Guild NPC lives inside a physical building in town and opens a 3-tab panel: job browser with unlock status and prerequisite display, active job detail with JP progress bars and ability lists, and weapon skill XP overview. Hit a fun text overflow bug where Ninja's four-prerequisite description blew past the panel width — fixed with a word-wrap helper that indents continuation lines. Panel went from 340px to 440px wide in the process.
Save/Load System
Full state serialization to %LOCALAPPDATA%/MaybeAnMMO/Saves/ as JSON: position, level, XP, HP, gold, inventory, equipment, all skill levels, weapon skills, job progress, kill counts. Five named slots plus F5/F9 quick save/load. Each subsystem got a SetState() method for clean restoration — LevelSystem, SkillProgress, JobProgress, KillTracker, and Inventory all restore independently without re-triggering progression events.
Pause Menu
Replaced the "press Escape twice to quit" pattern with a proper menu: Resume, Save Game, Load Game, Controls, Quit Game. Sub-menus for save/load slot selection with date/level display, quit confirmation dialog. The classic same-frame-input bug showed up immediately — the Escape that opens the menu was being consumed by the menu's own input handler, closing it instantly. Fixed with a _justOpened frame guard that skips input on the first frame after opening.
Right-Click Inventory & Fixes
Right-click now consumes potions or equips gear from inventory, working in both overworld and dungeon screens. Also fixed the skills panel background not sizing to fit all entries, added the skills panel to the dungeon screen, and made cave entrance stone walls actually visible — they were using an inset placeholder with 3px transparent borders that rendered nearly invisible against grass.
What's Next
- Wire job abilities to actual gameplay effects (currently display-only)
- Secondary job slot bonuses and cross-job ability equipping
- Drag-and-drop inventory (right-click equip works, but no dragging yet)
- Proper cave wall art from the art pipeline