This article describes how elemental types are defined. Each Pokémon has either one or two types, and all moves have one type.
- Each Pokémon species must have at least one type.
- Each move must have a type.
- Shadow Pokémon have their own Shadow type, which must also be defined as described below.
Defining an elemental type
Types are defined in the PBS file "types.txt", with each section corresponding to one type. Each section begins with a number in square brackets, followed by a number of lines.
The number in square brackets must be different for each type. It should begin with 0 and continue with no missing numbers.
The possible lines that can be put into a type's section are as follows:
|Name||Yes||The name of this type (e.g. Fire, Water).|
|InternalName||Yes||The name used by the scripts to refer to this type. It is never shown to the player. It is typically the type's name but in all capitals.|
|IsPseudoType||No|| Is either TRUE or FALSE. If TRUE, this type is a pseudotype, i.e. not a "proper" type. The ??? type is an example of a pseudotype. If this line isn't included, this type will NOT be a pseudotype.
No Pokémon should have a pseudotype as one of its elemental types. Pseudotypes cannot be searched for in the Pokédex, and the move "Conversion" and the ability "Color Change" cannot change a Pokémon's type to a pseudotype.
|IsSpecialType||No|| Is either TRUE or FALSE. If TRUE, moves of this type will use the special stats for damage calculation. If FALSE, they will use the physical stats. If this line isn't included, this type will be a physical type.
This doesn't normally matter, though, as by default a move is defined individually as physical or special rather than determining this based on its elemental type (like in newer games). By changing an option in the script section Settings, though, moves can be made to be physical or special depending on their type (like in older games).
|Weaknesses||No||A comma-separated list of the internal names of all the elemental types that will inflict double damage (i.e. are super effective) against a Pokémon of this type.|
|Resistances||No||A comma-separated list of the internal names of all the elemental types that will inflict half damage (i.e. are not very effective) against a Pokémon of this type.|
|Immunities||No||A comma-separated list of the internal names of all the elemental types that cannot inflict any damage on a Pokémon of this type.|
Note that the "???" type should be defined just like any other type. By default, it is the only pseudotype.
 Name=Normal InternalName=NORMAL Weaknesses=FIGHTING Immunities=GHOST  Name=Dark InternalName=DARK IsSpecialType=true Weaknesses=FIGHTING,BUG Resistances=GHOST,DARK Immunities=PSYCHIC
These are typical examples of what a type definition looks like. If some lines would be blank (e.g. the type has no immunities), then simply do not include those lines at all.
 Name=??? InternalName=QMARKS IsPseudoType=true
This is the "null" type; it has no resistances, weaknesses or immunities, and is typically the only type in the game to be a pseudotype.
Type icons and graphics
Each elemental type requires a number of graphics corresponding to it. The graphics are as follows:
- Type icon - In the "Graphics/Pictures" folder, called "types.png".
- Pokédex type icon - In the "Graphics/Pictures" folder, called "pokedexTypes.png".
- Move box - In the "Graphics/Pictures" folder, called "battleFightButtons.png". Includes both a non-highlighted and a highlighted version of each type's box, side by side.
The order of each icon/box in these files is the same, and is the order in which the types appear in the PBS file "types.txt". Type 0 (Normal) will be first, followed by type 1 (Fighting), etc.
The dimensions of each icon/box cannot be changed except by changing every script in which those graphics are used.