Files
gen1recomp/tests/engine
Shane McGovern e12cda633a Close Gold's encounters id space so an unknown id fails the mod
mod.content.encounters:patch on a Gold boot keys by encounter KIND
(encounters.grass.ROUTE_29), but the id space was open: a key the
catalog did not describe was treated as a mod's own data and merged
as-is.  A Gen 1 encounters mod ported unchanged writes the MAP where
Gold wants the kind, so the call was accepted, merged into
data.gen2Encounters.ROUTE_29 and read by nothing -- vanilla game, no
error, nothing in the Mod Manager (#2369).

That key cannot be a mod's own data the way an extra palette id can:
src/battle/gen2/Encounter.lua, src/core/gen2/Roamers.lua,
src/core/gen2/BugContest.lua and src/world/gen2/World.lua read this
table by name and the set of names is fixed, so an unknown id is a
write nothing reads.  Add an opt-in `keysClosed` shape slot (folded by
Schemas.shapeFor like the other gen2* slots) that Schemas.check honours
in its keys/keyValue branch, and set it on encounters' Gen 2 spec.  An
unknown id now names the ids that do exist instead of silently
no-opping; api 2 fails the mod, api 1 keeps the warning.

Also catalogue roamMons, which the extractor has always emitted
(RomExtractorGen2:readRoamMons) and Roamers.roster has always read, but
which was missing from gen2Keys.

Only encounters opts in: palettes, battle_anims and constants keep
their open id spaces, and Red's encounters id space is untouched.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-21 09:14:53 +01:00
..
2026-08-28 10:14:44 -04:00
2026-08-18 09:51:22 -04:00
2026-08-18 09:20:07 -04:00
2026-08-18 09:20:07 -04:00
2026-08-18 09:20:07 -04:00
2026-08-24 07:52:05 -04:00
2026-08-24 07:52:05 -04:00
2026-08-24 07:52:05 -04:00
2026-08-24 09:02:56 -04:00
2026-08-28 10:14:44 -04:00
2026-08-31 08:41:02 -04:00
2026-07-19 16:18:18 -04:00
2026-09-02 10:02:32 -04:00
2026-09-11 09:11:34 -04:00
2026-07-19 16:18:18 -04:00
2026-08-28 10:14:44 -04:00
2026-08-11 11:53:30 -04:00
2026-09-18 15:42:32 -04:00
2026-07-19 16:18:18 -04:00
2026-09-18 15:42:32 -04:00
2026-07-19 16:18:18 -04:00
2026-08-28 10:14:44 -04:00
2026-08-31 07:56:27 -04:00
2026-08-28 10:14:44 -04:00
2026-09-11 09:11:34 -04:00
2026-09-18 15:42:32 -04:00
2026-08-06 09:57:31 -04:00
2026-07-30 11:35:57 -04:00
2026-08-28 10:14:44 -04:00
2026-09-09 12:23:55 -04:00
2026-08-25 09:21:33 -04:00
2026-08-06 09:57:31 -04:00
2026-08-21 14:03:25 -04:00
2026-08-28 10:14:44 -04:00
2026-08-24 07:52:05 -04:00
2026-08-28 10:14:44 -04:00
2026-09-03 07:11:31 -04:00
2026-09-16 16:42:59 -04:00
2026-09-18 17:19:05 -04:00
2026-09-18 15:42:32 -04:00
2026-08-18 11:29:50 -04:00
2026-08-18 09:51:22 -04:00
2026-08-10 14:27:00 -04:00
2026-08-28 10:14:44 -04:00
2026-08-28 10:14:44 -04:00
2026-08-28 10:14:44 -04:00
2026-08-28 10:14:44 -04:00
2026-08-26 12:04:06 -04:00
2026-07-25 15:21:49 -04:00
2026-07-25 15:21:49 -04:00
2026-08-24 07:52:05 -04:00
2026-08-11 16:55:06 +02:00
2026-08-12 11:38:17 +02:00
2026-08-24 13:07:11 -04:00
2026-08-06 14:36:01 -04:00
2026-08-25 09:16:59 -04:00
2026-08-19 06:41:10 -04:00
2026-08-21 16:36:55 -04:00
2026-08-21 14:38:54 -04:00
2026-08-21 16:36:55 -04:00
2026-09-16 16:42:59 -04:00
2026-08-18 09:20:07 -04:00
2026-09-09 09:46:27 -04:00
2026-08-20 20:36:23 -04:00
2026-09-09 09:46:27 -04:00
2026-09-09 09:46:27 -04:00
2026-08-20 20:07:10 -04:00
2026-07-31 10:45:12 -04:00
2026-08-14 17:07:06 -04:00
2026-08-20 20:07:10 -04:00
2026-08-26 12:04:06 -04:00