//============================================================================== // dsGainLpResult01.js // Copyright (c) 2015 - 2019 DOURAKU // Released under the MIT License. // http://opensource.org/licenses/mit-license.php //============================================================================== /*: * @plugindesc LP獲得リザルト画面01プラグイン ver1.0.3 * @author 道楽 * * @param Left Side Width * @desc 左側の表示領域の横幅 * @default 260 * * @param Skill Disp Time * @desc スキル習得の表示時間 * (Gauge Ticksの影響を受ける) * @default 10 * * @help * YEP_VictoryAftermath.js導入時に表示される、 * 戦闘結果画面に獲得LP量を表示するプラグインです。 * 戦闘で獲得した経験値やLP、習得したスキルを1つのウィンドウで表示します。 * * ※注意事項 * 本プラグインの導入には以下のプラグインの導入が必要です。 * また、必ず本プラグインより上の列に配置してください。 * ・YEP_VictoryAftermath.js * ・dsEquipmentSkillLearning.js */ var Imported = Imported || {}; Imported.dsGainLpResult01 = true; (function (exports) { 'use strict'; exports.Param = (function() { var ret = {}; var parameters = PluginManager.parameters('dsGainLpResult01'); ret.LeftSideWidth = Number(parameters['Left Side Width']); ret.SkillDispTime = Number(parameters['Skill Disp Time']); return ret; })(); //-------------------------------------------------------------------------- /** Window_VictoryExp */ var _Window_VictoryExp_initialize = Window_VictoryExp.prototype.initialize; Window_VictoryExp.prototype.initialize = function() { _Window_VictoryExp_initialize.call(this); this.setupMaxSkills(); }; Window_VictoryExp.prototype.setupMaxSkills = function(index) { this._maxSkills = 0; $gameParty.battleMembers().forEach(function(actor) { var skillNum = actor._victorySkills.length; skillNum += actor.victoryLpSkills().length; this._maxSkills = Math.max(skillNum, this._maxSkills); }, this); }; Window_VictoryExp.prototype.updateTicks = function() { var tickMax = Yanfly.Param.VAGaugeTicks + exports.Param.SkillDispTime * this._maxSkills; if ( this._tick >= tickMax ) { return; } if ( Graphics.frameCount % 4 !== 0 ) { return; } if ( Input.isPressed('ok') || TouchInput.isPressed() ) { this._tick = tickMax; } else { this._tick += 1; } this.drawAllGauges(); }; 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 + this.standardPadding() * 2; return rect; }; var _Window_VictoryExp_drawActorGauge = Window_VictoryExp.prototype.drawActorGauge; Window_VictoryExp.prototype.drawActorGauge = function(actor, index) { _Window_VictoryExp_drawActorGauge.call(this, actor, index); var rect = this.gaugeRect(index); this.drawLpGained(actor, rect); this.drawGainedSkills(actor, rect); }; Window_VictoryExp.prototype.actorExpRate = function(actor) { var actorLv = actor._preVictoryLv; if ( actorLv === actor.maxLevel() ) { return 1.0; } var tick = Math.min(this._tick, Yanfly.Param.VAGaugeTicks); var bonusExp = 1.0 * actor._expGained * 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 wx = rect.x + exports.Param.LeftSideWidth + 2; var wy = rect.y + this.lineHeight(); var ww = rect.width - exports.Param.LeftSideWidth; 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); } this.drawGauge(wx, wy, ww, rate, color1, color2); }; Window_VictoryExp.prototype.drawExpValues = function(actor, rect) { var wx = rect.x + exports.Param.LeftSideWidth + 2; var wy = rect.y + this.lineHeight(); var ww = rect.width - exports.Param.LeftSideWidth - 4; var actorLv = actor._preVictoryLv; var tick = Math.min(this._tick, Yanfly.Param.VAGaugeTicks); var bonusExp = 1.0 * actor._expGained * 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, wx, wy, ww, 'right'); }; Window_VictoryExp.prototype.drawExpGained = function(actor, rect) { var wx = rect.x + 2; var wy = rect.y + this.lineHeight() * 1; var ww = exports.Param.LeftSideWidth - 4; if ( wy < rect.y + rect.height ) { var tick = Math.min(this._tick, Yanfly.Param.VAGaugeTicks); var bonusExp = 1.0 * actor._expGained * tick / Yanfly.Param.VAGaugeTicks; var expParse = Yanfly.Util.toGroup(parseInt(bonusExp)); var expText = Yanfly.Param.VAGainedExpfmt.format(expParse); this.changeTextColor(this.systemColor()); this.drawText(Yanfly.Param.VAGainedExp, wx, wy, ww, 'left'); this.changeTextColor(this.normalColor()); this.drawText(expText, wx, wy, ww, 'right'); } }; Window_VictoryExp.prototype.drawLpGained = function(actor, rect) { var value = actor.battleLp(); var text = dsEquipmentSkillLearning.Param.LpAftermathFormat.format(value, dsEquipmentSkillLearning.Param.Lp); var textWidth = this.textWidthEx(text); var wx = rect.x; var wy = rect.y + this.lineHeight() * 2; var ww = exports.Param.LeftSideWidth - 4; this.changeTextColor(this.systemColor()); this.drawText(dsEquipmentSkillLearning.Param.LpAftermathEarned, wx + 2, wy, ww - 4, 'left'); this.resetTextColor(); this.drawTextEx(text, wx + ww - textWidth, wy); }; Window_VictoryExp.prototype.drawGainedSkills = function(actor, rect) { var skills = actor._victorySkills.concat(actor.victoryLpSkills()); if ( skills.length <= 0 ) { return; } if ( !this.meetDrawGainedSkillsCondition(actor) ) { return; } var wx = rect.x + exports.Param.LeftSideWidth + 2; var wy = rect.y + this.lineHeight() * 2; var ww = rect.width - exports.Param.LeftSideWidth - 4; var dispIndex = Math.floor((this._tick - Yanfly.Param.VAGaugeTicks) / exports.Param.SkillDispTime); dispIndex = Math.min(dispIndex, skills.length - 1); var skillId = skills[dispIndex]; var skill = $dataSkills[skillId]; if ( skill ) { var text = '\\i[' + skill.iconIndex + ']' + skill.name; text = TextManager.obtainSkill.format(text); this.drawTextEx(text, wx, wy); } }; Window_VictoryExp.prototype.meetDrawGainedSkillsCondition = function(actor) { return (this._tick >= Yanfly.Param.VAGaugeTicks) ? true : false; }; Window_VictoryExp.prototype.isReady = function() { var tickMax = Yanfly.Param.VAGaugeTicks + exports.Param.SkillDispTime * this._maxSkills; return this._tick >= tickMax; }; //-------------------------------------------------------------------------- /** Scene_Battle */ var _Scene_Battle_addCustomVictorySteps = Scene_Battle.prototype.addCustomVictorySteps; Scene_Battle.prototype.addCustomVictorySteps = function(array) { array = _Scene_Battle_addCustomVictorySteps.call(this, array); var stepLpIdx = array.indexOf("LP"); if ( stepLpIdx >= 0 ) { array.splice(stepLpIdx, 1); } return array; }; }((this.dsGainLpResult01 = this.dsGainLpResult01 || {})));