class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias tako436ridinitialize initialize
  def initialize
    @change_state_count = {}
    tako436ridinitialize
  end  
  
  #--------------------------------------------------------------------------
  # ● ステート自動解除
  #     timing : タイミング（1:行動終了 2:ターン終了）
  #--------------------------------------------------------------------------
  alias tako43remove_states_auto remove_states_auto
  def remove_states_auto(timing)    
    states.each do |state|
      if @change_state_count[state.id] == state.change_count #&& state.auto_removal_timing == timing
        add_state(state.change_state ) if state.change_state && state.change_state > 0
      end
    end    
    tako43remove_states_auto(timing)
  end
  #--------------------------------------------------------------------------
  # ● ステートのターンカウント更新
  #--------------------------------------------------------------------------
  alias tako345update_state_turns update_state_turns
  def update_state_turns
    tako345update_state_turns
    states.each do |state|
      @change_state_count[state.id]  += 1 
    end
  end  
  #--------------------------------------------------------------------------
  # ● ステートの消去
  #--------------------------------------------------------------------------
  alias tako324erase_state erase_state
  def erase_state(state_id)
    tako324erase_state(state_id)
    @change_state_count.delete(state_id)
  end
  #--------------------------------------------------------------------------
  # ● ステートのカウント（ターン数および歩数）をリセット
  #--------------------------------------------------------------------------
  alias tako432reset_state_counts reset_state_counts
  def reset_state_counts(state_id)
    tako432reset_state_counts(state_id)
    @change_state_count[state_id] = 0
  end

end 