#==============================================================================
#                   「アイテム封印」(ACE) ver1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#   その他、詳しい利用規約はブログを参照して下さい。
#
#------------------------------------------------------------------------------
#
#   アクター毎にアイテムの使用を制限できます。
#   封印は選択不能に、削除は選択肢自体が消えます。
#   
#   使い方は、データベースのメモ欄に
#   <アイテム封印> 或いは <アイテム削除> と書きます。
#   アクター・クラス・装備品・ステートに設定可能です。
#   
#   また、それとは別にスイッチによって
#   メニュー画面のアイテムを封印することが可能です。
#   初期設定でスイッチ番号を設定して下さい。
#
#==============================================================================

#◇初期設定
module Nana
  
#ONの時にメニュー画面のアイテムを封印するスイッチ番号(0だと常に封印しない)

  SEALED_ITEM_SW = 0
  
end

#==============================================================================
# ■ RPG::BaseItem
#------------------------------------------------------------------------------
#  アクター・装備・ステートなどを総括して扱うデータクラス。
#==============================================================================

class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● アイテム削除
  #--------------------------------------------------------------------------
  def deleted_item?
    @note.include?("<アイテム削除>")
  end
  #--------------------------------------------------------------------------
  # ● アイテム封印
  #--------------------------------------------------------------------------
  def sealed_item?
    @note.include?("<アイテム封印>")
  end
end

#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
# の内部で使用され、Game_Party クラス($game_party)からも参照されます。
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● アイテム削除
  #--------------------------------------------------------------------------
  def deleted_item?
    self.actor.deleted_item? ||
    self.class.deleted_item? ||
    self.equips.any? do |equip|
      next unless equip
      equip.deleted_item?
    end ||
    self.states.any? do |state|
      next unless state
      state.deleted_item?
    end
  end
  #--------------------------------------------------------------------------
  # ● アイテム封印
  #--------------------------------------------------------------------------
  def sealed_item?
    self.actor.sealed_item? ||
    self.class.sealed_item? ||
    self.equips.any? do |equip|
      next unless equip
      equip.sealed_item?
    end ||
    self.states.any? do |state|
      next unless state
      state.sealed_item?
    end
  end
end
#==============================================================================
# ■ Window_ActorCommand
#------------------------------------------------------------------------------
#  バトル画面で、アクターの行動を選択するウィンドウです。
#==============================================================================

class Window_ActorCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● アイテムコマンドをリストに追加
  #--------------------------------------------------------------------------
  def add_item_command
    add_command(Vocab::item, :item, !@actor.sealed_item?) unless @actor.deleted_item?
  end
end
#==============================================================================
# ■ Window_MenuCommand
#------------------------------------------------------------------------------
#  メニュー画面で表示するコマンドウィンドウです。
#==============================================================================

class Window_MenuCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● 主要コマンドをリストに追加
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled &&
    !$game_switches[Nana::SEALED_ITEM_SW])
    add_command(Vocab::skill,  :skill,  main_commands_enabled)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
  end
end