Modding Move Effects: Difference between revisions
skill editor test data |
everything else |
||
(4 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
To achieve the special effects that Pokemon moves are known for, you will need to insert events into Battle Event lists like <code>Before Hits</code>, <code>On Hits</code>, etc. | To achieve the special effects that Pokemon moves are known for, you will need to insert events into Battle Event lists like <code>Before Hits</code>, <code>On Hits</code>, etc. | ||
The [[BattleData Reference]] has the full documentation. | |||
== Effect Priority == | == Effect Priority == | ||
Battle Events added to event lists each have a priority. This determines in what order these effects execute: The lower the number, the earlier it executes. Priority can also be subdivided. | |||
[[File:SkillEditor_Priority.png|frameless]] | |||
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. PMDO has a specific way of numbering events that must be adhered to when modding the game, but if one were to create a new game with completely new moves and abilities, they could choose how to number everything. | |||
== Inflicting Damage == | == Inflicting Damage == | ||
To inflict damage, you will need to add a <code>Power</code> state to Skill States, which will contain the base power of the move. Then, you will need to add a <code>Damage Formula Event</code> to On Hits at priority -1. | |||
=== Fixed Damage === | === Fixed Damage === | ||
To inflict fixed damage, or specially calculated damage you will need to use a Battle Event other than <code>Damage Formula Event</code>. Some examples include: | |||
* <code>LevelDamageEvent</code>: Does damage based on the user's level. | |||
* <code>CutHPDamageEvent</code>: Cuts the target's HP in half. | |||
* <code>MaxHPDamageEvent</code>: Does damage based on the target's max HP. | |||
There are several others; consult the [[BattleEvent Reference]] for full details. | |||
== Additional Effects == | == Additional Effects == | ||
=== | To apply additional effects that occur after a damaging move hits, add an <code>Effect Chance</code> to Skill States, which contains the chance that the additional effect will trigger. Then, add an <code>Additional Event</code> event to On Hits at priority 0. What effect you apply depends on what Battle Event you add to the <code>Additional Event</code>'s Battle Events variable. | ||
=== Chance of Status === | |||
To inflict a status effect, add a <code>Status Battle Event</code>. | |||
* Choose the status you want with Status ID. | |||
* Checkmark Affect Target so that it's given to the target (not the user!) | |||
* Checkmark Silent Check so that if the target is immune to the status, it doesn't emit a battle message that says so. | |||
=== Chance of Stat Change === | === Chance of Stat Change === | ||
To apply a stat change as an additional effect, add a <code>Status Stack Battle Event</code>. This should also be done for other stackable statuses, if you make any. | |||
* Choose the exact number of stat levels you want to raise or drop with the Stack variable. | |||
* Choose the status you want with Status ID. | |||
* Checkmark Affect Target so that it's given to the target (not the user!) | |||
* Checkmark Silent Check so that if the target is immune to the status, it doesn't emit a battle message that says so. | |||
=== Chance Effect on User === | === Chance Effect on User === | ||
To make additional effects apply on the user, you can change the Affect Target variable as covered in the two above sections. However, this will cause the additional effect to potentially trigger once for every target hit by the move! An example of this is PMD's implementation of Ominous Wind, which could trigger once on every hit. | |||
If you only want it to trigger once after all targets have been hit, create an <code>Additional End Event</code> in After Actions, and add the desired effect to its Base Events list. An example of this is PMDO's Ominous Wind, which can only trigger once per use. | |||
=== Multiple Effects at Once vs. Multiple Possible Effects === | |||
<code>Additional Event</code> and <code>Additional End Event</code>, when they activate, will only pick ONE event in their Battle Event list out of all possible options. An example of this in action is Tri-Attack, which has a 50% chance of activating an additional effect, and that additional effect is picked out of a list of Freeze, Burn, and Paralysis. | |||
If you want to apply multiple effects at once, add a <code>Group Event</code> and within that event, add all the desired status/stat change events there. An example is Ominous Wind, which raises multiple stats at once if its additional effect is triggered. | |||
== Other Move Flags == | == Other Move Flags == | ||
Use the Skill States list to add flags for if a move makes contact, is sound based, is a healing move, etc. | |||
These will be picked up on by all the abilities that need them, such as contact abilities, Soundproof, etc. | |||
== Hit Critical Hit Moves == | == Hit Critical Hit Moves == | ||
To give the move a custom [[Critical Hit]] rate, add a <code>Boost Critical Event</code> to the On Actions list at priority 0. | |||
== Non-Damaging Status Moves == | == Non-Damaging Status Moves == | ||
Unlike damaging moves, Status moves do not need to use <code>Power</code> or <code>Effect Chance</code>, and can apply their effects directly. | |||
=== Status Conditions === | === Status Conditions === | ||
=== | To apply a status condition, add a <code>Status Battle Event</code> to On Hits at priority 0. | ||
* Choose the status you want with Status ID. | |||
* Checkmark Affect Target so that it's given to the target instead of that user. To affect the user, simply make the move itself target the user. | |||
* Silent Check should be left unchecked so that if the target is immune to the status, it doesn't emit a battle message that says so. | |||
=== Stat Changes === | |||
To apply a stat change, add a <code>Status Stack Battle Event</code> to On Hits at priority 0. This should also be done for other stackable statuses, if you make any. | |||
* Choose the exact number of stat levels you want to raise or drop with the Stack variable. | |||
* Choose the status you want with Status ID. | |||
* Checkmark Affect Target so that it's given to the target instead of that user. To affect the user, simply make the move itself target the user. | |||
* Silent Check should be left unchecked so that if the target is immune to the status, it doesn't emit a battle message that says so. | |||
=== Weather/Terrain === | === Weather/Terrain === | ||
To change the weather or apply a terrain, add a <code>Give Map Status Event</code> to On Hits at priority 0. This should ideally be put on a move that targets No One to ensure it cannot be subjected to Snatch or other redirecting moves. | |||
* Choose the map status you want with Status ID. | |||
* Map statuses can include things like Trick Room and Gravity. However, if your map status is classified as a weather you should include an <code>Extend Weather State</code> in the States variable to allow it to be affected by Weather Rock and other similar effects. | |||
=== Healing === | |||
To make a move heal, add a healing event to the On Hits event list with a priority of 0. There are two to choose from: | |||
* Restore HP Event: Restores a fraction of the target's Max HP, specified by the numerator and denominator. | |||
* Weather HP Event: Restores a fraction of the target's Max HP. It can be altered by what map statuses are on the field. | |||
You should add the <code>Heal State</code> to the move's Skill states, such that it becomes affected by Triage. Heal Block does not ban moves in PMDO: it only prevents HP restoration directly. | |||
== Hitting Tiles == | == Hitting Tiles == | ||
Effects that alter tiles (including the items on the tile) are achieved by adding events to the On Hit Tiles variable. Make sure you checkmark Hit Tiles in the move's Explosion data, and also the right hit tile settings in the Hitbox data (depends on the type of hitbox). | |||
code> | |||
=== Destroying Terrain === | === Destroying Terrain === | ||
=== | To destroy walls, add a <code>Remove Terrain State Event</code> with a priority of 0. Then, specify which terrain you want this move to be able to delete, using the States variable. You can also specify an animation and sound for when the tile is removed. | ||
=== Destroying Items === | |||
To destroy items hit by the move, add a <code>Remove Item Event</code> with a priority of 0. Blocked By Terrain allows items hidden in walls to be spared. If your effect also destroys terrain, be sure to put this first so that the item is protected by the wall, then the wall is destroyed. | |||
=== Laying Traps === | |||
To add traps, use the <code>Set Trap Event</code>, and specify the id of the trap you want to place. You can also remove traps with <code>Remove Trap Event</code>. Use a priority of 0. | |||
== Displacements == | == Displacements == | ||
To knock the target back, use <code>Knock Back Event</code> at a priority of 0. | |||
To throw the target back in an arc, use the <code>Throw Back Event</code> at a priority of 0. | |||
== Further Reading == | == 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. | 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. | ||
The best way to find out how an existing move works is to inspect the data of that move. | |||
For a full list of BattleEvents you can use, check the [[BattleEvent Reference]]. | For a full list of BattleEvents you can use, check the [[BattleEvent Reference]]. | ||
Effects can get very | Effects can get very specific, and sometimes you may want to make your own. | ||
You [[Creating Battle Event Scripts|can make your own BattleEvents]] using ScriptedBattleEvent. | You [[Creating Battle Event Scripts|can make your own BattleEvents]] using ScriptedBattleEvent. | ||
[[Category:Modding Data]] | [[Category:Modding Data]] |
Latest revision as of 05:57, 19 April 2024
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.
The BattleData Reference has the full documentation.
Effect Priority
Battle Events added to event lists each have a priority. This determines in what order these effects execute: The lower the number, the earlier it executes. Priority can also be subdivided.
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. PMDO has a specific way of numbering events that must be adhered to when modding the game, but if one were to create a new game with completely new moves and abilities, they could choose how to number everything.
Inflicting Damage
To inflict damage, you will need to add a Power
state to Skill States, which will contain the base power of the move. Then, you will need to add a Damage Formula Event
to On Hits at priority -1.
Fixed Damage
To inflict fixed damage, or specially calculated damage you will need to use a Battle Event other than Damage Formula Event
. Some examples include:
LevelDamageEvent
: Does damage based on the user's level.CutHPDamageEvent
: Cuts the target's HP in half.MaxHPDamageEvent
: Does damage based on the target's max HP.
There are several others; consult the BattleEvent Reference for full details.
Additional Effects
To apply additional effects that occur after a damaging move hits, add an Effect Chance
to Skill States, which contains the chance that the additional effect will trigger. Then, add an Additional Event
event to On Hits at priority 0. What effect you apply depends on what Battle Event you add to the Additional Event
's Battle Events variable.
Chance of Status
To inflict a status effect, add a Status Battle Event
.
- Choose the status you want with Status ID.
- Checkmark Affect Target so that it's given to the target (not the user!)
- Checkmark Silent Check so that if the target is immune to the status, it doesn't emit a battle message that says so.
Chance of Stat Change
To apply a stat change as an additional effect, add a Status Stack Battle Event
. This should also be done for other stackable statuses, if you make any.
- Choose the exact number of stat levels you want to raise or drop with the Stack variable.
- Choose the status you want with Status ID.
- Checkmark Affect Target so that it's given to the target (not the user!)
- Checkmark Silent Check so that if the target is immune to the status, it doesn't emit a battle message that says so.
Chance Effect on User
To make additional effects apply on the user, you can change the Affect Target variable as covered in the two above sections. However, this will cause the additional effect to potentially trigger once for every target hit by the move! An example of this is PMD's implementation of Ominous Wind, which could trigger once on every hit.
If you only want it to trigger once after all targets have been hit, create an Additional End Event
in After Actions, and add the desired effect to its Base Events list. An example of this is PMDO's Ominous Wind, which can only trigger once per use.
Multiple Effects at Once vs. Multiple Possible Effects
Additional Event
and Additional End Event
, when they activate, will only pick ONE event in their Battle Event list out of all possible options. An example of this in action is Tri-Attack, which has a 50% chance of activating an additional effect, and that additional effect is picked out of a list of Freeze, Burn, and Paralysis.
If you want to apply multiple effects at once, add a Group Event
and within that event, add all the desired status/stat change events there. An example is Ominous Wind, which raises multiple stats at once if its additional effect is triggered.
Other Move Flags
Use the Skill States list to add flags for if a move makes contact, is sound based, is a healing move, etc.
These will be picked up on by all the abilities that need them, such as contact abilities, Soundproof, etc.
Hit Critical Hit Moves
To give the move a custom Critical Hit rate, add a Boost Critical Event
to the On Actions list at priority 0.
Non-Damaging Status Moves
Unlike damaging moves, Status moves do not need to use Power
or Effect Chance
, and can apply their effects directly.
Status Conditions
To apply a status condition, add a Status Battle Event
to On Hits at priority 0.
- Choose the status you want with Status ID.
- Checkmark Affect Target so that it's given to the target instead of that user. To affect the user, simply make the move itself target the user.
- Silent Check should be left unchecked so that if the target is immune to the status, it doesn't emit a battle message that says so.
Stat Changes
To apply a stat change, add a Status Stack Battle Event
to On Hits at priority 0. This should also be done for other stackable statuses, if you make any.
- Choose the exact number of stat levels you want to raise or drop with the Stack variable.
- Choose the status you want with Status ID.
- Checkmark Affect Target so that it's given to the target instead of that user. To affect the user, simply make the move itself target the user.
- Silent Check should be left unchecked so that if the target is immune to the status, it doesn't emit a battle message that says so.
Weather/Terrain
To change the weather or apply a terrain, add a Give Map Status Event
to On Hits at priority 0. This should ideally be put on a move that targets No One to ensure it cannot be subjected to Snatch or other redirecting moves.
- Choose the map status you want with Status ID.
- Map statuses can include things like Trick Room and Gravity. However, if your map status is classified as a weather you should include an
Extend Weather State
in the States variable to allow it to be affected by Weather Rock and other similar effects.
Healing
To make a move heal, add a healing event to the On Hits event list with a priority of 0. There are two to choose from:
- Restore HP Event: Restores a fraction of the target's Max HP, specified by the numerator and denominator.
- Weather HP Event: Restores a fraction of the target's Max HP. It can be altered by what map statuses are on the field.
You should add the Heal State
to the move's Skill states, such that it becomes affected by Triage. Heal Block does not ban moves in PMDO: it only prevents HP restoration directly.
Hitting Tiles
Effects that alter tiles (including the items on the tile) are achieved by adding events to the On Hit Tiles variable. Make sure you checkmark Hit Tiles in the move's Explosion data, and also the right hit tile settings in the Hitbox data (depends on the type of hitbox). code>
Destroying Terrain
To destroy walls, add a Remove Terrain State Event
with a priority of 0. Then, specify which terrain you want this move to be able to delete, using the States variable. You can also specify an animation and sound for when the tile is removed.
Destroying Items
To destroy items hit by the move, add a Remove Item Event
with a priority of 0. Blocked By Terrain allows items hidden in walls to be spared. If your effect also destroys terrain, be sure to put this first so that the item is protected by the wall, then the wall is destroyed.
Laying Traps
To add traps, use the Set Trap Event
, and specify the id of the trap you want to place. You can also remove traps with Remove Trap Event
. Use a priority of 0.
Displacements
To knock the target back, use Knock Back Event
at a priority of 0.
To throw the target back in an arc, use the Throw Back Event
at a priority of 0.
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.
The best way to find out how an existing move works is to inspect the data of that move.
For a full list of BattleEvents you can use, check the BattleEvent Reference.
Effects can get very specific, and sometimes you may want to make your own. You can make your own BattleEvents using ScriptedBattleEvent.