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

546 lines
16 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.

//=============================================================================
// TMVplugin - ステータス表示拡張
// 作者: tomoaky (http://hikimoki.sakura.ne.jp/)
// Version: 1.0
// 最終更新日: 2016/02/26
//=============================================================================
/*:
* @plugindesc ステータスシーンに表示するパラメータを追加します。
*
* @author tomoaky (http://hikimoki.sakura.ne.jp/)
*
* @param descriptionKeyCode
* @desc 表示切替ボタンとして使うキー
* 初期値: 65 65 = A, 66 = B, 67 = C, ...
* @default 65
*
* @param useOkKey
* @desc 表示切替ボタンとして決定キーEnter, Z など)を使う
* 初期値: 1 0 で使わない)
* @default 1
*
* @param horzLineHeight
* @desc 横線の余白も含めた高さ
* 初期値: 28
* @default 28
*
* @param xparamText
* @desc 追加能力値の項目名(カンマ区切りで10項目)
* 初期値: 命中,回避,会心,会心回避,魔法回避,魔法反射,反撃,…
* @default 命中,回避,会心,会心回避,魔法回避,魔法反射,反撃,HP再生,MP再生,TP再生
*
* @param sparamText
* @desc 特殊能力値の項目名(カンマ区切りで10項目)
* 初期値: 狙われ率,防御効果,回復効果,薬の知識,MP消費,…
* @default 狙われ率,防御効果,回復効果,薬の知識,MP消費,TPチャージ,,,床ダメージ,経験値獲得
*
* @param paramNameX
* @desc 通常能力値名の表示X座標
* 初期値: 6
* @default 6
*
* @param paramNameWidth
* @desc 通常能力値名の表示幅
* 初期値: 96
* @default 96
*
* @param paramX
* @desc 通常能力値の表示X座標
* 初期値: 112
* @default 112
*
* @param paramWidth
* @desc 通常能力値の表示幅
* 初期値: 60
* @default 60
*
* @param xparamNameX
* @desc 追加能力値名の表示X座標
* 初期値: 204
* @default 204
*
* @param xparamNameWidth
* @desc 追加能力値名の表示幅
* 初期値: 120
* @default 120
*
* @param xparamX
* @desc 追加能力値の表示X座標
* 初期値: 330
* @default 330
*
* @param xparamWidth
* @desc 追加能力値の表示幅
* 初期値: 60
* @default 60
*
* @param xparamFixed
* @desc 追加能力値の小数点以下桁数
* 初期値: 0
* @default 0
*
* @param sparamNameX
* @desc 特殊能力値名の表示X座標
* 初期値: 432
* @default 432
*
* @param sparamNameWidth
* @desc 特殊能力値名の表示幅
* 初期値: 172
* @default 172
*
* @param sparamX
* @desc 特殊能力値の表示X座標
* 初期値: 610
* @default 610
*
* @param sparamWidth
* @desc 特殊能力値の表示幅
* 初期値: 80
* @default 80
*
* @param sparamFixed
* @desc 特殊能力値の小数点以下桁数
* 初期値: 0
* @default 0
*
* @param elementResistX
* @desc 属性有効度の表示X座標
* 初期値: 6
* @default 6
*
* @param elementResistWidth
* @desc 属性有効度の表示幅
* 初期値: 160
* @default 160
*
* @param elementResistIds
* @desc 表示する属性有効度
* 初期値: 2,3,4,5,6,7,8,9
* @default 2,3,4,5,6,7,8,9
*
* @param elementResistIconIds
* @desc 表示する属性有効度のアイコン番号
* 初期値: 64,65,66,67,68,69,70,71
* @default 64,65,66,67,68,69,70,71
*
* @param pdrIconId
* @desc 物理ダメージ率のアイコン番号( 0 で非表示)
* 初期値: 77
* @default 77
*
* @param mdrIconId
* @desc 魔法ダメージ率のアイコン番号( 0 で非表示)
* 初期値: 79
* @default 79
*
* @param stateResistX
* @desc ステート有効度の表示X座標
* 初期値: 204
* @default 204
*
* @param stateResistWidth
* @desc ステート有効度の表示幅
* 初期値: 160
* @default 160
*
* @param stateResistIds
* @desc 表示するステート有効度
* 初期値: 4,5,6,7,8,9,10
* @default 4,5,6,7,8,9,10
*
* @param resistFixed
* @desc 有効度の小数点以下桁数
* 初期値: 1
* @default 1
*
* @param paramBackGround
* @desc パラメータの背景を暗くするかどうか
* 初期値: 1 ( 0 で無効)
* @default 1
*
* @param paramBackGroundOpacity
* @desc パラメータの背景の暗さ( 1 255
* 初期値: 160
* @default 160
*
* @param useNicknameEx
* @desc 二つ名と職業をまとめて表示する
* 初期値: 0 1 で有効)
* @default 0
*
* @param useMaxLevel
* @desc 最大レベルを表示するかどうか
* 初期値: 1 0 で無効)
* @default 1
*
* @param maxLevelColor
* @desc レベルが最大の場合の文字色番号
* 初期値: 5
* @default 5
*
* @help
* 使い方:
* ステータスシーンでAキーを押す、あるいは左クリック(シングルタップ)で
* 表示するパラメータを切り替えることができます。
*
* useNicknameEx を 1 に設定することで二つ名と職業をセットで表示できます。
* 二つ名を '髪殺しの' とか '邪竜屠りの' とかにすることで、同じ職業でも
* キャラごとの違いを際立たせることができるかもしれません。
*
* プラグインコマンドはありません。
*
*/
var Imported = Imported || {};
Imported.TMStatusMenuEx = true;
(function () {
var parameters = PluginManager.parameters("TMStatusMenuEx");
Input.keyMapper[+parameters[""]] = "";
var useOkButton = parameters[""] === "" ? true : false;
var horzLineHeight = +parameters["horzLineHeight"];
var xparamText = parameters["xparamText"].split(",");
var sparamText = parameters["sparamText"].split(",");
var paramNameX = +parameters["paramNameX"];
var paramNameWidth = +parameters["paramNameWidth"];
var paramX = +parameters["paramX"];
var paramWidth = +parameters["paramWidth"];
var xparamNameX = +parameters["xparamNameX"];
var xparamNameWidth = +parameters["xparamNameWidth"];
var xparamX = +parameters["xparamX"];
var xparamWidth = +parameters["xparamWidth"];
var xparamFixed = +parameters["xparamFixed"];
var sparamNameX = +parameters["sparamNameX"];
var sparamNameWidth = +parameters["sparamNameWidth"];
var sparamX = +parameters["sparamX"];
var sparamWidth = +parameters["sparamWidth"];
var sparamFixed = +parameters["sparamFixed"];
var elementResistX = +parameters["elementResistX"];
var elementResistWidth = +parameters["elementResistWidth"];
var elementResistIds = parameters["elementResistIds"].split(",");
var elementResistIconIds = parameters["elementResistIconIds"].split(",");
var pdrIconId = +parameters["pdrIconId"];
var mdrIconId = +parameters["mdrIconId"];
var stateResistX = +parameters["stateResistX"];
var stateResistWidth = +parameters["stateResistWidth"];
var stateResistIds = parameters["stateResistIds"].split(",");
var resistFixed = +parameters["resistFixed"];
var paramBackGround = parameters["paramBackGround"] === "1" ? true : false;
var paramBackGroundOpacity = +parameters["paramBackGroundOpacity"];
var useNicknameEx = parameters["useNicknameEx"] === "1" ? true : false;
var useMaxLevel = parameters["useMaxLevel"] === "1" ? true : false;
var maxLevelColor = +parameters["maxLevelColor"];
//-----------------------------------------------------------------------------
// Window_Base
//
Window_Base.prototype.levelWidth = function () {
return 160;
};
var _Window_Base_drawActorLevel = Window_Base.prototype.drawActorLevel;
Window_Base.prototype.drawActorLevel = function (actor, x, y) {
if (useMaxLevel) {
this.changeTextColor(this.systemColor());
this.drawText(TextManager.levelA, x, y, 48);
var level = actor.level;
var maxLevel = actor.maxLevel();
var color1 =
level === maxLevel ? this.textColor(maxLevelColor) : this.normalColor();
this.drawCurrentAndMax(
level,
maxLevel,
x,
y,
this.levelWidth(),
color1,
this.normalColor()
);
} else {
_Window_Base_drawActorLevel.call(this, actor, x, y);
}
};
var _Window_Base_drawActorSimpleStatus =
Window_Base.prototype.drawActorSimpleStatus;
Window_Base.prototype.drawActorSimpleStatus = function (actor, x, y, width) {
if (useNicknameEx) {
var lineHeight = this.lineHeight();
y -= lineHeight * 0.5 - 8;
this.contents.fontSize = 20;
var text = actor.nickname() + actor.currentClass().name;
this.contents.drawText(text, x, y, width, 20, "left");
this.resetFontSettings();
var x2 = x + 180;
y += 20;
var width2 = Math.min(200, width - 180 - this.textPadding());
this.drawActorName(actor, x + 20, y);
this.drawActorLevel(actor, x, y + lineHeight * 1);
this.drawActorIcons(actor, x, y + lineHeight * 2);
this.drawActorHp(actor, x2, y + lineHeight * 1, width2);
this.drawActorMp(actor, x2, y + lineHeight * 2, width2);
} else {
_Window_Base_drawActorSimpleStatus.call(this, actor, x, y, width);
}
};
//-----------------------------------------------------------------------------
// Window_Status
//
Window_Status.prototype.levelWidth = function () {
return 186;
};
var _Window_Status_initialize = Window_Status.prototype.initialize;
Window_Status.prototype.initialize = function () {
this._parameterMode = 0;
_Window_Status_initialize.call(this);
};
Window_Status.prototype.refresh = function () {
this.contents.clear();
if (this._actor) {
var lineHeight = this.lineHeight();
var y = 0;
y = this.drawBlock1(y);
y = this.drawHorzLine(y);
if (this._parameterMode === 0) {
y = this.drawBlock2(y);
y = this.drawHorzLine(y);
this.drawBlock3(y);
y = this.drawHorzLine(490);
} else {
this.drawBlock5(y);
}
y = this.contents.height - lineHeight * 2 - horzLineHeight;
y = this.drawHorzLine(700);
this.drawBlock4(y);
}
};
var _Window_Status_drawBlock1 = Window_Status.prototype.drawBlock1;
Window_Status.prototype.drawBlock1 = function (y) {
if (useNicknameEx) {
this.drawActorName(this._actor, 6, y);
this.resetTextColor();
var x = this.textWidth(this._actor.name()) + 6;
var text = this._actor.nickname() + this._actor.currentClass().name;
this.drawText(
text,
x,
y,
this.contents.width - x - this.textPadding(),
"right"
);
} else {
_Window_Status_drawBlock1.call(this, y);
}
return y + this.lineHeight() * 1;
};
var _Window_Status_drawBlock2 = Window_Status.prototype.drawBlock2;
Window_Status.prototype.drawBlock2 = function (y) {
_Window_Status_drawBlock2.call(this, y);
return y + this.lineHeight() * 4;
};
Window_Status.prototype.drawBlock5 = function (y) {
this.drawElementResists(y);
this.drawStateResists(y);
this.drawSparams(y);
};
Window_Status.prototype.drawHorzLine = function (y) {
this.contents.paintOpacity = 48;
this.contents.fillRect(
0,
y + horzLineHeight / 2 - 1,
this.contentsWidth(),
2,
this.lineColor()
);
this.contents.paintOpacity = 255;
return y + horzLineHeight;
};
Window_Status.prototype.drawParamBackGround = function (x, y, width) {
this.contents.paintOpacity = paramBackGroundOpacity;
this.contents.fillRect(
x,
y + this.lineHeight() / 2,
width,
this.lineHeight() / 2,
this.gaugeBackColor()
);
this.contents.paintOpacity = 255;
};
Window_Status.prototype.drawParameters = function (x, y) {
this.drawParams(y);
this.drawXparams(y);
this.drawElementResists(y);
this.drawStateResists(y);
};
Window_Status.prototype.drawParams = function (y) {
var x = paramNameX;
var w = paramNameWidth;
var x2 = paramX;
var w2 = paramWidth;
var lineHeight = this.lineHeight();
for (var i = 0; i < 6; i++) {
var paramId = i + 2;
if (TextManager.param(paramId)) {
if (paramBackGround) this.drawParamBackGround(x, y, x2 + w2 - x);
this.changeTextColor(this.systemColor());
this.drawText(TextManager.param(paramId), x, y, w);
this.resetTextColor();
this.drawText(this._actor.param(paramId), x2, y, w2, "right");
y += lineHeight;
}
}
};
Window_Status.prototype.drawXparams = function (y) {
var x = xparamNameX;
var w = xparamNameWidth;
var x2 = xparamX;
var w2 = xparamWidth;
var lineHeight = this.lineHeight();
for (var i = 0; i < 7; i++) {
if (xparamText[i]) {
if (paramBackGround) this.drawParamBackGround(x, y, x2 + w2 - x);
this.changeTextColor(this.systemColor());
this.drawText(xparamText[i], x, y, w);
this.resetTextColor();
var value = this._actor.xparam(i) * 100;
this.drawText(value.toFixed(xparamFixed), x2, y, w2, "right");
y += lineHeight;
}
}
};
Window_Status.prototype.drawSparams = function (y) {
var x = sparamNameX;
var w = sparamNameWidth;
var x2 = sparamX;
var w2 = sparamWidth;
var lineHeight = this.lineHeight();
for (var i = 7; i < 10; i++) {
if (xparamText[i]) {
if (paramBackGround) this.drawParamBackGround(x, y, x2 + w2 - x);
this.changeTextColor(this.systemColor());
this.drawText(xparamText[i], x, y, w);
this.resetTextColor();
var value = this._actor.xparam(i) * 100;
this.drawText(value.toFixed(xparamFixed) + "%", x2, y, w2, "right");
y += lineHeight;
}
}
for (var i = 0; i < 10; i++) {
if (sparamText[i]) {
if (paramBackGround) this.drawParamBackGround(x, y, x2 + w2 - x);
this.changeTextColor(this.systemColor());
this.drawText(sparamText[i], x, y, w);
this.resetTextColor();
var value = this._actor.sparam(i) * 100;
this.drawText(value.toFixed(sparamFixed) + "%", x2, y, w2, "right");
y += lineHeight;
}
}
};
Window_Status.prototype.drawElementResists = function (y) {
var x = elementResistX * 71;
var w = elementResistWidth;
var lineHeight = this.lineHeight();
if (pdrIconId > 0) {
if (paramBackGround) this.drawParamBackGround(x, y, w);
this.drawIcon(pdrIconId, x, y);
var n = this._actor.pdr * 100;
this.drawText(
n.toFixed(resistFixed) + "%",
x + Window_Base._iconWidth,
y,
w - Window_Base._iconWidth,
"right"
);
y += lineHeight;
}
if (mdrIconId > 0) {
if (paramBackGround) this.drawParamBackGround(x, y, w);
this.drawIcon(mdrIconId, x, y);
var n = this._actor.mdr * 100;
this.drawText(
n.toFixed(resistFixed) + "%",
x + Window_Base._iconWidth,
y,
w - Window_Base._iconWidth,
"right"
);
y += lineHeight;
}
for (var i = 0; i < elementResistIds.length; i++) {
if (paramBackGround) this.drawParamBackGround(x, y, w);
var elementId = +elementResistIds[i];
this.drawIcon(elementResistIconIds[i], x, y);
var n = this._actor.elementRate(elementId) * 100;
this.drawText(
n.toFixed(resistFixed) + "%",
x + Window_Base._iconWidth,
y,
w - Window_Base._iconWidth,
"right"
);
y += lineHeight;
}
};
Window_Status.prototype.drawStateResists = function (y) {
var x = stateResistX * 3.1;
var w = stateResistWidth;
var lineHeight = this.lineHeight();
for (var i = 0; i < stateResistIds.length; i++) {
if (paramBackGround) this.drawParamBackGround(x, y, w);
var stateId = +stateResistIds[i];
this.drawIcon($dataStates[stateId].iconIndex, x, y);
var n = this._actor.stateRate(stateId) * 100;
if (this._actor.isStateResist(stateId)) n = 0;
this.drawText(
n.toFixed(resistFixed) + "%",
x + Window_Base._iconWidth,
y,
w - Window_Base._iconWidth,
"right"
);
y += lineHeight;
}
};
Window_Status.prototype.changeParameterMode = function () {
this._parameterMode = (this._parameterMode + 1) % 2;
this.refresh();
};
//-----------------------------------------------------------------------------
// Scene_Status
//
var _Scene_Status_update = Scene_Status.prototype.update;
Scene_Status.prototype.update = function () {
_Scene_Status_update.call(this);
if (
Input.isTriggered("description") ||
(useOkButton && Input.isTriggered("ok"))
) {
SoundManager.playOk();
this._statusWindow.changeParameterMode();
this._statusWindow.activate();
}
};
})();