Modding Move Effects
This page details the ways to achieve move effects, such as modifying damage, status changes, etc. This can be done through the Skill Editor, found in the Data tab of the Dev Mode panel.
It only covers the effect of moves. Other battle factors such as statuses, abilities, and held items can be found in the page for Modding Passive Effects
All of this can be achieved by editing the Data of a move.
Overview
Skill Data has several elements that can be edited. These control the stats of the move, its typing, etc.
To achieve the special effects that Pokemon moves are known for, you will need to insert events into Battle Event lists like Before Hits
, On Hits
, etc.
Effect Priority
Battle Events added to event lists each have a priority. This determines in what order these effects execute.
It may seem straightforward in this image that damage will happen first, and additional effect will happen second. However things get more complicated when you factor passive effects from other sources, such as an enemy having the ability Static, or yourself holding a King's Rock. All of these battle events will need to be shuffled together, and priority ensures they all land in the correct order.
Inflicting Damage
Base Power
Fixed Damage
Additional Effects
Additional Effect Chance
Chance of Status
Chance of Stat Change
Chance Effect on User
Other Move Flags
Moves that make contact, sound-based moves, slash-based moves, etc.
Hit Critical Hit Moves
Non-Damaging Status Moves
Status Conditions
Status Changes
Weather/Terrain
Hitting Tiles
Destroying Items
Destroying Terrain
Laying Traps
Healing
Displacements
Knockback/Throw/Displacements
Further Reading
The list of effects on this page is not exhaustive and there are many more effects such as increased damage on targets under certain conditions (Brine), variable basepowers (Eruption/Water Spout), etc.
For a full list of BattleEvents you can use, check the BattleEvent Reference.
Effects can get very specfic, and sometimes you may want to make your own. You can make your own BattleEvents using ScriptedBattleEvent.