#==============================================================================
# ** Custom Shop Window By Black Mage
#==============================================================================
#==============================================================================
# ** Window_ShopBuy
#------------------------------------------------------------------------------
# This window displays buyable goods on the shop screen.
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# shop_goods : goods
#--------------------------------------------------------------------------
def initialize(shop_goods)
super(0, 128, 640, 132)
@shop_goods = shop_goods
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for goods_item in @shop_goods
case goods_item[0]
when 0
item = $data_items[goods_item[1]]
number = $game_party.item_number(@item.id)
when 1
item = $data_weapons[goods_item[1]]
number = $game_party.weapon_number(@item.id)
when 2
item = $data_armors[goods_item[1]]
number = $game_party.armor_number(@item.id)
end
if item != nil
@data.push(item)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
# Get items in possession
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
# If price is less than money in possession, and amount in possession is
# not 99, then set to normal text color. Otherwise set to disabled color
if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4
y = index * 32
rect = Rect.new(x, y, self.width - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 260, y, 88, 32, "Price :")
self.contents.draw_text(x + 300, y, 88, 32, item.price.to_s, 2)
self.contents.draw_text(x + 470, y, 88, 32, "Owned :")
self.contents.draw_text(x + 550, y, 32, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ** Window_ShopStatus
#------------------------------------------------------------------------------
# This window displays number of items in possession and the actor's equipment
# on the shop screen.
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 260, 640, 220)
self.contents = Bitmap.new(width - 32, height - 32)
@item = nil
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @item == nil
return
end
case @item
when RPG::Item
number = $game_party.item_number(@item.id)
when RPG::Weapon
number = $game_party.weapon_number(@item.id)
when RPG::Armor
number = $game_party.armor_number(@item.id)
end
if @item.is_a?(RPG::Item)
return
end
# Equipment adding information
for i in 0...$game_party.actors.size
# Get actor
actor = $game_party.actors[i]
# If equippable, then set to normal text color. If not, set to
# invalid text color.
if actor.equippable?(@item)
self.contents.font.color = normal_color
disabler = false
else
self.contents.font.color = Color.new(255, 255, 255, 128)
disabler = true
end
# Get current equipment
if @item.is_a?(RPG::Weapon)
check = $data_weapons[actor.weapon_id]
if check ==nil
oldwpnstr = 0
oldwpndex = 0
oldwpnint = 0
oldwpnagi = 0
oldwpnpdf = 0
oldwpnmdf = 0
atkwpn = 0
else
oldwpnstr = $data_weapons[actor.weapon_id].str_plus
oldwpndex = $data_weapons[actor.weapon_id].dex_plus
oldwpnint = $data_weapons[actor.weapon_id].int_plus
oldwpnagi = $data_weapons[actor.weapon_id].agi_plus
oldwpnpdf = $data_weapons[actor.weapon_id].pdef
oldwpnmdf = $data_weapons[actor.weapon_id].mdef
atkwpn = @item.atk
end
elsif @item.kind == 0
check = $data_armors[actor.armor1_id]
if check ==nil
oldwpnstr = 0
oldwpndex = 0
oldwpnint = 0
oldwpnagi = 0
oldwpnpdf = 0
oldwpnmdf = 0
atkwpn = 0
else
oldwpnstr = $data_armors[actor.armor1_id].str_plus
oldwpndex = $data_armors[actor.armor1_id].dex_plus
oldwpnint = $data_armors[actor.armor1_id].int_plus
oldwpnagi = $data_armors[actor.armor1_id].agi_plus
oldwpnpdf = $data_armors[actor.armor1_id].pdef
oldwpnmdf = $data_armors[actor.armor1_id].mdef
atkwpn = 0
end
elsif @item.kind == 1
check = $data_armors[actor.armor2_id]
if check ==nil
oldwpnstr = 0
oldwpndex = 0
oldwpnint = 0
oldwpnagi = 0
oldwpnpdf = 0
oldwpnmdf = 0
atkwpn = 0
else
oldwpnstr = $data_armors[actor.armor2_id].str_plus
oldwpndex = $data_armors[actor.armor2_id].dex_plus
oldwpnint = $data_armors[actor.armor2_id].int_plus
oldwpnagi = $data_armors[actor.armor2_id].agi_plus
oldwpnpdf = $data_armors[actor.armor2_id].pdef
oldwpnmdf = $data_armors[actor.armor2_id].mdef
atkwpn = 0
end
elsif @item.kind == 2
check = $data_armors[actor.armor3_id]
if check ==nil
oldwpnstr = 0
oldwpndex = 0
oldwpnint = 0
oldwpnagi = 0
oldwpnpdf = 0
oldwpnmdf = 0
atkwpn = 0
else
oldwpnstr = $data_armors[actor.armor3_id].str_plus
oldwpndex = $data_armors[actor.armor3_id].dex_plus
oldwpnint = $data_armors[actor.armor3_id].int_plus
oldwpnagi = $data_armors[actor.armor3_id].agi_plus
oldwpnpdf = $data_armors[actor.armor3_id].pdef
oldwpnmdf = $data_armors[actor.armor3_id].mdef
atkwpn = 0
end
else
check = $data_armors[actor.armor4_id]
if check ==nil
oldwpnstr = 0
oldwpndex = 0
oldwpnint = 0
oldwpnagi = 0
oldwpnpdf = 0
oldwpnmdf = 0
atkwpn = 0
else
oldwpnstr = $data_armors[actor.armor4_id].str_plus
oldwpndex = $data_armors[actor.armor4_id].dex_plus
oldwpnint = $data_armors[actor.armor4_id].int_plus
oldwpnagi = $data_armors[actor.armor4_id].agi_plus
oldwpnpdf = $data_armors[actor.armor4_id].pdef
oldwpnmdf = $data_armors[actor.armor4_id].mdef
atkwpn = 0
end
end
# Draw item
x = 4 + 152*i
y = 24
# Draw actor's name
self.contents.draw_text(4 + 152*i, -8, 120, 32, actor.name)
opacity = self.contents.font.color == normal_color ? 255 : 128
if disabler == false
self.contents.font.color = system_color
end
self.contents.draw_text(x, y-2, 212, 32, "STR")
self.contents.draw_text(x, y+19, 212, 32, "DEX")
self.contents.draw_text(x, y+40, 212, 32, "INT")
self.contents.draw_text(x, y+61, 212, 32, "AGI")
self.contents.draw_text(x, y+82, 212, 32, "ATK")
self.contents.draw_text(x, y+103, 212, 32, "PDEF")
self.contents.draw_text(x, y+124, 212, 32, "MDEF")
if disabler == false
self.contents.font.color = normal_color
end
# Draw STR
act = actor.str
wpn = @item.str_plus - oldwpnstr
self.contents.draw_text(64 + 152*i, y-2, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y-2, 112, 32, sprintf("%+d", wpn), 2)
end
# Draw DEX
act = actor.dex
wpn = @item.dex_plus - oldwpndex
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+19, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+19, 112, 32, sprintf("%+d", wpn), 2)
end
# Draw INT
act = actor.int
wpn = @item.int_plus - oldwpnint
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+40, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+40, 112, 32, sprintf("%+d", wpn), 2)
end
# Draw AGI
act = actor.agi
wpn = @item.agi_plus - oldwpnagi
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+61, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+61, 112, 32, sprintf("%+d", wpn), 2)
end
# Draw ATK
act = actor.atk
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+82, 112, 32, act.to_s(10))
if disabler == false
if atkwpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif atkwpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+82, 112, 32, sprintf("%+d", atkwpn), 2)
end
# Draw PDEF
act = actor.pdef
wpn = @item.pdef - oldwpnpdf
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+103, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+103, 112, 32, sprintf("%+d", wpn), 2)
end
# Draw MDEF
act = actor.mdef
wpn = @item.mdef - oldwpnmdf
if disabler == false
self.contents.font.color = normal_color
end
self.contents.draw_text(64 + 152*i, y+124, 112, 32, act.to_s(10))
if disabler == false
if wpn > 0
self.contents.font.color = Color.new(0, 100, 255, 255)
elsif wpn < 0
self.contents.font.color = Color.new(100, 0, 0, 255)
else
self.contents.font.color = normal_color
end
self.contents.draw_text(32 + 152*i, y+124, 112, 32, sprintf("%+d", wpn), 2)
end
end
end
#--------------------------------------------------------------------------
# * Set Item
# item : new item
#--------------------------------------------------------------------------
def item=(item)
if @item != item
@item = item
refresh
end
end
end
Comments
0 B
|👍
/👎