/*:
 * @target MZ
 * @plugindesc [MZ] <NoSell>タグ付きの武器・防具を売却禁止＆灰色表示
 * @help
 * 武器・防具のメモ欄に <NoSell> と書くと、その装備はショップで売却できなくなります。
 * 売却リスト上では灰色で表示され、選択してもブザー音が鳴ります。
 *
 * 例：
 * <NoSell>
 */

(() => {
  // === 売却禁止判定 ===
  function isNoSell(item) {
    return (
      item &&
      (DataManager.isWeapon(item) || DataManager.isArmor(item)) &&
      item.meta &&
      item.meta.NoSell
    );
  }

  // === 売却リストで灰色にする ===
  const _Window_ShopSell_drawItemName = Window_ShopSell.prototype.drawItemName;
  Window_ShopSell.prototype.drawItemName = function(item, x, y, width) {
    if (isNoSell(item)) {
      this.changePaintOpacity(false);
    }
    _Window_ShopSell_drawItemName.call(this, item, x, y, width);
    this.changePaintOpacity(true);
  };

  // === 売却選択時にブロック ===
  const _Scene_Shop_onSellOk = Scene_Shop.prototype.onSellOk;
  Scene_Shop.prototype.onSellOk = function() {
    const item = this._sellWindow.item();
    if (isNoSell(item)) {
      SoundManager.playBuzzer();
      this._sellWindow.activate();
      return;
    }
    _Scene_Shop_onSellOk.call(this);
  };

  // === 念のため最終チェックでも弾く ===
  const _Scene_Shop_doSell = Scene_Shop.prototype.doSell;
  Scene_Shop.prototype.doSell = function(number) {
    const item = this._item;
    if (isNoSell(item)) {
      SoundManager.playBuzzer();
      this.endNumberInput();
      this.activateSellWindow();
      return;
    }
    _Scene_Shop_doSell.call(this, number);
  };
})();
