#==============================================================================
#                           「変数通貨」(ACE) ver1.3
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#   その他、詳しい利用規約はブログを参照して下さい。
#
#------------------------------------------------------------------------------
#
#   変数を所持金として指定できるようになります。
#   複数の変数を切り替え可能で、また通貨単位も変更できます。
#   これにより、アイテムや名誉点など特殊な通貨を使用するショップや
#   所持金を別々に管理するシステムなどが簡単に作れます。
#   
#   
#   使い方は、イベントコマンドの「スクリプト」で行います。
#   
#   n7_change_gold(id)
#   n7_change_gold(id, "通貨単位")
#   
#   id番の変数を所持金に指定します。
#   idに0を指定すると、変数ではない本来の所持金に戻ります。
#   また、2番目の引数に"○○"を入れると通貨単位も変更します。
#   
#   指定した通貨変数は、ショップや戦闘の処理も含めて
#   あらゆる点で所持金の替わりとして扱われます。
#   同時に通常の変数として、代入や増減を行うことができます。
#
#==============================================================================

#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 通貨変数の切り替え
  #--------------------------------------------------------------------------
  def n7_change_gold(id, unit = nil)
    $game_party.gold_var_id = id
    $game_party.gold_unit_str = unit if unit
  end
end

#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
#  パーティを扱うクラスです。所持金やアイテムなどの情報が含まれます。このクラ
# スのインスタンスは $game_party で参照されます。
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :gold_var_id              # 所持金の変数ID
  attr_accessor :gold_unit_str            # 通貨単位
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias initialize_gold_var initialize
  def initialize
    initialize_gold_var
    @gold_var_id = 0
    @gold_unit_str = $data_system.currency_unit
  end
  #--------------------------------------------------------------------------
  # ● 所持金の参照
  #--------------------------------------------------------------------------
  def gold
    @gold_var_id > 0 ? $game_variables[@gold_var_id] : @gold
  end
  #--------------------------------------------------------------------------
  # ● 所持金の増加(減少)
  #--------------------------------------------------------------------------
  def gain_gold(amount)
    if @gold_var_id > 0
      $game_variables[@gold_var_id] = [[$game_variables[@gold_var_id] + amount, 0].max, max_gold].min
    else
      @gold = [[@gold + amount, 0].max, max_gold].min
    end
  end
end

#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
#  用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================

module Vocab

  # 通貨単位
  def self.currency_unit
    $game_party.gold_unit_str
  end
end