546 lines
16 KiB
JavaScript
546 lines
16 KiB
JavaScript
//=============================================================================
|
||
// 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();
|
||
}
|
||
};
|
||
})();
|