Essentials Docs Wiki

The Essentials wiki has moved and is now at: Essentials Engine wiki

This wiki will no longer be updated.

READ MORE

Essentials Docs Wiki
Advertisement

Below is a list of the script sections which contain all the code for Pokémon Essentials (Version 16.1). Each section gives a brief description of its purpose and lists the major methods and classes defined in each section. If there is a main article pertaining to the scripts purpose, it will be linked.

The list of methods and classes is not exhaustive (as that would take up a lot of space) but are representative. For coders looking for a particular method in the library, please use the Ctrl+Shift+F function in RMXP's Script Editor to do a "find all".

Settings

This section is a collection of constants that define various things the user can easily turn on and off. The options available are some of the most common things users would want to change. They include switches and constants for:

  • Screen size
  • Pokemon level cap, egg level, shiny and pokerus chances
  • Overworld Mechanics: poison, fishing, diving, berries
  • Infinite TMs
  • Day/Night Shading
  • Signposts (the route name that appears on-screen)
  • Battle Mechanics: physical/special split, Gen 6 battle and EXP mechanics, scaled EXP, critical capture
  • Badge boosts, Badge requirements for HM use.
  • Bag pocket names, size limits, and sorting. (pbPocketNames)
  • Storage system size, and creator name (pbStorageCreator)
  • Pokedex mechanics (pbDexNames)
  • Money limits
  • Rival names in battle
  • Roaming pokemon settings
  • Poké Radar settings
  • Region map extras
  • Contest settings
  • Assigning global switches, common events, and animations to Essentials mechanics.
  • Languages for internationalization.
  • Whether to allow the user to use the keyboard instead of the on-screen keyboard to enter text.


RGSS2Compatibility

These scripts support the use of RGSS2 players in Pokémon Essentials. Note that this is not the same as Essentials being compatible with RPG Maker VX - only the RGSS2 player is compatible.


RPG__Sprite

Defines
SpriteAnimation

This section contains the basic definition of what a sprite is. Practically everything visual in the game depends on this.

Win32API

This section connects the game with Window's API, which allows it to do things like reposition the main window and set the window title.


Sockets

Defines
pbPostData
pbDownloadData
pbHttpRequest
pbDownloadToString
pbDownloadToFile
pbPostToString
pbPostToFile
Main article: Internet

This section handles how the game can connect to the Internet and retrieve information. This is used by Essentials' Mystery Gift function.


DebugConsole

Defines
Console::setup_console
Console::readInput
Console::readInput2
Console::get_input
Kernel.echo
Kernel.echoln

This section defines the debug console built into Essentials. To use the console, open up the debug menu in-game (F9) and select the "Open Debug Console" option at the bottom of the list. This console cannot be typed into (usually), but it will output logging information. To log to the console, use Kernel.echo(string) or Kernel.echoln(string).


Game_Temp

This section defines Game_Temp, which handles all temporary data. This data is NOT saved in a save game. Use $game_temp to access the global instance of this class. Most all of the data kept in this class is used by Essentials internally; chances are slim that you'll need to touch this data.

Game_System

Defines
$game_system.timer
$game_system.save_disabled
$game_system.menu_disabled
$game_system.encounter_disabled
$game_system.save_count
$game_system.bgm_play(bgm)
$game_system.bgm_memorize
$game_system.bgm_restore
$game_system.me_play(me)
$game_system.bgs_play(bgs)
$game_system.bgs_stop
$game_system.bgs_fade(time)
$game_system.se_play(se)

This section defines Game_System, which handles various system data which is saved in the save file. Use $game_system to access the global instance of this class. There are functions which play music and sound effects in this class.


Game_Switches

Main article: Events#Global_Switches

This section defines Game_Switches, which handles the game's Global Switches. Use $game_switches to access the global instance of this class. You cannot have more than 5000 switches.

Note: Script Switches do not have the results of their scripts stored in them. For example, $game_switches[15] (switch 15, defined as "s:PBDayNight.isNight?(pbGetTimeNow)") will always contain false regardless of the time of day.


Game_Variables

Main article: Events

This section defines Game_Variables, which handles the game's Global Variables. Use $game_variables to access the global instance of this class. You cannot have more than 5000 variables.

Game_SelfSwitches

Main article: Events

This section defines Game_SelfSwitches, which handles the game's event Self Switches. Use $game_self_switchesto access the global instance of this class. Keys into this hashmap are an array, of the form [mapid, eventid, switchname].

You should use the function pbSetSelfSwitch(eventid,switch,value) to set self-switches of other events on the current map.


Game_Screen

Defines
$game_screen.start_tone_change
$game_screen.start_flash
$game_screen.start_shake
$game_screen.weather

This section defines Game_Screen, which handles visual effects such as changing the colour tone of the screen or flashing. Use $game_screen to access the global instance of this class.


Game_Picture

This section defines Game_Picture, which handles displaying pictures. Instances of this class are used in Game_Screen.

Game_Map

Defines
$game_map.name
$game_map.map_id

This section defines Game_Map, which contains the basic definition of a game map. Use $game_mapto access the current map's instance.


Game_Map_Resolution

This section extends Game_Map to allow Essentials to scale up the game, and includes display corrections for when the map is set to snap to edges (i.e. the screen stops scrolling).


Game_Map_Autoscroll

Defines
autoscroll(x,y,speed)
autoscroll_player(speed)

This section extends Game_Map to allow easier map scrolling for cutscenes. The functions listed to the right are defined in the Interpreter, and thus will work unadorned from event scripts.

This section handles additional map scrolling features. These additional features include:

  • Scrolling to a given map location or to the player.
  • Following a moving character.
  • Setting the speed at which the scrolling occurs.
  • Scrolling diagonally.

The supported commands are as follows:

autoscroll(x,y) Scrolls to the given coordinates (at a default speed of 4). Diagonal scrolling occurs automatically. The coordinates can be variables as well as numbers (e.g. setting the variables to equal the coordinates of an NPC means the screen will follow that NPC).
autoscroll(x,y,speed) As above, but you can also define the scroll speed (between 1 and 6).
autoscroll_player(speed) Scrolls to (and follows) the player at the given speed (between 1 and 6).

The above commands must be on a single line in an event's "Script" command, and must be the first line in that command.


Game_CommonEvent

This section defines Game_CommonEvent, which handles common events. Common events are those listed in the Database.


Game_Character

Defines
Game_Character
  .moving?
  .jumping?
  .moveto(x,y)
  .move_{direction}
  .turn_{direction}
  .move_towards_player
  .move_away_from_player
  .jump(x_plus,y_plus)

This section defines Game_Character, which handles various aspects of game events, including basic definition, forced move routes, centring the screen on the player, and bushes.


Game_Event

Defines
Game_Event
   .map_id
   .name
   .id
   .tsOn?(c)
   .tsOff?(c)
   .setTempSwitch{On|Off}(c)
   .switchIsOn?(id)

This section defines Game_Event, a subclass of Game_Character, which handles the basic details of events.

This class defines a concept of "TempSwitches", which are switches which are kept in the instance of the Game_Event only, and not saved off even between map changes. Thus Temporary switches are reset when the player leaves the map and comes back. Doors in the Essentials example project use temporary switches to play the animation of the player leaving a house once and only once upon map load. (Hint: If you're having trouble making the exit animation on doors play when you're moving a player between rooms on the same map, set the temporary switches of the doors on the map back off as part of the transition.)

The .switchIsOn?(id) function defined in this class is responsible for executing Script Switches and returning the result to the event's condition evaluation process.


Game_Player

Defines
$game_player.move_{direction}
$game_player.pbHasDependentEvents?
$game_player.pbTriggeredTrainerEvents
$game_player.pbTriggeredCounterEvents
$game_player.center(x,y)

This section defines Game_Player, a subclass of Game_Character, which handles the player character, including movement, checking whether a trainer can spot the player from a distance, tile passabilities, map scrolling and interacting with events. Use $game_player to access the global instance of this class.

The function pbTriggeredTrainerEvents checks all events named "Trainer(##)" on the current map to see if they can reach the player. The function pbTriggeredCounterEvents checks all events named "Counter(##)" on the current map to see if they are facing the player. Both methods return all events that pass their respective checks in an array.


Walk_Run

Defines
$game_player.pbCanRun?
$game_player.pbIsRunning?
Main article: Getting around

This section extends Game_Player to how the player runs and cycles, including defining where these can be done and how quickly the player moves when they do so. It also defines the player's walking speed.


Sprite_Character

This section defines BushBitmap and Sprite_Character. They handle how bush tiles are displayed, and the display of an event's sprite.


Sprite_Picture

This section defines Sprite_Picture, which handles the display of sprite pictures (stored in "Graphics/Pictures/").

Sprite_Timer

This section defines Sprite_Timer, which handles showing a window displaying a timer, usually one that counts down to 0.


Sprite_Resizer

Defines
pbSetResizeFactor
pbConfigureFullScreen

This section extends several classes which allow the game to zoom the game to a 0.5, 1.5, and 2.0 times the size of normal.


Spriteset_Map

This section defines ReflectedSprite and ClippableSprite, which handle reflecting sprites in still water (terrain tag 6tiles). It also defines Spriteset_Map, which handles displaying maps.


Tilemap_XP

This section defines CustomTilemap, as well as several supporting classes, which reimplement XP's Tilemap class with functionality for scaling and specialized autotiles. (?)


Tilemap_Perspective

Defines
ScreenPosHelper::pbScreenZoom{X|Y}
 ScreenPosHelper::pbScreen{X|Y|Z}
 ScreenPosHelper::bmHeight
 bltMinimapAutotile
 getPassabilityMinimap
Main article: Perspective mode

This section defines Draw_Tilemap along with a few helper methods, which deal with showing maps in perspective mode


TilemapLoader

This section defines TilemapLoader, which is a proxy class for the various kinds of TileMap classes defined in previous sections.


TileDrawingHelper

This section defines TileDrawingHelper, which handles how autotile graphics are arranged, and how to draw them and regular tiles.


AnimationSprite

Defines
Spriteset_Map
  .addUserSprite
  .addUserAnimation

This section defines AnimationSprite, which is used to display one-off animations on the map (like grass rustling). This section extends Spriteset_Map to use AnimationSprite.


ParticleEngine

Main article: Particle effects

This section defines Particle_Engine and helper classes, which handle the display of particle effects, such as those on Route 3 in the Essentials example project. It defines the effects "fire", "smoke", "teleport", "spirit", "explosion", "aura", "soot", "sootsmoke", "rocket", "fixteleport", "smokescreen", "flare", "splash", and "starteleport". This section extends the Game_Event class to support these particle effects.


DynamicShadows

This section defines Sprite_Shadow, which displays the dynamic sprite shadows created when walking near a shadow source (as seen on Cycling Road in the Essentials example project). This section extends Sprite_Character, Game_Event, and Spriteset_Map to support this.

Interpreter

Defines
pbExecuteScript
get_character

This section defines Interpreter, which handles the running of game events. This class defines how the game runs every command you can put in an event. See the execute_command function to find which command_### function applies to which event command.


Event

Defines
Event
  .trigger
  +=proc
  -=proc

This section defines Event, which is an event listener structure (and not related to RMXP events). Given an instance of the Event class evt, you can register a callback to be run by using:

evt+=proc {|sender,params|
  # Your code here
}

Procedures can be deregistered by using -=, and the callback list can be triggered using the trigger(args) and trigger2(args) methods. This is used by item effects, encounter generation, player step reactions, etc.

The class HandlerHash is also defined in this section.


File_Mixins

Defines
FileInputMixin
FileOutputMixin
File
StringInput
StringOutput

This section defines several functions for file IO.


Intl_Messages

Defines
pbAddScriptTexts
pbAddRgssScriptTexts
pbSetTextMessages
pbGetText
pbCompileText
pbLoadMessages
_INTL(*arg)
_ISPRINTF(*arg)
_I(str)
_MAPINTL(mapid,*arg)
_MAPISPRINTF(mapid,*arg)

This section defines MessagesMessageTypesOrderedHash, and several functions for internationalization.


PBDebug

This section defines PBDebug, which handles logging to files.


Audio

Defines
safeExists?(f)
Audio.bgm_play
Audio.bgm_fade
Audio.bgm_stop
Audio.me_play
Audio.me_fade
Audio.me_stop
Audio.bgs_play
Audio.bgs_fade
Audio.bgs_stop

This section defines the Audio module, which handles the playing of audio files.


AudioPlay

Defines
pbBGMPlay(param)
pbBGMFade
pbBGMStop
pbMEPlay(param)
pbMEFade
pbMEStop
pbBGSPlay(param)
pbBGSFade
pbBGSStop
pbSEPlay(param)
pbSEFade
pbSEStop
pbPlayCursorSE
pbPlayDecisionSE
pbPlayCancelSE
pbPlayBuzzerSE

This section defines several global functions for playing audio. These functions are likely what you want to use if you want to play audio from a script.


AudioUtilities

Defines
Audio.noise
Audio.envelopeDuration
Audio.oscillateDouble
Audio.oscillate
Audio.frac
Audio.sine
Audio.doubleSine
Audio.noise2
Audio.square
Audio.dtmf
Audio.beep
Audio.triangle
Audio.triangle2
Audio.playTone
Audio.saw
ringtone(duration)
backspace
callwaiting
callheld
loudFastBusy
tone{CountyCode}
beginRecord
getRecorderSample
stopRecord
endRecord

This section extends the Audio module to include ways to generate sounds and notes on the fly. Helper methods include ways to create tones you would hear on a phone. It also defines functions for recording audio and saving it off, used in Essentials' implementation of the Chatter move.


BitmapCache

Defines
WeakRef
WeakHashtable
Cache
BitmapWrapper
BitmapCache.load_bitmap

This section defines the BitmapCache module, which handles caching loaded image files.


Window

This section defines the Window class, which is the base class for text windows, command lists, etc. The code to draw the windows from a small bitmap is defined in this section.

SpriteWindow

Defines
MessageConfig
GifLibrary
AnimatedBitmap
SpriteWrapper
AnimatedSprite
IconSprite
ColoredPlane
AnimatedPlane
SpriteWindowCursorRect
SpriteWindow
SpriteWindow_Base
SpriteWindow_Selectable
SpriteWindow_SelectableEx
Window_DrawableCommand
Window_CommandPokemon
Window_AdvancedCommandPokemon
Window_UnformattedTextPokemon
Window_AdvancedTextPokemon
Window_InputNumberPokemon
Window_CommandPokemonEx
Window_AdvancedCommandPokemonEx
IconWindow
PictureWindow
pbGetTileBitmap
pbGetAnimation
pbGetTileset
pbGetAutotile
pbFadeOutIn
pbFadeOutAndHide
pbFadeInAndShow
pbResolveBitmap
addBackgroundPlane
pbSetSystemFont
pbRgssExists?
pbRgssOpen

This section defines many classes and methods which Essentials uses to draw its UI windows, and its animated sprites. It also defines a few methods for opening data files.

  • The MessageConfig module defined at the top of the file defines many of the default colors and fonts used by the system.
  • The AnimatedBitmap proxy class is used by much of the library to display almost everything, from pokemon's icons in the party screen, to battlers in battle, to items in the bag, to cards in Triple Triad.
  • The SpriteWindow class is the base for every window used by Essentials' UI. It has many subclasses that serve many different purposes.
  • The pbFadeOutIn method is used in several places to fade out to a new submenu, such as when you go into the party screen from the pause menu.


DrawText

Defines
getLineBrokenChunks
renderLineBrokenChunks
renderLineBrokenChunksWithShadow
getFormattedText
drawBitmapBuffer
Main article: Messages

This section defines several methods which handle the drawing of text to the screen, as well as the effects of the various message modifiers (colour changes, repositioning, displaying extra things, etc).


Messages

Defines
pbMapInterpreterRunning?
pbMapInterpreter
pbGlobalLock
pbGlobalUnlock
pbChooseNumber
Kernel.pbMessage
Kernel.pbMessageChooseNumber
Kernel.pbConfirmMessage
Kernel.pbConfirmMessageSerious
pbPositionFaceWindow
pbPositionNearMsgWindow
pbGetMapNameFromId
Kernel.pbMessageDisplay
Main article: Messages

This section defines many of the methods Essentials uses to display messages to the player.

  • Kernel.pbMessage is the most basic message display, and the one you most often will use when displaying a message from a script. It is the method called internally when you use a Text Command in an event.
  • Kernel.pbConfirmMessage and pbConfirmMessageSerious display a Yes/No (or in the case of -Serious, a No/Yes) choice to the player.
  • Kernel.pbMessageChooseNumber will ask the player to enter a number.
  • Kernel.pbMessageDisplay is the eventual call of all of the above. This is where the message you passed has all of its modifiers and text replacements processed.


TextEntry

Defines
Window_TextEntry
Window_MultilineTextEntry
Window_TextEntry_Keyboard
PokemonEntryScene
PokemonEntryScene2
getLineBrokenText
Kernel.pbFreeText
Kernel.pbMessageFreeText
pbEnterText
pbEnterPlayerName
pbEnterPokemonName
pbEnterBoxName
pbEnterNPCName

This section defines several methods and classes which handle the various text entry methods available in Essentials.


EventScene

Defines
PictureEx
PictureSprite
EventScene
setPictureSprite
pbEventScreen

This section defines the EventScene class, which is the base class for scenes that are not menus and not maps, such as the Intro splash screens, and the screen displaying the controls when starting the game. It also defines pbEventScreen(evtScene), which displays a subclass of the EventScene.


Scene_Map

This section defines the Scene_Map class, which is defines the scenes while the player character is walking around in the overworld. This class is where transferring the player, updating the map, input handling while in the overworld is handled.


Scene_Intro

Main article: Game intro

This section defines the IntroEventScene and Scene_Intro classes, which handle the intro and splash screens that appear at the start of a game.


Scene_Controls

This section defines the ButtonEventScene class, which handle the display of the controls screen, usually provided at the start of a new game when the professor asks if there is any help he can give.


Scene_Movie

This section defines the Scene_Movie class, which handles the playing of AVI movie files in-game. Movies must be in a folder "Movies" in the main game directory. Use the following code to load a movie scene:

$scene = Scene_Movie.new("MovieName")

When the movie is done or the player presses B, the game will return to the overworld view (the Scene_Map).


Scene_Credits

Main article: Credits

This section defines the Scene_Credits class, which handles the display of the credits.

To insert your own credits, edit the lines that say "Credits go here". To play the credits, use the following script:

$scene = Scene_Credits.new

All graphics used by this script are in the "Graphics/Titles" folder. You can add or change the images used by editing the CreditsBackgroundList at the top of this script section. The credits are displayed with a scrolling effect.

Transitions

This section overrides Graphics.transition to define several transition effects that occur just before a battle starts.

Tip: If you're experiencing issues with the fade effect when using Graphics.transition comment out lines 95 and 96 in this section:

elsif dc==""
  @@transition=FadeTransition.new(duration)

Doing so will revert the fade effect to the stock RMXP fade effect.


MiscData

Defines
PhoneDatabase
PhoneMsgType
PokemonMetadata
pbLoadMetadata
pbGetMetadata
pbLoadPhoneData
pbOpenDexData
pbDexDataOffset
Main article: Metadata

This section defines the PokemonMetadata module, which defines the various metadata that Essentials looks for in the metadata.txt PBS file. This section also defines a class for Phone metadata and several methods to get map metadata.


PBMove

Main article: Moves

This section defines PBMoveData and PBMove classes, which handles moves, both reading the move data from the data files and defining the properties of a move (e.g. type, PP, etc.).


PBStatuses

This section defines the PBStatuses module, which is where permanent (i.e. out of battle) Pokémon statuses are enumerated. This does not include confusion/infatuation/etc. which are all "volatile" in-battle conditions which a Pokémon can have in addition to a permanent status.

The effects of these statuses are not included here. The Pokérus status is also not defined here, as it is an unrelated effect.


PBTypes_Extra

This section extends the PBTypes class, which handles data regarding elemental types, including their Physical/Special category and type effectiveness calculations.


PBNatures

This section defines the PBNatures module, which enumerates the ID numbers and names of Pokémon natures. The effects of natures are not included here.


PBExperience

This section defines the PBExperience module, which lists the experience thresholds for each level for each growth type. The thresholds for levels below 100 are listed as individual numbers in an array, whereas those for level 101 and above have formulae for calculating them.


PBStats

This section defines the PBStats module, which enumerates the eight stats that all Pokémon have. This includes HP, Attack, Defense, Speed, Special Attack, and Special Defense, as well as the two in-battle stats, Accuracy and Evasion.


PBRibbons

This section defines the PBRibbons module, which enumerates the ID numbers, names and descriptions of ribbons.


PBEggGroups

This section defines the PBEggGroups module, which enumerates the ID numbers and names of the various egg groups.

PBColors

This section defines the PBColors module, which enumerates the IDs and names of the Pokedex color categories.


PBEnvironment

This section defines the PBEnvironment module, which enumerates the different environment types. These environment types are used to determine the appropriate backdrops for battles, as well as some move effects.


PBEffects

This section defines the PBEffects module, which enumerates all the variables used for lingering effects of attacks/abilities/items (e.g. Choice Band, Disable, Protect, Flinch, Toxic). Their effects are not included here.


PBWeather

This section defines the PBWeather module, which enumerates all the possible in-battle weather types. The effects of in-battle weather are not included here.


PBTargets

This section defines the PBTargets module, which enumerates all possible target combinations for a given move.


PokeBattle_ActiveSide

This section defines the PokeBattle_ActiveSide and PokeBattle_ActiveField classes, which contain the variables used for lingering move effects that affect all Pokémon on the battle field or just one side of a battle (i.e. the player's side or the opposing side). Their effects are not included here.


PokeBattle_DamageState

This section defines the PokeBattle_DamageState class, which is used in the PokeBattler_Battler class (see below) to keep track of several different flags used in battle for damage calculation, including the last amount of hp lost, whether the last hit was a critical, whether a substitute too the damage, etc.


PokeBattle_Battler

Defines
PokeBattle_Battler
  .battle
  .pokemon
  .hasMega?
  .isMega?
  .pbThis
  .pbHasMove?
  .hasWorkingAbility
  .hasWorkingItem
  .pbReduceHP
  .pbRecoverHP
  .pbFaint
  .pbObedienceCheck?
  .pbTryUseMove
  .pbUseMove

This section defines the PokeBattle_Battler class.

A battler is a separate entity to a Pokémon. This allows the battler to be changed in dramatic ways (e.g. using Transform) without affecting the Pokémon it is based on.

This section defines all the in-battle properties a battler has. This includes species, level, moves, stats, etc. (copied from the Pokémon), as well as things like whether it is fainted, what its last used move was, the stat modifier stages, and which other battlers will gain experience from it when it is defeated.

It also contains various functions that affect individual battlers, including one that faints the battler, one that determines the battler's modified speed, ones that affect status, one that describes what happens when a held item is consumed, ones that modify attack targets based on various effects, one that determines whether the battler will obey the trainer (and what happens if they don't), and ones that describe how a move is used.

It also contains methods that describe form-changing during battle.


PokeBattle_BattlerEffects

Defines
PokeBattle_Battler
  .pbSleep
  .pbPoison
  .pbBurn
  .pbParalyze
  .pbFreeze
  .pbConfuse
  .pbAttract
  .pbFlinch
  .pbIncreaseStat
  .pbReduceStat

This section extends the PokeBattle_Battler class to handle various in-battle effects, such as whether a battler can be given a particular status (also checks immunities to that status), inflicting statuses, status effects, and stat stage modifications.


PokeBattle_Move

Defines
PokeBattle_Move
  .battle
  .pp
  .totalpp
  .pbType
  .pbIsPhysical?
  .pbTargetsMultiple?
  .canThawUser?
  .ignoresSubstitute?
  .pbTypeModifier
  .pbIsCritical?
  .pbCalcDamage
  .pbEffect
Main article: Moves

This section defines the PokeBattle_Move class, which is the base class for all move classes. It handles moves in battle, including effectiveness calculations, accuracy check, power modifications, critical hit chance and damage calculation.


PokeBattle_MoveEffects

Main article: Function codes

This section defines hundreds of subclasses of PokeBattle_Move, one for each move. Usually each of these subclasses override the pbEffect method to implement the how the given move works and animates in battle.

Notably implemented first in the section are:

  • PokeBattle_UnimplementedMove - a error handler move class for moves which are defined in the PBS file but don't have a subclass defined for them. Damaging moves do damage and nothing else, while status moves always fail.
  • PokeBattle_FailedMove - A superclass for moves that always fail.
  • PokeBattle_Confusion - A class which implements the pseudo-move used by a battler against itself when it hurts itself in confusion.
  • PokeBattle_Struggle - An implementation for Struggle, should the move not be defined in the PBS file.

PokeBattle_Battle

Defines
PokeBattle_NullBattlePeer
PokeBattle_BattlePeer
PokeBattle_SuccessState
PokeBattle_BattleCommon
PokeBattle_Battle
  .pbIsUnlosableItem
  .pbPlayer
  .pbGetMegaRingName
  .pbMegaEvolve
  .pbFindNextUnfainted
  .pbAddToPlayerParty
  .pbCanChooseMove?
  .pbCanSwitch?
  .pbSendOut
  .pbGainExpOne
  .pbRun
  .pbLearnMove
  .pbJudge
  .pbDisplay
  .pbStartBattle
  .pbCommandPhase
  .pbAttackPhase
  .pbEndOfRoundPhase
  .pbEndOfBattle
Main article: Battles

This section defines the PokeBattle_Battle class, which handles the main battle process, from starting the battle through processing the phases (command, attack and end-of-round) to calculating the result and awarding Exp/money.

Two methods defined in PokeBattle_BattlepbRandom and pbAIRandom, are called whenever the battle needs a random number to use. By default, they simply call Ruby's rand() method, but they can be easily overridden to use another random number generator, if desired.

The method pbJudge is called after every step of battle where a pokemon can get damaged. It determines which side of the battle won, if any side has won yet.

The method pbGainExpOne has code to celebrate a level up, and the method pbLearnMoveis called to ask the player which move will be forgotten for a new move learned.


PokeBattle_AI

Defines
PBTrainerAI.minimumSkill=1
PBTrainerAI.mediumSkill=32
PBTrainerAI.highSkill=48
PBTrainerAI.bestSkill=100
PokeBattle_Battle
  .pbGetMoveScore
  .pbRoughDamage
  .pbChooseMoves
  .pbEnemyShouldUseItem?
  .pbEnemyShouldWithdraw?
Main article: Battle AI

This section extends the PokeBattle_Battle class to add several methods for the AI to use in determining what enemy trainers should do in battle. The pbGetMoveScore consists of a gigantic case statement with function codes for every move, and individually weights the viability of the given move.

This section also defines PBTrainerAI, which enumerates the thresholds for AI skill levels (given for a trainer class in the trainertypes.txt file). 0 is defined as a wild pokemon; 1-31 is for basic, inexperienced trainers; 32-47 for trainers with some skill; 48-99 for trainers with high skill, and 100 for expert trainers like gym leaders and the E4.


PokeBattle_SceneConstants

This section defines the PokeBattle_SceneConstants module, which contains various values which are used to determine the layout and appearance of the battle screen.


PokeBattle_Scene

Main article: Battles

This section defines the PokeBattle_Scene class and several helper classes, which handle all the visual features of the battle screen, including the command menus, information boxes, all the sprites, and various animations (Pokémon being called out/returned, throwing Poké Balls, fainting, HP/EXP bars, etc.).

Note: This section used to be called PokeBattle_ActualScene prior to version 16 of Essentials.


PokeBattle_AnimationPlayer

This section defines a few classes that handle the displaying of animations that were defined in the Database or the Animation Editor, and the conversion of the former to the latter. The vast majority of these animations are those used in battle.


PokeBattle_SafariZone

Main article: Safari Zone

This section defines the PokeBattle_SafariZone and PokeBattle_FakeBattler classes, which handle the battle process for Safari Zone battles (instead of PokeBattle_Battle).


PokeBattle_BattlePalace

This section defines the PokeBattle_BattlePalace class, a subclass of PokeBattle_Battle, which allows Battle Frontier-style Battle Palace battles, where pokemon choose their own moves based on their nature.


PokeBattle_BattleArena

This section defines the PokeBattle_BattleArena class, a subclass of PokeBattle_Battle, which allows Battle Frontier-style Battle Arena battles, where two pokemon fight for three rounds and are then judged on their mind, body, and skill rankings.


PokeBattle_BattleRecord

Defines
PokeBattle_RecordedBattle
PokeBattle_RecordedBattlePalace
PokeBattle_RecordedBattleArena
PokeBattle_BattlePlayer
PokeBattle_BattlePalacePlayer
PokeBattle_BattleArenaPlayer

This section defines several subclasses which allow Essentials to record and play back recorded battles. This is used in the PBattle_OrgBattle section to record the organized battles.


PokeBattle_OtherScenes

This section contains classes which defined simple, debug implementation of a battle scene. It is mainly used for debugging purposes.

Note: This section used to be called PokeBattle_Scene prior to version 16 of Essentials.

PokeBattle_BattlePeer

This section defines the PokeBattle_RealBattlePeer class, which handles the storing of newly-caught Pokémon in either the party or Pokémon storage.


PokeBattle_Clauses

This section extends the PokeBattle_Battle and PokeBattle_Battler classes, as well as a few move classes, to handle various battle rules that can be applied to battles, e.g. in the Battle Factory and various Stadium cups. This includes things like the "sleepclause", the "evasionclause", the "selfkoclause", etc.


PBTerrain

Defines
PBTerrain.isWater?
PBTerrain.isGrass?
PBTerrain.isLedge?
PBTerrain.isIce?
PBTerrain.isBridge?
PBTerrain.hasReflections?

This section defines the PBTerrain module, which enumerates the available terrain tags that can be used on a tileset.


PField_Field

Defines
DarknessSprite
LocationWindow
LightEffect
EncounterModifier
Events
  .onAction
  .onStartBattle
  .onEndBattle
  .onMapCreate
  .onMapChange
  .onMapChanging
  .onStepTaken
  .onLeaveTile
  .onStepTakenFieldMovement
  .onStepTakenTransferPossible
  .onMapUpdate
  .onWildBattleOverride
  .onWildBattleEnd
  .onWildPokemonCreate
  .onTrainerPartyLoad
  .onMapSceneChange
  .onSpritesetCreate
pbBattleAnimation
pbGenerateWildPokemon
pbWildBattle
pbCheckAllFainted
pbEvolutionCheck
Kernel.pbPickup
Kernel.pbSlideOnIce
Kernel.pbUpdateVehicle
Kernel.pbStartOver
Kernel.pbItemBall
pbRecord
pbEventFacesPlayer?
pbFacingTile
Kernel.pbMoveTowardPlayer

This section contains the bulk of the code for various things done in the field (that is, the overworld). These include:

  • Circle of darkness (for dark caves where Flash hasn't been used yet).
  • Location signpost window (showing the map's name when stepping onto a new map).
  • Light effects (for sprites that illuminate areas - shadows being cast are defined elsewhere).
  • The animation used to fade the screen before a battle.
  • Generating wild Pokémon and battles with them (both single and double).
  • The Pickup ability.
  • Jumping over a ledge.
  • Events that automatically occur:
    • When a battle is started.
    • When the player takes a step (poison and happiness gain, sliding on ice, animating tall grass).
    • When the player enters a different map (change the weather, display the location window, etc.).
    • When the map scene changes (e.g. Flash is used, automatically mount the bicycle).
    • When the map updates (i.e. every frame).
  • Setting the last visited Poké Center location.
  • Starting/finishing surfing and cycling.
  • Fishing.
  • Whiting out after having all party Pokémon faint, and returning to the last Poké Center visited.
  • The animation for entering a cave.
  • Registering and deregistering a partner trainer.
  • Recording sound.
  • Interacting with an item ball, and receiving an item from an NPC.
  • Boulder movements.


PField_FieldWeather

Main article: Weather

This section defines the PBFieldWeather module, which enumerates all the types of field weather available. It also extends the RPG::Weather class to handle the animations for out-of-battle weather. All other aspects of weather are handled elsewhere.


PField_Metadata

This section defines the PokemonGlobalMetadata class, which is stored in $PokemonGlobal. This class stores a lot of miscellaneous data, including things like if the player is surfing or cycling, the player's step count, the players last pokemon center, the daycare, the mailbox, the item pc storage, etc.


PField_MapFactory

This section defines the MapFactoryHelper module and the PokemonMapFactory class. They handle loading and displaying map connections, and collisions across connection boundaries.


PField_HiddenMoves

Defines
Kernel.pbCanUseHiddenMove?
Kernel.pbUseHiddenMove
Kernel.pbHiddenMoveEvent
pbHiddenMoveAnimation
Kernel.pbCut
Kernel.pbHeadbutt
Kernel.pbRockSmash
Kernel.pbStrength
Kernel.pbSurf
Kernel.pbWaterfall
Kernel.pbDive
Kernel.pbTransferUnderwater
Kernel.pbTransferSurfing
Main article: Using moves outside battle

This section defines the HiddenMoveHandlers module, which handles using moves outside battle. The bulk of this section contains handlers and methods for each of the field moves, including handlers for using them from the menu and using them by interacting with events or particular terrain tags.

Handlers added to HiddenMoveHandlers::CanUseMove and HiddenMoveHandlers::UseMove will be called when the player selects a move from the party menu, while the various Kernel.* methods defined are to be called from events.

This section also defines Kernel.pbTransferSurfing and Kernel.pbTransferUnderwater. If a doorway uses the normal transfer command, it automatically cancels any surfing or diving animations for the player. Thus, if the player can only travel through a given doorway while surfing or diving, you must use these respective methods to keep the player in the state of surfing or diving when they arrive on the other side of the transfer.


PField_Encounters

Main article: Encounters

This section defines the EncounterTypes module, which enumerates the encounter types and rates. It also defines the PokemonEncounters class, which handles other information relating to wild Pokémon encounters, including generating them.


PField_EncounterModifiers

Main article: Encounters

This section is for procedures which change wild Pokémon encounters in some way. An existing example is one which makes the wild Pokémon shiny if a certain Global Switch is ON.

PField_RoamingPokemon

Defines
pbResetAllRoamers
pbRoamPokemon
pbRoamingPokemonBattle
Main article: Roaming Pokémon

This section defines several methods which handle roaming Pokémon. It keeps track of all roaming Pokémon, changes their positions when a new map is entered, and triggers a battle with a roamer if appropriate.


PField_RandomDungeons

Defines
AntiRandom
DungeonMaze
Maze
Dungeon
pbRandomRoomTile
Main article: Dungeons

This section defines several classes to handle the generation of random dungeon maps.


PField_BerryPlants

Defines
pbBerryPlant
pbPickBerry
BerryPlantSprite
BerryPlantMoistureSprite
Main article: Berry planting

This section defines the pbBerryPlant method, along with helper classes, which handle the berry planting process.


PField_DayCare

Defines
pbEggGenerated?
pbDayCareDeposited
pbDayCareDeposit
pbDayCareGetLevelGain
pbDayCareGetDeposited
pbDayCareWithdraw
pbDayCareChoose
pbDayCareGenerateEgg
Main article: Day Care
Main article: Breeding

This section defines several methods which handle the Day Care system, both the storing of Pokémon to be trained and the breeding aspect. It contains scripts that determine whether or not breeding should take place, generate eggs when appropriate, give experience to stored Pokémon, teach moves to Pokémon as they level up while in training, etc.


PField_DependentEvents

Defines
pbRemoveDependencies
pbAddDependency
pbRemoveDependency
pbAddDependency2
pbGetDependency
pbRemoveDependency2
DependentEvents
  .pbEnsureEvent
  .pbFollowEventAcrossMaps
  .updateDependentEvents
DependentEventSprites
Main article: Partner trainer

This section defines the DependentEvents class, which handles dependent events.


PField_Time

Defines
pbGetTimeNow
PBDayNight.isDay?
PBDayNight.isNight?
PBDayNight.isMorning?
PBDayNight.isAfternoon?
PBDayNight.isEvening?
PBDayNight.getShade
pbDayNightTint
moonphase
zodiac
pbIsWeekday
pbIsMonth
pbIsSeason
pbIsSpring
Main article: Time

This section defines the PBDayNight module, which handles the day/night system in Essentials. It also contains some methods that calculate various astrological features (e.g. the moon's phase, the zodiac sign), and methods that check the current day, month, and season.


PokeBattle_Trainer

Defines
PokeBattle_Trainer
  .getForeignID
  .outfit
  .pokemonParty
  .ablePokemonParty
  .firstAblePokemon
  .lastPokemon
Main article: Player

This section defines the PokeBattle_Trainer class, which handles a trainer's information, including their name, badges owned, money, their current party, the Pokédex completion and so on. The player is the primary example of this class, and the only persistent instance (stored in $Trainer). But a PokeBattle_Trainer instance is created for every trainer participant when a battle begins.


PTrainer_NPCTrainers

Defines
pbLoadTrainer
pbTrainerCheck
pbMissingTrainer
pbTrainerBattle
pbDoubleTrainerBattle
TrainerWalkingCharSprite
Main article: Trainers

This section defines several methods which handle enemy trainers, most notably the trainer battle methods. pbLoadTrainer loads and check individual trainers and their teams (from the PBS file "trainers.txt"). Debug features such as the ability to add a new trainer are also defined here.


PItem_Items

Defines
pbIsHiddenMove?
pbGetPocket
pbIsMachine?
pbIsMail?
pbIsSnagBall?
pbIsKeyItem?
pbIsMegaStone?
pbChangeLevel
pbItemRestoreHP
pbHPItem
pbRaiseEffortValues
pbRestorePP
pbBikeCheck
pbClosestHiddenItem
pbLearnMove
pbUseItem
ItemHandlers.addUseFromBag
ItemHandlers.addUseInField
ItemHandlers.addUseOnPokemon
ItemHandlers.addBattleUseOnBattler
ItemHandlers.addBattleUseOnPokemon
Main article: Items

This section defines several methods which handle various generic effects an item can have (e.g. modify HP/PP), as well as teaching a move to a Pokémon. It also contains a few useful methods that can be used to decide what kind of item something is (e.g. one you shouldn't toss, a mail item, etc.).


PItem_ItemEffects

Main article: Item effects

This section defines over a hundred handlers implementing the effects of each item that can be actively used (i.e. not held items).


PItem_PokeBalls

Defines
BallHandlers::IsUnconditional
BallHandlers::ModifyCatchRate
BallHandlers::OnCatch
BallHandlers::OnFailCatch
pbBallTypeToBall
pbGetBallType
$BallTypes
Main article: Items

This section defines the handlers for modifying the various Poké Balls, or handling their effects. This file also has the mapping from ball type to PBItem enum.


PItem_PokeRadar

Defines
pbCanUsePokeRadar?
pbUsePokeRadar
pbPokeRadarHighlightGrass
pbPokeRadarGetShakingGrass
pbPokeRadarGetEncounter
Main article: Poké Radar

This section defines methods and item handlers to operate the Poké Radar, including using the item, making grass shake and changing the probability that the chained Pokémon are shiny.


PItem_Mail

Defines
PokemonMail
pbMoveToMailbox
pbStoreMail
pbDisplayMail

This section defines the PokemonMail class, as well as several helper methods to use and move mail around.


PItem_Sprites

This section defines the ItemIconSprite class, which handles displaying the item icon in the bag or mart screen. Interestingly, the icons can be animated if the icon is a 48 pixel tall image that has its animation frames laid out horizontally (48 pixels wide for each frame).


PokeBattle_Pokemon

Defines
PokeBattle_Pokemon
  .isForeign?
  .timeReceived
  .isEgg?
  .isMale?
  .makeMale
  .setAbility
  .hasHiddenAbility?
  .isShiny?
  .makeShiny
  .makeNotShiny
  .givePokerus
  .hasType?
  .knowsMove?
  .resetMoves
  .pbLearnMove
  .pbRecordFirstMoves
  .hasRibbon?
  .hasItem?
  .unownShape
  .heal
  .calcStats
Main article: Pokémon

This section defines the PokeBattle_Pokemon class, which (despite its name) defines a Pokémon outside of battle.

Pokemon_MultipleForms

Defines
PokeBattle_Pokemon
  .form
  .forceForm
MultipleForms
pbSpindaSpots
Main article: Multiple forms

This section extends the PokeBattle_Pokemon class and defines the MultipleForms module to handle the multiple forms some Pokémon can have, and defines all the stats and other information for each form that differs from its base form.


Pokemon_MegaEvolution

Main article: Mega Evolution

This section extends the PokeBattle_Pokemon class to add mega forms to all appropriate pokemon, by adding handlers to the the MultipleForms module defined above.


Pokemon_ShadowPokemon

Defines
pbPurify
pbRelicStoneScreen
pbRelicStone
pbIsPurifiable?
pbRaiseHappinessAndReduceHeart
PokeBattle_Pokemon
  .hypermode
  .heartStage
  .makeShadow
pbReadyToPurify
PokeBattle_Battler
  .pbHyperMode
  .pbHyperModeObedience
Main article: Shadow Pokémon

This section handles everything related to Shadow Pokémon. This section defines the heart gauges on pokemon, defines the Relic Stone, adds handlers for scent items, defines the effects of Hyper Mode (actually Pokemon XD-style "Reverse Mode", but misnamed "Hyper Mode"), and defines classes for every shadow move introduced in XD.

The Purify Chamber is handled in its own section.


Pokemon_Evolution

Defines
PBEvolution
SpriteMetafile
SpriteMetafilePlayer
PokemonEvolutionScene
pbGetEvolvedFormData
pbGetPreviousForm
pbGetMinimumLevel
pbGetBabySpecies
pbSaveSpriteState
pbRestoreSpriteState
pbSaveSpriteStateAndBitmap
pbRestoreSpriteStateAndBitmap
pbCheckEvolution
Main article: Evolution

This section defines the PBEvolution module, which enumerates all of the various evolution methods available (including 5 "custom" methods). It also defines PokemonEvolutionScene, which plays the evolution animation scene, and the pbCheckEvolution method, which checks if the pokemon can evolve now.


Pokemon_Chatter

This section defines the pbChatter, which handles the out-of-battle part of the move Chatter, which is the ability to record a new sound for it to use.


Pokemon_Sprites

Defines
PokemonSprite
PokemonBattlerSprite
PokemonIconSprite
PokemonSpeciesIconSprite
getBattleSpriteMetricOffset
adjustBattleSpriteY
pbPositionPokemonSprite
pbSpriteSetCenter
showShadow?

This section defines four sprite classes for displaying pokemon. It also defines methods that handle adjusting the height of battler sprites according to the three metrics defined for that species in the PBS file "pokemon.txt".


PScreen_PauseMenu

Main article: Pause menu

This section defines PokemonMenu_Scene and PokemonMenu, which handles the Pause menu. There is code in here to modify the menu when the player is in the Safari Zone or a Bug Catching Contest.


PScreen_Pokedex

Defines
Window_DexesList
Scene_PokedexMenu
Window_CommandPokemonWhiteArrow
Window_Pokedex
Window_ComplexCommandPokemon
PokemonPokedexScene
PokemonPokedex
Main article: Pokédex

This section defines PokemonPokedexScene, which handles the Pokédex screens, namely everything except the Area and Forms pages.


PScreen_PokedexNestForm

Defines
pbFindEncounter
PokemonNestMapScene
PokemonNestMap
PokedexFormScene
PokedexForm
Main article: Pokédex

This section defines PokemonNestMapScene and PokedexFormScene, which handles (respectfully) the Area and Forms pages of the Pokédex.


PScreen_Party

Defines
PokeSelectionPlaceholderSprite
PokeSelectionConfirmCancelSprite
PokeSelectionCancelSprite
PokeSelectionConfirmSprite
ChangelingSprite
PokeSelectionSprite
PokemonScreen_Scene
PokemonScreen
Main article: Party

This section defines PokemonScreen, which handles the party screen and choosing Pokémon from the party.


PScreen_Summary

Defines
MoveSelectionSprite
PokemonSummaryScene
PokemonSummary
Main article: Summary screens

This section defines PokemonSummaryScene, which handles the Pokémon summary screens, accessible from the Party screen and Pokémon storage. Data relevant to the selected Pokémon is displayed across five pages.


PScreen_Bag

Defines
Window_PokemonBag
PokemonBag_Scene
PokemonBagScreen
PokemonBag
Window_PokemonItemStorage
ItemStorageScene
WithdrawItemScene
TossItemScene
PCItemStorage
UIHelper
Main article: Bag

This section defines the PokemonBag and PCItemStorage classes, which hold the items the player is carrying (stored in $PokemonBag and $PokemonGlobal.pcItemStorage, respectfully). This section also defines the PokemonBagScreen and ItemStorageSceneclasses, which handle the Bag screen and item storage screen, respectfully.


PScreen_Pokegear

Defines
PokegearButton
Scene_Pokegear
Main article: Pokégear

This section defines the Scene_Pokegear class, which handles the Pokégear's main screen, i.e. the list of applications it has.


PScreen_RegionMap

Defines
MapBottomSprite
PokemonRegionMapScene
PokemonRegionMap
pbShowMap
Main article: Region map

This section defines the PokemonRegionMapScene screen, which handles displaying the region map. It is used when examining a map (from the Pokégear, the Town Map item, or a map on a wall) or when using Fly. This section defines the pbShowMap method, which can be called from an event to display a wall map.


PScreen_Phone

Defines
Window_PhoneList
PokemonPhoneScene
pbRandomPhoneTrainer
pbPhoneRegisterNPC
pbPhoneRegister
pbPhoneRegisterBattle
pbPhoneDeleteContact
pbPhoneReadyToBattle?
pbCallTrainer
pbSetReadyToBattle
pbPhoneGenerateCall
pbEncounterSpecies
pbTrainerMapName
pbTrainerSpecies
pbPhoneCall
Main article: Phone

This section defines the PokemonPhoneScene and several methods which handle the phone, including registering trainers, generating random phone calls, deciding when the trainers become available for rematches, and the phone screen.

PScreen_Jukebox

Main article: Jukebox

This section defines the Scene_Jukebox class, which handles the Jukebox application of the Pokégear.


PScreen_TrainerCard

Main article: Trainer card

This section defines the PokemonTrainerCardScene and PokemonTrainerCard classes, which handle the Trainer card screen.


PScreen_Load

Defines
PokemonLoadPanel
PokemonLoadScene
PokemonLoad
FontInstaller
Main article: Saving and loading

This section defines the PokemonLoad class. This class handles loading data from the save file, as well as displaying the Continue/New Game screen, starting a new game, and deleting a save file.

This section also contains the FontInstaller class, which checks whether the necessary fonts are installed, and attempts to install them if they are not.


PScreen_Save

Defines
PokemonSaveScene
pbEmergencySave
pbSave
PokemonSave
Main article: Saving and loading

This section defines the pbSave method, which handles saving the game.


PScreen_Options

Defines
Window_PokemonOption
EnumOption
NumberOption
SliderOption
PokemonSystem
PokemonOptionScene
PokemonOption
Main article: Options screen

This section defines PokemonOptionScene, which handles the Options screen. This screen includes settings for the window skin, font, text speed, etc. It also lists the available message box skins and fonts.

Lines 512 to 526 and specially marked with comments in this section: if you do not want your players to be able to change the size of the game from the default "Medium" (that is, 2 times the size of pokemon's graphics), you should comment out or delete that section.


PScreen_Storage

Main article: Pokémon storage
Main article: PC
Defines
PokemonBox
PokemonStorage
PokemonStorageWithParty
PokemonStorageScreen
Interpolator
PokemonBoxArrow
PokemonBoxPartySprite
MosaicPokemonSprite
AutoMosaicPokemonSprite
PokemonBoxSprite
PokemonStorageScene
RegionalStorage
TrainerPC
StorageSystemPC
Kernel.pbGetStorageCreator
pbPCItemStorage
pbPCMailbox
pbTrainerPC
pbPokeCenterPC
PokemonPCList.registerPC

This section defines PokemonStorage and PokemonBox, which contain pokemon stored in the storage system. It also defines various classes to implement the storage screen, and a class to handle Regional Pokémon storage.

At the bottom of this section, there are scripts that handle what happens when the PC is used (i.e. the menus and mail storage).

Note: This section adds the Storage System PC and Trainer PC to the Pokemon Center PC list that is displayed when the player turns on a PC. It does this by creating classes for each, with the methods shouldShow?name, and access defined, and passing a new instance of that class to PokemonPCList.registerPC.


PScreen_EggHatching

Defines
PokemonEggHatchScene
PokemonEggHatchScreen
pbHatchAnimation
pbHatch

This section contains all the scripts relating to the hatching of eggs, including the animation that plays when an egg hatches and the timer which reduces the number of steps left before an egg hatches.


PScreen_Trading

Defines
PokemonTradeScene
pbStartTrade
pbTradeCheckEvolution
Main article: Trading Pokémon

This section defines the pbStartTrade method, which handles the Pokémon trade screen. It also contains a check for whether the newly received Pokémon should evolve because of the trade.


PScreen_MoveRelearner

Defines
MoveRelearnerScene
MoveRelearnerScreen
pbEachNaturalMove
pbGetRelearnableMoves
pbRelearnMoveScreen
Main article: Special NPCs

This section defines the pbRelearnMoveScreen method, which handles the Move Relearner feature. It handles the teaching part only; usually there is a price to pay for this feature, and that should be implemented separately.


PScreen_PurifyChamber

Defines
PurifyChamberSet
PurifyChamber
PurifyChamberPC
PurifyChamberHelper
PurifyChamberScreen
Window_PurifyChamberSets
DirectFlowDiagram
FlowDiagram
PurifyChamberSetView
PurifyChamberScene
pbPurifyChamber
Main article: Shadow Pokémon

This section defines the pbPurifyChamber method, and many support classes, which handle the Purify Chamber for Shadow Pokémon. This section adds the Purify Chamber option to the PC in the same way as outlined in PScreen_Storage.


PScreen_Mart

Defines
PokemonMartAdapter
RpgxpMartAdapter
Window_PokemonMart
PokemonMartScene
PokemonMartScreen
pbPokemonMart
Main article: Poké Mart

This section defines the pbPokemonMart method, which handles the Poké Mart screen.


PScreen_MysteryGift

Defines
MYSTERYGIFTURL
pbEditMysteryGift
pbCreateMysteryGift
pbManageMysteryGifts
pbRefreshMGCommands
pbDownloadMysteryGift
pbReceiveMysteryGift
Main article: Mystery Gift

This section handles the Mystery Gift system. The methods defined here are called by the load screen, defined above.

Tip: The MYSTERYGIFTURL constant, defined at the top of this file, is the URL the game will check for the mystery gift. This url must point to the raw text file and not a landing page generated by an uploading service. You can test to see if the game will accept the mystery gift file by putting the url you have into a browser's incognito mode / private browsing mode window. If you can load up the text file in that window without logging into anything or clicking through anything, then the game will be able to access the text file successfully itself.


PScreen_HallOfFame

Defines
HallOfFameScene
HallOfFameScreen
HallOfFamePC
pbHallOfFameEntry
pbHallOfFamePC

This section defines the HallOfFameScene class, which contains all the scripts related to the Hall of Fame. This section adds the Hall of Fame option to the PC in the same way as outlined in PScreen_Storage.


PBattle_Safari

Defines
SafariState
pbInSafari?
pbSafariState
pbSafariBattle
Main article: Safari Zone

This section handles the Safari Zone, except the Safari Zone battles themselves. It keeps track of steps taken, Balls remaining, etc.


PBattle_BugContest

Defines
BugContestState
pbBugContestScore
pbBugContestState
pbInBugContest?
PokeBattle_BugContestBattle
Kernel.pbBugContestStartOver
pbBugContestBattle
Main article: Bug Catching Contest

This section handles all aspects of Bug Catching Contests, including battles, keeping track of time, Park Balls, and judging.

PBattle_OrgBattle

Defines
PBPokemon
BattleChallengeType
BattleChallengeData
BattleChallenge
BattleFactoryData
pbHasEligible?
pbIsBanned?
pbGetBTTrainers
pbGetBTPokemon
pbRecordLastBattle
pbPlayBattle
pbPlayLastBattle
pbBattleChallenge
pbBattleChallengeTrainer
pbBattleFactoryPokemon
pbGenerateBattleTrainer
pbOrganizedBattleEx

This section defines several methods and classes related to organized Battle Frontier-style battles. This includes:

  • Methods to record a battle challenge battle.
  • Methods to create a Battle Challenge or Battle Factory battle
  • Methods to determine if a trainer has eligible pokemon.


PBattle_OrgBattleRules

Defines
LevelAdjustment
LevelBalanceAdjustment
SinglePlayerCappedLevelAdjustment
OpenLevelAdjustment
TotalLevelAdjustment
AblePokemonRestriction
SpeciesRestriction
BannedSpeciesRestriction
BannedItemRestriction
StandardRestriction
MaximumLevelRestriction
WeightRestriction
HeightRestriction
ItemsDisallowedClause
SameSpeciesClause
BabyRestriction
LittleCupRestriction
NicknameClause
PokemonRuleSet
BattleType
BattleRule
PokemonChallengeRules
StandardRules
pbPikaCupRules
pbFancyCupRules
pbBattleTowerRules
pbBattleFactoryRules

This section defines dozens of classes related to rules and restrictions on organized battles, as well as method to combine these classes into a ruleset for use in challenges and tournaments. It also has a commented out section at the bottom which outlines various rulesets previously used by real world Tournaments put on by the Pokemon Company in the past.


PBattle_OrgBattleGenerator

Defines
BaseStatRestriction
NonlegendaryRestriction
InverseRestriction
SingleMatch
MatchHistory
PlayerRating
RuledTeam
pbRandomMove
addMove
pbGetLegalMoves2
baseStatTotal
withRestr
pbArrangeByTier
pbRandomPokemonFromRule
pbRuledBattle
pbTrainerInfo
pbGenerateChallenge
pbWriteCup

This section defines several methods and classes related to generating random trainers to adhere to a given ruleset for an organized battle.


PBattle_BattleSwap

Defines
BattleSwapScene
BattleSwapScreen

This section defines the BattleSwapScreen and BattleSwapScene classes, which implement the pokemon rental screen used for the Battle Frontier-style Battle Factory.


PMinigame_Duel

Defines
DuelWindow
PokemonDuel
pbDuel
Main article: Mini-games

This section defines the pbDuel method and PokemonDuel class, which handles the overworld Duel mini-game.


PMinigame_TripleTriad

Defines
TriadCard
TriadSquare
TriadScene
TriadScreen
TriadStorage
pbBuyTriads
pbSellTriads
pbTriadList
pbTriadDuel
pbGiveTriadCard
Main article: Triple Triad

This section defines methods and classes which handle the Triple Triad card mini-game.


PMinigame_SlotMachine

Defines
SlotMachineReel
SlotMachineScore
SlotMachineScene
SlotMachine
pbSlotMachine
Main article: Mini-games

This section defines the pbSlotMachine method, which handles the Slot Machine mini-game.


PMinigame_VoltorbFlip

Defines
VoltorbFlip
VoltorbFlipScreen
pbVoltorbFlip
Main article: Mini-games

This section defines the pbVoltorbFlip method, which handles the Voltorb Flip mini-game.


PMinigame_Lottery

Defines
pbSetLotteryNumber
pbLottery
Main article: Mini-games

This section defines the pbLottery method, which handles the lottery mini-game.


PMinigame_Mining

Defines
MiningGameCounter
MiningGameTile
MiningGameCursor
MiningGameScene
MiningGame
pbMiningGame
Main article: Mini-games

This section defines the pbMiningGame method, which handles the Mining mini-game.


PMinigame_TilePuzzles

Defines
TilePuzzleCursor
TilePuzzleScene
TilePuzzle
pbTilePuzzle
Main article: Mini-games

This section defines the pbTilePuzzle method, which handles the Tile Puzzle game.


PSystem_Controls

Defines
Input
Mouse
Main article: Controls

This section redefines the Input module, which handles the game controls and translating them from a keyboard press into an input. It also contains some mouse support.


PSystem_System

Defines
pbSafeLoad
pbChooseLanguage
pbSetUpSystem
pbScreenCapture
pbDebugF7

This section defines a few small methods which set up the game.


PSystem_Utilities

Defines
LinearCongRandom
ItemStorageHelper
pbEachCombination
pbGetMyDocumentsFolder
pbGetLanguage
toFahrenheit
toCelsius
pbIsJsonString
pbParseJson
MiniXmlReader
pbChangePlayer
pbGetPlayerGraphic
pbTrainerName
pbSuggestTrainerName
pbGetUserName
getRandomName
pbTimeEvent
pbTimeEventValid
isConst?
getConst
getID
pbFadeOutInWithMusic
getWaveDataUI
beginRecordUI
pbHideVisibleObjects
pbLoadRpgxpScene
pbCommonEvent
pbPokemonBitmapFile
pbLoadPokemonBitmap
pbLoadPokemonBitmapSpecies
pbLoadSpeciesBitmap
pbLoadPokemonIcon
pbPokemonIconFile
pbItemIconFile
pbTrainerCharFile
pbTrainerSpriteFile
pbPlayerSpriteFile
pbResolveAudioSE
pbCryFrameLength
pbPlayCry
pbGetWildBattleBGM
pbGetTrainerBattleBGM
pbGetTrainerVictoryME
pbNickname
pbStorePokemon
pbNicknameAndStore
pbAddPokemon
pbAddPokemonSilent
pbAddToParty
pbAddForeignPokemon
pbGenerateEgg
pbSeenForm
pbHealAll
pbAllFainted
pbBalancedLevel
pbSize
pbHasEgg?
pbChoosePokemon
pbChooseAblePokemon
pbChoosePokemonForTrade
pbHasSpecies?
pbHasFatefulSpecies?
pbCheckMove
pbGetRegionalNumber
pbGetCurrentRegion
pbGetNationalNumber
pbUnlockDex
pbTextEntry
pbMoveTutorChoose
pbChooseMove
pbPokemonScreen
pbSaveScreen
pbRecordTrainer

This section contains a number of extra methods that don't fit elsewhere. These include:

  • Methods that gather information from the player's computer.
  • The LinearCongRandom class, which is an implementation of the RNG system used by the actual pokemon core series (but is unused in Essentials by default).
  • Methods to parse JSON and XML.
  • Convenience methods to define and name the player character, or get information about the player character.
  • Various utility methods, including those for Event timing and getting Constants.
    • pbGet and pbSet: the preferred way to get and set global variables.
    • pbExclaim and pbNoticePlayer: used for events that spot the player at a distance.
    • Methods that load Pokémon sprites and icons.
    • Various sound- and music-related methods.
    • Methods that add Pokémon in various ways, and stores/nicknames them.
  • The pbCreatePokemon method, which generates the Demo Party available from the Debug menu.
  • Methods involved with party manipulation.
  • A method that calculates a balanced version of a given party of Pokémon.
  • Methods that let the player choose a Pokémon from their party.
  • Methods that check if a pokemon in the player's party has a move.
  • Methods that return the Regional/National Dex numbers of a species, and one that compiles a Regional Dex list.
  • Move Tutor methods.


Debug

Defines
PokemonDataCopy
PokemonDataWrapper
CommandList
Scene_Debug
pbMapTree
pbCompileTextUI
pbWarpToMap
pbDebugMenu
pbDebugScreen
pbDebugSetVariable
Main article: Debug mode

This section defines the pbDebugMenu methods, which defines the Debug menu that can be accessed from the Pause menu.

TilesetEditor

Defines
pbTilesetWrapper
PokemonTilesetScene
pbTilesetScreen

This section handles the Debug mode option that allows you to change the terrain tags of tiles in a tileset.


BattleAnimationsEditor

Defines
Window_Menu
UIControl
Label
Button
Checkbox
TextField
Slider
OptionalSlider
TextSlider
OptionalTextSlider
ControlWindow
Clipboard
AnimationWindow
SpriteFrame
AnimationCanvas
pbSpriteHitTest
pbTrackPopupMenu
pbChooseNum
pbSetTone
pbCellProperties
pbTimingList
pbSelectAnim
pbAnimationsOrganiser
Main article: Attack animations

This section defines dozens of UI classes and methods that are used in the Animation Editor, which is used for creating animations of moves being used in battle.


Editor

Defines
GraphicsLister
MusicFileLister
MapScreenScene
MapLister
ItemLister
TrainerTypeLister
TrainerBattleLister
LimitProperty
ReadOnlyProperty
BooleanProperty
BGMProperty
TypeProperty
NatureProperty
PlayerProperty
MapProperty
pbIsOldSpecialType?
MakeshiftConsts.get
pbSavePokemonData
pbSaveItems
pbSaveTrainerTypes
pbSaveTownMap
pbSavePhoneData
pbSaveBTTrainers
pbFastInspect
pbSaveAllData
pbChooseSpecies
pbChooseItemList
pbCommands3
pbListScreen
pbPropertyList
pbEncounterEditorMap
pbTrainerTypeEditor
createRegionMap
pbEditorScreen
Main article: Debug mode

This section defines many UI elements to handle the in-game Debug Mode editors, allowing you to edit the contents of some of the PBS files.


Compiler

Defines
FileLineData
TrainerChecker
pbPrintException
pbEachFileSectionEx
pbCheckByte
csvfield!
pbGetCsvRecord
pbGetConst
parseTrainer
pbAddScript
pbWriteDefaultTypes
pbCompileTypes
pbCompileConnections
pbCompileItems
pbCompilePokemonData
pbCompileMachines
pbCompileTrainers
pbCompileMetadata
pbCompileAnimations
pbUpdateDoor
pbCompileAllData

This section handles the compiling of all information in the PBS files into a set of data the game can actually use.

Note: This section defines pbFixEventUse, which is responsible for going through your maps and events and fixing many minor common errors developers make in their coding, including things like replacing door transfers with properly done door events, normalizing the use of "\b" and "\r" in text, replacing "pbItemBall" with "pbReceiveItem" on non-item events, deleting superfluous exit commands, etc.

This section also defines pbConvertToItemEvent, which will turn a simple events named a certain way into full item ball events. For example, if you make a new event simply named "Item:POTION" or "HiddenItem:POTION", the compile will turn the event into a full Item Ball or Hidden Item event which will give the player one potion.

This section also defines pbConvertToTrainerEvent, which will turn an event into a trainer, as outlined by the Trainers page.

Basically, if something changes in your project after you do a test run of your game without your doing it (for better or worse), it is likely the fault of the Compiler script section.

Main

This section defines the entry point of the game. It is what starts the game running and brings up the title screen. This section must always be the last script section.

If you are adding any extensions to the game from a tutorial on this wiki or a thread in the community forum, they will more often than not tell you to place it right above this section. This is because scripts placed lower will override scripts placed in higher script sections, but scripts placed below Main will never run, as Main is where the main game loop runs.


Compiled Scripts

There are some classes and methods which are not defined in script sections, but are compiled directly from from PBS files by the Compiler. The following are classes you won't find defined in the Script Editor. All of these classes simply enumerate their values. They don't have any logic, but they'll usually have a method to get the printable name of the enum.

PBTypes

This is the list of types, defined in types.txt. The script compiles to the following, from the unmodified example project:

 class PBTypes
   NORMAL=0
   #[...all defined types...]
   DARK=17
   def PBTypes.getName(id)
     return pbGetMessage(MessageTypes::Types,id)
   end
   def PBTypes.getCount; return 18; end
   def PBTypes.maxValue; return 17; end
 end

PBAbilities

This is the list of all abilities, defined in abilities.txt. The script compiles to the following, from the unmodified example project:

 class PBAbilities
   STENCH=1
   #[...all defined abilities...]
   TERAVOLT=164
   def PBAbilities.getName(id)
     return pbGetMessage(MessageTypes::Abilities,id)
   end
   def PBAbilities.getCount
     return 164
   end
   def PBAbilities.maxValue
     return 164
   end
 end

PBMoves

This is a list of all moves, defined in moves.txt. The script compiles to the following, from the unmodified example project:

 class PBMoves
   MEGAHORN=1
   #[...all defined moves...]
   WITHDRAW=559
   def PBMoves.getName(id)
     return pbGetMessage(MessageTypes::Moves,id)
   end
   def PBMoves.getCount
     return 559
   end
   def PBMoves.maxValue
     return 559
   end
 end

PBItems

This is a list of all items, defined in items.txt. The script compiles to the following, from the unmodified example project:

 class PBItems
   REPEL=1
   #[...all defined items...]
   SHINYCHARM=525
   def PBItems.getName(id)
     return pbGetMessage(MessageTypes::Items,id)
   end
   def PBItems.getNamePlural(id)
     return pbGetMessage(MessageTypes::ItemPlurals,id)
   end
   def PBItems.getCount
     return 525
   end
   def PBItems.maxValue
     return 525
   end
 end

PBSpecies

This is the list of pokemon species, defined from pokemon.txt. Note that the PBSpecies enum corresponds to the national pokedex number of the pokemon species, and thus you can use PBSpecies::QUILAVA as a constant for Quilava's national dex number. The script compiles to the following, from the unmodified example project:

 module PBSpecies
   BULBASAUR=1
   IVYSAUR=2
   #[...all defined pokemon...]
   MELOETTA=648
   GENESECT=649
   def PBSpecies.getName(id)
     return pbGetMessage(MessageTypes::Species,id)
   end
   def PBSpecies.getCount
     return 649
   end
   def PBSpecies.maxValue
     return 649
   end
 end

PBTrainers

This is a list of all trainer types, defined in trainertypes.txt. The script compiles to the following, from the unmodified example project:

class PBTrainers
   POKEMONTRAINER_Red=0
   #[...all defined trainer types...]
   CHAMPION=71
   def PBTrainers.getName(id)
     return pbGetMessage(MessageTypes::TrainerTypes,id)
   end
   def PBTrainers.getCount
     return 72
   end
   def PBTrainers.maxValue
     return 71
   end
 end
Advertisement