ultimate-angel-zerachiel/www/js/plugins/YEP_JobPoints.js
2024-01-17 11:38:37 -06:00

815 lines
27 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// Yanfly Engine Plugins - Job Points
// YEP_JobPoints.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_JobPoints = true;
var Yanfly = Yanfly || {};
Yanfly.JP = Yanfly.JP || {};
Yanfly.JP.version = 1.1;
//=============================================================================
/*:
* @plugindesc v1.10 This plugin by itself doesn't do much, but it enables
* actors to acquire JP (job points) used for other plugins.
* @author Yanfly Engine Plugins
*
* @param ---General---
* @default
*
* @param JP Text
* @parent ---General---
* @desc This changes how you want JP to appear in the game.
* @default JP
*
* @param JP Icon
* @parent ---General---
* @type number
* @min 0
* @desc This is the icon used for JP.
* Use 0 if you wish to use no icon.
* @default 188
*
* @param Max JP
* @parent ---General---
* @type number
* @min 0
* @desc This is the maximum JP an actor can have per class.
* Use 0 if you wish to have no limit.
* @default 0
*
* @param JP Per Action
* @parent ---General---
* @desc This is the amount of JP an actor gains for his/her
* current class whenever he/she performs an action.
* @default 10 + Math.randomInt(10)
*
* @param JP Per Level
* @parent ---General---
* @desc This is the amount of JP an actor gains per level up.
* @default 100 + Math.randomInt(100)
*
* @param JP Per Enemy
* @parent ---General---
* @desc This is the amount of JP given per defeated enemy.
* @default 50 + Math.randomInt(10)
*
* @param Show Results
* @parent ---General---
* @type boolean
* @on Show
* @off Hide
* @desc Upon winning, show how much JP is earned for default?
* NO - false YES - true
* @default true
*
* @param JP Gained in Battle
* @parent ---General---
* @desc Adjusts how the gained JP text is shown after battle.
* %1 - Actor %2 Value %3 JP
* @default %1 gains %2%3!
*
* @param Alive Actors
* @parent ---General---
* @type boolean
* @on Alive Requirement
* @off No Requirement
* @desc Actors must be alive to receive JP earned from enemies.
* NO - false YES - true
* @default true
*
* @param ---Menu---
* @default
*
* @param Show In Menu
* @parent ---Menu---
* @type boolean
* @on Show
* @off Hide
* @desc Display JP in the main menu?
* NO - false YES - true
* @default true
*
* @param Menu Format
* @parent ---Menu---
* @desc How the JP text format in the menu appears.
* %1 - Value %2 - Amount %3 - Icon
* @default %1\c[4]%2\c[0]%3
*
* @param ---Victory Aftermath---
* @default
*
* @param Enable Aftermath
* @parent ---Victory Aftermath---
* @type boolean
* @on Enable
* @off Disable
* @desc Enables Victory Aftermath windows.
* NO - false YES - true
* @default true
*
* @param Aftermath Text
* @parent ---Victory Aftermath---
* @desc Text used to describe how much JP is earned.
* @default JP Earned
*
* @param Aftermath Format
* @parent ---Victory Aftermath---
* @desc How the JP text format in the aftermath appears.
* %1 - Value %2 - Amount %3 - Icon
* @default +%1\c[4]%2\c[0]%3
*
* @param Aftermath JP Earned
* @parent ---Victory Aftermath---
* @desc Describes how much JP is earned per actor.
* @default JP Earned in Battle
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* This plugin by itself will not change any major game functions, but instead,
* it works in combination with other plugins that make use of this plugin's
* functions should you decide to incorporate Job Points into your game.
*
* When Job Points are earned, they are given to the actor's current class. If
* the actor were to switch classes, then the Job Points will be changed to
* that class's Job Points until reverted back.
*
* ============================================================================
* Victory Aftermath Compatibility
* ============================================================================
*
* If you have the YEP_VictoryAftermath plugin installed and wish to make use
* of the JP windows, position this plugin lower than YEP_VictoryAftermath in
* the Plugin Manager.
*
* After that, if you wish to define the timing of the JP window to appear at
* a certain point instead of the plugin doing it automatically, insert "JP" in
* the "Victory Order" parameter within Victory Aftermath where you want the
* JP window to appear.
*
* ============================================================================
* Notetags
* ============================================================================
*
* Here are some notetags related to Job Points.
*
* Actor Notetags
* <Starting JP: x>
* Sets the actor's starting JP value to be x for the actor's initial class.
*
* <Class x Starting JP: y>
* Sets the actor's starting JP value for class x to be y.
*
* <JP Rate: x%>
* This changes the rate of JP gained by x%. By default, all objects have a
* default rate of 100%. Increasing this to 200% will increase JP gained by
* twice as much while 50% will halve the amount of JP gained.
*
* Skill and Item Notetags
* <JP Gain: x>
* This makes it so that the actor using this skill or item will gain x
* amount of JP instead of the default amount of JP found in the parameters.
*
* <Target JP Gain: x>
* This makes it so that the target actor affected by this skill or item will
* gain x amount of JP.
*
* Class, Weapon, Armor, and State Notetag
* <JP Rate: x%>
* This changes the rate of JP gained by x%. By default, all objects have a
* default rate of 100%. Increasing this to 200% will increase JP gained by
* twice as much while 50% will halve the amount of JP gained.
*
* Enemy Notetag
* <JP: x>
* When the enemy is defeated, the party members present will gain x JP each.
*
* ============================================================================
* Plugin Commands
* ============================================================================
*
* For those wondering how to manually give, remove, or set JP for an actor,
* you can use the following Plugin Commands.
*
* Plugin Commands:
*
* gainJp actorId jp
* gainJp actorId jp classId
* Replace 'actorId' with the ID of the actor you wish to change the JP of.
* Replace 'jp' with the amount of JP you wish to alter. If you are using
* 'classId', replace it with the ID of the actor's class you wish to alter.
* This command will let the actor gain JP.
*
* loseJp actorId jp
* loseJp actorId jp classId
* Replace 'actorId' with the ID of the actor you wish to change the JP of.
* Replace 'jp' with the amount of JP you wish to alter. If you are using
* 'classId', replace it with the ID of the actor's class you wish to alter.
* This command will cause the actor to lose JP.
*
* setJp actorId jp
* setJp actorId jp classId
* Replace 'actorId' with the ID of the actor you wish to change the JP of.
* Replace 'jp' with the amount of JP you wish to alter. If you are using
* 'classId', replace it with the ID of the actor's class you wish to alter.
* This command will set the actor's JP to a particular value.
*
* ============================================================================
* Changelog
* ============================================================================
*
* Version 1.10:
* - 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.09:
* - Updated for RPG Maker MV version 1.5.0.
*
* Version 1.08:
* - Lunatic Mode fail safes added.
*
* Version 1.07:
* - Updated for RPG Maker MV version 1.1.0.
*
* Version 1.06:
* - Added 'Alive Actors' plugin parameter to prevent dead actors from gaining
* JP from enemies. Any JP that currently dead actors earned in battle from
* actions will still be 'earned' at the end of battle.
*
* Version 1.05:
* - Updated compatibility for Subclasses gaining JP.
*
* Version 1.04a:
* - Added failsafes to prevent JP from turning into NaN midbattle.
* - Added failsafes to prevent no-target scopes from crashing the game.
*
* Version 1.03:
* - Added 'Show Results' parameter to show/hide JP earned after battle for
* those who aren't using the Victory Aftermath plugin.
*
* Version 1.02:
* - Fixed a bug that would gain JP for changing classes of a higher level.
*
* Version 1.01:
* - Added failsafes to prevent JP from turning into NaN.
*
* Version 1.00:
* - Finished Plugin!
*/
//=============================================================================
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters("YEP_JobPoints");
Yanfly.Param = Yanfly.Param || {};
Yanfly.Icon = Yanfly.Icon || {};
Yanfly.Param.Jp = String(Yanfly.Parameters["JP Text"]);
Yanfly.Icon.Jp = Number(Yanfly.Parameters["JP Icon"]);
Yanfly.Param.JpMax = Number(Yanfly.Parameters["Max JP"]);
Yanfly.Param.JpPerAction = String(Yanfly.Parameters["JP Per Action"]);
Yanfly.Param.JpPerEnemy = String(Yanfly.Parameters["JP Per Enemy"]);
Yanfly.Param.JpShowResults = eval(String(Yanfly.Parameters["Show Results"]));
Yanfly.Param.JpTextFormat = String(Yanfly.Parameters["JP Gained in Battle"]);
Yanfly.Param.JpAliveActors = eval(String(Yanfly.Parameters["Alive Actors"]));
Yanfly.Param.JpShowMenu = String(Yanfly.Parameters["Show In Menu"]);
Yanfly.Param.JpShowMenu = eval(Yanfly.Param.JpShowMenu);
Yanfly.Param.JpMenuFormat = String(Yanfly.Parameters["Menu Format"]);
Yanfly.Param.JpPerLevel = String(Yanfly.Parameters["JP Per Level"]);
Yanfly.Param.JpEnableAftermath = String(Yanfly.Parameters["Enable Aftermath"]);
Yanfly.Param.JpAftermathText = String(Yanfly.Parameters["Aftermath Text"]);
Yanfly.Param.JpAftermathFmt = String(Yanfly.Parameters["Aftermath Format"]);
Yanfly.Param.JpAftermathEarn = String(Yanfly.Parameters["Aftermath JP Earned"]);
//=============================================================================
// DataManager
//=============================================================================
Yanfly.JP.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
DataManager.isDatabaseLoaded = function () {
if (!Yanfly.JP.DataManager_isDatabaseLoaded.call(this)) return false;
if (!Yanfly._loaded_YEP_JobPoints) {
this.processJPNotetags1($dataActors);
this.processJPNotetags2($dataSkills);
this.processJPNotetags2($dataItems);
this.processJPNotetags3($dataEnemies);
this.processJPNotetags4($dataClasses);
this.processJPNotetags4($dataWeapons);
this.processJPNotetags4($dataArmors);
this.processJPNotetags4($dataStates);
Yanfly._loaded_YEP_JobPoints = true;
}
return true;
};
DataManager.processJPNotetags1 = function (group) {
var note1 = /<(?:STARTING JP):[ ](\d+)>/i;
var note2 = /<(?:CLASS)[ ](\d+)[ ](?:STARTING JP):[ ](\d+)>/i;
var note3 = /<(?:JP RATE):[ ](\d+)([%])>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.startingJp = {};
obj.jpRate = 1.0;
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1)) {
obj.startingJp[obj.classId] = parseInt(RegExp.$1);
} else if (line.match(note2)) {
obj.startingJp[parseInt(RegExp.$1)] = parseInt(RegExp.$2);
} else if (line.match(note3)) {
obj.jpRate = parseFloat(RegExp.$1 * 0.01);
}
}
}
};
DataManager.processJPNotetags2 = function (group) {
var note1 = /<(?:GAIN JP|JP GAIN):[ ](\d+)>/i;
var note2 = /<(?:TARGET GAIN JP|TARGET JP GAIN):[ ](\d+)>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.gainJp = Yanfly.Param.JpPerAction;
obj.targetGainJp = 0;
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1)) {
obj.gainJp = parseInt(RegExp.$1);
} else if (line.match(note2)) {
obj.targetGainJp = parseInt(RegExp.$1);
}
}
}
};
DataManager.processJPNotetags3 = function (group) {
var note1 = /<(?:JP):[ ](\d+)>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.jp = Yanfly.Param.JpPerEnemy;
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1)) {
obj.jp = parseInt(RegExp.$1);
}
}
}
};
DataManager.processJPNotetags4 = function (group) {
var note1 = /<(?:JP RATE):[ ](\d+)([%])>/i;
for (var n = 1; n < group.length; n++) {
var obj = group[n];
var notedata = obj.note.split(/[\r\n]+/);
obj.jpRate = 1.0;
for (var i = 0; i < notedata.length; i++) {
var line = notedata[i];
if (line.match(note1)) {
obj.jpRate = parseFloat(RegExp.$1 * 0.01);
}
}
}
};
//=============================================================================
// BattleManager
//=============================================================================
Yanfly.JP.BattleManager_makeRewards = BattleManager.makeRewards;
BattleManager.makeRewards = function () {
Yanfly.JP.BattleManager_makeRewards.call(this);
this._rewards.jp = $gameTroop.jpTotal();
this.gainJp();
};
BattleManager.gainJp = function () {
var jp = $gameTroop.jpTotal();
$gameMessage.newPage();
if (Yanfly.Param.JpAliveActors) {
var members = $gameParty.aliveMembers();
} else {
var members = $gameParty.members();
}
members.forEach(function (actor) {
actor.gainJp(jp);
});
};
Yanfly.JP.BattleManager_displayRewards = BattleManager.displayRewards;
BattleManager.displayRewards = function () {
Yanfly.JP.BattleManager_displayRewards.call(this);
this.displayJpGain();
};
BattleManager.displayJpGain = function () {
if (!Yanfly.Param.JpShowResults) return;
var jp = $gameTroop.jpTotal();
$gameMessage.newPage();
$gameParty.members().forEach(function (actor) {
var fmt = Yanfly.Param.JpTextFormat;
var text = fmt.format(
actor.name(),
Yanfly.Util.toGroup(actor.battleJp()),
Yanfly.Param.Jp
);
$gameMessage.add("\\." + text);
});
};
//=============================================================================
// Game_Battler
//=============================================================================
Yanfly.JP.Game_Battler_useItem = Game_Battler.prototype.useItem;
Game_Battler.prototype.useItem = function (item) {
Yanfly.JP.Game_Battler_useItem.call(this, item);
if (!$gameParty.inBattle()) return;
if (this.isActor()) this.gainJp(eval(item.gainJp), this.currentClass().id);
};
Yanfly.JP.Game_Battler_onBattleStart = Game_Battler.prototype.onBattleStart;
Game_Battler.prototype.onBattleStart = function () {
Yanfly.JP.Game_Battler_onBattleStart.call(this);
this._battleJp = 0;
};
Yanfly.JP.Game_Battler_onBattleEnd = Game_Battler.prototype.onBattleEnd;
Game_Battler.prototype.onBattleEnd = function () {
Yanfly.JP.Game_Battler_onBattleEnd.call(this);
this._battleJp = 0;
};
//=============================================================================
// Game_Actor
//=============================================================================
Yanfly.JP.Game_Actor_setup = Game_Actor.prototype.setup;
Game_Actor.prototype.setup = function (actorId) {
Yanfly.JP.Game_Actor_setup.call(this, actorId);
this.initJp();
};
Game_Actor.prototype.jp = function (classId) {
if (!this._jp) this.initJp();
if (!this._jp) return 0;
if (classId === undefined) classId = this.currentClass().id;
if (!this._jp[classId]) this._jp[classId] = 0;
return this._jp[classId];
};
Game_Actor.prototype.initJp = function () {
var actor = this.actor();
for (var i = 0; i < $dataClasses.length; i++) {
if (actor.startingJp) {
var jp = actor.startingJp[i] || 0;
this.setJp(jp, i);
}
}
};
Game_Actor.prototype.setJp = function (value, classId) {
value = parseInt(value);
if (value === NaN) value = 0;
classId = classId || this.currentClass().id;
if (!this._jp) this._jp = {};
if (!this._jp[classId]) this._jp[classId] = 0;
this._jp[classId] = Math.max(0, value);
if (Yanfly.Param.JpMax > 0) {
this._jp[classId] = Math.min(Yanfly.Param.JpMax, value);
}
};
Game_Actor.prototype.jpRate = function () {
var rate = 1.0;
rate *= this.actor().jpRate;
rate *= this.currentClass().jpRate;
var equips = this.equips();
for (var i = 0; i < equips.length; i++) {
var item = equips[i];
if (item) rate *= item.jpRate;
}
var states = this.states();
for (var i = 0; i < states.length; i++) {
var state = states[i];
if (state) rate *= state.jpRate;
}
return rate;
};
Game_Actor.prototype.gainJp = function (value, classId) {
value = parseInt(value);
if (value === NaN) value = 0;
classId = classId || this.currentClass().id;
value = Math.floor(value * this.jpRate());
if ($gameParty.inBattle()) {
this._battleJp = this._battleJp || 0;
this._battleJp += value;
}
this.setJp(this.jp(classId) + value, classId);
if (classId === this.currentClass().id && this.isSublcassEarnJp()) {
this.gainJpSubclass(value);
}
};
Game_Actor.prototype.isSublcassEarnJp = function () {
if (!Imported.YEP_X_Subclass) return false;
if (!this.subclass()) return false;
return Yanfly.Param.SubclassJp;
};
Game_Actor.prototype.gainJpSubclass = function (value) {
var classId = this.subclass().id;
value = Math.round(value * Yanfly.Param.SubclassJp);
this.setJp(this.jp(classId) + value, classId);
};
Game_Actor.prototype.loseJp = function (value, classId) {
classId = classId || this.currentClass().id;
this.setJp(this.jp(classId) - value, classId);
};
Game_Actor.prototype.battleJp = function () {
this._battleJp = this._battleJp || 0;
return this._battleJp;
};
Yanfly.JP.Game_Actor_changeClass = Game_Actor.prototype.changeClass;
Game_Actor.prototype.changeClass = function (classId, keepExp) {
this._preventJpLevelUpGain = true;
Yanfly.JP.Game_Actor_changeClass.call(this, classId, keepExp);
this._preventJpLevelUpGain = false;
};
Yanfly.JP.Game_Actor_levelUp = Game_Actor.prototype.levelUp;
Game_Actor.prototype.levelUp = function () {
Yanfly.JP.Game_Actor_levelUp.call(this);
if (this._preventJpLevelUpGain) return;
var user = this;
var target = this;
var a = this;
var b = this;
var level = this.level;
var code = Yanfly.Param.JpPerLevel;
try {
var value = eval(code);
} catch (e) {
var value = 0;
Yanfly.Util.displayError(e, code, "LEVEL UP JP FORMULA ERROR");
}
this.gainJp(value, this.currentClass().id);
};
//=============================================================================
// Game_Enemy
//=============================================================================
Game_Enemy.prototype.jp = function () {
var user = this;
var target = this;
var a = this;
var b = this;
var code = this.enemy().jp;
try {
return eval(code);
} catch (e) {
Yanfly.Util.displayError(e, code, "ENEMY JP FORMULA ERROR");
return 0;
}
};
//=============================================================================
// Game_Action
//=============================================================================
Yanfly.JP.Game_Action_applyItemUserEffect =
Game_Action.prototype.applyItemUserEffect;
Game_Action.prototype.applyItemUserEffect = function (target) {
Yanfly.JP.Game_Action_applyItemUserEffect.call(this, target);
if (target) this.applyItemJpEffect(target);
};
Game_Action.prototype.applyItemJpEffect = function (target) {
var item = this.item();
if (!item) return;
if (target.isActor()) target.gainJp(item.targetGainJp);
};
Yanfly.JP.Game_Action_hasItemAnyValidEffects =
Game_Action.prototype.hasItemAnyValidEffects;
Game_Action.prototype.hasItemAnyValidEffects = function (target) {
var item = this.item();
if (!item) return;
if (target.isActor() && item.targetGainJp !== 0) return true;
return Yanfly.JP.Game_Action_hasItemAnyValidEffects.call(this, target);
};
//=============================================================================
// Game_Troop
//=============================================================================
Game_Troop.prototype.jpTotal = function () {
return this.deadMembers().reduce(function (r, enemy) {
return r + enemy.jp();
}, 0);
};
//=============================================================================
// Game_Interpreter
//=============================================================================
Yanfly.JP.Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args) {
Yanfly.JP.Game_Interpreter_pluginCommand.call(this, command, args);
if (command === "gainJp") this.modifyJp("gain", args);
if (command === "loseJp") this.modifyJp("lose", args);
if (command === "setJp") this.modifyJp("set", args);
};
Game_Interpreter.prototype.modifyJp = function (type, args) {
if (!args) return;
var actorId = parseInt(args[0]);
var actor = $gameActors.actor(actorId);
var jpValue = args[1] || 0;
jpValue = parseInt(jpValue);
var classId = args[2] || 0;
classId = parseInt(classId);
if (jpValue <= 0) return;
if (classId <= 0) classId = actor.currentClass().id;
if (type === "gain") {
actor.gainJp(jpValue, classId);
} else if (type === "lose") {
actor.loseJp(jpValue, classId);
} else if (type === "set") {
actor.setJp(jpValue, classId);
}
};
//=============================================================================
// Window_Base
//=============================================================================
Yanfly.JP.Window_Base_dASS = Window_Base.prototype.drawActorSimpleStatus;
Window_Base.prototype.drawActorSimpleStatus = function (actor, wx, wy, ww) {
this._drawMenuJP = Yanfly.Param.JpShowMenu;
Yanfly.JP.Window_Base_dASS.call(this, actor, wx, wy, ww);
this._drawMenuJP = undefined;
};
Yanfly.JP.Window_Base_drawActorClass = Window_Base.prototype.drawActorClass;
Window_Base.prototype.drawActorClass = function (actor, wx, wy, ww) {
ww = ww || 168;
Yanfly.JP.Window_Base_drawActorClass.call(this, actor, wx, wy, ww);
if (!this._drawMenuJP) return;
var classId = actor.currentClass().id;
this.drawActorJp(actor, classId, wx, wy, ww, "Center");
};
Window_Base.prototype.drawActorJp = function (actor, id, wx, wy, ww, align) {
var jp = actor.jp(id);
var icon = "\\i[" + Yanfly.Icon.Jp + "]";
var fmt = Yanfly.Param.JpMenuFormat;
var text = fmt.format(Yanfly.Util.toGroup(jp), Yanfly.Param.Jp, icon);
if (align === "Light") {
wx = 200;
} else if (align === "Light") {
wx += (ww - this.textWidthEx(text)) / 2;
} else {
wx += ww - this.textWidthEx(text);
}
this.drawTextEx(text, wx, wy);
};
Window_Base.prototype.textWidthEx = function (text) {
return this.drawTextEx(text, 0, this.contents.height);
};
//=============================================================================
// Window_VictoryJp
//=============================================================================
if (Imported.YEP_VictoryAftermath && Yanfly.Param.JpEnableAftermath) {
function Window_VictoryJp() {
this.initialize.apply(this, arguments);
}
Window_VictoryJp.prototype = Object.create(Window_VictoryExp.prototype);
Window_VictoryJp.prototype.constructor = Window_VictoryJp;
Window_VictoryJp.prototype.drawActorGauge = function (actor, index) {
this.clearGaugeRect(index);
var rect = this.gaugeRect(index);
this.changeTextColor(this.normalColor());
this.drawActorName(actor, rect.x + 2, rect.y);
this.drawLevel(actor, rect);
this.drawJpGained(actor, rect);
};
Window_VictoryJp.prototype.drawJpGained = function (actor, rect) {
var wy = rect.y + this.lineHeight() * 1;
this.changeTextColor(this.systemColor());
this.drawText(
Yanfly.Param.JpAftermathEarn,
rect.x + 2,
wy,
rect.width - 4,
"left"
);
var bonusJp =
(1.0 * actor.battleJp() * this._tick) / Yanfly.Param.VAGaugeTicks;
var value = Yanfly.Util.toGroup(parseInt(bonusJp));
var fmt = Yanfly.Param.JpAftermathFmt;
var icon = "\\i[" + Yanfly.Icon.Jp + "]";
var JpText = fmt.format(value, Yanfly.Param.Jp, icon);
this.changeTextColor(this.normalColor());
wx = rect.x + rect.width - this.textWidthEx(JpText);
this.drawTextEx(JpText, wx, wy);
};
//=============================================================================
// Scene_Battle
//=============================================================================
Yanfly.JP.Scene_Battle_addCustomVictorySteps =
Scene_Battle.prototype.addCustomVictorySteps;
Scene_Battle.prototype.addCustomVictorySteps = function (array) {
array = Yanfly.JP.Scene_Battle_addCustomVictorySteps.call(this, array);
if (!array.contains("JP")) array.push("JP");
return array;
};
Yanfly.JP.Scene_Battle_updateVictorySteps =
Scene_Battle.prototype.updateVictorySteps;
Scene_Battle.prototype.updateVictorySteps = function () {
Yanfly.JP.Scene_Battle_updateVictorySteps.call(this);
if (this.isVictoryStep("JP")) this.updateVictoryJp();
};
Scene_Battle.prototype.updateVictoryJp = function () {
if (!this._victoryJpWindow) {
this.createVictoryJp();
} else if (this._victoryJpWindow.isReady()) {
if (this.victoryTriggerContinue()) this.finishVictoryJp();
}
};
Scene_Battle.prototype.createVictoryJp = function () {
this._victoryTitleWindow.refresh(Yanfly.Param.JpAftermathText);
this._victoryJpWindow = new Window_VictoryJp();
this.addWindow(this._victoryJpWindow);
this._victoryJpWindow.open();
};
Scene_Battle.prototype.finishVictoryJp = function () {
SoundManager.playOk();
this._victoryJpWindow.close();
this.processNextVictoryStep();
};
} // Imported.YEP_VictoryAftermath
//=============================================================================
// Utilities
//=============================================================================
Yanfly.Util = Yanfly.Util || {};
if (!Yanfly.Util.toGroup) {
Yanfly.Util.toGroup = function (inVal) {
return inVal;
};
}
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
//=============================================================================