Run rules
Twists for a whole run, picked on the New Game rules screen: a difficulty preset, New Game+, ironman, an in-engine randomizer and a Boss Rush mode. None of them exists in the original game. The default rules are the retail game, and every reader folds a rule in as an identity at that default, so a run with no rules plays bit-identically and writes byte-identical saves.
The rules
- Rule model
crates/engine-run-rules:RunRules(mode, difficulty, optional New Game+, ironman, randomizer), the presets, New Game+'s curve, the Boss Rush run, the rules screen session, the save body.- Shared planners
crates/randomizer: the disc patcher's seeded generator, drop planner and safety lists, used by the engine too.- World side
engine-coreworld::run_rulesandworld::run_rules_boss_rush, seated asWorld::run_rules.- Hosts
engine-sessionrun_rules: the rules screen, the run start, the Boss Rush driver. Ironman's card rules are the shared card writer's (engine-menu-runtimecard_write).- Save
- The optional
LGXFblock; a card block's engine-ext tail segment.
Difficulty presets
A preset is a bundle of scales and gates. Each scale multiplies the matching gameplay tweak at the reader the tweak already uses, so the two stack; Normal is retail.
| Knob | Easy | Normal | Hard | Nightmare |
|---|---|---|---|---|
| Enemy stats | 0.75x | 1x | 1.35x | 1.8x |
| Enemy attack count | 0.75x | 1x | 1.25x | 1.5x |
| EXP | 1.5x | 1x | 1x | 0.9x |
| Gold | 1.5x | 1x | 1x | 0.8x |
| Encounter rate | 0.6x | 1x | 1.25x | 1.5x |
| Shop prices | 0.8x | 1x | 1.25x | 1.5x |
| Healing items | 1.5x | 1x | 0.75x | 0.5x |
| AP gain | 1.25x | 1x | 1x | 0.75x |
| Smarter monsters | no | no | yes | yes |
| No escape | no | no | no | yes |
The AI knob is the existing smarter-targeting rule; Tetsu, the unwinnable sparring partner, keeps his stats at every preset.
New Game+
A New Game+ starts from any save on either card port, at that save's cycle plus one, keeping a chosen set: levels, equipment, items, Seru magic, arts, gold, cards. The source is loaded as a Continue would load it, the kept parts are snapshotted, and the New Game folds them back over the fresh records. Members the story has not introduced yet are written into the roster without joining, so the story's join keeps them; quest and key items stay where the story hands them over. An active pack's cards, items, worn gear and learned arts and spells carry too.
Enemies scale with the cycle and the party's strongest level, story bosses more steeply than ordinary monsters, so a set piece stays a fight at a cleared game's levels. While a pack is active the world raises the pack flags run.ng_plus, run.hard, run.ironman, run.randomizer and the counter run.ng_plus_cycle, which a pack's triggers and quests can gate on.
Ironman
An ironman run has a run id its saves carry. The shared card writer keeps one save per run, erasing every other save of the run after a write; a party wipe erases the run's save; each scene entry autosaves over it. Hardcore refuses the battle Item command.
The randomizer
The in-engine randomizer reassigns game data from a seed string with no disc patch, using the patcher's string-to-seed rule. Each part applies at its reader, keyed by the seed and the site (not the order the player meets them, and never through the game's own rand() stream).
| Part | Rule |
|---|---|
| Encounters | A random roll's seats redrawn from the scene's own encounter monsters, at most two species. |
| Monster stats | Each stat moved inside 0.8x to 1.25x per monster. |
| Drops and steals | Each item drawn from the sellable pool, its chance kept. |
| Shops | Each slot drawn from the sellable pool per scene, shop and slot. |
| Chests and gifts | Each item drawn from the sellable pool per scene and item. |
| Starting gear | Vahn's weapon and armour drawn from what he can wear. |
The safety rules are the patcher's own, from the shared crate: story bosses and tutorial enemies keep their stats and stay out of random fights, the Gimard fight is never redrawn, scripted fights never pass the roll sites, and no quest or key item ever moves. That is what keeps a randomized run completable. A chest's dialogue still names the scripted item.
Boss Rush
Boss Rush fights the story bosses back to back: Gimard, Caruban, Songi, Zeto, Xain, Dohati, Koru and Cort, then an active pack's bosses, easiest first, each at the level its quest chain first admits it at plus two. Each stage enters its retail scene and arms the story's own scripted row, after the party (Vahn, Noa, Gala) is raised to the stage's level through the ordinary EXP path. A win pays a purse and opens the intermission (next battle, rest, buy supplies, give up); a loss ends the run. The clock counts the stages, not the intermission, and the leaderboard rides every save the session makes.
The rules screen
The title's NEW GAME opens the screen on both hosts, except in retail-faithful mode. It opens on the retail rules with the cursor on Start. Up and Down pick a row, Left and Right change it, Cross confirms, Start begins the run from any row, Circle returns to the title. The screen sits on the world, so the shared screen layers draw it on the native window and the play page alike; the pause menu shows the run's summary line.
Saves and replays
The run's block is versioned JSON: the rules, a Boss Rush in progress, the leaderboard, the ironman run id. LGSF files carry it in LGXF; a card block carries it in the engine-ext tail after the expansion segment. A retail run writes no block. A determinism replay records the rules as a run_rules value row.
Tests
- Kernels.
engine-run-rules: retail identity, presets, round trips, the New Game+ curve, the Boss Rush run, the rules screen driven by pad. - World.
engine-coreworld::tests::run_rules: every reader the identity under retail rules, presets apply and clear, New Game+ carries the chosen parts, ironman marks the run, the randomizer is a function of its seed and keeps the protected fights. - Card.
engine-menu-runtime: one save per ironman run, the autosave lands on it, a wipe erases it. - Disc.
engine-shellboss_rush_disc: every stage's row seats its boss; a Boss Rush runs through its first stages.