Skip to content

Choose A Registry

bryanthaboi edited this page Sep 9, 2026 · 1 revision

Choose a registry

Use this page when you know what you want to change but do not yet know the registry name. A registry is the named collection of game records that a mod can change. After choosing one, use the generated Registry reference for the exact required fields.

Before you choose

Where code goes: put registry calls in your mod entry file, usually main.lua. Content is combined during startup, before the live game begins; see Lifecycle. Status: the calls on this page are small, paste-ready patches when the named id already exists. New records need the required fields shown in the generated reference.

First choose the operation:

You want to Operation
Change part of an existing record patch
Add a record with a new id register
Replace a whole existing record override
Make a record unavailable remove

patch is the usual first choice. It keeps fields you do not mention. See Content registries for list, deep, and compose merge rules before changing a list or map_scripts entry.

Find your task

You want to make Start with You may also need
Change a Pokémon's stats, type, moves, sprite path, or evolution pokemon moves, icons, cries
Change an existing move or add a move effect moves move_effects, battle_anims
Change an item, Poké Ball, or item behavior items item_effects, balls
Change a trainer's party or reward trainers ai_classes, music
Change dialogue or an engine message text strings, text_pointers
Add or change a map, its layout, or encounters maps tilesets, encounters, sprites
Add map dialogue, a cutscene, or a script map_scripts Script commands, text
Change startup location, badge data, or overworld tables field constants
Add a screen, menu asset, or interface text screens strings, The mod object
Add music, a sound effect, a cry, palette, or font music, sfx, cries palettes, font
Add a script command, status, growth curve, or evolution method commands, statuses growth_rates, evolution_methods
Change a rule that is computed while the game runs Events and Hooks Hook reference

Read the type column

The generated reference is exact but compact. Read its type descriptions this way:

Notation Meaning
string, number, boolean ordinary Lua text, numeric, or true/false value
function code the engine calls later; find its documented arguments and return value before writing it
{ field, otherField? } a record: a Lua table with named fields; ? marks an optional field
list of T an ordered Lua table whose entries have type T
map of K -> V a Lua table that maps each key shaped like K to a value shaped like V
A | B either listed shape is accepted
moves id, items id, and similar the internal id of a record in that named registry, not its displayed name

For example, this patch changes one field on the existing move whose internal id is BLIZZARD:

mod.content.moves:patch("BLIZZARD", { accuracy = 70 })

Choose the target game

Most registry names work across generations, but their record fields or target tables can differ. Use the main schema for Red, Blue, and Yellow; use the On Gold (Gen 2) subsection when targeting Gold; read both when supporting both. Some registries are explicitly Gen 2 only or have no Gold home, and the generated reference says so at the relevant entry.

Player link setup is separate from registry authoring: configure it in the launcher with a vanilla cart or sealed custom cart. A sealed cart is the supported route for its pinned mods; freely enabled loose mods, including cosmetic mods, are not a supported link setup. The generated link_fields entry is low-level cart-protocol material, not a way to approve loose mods.

Next steps

Clone this wiki locally