#==============================================================================
# 「ショップ価格変動すーぱー」(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