public

Rpg Maker Developers Group

Simple enough for a child, powerful enough for a developer

2 Followers

Using Patterns for Animating Events

BMM Archive · July 16, 2026

Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.

Original Source

  • Original title: Using Patterns for Animating Events
  • Original author: Archeia
  • Original date: November 15, 2016
  • Source thread: https://forums.rpgmakerweb.com/threads/using-patterns-for-animating-events.71011/
  • Source forum path: Game Development Engines > RPG Maker Tutorials > RMMV Tutorials

Summary

Using Patterns for Animating Events​What is this for? This is for animating objects by referencing their patterns instead. By default, RPG Maker resets pattern back to 1 and it's super frustrating. This is useful depending on your workflow. Copy the code and put it in a JS file. OR Download the attachment Activate in PluginManager, you can name it whatever you want.

Archived First Post


Using Patterns for Animating Events
What is this for?

This is for animating objects by referencing their patterns instead. By default, RPG Maker resets pattern back to 1 and it's super frustrating. This is useful depending on your workflow.

Copy the code and put it in a JS file. OR Download the attachment
Activate in PluginManager, you can name it whatever you want.
Read the documentation.
Here's an example use:

1cDPATE.gif


How to Use?
Code:
/*
-------------------------------------------------------------------------------------------------
 # Template for Movement Commands
-------------------------------------------------------------------------------------------------

How to use:
----------------------------------------
Copy and Paste the following code in this js file.
----------------------------------------
Game_Interpreter.prototype.animateAnimationName = function(characterId, waitDuration) {

  // Define Default
  // Character ID is stated in the documentation above
  //----------------------------------------
  if (characterId === undefined) { characterId = 0; }
  // waitDuration is how fast you want the animation to play.
  //----------------------------------------
  if (waitDuration === undefined) { waitDuration = 15; }

  // Get Character
  this._character = this.character(characterId);

  // Initialize Move Route
  // Repeat = Repeat Movements
  // Skippable = Skip if Cannot Move
  // Wait = Wait for Completion
  //----------------------------------------
  var moveRoute = {list: [], repeat: false, skippable: false, wait: true};

  // Your move route code here.
  // Start Inserting it y'all.

  // Add Ending of Move Route (Needed)
  moveRoute.list.push({code: Game_Character.ROUTE_END, indent: null, parameters: []})

  // If Character Exists
  if (this._character) { this._character.forceMoveRoute(moveRoute); }
  // If Move Route wait flag is true
  if (moveRoute.wait) { this.setWaitMode('route') };
  return true;
};
------------------------------------------------------------------------------------------------

Change the function name to something you'd like. For Example:
----------------------------------------
Game_Interpreter.prototype.animateAnimationName = function(characterId, waitDuration) {

to

Game_Interpreter.prototype.animateDancingRalph = function(characterId, waitDuration) {

The new name will be the ID for the Script Call. This will be explained later.
-------------------------------------------------------------------------------------------------

Explaining Character Index and Pattern:
----------------------------------------
In a character sheet you would get something like this:

      [ID]  [Index 1] [Index 2] [Index 3]
[Down(2) ]  [0][1][2] [0][1][2] [0][1][2]
[Left(4) ]  [0][1][2] [0][1][2] [0][1][2]
[Right(6)]  [0][1][2] [0][1][2] [0][1][2]
[Up(8)   ]  [0][1][2] [0][1][2] [0][1][2]
      [ID]  [Index 4] [Index 5] [Index 6]
[Down(2) ]  [0][1][2] [0][1][2] [0][1][2]
[Left(4) ]  [0][1][2] [0][1][2] [0][1][2]
[Right(6)]  [0][1][2] [0][1][2] [0][1][2]
[Up(8)   ]  [0][1][2] [0][1][2] [0][1][2]

ID is the number of the Character row you want to reference.
Pattern (0,1,2) is the individual frames per each direction (Up, Down, Left, Right).

If you want to change the pattern of the object you want to animate, use this command:
----------------------------------------
this._originalPattern = this._pattern = x;
(With x being one of the values 0/1/2)

If you want to change the graphic of the object that is set in another index, use this command:
----------------------------------------
this._characterIndex = ID;
(With ID being the index you want to reference. Make sure to refer to the chart above)

If you want to change the direction, use this command:
----------------------------------------
this.setDirection(ID);
(Refer to the chart to figure out what number the direction is)

If you want to use all three, it will look something like this:
----------------------------------------
moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: [
'this._characterIndex = 1;
this._originalPattern = this._pattern = 0;
this.setDirection(4)']});

-------------------------------------------------------------------------------------------------
Use the Script Call event command. Not inside a move route. The name will depend on the function name
you have set earlier:

animateAnimationName(ID, Wait)
----------------------------------------
 -1 is the player
  0 is the current event
  ID beyond -1 and 0 is Event ID.

For example:
Script call animateAnimationName(0, 15)
-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------
 Example Animation Presets
 -----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------
 Animate Door -- Opening
 Script call animateOpenDoor(0, 15)
-----------------------------------------------------------------------------------------------*/
Game_Interpreter.prototype.animateOpenDoor = function(characterId, waitDuration) {

  // Define Default
  // Character ID is stated in the documentation above
  //----------------------------------------
  if (characterId === undefined) { characterId = 0; }
  // waitDuration is how fast you want the animation to play.
  //----------------------------------------
  if (waitDuration === undefined) { waitDuration = 15; }

  // Get Character
  this._character = this.character(characterId);

  // Initialize Move Route
  // Repeat = Repeat Movements
  // Skippable = Skip if Cannot Move
  // Wait = Wait for Completion
  //----------------------------------------
  var moveRoute = {list: [], repeat: false, skippable: false, wait: true};

  // Your move route code here.
    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT, indent: null, parameters: ['this._originalPattern = this._pattern = 0;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 1;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 2;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});


    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 0; this.setDirection(4)']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 1;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

    moveRoute.list.push({code: Game_Character.ROUTE_SCRIPT , indent: null, parameters: ['this._originalPattern = this._pattern = 2;']});
    moveRoute.list.push({code: Game_Character.ROUTE_WAIT, indent: null, parameters: [waitDuration]});

  // Add Ending of Move Route (Needed)
    moveRoute.list.push({code: Game_Character.ROUTE_END, indent: null, parameters: []})

  // If Character Exists
  if (this._character) { this._character.forceMoveRoute(moveRoute); }

  // If Move Route wait flag is true
  if (moveRoute.wait) { this.setWaitMode('route') };
  return true;
};

Why won't you use event commands instead?

By default, RPG Maker resets pattern back to 1. Making the following commands unusable:
fjrOTgf.png


- Thank you TDS for helping me figure this out!

View attachment PresetAnimations.js

Downloads / Referenced Files

Log in to download

Log in, then follow the RPG Maker Developers Group to see these download links.

Log in to download
Creator Claims / Removal

If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.

#039#rpg-maker-archive#mv-tutorials

Replies (0)

No replies yet.

0 replies 1 view

Log in to reply.

User Avatar