03-10-2007, 01:00 PM
New Shop Interface by Leon Westbrooke
Version: 1.1
Type: Shopping System
Version: 1.1
Type: Shopping System
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
No support is given. If you are the owner of the thread, please contact administration.
Introduction
This script is for all of those who want a new way of looking at the shopping menu.
Features
- Replaces the old shop system.
screenshots
Script
Place the script below all defaults, but above main:
Leon's Shopping System Script
Code:
#===============================================================================
# Leon's Shopping System
#-------------------------------------------------------------------------------
# 3/10/2007
# v. 1.0
#-------------------------------------------------------------------------------
# Instructions:
# Place above main, and below the other default scripts.
# (Yes, that is all of the instructions)
#
# Features:
# Replaces the default shop system.
#
#===============================================================================
#===============================================================================
# Window_Shop_Info
#===============================================================================
class Window_Shop_Info < Window_Base
def initialize
super(160, 0, 480, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh(selection = 0)
self.contents.clear
if selection == 0
self.contents.draw_text(0, 0, 448, 32, "Buy, sell, or leave?", 1)
else
self.contents.draw_text(0, 0, 448, 32, "Press 'Z' for character compatabilitiy.", 1)
end
end
end
#===============================================================================
# END Window_Shop_Info
#===============================================================================
#===============================================================================
# Window_Shop_Option
#===============================================================================
class Window_Shop_Option < Window_Selectable
def initialize
super(0, 0, 160, 128)
@option = ["Buy", "Sell", "Leave"]
@item_max = @option.size
self.contents = Bitmap.new(width - 32, height - 32)
self.index = 0
self.active = true
refresh
end
def refresh
self.contents.clear
for i in 0...@option.size
y = i * 32
self.contents.draw_text(0, y, 128, 32, @option[i], 1)
end
end
end
#===============================================================================
# END Window_Shop_Option
#===============================================================================
#===============================================================================
# Window_Shop_Gold
#===============================================================================
class Window_Shop_Gold < Window_Base
def initialize
super(0, 128, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 60, 32, $data_system.words.gold + ":")
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, 128, 32, $game_party.gold.to_s, 2)
end
end
#===============================================================================
# END Window_Shop_Gold
#===============================================================================
#===============================================================================
# Window_Shop_Own
#===============================================================================
class Window_Shop_Own < Window_Base
def initialize
super(0, 192, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
item = nil
refresh(item)
end
def refresh(item)
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 48, 32, "Own:")
if item == nil
return
end
self.contents.font.color = normal_color
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
self.contents.draw_text(0, 0, 128, 32, number.to_s, 2)
end
end
#===============================================================================
# END Window_Shop_Own
#===============================================================================
#===============================================================================
# Window_Shop_List
#===============================================================================
class Window_Shop_List < Window_Selectable
def initialize(shop_goods)
super(160, 64, 480, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.active = false
self.index = 0
self.visible = false
@shop_goods = shop_goods
@sell = false
end
def item
if @data != nil
return @data[index]
end
end
def refresh
@sell = false
@option_index = nil
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]]
when 1
item = $data_weapons[goods_item[1]]
when 2
item = $data_armors[goods_item[1]]
end
if item != nil
@data.push(item)
end
end
@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
def refresh_sell(option_index)
@sell = true
@option_index = option_index
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
end
end
@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
def draw_item(index)
item = @data[index]
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 @option_index == nil
if item.price <= $game_party.gold and number < 99
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
else
self.contents.font.color = normal_color
end
x = 4
y = index * 32
if item.price == 0
self.contents.font.color = disabled_color
else
self.contents.font.color = normal_color
end
if @sell == false
if item.price < $game_party.gold and number < 99
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
end
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)
if @option_index == nil
self.contents.draw_text(x + 350, y, 88, 32, item.price.to_s, 2)
else
item_price = (item.price / 2).round
self.contents.draw_text(x + 350, y, 88, 32, item_price.to_s, 2)
end
end
end
#===============================================================================
# END Window_Shop_List
#===============================================================================
#===============================================================================
# Window_Shop_Description_Item
#===============================================================================
class Window_Shop_Description_Item < Window_Base
def initialize
super(90, 256, 460, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
item = nil
refresh(item)
end
def refresh(item)
self.contents.clear
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 0, 120, 32, item.name)
self.contents.draw_text(0, 32, 428, 32, item.description)
self.contents.font.color = system_color
self.contents.draw_text(0, 64, 120, 32, "Range:")
self.contents.draw_text(0, 96, 140, 32, "% HP Recovered:")
self.contents.draw_text(0, 128, 140, 32, "% SP Recovered:")
self.contents.draw_text(230, 96, 120, 32, "HP Recovered:")
self.contents.draw_text(230, 128, 120, 32, "SP Recovered:")
self.contents.font.color = normal_color
self.contents.draw_text(150, 96, 90, 32, item.recover_hp_rate.to_s)
self.contents.draw_text(150, 128, 90, 32, item.recover_sp_rate.to_s)
self.contents.draw_text(360, 96, 90, 32, item.recover_hp.to_s)
self.contents.draw_text(360, 128, 90, 32, item.recover_sp.to_s)
case item.scope
when 0
self.contents.draw_text(70, 64, 120, 32, "None")
when 1
self.contents.draw_text(70, 64, 120, 32, "One Enemy")
when 2
self.contents.draw_text(70, 64, 120, 32, "All Enemies")
when 3
self.contents.draw_text(70, 64, 120, 32, "One Ally")
when 4
self.contents.draw_text(70, 64, 120, 32, "All Allies")
when 5
self.contents.draw_text(70, 64, 120, 32, "One Dead Ally")
when 6
self.contents.draw_text(70, 64, 120, 32, "All Dead Allies")
when 7
self.contents.draw_text(70, 64, 120, 32, "User")
end
end
end
#===============================================================================
# END Window_Shop_Description_Item
#===============================================================================
#===============================================================================
# Window_Shop_Description_Equipment
#===============================================================================
class Window_Shop_Description_Equipment < Window_Base
def initialize
super(0, 256, 640, 224)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
item = nil
refresh(item)
end
def refresh(item)
self.contents.clear
if item == nil
return
end
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 0, 120, 32, item.name)
self.contents.draw_text(0, 32, 460, 32, item.description)
self.contents.font.color = system_color
if item.is_a?(RPG::Weapon)
self.contents.draw_text(0, 64, 75, 32, "Attack:")
self.contents.draw_text(0, 96, 120, 32, "Phys. Def:")
self.contents.draw_text(0, 128, 120, 32, "Mag. Def:")
self.contents.draw_text(165, 64, 120, 32, "Str:")
self.contents.draw_text(165, 96, 120, 32, "Dex:")
self.contents.draw_text(165, 128, 120, 32, "Agi:")
self.contents.draw_text(165, 160, 120, 32, "Int:")
self.contents.draw_text(290, 64, 120, 32, "Elements:")
self.contents.draw_text(470, 64, 120, 32, "Inflicts:")
else
self.contents.draw_text(0, 64, 120, 32, "Phys. Def:")
self.contents.draw_text(0, 96, 120, 32, "Mag. Def:")
self.contents.draw_text(0, 128, 120, 32, "Evade:")
self.contents.draw_text(0, 160, 120, 32, "Auto:")
self.contents.draw_text(165, 64, 120, 32, "Str:")
self.contents.draw_text(165, 96, 120, 32, "Dex:")
self.contents.draw_text(165, 128, 120, 32, "Agi:")
self.contents.draw_text(165, 160, 120, 32, "Int:")
self.contents.draw_text(370, 64, 120, 32, "Guards Against:")
end
self.contents.font.color = normal_color
if item.is_a?(RPG::Weapon)
self.contents.draw_text(60, 64, 75, 32, item.atk.to_s)
self.contents.draw_text(90, 96, 75, 32, item.pdef.to_s)
self.contents.draw_text(90, 128, 75, 32, item.mdef.to_s)
self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)
self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)
self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)
self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)
self.contents.font.size = 14
for i in 0...item.element_set.size
x = 265 + i % 2 * 75
y = 80 + i / 2 * 14
self.contents.draw_text(x, y, 120, 32, $data_system.elements[item.element_set[i]])
end
for i in 0...item.plus_state_set.size
x = 445 + i % 2 * 75
y = 80 + i / 2 * 14
self.contents.draw_text(x, y, 120, 32, $data_states[item.plus_state_set[i]].name)
end
else
self.contents.draw_text(90, 64, 75, 32, item.pdef.to_s)
self.contents.draw_text(90, 96, 75, 32, item.mdef.to_s)
self.contents.draw_text(60, 128, 75, 32, item.eva.to_s)
if $data_states[item.auto_state_id] != nil
self.contents.draw_text(55, 160, 75, 32, $data_states[item.auto_state_id].name)
end
self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2)
self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2)
self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2)
self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2)
self.contents.font.size = 14
@defense = []
for i in 0...item.guard_element_set.size
@defense.push($data_system.elements[item.guard_element_set[i]])
end
for i in 0...item.guard_state_set.size
@defense.push($data_states[item.guard_state_set[i]].name)
end
for i in 0...@defense.size
x = 265 + i % 4 * 80
y = 80 + i / 4 * 14
self.contents.draw_text(x + 15, y, 85, 32, @defense[i])
end
end
self.contents.font.size = 22
end
end
#===============================================================================
# END Window_Shop_Description_Equipment
#===============================================================================
#===============================================================================
# Window_Shop_Actors
#===============================================================================
class Window_Shop_Actors < Window_Base
def initialize
super(84, 32, 472, 416)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.active = false
self.z += 100
item = nil
refresh(item)
end
def refresh(item)
self.contents.clear
if item == nil
return
end
for i in 0...$game_party.actors.size
x = i%2 * 236
y = i/2 * 192
draw_actor_graphic($game_party.actors[i], x + 16, y + 48)
draw_actor_name($game_party.actors[i], x + 48, y + 8)
pdef1 = item.pdef
mdef1 = item.mdef
str1 = item.str_plus
dex1 = item.dex_plus
agi1 = item.agi_plus
int1 = item.int_plus
atk2 = 0
eva2 = 0
pdef2 = 0
mdef2 = 0
str2 = 0
dex2 = 0
agi2 = 0
int2 = 0
if item.is_a?(RPG::Weapon)
if $data_weapons[$game_party.actors[i].weapon_id] != nil
atk1 = item.atk
atk2 = $data_weapons[$game_party.actors[i].weapon_id].atk
pdef2 = $data_weapons[$game_party.actors[i].weapon_id].pdef
mdef2 = $data_weapons[$game_party.actors[i].weapon_id].mdef
str2 = $data_weapons[$game_party.actors[i].weapon_id].str_plus
dex2 = $data_weapons[$game_party.actors[i].weapon_id].dex_plus
agi2 = $data_weapons[$game_party.actors[i].weapon_id].agi_plus
int2 = $data_weapons[$game_party.actors[i].weapon_id].int_plus
end
else
eva1 = item.eva
case item.kind
when 0
if $data_armors[$game_party.actors[i].armor1_id] != nil
eva2 = $data_armors[$game_party.actors[i].armor1_id].eva
pdef2 = $data_armors[$game_party.actors[i].armor1_id].pdef
mdef2 = $data_armors[$game_party.actors[i].armor1_id].mdef
str2 = $data_armors[$game_party.actors[i].armor1_id].str_plus
dex2 = $data_armors[$game_party.actors[i].armor1_id].dex_plus
agi2 = $data_armors[$game_party.actors[i].armor1_id].agi_plus
int2 = $data_armors[$game_party.actors[i].armor1_id].int_plus
end
when 1
if $data_armors[$game_party.actors[i].armor2_id] != nil
eva2 = $data_armors[$game_party.actors[i].armor2_id].eva
pdef2 = $data_armors[$game_party.actors[i].armor2_id].pdef
mdef2 = $data_armors[$game_party.actors[i].armor2_id].mdef
str2 = $data_armors[$game_party.actors[i].armor2_id].str_plus
dex2 = $data_armors[$game_party.actors[i].armor2_id].dex_plus
agi2 = $data_armors[$game_party.actors[i].armor2_id].agi_plus
int2 = $data_armors[$game_party.actors[i].armor2_id].int_plus
end
when 2
if $data_armors[$game_party.actors[i].armor3_id] != nil
eva2 = $data_armors[$game_party.actors[i].armor3_id].eva
pdef2 = $data_armors[$game_party.actors[i].armor3_id].pdef
mdef2 = $data_armors[$game_party.actors[i].armor3_id].mdef
str2 = $data_armors[$game_party.actors[i].armor3_id].str_plus
dex2 = $data_armors[$game_party.actors[i].armor3_id].dex_plus
agi2 = $data_armors[$game_party.actors[i].armor3_id].agi_plus
int2 = $data_armors[$game_party.actors[i].armor3_id].int_plus
end
when 3
if $data_armors[$game_party.actors[i].armor4_id] != nil
eva2 = $data_armors[$game_party.actors[i].armor4_id].eva
pdef2 = $data_armors[$game_party.actors[i].armor4_id].pdef
mdef2 = $data_armors[$game_party.actors[i].armor4_id].mdef
str2 = $data_armors[$game_party.actors[i].armor4_id].str_plus
dex2 = $data_armors[$game_party.actors[i].armor4_id].dex_plus
agi2 = $data_armors[$game_party.actors[i].armor4_id].agi_plus
int2 = $data_armors[$game_party.actors[i].armor4_id].int_plus
end
end
end
color1 = Color.new(25, 210, 25, 255)
color2 = Color.new(210, 25, 25, 255)
if $game_party.actors[i].equippable?(item)
self.contents.font.color = normal_color
# PDEF
if (pdef1 - pdef2) > 0
self.contents.font.color = color1
elsif (pdef1 - pdef2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 80, 70, 32, (pdef1 - pdef2).to_s, 2)
# MDEF
if (mdef1 - mdef2) > 0
self.contents.font.color = color1
elsif (mdef1 - mdef2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 112, 70, 32, (mdef1 - mdef2).to_s, 2)
# STR
if (str1 - str2) > 0
self.contents.font.color = color1
elsif (str1 - str2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 48, 70, 32, (str1 - str2).to_s, 2)
# DEX
if (dex1 - dex2) > 0
self.contents.font.color = color1
elsif (dex1 - dex2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 80, 70, 32, (dex1 - dex2).to_s, 2)
# AGI
if (agi1 - agi2) > 0
self.contents.font.color = color1
elsif (agi1 - agi2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 112, 70, 32, (agi1 - agi2).to_s, 2)
# INT
if (int1 - int2) > 0
self.contents.font.color = color1
elsif (int1 - int2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 125, y + 144, 70, 32, (int1 - int2).to_s, 2)
if item.is_a?(RPG::Weapon)
self.contents.font.color = system_color
self.contents.draw_text(x, y + 48, 80, 32, "Atk:")
self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")
self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")
self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")
self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")
self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")
self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")
self.contents.font.color = normal_color
# ATTACK
if (atk1 - atk2) > 0
self.contents.font.color = color1
elsif (atk1 - atk2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 48, 70, 32, (atk1 - atk2).to_s, 2)
# ELSE if armor...
else
self.contents.font.color = system_color
self.contents.draw_text(x, y + 48, 80, 32, "Eva:")
self.contents.draw_text(x, y + 80, 80, 32, "Pdef:")
self.contents.draw_text(x, y + 112, 80, 32, "Mdef:")
self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:")
self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:")
self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:")
self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:")
self.contents.font.color = normal_color
if (eva1 - eva2) > 0
self.contents.font.color = color1
elsif (eva1 - eva2) < 0
self.contents.font.color = color2
else
self.contents.font.color = normal_color
end
self.contents.draw_text(x + 25, y + 48, 70, 32, (eva1 - eva2).to_s, 2)
end
else
self.contents.font.color = disabled_color
self.contents.draw_text(x + 10, y + 80, 120, 32, "Cannot Equip")
self.contents.font.color = normal_color
end
end
end
end
#===============================================================================
# END Window_Shop_Actors
#===============================================================================
#===============================================================================
# Window_Shop_Amount
#===============================================================================
class Window_Shop_Amount < Window_Selectable
attr_accessor :amount
def initialize
super(80, 208, 480, 96)
@item_max = 1
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z += 100
@amount = 1
item = $data_items[1]
option_index = 0
refresh(item, option_index)
end
def refresh(item, option_index)
self.contents.clear
if item == nil
return
end
if option_index == nil
return
end
if option_index == 0
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 200, 32, "How many?")
self.contents.font.color = normal_color
if $game_party.gold < (@amount * item.price)
self.contents.font.color = disabled_color
end
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 32, 120, 32, item.name)
self.contents.draw_text(335, 32, 10, 32, "x")
self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)
self.cursor_rect.set(284, 32, 32, 32)
self.contents.draw_text(370, 32, 70, 32, (@amount * item.price).to_s, 2)
else
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 200, 32, "How many?")
self.contents.font.color = normal_color
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(28, 32, 120, 32, item.name)
self.contents.draw_text(335, 32, 10, 32, "x")
self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2)
self.cursor_rect.set(284, 32, 32, 32)
self.contents.draw_text(370, 32, 70, 32, (@amount * (item.price / 2)).to_s, 2)
end
end
end
#===============================================================================
# END Window_Shop_Amount
#===============================================================================
#===============================================================================
# Scene_Shop
#===============================================================================
class Scene_Shop
def main
@counter = 0
@info_window = Window_Shop_Info.new
@option_window = Window_Shop_Option.new
@gold_window = Window_Shop_Gold.new
@own_window = Window_Shop_Own.new
@list_window = Window_Shop_List.new($game_temp.shop_goods)
@desc_item_window = Window_Shop_Description_Item.new
@desc_equip_window = Window_Shop_Description_Equipment.new
@actor_window = Window_Shop_Actors.new
@amount_window = Window_Shop_Amount.new
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@info_window.dispose
@option_window.dispose
@gold_window.dispose
@own_window.dispose
@list_window.dispose
@desc_item_window.dispose
@desc_equip_window.dispose
@actor_window.dispose
@amount_window.dispose
end
def update
@info_window.update
@option_window.update
@gold_window.update
@own_window.update
@list_window.update
@desc_item_window.update
@desc_equip_window.update
@actor_window.update
@amount_window.update
if @option_window.active
update_option
return
end
if @list_window.active
update_list
return
end
if @actor_window.visible
update_actors
return
end
if @amount_window.active and @option_window.index == 0
update_amount
return
end
if @amount_window.active and @option_window.index == 1
update_sell
return
end
end
def update_option
@info_window.refresh(0)
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
case @option_window.index
when 0
$game_system.se_play($data_system.decision_se)
@list_window.refresh
@option_window.active = false
@list_window.visible = true
@list_window.active = true
@list_window.index = 0
when 1
$game_system.se_play($data_system.decision_se)
@list_window.refresh_sell(@option_window.index)
@option_window.active = false
@list_window.visible = true
@list_window.active = true
@list_window.index = 0
when 2
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
end
end
def update_list
@info_window.refresh(1)
@item = @list_window.item
if @counter != 1
if @item.is_a?(RPG::Item)
@desc_item_window.refresh(@item)
@counter = 1
else
@desc_equip_window.refresh(@item)
@counter = 1
end
end
@own_window.refresh(@list_window.item)
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
@counter = 0
end
if @item.is_a?(RPG::Item)
if @counter != 1
@desc_item_window.refresh(@item)
@counter = 1
end
@desc_item_window.visible = true
@desc_equip_window.visible = false
else
if @counter != 1
@desc_equip_window.refresh(@item)
@counter = 1
end
@desc_item_window.visible = false
@desc_equip_window.visible = true
end
if Input.trigger?(Input::B)
@counter = 0
$game_system.se_play($data_system.cancel_se)
@desc_item_window.visible = false
@desc_equip_window.visible = false
@desc_item_window.refresh(nil)
@desc_equip_window.refresh(nil)
@option_window.active = true
@list_window.visible = false
@list_window.active = false
@own_window.refresh(nil)
return
end
if Input.trigger?(Input::A)
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.decision_se)
@actor_window.refresh(@item)
@actor_window.visible = true
@list_window.active = false
return
else
$game_system.se_play($data_system.buzzer_se)
end
end
if Input.trigger?(Input::C)
if @item == nil or @item.id == 0 or @item.price == 0
$game_system.se_play($data_system.buzzer_se)
return
end
if @option_window.index == 0
case @item
when RPG::Item
if $game_party.item_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
end
when RPG::Weapon
if $game_party.weapon_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
end
when RPG::Armor
if $game_party.armor_number(@item.id) >= 99
$game_system.se_play($data_system.buzzer_se)
return
end
end
end
$game_system.se_play($data_system.decision_se)
@amount_window.visible = true
@amount_window.active = true
@list_window.active = false
return
end
end
def update_actors
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@actor_window.visible = false
@list_window.active = true
end
end
def update_amount
@amount_window.refresh(@item, @option_window.index)
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@amount_window.amount = 1
@amount_window.visible = false
@amount_window.active = false
@list_window.active = true
return
end
if Input.trigger?(Input::C)
if $game_party.gold >= (@amount_window.amount * @item.price)
$game_system.se_play($data_system.decision_se)
$game_party.lose_gold(@amount_window.amount * @item.price)
case @item
when RPG::Item
$game_party.gain_item(@item.id, @amount_window.amount)
when RPG::Weapon
$game_party.gain_weapon(@item.id, @amount_window.amount)
when RPG::Armor
$game_party.gain_armor(@item.id, @amount_window.amount)
end
@gold_window.refresh
@amount_window.amount = 1
@amount_window.visible = false
@amount_window.active = false
@list_window.active = true
@list_window.refresh
return
else
$game_system.se_play($data_system.buzzer_se)
end
end
if Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount -= 1
if @amount_window.amount == 0
@amount_window.amount = 1
end
return
end
if Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount += 1
case @item
when RPG::Item
if ($game_party.item_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.item_number(@item.id))
end
when RPG::Weapon
if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.weapon_number(@item.id))
end
when RPG::Armor
if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.armor_number(@item.id))
end
end
return
end
if Input.trigger?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount += 10
case @item
when RPG::Item
if ($game_party.item_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.item_number(@item.id))
end
when RPG::Weapon
if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.weapon_number(@item.id))
end
when RPG::Armor
if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99
@amount_window.amount = (99 - $game_party.armor_number(@item.id))
end
end
return
end
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount -= 10
if @amount_window.amount < 1
@amount_window.amount = 1
end
return
end
end
def update_sell
@amount_window.refresh(@item, @option_window.index)
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@amount_window.amount = 1
@amount_window.visible = false
@amount_window.active = false
@list_window.active = true
return
end
if Input.trigger?(Input::C)
if @item.price == 0
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
case @item
when RPG::Item
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_item(@item.id, @amount_window.amount)
when RPG::Weapon
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_weapon(@item.id, @amount_window.amount)
when RPG::Armor
$game_party.gain_gold(@amount_window.amount * (@item.price / 2))
$game_party.lose_armor(@item.id, @amount_window.amount)
end
@gold_window.refresh
@amount_window.amount = 1
@amount_window.visible = false
@amount_window.active = false
@list_window.active = true
@list_window.refresh_sell(@option_window.index)
@desc_equip_window.refresh(nil)
@desc_item_window.refresh(nil)
end
if Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount -= 1
if @amount_window.amount < 1
@amount_window.amount = 1
end
end
if Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
case @item
when RPG::Item
@amount_window.amount += 1
if @amount_window.amount > $game_party.item_number(@item.id)
@amount_window.amount = $game_party.item_number(@item.id)
end
when RPG::Weapon
@amount_window.amount += 1
if @amount_window.amount > $game_party.weapon_number(@item.id)
@amount_window.amount = $game_party.weapon_number(@item.id)
end
when RPG::Armor
@amount_window.amount += 1
if @amount_window.amount > $game_party.armor_number(@item.id)
@amount_window.amount = $game_party.armor_number(@item.id)
end
end
end
if Input.trigger?(Input::UP)
$game_system.se_play($data_system.cursor_se)
case @item
when RPG::Item
@amount_window.amount += 10
if @amount_window.amount > $game_party.item_number(@item.id)
@amount_window.amount = $game_party.item_number(@item.id)
end
when RPG::Weapon
@amount_window.amount += 10
if @amount_window.amount > $game_party.weapon_number(@item.id)
@amount_window.amount = $game_party.weapon_number(@item.id)
end
when RPG::Armor
@amount_window.amount += 10
if @amount_window.amount > $game_party.armor_number(@item.id)
@amount_window.amount = $game_party.armor_number(@item.id)
end
end
end
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@amount_window.amount -= 10
if @amount_window.amount < 1
@amount_window.amount = 1
end
end
end
end
Instructions
Please look in-script.
Compatibility
There are no known compatability issues.
Credits and Thanks
The only person to really credit is me.