OMORI_Android/www.eng/js/plugins/YEP_StopMapMovement.js
2024-01-15 18:44:53 +03:00

187 lines
6.5 KiB
JavaScript

//=============================================================================
// Yanfly Engine Plugins - Stop Map Movement
// YEP_StopMapMovement.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_StopMapMovement = true;
var Yanfly = Yanfly || {};
Yanfly.Stop = Yanfly.Stop || {};
Yanfly.Stop.version = 1.02
//=============================================================================
/*:
* @plugindesc v1.02 A utility plugin to stop events from automatically
* moving by themselves all across your map.
* @author Yanfly Engine Plugins
*
* @param Stop During Events
* @type boolean
* @on YES
* @off NO
* @desc Stop automatic movement during events?
* NO - false YES - true
* @default true
*
* @param Stop During Message
* @type boolean
* @on YES
* @off NO
* @desc Stop automatic movement during message displaying?
* NO - false YES - true
* @default true
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* A feature that was removed from RPG Maker 2000 and RPG Maker 2003 was the
* Stop Event Movement event. This event prevented events from automatically
* moving by themselves, so they don't intrude on cutscenes, catch up to the
* player during messages, etc.
*
* This plugin recreates that feature in the form of a plugin command for you
* to use with RPG Maker MV!
*
* ============================================================================
* Plugin Commands
* ============================================================================
*
* You can use the following plugin commands to produce the following effects:
*
* Plugin Command
*
* StopEventMovement
* Stops events from automatically moving by themselves. You can still move
* events through movement routes set by your active event.
*
* AllowEventMovement
* Allows events to move automatically by themselves again. If you have any
* of the plugin parameters disabling events from moving during either events
* or messages, this will not bypass it.
*
* StopPlayerMovement
* Stops player from being able to move via input. You can still move the
* player through movement routes set by your active event.
*
* AllowPlayerMovement
* Allows player to move again via input.
*
* ============================================================================
* Changelog
* ============================================================================
*
* Version 1.02:
* - Updated for RPG Maker MV version 1.5.0.
*
* Version 1.01:
* - Optimized updating performance to reduce lag on maps with many events.
*
* Version 1.00:
* - Finished Plugin!
*/
//=============================================================================
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('YEP_StopMapMovement');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.StopEvent = eval(String(Yanfly.Parameters['Stop During Events']));
Yanfly.Param.StopMsg = eval(String(Yanfly.Parameters['Stop During Message']));
//=============================================================================
// Game_Temp
//=============================================================================
Game_Temp.prototype.stopMapEventMovement = function() {
this._stopMapEvents = true;
};
Game_Temp.prototype.stopMapPlayerMovement = function() {
this._stopMapPlayer = true;
};
Game_Temp.prototype.allowMapEventMovement = function() {
this._stopMapEvents = false;
};
Game_Temp.prototype.allowMapPlayerMovement = function() {
this._stopMapPlayer = false;
};
Game_Temp.prototype.isStopMapEventMovement = function() {
return this._stopMapEvents;
};
Game_Temp.prototype.isStopMapPlayerMovement = function() {
return this._stopMapPlayer;
};
//=============================================================================
// Game_Player
//=============================================================================
Yanfly.Stop.Game_Player_canMove = Game_Player.prototype.canMove;
Game_Player.prototype.canMove = function() {
if ($gameTemp.isStopMapPlayerMovement()) return false;
return Yanfly.Stop.Game_Player_canMove.call(this);
};
//=============================================================================
// Game_Event
//=============================================================================
Yanfly.Stop.Game_Event_updateSelfMovement =
Game_Event.prototype.updateSelfMovement;
Game_Event.prototype.updateSelfMovement = function() {
if (this.preventSelfMovement()) return;
Yanfly.Stop.Game_Event_updateSelfMovement.call(this);
};
Game_Event.prototype.preventSelfMovement = function() {
if (this._moveType === 0) return true;
if ($gameTemp.isStopMapEventMovement()) return true;
if (Yanfly.Param.StopMsg && $gameMessage.isBusy()) return true;
if (Yanfly.Param.StopEvent && $gameMap.isEventRunQuick()) return true;
return false;
};
//=============================================================================
// Game_Map
//=============================================================================
Game_Map.prototype.isEventRunQuick = function() {
return this._interpreter.isRunning() || this.isAnyEventStartingQuick();
};
Game_Map.prototype.isAnyEventStartingQuick = function() {
var max = this._events.length;
for (var i = 0; i < max; ++i) {
var ev = this._events[i];
if (ev && ev.isStarting()) return true;
}
return false;
};
//=============================================================================
// Game_Interpreter
//=============================================================================
Yanfly.Stop.Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Yanfly.Stop.Game_Interpreter_pluginCommand.call(this, command, args)
if (command === 'StopEventMovement') $gameTemp.stopMapEventMovement();
if (command === 'AllowEventMovement') $gameTemp.allowMapEventMovement();
if (command === 'StopPlayerMovement') $gameTemp.stopMapPlayerMovement();
if (command === 'AllowPlayerMovement') $gameTemp.allowMapPlayerMovement();
};
//=============================================================================
// End of File
//=============================================================================