Mechanic · rpg
Same-type attack bonus
A move that shares a type with its user does ×1.5 damage, rounded down, in Pokémon Gen 1–3.
On this page
A move whose type matches one of its user’s types gets a damage bonus. pret names it STAB, “Same Type Attack Bonus”, in a comment in pokecrystal’s BattleCommand_Stab1. It runs in the same routine as type effectiveness, directly before the type rows2,3,4.
#Implementations
| Game | Integer math |
|---|---|
| Red and Blue | 2 |
| Crystal | 3, after weather and badge boosts |
| Emerald | 4 |
The forms agree for every non-negative : 4. In Crystal and Emerald, Struggle skips the routine and never gets the bonus5,6.
References
- ^A comment in pokecrystal's
BattleCommand_Stabexpands STAB as “Same Type Attack Bonus”. T3pret/pokecrystal · engine/battle/effect_commands.asm L1214–1215 - ^ ab
AdjustDamageForMoveTypeapplies STAB before any type row: when the move's type matches either attacker type. T3pret/pokered · engine/battle/core.asm L5101–5125 - ^ ab
BattleCommand_Stabapplies weather and badge type boosts, then STAB ( if either attacker type matches), then the type chart. T3pret/pokecrystal · engine/battle/effect_commands.asm L1251–1288 - ^ abcBefore the type chart,
Cmd_typecalcapplies STAB as when either attacker type equals the move's type. T3pret/pokeemerald · src/battle_script_commands.c L1368–1373, include/battle.h L471 - ^Struggle returns from
BattleCommand_Stabat once, so it skips weather, badge boosts, STAB, and the type chart. T3pret/pokecrystal · engine/battle/effect_commands.asm L1216–1219 - ^Struggle skips
Cmd_typecalcentirely, so neither STAB nor the type chart touches it. T3pret/pokeemerald · src/battle_script_commands.c L1360–1364
Sources
Code
- pret contributors. 2026. “pokecrystal: disassembly of Pokémon Crystal.” pret. Commit 97187cd. pret/pokecrystal @ 97187cd · licence, all uses
- pret contributors. 2026. “pokered: disassembly of Pokémon Red and Blue.” pret. Commit af51989. pret/pokered @ af51989 · licence, all uses
- pret contributors. 2026. “pokeemerald: decompilation of Pokémon Emerald.” pret. Commit 731ad5b. pret/pokeemerald @ 731ad5b · licence, all uses