271 lines
No EOL
9.2 KiB
JavaScript
271 lines
No EOL
9.2 KiB
JavaScript
//-----------------------------------------------------------------------------
|
|
// Galv's Move Route Extras
|
|
//-----------------------------------------------------------------------------
|
|
// For: RPGMAKER MV
|
|
// GALV_MoveRouteExtras.js
|
|
//-----------------------------------------------------------------------------
|
|
// 2015-11-05 - Version 1.1 - added ability to change graphic to a frame
|
|
// 2015-10-23 - Version 1.0 - release
|
|
//-----------------------------------------------------------------------------
|
|
// Terms can be found at:
|
|
// galvs-scripts.com
|
|
//-----------------------------------------------------------------------------
|
|
|
|
var Imported = Imported || {};
|
|
Imported.Galv_MoveRouteExtras = true;
|
|
|
|
var Galv = Galv || {}; // Galv's main object
|
|
Galv.MRE = Galv.MRE || {}; // Galv's Move Route Extra's stuff
|
|
|
|
//-----------------------------------------------------------------------------
|
|
/*:
|
|
* @plugindesc Additional SCRIPT commands to use within MOVE ROUTES
|
|
* View the plugin "Help" to view available commands.
|
|
* @author Galv - galvs-scripts.com
|
|
|
|
* @help
|
|
* Galv's Move Route Extras
|
|
* ----------------------------------------------------------------------------
|
|
* This script enables users to use commands in the 'script' function of
|
|
* MOVE ROUTES. The available commands are listed below.
|
|
*
|
|
* ----------------------------------------------------------------------------
|
|
* SCRIPT calls for MOVE ROUTES
|
|
* ----------------------------------------------------------------------------
|
|
* this.jump_forward(x); // Jump forward x tiles
|
|
* this.jump_to(x,y); // Jump to x,y co-ordinates on the map
|
|
* this.jump_to(i); // Jump to character's x,y location
|
|
* // i = event id. Make it 0 for player
|
|
* this.step_toward(x,y); // Step toward x,y co-ordinates on the map
|
|
* this.step_toward(i); // Step toward a character's x,y location
|
|
* // i = event id. 0 works for player, too
|
|
* this.step_away(x,y); // Step away from x,y co-ordinates on the map
|
|
* this.step_away(i); // Step away from a character's x,y location
|
|
* // i = event id. 0 works for player, too
|
|
* this.turn_toward(x,y); // Face toward x,y co-ordinates on the map
|
|
* this.turn_toward(i); // Face toward a character's x,y location
|
|
* // i = event id. 0 works for player, too
|
|
* this.turn_away(x,y); // Turn away from x,y map co-ordinates
|
|
* this.turn_away(i); // Turn away from a character's x,y location
|
|
* // i = event id. 0 works for player, too
|
|
* this.sswitch("n",status); // Change self switch "n" to status true/false
|
|
* this.rwait(low,high); // wait a random time between low and high
|
|
*
|
|
* this.fade(s); // s is the fade speed.
|
|
* // Positive fades in, Negative fades out.
|
|
* this.step_rand(id,id,id); // Move randomly only on specified region id's
|
|
* // Multiple id's can be used, comma separated
|
|
* this.repeat_begin(n); // Repeat the next move commands between this..
|
|
* this.repeat_end(); // and repeat_end n number of times
|
|
*
|
|
* this.set_frame("name",index,pattern,direction) // set graphic to a frame
|
|
*
|
|
* // "name" - is the characterset file name
|
|
* // index - the number of the character in the characterset (1-8)
|
|
* // pattern - the stepping frame (1-3)
|
|
* // direction - the direction the event is facing (2,4,6,8)
|
|
* // Once a character has been set to a frame, it wont change when moving
|
|
* // until you restore the character using the below move route script:
|
|
*
|
|
* this.restore_frame() // unlocks the frame chosen in set_frame
|
|
*
|
|
*
|
|
* // Below are a couple of useful codes that work without this script
|
|
* this.requestBalloon(n); // Displays the balloon that has id of n
|
|
* this.requestAnimation(n); // Displays animation that has id of n
|
|
*
|
|
* ----------------------------------------------------------------------------
|
|
* EXAMPLES OF USE
|
|
* ----------------------------------------------------------------------------
|
|
* this.jump_forward(3); // Jumps 3 tiles the direction character faces
|
|
* this.jump_to(5); // Jump to event 5's position
|
|
* this.jump_to(10,16); // Jump to x10, y15
|
|
* this.step_toward(3); // Takes a step toward event 3's position
|
|
* this.step_away(12,8); // Takes a step away from x12, y8 co-ordinates
|
|
* this.sswitch("A",true); // Turns self switch "A" ON for event
|
|
* this.sswitch("B",false); // Turns self switch "B" OFF for event
|
|
* this.rwait(60,120); // Waits randomly between 60 and 120 frames
|
|
* this.fade(-10); // Fades out character
|
|
* this.step_rand(1,4,7); // Take a step randomly, only on regions 1,4,7
|
|
* this.requestAnimation(2); // Shows animation 2 on character
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// CODE STUFFS
|
|
//-----------------------------------------------------------------------------
|
|
|
|
(function() {
|
|
Game_Character.prototype.repeat_times = 0;
|
|
Game_Character.prototype.repeat_start_index = 0;
|
|
|
|
|
|
// REPEATING COMMANDS
|
|
Game_Character.prototype.repeat_begin = function(times) {
|
|
this.repeats = times - 1;
|
|
this.repeat_start_index = this._moveRouteIndex;
|
|
};
|
|
|
|
Game_Character.prototype.repeat_end = function() {
|
|
if (this.repeats > 0) {
|
|
this._moveRouteIndex = this.repeat_start_index;
|
|
this.repeats -= 1;
|
|
};
|
|
};
|
|
|
|
// FADING
|
|
Game_Character.prototype.fade = function(speed) {
|
|
// Change opacity
|
|
this.setOpacity(this.opacity() + speed);
|
|
// Repeat until finished
|
|
if (speed > 0 && this.opacity() < 255) {
|
|
this._moveRouteIndex -= 1;
|
|
} else if (speed < 0 && this.opacity() > 0) {
|
|
this._moveRouteIndex -= 1;
|
|
};
|
|
};
|
|
|
|
// JUMP FORWARD
|
|
Game_Character.prototype.jump_forward = function(count) {
|
|
var sx = 0, sy = 0;
|
|
|
|
switch (this.direction()) {
|
|
case 2:
|
|
sy = count;
|
|
break;
|
|
case 4:
|
|
sx = -count;
|
|
break;
|
|
case 6:
|
|
sx = count;
|
|
break;
|
|
case 8:
|
|
sy = -count;
|
|
break;
|
|
};
|
|
this.jump(sx,sy);
|
|
};
|
|
|
|
// JUMP TO
|
|
Game_Character.prototype.jump_to = function() {
|
|
var sx = 0, sy = 0;
|
|
|
|
if (arguments.length > 1) {
|
|
// x,y coords
|
|
sx = this.x - arguments[0];
|
|
sy = this.y - arguments[1];
|
|
} else if (arguments.length === 1) {
|
|
// Character ID
|
|
if (arguments[0] === 0) {
|
|
// Is player
|
|
sx = this.x - $gamePlayer.x;
|
|
sy = this.y - $gamePlayer.y;
|
|
} else {
|
|
// Is event
|
|
sx = this.x - $gameMap._events[arguments[0]].x;
|
|
sy = this.y - $gameMap._events[arguments[0]].y;
|
|
};
|
|
};
|
|
this.jump(-sx,-sy);
|
|
};
|
|
|
|
// STEP TOWARD
|
|
Game_Character.prototype.step_toward = function() {
|
|
var char = Galv.MRE.getMrChar(arguments);
|
|
if (char) this.moveTowardCharacter(char);
|
|
};
|
|
|
|
// STEP AWAY
|
|
Game_Character.prototype.step_away = function() {
|
|
var char = Galv.MRE.getMrChar(arguments);
|
|
if (char) this.moveAwayFromCharacter(char);
|
|
};
|
|
|
|
// TURN TOWARD
|
|
Game_Character.prototype.turn_toward = function() {
|
|
var char = Galv.MRE.getMrChar(arguments);
|
|
if (char) this.turnTowardCharacter(char);
|
|
};
|
|
|
|
Game_Character.prototype.turn_away = function() {
|
|
var char = Galv.MRE.getMrChar(arguments);
|
|
if (char) this.turnAwayFromCharacter(char);
|
|
};
|
|
|
|
|
|
// GET MR CHARACTER
|
|
Galv.MRE.getMrChar = function(arguments) {
|
|
var char = null;
|
|
if (arguments.length > 1) {
|
|
// Move toward x,y
|
|
char = { x : arguments[0], y : arguments[1] };
|
|
} else if (arguments.length === 1) {
|
|
if (arguments[0] === 0) {
|
|
// Is player
|
|
char = $gamePlayer;
|
|
} else {
|
|
// Is event
|
|
char = $gameMap._events[arguments[0]];
|
|
};
|
|
};
|
|
return char;
|
|
};
|
|
|
|
|
|
|
|
// SELF SWITCHES
|
|
Game_Character.prototype.sswitch = function(letter,status,eid,mapid) {
|
|
var key = [mapid || $gameMap.mapId(), eid || this.eventId(), letter];
|
|
$gameSelfSwitches.setValue(key, status);
|
|
};
|
|
|
|
// RANDOM WAIT
|
|
Game_Character.prototype.rwait = function(low,high) {
|
|
this._waitCount = Math.randomInt(high - low) + low;
|
|
};
|
|
|
|
// MOVE RANDOM ON REGION
|
|
Game_Character.prototype.step_rand = function() {
|
|
var d = 2 + Math.randomInt(4) * 2;
|
|
|
|
// If region is not there, return false.
|
|
var x2 = $gameMap.roundXWithDirection(this.x, d);
|
|
var y2 = $gameMap.roundYWithDirection(this.y, d);
|
|
var region_test = false;
|
|
|
|
for (var i = 0; i < arguments.length; i++) {
|
|
if (arguments[i] === $gameMap.regionId(x2, y2)) {
|
|
region_test = true;
|
|
break;
|
|
};
|
|
};
|
|
|
|
if (!region_test) return false;
|
|
if (!$gameMap.isValid(x2, y2)) return false;
|
|
if (this.canPass(this.x, this.y, d)) {
|
|
this.moveStraight(d);
|
|
};
|
|
};
|
|
|
|
// SET TO CHARACTER FRAME
|
|
Game_Character.prototype.set_frame = function(name,index,pattern,direction) {
|
|
this.gstop = true;
|
|
this._direction = direction;
|
|
this._pattern = pattern - 1;
|
|
this._characterName = name !== "" ? name : this._characterName;
|
|
this._characterIndex = index - 1;
|
|
};
|
|
|
|
// RESTORE CHAR ANIMATION
|
|
Game_Character.prototype.restore_frame = function() {
|
|
this.gstop = false;
|
|
};
|
|
|
|
// MOD
|
|
var Galv_Game_CharacterBase_updatePattern = Game_CharacterBase.prototype.updatePattern;
|
|
Game_CharacterBase.prototype.updatePattern = function() {
|
|
if (this.gstop) return;
|
|
Galv_Game_CharacterBase_updatePattern.call(this);
|
|
};
|
|
|
|
})(); |