Modding Move Effects

From PMDOWiki
Revision as of 05:11, 19 April 2024 by IDK (talk | contribs) (up to hitting tiles)

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.

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 specific, and sometimes you may want to make your own. You can make your own BattleEvents using ScriptedBattleEvent.