#==============================================================================
#                   「ショップ価格変動すーぱー」(ACE) ver1.0  by奈々
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#   http://heptanas.mamagoto.com/
#
#------------------------------------------------------------------------------
#
#   ショップでの買値と売値を、ショップ毎アイテム毎に細かく設定できます。
#   アイテムのメモ欄を参照するので簡単に一括指定が可能です。
#   
#   ◇使い方
#   イベントコマンドのスクリプトに書きます。
#   以下の設定は全て、ショップを閉じたときにリセットされます。
#   (手動でリセットする場合は「$game_temp.shop_initialize」)
#   なのでショップのイベントコマンドの直前に書くのを推奨します。
#   そうすれば他のショップで誤作動する心配がありません。
#   
#   ・価格の変動
#   $game_temp.nana_shop_pricelist1.push(["○○", n])
#   $game_temp.nana_shop_pricelist2.push(["○○", n])
#   メモ欄に○○とあるアイテムの価格がn%になります。
#   list1で追加した変動は重複なしで、最初の1つが適用されます。
#   list2は重複ありで、全ての倍率を掛けていきます。
#   
#   ""と指定すると全てのアイテムが対象になります。
#   またスクリプト欄のサイズの問題で、実際に書くときは
#   $game_temp.nana_shop_pricelist1.push(
#   ["○○", n])
#   の様に区切ってください。(を上に残さないと認識しません。
#   
#   
#   ・価格の補正
#   $game_temp.nana_shop_pricelist3.push(["○○", n])
#   $game_temp.nana_shop_pricelist4.push(["○○", n])
#   メモ欄に○○とあるアイテムの価格が+nになります。
#   list1と2の変動計算の後に、nが加算(-nなら減算)されます。
#   list3が重複なし、list4が重複ありです。
#   
#   
#   ・売値の設定
#   $temp.nana_shop_sellprice = n
#   価格(=買値)に対して、売値がn%になります。
#   
#==============================================================================
# ◇初期設定

module NanaSeven

  SHOP_SELLPRICE = 50
    #売値が価格(=買値)の何%か
    #ここで設定するのは既定値で、ゲーム内で個別に変更も可能
    
end

#------------------------------------------------------------------------------

#==============================================================================
# ■ Game_Temp
#------------------------------------------------------------------------------
#  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン
# スタンスは $game_temp で参照されます。
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :nana_shop_sellprice     # 売却時の共通割引
  attr_accessor :nana_shop_pricelist1     # 価格テーブル(any適用)n%
  attr_accessor :nana_shop_pricelist2     # 価格テーブル(all適用)n%
  attr_accessor :nana_shop_pricelist3     # 価格テーブル(any適用)+n
  attr_accessor :nana_shop_pricelist4     # 価格テーブル(all適用)+n
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias nana_initialize initialize
  def initialize
    nana_initialize
    @nana_shop_sellprice = NanaSeven::SHOP_SELLPRICE
    @nana_shop_pricelist1 = []
    @nana_shop_pricelist2 = []
    @nana_shop_pricelist3 = []
    @nana_shop_pricelist4 = []
  end
  #--------------------------------------------------------------------------
  # ● ショップ設定初期化
  #--------------------------------------------------------------------------
  def shop_initialize
    @nana_shop_sellpprice = NanaSeven::SHOP_SELLPRICE
    @nana_shop_pricelist1 = []
    @nana_shop_pricelist2 = []
    @nana_shop_pricelist3 = []
    @nana_shop_pricelist4 = []
  end
end


#==============================================================================
# ■ Window_ShopBuy
#------------------------------------------------------------------------------
#  ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
#==============================================================================

class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # ● アイテムリストの作成
  #--------------------------------------------------------------------------
  def make_item_list
    @data = []
    @price = {}
    @shop_goods.each do |goods|
      case goods[0]
      when 0;  item = $data_items[goods[1]]
      when 1;  item = $data_weapons[goods[1]]
      when 2;  item = $data_armors[goods[1]]
      end
      if item
        @data.push(item)
        @price[item] = goods[2] == 0 ? selling_price(item) : goods[3]
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 売値の取得
  #--------------------------------------------------------------------------
  def selling_price(item)
    value = item.price
    
    $game_temp.nana_shop_pricelist1.each{ |list|
    if item.note.include?(list[0])
      value *= list[1] * 0.01
      break
    end }
    
    $game_temp.nana_shop_pricelist2.each{ |list|
    if item.note.include?(list[0])
      value *= list[1] * 0.01
    end }
    
    $game_temp.nana_shop_pricelist3.each{ |list|
    if item.note.include?(list[0])
      value += list[1]
      break
    end }
    
    $game_temp.nana_shop_pricelist4.each{ |list|
    if item.note.include?(list[0])
      value += list[1]
    end }
    
    [value, 0].max.round
  end
end

#==============================================================================
# ■ Scene_Shop
#------------------------------------------------------------------------------
#  ショップ画面の処理を行うクラスです。
#==============================================================================

class Scene_Shop < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 売値の取得
  #--------------------------------------------------------------------------
  def selling_price
    value = @item.price
    
    $game_temp.nana_shop_pricelist1.each{ |list|
    if @item.note.include?(list[0])
      value *= list[1] * 0.01
      break
    end }
    
    $game_temp.nana_shop_pricelist2.each{ |list|
    if @item.note.include?(list[0])
      value *= list[1] * 0.01
    end }
    
    $game_temp.nana_shop_pricelist3.each{ |list|
    if @item.note.include?(list[0])
      value += list[1]
      break
    end }
    
    $game_temp.nana_shop_pricelist4.each{ |list|
    if @item.note.include?(list[0])
      value += list[1]
    end }
    
    [value * $game_temp.nana_shop_sellprice / 100, 0].max.round
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  def terminate
    super
    $game_temp.shop_initialize
  end
end