module ExShop
#--------------------------------------------------------------------------
# ● 購入レート変換(購入価格計算)
#--------------------------------------------------------------------------
def self.buy_price(item, price, fix=false)
return price if fix and !USE_P_RATE
$game_system.shop.buy.price(item_type(item), item.id, price)
end
#--------------------------------------------------------------------------
# ● 売却レート変換(売却価格計算)
#--------------------------------------------------------------------------
def self.sell_price(item, price)
$game_system.shop.sell.price(item_type(item), item.id, price)
end
#--------------------------------------------------------------------------
# ● atype => symbol
#--------------------------------------------------------------------------
def self.actor_sym
$game_party.members.collect {|a| a.id.to_s.to_sym }
end
#--------------------------------------------------------------------------
# ● CT設定 => symbol
#--------------------------------------------------------------------------
def self.ct_sym(ct)
ct.inject([]) do |r, c|
case c
when WEAPON; r += wtype_sym
when ARMOR; r += atype_sym
when ACTOR; r += actor_sym
else; r.push([:all, :item, :weapon, :armor, :key_item][c])
end
end
end
#--------------------------------------------------------------------------
# ● wtype => symbol
#--------------------------------------------------------------------------
def self.wtype_sym
return [:weapon] unless ExShop::USE_W_TYPE
$data_system.weapon_types[1, $data_system.weapon_types.size].collect {|a| a.to_sym}
end
#--------------------------------------------------------------------------
# ● atype => symbol
#--------------------------------------------------------------------------
def self.atype_sym
case ExShop::USE_A_TYPE
when 1 # 防具タイプ
$data_system.armor_types[1, $data_system.armor_types.size].collect {|a| a.to_sym}
when 2 # 装備タイプ
[:shield, :helmet, :clothes, :accessory]
else
[:armor]
end
end
#--------------------------------------------------------------------------
# ● symbol => wtype or atype
#--------------------------------------------------------------------------
def self.sym_type(sym)
str = sym.id2name
return WEAPON if $data_system.weapon_types.include?(str)
return ARMOR if $data_system.armor_types.include?(str)
ACTOR
end
#--------------------------------------------------------------------------
# ● sym => wtype
#--------------------------------------------------------------------------
def self.sym_wtype(sym)
$data_system.weapon_types.index(sym.id2name)
end
#--------------------------------------------------------------------------
# ● sym => atype
#--------------------------------------------------------------------------
def self.sym_atype(sym)
$data_system.armor_types.index(sym.id2name)
end
#--------------------------------------------------------------------------
# ● symbol => 設定
#--------------------------------------------------------------------------
def self.sym2id(sym)
case sym
when :all; return ALL
when :item; return ITEM
when :weapon; return WEAPON
when :armor; return ARMOR
when :key_item; return KEY
when :shield, :helmet, :clothes, :accessory; return ARMOR
else return sym_type(sym)
end
end
#--------------------------------------------------------------------------
# ● symbol => アイコン
#--------------------------------------------------------------------------
def self.sym2icon(sym)
case sym
when :all; return CT_ICON[ALL]
when :none; return 0
when :item; return CT_ICON[ITEM]
when :weapon; return CT_ICON[WEAPON]
when :armor; return CT_ICON[ARMOR]
when :key_item; return CT_ICON[KEY]
when :shield; return CT_E_ICON[1]
when :helmet; return CT_E_ICON[2]
when :clothes; return CT_E_ICON[3]
when :accessory; return CT_E_ICON[4]
else
case sym_type(sym)
when WEAPON; return CT_W_ICON[sym_wtype(sym)]
when ARMOR; return CT_A_ICON[sym_atype(sym)]
when ACTOR; return 0
end
end
end
#--------------------------------------------------------------------------
# ● symbol => Actor
#--------------------------------------------------------------------------
def self.sym2actor(sym)
$game_actors[sym.id2name.to_i]
end
#--------------------------------------------------------------------------
# ● アイテムをリストに含めるかどうか
#--------------------------------------------------------------------------
def self.item_include?(sym, item)
case sym
when :all
true
when :none
false
when :item
item.is_a?(RPG::Item) && !item.key_item?
when :weapon
item.is_a?(RPG::Weapon)
when :armor
item.is_a?(RPG::Armor)
when :key_item
item.is_a?(RPG::Item) && item.key_item?
when :shield
item.is_a?(RPG::Armor) && item.etype_id == 1
when :helmet
item.is_a?(RPG::Armor) && item.etype_id == 2
when :clothes
item.is_a?(RPG::Armor) && item.etype_id == 3
when :accessory
item.is_a?(RPG::Armor) && item.etype_id == 4
else
case sym_type(sym)
when WEAPON
item.is_a?(RPG::Weapon) and item.wtype_id == sym_wtype(sym)
when ARMOR
item.is_a?(RPG::Armor) and item.atype_id == sym_atype(sym)
when ACTOR
sym2actor(sym).equippable?(item)
else
false
end
end
end
#--------------------------------------------------------------------------
# ● アイテムタイプ
#--------------------------------------------------------------------------
def self.item_type(item)
case item
when RPG::Item; return 0
when RPG::Weapon; return 1
when RPG::Armor; return 2
end
end
#--------------------------------------------------------------------------
# ● 購入可否判定
#--------------------------------------------------------------------------
def self.buy_enable?(item)
not $game_system.shop.buy.ng_item?(item_type(item), item.id)
end
#--------------------------------------------------------------------------
# ● 売却可否判定
#--------------------------------------------------------------------------
def self.sell_enable?(item)
not $game_system.shop.sell.ng_item?(item_type(item), item.id)
end
#--------------------------------------------------------------------------
# ● 購入不可文字
#--------------------------------------------------------------------------
def self.not_buy(item, price)
return price if V_N_BUY == ""
buy_enable?(item) ? price : V_N_BUY
end
end
#==============================================================================
# ■ RPG::Item
#==============================================================================
class RPG::Item < RPG::UsableItem
#--------------------------------------------------------------------------
# ● 売却可能か?
#--------------------------------------------------------------------------
def sell?
@price > 0 and !@note.include?("<not_sell>")
end
end
#==============================================================================
# ■ RPG::EquipItem
#==============================================================================
class RPG::EquipItem < RPG::BaseItem
#--------------------------------------------------------------------------
# ● 売却可能か?
#--------------------------------------------------------------------------
def sell?
@price > 0 and !@note.include?("<not_sell>")
end
end