878 lines
25 KiB
JavaScript
878 lines
25 KiB
JavaScript
/*
|
||
* --------------------------------------------------
|
||
* MNKR_SupponShopStockMZ.js
|
||
* Ver.0.0.7
|
||
* Copyright (c) 2020 Munokura
|
||
* This software is released under the MIT license.
|
||
* http://opensource.org/licenses/mit-license.php
|
||
* --------------------------------------------------
|
||
*/
|
||
|
||
//============================================================================
|
||
// SupponShopStock.js
|
||
//============================================================================
|
||
|
||
/*:
|
||
* @target MZ
|
||
* @url https://raw.githubusercontent.com/munokura/MNKR-MZ-plugins/master/MNKR_SupponShopStockMZ.js
|
||
*
|
||
* @plugindesc 在庫システムを有するお店を設定します。
|
||
* @author Suppon (改変 munokura)
|
||
*
|
||
* @help
|
||
* 以下の機能をプラグインコマンドで使用してください。
|
||
*
|
||
* - ショップの作成
|
||
* - アイテムの追加
|
||
* - 武器の追加
|
||
* - 防具の追加
|
||
* - アイテムの削除
|
||
* - 武器の削除
|
||
* - 防具の削除
|
||
* - ショップの起動
|
||
* - ショップの削除
|
||
* - 変数管理しないアイテムの在庫数を、指定して変数に代入
|
||
*
|
||
*
|
||
* このプラグインについて
|
||
* RPGツクールMV用に作成されたプラグインをMZ用に移植したものです。
|
||
* お問い合わせは改変者へお願いいたします。
|
||
*
|
||
* 利用規約:
|
||
* MITライセンスです。
|
||
* https://licenses.opensource.jp/MIT/MIT.html
|
||
* 作者に無断で改変、再配布が可能で、
|
||
* 利用形態(商用、18禁利用等)についても制限はありません。
|
||
*
|
||
*
|
||
* @param Label of stock Number
|
||
* @text 在庫数の表記
|
||
* @desc 在庫数の表記を設定します
|
||
* @default 在庫数
|
||
*
|
||
* @param Label of sold out
|
||
* @text 売り切れの表記
|
||
* @desc 売り切れの表記を設定します
|
||
* @default 売り切れ
|
||
*
|
||
* @param Display option
|
||
* @text 在庫数を表示
|
||
* @type boolean
|
||
* @on 在庫数を表示
|
||
* @off 在庫数を非表示
|
||
* @desc true にすると在庫数が、持っている数の横に表示されます。
|
||
* @default false
|
||
*
|
||
* @param Display option space
|
||
* @text オプション表示スペース
|
||
* @desc 持っている数と在庫数の表示スペースです。
|
||
* @default 12
|
||
*
|
||
*
|
||
* @command makeShop
|
||
* @text ショップ作成
|
||
* @desc ショップを作成します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg shopType
|
||
* @text ショップタイプ
|
||
* @desc ショップタイプの指定。
|
||
* @type select
|
||
* @option 購買専門(売却不可)
|
||
* @value 0
|
||
* @option 購買、売却可能
|
||
* @value 1
|
||
* @option 購買、売却可能、売却品が商品に追加
|
||
* @value 2
|
||
* @default 2
|
||
*
|
||
*
|
||
* @command addItem
|
||
* @text アイテム追加
|
||
* @desc ショップにアイテムを追加します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg itemId
|
||
* @text 追加アイテム
|
||
* @desc 追加するアイテムのIDです。
|
||
* @type item
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 在庫の変数ID
|
||
* @desc 在庫の個数を割り当てる変数のIDです。-1にする(テキストタブ指定)と変数は使わず、在庫は内部のデータで処理されます。
|
||
* @type variable
|
||
* @default -1
|
||
*
|
||
* @arg stock
|
||
* @text 在庫数
|
||
* @desc 在庫数の設定値です。
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command addWeapon
|
||
* @text 武器追加
|
||
* @desc ショップに武器を追加します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg weaponId
|
||
* @text 追加武器
|
||
* @desc 追加する武器のIDです。
|
||
* @type weapon
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 在庫の変数ID
|
||
* @desc 在庫の個数を割り当てる変数のIDです。-1にする(テキストタブ指定)と変数は使わず、在庫は内部のデータで処理されます。
|
||
* @type variable
|
||
* @default -1
|
||
*
|
||
* @arg stock
|
||
* @text 在庫数
|
||
* @desc 在庫数の設定値です。
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command addArmor
|
||
* @text 防具追加
|
||
* @desc ショップに防具を追加します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg armorId
|
||
* @text 追加防具
|
||
* @desc 追加する防具のIDです。
|
||
* @type armor
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 在庫の変数ID
|
||
* @desc 在庫の個数を割り当てる変数のIDです。-1にする(テキストタブ指定)と変数は使わず、在庫は内部のデータで処理されます。
|
||
* @type variable
|
||
* @default -1
|
||
*
|
||
* @arg stock
|
||
* @text 在庫数
|
||
* @desc 在庫数の設定値です。
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command removeItem
|
||
* @text アイテム削除
|
||
* @desc ショップからアイテムを削除します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg itemId
|
||
* @text 削除アイテム
|
||
* @desc 削除するアイテムのIDです。
|
||
* @type item
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command removeWeapon
|
||
* @text 武器削除
|
||
* @desc ショップから武器を削除します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg weaponId
|
||
* @text 削除武器
|
||
* @desc 削除する武器のIDです。
|
||
* @type weapon
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command removeArmor
|
||
* @text 防具削除
|
||
* @desc ショップから防具を削除します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg armorId
|
||
* @text 削除防具
|
||
* @desc 削除する防具のIDです。
|
||
* @type armor
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command openShop
|
||
* @text ショップを開く
|
||
* @desc ショップを開きます。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg sort
|
||
* @text ソートオプション
|
||
* @desc 購買時のソートオプションです。
|
||
* @type select
|
||
* @option 追加した順
|
||
* @value 0
|
||
* @option アイテムID順、武器ID順、防具ID順
|
||
* @value 1
|
||
* @option カテゴリー選択中でID順
|
||
* @value 2
|
||
* @default 2
|
||
*
|
||
*
|
||
* @command deleteShop
|
||
* @text ショップを削除
|
||
* @desc ショップを削除します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
*
|
||
* @command getNumItem
|
||
* @text 在庫アイテム数取得
|
||
* @desc 在庫アイテム数を変数に代入します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg itemId
|
||
* @text アイテムID
|
||
* @desc 取得するアイテムのIDです。
|
||
* @type item
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 変数ID
|
||
* @desc 在庫の個数を代入する変数のIDです。
|
||
* @type variable
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command getNumWeapon
|
||
* @text 在庫武器数取得
|
||
* @desc 在庫武器数を変数に代入します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg weaponId
|
||
* @text 武器ID
|
||
* @desc 取得する武器のIDです。
|
||
* @type weapon
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 変数ID
|
||
* @desc 在庫の個数を代入する変数のIDです。
|
||
* @type variable
|
||
* @default 1
|
||
*
|
||
*
|
||
* @command getNumArmor
|
||
* @text 在庫防具数取得
|
||
* @desc 在庫防具数を変数に代入します。
|
||
*
|
||
* @arg shopName
|
||
* @text ショップの名前
|
||
* @desc ショップの名前です。数値でも構いません。
|
||
* @default shop1
|
||
*
|
||
* @arg armorId
|
||
* @text 防具ID
|
||
* @desc 取得する防具のIDです。
|
||
* @type armor
|
||
* @default 1
|
||
*
|
||
* @arg variableId
|
||
* @text 変数ID
|
||
* @desc 在庫の個数を代入する変数のIDです。
|
||
* @type variable
|
||
* @default 1
|
||
*
|
||
*/
|
||
|
||
(function () {
|
||
"use strict";
|
||
|
||
const pluginName = document.currentScript.src
|
||
.split("/")
|
||
.pop()
|
||
.replace(/\.js$/, "");
|
||
|
||
var parameters = PluginManager.parameters(pluginName);
|
||
var StockLabel = String(parameters["Label of stock Number"] || "在庫数");
|
||
var SoldOutLabel = String(parameters["Label of sold out"] || "売り切れ");
|
||
var DisplayOption1 = parameters["Display option"] === "true";
|
||
var Option1Space = Number(parameters["Display option space"]);
|
||
|
||
PluginManager.registerCommand(pluginName, "makeShop", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
$gameSystem.supponSSmakeShop(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "addItem", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 0);
|
||
$gameSystem.supponSSaddGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "addWeapon", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 1);
|
||
$gameSystem.supponSSaddGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "addArmor", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 2);
|
||
$gameSystem.supponSSaddGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "removeItem", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 0);
|
||
$gameSystem.supponSSremoveGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "removeWeapon", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 1);
|
||
$gameSystem.supponSSremoveGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "removeArmor", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 2);
|
||
$gameSystem.supponSSremoveGoods(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "deleteShop", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
$gameSystem.supponSSdeleteShop(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "openShop", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
$gameSystem.supponSSopenShop(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "getNumItem", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 0);
|
||
$gameSystem.supponSSgetNumItem(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "getNumWeapon", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 1);
|
||
$gameSystem.supponSSgetNumItem(args);
|
||
});
|
||
|
||
PluginManager.registerCommand(pluginName, "getNumArmor", (arr) => {
|
||
const args = Object.entries(arr).map(([key, value]) => `${value}`);
|
||
args.splice(1, 0, 2);
|
||
$gameSystem.supponSSgetNumItem(args);
|
||
});
|
||
|
||
Game_System.prototype.supponSScheckData = function () {
|
||
this._supponSS = this._supponSS || [];
|
||
};
|
||
|
||
Game_System.prototype.supponSSmakeShop = function (args) {
|
||
this.supponSScheckData();
|
||
var redundancy = this._supponSS.some(function (element) {
|
||
return element[0] === args[0];
|
||
});
|
||
if (redundancy) {
|
||
return;
|
||
}
|
||
if (!args[1]) {
|
||
args[1] = 1;
|
||
}
|
||
this._supponSS.push([args[0], [], args[1]]); //[shopid, goods, shoptype]
|
||
};
|
||
|
||
Game_System.prototype.supponSSaddGoods = function (args) {
|
||
var shop = this.supponSSsearchShop(args);
|
||
args.shift();
|
||
args.splice(2, 0, 0, 0);
|
||
if (shop) {
|
||
var redundancy = false;
|
||
shop[1].forEach(function (element) {
|
||
if (element[0] == args[0] && element[1] == args[1]) {
|
||
element = args;
|
||
redundancy = true;
|
||
}
|
||
});
|
||
if (args[5]) {
|
||
args[4] > 0
|
||
? $gameVariables.setValue(Number(args[4]), Number(args[5]))
|
||
: 0;
|
||
} else {
|
||
args[5] = 0;
|
||
}
|
||
if (!redundancy) {
|
||
shop[1].push(args);
|
||
}
|
||
}
|
||
};
|
||
|
||
Game_System.prototype.supponSSremoveGoods = function (args) {
|
||
var shop = this.supponSSsearchShop(args);
|
||
if (!shop) {
|
||
return;
|
||
}
|
||
shop[1] = shop[1].filter(function (element) {
|
||
return !(args[1] == element[0] && args[2] == element[1]);
|
||
});
|
||
};
|
||
|
||
Game_System.prototype.supponSSsearchShop = function (args) {
|
||
this.supponSScheckData();
|
||
var shop = null;
|
||
this._supponSS.forEach(function (element) {
|
||
if (args[0] === element[0]) {
|
||
shop = element;
|
||
}
|
||
});
|
||
if (!shop) {
|
||
console.log("Not exist shop of " + args[0] + " !!");
|
||
}
|
||
return shop;
|
||
};
|
||
|
||
Game_System.prototype.supponSSdeleteShop = function (args) {
|
||
this._supponSS = this._supponSS.filter(function (element) {
|
||
return !(element[0] == args[0]);
|
||
});
|
||
};
|
||
|
||
Game_System.prototype.supponSSopenShop = function (args) {
|
||
var shop = this.supponSSsearchShop(args);
|
||
if (shop) {
|
||
SceneManager.push(Scene_supponSSshop);
|
||
var purchaseOnly = shop[2] == 0;
|
||
var sortType = args[1];
|
||
SceneManager.prepareNextScene(shop, purchaseOnly, sortType);
|
||
}
|
||
};
|
||
|
||
Game_System.prototype.supponSSgetNumItem = function (args) {
|
||
if (!args[2]) {
|
||
return;
|
||
}
|
||
var shop = this.supponSSsearchShop(args);
|
||
var goodsElement = null;
|
||
if (shop) {
|
||
goodsElement = shop[1].find(function (element) {
|
||
return element[0] == args[1] && element[1] == args[2];
|
||
});
|
||
}
|
||
if (goodsElement) {
|
||
if (Number(goodsElement[4]) > 0) {
|
||
var n = $gameVariables.value(goodsElement[4]);
|
||
} else {
|
||
var n = goodsElement[5];
|
||
}
|
||
$gameVariables.setValue(Number(args[3]), Number(n));
|
||
} else {
|
||
$gameVariables.setValue(Number(args[3]), 0);
|
||
}
|
||
};
|
||
|
||
function Scene_supponSSshop() {
|
||
this.initialize.apply(this, arguments);
|
||
}
|
||
|
||
SceneManager.isSupponSS = function () {
|
||
return this._scene.constructor === Scene_supponSSshop;
|
||
};
|
||
|
||
Scene_supponSSshop.prototype = Object.create(Scene_Shop.prototype);
|
||
Scene_supponSSshop.prototype.constructor = Scene_supponSSshop;
|
||
|
||
Scene_supponSSshop.prototype.initialize = function () {
|
||
Scene_Shop.prototype.initialize.call(this);
|
||
this._trade = ""; // 'buy' or 'sell';
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.prepare = function (
|
||
shop,
|
||
purchaseOnly,
|
||
sortType
|
||
) {
|
||
this._shop = shop;
|
||
this._sortTyep = sortType;
|
||
this._originalGoods = this._shop[1];
|
||
this._goods = this._shop[1];
|
||
this._purchaseOnly = purchaseOnly;
|
||
this._item = null;
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.sortGoods = function () {
|
||
this._goods = [];
|
||
if (this._sortTyep == 1) {
|
||
for (let i = 0; i < this._originalGoods.length; i++) {
|
||
this._goods.push(this._originalGoods[i]);
|
||
}
|
||
this._goods.sort(function (a, b) {
|
||
return a[0] - b[0] || (a[0] == b[0] && a[1] - b[1]);
|
||
});
|
||
} else if (this._sortTyep == 2) {
|
||
const type = ["item", "weapon", "armor", "keyItem"].indexOf(
|
||
this._categoryWindow.currentSymbol()
|
||
); //Dark Plasma 2021.12.11
|
||
// var type = this._categoryWindow.index();
|
||
this._goods = this._originalGoods.filter(function (element) {
|
||
return element[0] == type;
|
||
});
|
||
this._goods.sort(function (a, b) {
|
||
return a[1] - b[1];
|
||
});
|
||
} else {
|
||
this._goods = this._originalGoods;
|
||
}
|
||
this._buyWindow._shopGoods = this._goods;
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.commandBuy = function () {
|
||
this._trade = "buy";
|
||
if (this._sortTyep == 2) {
|
||
// this._categoryWindow._list[3].enabled = false;//大事なもの選択不可 MZ対策
|
||
Window_Selectable.prototype.refresh.call(this._categoryWindow);
|
||
this._categoryWindow.setItemWindow(null);
|
||
this._categoryWindow.show();
|
||
this._categoryWindow.activate();
|
||
return;
|
||
}
|
||
this.sortGoods();
|
||
Scene_Shop.prototype.commandBuy.call(this);
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.onCategoryOk = function () {
|
||
if (this._trade == "sell") {
|
||
Scene_Shop.prototype.onCategoryOk.call(this);
|
||
return;
|
||
}
|
||
this._categoryWindow.hide();
|
||
this.sortGoods();
|
||
this._buyWindow.select(0);
|
||
Scene_Shop.prototype.commandBuy.call(this);
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.onCategoryCancel = function () {
|
||
if (this._trade == "sell") {
|
||
Scene_Shop.prototype.onCategoryCancel.call(this);
|
||
} else {
|
||
this._categoryWindow.hide();
|
||
this._categoryWindow.deactivate();
|
||
Scene_Shop.prototype.onBuyCancel.call(this);
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.onBuyCancel = function () {
|
||
if (this._sortTyep != 2) {
|
||
Scene_Shop.prototype.onBuyCancel.call(this);
|
||
return;
|
||
}
|
||
this._dummyWindow.show();
|
||
this._buyWindow.hide();
|
||
this._statusWindow.hide();
|
||
this._statusWindow.setItem(null);
|
||
this._helpWindow.clear();
|
||
this._categoryWindow.show();
|
||
this._categoryWindow.activate();
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.commandSell = function () {
|
||
this._trade = "sell";
|
||
// this._categoryWindow._list[3].enabled = true;//大事なもの選択可 MZ対策
|
||
Window_Selectable.prototype.refresh.call(this._categoryWindow);
|
||
this._categoryWindow.setItemWindow(this._sellWindow);
|
||
Scene_Shop.prototype.commandSell.call(this);
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.stockNumber = function () {
|
||
if (this._trade == "buy") {
|
||
return this._buyWindow.stockNumber();
|
||
} else if (this._trade == "sell") {
|
||
var goodsElement = this.goodsElement();
|
||
if (goodsElement) {
|
||
if (goodsElement[4] > 0) {
|
||
return $gameVariables.value(Number(goodsElement[4]));
|
||
} else if (goodsElement[4] == -1) {
|
||
return goodsElement[5];
|
||
}
|
||
} else {
|
||
return null;
|
||
}
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.stockId = function () {
|
||
if (this._trade == "buy") {
|
||
return this._buyWindow.stockId();
|
||
} else if (this._trade == "sell") {
|
||
var goodsElement = this.goodsElement();
|
||
if (goodsElement) {
|
||
if (goodsElement[4] > 0) {
|
||
return goodsElement[4];
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.goodsElement = function () {
|
||
if (this._trade == "buy") {
|
||
return this._goods[this._buyWindow.index()];
|
||
} else if (this._trade == "sell") {
|
||
return this.searchGoodsElement();
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.searchGoodsElement = function () {
|
||
var type = this.itemTypeAndId()[0];
|
||
var id = this.itemTypeAndId()[1];
|
||
var goodsElement = null;
|
||
this._originalGoods.forEach(function (element) {
|
||
if (element[0] == type && element[1] == id) {
|
||
goodsElement = element;
|
||
}
|
||
});
|
||
return goodsElement;
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.itemTypeAndId = function () {
|
||
if (DataManager.isItem(this._item)) {
|
||
var type = 0;
|
||
} else if (DataManager.isWeapon(this._item)) {
|
||
var type = 1;
|
||
} else if (DataManager.isArmor(this._item)) {
|
||
var type = 2;
|
||
} else {
|
||
var type = null;
|
||
}
|
||
return [type, this._item ? this._item.id : null];
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.makeGoodsElement = function () {
|
||
var type = Number(this.itemTypeAndId()[0]);
|
||
var id = Number(this.itemTypeAndId()[1]);
|
||
return [type, id, 0, 0, -1, 0];
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.doBuy = function (number) {
|
||
Scene_Shop.prototype.doBuy.call(this, number);
|
||
this.processStockBuy(number);
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.processStockBuy = function (number) {
|
||
var element = this.goodsElement();
|
||
if (this.stockId() > 0) {
|
||
$gameVariables.setValue(this.stockId(), this.stockNumber() - number);
|
||
} else if (this.stockId() == -1) {
|
||
var lastStock = element[5];
|
||
element[5] = lastStock - number;
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.maxBuy = function () {
|
||
var max = $gameParty.maxItems(this._item) - $gameParty.numItems(this._item);
|
||
max = Math.min(max, this.stockNumber());
|
||
var price = this.buyingPrice();
|
||
if (price > 0) {
|
||
return Math.min(max, Math.floor(this.money() / price));
|
||
} else {
|
||
return max;
|
||
}
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.doSell = function (number) {
|
||
$gameParty.gainGold(number * this.sellingPrice());
|
||
$gameParty.loseItem(this._item, number);
|
||
this.processStockSell(number);
|
||
};
|
||
|
||
Scene_supponSSshop.prototype.processStockSell = function (number) {
|
||
var goodsElement = this.goodsElement();
|
||
if (goodsElement) {
|
||
if (goodsElement[4] > 0) {
|
||
var lastNumber = $gameVariables.value(goodsElement[4]);
|
||
$gameVariables.setValue(goodsElement[4], lastNumber + number);
|
||
} else if (goodsElement[4] == -1) {
|
||
goodsElement[5] = Number(goodsElement[5]) + number;
|
||
}
|
||
} else if (this._shop[2] == 2) {
|
||
goodsElement = this.makeGoodsElement();
|
||
goodsElement[5] = number;
|
||
this._originalGoods.push(goodsElement);
|
||
this.sortGoods();
|
||
}
|
||
};
|
||
|
||
Window_ShopBuy.prototype.stockId = function () {
|
||
if (this._shopGoods.length > 0) {
|
||
return this._shopGoods[this._index][4];
|
||
} else {
|
||
return null;
|
||
}
|
||
};
|
||
|
||
Window_ShopBuy.prototype.stockNumber = function () {
|
||
if (this.stockId() > 0) {
|
||
return $gameVariables.value(this.stockId());
|
||
} else if (this.stockId() == -1) {
|
||
return this._shopGoods[this._index][5];
|
||
}
|
||
};
|
||
|
||
var _Window_ShopBuy_drawItem = Window_ShopBuy.prototype.drawItem;
|
||
Window_ShopBuy.prototype.drawItem = function (index) {
|
||
if (!SceneManager.isSupponSS()) {
|
||
_Window_ShopBuy_drawItem.call(this, index);
|
||
return;
|
||
}
|
||
var item = this._data[index];
|
||
var rect = this.itemRect(index);
|
||
var priceWidth = 96;
|
||
rect.width -= this.textPadding();
|
||
if (this._shopGoods[index][4] > 0) {
|
||
var stockNumber = $gameVariables.value(this._shopGoods[index][4]);
|
||
} else if (this._shopGoods[index][4] == -1) {
|
||
var stockNumber = this._shopGoods[index][5];
|
||
}
|
||
this.changePaintOpacity(this.isEnabled(item) && stockNumber > 0);
|
||
this.drawItemName(item, rect.x, rect.y, rect.width - priceWidth);
|
||
var text = stockNumber > 0 ? this.price(item) : SoldOutLabel;
|
||
this.drawText(
|
||
text,
|
||
rect.x + rect.width - priceWidth,
|
||
rect.y,
|
||
priceWidth,
|
||
"right"
|
||
);
|
||
this.changePaintOpacity(true);
|
||
};
|
||
|
||
var _Window_ShopBuy_isCurrentItemEnabled =
|
||
Window_ShopBuy.prototype.isCurrentItemEnabled;
|
||
Window_ShopBuy.prototype.isCurrentItemEnabled = function () {
|
||
if (SceneManager.isSupponSS()) {
|
||
return (
|
||
_Window_ShopBuy_isCurrentItemEnabled.call(this) &&
|
||
this.stockNumber() > 0
|
||
);
|
||
} else {
|
||
return _Window_ShopBuy_isCurrentItemEnabled.call(this);
|
||
}
|
||
};
|
||
|
||
var _Window_ShopBuy_updateHelp = Window_ShopBuy.prototype.updateHelp;
|
||
Window_ShopBuy.prototype.updateHelp = function () {
|
||
if (this._statusWindow && SceneManager.isSupponSS()) {
|
||
this._statusWindow.setStock(this.stockNumber());
|
||
}
|
||
_Window_ShopBuy_updateHelp.call(this);
|
||
};
|
||
|
||
var _Window_ShopSell_updateHelp = Window_ShopSell.prototype.updateHelp;
|
||
Window_ShopSell.prototype.updateHelp = function () {
|
||
if (this._statusWindow && SceneManager.isSupponSS()) {
|
||
SceneManager._scene._item = this.item();
|
||
this._statusWindow.setStock(SceneManager._scene.stockNumber());
|
||
}
|
||
_Window_ShopSell_updateHelp.call(this);
|
||
};
|
||
|
||
var _Window_ShopStatus_initialize = Window_ShopStatus.prototype.initialize;
|
||
Window_ShopStatus.prototype.initialize = function (x, y, width, height) {
|
||
this._stockNumber = null;
|
||
_Window_ShopStatus_initialize.call(this, x, y, width, height);
|
||
};
|
||
|
||
Window_ShopStatus.prototype.setStock = function (number) {
|
||
this._stockNumber = number;
|
||
};
|
||
|
||
Window_ShopStatus.prototype.stockNumber = function () {
|
||
return SceneManager._scene.stockNumber();
|
||
};
|
||
|
||
var _Window_ShopStatus_drawPossession =
|
||
Window_ShopStatus.prototype.drawPossession;
|
||
Window_ShopStatus.prototype.drawPossession = function (x, y) {
|
||
if (DisplayOption1) {
|
||
this.drawPossession2(x, y);
|
||
} else {
|
||
_Window_ShopStatus_drawPossession.call(this, x, y);
|
||
}
|
||
};
|
||
|
||
Window_ShopStatus.prototype.isNeedDrawStock = function () {
|
||
return SceneManager.isSupponSS() && this._stockNumber;
|
||
};
|
||
|
||
Window_ShopStatus.prototype.drawStockNumber = function (x, y, width) {
|
||
var possessionWidth = this.textWidth("0000");
|
||
this.changeTextColor(this.systemColor());
|
||
this.drawText(StockLabel, x, y, width - possessionWidth);
|
||
this.resetTextColor();
|
||
var n = this._stockNumber || 0;
|
||
this.drawText(this._stockNumber, x, y, width, "right");
|
||
};
|
||
|
||
Window_ShopStatus.prototype.drawPossession2 = function (x, y) {
|
||
var width = (this.contents.width - x) / 2;
|
||
var possessionWidth = this.textWidth("0000");
|
||
this.changeTextColor(this.systemColor());
|
||
this.drawText(TextManager.possession, x, y, width - possessionWidth);
|
||
this.resetTextColor();
|
||
this.drawText($gameParty.numItems(this._item), x, y, width, "right");
|
||
if (this.isNeedDrawStock()) {
|
||
this.drawStockNumber(x + width + Option1Space, y, width - Option1Space);
|
||
}
|
||
};
|
||
|
||
var _Scene_Shop_onSellOk = Scene_Shop.prototype.onSellOk;
|
||
Scene_Shop.prototype.onSellOk = function () {
|
||
_Scene_Shop_onSellOk.call(this);
|
||
if (this._statusWindow && SceneManager.isSupponSS()) {
|
||
this._statusWindow.setStock(this._statusWindow.stockNumber());
|
||
this._statusWindow.refresh();
|
||
}
|
||
};
|
||
|
||
// MVJoint
|
||
|
||
Window_Base.prototype.textPadding = function () {
|
||
return 6;
|
||
};
|
||
})();
|