You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1021 lines
33 KiB
JavaScript
1021 lines
33 KiB
JavaScript
2 years ago
|
//=============================================================================
|
||
|
// Yanfly Engine Plugins - Victory Aftermath
|
||
|
// YEP_VictoryAftermath.js
|
||
|
//=============================================================================
|
||
|
|
||
|
var Imported = Imported || {};
|
||
|
Imported.YEP_VictoryAftermath = true;
|
||
|
|
||
|
var Yanfly = Yanfly || {};
|
||
|
Yanfly.VA = Yanfly.VA || {};
|
||
|
Yanfly.VA.version = 1.07;
|
||
|
|
||
|
//=============================================================================
|
||
|
/*:
|
||
|
* @plugindesc v1.07 Display an informative window after a battle is over
|
||
|
* instead of message box text stating what the party earned.
|
||
|
* @author Yanfly Engine Plugins
|
||
|
*
|
||
|
* @param ---General---
|
||
|
* @default
|
||
|
*
|
||
|
* @param Victory Order
|
||
|
* @parent ---General---
|
||
|
* @desc This is the order the victory sequence will play out.
|
||
|
* Separate each part with a space.
|
||
|
* @default exp custom drops
|
||
|
*
|
||
|
* @param ---BGM---
|
||
|
* @default
|
||
|
*
|
||
|
* @param Victory BGM
|
||
|
* @parent ---BGM---
|
||
|
* @type file
|
||
|
* @dir audio/bgm/
|
||
|
* @require 1
|
||
|
* @desc This will be the BGM used when the battle is over.
|
||
|
* @default Ship
|
||
|
*
|
||
|
* @param BGM Volume
|
||
|
* @parent ---BGM---
|
||
|
* @desc This will be the volume of the BGM played.
|
||
|
* @default 90
|
||
|
*
|
||
|
* @param BGM Pitch
|
||
|
* @parent ---BGM---
|
||
|
* @desc This will be the pitch of the BGM played.
|
||
|
* @default 100
|
||
|
*
|
||
|
* @param BGM Pan
|
||
|
* @parent ---BGM---
|
||
|
* @desc This will be the pan of the BGM played.
|
||
|
* @default 0
|
||
|
*
|
||
|
* @param ---Battle Results---
|
||
|
* @default
|
||
|
*
|
||
|
* @param Cheer Wait
|
||
|
* @parent ---Battle Results---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @desc This will be how many frames the actors will cheer for
|
||
|
* before the Victory Aftermath windows appear.
|
||
|
* @default 90
|
||
|
*
|
||
|
* @param Battle Results Text
|
||
|
* @parent ---Battle Results---
|
||
|
* @desc This is the text used for the battle results text.
|
||
|
* @default Battle Results
|
||
|
*
|
||
|
* @param Battle Drops Text
|
||
|
* @parent ---Battle Results---
|
||
|
* @desc This is the text used for the drops gained in battle.
|
||
|
* @default Battle Spoils
|
||
|
*
|
||
|
* @param ---EXP Window---
|
||
|
* @default
|
||
|
*
|
||
|
* @param Font Size
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 1
|
||
|
* @desc This is the font size used for the EXP Window.
|
||
|
* Default: 28
|
||
|
* @default 28
|
||
|
*
|
||
|
* @param Level Up Text
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc The text to be used when leveling up.
|
||
|
* @default LEVEL UP!
|
||
|
*
|
||
|
* @param Max Level Text
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc The text to be used when the actor is Max Level.
|
||
|
* @default MAX LEVEL
|
||
|
*
|
||
|
* @param Show Skills Learned
|
||
|
* @parent ---EXP Window---
|
||
|
* @type boolean
|
||
|
* @on Display Skills
|
||
|
* @off Don't Display
|
||
|
* @desc Display skills learned at level up?
|
||
|
* NO - false YES - true
|
||
|
* @default false
|
||
|
*
|
||
|
* @param Gained EXP Text
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc The text to label how much EXP was gained in battle.
|
||
|
* @default Gained EXP
|
||
|
*
|
||
|
* @param Gained EXP Format
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc The text to display how much EXP was gained in battle.
|
||
|
* @default +%1
|
||
|
*
|
||
|
* @param EXP Gauge Color 1
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @max 31
|
||
|
* @desc The skin color used in EXP Gauge Color 1 shown in the
|
||
|
* Victory Aftermath Window.
|
||
|
* @default 30
|
||
|
*
|
||
|
* @param EXP Gauge Color 2
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @max 31
|
||
|
* @desc The skin color used in EXP Gauge Color 2 shown in the
|
||
|
* Victory Aftermath Window.
|
||
|
* @default 31
|
||
|
*
|
||
|
* @param Level Gauge Color 1
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @max 31
|
||
|
* @desc The skin color used for the EXP Gauge Color 1 if the actor
|
||
|
* has leveled up.
|
||
|
* @default 14
|
||
|
*
|
||
|
* @param Level Gauge Color 2
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @max 31
|
||
|
* @desc The skin color used for the EXP Gauge Color 2 if the actor
|
||
|
* has leveled up.
|
||
|
* @default 6
|
||
|
*
|
||
|
* @param Gauge Ticks
|
||
|
* @parent ---EXP Window---
|
||
|
* @type number
|
||
|
* @min 0
|
||
|
* @desc This is how many ticks will occur before the gained EXP
|
||
|
* gauge is full. Each tick is 4 frames.
|
||
|
* @default 15
|
||
|
*
|
||
|
* @param Tick SE
|
||
|
* @parent ---EXP Window---
|
||
|
* @type file
|
||
|
* @dir audio/se/
|
||
|
* @require 1
|
||
|
* @desc This will be the sound used while the EXP gauge fills up.
|
||
|
* @default Absorb2
|
||
|
*
|
||
|
* @param Tick Volume
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc This will be the volume of the BGM played.
|
||
|
* @default 90
|
||
|
*
|
||
|
* @param Tick Pitch
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc This will be the pitch of the BGM played.
|
||
|
* @default 150
|
||
|
*
|
||
|
* @param Tick Pan
|
||
|
* @parent ---EXP Window---
|
||
|
* @desc This will be the pan of the BGM played.
|
||
|
* @default 0
|
||
|
*
|
||
|
* @help
|
||
|
* ============================================================================
|
||
|
* Introduction
|
||
|
* ============================================================================
|
||
|
*
|
||
|
* This plugin swaps out the victory messages from the default battle system in
|
||
|
* favor of more informative windows to display. Adjust the parameters to
|
||
|
* change the settings to fit your game.
|
||
|
*
|
||
|
* ============================================================================
|
||
|
* Victory Aftermath
|
||
|
* ============================================================================
|
||
|
*
|
||
|
* In the parameters, there's a 'Victory Order' parameter. This parameter lets
|
||
|
* you choose the order of the steps in the Victory Aftermath.
|
||
|
*
|
||
|
* The default order is as follows:
|
||
|
* exp Displays the EXP window.
|
||
|
* custom Displays any custom plugin extensions.
|
||
|
* drops Displays the drops window.
|
||
|
*
|
||
|
* If you switch the order of these steps, add steps, or remove steps from the
|
||
|
* 'Victory Order' plugin, the Victory Aftermath will correspond to any changes
|
||
|
* you have made.
|
||
|
*
|
||
|
* ============================================================================
|
||
|
* Plugin Commands
|
||
|
* ============================================================================
|
||
|
*
|
||
|
* If you wish to alter the Victory Aftermath sequence a bit, you can use the
|
||
|
* following Plugin Commands.
|
||
|
*
|
||
|
* Plugin Commands:
|
||
|
* DisableVictoryAftermath - Disables the Victory Aftermath sequence and
|
||
|
* bypasses the Victory Aftermath music, too.
|
||
|
* EnableVictoryAftermath - Enables the Victory Aftermath sequence if
|
||
|
* it has been previously disabled.
|
||
|
* DisableVictoryMusic - Disables the Victory Aftermath music to just
|
||
|
* continue playing whatever was playing.
|
||
|
* EnableVictoryMusic - Enables the Victory Aftermath music if it has
|
||
|
* been previously disabled.
|
||
|
*
|
||
|
* ============================================================================
|
||
|
* Changelog
|
||
|
* ============================================================================
|
||
|
*
|
||
|
* Version 1.07:
|
||
|
* - Updated for RPG Maker MV version 1.5.0.
|
||
|
*
|
||
|
* Version 1.06:
|
||
|
* - Updated for RPG Maker MV version 1.3.2.
|
||
|
*
|
||
|
* Version 1.05a:
|
||
|
* - Added 'Font Size' plugin parameter to alter the font size for the battle
|
||
|
* results page.
|
||
|
* - Fixed a graphical issue where an actor in crisis would display its level
|
||
|
* in the crisis color.
|
||
|
* - Changed the Victory Aftermath sequence so that the player can hold down a
|
||
|
* button to quickly go through all the Victory Sequence menus.
|
||
|
*
|
||
|
* Version 1.04:
|
||
|
* - Updated the plugin so it doesn't break visually when party sizes are too
|
||
|
* large. That said, if the party size is beyond a certain amount, this plugin
|
||
|
* will not support that many faces for it and will fit just the bare minimum.
|
||
|
*
|
||
|
* Version 1.03:
|
||
|
* - Added parameter 'Show Skills Learned'.
|
||
|
*
|
||
|
* Version 1.02:
|
||
|
* - If the Battle HUD has been hidden for whatever reason during the victory
|
||
|
* sequence, it will be returned.
|
||
|
*
|
||
|
* Version 1.01:
|
||
|
* - Fixed a bug plugin commands that would cause some victory sequences to
|
||
|
* loop forever.
|
||
|
*
|
||
|
* Version 1.00:
|
||
|
* - Finished plugin!
|
||
|
*/
|
||
|
//=============================================================================
|
||
|
|
||
|
//=============================================================================
|
||
|
// Parameter Variables
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.Parameters = PluginManager.parameters("YEP_VictoryAftermath");
|
||
|
Yanfly.Param = Yanfly.Param || {};
|
||
|
|
||
|
Yanfly.Param.VAOrder = String(Yanfly.Parameters["Victory Order"]);
|
||
|
|
||
|
Yanfly.Param.VACheerWait = Number(Yanfly.Parameters["Cheer Wait"]);
|
||
|
Yanfly.Param.VABattleResults = String(Yanfly.Parameters["Battle Results Text"]);
|
||
|
Yanfly.Param.VABattleDrops = String(Yanfly.Parameters["Battle Drops Text"]);
|
||
|
|
||
|
Yanfly.Param.VABgmName = String(Yanfly.Parameters["Victory BGM"]);
|
||
|
Yanfly.Param.VABgmVol = Number(Yanfly.Parameters["BGM Volume"]);
|
||
|
Yanfly.Param.VABgmPitch = Number(Yanfly.Parameters["BGM Pitch"]);
|
||
|
Yanfly.Param.VABgmPan = Number(Yanfly.Parameters["BGM Pan"]);
|
||
|
|
||
|
Yanfly.Param.VAFontSize = Number(Yanfly.Parameters["Font Size"]);
|
||
|
Yanfly.Param.VALevelUp = String(Yanfly.Parameters["Level Up Text"]);
|
||
|
Yanfly.Param.VAMaxLv = String(Yanfly.Parameters["Max Level Text"]);
|
||
|
Yanfly.Param.VAShowSkills = String(Yanfly.Parameters["Show Skills Learned"]);
|
||
|
Yanfly.Param.VAGainedExp = String(Yanfly.Parameters["Gained EXP Text"]);
|
||
|
Yanfly.Param.VAGainedExpfmt = String(Yanfly.Parameters["Gained EXP Format"]);
|
||
|
Yanfly.Param.ColorExp1 = Number(Yanfly.Parameters["EXP Gauge Color 1"]);
|
||
|
Yanfly.Param.ColorExp2 = Number(Yanfly.Parameters["EXP Gauge Color 2"]);
|
||
|
Yanfly.Param.ColorLv1 = Number(Yanfly.Parameters["Level Gauge Color 1"]);
|
||
|
Yanfly.Param.ColorLv2 = Number(Yanfly.Parameters["Level Gauge Color 2"]);
|
||
|
Yanfly.Param.VAGaugeTicks = Number(Yanfly.Parameters["Gauge Ticks"]);
|
||
|
Yanfly.Param.VATickName = String(Yanfly.Parameters["Tick SE"]);
|
||
|
Yanfly.Param.VATickVol = Number(Yanfly.Parameters["Tick Volume"]);
|
||
|
Yanfly.Param.VATickPitch = Number(Yanfly.Parameters["Tick Pitch"]);
|
||
|
Yanfly.Param.VATickPan = Number(Yanfly.Parameters["Tick Pan"]);
|
||
|
|
||
|
//=============================================================================
|
||
|
// BattleManager
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.VA.BattleManager_initMembers = BattleManager.initMembers;
|
||
|
BattleManager.initMembers = function () {
|
||
|
Yanfly.VA.BattleManager_initMembers.call(this);
|
||
|
this.initVictoryData();
|
||
|
};
|
||
|
|
||
|
BattleManager.initVictoryData = function () {
|
||
|
this._victoryPhase = false;
|
||
|
this._victoryCheerWait = 0;
|
||
|
this._victoryStep = 0;
|
||
|
};
|
||
|
|
||
|
BattleManager.processVictory = function () {
|
||
|
$gameParty.performVictory();
|
||
|
if (this.isVictoryPhase()) return;
|
||
|
if (this._windowLayer) this._windowLayer.x = 0;
|
||
|
$gameParty.removeBattleStates();
|
||
|
this._victoryPhase = true;
|
||
|
if ($gameSystem.skipVictoryAftermath()) {
|
||
|
this.processSkipVictory();
|
||
|
} else {
|
||
|
this.processNormalVictory();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
BattleManager.isVictoryPhase = function () {
|
||
|
return this._victoryPhase;
|
||
|
};
|
||
|
|
||
|
BattleManager.isFinishedVictoryCheer = function () {
|
||
|
return ++this._victoryCheerWait >= Yanfly.Param.VACheerWait;
|
||
|
};
|
||
|
|
||
|
BattleManager.processSkipVictory = function () {
|
||
|
this.makeRewards();
|
||
|
this.gainRewards();
|
||
|
this.replayBgmAndBgs();
|
||
|
this.endBattle(0);
|
||
|
};
|
||
|
|
||
|
BattleManager.processNormalVictory = function () {
|
||
|
if (!$gameSystem.skipVictoryMusic()) this.playVictoryMe();
|
||
|
this.makeRewards();
|
||
|
this.startVictoryPhase();
|
||
|
};
|
||
|
|
||
|
Yanfly.VA.BattleManager_playVictoryMe = BattleManager.playVictoryMe;
|
||
|
BattleManager.playVictoryMe = function () {
|
||
|
Yanfly.VA.BattleManager_playVictoryMe.call(this);
|
||
|
this.playVictoryBGM();
|
||
|
};
|
||
|
|
||
|
BattleManager.playVictoryBGM = function () {
|
||
|
var victoryBgm = {
|
||
|
name: Yanfly.Param.VABgmName,
|
||
|
volume: Yanfly.Param.VABgmVol,
|
||
|
pitch: Yanfly.Param.VABgmPitch,
|
||
|
pan: Yanfly.Param.VABgmPan,
|
||
|
};
|
||
|
AudioManager.playBgm(victoryBgm);
|
||
|
};
|
||
|
|
||
|
BattleManager.startVictoryPhase = function () {
|
||
|
this._victoryCheerWait = 0;
|
||
|
this._victoryStep = 0;
|
||
|
this.prepareVictoryInfo();
|
||
|
};
|
||
|
|
||
|
BattleManager.prepareVictoryInfo = function () {
|
||
|
$gameParty.allMembers().forEach(function (actor) {
|
||
|
ImageManager.loadFace(actor.faceName());
|
||
|
actor._preVictoryExp = actor.currentExp();
|
||
|
actor._preVictoryLv = actor._level;
|
||
|
actor._victoryPhase = true;
|
||
|
actor._victorySkills = [];
|
||
|
}, this);
|
||
|
this.gainRewards();
|
||
|
$gameParty.allMembers().forEach(function (actor) {
|
||
|
actor._expGained = actor.currentExp() - actor._preVictoryExp;
|
||
|
actor._postVictoryLv = actor._level;
|
||
|
}, this);
|
||
|
};
|
||
|
|
||
|
BattleManager.processVictoryFinish = function () {
|
||
|
$gameParty.clearVictoryData();
|
||
|
this.endBattle(0);
|
||
|
this.replayBgmAndBgs();
|
||
|
this._victoryPhase = false;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Game_System
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.VA.Game_System_initialize = Game_System.prototype.initialize;
|
||
|
Game_System.prototype.initialize = function () {
|
||
|
Yanfly.VA.Game_System_initialize.call(this);
|
||
|
this._skipVictoryAftermath = false;
|
||
|
this._skipVictoryMusic = false;
|
||
|
};
|
||
|
|
||
|
Game_System.prototype.skipVictoryAftermath = function () {
|
||
|
return this._skipVictoryAftermath;
|
||
|
};
|
||
|
|
||
|
Game_System.prototype.skipVictoryMusic = function () {
|
||
|
return this._skipVictoryMusic;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Game_Actor
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.VA.Game_Actor_shouldDisplayLevelUp = Game_Actor.prototype.shouldDisplayLevelUp;
|
||
|
Game_Actor.prototype.shouldDisplayLevelUp = function () {
|
||
|
if ($gameParty.inBattle()) return false;
|
||
|
return Yanfly.VA.Game_Actor_shouldDisplayLevelUp.call(this);
|
||
|
};
|
||
|
|
||
|
Game_Actor.prototype.clearVictoryData = function () {
|
||
|
this._preVictoryExp = undefined;
|
||
|
this._preVictoryLv = undefined;
|
||
|
this._expGained = undefined;
|
||
|
this._postVictoryLv = undefined;
|
||
|
this._victoryPhase = undefined;
|
||
|
this._victorySkills = undefined;
|
||
|
};
|
||
|
|
||
|
Game_Actor.prototype.isLearnedSkillRaw = function (skillId) {
|
||
|
return this._skills.contains(skillId);
|
||
|
};
|
||
|
|
||
|
Yanfly.VA.Game_Actor_learnSkill = Game_Actor.prototype.learnSkill;
|
||
|
Game_Actor.prototype.learnSkill = function (skillId) {
|
||
|
if (!this.isLearnedSkillRaw(skillId) && this._victoryPhase) {
|
||
|
this._victorySkills.push(skillId);
|
||
|
}
|
||
|
Yanfly.VA.Game_Actor_learnSkill.call(this, skillId);
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Game_Party
|
||
|
//=============================================================================
|
||
|
|
||
|
Game_Party.prototype.clearVictoryData = function () {
|
||
|
for (var i = 0; i < this.members().length; ++i) {
|
||
|
var actor = this.members()[i];
|
||
|
if (!actor) continue;
|
||
|
actor.clearVictoryData();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Game_Interpreter
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.VA.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
||
|
Game_Interpreter.prototype.pluginCommand = function (command, args) {
|
||
|
Yanfly.VA.Game_Interpreter_pluginCommand.call(this, command, args);
|
||
|
if (command === "DisableVictoryAftermath") {
|
||
|
$gameSystem._skipVictoryAftermath = true;
|
||
|
}
|
||
|
if (command === "EnableVictoryAftermath") {
|
||
|
$gameSystem._skipVictoryAftermath = false;
|
||
|
}
|
||
|
if (command === "DisableVictoryMusic") {
|
||
|
$gameSystem._skipVictoryMusic = true;
|
||
|
}
|
||
|
if (command === "EnableVictoryMusic") {
|
||
|
$gameSystem._skipVictoryMusic = false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Game_Interpreter.prototype.gotoSceneParty = function () {
|
||
|
if (!$gameParty.inBattle()) SceneManager.push(Scene_Party);
|
||
|
return true;
|
||
|
};
|
||
|
|
||
|
Game_Interpreter.prototype.lockActor = function (args, value) {
|
||
|
for (i = 0; i < args.length; i++) {
|
||
|
var actorId = Number(args[i]);
|
||
|
if ($gameActors.actor(actorId)) {
|
||
|
$gameActors.actor(actorId)._locked = value;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Game_Interpreter.prototype.requireActor = function (args, value) {
|
||
|
for (i = 0; i < args.length; i++) {
|
||
|
var actorId = Number(args[i]);
|
||
|
if ($gameActors.actor(actorId)) {
|
||
|
$gameActors.actor(actorId)._required = value;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Window_VictoryTitle
|
||
|
//=============================================================================
|
||
|
|
||
|
function Window_VictoryTitle() {
|
||
|
this.initialize.apply(this, arguments);
|
||
|
}
|
||
|
|
||
|
Window_VictoryTitle.prototype = Object.create(Window_Base.prototype);
|
||
|
Window_VictoryTitle.prototype.constructor = Window_VictoryTitle;
|
||
|
|
||
|
Window_VictoryTitle.prototype.initialize = function () {
|
||
|
var width = this.windowWidth();
|
||
|
var height = this.windowHeight();
|
||
|
Window_Base.prototype.initialize.call(this, 0, 0, width, height);
|
||
|
this.refresh(Yanfly.Param.VABattleResults);
|
||
|
this.openness = 0;
|
||
|
};
|
||
|
|
||
|
Window_VictoryTitle.prototype.windowWidth = function () {
|
||
|
return Graphics.boxWidth;
|
||
|
};
|
||
|
|
||
|
Window_VictoryTitle.prototype.windowHeight = function () {
|
||
|
return this.fittingHeight(1);
|
||
|
};
|
||
|
|
||
|
Window_VictoryTitle.prototype.refresh = function (text) {
|
||
|
this.contents.clear();
|
||
|
this.drawText(text, 0, 0, this.contents.width, "center");
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Window_VictoryExp
|
||
|
//=============================================================================
|
||
|
|
||
|
function Window_VictoryExp() {
|
||
|
this.initialize.apply(this, arguments);
|
||
|
}
|
||
|
|
||
|
Window_VictoryExp.prototype = Object.create(Window_Selectable.prototype);
|
||
|
Window_VictoryExp.prototype.constructor = Window_VictoryExp;
|
||
|
|
||
|
Window_VictoryExp.prototype.initialize = function () {
|
||
|
var wy = this.fittingHeight(1);
|
||
|
var width = this.windowWidth();
|
||
|
var height = this.windowHeight();
|
||
|
this._showGainedSkills = eval(Yanfly.Param.VAShowSkills);
|
||
|
Window_Selectable.prototype.initialize.call(this, 0, wy, width, height);
|
||
|
this.defineTickSound();
|
||
|
this.refresh();
|
||
|
AudioManager.playSe(this._tickSound);
|
||
|
this._tick = 0;
|
||
|
this.openness = 0;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.windowWidth = function () {
|
||
|
return Graphics.boxWidth;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.windowHeight = function () {
|
||
|
return Graphics.boxHeight - this.fittingHeight(1);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.maxItems = function () {
|
||
|
return $gameParty.maxBattleMembers();
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.standardFontSize = function () {
|
||
|
return Yanfly.Param.VAFontSize;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.lineHeight = function () {
|
||
|
return this.standardFontSize() + 8;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.itemHeight = function () {
|
||
|
var clientHeight = this.height - this.padding * 2;
|
||
|
var clientHeight = Math.floor(clientHeight / this.maxItems());
|
||
|
var clientHeight = Math.max(clientHeight, this.lineHeight() * 2);
|
||
|
return clientHeight;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.textWidthEx = function (text) {
|
||
|
return this.drawTextEx(text, 0, this.contents.height);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.defineTickSound = function () {
|
||
|
this._tickSound = {
|
||
|
name: Yanfly.Param.VATickName,
|
||
|
volume: Yanfly.Param.VATickVol,
|
||
|
pitch: Yanfly.Param.VATickPitch,
|
||
|
pan: Yanfly.Param.VATickPan,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.update = function () {
|
||
|
Window_Selectable.prototype.update.call(this);
|
||
|
if (this.openness >= 255) this.updateTicks();
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.updateTicks = function () {
|
||
|
if (this._tick >= Yanfly.Param.VAGaugeTicks) return;
|
||
|
if (Graphics.frameCount % 4 !== 0) return;
|
||
|
if (Input.isPressed("ok") || TouchInput.isPressed()) {
|
||
|
this._tick = Yanfly.Param.VAGaugeTicks;
|
||
|
} else {
|
||
|
this._tick += 1;
|
||
|
}
|
||
|
this.drawAllGauges();
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawAllGauges = function () {
|
||
|
var topIndex = this.topIndex();
|
||
|
for (var i = 0; i < this.maxPageItems(); i++) {
|
||
|
var index = topIndex + i;
|
||
|
if (index < this.maxItems()) this.drawItemGauge(index);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawItem = function (index) {
|
||
|
var actor = $gameParty.battleMembers()[index];
|
||
|
if (!actor) return;
|
||
|
this.drawActorProfile(actor, index);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawActorProfile = function (actor, index) {
|
||
|
var rect = this.itemRect(index);
|
||
|
var fw = Window_Base._faceWidth;
|
||
|
this.drawActorFace(actor, rect.x + 1, rect.y + 1, fw, rect.height - 2);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawItemGauge = function (index) {
|
||
|
var actor = $gameParty.battleMembers()[index];
|
||
|
if (!actor) return;
|
||
|
this.drawActorGauge(actor, index);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.gaugeRect = function (index) {
|
||
|
var rect = this.itemRect(index);
|
||
|
var fw = Window_Base._faceWidth;
|
||
|
rect.x += fw + this.standardPadding() * 2;
|
||
|
rect.width -= fw * 2 + this.standardPadding() * 4;
|
||
|
return rect;
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.clearGaugeRect = function (index) {
|
||
|
var rect = this.gaugeRect(index);
|
||
|
this.contents.clearRect(rect.x, rect.y, rect.width, rect.height);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.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.drawExpGauge(actor, rect);
|
||
|
this.drawExpValues(actor, rect);
|
||
|
this.drawExpGained(actor, rect);
|
||
|
this.drawGainedSkills(actor, rect);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawLevel = function (actor, rect) {
|
||
|
this.changeTextColor(this.normalColor());
|
||
|
if (this.actorExpRate(actor) >= 1.0) {
|
||
|
var text = Yanfly.Util.toGroup(actor._postVictoryLv);
|
||
|
} else {
|
||
|
var text = Yanfly.Util.toGroup(actor._preVictoryLv);
|
||
|
}
|
||
|
this.drawText(text, rect.x + 2, rect.y, rect.width - 4, "right");
|
||
|
var ww = rect.width - 4 - this.textWidth("0" + Yanfly.Util.toGroup(actor.maxLevel()));
|
||
|
this.changeTextColor(this.systemColor());
|
||
|
this.drawText(TextManager.levelA, rect.x + 2, rect.y, ww, "right");
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.actorExpRate = function (actor) {
|
||
|
var actorLv = actor._preVictoryLv;
|
||
|
if (actorLv === actor.maxLevel()) return 1.0;
|
||
|
var bonusExp = (1.0 * actor._expGained * this._tick) / Yanfly.Param.VAGaugeTicks;
|
||
|
var nowExp = actor._preVictoryExp - actor.expForLevel(actorLv) + bonusExp;
|
||
|
var nextExp = actor.expForLevel(actorLv + 1) - actor.expForLevel(actorLv);
|
||
|
return ((1.0 * nowExp) / nextExp).clamp(0.0, 1.0);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawExpGauge = function (actor, rect) {
|
||
|
var rate = this.actorExpRate(actor);
|
||
|
if (rate >= 1.0) {
|
||
|
var color1 = this.textColor(Yanfly.Param.ColorLv1);
|
||
|
var color2 = this.textColor(Yanfly.Param.ColorLv2);
|
||
|
} else {
|
||
|
var color1 = this.textColor(Yanfly.Param.ColorExp1);
|
||
|
var color2 = this.textColor(Yanfly.Param.ColorExp2);
|
||
|
}
|
||
|
var wy = rect.y + this.lineHeight();
|
||
|
this.drawGauge(rect.x, wy, rect.width, rate, color1, color2);
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawExpValues = function (actor, rect) {
|
||
|
var wy = rect.y + this.lineHeight();
|
||
|
var actorLv = actor._preVictoryLv;
|
||
|
var bonusExp = (1.0 * actor._expGained * this._tick) / Yanfly.Param.VAGaugeTicks;
|
||
|
var nowExp = actor._preVictoryExp - actor.expForLevel(actorLv) + bonusExp;
|
||
|
var nextExp = actor.expForLevel(actorLv + 1) - actor.expForLevel(actorLv);
|
||
|
if (actorLv === actor.maxLevel()) {
|
||
|
var text = Yanfly.Param.VAMaxLv;
|
||
|
} else if (nowExp >= nextExp) {
|
||
|
var text = Yanfly.Param.VALevelUp;
|
||
|
} else {
|
||
|
var text = Yanfly.Util.toGroup(parseInt(nextExp - nowExp));
|
||
|
}
|
||
|
this.changeTextColor(this.normalColor());
|
||
|
this.drawText(text, rect.x + 2, wy, rect.width - 4, "right");
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawExpGained = function (actor, rect) {
|
||
|
var wy = rect.y + this.lineHeight() * 2;
|
||
|
if (wy >= rect.y + rect.height) return;
|
||
|
this.changeTextColor(this.systemColor());
|
||
|
this.drawText(Yanfly.Param.VAGainedExp, rect.x + 2, wy, rect.width - 4, "left");
|
||
|
var bonusExp = (1.0 * actor._expGained * this._tick) / Yanfly.Param.VAGaugeTicks;
|
||
|
var expParse = Yanfly.Util.toGroup(parseInt(bonusExp));
|
||
|
var expText = Yanfly.Param.VAGainedExpfmt.format(expParse);
|
||
|
this.changeTextColor(this.normalColor());
|
||
|
this.drawText(expText, rect.x + 2, wy, rect.width - 4, "right");
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.drawGainedSkills = function (actor, rect) {
|
||
|
if (actor._victorySkills.length <= 0) return;
|
||
|
if (!this.meetDrawGainedSkillsCondition(actor)) return;
|
||
|
var wy = rect.y;
|
||
|
for (var i = 0; i < actor._victorySkills.length; ++i) {
|
||
|
if (wy + this.lineHeight() > rect.y + rect.height) break;
|
||
|
var skillId = actor._victorySkills[i];
|
||
|
var skill = $dataSkills[skillId];
|
||
|
if (!skill) continue;
|
||
|
var text = "\\i[" + skill.iconIndex + "]" + skill.name;
|
||
|
text = TextManager.obtainSkill.format(text);
|
||
|
var ww = this.textWidthEx(text);
|
||
|
var wx = rect.x + (rect.width - ww) / 2;
|
||
|
this.drawTextEx(text, wx, wy);
|
||
|
wy += this.lineHeight();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.meetDrawGainedSkillsCondition = function (actor) {
|
||
|
if (!this._showGainedSkills) return;
|
||
|
var actorLv = actor._preVictoryLv;
|
||
|
var bonusExp = (1.0 * actor._expGained * this._tick) / Yanfly.Param.VAGaugeTicks;
|
||
|
var nowExp = actor._preVictoryExp - actor.expForLevel(actorLv) + bonusExp;
|
||
|
var nextExp = actor.expForLevel(actorLv + 1) - actor.expForLevel(actorLv);
|
||
|
if (actorLv === actor.maxLevel()) {
|
||
|
return false;
|
||
|
} else if (nowExp >= nextExp) {
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Window_VictoryExp.prototype.isReady = function () {
|
||
|
return this._tick >= Yanfly.Param.VAGaugeTicks;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Window_VictoryDrop
|
||
|
//=============================================================================
|
||
|
|
||
|
function Window_VictoryDrop() {
|
||
|
this.initialize.apply(this, arguments);
|
||
|
}
|
||
|
|
||
|
Window_VictoryDrop.prototype = Object.create(Window_ItemList.prototype);
|
||
|
Window_VictoryDrop.prototype.constructor = Window_VictoryDrop;
|
||
|
|
||
|
Window_VictoryDrop.prototype.initialize = function (titleWindow) {
|
||
|
var wy = titleWindow.height;
|
||
|
var ww = Graphics.boxWidth;
|
||
|
var wh = Graphics.boxHeight - wy;
|
||
|
Window_ItemList.prototype.initialize.call(this, 0, wy, ww, wh);
|
||
|
this.openness = 0;
|
||
|
this.refresh();
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.makeItemList = function () {
|
||
|
if (BattleManager._rewards.gold > 0) {
|
||
|
this._data = ["gold", null];
|
||
|
} else {
|
||
|
this._data = [];
|
||
|
}
|
||
|
this._dropItems = [];
|
||
|
this._dropWeapons = [];
|
||
|
this._dropArmors = [];
|
||
|
this.extractDrops();
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.extractDrops = function () {
|
||
|
BattleManager._rewards.items.forEach(function (item) {
|
||
|
if (!item) return;
|
||
|
if (DataManager.isItem(item)) this._dropItems.push(item.id);
|
||
|
if (DataManager.isWeapon(item)) this._dropWeapons.push(item.id);
|
||
|
if (DataManager.isArmor(item)) this._dropArmors.push(item.id);
|
||
|
}, this);
|
||
|
this._dropItems.sort(function (a, b) {
|
||
|
return a - b;
|
||
|
});
|
||
|
this._dropWeapons.sort(function (a, b) {
|
||
|
return a - b;
|
||
|
});
|
||
|
this._dropArmors.sort(function (a, b) {
|
||
|
return a - b;
|
||
|
});
|
||
|
this._dropItems.forEach(function (id) {
|
||
|
var item = $dataItems[id];
|
||
|
if (item && !this._data.contains(item)) this._data.push(item);
|
||
|
}, this);
|
||
|
this._dropWeapons.forEach(function (id) {
|
||
|
var item = $dataWeapons[id];
|
||
|
if (item && !this._data.contains(item)) this._data.push(item);
|
||
|
}, this);
|
||
|
this._dropArmors.forEach(function (id) {
|
||
|
var item = $dataArmors[id];
|
||
|
if (item && !this._data.contains(item)) this._data.push(item);
|
||
|
}, this);
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.drawItem = function (index) {
|
||
|
var item = this._data[index];
|
||
|
if (!item) return;
|
||
|
this.drawGold(item, index);
|
||
|
this.drawDrop(item, index);
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.drawGold = function (item, index) {
|
||
|
if (item !== "gold") return;
|
||
|
var rect = this.itemRect(index);
|
||
|
rect.width -= this.textPadding();
|
||
|
var value = BattleManager._rewards.gold;
|
||
|
var currency = TextManager.currencyUnit;
|
||
|
this.drawCurrencyValue(value, currency, rect.x, rect.y, rect.width);
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.drawDrop = function (item, index) {
|
||
|
if (!DataManager.isItem(item) && !DataManager.isWeapon(item) && !DataManager.isArmor(item)) return;
|
||
|
var rect = this.itemRect(index);
|
||
|
rect.width -= this.textPadding();
|
||
|
this.drawItemName(item, rect.x, rect.y, rect.width);
|
||
|
this.drawItemNumber(item, rect.x, rect.y, rect.width);
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.drawItemNumber = function (item, x, y, width) {
|
||
|
if (!this.needsNumber()) return;
|
||
|
var numItems = Yanfly.Util.toGroup(this.numItems(item));
|
||
|
var size = Yanfly.Param.ItemQuantitySize || 28;
|
||
|
this.contents.fontSize = size;
|
||
|
this.drawText("\u00d7" + numItems, x, y, width, "right");
|
||
|
this.resetFontSettings();
|
||
|
};
|
||
|
|
||
|
Window_VictoryDrop.prototype.numItems = function (item) {
|
||
|
if (DataManager.isItem(item)) {
|
||
|
return Yanfly.Util.getCount(item.id, this._dropItems);
|
||
|
}
|
||
|
if (DataManager.isWeapon(item)) {
|
||
|
return Yanfly.Util.getCount(item.id, this._dropWeapons);
|
||
|
}
|
||
|
if (DataManager.isArmor(item)) {
|
||
|
return Yanfly.Util.getCount(item.id, this._dropArmors);
|
||
|
}
|
||
|
return 0;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Scene_Battle
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.VA.Scene_Battle_update = Scene_Battle.prototype.update;
|
||
|
Scene_Battle.prototype.update = function () {
|
||
|
Yanfly.VA.Scene_Battle_update.call(this);
|
||
|
this.updateVictoryAftermath();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.processNextVictoryStep = function () {
|
||
|
var step = this._victorySteps.shift();
|
||
|
if (step) {
|
||
|
this.processVictoryStep(step.toUpperCase());
|
||
|
} else {
|
||
|
this.processVictoryFinish();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.processVictoryStep = function (step) {
|
||
|
this._victoryStep = step;
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.processVictoryFinish = function () {
|
||
|
this._victoryTitleWindow.close();
|
||
|
BattleManager.processVictoryFinish();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.isVictoryStep = function (value) {
|
||
|
return this._victoryStep && this._victoryStep === value;
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.updateVictoryAftermath = function () {
|
||
|
if (!BattleManager.isVictoryPhase()) return;
|
||
|
if (!BattleManager.isFinishedVictoryCheer()) return;
|
||
|
this.activateVictoryStep();
|
||
|
this.updateVictorySteps();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.activateVictoryStep = function () {
|
||
|
if (this._activateVictoryStep) return;
|
||
|
this._activateVictoryStep = true;
|
||
|
this.createVictoryTitle();
|
||
|
this._victorySteps = this.createVictorySteps();
|
||
|
this.createVictorySteps();
|
||
|
this.processNextVictoryStep();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.createVictorySteps = function () {
|
||
|
var steps = Yanfly.Param.VAOrder.split(" ");
|
||
|
var array = [];
|
||
|
for (var i = 0; i < steps.length; ++i) {
|
||
|
var step = steps[i];
|
||
|
if (step.toUpperCase() === "CUSTOM") {
|
||
|
array = this.addCustomVictorySteps(array);
|
||
|
} else {
|
||
|
array.push(step.toUpperCase());
|
||
|
}
|
||
|
}
|
||
|
return array;
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.addCustomVictorySteps = function (array) {
|
||
|
return array;
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.updateVictorySteps = function () {
|
||
|
if (this.isVictoryStep("EXP")) this.updateVictoryExp();
|
||
|
if (this.isVictoryStep("DROPS")) this.updateVictoryDrops();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.updateVictoryExp = function () {
|
||
|
if (!this._victoryExpWindow) {
|
||
|
this.createVictoryExp();
|
||
|
} else if (this._victoryExpWindow.isReady()) {
|
||
|
if (this.victoryTriggerContinue()) this.finishVictoryExp();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.createVictoryTitle = function () {
|
||
|
this._statusWindow.hide();
|
||
|
this._logWindow.hide();
|
||
|
this._victoryTitleWindow = new Window_VictoryTitle();
|
||
|
this.addWindow(this._victoryTitleWindow);
|
||
|
this._victoryTitleWindow.open();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.createVictoryExp = function () {
|
||
|
this._victoryTitleWindow.refresh(Yanfly.Param.VABattleResults);
|
||
|
this._victoryExpWindow = new Window_VictoryExp();
|
||
|
this.addWindow(this._victoryExpWindow);
|
||
|
this._victoryExpWindow.open();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.finishVictoryExp = function () {
|
||
|
SoundManager.playOk();
|
||
|
this._victoryExpWindow.close();
|
||
|
this.processNextVictoryStep();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.updateVictoryDrops = function () {
|
||
|
if (!this._victoryDropWindow) {
|
||
|
this.createVictoryDrop();
|
||
|
} else if (this._victoryDropWindow.isOpen()) {
|
||
|
if (this.victoryTriggerContinue()) this.finishVictoryDrop();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.createVictoryDrop = function () {
|
||
|
this._victoryTitleWindow.refresh(Yanfly.Param.VABattleDrops);
|
||
|
this._victoryDropWindow = new Window_VictoryDrop(this._victoryTitleWindow);
|
||
|
this.addWindow(this._victoryDropWindow);
|
||
|
this._victoryDropWindow.open();
|
||
|
this._victoryDropWindow.activate();
|
||
|
this._victoryDropWindow.select(0);
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.finishVictoryDrop = function () {
|
||
|
SoundManager.playOk();
|
||
|
this._victoryDropWindow.close();
|
||
|
this.processNextVictoryStep();
|
||
|
};
|
||
|
|
||
|
Scene_Battle.prototype.victoryTriggerContinue = function () {
|
||
|
if (Input.isRepeated("ok") || TouchInput.isRepeated()) return true;
|
||
|
if (Input.isRepeated("cancel")) return true;
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// Utilities
|
||
|
//=============================================================================
|
||
|
|
||
|
Yanfly.Util = Yanfly.Util || {};
|
||
|
|
||
|
if (!Yanfly.Util.toGroup) {
|
||
|
Yanfly.Util.toGroup = function (inVal) {
|
||
|
return inVal;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
Yanfly.Util.getCount = function (value, arr) {
|
||
|
var occur = 0;
|
||
|
for (var i = 0; i < arr.length; i++) {
|
||
|
if (arr[i] === value) occur++;
|
||
|
}
|
||
|
return occur;
|
||
|
};
|
||
|
|
||
|
//=============================================================================
|
||
|
// End of File
|
||
|
//=============================================================================
|