Skip to main content

Move System

640+ moves ship with the MIT Licensed Demo (separate download), covering Physical, Special, and Status categories. This guide explains how moves work, how to browse and assign them, and how to create new ones.

Choosing an action

Every move the player can pick is an entry in a learnset, and every one of them resolves through the same pipeline described below — power, accuracy, type effectiveness, then effects.

Move Categories​

Every move belongs to one of three categories:

CategoryDescriptionUses Stat
PhysicalMakes physical contact with the targetAttack vs Defense
SpecialRanged or elemental attackSp. Attack vs Sp. Defense
StatusDoes not deal direct damage; applies effectsN/A

The category determines which stats are used in the damage formula. Physical moves use the attacker's Attack against the defender's Defense; Special moves use Special Attack against Special Defense.

Move Properties​

Every move is a Move ScriptableObject (an abstract base; each move is a concrete subclass, see Creating a New Move). The Inspector groups its fields:

GroupFieldDescription
Base StatsMove TypeThe move's type (Electric, Fire, etc.)
Base StatsMove CategoryPhysical, Special, or Status
Base StatsBase Power Points / Max Power PointsPP -- how many times the move can be used before resting
Base StatsPriorityTurn order priority (-7 to +5). Higher priority moves go first regardless of Speed
Base StatsMakes ContactWhether the move makes physical contact (relevant for abilities like Static)
Base StatsAffected By...Whether Protect, Magic Coat, Snatch, Mirror Move or King's Rock apply
AccuracyInfinite Accuracy / Base AccuracyEither the move never misses, or its hit chance
TargetingMove Possible TargetsWho the move can hit (single opponent, all opponents, self, ally, all, etc.)
Multi HitIs Multi HitWhether it hits more than once per use

Damaging moves (DamageMove and its subclasses) add Power, a critical-stage modifier and, depending on the subclass, a secondary effect such as a status with its chance (StatusChanceDamageMove). The animation, sound and prefabs a move plays live in its own Animation group.

Damage Formula​

MCE uses the Gen V+ damage formula, implemented in DamageMath:

Base = ((2 * Level / 5 + 2) * Power * A / D) / 50 + 2

Where:

  • Level = attacker's level
  • Power = move's base power, adjusted for the situation
  • A / D = attacker's effective Attack (or Sp. Attack) over defender's effective Defense (or Sp. Defense), including stat stages

This base damage is then multiplied by a chain of factors:

Final = Base * Targets * Weather * Terrain * Critical * Random * STAB * TypeEffectiveness * Status * Additional
FactorValue
Targets0.75 when the move hits more than one target
WeatherFrom the active weather for the move (e.g. rain boosts Water, weakens Fire)
TerrainFrom the active terrain, if any
Critical1.5x (and a critical hit counts every stat stage below 0 as 0)
RandomA random factor between 0.85 and 1.00
STAB1.5x if the move type matches an attacker type (abilities can change it: Adaptability makes it 2x)
Type EffectivenessProduct over the defender's types: 0x, 0.25x, 0.5x, 1x, 2x, or 4x
StatusThe attacker's status condition scales physical damage: a burn halves it (0.5x)
AdditionalEverything abilities, held items, side statuses and allies add, one by one

The result is rounded and is never less than 1.

Browsing Moves​

Use the Database Browser to explore all available moves:

Open the OpenMon Hub (Tools > MCE > OpenMon Hub) → Database tab → Database Browser

The browser lets you:

  • Search moves by name.
  • Filter by type, category, or power range.
  • View all properties of a selected move.
  • Jump to the move's ScriptableObject for editing.

Assigning Moves to Monsters​

Moves are assigned to monsters through the MonsterEntry ScriptableObject:

Level-Up Moves​

Each entry in the level-up moveset pairs a level with a move:

Level 1:  Tackle
Level 1: Growl
Level 7: Ember
Level 10: Smokescreen
Level 16: Fire Fang
Level 22: Flame Burst
Level 30: Flamethrower

A monster learns these moves automatically when reaching the specified level. If a monster is caught or generated at a level higher than some of its level-up moves, it will know the most recent 4 moves from its level-up list.

TM/HM Compatibility​

A list of Move references indicating which TM and HM moves the species can learn. The player uses TM/HM items from the bag to teach these moves.

Egg Moves​

Moves that can only be obtained through breeding. The offspring inherits egg moves from its parents if the parents know those moves.

Tutor Moves​

Moves taught by NPCs in-game. Build the NPC with the MoveTutor CommandGraph node (it teaches a chosen move to a chosen monster) and, if you want, condition it with IfMonsterCanLearnMove; RemindPreviouslyLearntMoves is the "move reminder".

Creating a New Move​

Every move is a concrete Move subclass with its own asset menu entry under Assets > Create > MCE > Monster Database > Moves > <Type> > <Move>. To create a new move, make an asset of the move class whose behavior matches what you want and reconfigure its stats:

  1. Right-click in your Project window and pick the matching move class (e.g., Create > MCE > Monster Database > Moves > Electric > ThunderFang for a contact damage move with a paralysis chance, or ... > Normal > Tackle for plain contact damage).
  2. Name the asset (e.g., ThunderClaw).
  3. Configure all fields in the Inspector:
Name: Thunder Claw
Type: Electric
Category: Physical
Power: 75
Accuracy: 95
PP: 15
Priority: 0
Contact: true
Effect: May paralyze target
Effect Chance: 30
  1. Assign it to monsters' level-up, TM, egg, or tutor movelists.
Move Naming

Follow a consistent naming convention. The demo's moves use natural English names. Keep custom move names concise (1-3 words) and evocative of their type and effect.

Move Effects​

Many moves have secondary effects beyond dealing damage:

Stat Changes​

Move: Swords Dance
Category: Status
Effect: Raises user's Attack by 2 stages

Status Conditions​

Move: Thunder Wave
Category: Status
Effect: Paralyzes the target
Accuracy: 90

Multi-Hit Moves​

Some moves hit 2-5 times per turn (e.g., Fury Attack). The number of hits is rolled randomly with weighted distribution.

Recoil Moves​

The attacker takes a percentage of the damage dealt as recoil (e.g., Double-Edge deals 33% recoil).

Priority Moves​

Moves with positive priority always go first in a turn:

PriorityExamples
+5Helping Hand
+3Fake Out
+2Extreme Speed
+1Quick Attack, Aqua Jet, Mach Punch
0Most moves
-1Vital Throw
-3Focus Punch
-5Counter, Mirror Coat
-6Whirlwind, Roar
-7Trick Room

Weather Moves​

Some moves change the battlefield weather (Rain Dance, Sunny Day, Sandstorm, Hail), which affects damage multipliers and enables certain abilities.

Move Slots​

Each monster can know up to 4 moves at a time. When learning a 5th move, the player must choose which existing move to replace. This is handled automatically by the UI -- the move learning screen appears and lets the player pick.

The MoveSlot struct tracks:

  • The Move reference.
  • MaxPP (it starts at the move's BasePowerPoints) and CurrentPP, the PP remaining.

PP Management​

  • Each move has a base PP value.
  • PP decreases by 1 each time the move is used.
  • When PP reaches 0, the move cannot be used until restored.
  • PP is restored by healing the party, using PP-restoring items (Ether, Elixir), or specific abilities.
  • If no move can be used, the monster uses the move set as NoPPMove in the MCESettings asset (Struggle).

Move Animations​

Each move class plays its own animation during battle. The move's PlayAnimation method runs the effect, and the sound and the animation prefabs it uses are fields in the move asset's Animation group (for example ThunderFang exposes a sound, a bite animation prefab and a paralysis animation prefab). To restyle a move, assign different prefabs and audio to those fields; to change what it plays, change the move class (Source and Studio editions).

Best Practices​

  1. Balance power vs accuracy vs PP. High-power moves should have lower accuracy or PP to create meaningful choices.
  2. Give every type a range of moves. Each type should have Physical, Special, and Status options.
  3. Consider move distribution across species. Not every monster should learn the best moves.
  4. Test effect chances. A 100% flinch move with high speed would be extremely overpowered.
  5. Use the Database Browser to check for gaps in your move coverage before release.