Modding Move Effects: Difference between revisions

From PMDOWiki
IDK (talk | contribs)
Damages
IDK (talk | contribs)
effects and crits
Line 19: Line 19:
[[File:SkillEditor_Priority.png|frameless]]
[[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.
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 ==
Line 37: Line 37:
== 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>.


=== Chance of Status ===
* 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 ==


Moves that make contact, sound-based moves, slash-based moves, etc.
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 ==

Revision as of 04:46, 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.

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

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.