10 Cookbook
bryanthaboi edited this page 2026-10-20 17:01:40 -04:00

Cookbook

Find the change you want, then read that recipe's prerequisites before copying code. First change recipes need only the two-file mod setup. Basic Lua assumes the tables and functions in Modding Basics. Callbacks, hooks, rendering, and platform integrations add further concepts; an outline deliberately leaves part of the feature for you to implement.

New here? Complete Your First Change first. Use the tutorials when you want a whole working project. Every recipe below links directly to its section and names a fuller walkthrough.

Recipes are written against Red. A Gen 2 / Gen 3 line under a recipe says what carries over to Gold, Silver and Crystal and to FireRed, LeafGreen, Ruby, Sapphire and Emerald, and what does not. For one source that runs on every game, see Portable Mods across Gen 1, 2 and 3; for Gold-specific routing, Preparing Your Mod for Gen 2.

# Recipe Level Primary API Page
R01 Recolor a battle sprite Basic Lua asset transform Tweaks
R02 Rewrite one dialogue line First change text:override Tweaks
R03 Buff a move's power Basic Lua moves:patch Tweaks
R04 Rebalance a species' stats Basic Lua pokemon:patch(baseStats) Tweaks
R05 Change a wild encounter table Basic Lua encounters:patch Tweaks
R18 Change a trainer's party Basic Lua trainers:patch(parties) Tweaks
R08 Add a Mart item Basic Lua items:register + text_pointers Items and Balls
R09 Define an item use effect Basic Lua item_effects:register Items and Balls
R10 Add a new Poke Ball Basic Lua balls:register Items and Balls
R11 Add a new move (existing effect) Basic Lua moves:register Species and Moves
R12 Add a custom move effect Callbacks move_effects:register Species and Moves
R13 Add a new species Basic Lua + assets pokemon:register Species and Moves
R14 Give a species a party icon Basic Lua + assets icons:register Species and Moves
R15 Give a species a cry Basic Lua + audio cries:register Species and Moves
R16 Add a growth curve Functions growth_rates:register Species and Moves
R17 Add an evolution method Advanced outline evolution_methods:register Species and Moves
R06 Retarget a map's music First change map_songs:override Audio
R07 Replace one SFX with a file Basic Lua sfx:override({file=}) Audio
R26 Author a chiptune (ChipAsm) Advanced audio ChipAsm + music:register Audio
R20 Add a script command Scripting mod.commands:register World and Scripting
R21 Add a text token Functions + text tokens:register World and Scripting
R22 Add a talk script to an NPC Scripting map_scripts:register(talk) World and Scripting
R23 Spawn a new NPC on a map Events mod.world:spawnNpc World and Scripting
R24 Add an onStep trigger Callbacks map_scripts compose World and Scripting
R25 Add a new map + connection Map authoring maps:register World and Scripting
R19 Add a custom AI brain Advanced callbacks trainers:patch(brain) Battle and Mechanics
R27 React to a battle event Events events:on("battle.move_used") Battle and Mechanics
R28 Wrap the damage hook Hooks hooks:wrap("battle.damage") Battle and Mechanics
R29 Add a status condition Advanced mechanics statuses:register Battle and Mechanics
R30 Add a type + chart row Basic Lua + mechanics type_chart:register Battle and Mechanics
R31 Add a Start-menu entry UI hooks hooks:wrap("ui.start_menu.items") UI and Infrastructure
R32 Register a custom screen UI callbacks screens:register + push_screen UI and Infrastructure
R33 Persist mod state Events + saves mod.save:get/set UI and Infrastructure
R34 Define a mod option Basic Lua mod.options:define UI and Infrastructure
R35 Export an inter-mod API Advanced multi-mod example mod.exports + mod.find UI and Infrastructure
R36 Scale a battle sprite Basic Lua + art battle_sprite_scales:register / pokemon:patch Battle and Mechanics
R37 Reshape Oak's intro speech UI hooks + saves hooks:wrap("intro.oak_speech.build") UI and Infrastructure
R38 Gen-2-like ruleset toggles Advanced mechanics rulesets + hyperBeamSkipRechargeOnKO Battle and Mechanics
R39 Shiny indicator overlay Advanced rendering battle.overlay + Stats.isShiny Battle and Mechanics
R49 Pick Pokémon sprites on the fly Advanced outline pokemon.sprite / pokemon.icon Battle and Mechanics
R50 Swap the player's trainer art Art or advanced hooks field.playerPics / player.sprite Battle and Mechanics
R40 Running shoes Hooks movement.speed World and Scripting
R41 Day / night palette Hooks + palettes world.tod + map.palette World and Scripting
R42 Slower / faster warp fades Basic Lua transitions:patch("warp_fade") World and Scripting
R51 Make an ordinary NPC battleable Advanced scripting trainers:register + maps/map_scripts World and Scripting
R43 CD-quality map soundtrack Basic Lua + audio music:override({file=}) Audio
R44 Distance / indoor music volume Hooks music.volume Audio
R45 Bag wrap / page-jump / hold-scroll UI hooks ui.list_menu UI and Infrastructure
R46 Digits on the naming screen UI hooks ui.naming.grid UI and Infrastructure
R47 Wider survey zoom Hooks zoom.range UI and Infrastructure
R48 Super Game Boy border Advanced rendering + art render.letterbox UI and Infrastructure
R52 One-button field actions Hooks + world API mod.world:availableFieldActions World and Scripting
R53 Gen-2-style battle QoL toggles UI hooks battle.caught_marker_visible + grid navigation Battle and Mechanics
R54 React to real-world steps Platform integration mod.steps (steps permission) UI and Infrastructure
R55 Species / trainer battle theme Basic Lua + audio pokemon:patch + trainers:patch(battleTheme) Audio
R56 Trainer palette and per-party names Basic Lua + art trainers:patch(palette, partyNames) Battle and Mechanics

No recipe reaches the total-conversion tier; that is a guided rung (Tutorial 12), not a copy-paste snippet, because it coordinates every subsystem at once.