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

250 lines
No EOL
9.2 KiB
JavaScript

/*=============================================================================
* Archeia - Message Codes
* By Liquidize - htp://anima.mintkit.lol
* Archeia_MessageCodes.js
* Version: 1.02
*
* This plugin was created by Liquidize for use by Archeia and their team(s),
* I do not request credit in any form, You are licensed to use this plugin in
* anyway you see fit, for any number of projects,games,websites,etc,etc.
*
*
*=============================================================================*/
/*:
* @plugindesc Plugin Description <Archeia_MessageCodes>
* @author Liquidize
*
* @param Variable Set Code
* @desc The escape code used to set a variable.
* @default Var
*
* @param Variable Add Code
* @desc The escape code used to do the addition operation on a variable.
* @default VarA
*
* @param Variable Sub Code
* @desc The escape code used to do the subtraction operation on a variable.
* @default VarS
*
* @param Variable Mul Code
* @desc The escape code used to do the multiplication operation on a variable.
* @default VarX
*
* @param Variable Div Code
* @desc The escape code used to do the division operation on a variable.
* @default VarD
*
* @param Variable Mod Code
* @desc The escape code used do modulo on a variable.
* @default VarM
*
* @param Common Event Code
* @desc The escape code used to call a common event.
* @default Com
*
*
* @help
* This plugin provides two additional escape codes for use in messages. The
* first being an escape code to set the value of a variable, the second being
* an escape code to call a common event.
*
* ---------------------------------------------------------------------------
*
* To use the escape code to set a variable follow the below format:
*
* \ESCAPECODEHERE[VARIABLEID,VALUE]
*
* E.G: \V[10,10]
*
* The above example will set the variable with ID 10, to be the value of 10.
* The V is used as the escape code, as thats what the default value is. You can
* change this value by editing the Variable Code parameter.
*
*
*
* ---------------------------------------------------------------------------
*
* To use the escape code to call a common event, use the following:
*
* \ESCAPECODEHERE[COMMONEVENTID]
*
* E.G: \C[1]
*
* The above example will call the common event with ID of 1. The escape code
* used is C because that is the value of the default escape code, you can
* change it in the parameters.
*
* ============================================================================
* Change Log
* ============================================================================
*
* Version 1.02:
* - Refactored Code
* - Added the ability to call events while in battle.
* - Added the other operations when setting variables (albeit buggy).
*
* Version 1.01a:
* - Another potential fix for things.
*
* Version 1.01:
* - Fixed an issue causing incompatibility with YEP_MessageCore.
* - Potential fix for instant common event execution.
*
* Version 1.0:
* - Finished Script!
*
*=============================================================================*/
var Imported = Imported || {};
var Archeia = Archeia || {};
Archeia.MessageCodes = Archeia.MessageCodes || {};
Archeia.Utils = Archeia.Utils || {};
(function ($) {
"use strict";
var parameters = $plugins.filter(function (plugin) {
return plugin.description.contains('<Archeia_MessageCodes>');
});
if (parameters.length === 0) {
throw new Error("Couldn't find the parameters of Archeia_MessageCodes.");
}
$.Parameters = parameters[0].parameters;
$.Param = {};
$.Param.variableSetCode = String($.Parameters['Variable Set Code']);
$.Param.variableAddCode = String($.Parameters['Variable Add Code']);
$.Param.variableSubCode = String($.Parameters['Variable Sub Code']);
$.Param.variableMulCode = String($.Parameters['Variable Mul Code']);
$.Param.variableDivCode = String($.Parameters['Variable Div Code']);
$.Param.variableModCode = String($.Parameters['Variable Mod Code']);
$.Param.commonEventCode = String($.Parameters['Common Event Code']);
//================================================================================
// Window_Base
//================================================================================
Window_Base.prototype.obtainEscapeParamsArray = function (textState) {
var arr = /^\[(\d+,\d+)]/.exec(textState.text.slice(textState.index));
if (arr) {
textState.index += arr[0].length;
return arr[1].split(',');
} else {
return '';
}
};
var Window_Message_processEscapeCharacter = Window_Message.prototype.processEscapeCharacter;
Window_Message.prototype.processEscapeCharacter = function (code, textState) {
if (code === $.Param.commonEventCode.toUpperCase()) {
if ($gameParty && $gameParty.inBattle()) {
$gameTroop.setupCommonEvent(parseInt(this.obtainEscapeParam(textState)));
} else {
$gameMap.setupCommonEvent(parseInt(this.obtainEscapeParam(textState)));
}
} else if (code === $.Param.variableSetCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),0);
} else if (code === $.Param.variableAddCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),1);
} else if (code === $.Param.variableSubCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),2);
} else if (code === $.Param.variableMulCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),3);
} else if (code === $.Param.variableDivCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),4);
} else if (code === $.Param.variableModCode.toUpperCase()) {
this.changeVariable(this.obtainEscapeParamsArray(textState),5);
} else {
Window_Message_processEscapeCharacter.call(this, code, textState);
}
};
Window_Message.prototype.changeVariable = function (data,operation) {
if (data) {
var varId = parseInt(data[0]);
try {
var oldVal = $gameVariables.value(varId);
var val = parseInt(data[1]);
switch (operation) {
case 0:
$gameVariables.setValue(varId,oldVal = val);
break;
case 1:
$gameVariables.setValue(varId,oldVal + val);
break;
case 2:
$gameVariables.setValue(varId,oldVal - val);
break;
case 3:
$gameVariables.setValue(varId,oldVal * val);
break;
case 4:
$gameVariables.setValue(varId,oldVal / val);
break;
case 5:
$gameVariables.setValue(varId,oldVal % val);
break;
}
} catch (e) {
$gameVariables.setValue(varId,0);
}
}
};
//================================================================================
// Game_Map
//================================================================================
Game_Map.prototype.setupCommonEvent = function (commonId) {
var commonEvent = $dataCommonEvents[commonId];
if (commonEvent) {
var eventId = this._interpreter.isOnCurrentMap() ? this._interpreter._eventId : 0;
this._interpreter.setupChild(commonEvent.list, eventId);
}
};
Game_Map.prototype.stopCurrentEvent = function () {
if (this.isEventRunning()) {
this._interpreter.terminate();
}
};
//================================================================================
// Game_Troop
//================================================================================
Game_Troop.prototype.setupCommonEvent = function(commonId) {
var commonEvent = $dataCommonEvents[commonId];
if (commonEvent) {
var eventId = this._interpreter.isOnCurrentMap() ? this._interpreter._eventId : 0;
this._interpreter.setupChild(commonEvent.list, eventId);
}
};
//================================================================================
// UTILS
//================================================================================
// The below is a string formatting function that gives me/js/people/anyone/stuff
// the ability to use C#/C styled string formatting using {0},{1} for parameters.
Archeia.Utils.sformat = function () {
var theString = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var regEx = new RegExp("\\{" + (i - 1) + "\\}", "gm");
theString = theString.replace(regEx, arguments[i]);
}
return theString;
};
})(Archeia.MessageCodes);
ArcheiaMessageCodes = Archeia.MessageCodes;
Imported["Archeia_MessageCodes"] = 1.02;