1084 lines
39 KiB
JavaScript
1084 lines
39 KiB
JavaScript
//=============================================================================
|
|
// Yanfly Engine Plugins - Move Route Core
|
|
// YEP_MoveRouteCore.js
|
|
//=============================================================================
|
|
|
|
var Imported = Imported || {};
|
|
Imported.YEP_MoveRouteCore = true;
|
|
|
|
var Yanfly = Yanfly || {};
|
|
Yanfly.MoveRoute = Yanfly.MoveRoute || {};
|
|
Yanfly.MoveRoute.version = 1.04;
|
|
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc v1.04 Expand the number of movement options for the move
|
|
* route events using this plugin.
|
|
* @author Yanfly Engine Plugins
|
|
*
|
|
* @help
|
|
* ============================================================================
|
|
* Introduction
|
|
* ============================================================================
|
|
*
|
|
* RPG Maker MV gives us a lot of various commands to use for our Move Routes.
|
|
* However, it still imposes a lot of limitations on the system for what else
|
|
* could still be potentially useful for move route commands. This plugin will
|
|
* provide additional methods to construct move routes for your events and
|
|
* allow you to streamline the move route creation process.
|
|
*
|
|
* ============================================================================
|
|
* Instructions - Simplified Movement Routes
|
|
* ============================================================================
|
|
*
|
|
* If you want to make events move a certain way using the commands from this
|
|
* plugin, do the following:
|
|
*
|
|
* 1. Open the event you wish to move.
|
|
* 2. Make a Movement Route command or Automatic Custom Route.
|
|
* 3. Press "Script..."
|
|
* 4. Type in any of the desired following commands:
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* UP: x
|
|
* LEFT: x
|
|
* RIGHT: x
|
|
* DOWN: x
|
|
* UPPER LEFT: x
|
|
* UPPER RIGHT: x
|
|
* LOWER LEFT: x
|
|
* LOWER RIGHT: x
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will make the designated event move the noted direction x amount of
|
|
* times. This is no different than inserting a direction multiple times with
|
|
* editor, but this is meant to serve as a way to consolidate commands.
|
|
* Replace x with an integar value.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Up: 10
|
|
* Left: 7
|
|
* Down: 3
|
|
* Right: 4
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* ANIMATION: x
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Play animation x on the designated event.
|
|
* Replace x with an integar value.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Animation: 10
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* BALLOON: x
|
|
* BALLOON: EXCLAMATION
|
|
* BALLOON: !
|
|
* BALLOON: QUESTION
|
|
* BALLOON: ?
|
|
* BALLOON: MUSIC NOTE
|
|
* BALLOON: HEART
|
|
* BALLOON: ANGER
|
|
* BALLOON: SWEAT
|
|
* BALLOON: COBWEB
|
|
* BALLOON: SILENCE
|
|
* BALLOON: ...
|
|
* BALLOON: LIGHT BULB
|
|
* BALLOON: ZZZ
|
|
* BALLOON: USER 1
|
|
* BALLOON: USER 2
|
|
* BALLOON: USER 3
|
|
* BALLOON: USER 4
|
|
* BALLOON: USER 5
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Plays balloon ID x on the designated event.
|
|
* Replace x with an integar value or replace it with one of the strings shown
|
|
* above to produce that specific balloon.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Balloon: 5
|
|
* Balloon: Heart
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* ICON BALLOON: x
|
|
* ICON BALLOON: x to y
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Requires YEP_IconBalloons.
|
|
* This will make the designated event display an icon balloon using icon x
|
|
* or x to y if the latter is used.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Turn Away: 20, 30
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* JUMP FORWARD: x
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* The designated event will jump in the direction it is facing x tiles.
|
|
* Replace x an integar value.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Jump Forward: 5
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* JUMP TO: x, y
|
|
* JUMP TO: EVENT x
|
|
* JUMP TO: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* The designated event will jump to either the coordinates x, y, or event x on
|
|
* the map (if event x is present), or to the player's location.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Jump To: 20, 30
|
|
* Jump To: Event 5
|
|
* Jump To: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* MOVE TO: x, y
|
|
* MOVE TO: EVENT x
|
|
* MOVE TO: PLAYER
|
|
*
|
|
* AVOID MOVE TO: x, y
|
|
* AVOID MOVE TO: EVENT x
|
|
* AVOID MOVE TO: PLAYER
|
|
*
|
|
* CRASH MOVE TO: x, y
|
|
* CRASH MOVE TO: EVENT x
|
|
* CRASH MOVE TO: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* The designated event will move to either the coordinates x, y, or event x on
|
|
* the map (if event x is present), or to the player's location. The designated
|
|
* event will determine what is the best route within 12 iterations to reach
|
|
* the marked location. The designated event will keep repeating this command
|
|
* until it has reached the coordinates.
|
|
*
|
|
* Replace x and y with integar values.
|
|
*
|
|
* 'Move To' and 'Avoid Move To' will make the designated event move around the
|
|
* player and the player's followers when calculating a path to move to.
|
|
*
|
|
* 'Crash Move To' will allow collision with the player and/or followers.
|
|
*
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Move To: 20, 30
|
|
* Move To: Event 5
|
|
* Move To: Player
|
|
* Avoid Move To: 30, 40
|
|
* Crash Move To: 40, 50
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* PATTERN LOCK: x
|
|
* PATTERN UNLOCK
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* For some reason, RPG Maker MV does not allow you to set the currently used
|
|
* pattern (sprite frame) within the Move Route editor. This command will allow
|
|
* you to do so. If Pattern Lock is used, the sprite will remain locked in that
|
|
* pattern position until unlocked.
|
|
* Replace x an integar value.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Pattern Lock: 0
|
|
* Pattern Lock: 2
|
|
* Pattern Unlock
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* SELF SWITCH x: ON
|
|
* SELF SWITCH x: OFF
|
|
* SELF SWITCH x: TOGGLE
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will turn the self switch designed event (unless it's the player) to
|
|
* either On, Off, or Toggle it On/Off.
|
|
* Replace x with A, B, C, or D.
|
|
* Those using YEP_SelfSwVar.js can use numbers, too.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Self Switch A: On
|
|
* Self Switch B: Off
|
|
* Self Switch 123: Toggle
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* SELF VARIABLE x: y
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Requires YEP_SelfSwVar.js. This will set the self variable x for the
|
|
* designated event (unless it's the player) to y.
|
|
* Replace x with an integar value.
|
|
* Replace y with an integar value or code.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Self Variable A: On
|
|
* Self Variable B: Off
|
|
* Self Variable 123: Toggle
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* STEP AWAY FROM: x, y
|
|
* STEP AWAY FROM: EVENT x
|
|
* STEP AWAY FROM: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will make the designated event step one tile away from map coordinates
|
|
* x, y, or event x on the map (if event x is present), or from the player's
|
|
* current location.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Step Away: 20, 30
|
|
* Step Away: Event 5
|
|
* Step Away: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* STEP TOWARD: x, y
|
|
* STEP TOWARD: EVENT x
|
|
* STEP TOWARD: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will make the designated event step one tile toward map coordinates
|
|
* x, y, or event x on the map (if event x is present), or to the player's
|
|
* current location.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Step Toward: 20, 30
|
|
* Step Toward: Event 5
|
|
* Step Toward: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* TELEPORT: x, y
|
|
* TELEPORT: EVENT x
|
|
* TELEPORT: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will instantly teleport the designated event to coordinates x, y, or
|
|
* event x on the map (if event x is present), or to the player's current
|
|
* location on the map.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Teleport: 20, 30
|
|
* Teleport: Event 5
|
|
* Teleport: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* TURN AWAY FROM: x, y
|
|
* TURN AWAY FROM: EVENT x
|
|
* TURN AWAY FROM: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will make the designated event turn away from map coordinates x, y, or
|
|
* event x on the map (if event x is present), or from the player's location.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Turn Away: 20, 30
|
|
* Turn Away: Event 5
|
|
* Turn Away: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* TURN TOWARDS: x, y
|
|
* TURN TOWARDS: EVENT x
|
|
* TURN TOWARDS: PLAYER
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* This will make the designated event turn towards tile toward map coordinates
|
|
* x, y, or event x on the map (if event x is present), or to the player's
|
|
* current location.
|
|
* Replace x and y with integar values.
|
|
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
* Example: Turn Towards: 50, 60
|
|
* Turn Towards: Event 5
|
|
* Turn Towards: Player
|
|
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
*
|
|
* And that's it for the specialized movement routes you can use.
|
|
*
|
|
* ============================================================================
|
|
* Notetags
|
|
* ============================================================================
|
|
*
|
|
* These are some notetags you can utilize for your events.
|
|
*
|
|
* Event Notetags:
|
|
*
|
|
* <Always Update Movement>
|
|
* - Most events don't update unless they're close to the screen. But any
|
|
* event with this notetag will always be updating regardless of whether they
|
|
* are close to the screen or not.
|
|
*
|
|
* ============================================================================
|
|
* Lunatic Mode - Script Calls
|
|
* ============================================================================
|
|
*
|
|
* For those with JavaScript experience and would like to use the raw command
|
|
* functions without resorting to the simplified commands, you can use the
|
|
* following code inside of a Script:
|
|
*
|
|
* this.jumpForward(x)
|
|
* - Replace x with the amount of tiles you want the designated event to jump
|
|
* forward. x will be automatically rounded to the nearest integar value if
|
|
* it is a float value.
|
|
*
|
|
* this.jumpToPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to jump towards. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.jumpToEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* jump towards. x will be automatically rounded to the nearest integar value
|
|
* if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* this.moveRepeat(direction, times)
|
|
* - This will make the designated event move in 'direction' a certain amount
|
|
* of 'times'. Replace 'direction' with the number value you wish the event
|
|
* to move in (refer to NumPad) and replace 'times' with the number of times
|
|
* to step in that direction.
|
|
*
|
|
* this.moveToPoint(x, y)
|
|
* - This will calculate the best possible movement route for the designated
|
|
* event to reach coordinates x, y within 12 iterations. The designated event
|
|
* will keep repeating this command until it has reached the coordinates.
|
|
* This will cause the designated event to go around the player and followers
|
|
* on the map without colliding into them.
|
|
*
|
|
* this.moveToPoint(x, y, true)
|
|
* - This will calculate the best possible movement route for the designated
|
|
* event to reach coordinates x, y within 12 iterations. The designated event
|
|
* will keep repeating this command until it has reached the coordinates.
|
|
* This will cause the designated event to crash into the player and/or any
|
|
* followers if they are in the path way.
|
|
*
|
|
* this.moveToEvent(x)
|
|
* - This will calculate the best possible movement route for the designated
|
|
* event to reach event x within 12 iterations. The designated event will
|
|
* keep repeating this command until it has reached the coordinates. If 0 is
|
|
* used, it will refer to the player. This will cause the designated event to
|
|
* go around the player and followers on the map without colliding into them.
|
|
*
|
|
* this.moveToEvent(x, true)
|
|
* - This will calculate the best possible movement route for the designated
|
|
* event to reach event x within 12 iterations. The designated event will
|
|
* keep repeating this command until it has reached the coordinates. If 0 is
|
|
* used, it will refer to the player. This will cause the designated event to
|
|
* crash into the player and/or any followers if they are in the path way.
|
|
*
|
|
* this.requestAnimation(x)
|
|
* - Replace x with the animation ID you want to play on the designated
|
|
* event. x will be automatically rounded to the nearest integar value if it
|
|
* is a float value.
|
|
*
|
|
* this.requestBalloon(x)
|
|
* - Replace x with the balloon ID you want to play on the designated event.
|
|
* x will be automatically rounded to the nearest integar value if it is a
|
|
* float value.
|
|
*
|
|
* this.stepAwayFromPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to step away from. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.stepAwayFromEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* step away from. x will be automatically rounded to the nearest integar
|
|
* value if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* this.stepTowardPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to step towards. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.stepTowardPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to step towards. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.stepTowardEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* step towards. x will be automatically rounded to the nearest integar value
|
|
* if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* this.teleportToPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to teleport to. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.teleportToEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* teleport to. x will be automatically rounded to the nearest integar value
|
|
* if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* this.turnAwayFromPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to turn away from. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.turnAwayFromEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* turn away from. x will be automatically rounded to the nearest integar
|
|
* value if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* this.turnTowardPoint(x, y)
|
|
* - Replace x and y with the coordinates you wish for the designated event
|
|
* to turn towards. x and y will be automatically rounded to the nearest
|
|
* integar value if it is a float value.
|
|
*
|
|
* this.turnTowardEvent(x)
|
|
* - Replace x with the ID of the event you wish for the designated event to
|
|
* turn towards. x will be automatically rounded to the nearest integar value
|
|
* if it is a float value. If 0 is used, it will refer to the player.
|
|
*
|
|
* ============================================================================
|
|
* Changelog
|
|
* ============================================================================
|
|
*
|
|
* Version 1.04:
|
|
* - Fixed a bug that caused UP, LEFT, RIGHT, DOWN repeats to stack when used
|
|
* with a repeating movement pattern.
|
|
*
|
|
* Version 1.03:
|
|
* - Bypass the isDevToolsOpen() error when bad code is inserted into a script
|
|
* call or custom Lunatic Mode code segment due to updating to MV 1.6.1.
|
|
*
|
|
* Version 1.02:
|
|
* - Updated for RPG Maker MV version 1.5.0.
|
|
*
|
|
* Version 1.01:
|
|
* - Bug fixed for the repeated commands that caused the commands to add upon
|
|
* one another.
|
|
*
|
|
* Version 1.00:
|
|
* - Finished Plugin!
|
|
*/
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// Game_Character
|
|
//=============================================================================
|
|
|
|
Yanfly.MoveRoute.Game_Character_setMoveRoute =
|
|
Game_Character.prototype.setMoveRoute;
|
|
Game_Character.prototype.setMoveRoute = function(moveRoute) {
|
|
var route = JsonEx.makeDeepCopy(moveRoute);
|
|
Yanfly.MoveRoute.Game_Character_setMoveRoute.call(this, route);
|
|
};
|
|
|
|
Yanfly.MoveRoute.Game_Character_processMoveCommand =
|
|
Game_Character.prototype.processMoveCommand;
|
|
Game_Character.prototype.processMoveCommand = function(command) {
|
|
var gc = Game_Character;
|
|
switch (command.code) {
|
|
case gc.ROUTE_SCRIPT:
|
|
$gameTemp._moveCommand = command;
|
|
this.processMoveRouteScriptCall(command.parameters[0]);
|
|
break;
|
|
default:
|
|
Yanfly.MoveRoute.Game_Character_processMoveCommand.call(this, command);
|
|
break;
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteScriptCall = function(line) {
|
|
// EVAL
|
|
if (line.match(/EVAL:[ ](.*)/i)) {
|
|
this.processMoveRouteEval(String(RegExp.$1));
|
|
// ANIMATION
|
|
} else if (line.match(/(?:ANIMATION|REQUEST ANIMATION):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.requestAnimation(x);
|
|
// ICON BALLOON
|
|
} else if (line.match(/(?:ICON BALLOON|REQUEST ICON BALLOON):[ ](.*)/i)) {
|
|
var str = String(RegExp.$1);
|
|
this.processMoveRouteIconBalloon(str);
|
|
// BALLOON
|
|
} else if (line.match(/(?:BALLOON|REQUEST BALLOON):[ ](.*)/i)) {
|
|
var str = String(RegExp.$1);
|
|
this.processMoveRouteBalloon(str);
|
|
// JUMP FORWARD
|
|
} else if (line.match(/(?:JUMP FORWARD|JUMP FORWARDS):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.jumpForward(x);
|
|
// JUMP TO: POINT
|
|
} else if (line.match(/JUMP[ ](?:TO|TOWARD|TOWARDS):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.jumpToPoint(x, y);
|
|
// JUMP TO: EVENT
|
|
} else if (line.match(/JUMP[ ](?:TO|TOWARD|TOWARDS):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.jumpToEvent(x);
|
|
// JUMP TO: PLAYER
|
|
} else if (line.match(/JUMP[ ](?:TO|TOWARD|TOWARDS):[ ]PLAYER/i)) {
|
|
this.jumpToEvent(0);
|
|
// MOVE TO: POINT
|
|
} else if (line.match(/MOVE[ ](?:TO|TOWARD|TOWARDS):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
var collision = this.checkCollisionKeywords(line);
|
|
this.moveToPoint(x, y, collision);
|
|
// MOVE TO: EVENT
|
|
} else if (line.match(/MOVE[ ](?:TO|TOWARD|TOWARDS):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var collision = this.checkCollisionKeywords(line);
|
|
this.moveToEvent(x, collision);
|
|
// MOVE TO: PLAYER
|
|
} else if (line.match(/MOVE[ ](?:TO|TOWARD|TOWARDS):[ ]PLAYER/i)) {
|
|
this.moveToEvent(0);
|
|
// PATTERN LOCK
|
|
} else if (line.match(/(?:PATTERN LOCK):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.patternLock(x);
|
|
// PATTERN UNLOCK
|
|
} else if (line.match(/(?:PATTERN UNLOCK)/i)) {
|
|
this.patternUnlock();
|
|
// SELF SWITCH: ON
|
|
} else if (line.match(/(?:SELF SWITCH)[ ](.*):[ ]ON/i)) {
|
|
var str = String(RegExp.$1);
|
|
this.processMoveRouteSelfSwitch(str, 'on');
|
|
// SELF SWITCH: OFF
|
|
} else if (line.match(/(?:SELF SWITCH)[ ](.*):[ ]OFF/i)) {
|
|
var str = String(RegExp.$1);
|
|
this.processMoveRouteSelfSwitch(str, 'off');
|
|
// SELF SWITCH: TOGGLE
|
|
} else if (line.match(/(?:SELF SWITCH)[ ](.*):[ ]TOGGLE/i)) {
|
|
var str = String(RegExp.$1);
|
|
this.processMoveRouteSelfSwitch(str, 'toggle');
|
|
// SELF VARIABLE
|
|
} else if (line.match(/(?:SELF VARIABLE)[ ](.*):[ ](.*)/i)) {
|
|
var str = String(RegExp.$1);
|
|
var code = String(RegExp.$2);
|
|
this.processMoveRouteSelfVariable(str, code);
|
|
// STEP AWAY FROM: POINT
|
|
} else if (line.match(/(?:STEP AWAY|STEP AWAY FROM):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.stepAwayFromPoint(x, y);
|
|
// STEP AWAY FROM: EVENT
|
|
} else if (line.match(/(?:STEP AWAY|STEP AWAY FROM):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.stepAwayFromEvent(x);
|
|
// STEP AWAY FROM: PLAYER
|
|
} else if (line.match(/(?:STEP AWAY|STEP AWAY FROM):[ ]PLAYER/i)) {
|
|
this.stepAwayFromEvent(0);
|
|
// STEP TOWARD: POINT
|
|
} else if (line.match(/(?:STEP TOWARD|STEP TOWARDS):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.stepTowardPoint(x, y);
|
|
// STEP TOWARD: EVENT
|
|
} else if (line.match(/(?:STEP TOWARD|STEP TOWARDS):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.stepTowardEvent(x);
|
|
// STEP TOWARD: PLAYER
|
|
} else if (line.match(/(?:STEP TOWARD|STEP TOWARDS):[ ]PLAYER/i)) {
|
|
this.stepTowardEvent(0);
|
|
// TELEPORT: POINT
|
|
} else if (line.match(/(?:TELEPORT|TELEPORT TO):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.teleportToPoint(x, y);
|
|
// TELEPORT: EVENT
|
|
} else if (line.match(/(?:TELEPORT):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.teleportToEvent(x);
|
|
// TELEPORT: PLAYER
|
|
} else if (line.match(/(?:TELEPORT):[ ]PLAYER/i)) {
|
|
this.teleportToEvent(0);
|
|
// TURN AWAY FROM: POINT
|
|
} else if (line.match(/(?:TURN AWAY FROM|TURN AWAY):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.turnAwayFromPoint(x, y);
|
|
// TURN AWAY FROM: EVENT
|
|
} else if (line.match(/(?:TURN AWAY FROM|TURN AWAY):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.turnAwayFromEvent(x);
|
|
// TURN AWAY FROM: PLAYER
|
|
} else if (line.match(/(?:TURN AWAY FROM|TURN AWAY):[ ]PLAYER/i)) {
|
|
this.turnAwayFromEvent(0);
|
|
// TURN TOWARD: POINT
|
|
} else if (line.match(/(?:TURN TOWARD|TURN TOWARDS):[ ](\d+),[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
var y = parseInt(RegExp.$2);
|
|
this.turnTowardPoint(x, y);
|
|
// TURN TOWARD: EVENT
|
|
} else if (line.match(/(?:TURN TOWARD|TURN TOWARDS):[ ]EVENT[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.turnTowardEvent(x);
|
|
// TURN TOWARD: PLAYER
|
|
} else if (line.match(/(?:TURN TOWARD|TURN TOWARDS):[ ]PLAYER/i)) {
|
|
this.turnTowardEvent(0);
|
|
// MOVE DIRECTION
|
|
} else if (line.match(/(?:MOVE LOWER LEFT|LOWER LEFT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(1, x);
|
|
} else if (line.match(/(?:MOVE LOWER RIGHT|LOWER RIGHT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(3, x);
|
|
} else if (line.match(/(?:MOVE UPPER LEFT|UPPER LEFT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(7, x);
|
|
} else if (line.match(/(?:MOVE UPPER RIGHT|UPPER RIGHT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(9, x);
|
|
} else if (line.match(/(?:MOVE UP|UP):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(8, x);
|
|
} else if (line.match(/(?:MOVE DOWN|DOWN):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(2, x);
|
|
} else if (line.match(/(?:MOVE LEFT|LEFT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(4, x);
|
|
} else if (line.match(/(?:MOVE RIGHT|RIGHT):[ ](\d+)/i)) {
|
|
var x = parseInt(RegExp.$1);
|
|
this.moveRepeat(6, x);
|
|
// ELSE/EVAL
|
|
} else {
|
|
this.processMoveRouteEval(line);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.checkCollisionKeywords = function(line) {
|
|
if (line.match(/(?:CRASH|COLLIDE|COLLISION|ENCOUNTER|TOUCH)/i)) {
|
|
return true;
|
|
} else if (line.match(/(?:AVOID|EVADE|DODGE)/i)) {
|
|
return false;
|
|
} else {
|
|
return false;
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteEval = function(code) {
|
|
var a = this;
|
|
var b = this;
|
|
var player = $gamePlayer;
|
|
var s = $gameSwitches._data;
|
|
var v = $gameVariables._data;
|
|
try {
|
|
eval(code);
|
|
} catch (e) {
|
|
Yanfly.Util.displayError(e, code, 'MOVE ROUTE SCRIPT ERROR');
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteIconBalloon = function(str) {
|
|
if (!Yanfly.IBalloon) return;
|
|
if (str.match(/(\d+)[ ]TO[ ](\d+)/i)) {
|
|
var iconIndex1 = parseInt(RegExp.$1);
|
|
var iconIndex2 = parseInt(RegExp.$2);
|
|
} else if (str.match(/(\d+)/i)) {
|
|
var iconIndex1 = parseInt(RegExp.$1);
|
|
var iconIndex2 = iconIndex1;
|
|
} else {
|
|
return;
|
|
}
|
|
this.setIconBalloon(iconIndex1, iconIndex2);
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteBalloon = function(str) {
|
|
var id = 0;
|
|
if (str.match(/(?:EXCLAMATION|\!)/i)) {
|
|
id = 1;
|
|
} else if (str.match(/(?:QUESTION|\?)/i)) {
|
|
id = 2;
|
|
} else if (str.match(/(?:MUSIC NOTE|MUSIC|NOTE)/i)) {
|
|
id = 3;
|
|
} else if (str.match(/(?:HEART|LOVE)/i)) {
|
|
id = 4;
|
|
} else if (str.match(/(?:ANGER)/i)) {
|
|
id = 5;
|
|
} else if (str.match(/(?:SWEAT)/i)) {
|
|
id = 6;
|
|
} else if (str.match(/(?:COBWEB)/i)) {
|
|
id = 7;
|
|
} else if (str.match(/(?:SILENCE|\.\.\.)/i)) {
|
|
id = 8;
|
|
} else if (str.match(/(?:LIGHT BULB|LIGHT|BULB)/i)) {
|
|
id = 9;
|
|
} else if (str.match(/(?:ZZZ|ZZ|Z)/i)) {
|
|
id = 10;
|
|
} else if (str.match(/(?:USER|USER-DEFINED|USER DEFINED)[ ](\d+)/i)) {
|
|
id = 10 + parseInt(RegExp.$1);
|
|
}
|
|
this.requestBalloon(id);
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteSelfSwitch = function(str, setting) {
|
|
if (this === $gamePlayer) return;
|
|
if (Imported.YEP_SelfSwVar && str.match(/(\d+)/i)) {
|
|
var keyName = 'SELF SWITCH ' + parseInt(RegExp.$1);
|
|
} else {
|
|
var keyName = str.toUpperCase();
|
|
}
|
|
var key = [$gameMap.mapId(), this.eventId(), keyName];
|
|
if (setting.toUpperCase() === 'ON') {
|
|
$gameSelfSwitches.setValue(key, true);
|
|
} else if (setting.toUpperCase() === 'OFF') {
|
|
$gameSelfSwitches.setValue(key, false);
|
|
} else if (setting.toUpperCase() === 'TOGGLE') {
|
|
$gameSelfSwitches.setValue(key, !$gameSelfSwitches.value(key));
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.processMoveRouteSelfVariable = function(str, code) {
|
|
if (!Imported.YEP_SelfSwVar) return;
|
|
if (this === $gamePlayer) return;
|
|
if (str.match(/(\d+)/i)) {
|
|
var keyName = 'SELF VARIABLE ' + parseInt(RegExp.$1);
|
|
} else {
|
|
var keyName = str.toUpperCase();
|
|
}
|
|
var key = [$gameMap.mapId(), this.eventId(), keyName];
|
|
try {
|
|
var value = eval(code);
|
|
} catch (e) {
|
|
var value = 0;
|
|
Yanfly.Util.displayError(e, code, 'MOVE ROUTE SELF VARIABLE SCRIPT ERROR');
|
|
}
|
|
$gameSelfSwitches.setValue(key, value);
|
|
};
|
|
|
|
// Simplified Functions
|
|
|
|
Game_Character.prototype.jumpForward = function(distance) {
|
|
distance = Math.round(distance);
|
|
var direction = this.direction();
|
|
var dx = 0;
|
|
var dy = 0;
|
|
switch (direction) {
|
|
case 1:
|
|
dx = -distance;
|
|
dy = distance;
|
|
break;
|
|
case 2:
|
|
dy = distance;
|
|
break;
|
|
case 3:
|
|
dx = distance;
|
|
dy = distance;
|
|
break;
|
|
case 4:
|
|
dx = -distance;
|
|
break;
|
|
case 6:
|
|
dx = distance;
|
|
break;
|
|
case 7:
|
|
dx = -distance;
|
|
dy = -distance;
|
|
break;
|
|
case 8:
|
|
dy = -distance;
|
|
break;
|
|
case 9:
|
|
dx = distance;
|
|
dy = -distance;
|
|
break;
|
|
}
|
|
this.jump(dx, dy);
|
|
};
|
|
|
|
Game_Character.prototype.jumpToPoint = function(x, y) {
|
|
x = Math.round(x);
|
|
y = Math.round(y);
|
|
dx = (this.x - x) * -1;
|
|
dy = (this.y - y) * -1;
|
|
this.jump(dx, dy);
|
|
};
|
|
|
|
Game_Character.prototype.jumpToEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.jumpToPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.jumpToPoint(x, y);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.moveRepeat = function(direction, times) {
|
|
times = times || 0;
|
|
times = Math.round(times);
|
|
var command = {
|
|
code: 1,
|
|
indent: null,
|
|
parameters: []
|
|
}
|
|
var gc = Game_Character;
|
|
switch (direction) {
|
|
case 1:
|
|
command.code = gc.ROUTE_MOVE_LOWER_L;
|
|
break;
|
|
case 2:
|
|
command.code = gc.ROUTE_MOVE_DOWN;
|
|
break;
|
|
case 3:
|
|
command.code = gc.ROUTE_MOVE_LOWER_R;
|
|
break;
|
|
case 4:
|
|
command.code = gc.ROUTE_MOVE_LEFT;
|
|
break;
|
|
case 5:
|
|
return;
|
|
break;
|
|
case 6:
|
|
command.code = gc.ROUTE_MOVE_RIGHT;
|
|
break;
|
|
case 7:
|
|
command.code = gc.ROUTE_MOVE_UPPER_L;
|
|
break;
|
|
case 8:
|
|
command.code = gc.ROUTE_MOVE_UP;
|
|
break;
|
|
case 9:
|
|
command.code = gc.ROUTE_MOVE_UPPER_R;
|
|
break;
|
|
}
|
|
var index = this._moveRoute.list.indexOf($gameTemp._moveCommand);
|
|
this._moveRoute = JsonEx.makeDeepCopy(this._moveRoute);
|
|
this._moveRoute.list[index].parameters[0] = '';
|
|
while (times--) {
|
|
this._moveRoute.list.splice(this._moveRouteIndex + 1, 0, command);
|
|
}
|
|
};
|
|
|
|
Game_CharacterBase.prototype.moveToPoint = function(x, y, collision) {
|
|
collision = collision || false;
|
|
x = Math.round(x);
|
|
y = Math.round(y);
|
|
if (collision) $gameTemp._moveAllowPlayerCollision = true;
|
|
var direction = this.findDirectionTo(x, y);
|
|
if (collision) $gameTemp._moveAllowPlayerCollision = false;
|
|
if (direction > 0) this.moveStraight(direction);
|
|
if (this.x !== x || this.y !== y) this._moveRouteIndex -= 1;
|
|
this.setMovementSuccess(true);
|
|
};
|
|
|
|
Game_CharacterBase.prototype.moveTowardPoint = function(x, y, collision) {
|
|
this.moveToPoint(x, y, collision);
|
|
};
|
|
|
|
Game_Character.prototype.moveToEvent = function(eventId, collision) {
|
|
collision = collision || false;
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.moveToPoint(x, y, collision);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.moveToPoint(x, y, collision);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.patternLock = function(index) {
|
|
index = Math.round(index);
|
|
this._patternMoveRouteLocked = true;
|
|
this.setPattern(index);
|
|
};
|
|
|
|
Game_Character.prototype.patternUnlock = function() {
|
|
this._patternMoveRouteLocked = false;
|
|
};
|
|
|
|
Game_Character.prototype.stepAwayFromPoint = function(x, y) {
|
|
var sx = this.deltaXFrom(Math.round(x));
|
|
var sy = this.deltaYFrom(Math.round(y));
|
|
if (Math.abs(sx) > Math.abs(sy)) {
|
|
this.moveStraight(sx > 0 ? 6 : 4);
|
|
if (!this.isMovementSucceeded() && sy !== 0) {
|
|
this.moveStraight(sy > 0 ? 2 : 8);
|
|
}
|
|
} else if (sy !== 0) {
|
|
this.moveStraight(sy > 0 ? 2 : 8);
|
|
if (!this.isMovementSucceeded() && sx !== 0) {
|
|
this.moveStraight(sx > 0 ? 6 : 4);
|
|
}
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.stepAwayFromEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.stepAwayFromPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.stepAwayFromPoint(x, y);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.stepTowardPoint = function(x, y) {
|
|
var sx = this.deltaXFrom(Math.round(x));
|
|
var sy = this.deltaYFrom(Math.round(y));
|
|
if (Math.abs(sx) > Math.abs(sy)) {
|
|
this.moveStraight(sx > 0 ? 4 : 6);
|
|
if (!this.isMovementSucceeded() && sy !== 0) {
|
|
this.moveStraight(sy > 0 ? 8 : 2);
|
|
}
|
|
} else if (sy !== 0) {
|
|
this.moveStraight(sy > 0 ? 8 : 2);
|
|
if (!this.isMovementSucceeded() && sx !== 0) {
|
|
this.moveStraight(sx > 0 ? 4 : 6);
|
|
}
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.stepTowardEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.stepTowardPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.stepTowardPoint(x, y);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.teleportToPoint = function(x, y) {
|
|
x = Math.round(x);
|
|
y = Math.round(y);
|
|
this.locate(x, y);
|
|
};
|
|
|
|
Game_Character.prototype.teleportToEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.teleportToPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.teleportToPoint(x, y);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.turnAwayFromPoint = function(x, y) {
|
|
x = Math.round(x);
|
|
y = Math.round(y);
|
|
var sx = this.deltaXFrom(x);
|
|
var sy = this.deltaYFrom(y);
|
|
if (Math.abs(sx) > Math.abs(sy)) {
|
|
this.setDirection(sx > 0 ? 6 : 4);
|
|
} else if (sy !== 0) {
|
|
this.setDirection(sy > 0 ? 2 : 8);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.turnAwayFromEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.turnAwayFromPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.turnAwayFromPoint(x, y);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.turnTowardPoint = function(x, y) {
|
|
x = Math.round(x);
|
|
y = Math.round(y);
|
|
var sx = this.deltaXFrom(x);
|
|
var sy = this.deltaYFrom(y);
|
|
if (Math.abs(sx) > Math.abs(sy)) {
|
|
this.setDirection(sx > 0 ? 4 : 6);
|
|
} else if (sy !== 0) {
|
|
this.setDirection(sy > 0 ? 8 : 2);
|
|
}
|
|
};
|
|
|
|
Game_Character.prototype.turnTowardEvent = function(eventId) {
|
|
if (eventId === 0) {
|
|
var x = $gamePlayer.x;
|
|
var y = $gamePlayer.y;
|
|
this.turnTowardPoint(x, y);
|
|
} else {
|
|
var ev = $gameMap.event(eventId);
|
|
if (!ev) return;
|
|
var x = ev.x;
|
|
var y = ev.y;
|
|
this.turnTowardPoint(x, y);
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Game_CharacterBase
|
|
//=============================================================================
|
|
|
|
Yanfly.MoveRoute.Game_CharacterBase_isNearTheScreen =
|
|
Game_CharacterBase.prototype.isNearTheScreen;
|
|
Game_CharacterBase.prototype.isNearTheScreen = function() {
|
|
if (this._isAlwaysUpdateMovement) return true;
|
|
return Yanfly.MoveRoute.Game_CharacterBase_isNearTheScreen.call(this);
|
|
};
|
|
|
|
Yanfly.MoveRoute.Game_CharacterBase_updatePattern =
|
|
Game_CharacterBase.prototype.updatePattern;
|
|
Game_CharacterBase.prototype.updatePattern = function() {
|
|
if (this._patternMoveRouteLocked) return;
|
|
Yanfly.MoveRoute.Game_CharacterBase_updatePattern.call(this);
|
|
};
|
|
|
|
Yanfly.MoveRoute.Game_CharacterBase_requestAnimation =
|
|
Game_CharacterBase.prototype.requestAnimation;
|
|
Game_CharacterBase.prototype.requestAnimation = function(animationId) {
|
|
animationId = Math.round(animationId);
|
|
Yanfly.MoveRoute.Game_CharacterBase_requestAnimation.call(this, animationId);
|
|
};
|
|
|
|
//=============================================================================
|
|
// Game_Event
|
|
//=============================================================================
|
|
|
|
Yanfly.MoveRoute.Game_Event_updateSelfMovement =
|
|
Game_Event.prototype.updateSelfMovement;
|
|
Game_Event.prototype.updateSelfMovement = function() {
|
|
if (this._isAlwaysUpdateMovement === undefined) this.checkUpdateSelfMove();
|
|
Yanfly.MoveRoute.Game_Event_updateSelfMovement.call(this);
|
|
};
|
|
|
|
Game_Event.prototype.checkUpdateSelfMove = function() {
|
|
var note = this.event().note;
|
|
this._isAlwaysUpdateMovement = note.match(/<ALWAYS UPDATE MOVEMENT>/i);
|
|
};
|
|
|
|
Yanfly.MoveRoute.Game_Event_isPlayerCollided =
|
|
Game_Event.prototype.isCollidedWithPlayerCharacters;
|
|
Game_Event.prototype.isCollidedWithPlayerCharacters = function(x, y) {
|
|
if ($gameTemp._moveAllowPlayerCollision) return false;
|
|
return Yanfly.MoveRoute.Game_Event_isPlayerCollided.call(this, x, y);
|
|
};
|
|
|
|
//=============================================================================
|
|
// Utilities
|
|
//=============================================================================
|
|
|
|
Yanfly.Util = Yanfly.Util || {};
|
|
|
|
Yanfly.Util.displayError = function(e, code, message) {
|
|
console.log(message);
|
|
console.log(code || 'NON-EXISTENT');
|
|
console.error(e);
|
|
if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.6.0") return;
|
|
if (Utils.isNwjs() && Utils.isOptionValid('test')) {
|
|
if (!require('nw.gui').Window.get().isDevToolsOpen()) {
|
|
require('nw.gui').Window.get().showDevTools();
|
|
}
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// End of File
|
|
//=============================================================================
|