Posted July 10, 2025 by MoistAmerica
This guide explains how to create a menu-based move list system similar to RPGs like Pokémon, using only event scripting in GB Studio. Each menu slot displays a move name and executes different scripts based on player selection.
Each move slot contains:
An ID variable determining which move it represents
5 letter variables to spell out the move’s name (e.g., Punch → P, u, n, c, h)
Dynamic display using %c
syntax in a choice menu
When selected, the system looks up the move ID and executes the appropriate effect.
Create 4 ID variables for move slots:
Name them menu_slot_x_id
(where x is 1, 2, 3, or 4)
These IDs will represent different moves (e.g., 1 = Punch, 2 = Kick)
Create letter variables for each move slot:
Name them move_slot_x_letter_y
(x = slot ID, y = letter position 1-5)
Example: move_slot_1_letter_1
to move_slot_1_letter_5
for the first move
Create a script called “Change Letters in a Menu Slot”:
Add a switch statement checking the move_slot_id
parameter
For each case (move ID), add five “Set Variable to Value” events:
Set each letter_y
parameter to the ASCII code for the corresponding letter
Use online ASCII converters to find the correct codes
Example for “Punch”:
Case 1:
Set letter_1 to 80 (P)
Set letter_2 to 117 (u)
Set letter_3 to 110 (n)
Set etter_4 to 99 (c)
Set letter_5 to 104 (h)
Create a script called “Set All Displayed Menu Items”:
Call “Change Letters in a Menu Slot” four times
For each call:
Pass the appropriate move_slot_x_id
as the argument
Pass the appropriate ‘move_slot_x_letter_y’ for each letter argument
Create a script called “Move Effects”:
Add a switch statement checking the move_slot_x_id
parameter
For each case (move ID), add the move’s logic:
Example for Kick (ID 2):
Case 2:
Show Text: "The player kicks the enemy!"
[Add damage calculation or other effects here]
Below the Display Menu event:
Add a switch statement checking the menu_choice
variable
For each case (1-4):
Call the “Move Effects” script
Pass the corresponding move_slot_x_id
as the argument
Example for case 3:
Call Script: Move Effects
Argument: move_slot_3_id
Test your menu to ensure all moves display correctly and trigger the proper effects
Consider adding a separate scene to manage move assignments in a full game
Document your move IDs and their corresponding effects for future reference