142 lines
4.8 KiB
JavaScript
142 lines
4.8 KiB
JavaScript
//=============================================================================
|
|
// KeyItemNumber.js
|
|
//=============================================================================
|
|
|
|
/*:
|
|
* @plugindesc display on/off the number of key items.
|
|
* @author Sasuke KANNAZUKI
|
|
*
|
|
* @param KeyItem
|
|
* @desc whether display the number at menu window.
|
|
* 0:not display, 1:always display, 2:display only plural items
|
|
* @default 0
|
|
*
|
|
* @param MessageWindow
|
|
* @desc whether display the number at message window.
|
|
* 0:not display, 1:always display, 2:display only plural items
|
|
* @default 0
|
|
*
|
|
* @help
|
|
* Plugin Command:
|
|
* KeyItemNumber arg0 arg1
|
|
* arg0 must be a number 1, 2, 3, or 4
|
|
* 1:normal item, 2:important item, 3:hidden item A, 4:hidden item B.
|
|
* arg1 must be a number 0, 1, or 2
|
|
* 0:not display, 1:always display, 2:display only plural items
|
|
*
|
|
* if it's not defined, MessageWindow number is used.
|
|
* ex.
|
|
* KeyItemNumber 3 0 # item number won't be displayed at hidden item A list.
|
|
* KeyItemNumber 1 1 # item number will be displayed at normal item list.
|
|
*/
|
|
|
|
/*:ja
|
|
* @plugindesc 「大事なもの」の個数表示の設定
|
|
* @author 神無月サスケ
|
|
*
|
|
* @param KeyItem
|
|
* @desc メニューの「大事なもの」で個数を表示するか。
|
|
* 0:表示しない, 1:表示する, 2:複数アイテムのみ表示
|
|
* @default 0
|
|
*
|
|
* @param MessageWindow
|
|
* @desc イベントコマンド「アイテム選択の処理」で個数を表示するか。
|
|
* 0:表示しない, 1:表示する, 2:複数アイテムのみ表示
|
|
* @default 0
|
|
*
|
|
* @help
|
|
* プラグインコマンド:
|
|
* 「アイテム選択の処理」で種類ごとに分けたい場合に呼び出して下さい。
|
|
* KeyItemNumber arg0 arg1
|
|
* arg0 は 1, 2, 3, または 4 です。
|
|
* 1:通常アイテム, 2:大事なもの, 3:隠しアイテムA, 4:隠しアイテムB
|
|
* arg1 は 0, 1, または 2 です。
|
|
* 0:表示しない, 1:表示する, 2:複数アイテムのみ表示
|
|
*
|
|
* プラグインコマンドを呼び出さない場合、MessageWindow の設定になります。
|
|
* 例:
|
|
* KeyItemNumber 3 0 # 隠しアイテムA では 個数を表示しない
|
|
* KeyItemNumber 1 1 # 通常アイテムでは 個数を表示する
|
|
*/
|
|
|
|
(function () {
|
|
var parameters = PluginManager.parameters("KeyItemNumber");
|
|
var atKeyItem = Number(parameters["KeyItem"] || 0); // at Item scene
|
|
var atMsgWnd = Number(parameters["MessageWindow"] || 0); // at Event Command
|
|
|
|
var _Game_Interpreter_pluginCommand =
|
|
Game_Interpreter.prototype.pluginCommand;
|
|
Game_Interpreter.prototype.pluginCommand = function (command, args) {
|
|
_Game_Interpreter_pluginCommand.call(this, command, args);
|
|
if (command === "KeyItemNumber") {
|
|
var itypeId = args[0];
|
|
var status = args[1]; // rule of itemNumberDisplay
|
|
$gameSystem.keyItemNumber()[itypeId] = status;
|
|
}
|
|
};
|
|
|
|
//
|
|
// an array definition at $gameSystem
|
|
//
|
|
var _Game_System_initialize = Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function () {
|
|
_Game_System_initialize.call(this);
|
|
this.initKeyNumber();
|
|
};
|
|
|
|
Game_System.prototype.initKeyNumber = function () {
|
|
this._keyItemNumber = [null, null, null, null, null];
|
|
};
|
|
|
|
Game_System.prototype.keyItemNumber = function () {
|
|
if (!this._keyItemNumber) {
|
|
this.initKeyNumber();
|
|
}
|
|
return this._keyItemNumber;
|
|
};
|
|
|
|
//
|
|
// at item scene, whether display item number or not
|
|
//
|
|
var _Window_ItemList_needsNumber = Window_ItemList.prototype.needsNumber;
|
|
Window_ItemList.prototype.needsNumber = function () {
|
|
var original = _Window_ItemList_needsNumber.call(this);
|
|
if (this._category !== "keyItem") {
|
|
return original;
|
|
}
|
|
return atKeyItem != 0;
|
|
};
|
|
|
|
//
|
|
// current display mode of EventItem window.
|
|
//
|
|
Window_EventItem.prototype.currentDispMode = function () {
|
|
var itype = $gameMessage.itemChoiceItypeId();
|
|
return Number($gameSystem.keyItemNumber()[itype] || atMsgWnd);
|
|
};
|
|
|
|
//
|
|
// at message window, whether display item number or not
|
|
//
|
|
Window_EventItem.prototype.needsNumber = function () {
|
|
return this.currentDispMode() != 0;
|
|
};
|
|
|
|
//
|
|
// draw item (includes behavior if item number >= 2)
|
|
//
|
|
var _Window_ItemList_drawItemNumber =
|
|
Window_ItemList.prototype.drawItemNumber;
|
|
Window_ItemList.prototype.drawItemNumber = function (item, x, y, width) {
|
|
var isEvent = this instanceof Window_EventItem;
|
|
var status = isEvent ? this.currentDispMode() : atKeyItem;
|
|
if (
|
|
(this._category == "keyItem" || isEvent) &&
|
|
status == 2 &&
|
|
$gameParty.numItems(item) <= 1
|
|
) {
|
|
return; // return without drawing number
|
|
}
|
|
_Window_ItemList_drawItemNumber.call(this, item, x, y, width);
|
|
};
|
|
})();
|