brainwashing-school/js/plugins/TorigoyaMZ_MaxItems.js
2025-05-30 08:36:40 -05:00

117 lines
3.7 KiB
JavaScript
Raw Permalink 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.

/*---------------------------------------------------------------------------*
* TorigoyaMZ_MaxItems.js v.1.3.1
*---------------------------------------------------------------------------*
* 2021/07/05 22:08 (JST)
*---------------------------------------------------------------------------*
* Ruたん ( @ru_shalm )
* https://torigoya-plugin.rutan.dev
*---------------------------------------------------------------------------*/
/*:
* @target MZ
* @plugindesc アイテム上限数個別指定プラグイン (v.1.3.1)
* @author Ruたんru_shalm
* @license public domain
* @version 1.3.1
* @url https://raw.githubusercontent.com/rutan/torigoya-rpg-maker-plugin/gh-pages/TorigoyaMZ_MaxItems.js
* @help
* アイテム上限数個別指定プラグイン (v.1.3.1)
* https://torigoya-plugin.rutan.dev
*
* アイテムの所持できる上限を
* メモ欄で個別に設定できるようにします。
*
* ------------------------------------------------------------
* ■ メモの指定方法
* ------------------------------------------------------------
*
* 各アイテムのメモ欄に指定してください。
*
* ▼ 例1上限を15個にする
*
* <MaxItems: 15>
*
* または
*
* <最大所持数: 15>
*
* ▼ 例2上限を【変数1】で指定した数にする
*
* <MaxItems: v[1]>
*
* または
*
* <最大所持数: v[1]>
*
* @command adjustItems
* @text アイテム所持数の調整
* @desc 最大所持数を超えたアイテムがある場合に
* 上限を超えないようにアイテムを自動で減らします
*/
(function () {
'use strict';
const Torigoya = (window.Torigoya = window.Torigoya || {});
function getPluginName() {
const cs = document.currentScript;
return cs ? cs.src.split('/').pop().replace(/\.js$/, '') : 'TorigoyaMZ_MaxItems';
}
function readParameter() {
const parameter = PluginManager.parameters(getPluginName());
return {
version: '1.3.1',
};
}
Torigoya.MaxItems = {
name: getPluginName(),
parameter: readParameter(),
};
(() => {
// -------------------------------------------------------------------------
// Game_Party
const upstream_Game_Party_maxItems = Game_Party.prototype.maxItems;
Game_Party.prototype.maxItems = function (item) {
const meta = item.meta['MaxItems'] || item.meta['最大所持数'];
if (meta) {
const match = meta.match(/v\[(\d+)]/);
if (match) {
return $gameVariables.value(parseInt(match[1], 10));
} else {
return parseInt(meta, 10);
}
} else {
return upstream_Game_Party_maxItems.apply(this, arguments);
}
};
// アイテム全体の個数が上限に収まるように調整
Game_Party.prototype.torigoyaAdjustAllItemSize = function () {
this.items().forEach((item) => {
this._items[item.id] = this.numItems(item).clamp(0, this.maxItems(item));
});
this.weapons().forEach((item) => {
this._weapons[item.id] = this.numItems(item).clamp(0, this.maxItems(item));
});
this.armors().forEach((item) => {
this._armors[item.id] = this.numItems(item).clamp(0, this.maxItems(item));
});
};
// -------------------------------------------------------------------------
// プラグインコマンド
function commandAdjustItems() {
$gameParty.torigoyaAdjustAllItemSize();
}
PluginManager.registerCommand(Torigoya.MaxItems.name, 'adjustItems', commandAdjustItems);
})();
})();