#==============================================================================
#                      「選択肢キャンセラー」(ACE) Ver.1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   スクリプトの改変は自由に行って頂いて構いませんが
#   その場合も元のスクリプトの作成者として名前を載せて下さい。
#   また配布前に必ず、ブログにある利用規約を確認して下さい。
#
#------------------------------------------------------------------------------
#   
#   選択肢を表示した際に、指定した選択肢を選べないようにします。
#   条件を満たしていないと選べない選択肢や、メニューの作成にどうぞ。
#   
#   ※前提スクリプトとして「半透明文字(ver1.1以降)」が必要です。
#   使い方は、イベントコマンドのスクリプトで以下を入力します。
#   
#   n7_choice_canseler(n, true / false)
#   
#   1〜5番目の選択肢を有効(true)または無効(false)にします。
#   一度選択肢を表示すると、全てtrueに戻ります。
#   
#==============================================================================
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 選択肢の無効化・有効化
  #--------------------------------------------------------------------------
  def n7_choice_canseler(no, flag = true)
    $game_system.choice_canseler[no-1] = flag
  end
end
#==============================================================================
# ■ Game_System
#------------------------------------------------------------------------------
#  システム周りのデータを扱うクラスです。セーブやメニューの禁止状態などを保存
# します。このクラスのインスタンスは $game_system で参照されます。
#==============================================================================

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :choice_canseler          # 選択肢の無効化フラグ(配列)
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias n7_choice_canseler_initialize initialize
  def initialize
    n7_choice_canseler_initialize
    @choice_canseler = [true, true, true, true, true]
  end
end
#==============================================================================
# ■ Window_ChoiceList
#------------------------------------------------------------------------------
#  イベントコマンド[選択肢の表示]に使用するウィンドウです。
#==============================================================================

class Window_ChoiceList < Window_Command
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  #選択肢が無効なら、指定した文字色にする。
  def draw_item(index)
    text = command_name(index).to_s.clone
    unless $game_system.choice_canseler[index]
      text.gsub!(/\\C\[(\d+)\]/i){"\\CC[#{$1},-1]"}
      text.gsub!(/\\I\[(\d+)\]/i){"\\II[#{$1}]"}
      text.insert(0, "\\CC[0,-1]")
    end
    rect = item_rect_for_text(index)
    draw_text_ex(rect.x, rect.y, text)
  end
  #--------------------------------------------------------------------------
  # ● 決定ボタンが押されたときの処理
  #--------------------------------------------------------------------------
  alias n7_choice_canseler_process_ok process_ok
  def process_ok
    unless $game_system.choice_canseler[@index]
      Sound.play_buzzer
    else
      n7_choice_canseler_process_ok
      $game_system.choice_canseler = [true, true, true, true, true]
    end
  end
  #--------------------------------------------------------------------------
  # ● キャンセルボタンが押されたときの処理
  #--------------------------------------------------------------------------
  alias n7_choice_canseler_process_cancel process_cancel
  def process_cancel
    unless $game_system.choice_canseler[$game_message.choice_cancel_type - 1]
      Sound.play_buzzer
    else
      n7_choice_canseler_process_cancel
      $game_system.choice_canseler = [true, true, true, true, true]
    end
  end
end