/*---------------------------------------------------------------------------* * 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個にする * * * * または * * <最大所持数: 15> * * ▼ 例2)上限を【変数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 ); })(); })();