RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
HELP with Leon's Shop Script

0 Members and 1 Guest are viewing this topic.

*
Rep: +0/-0Level 72
RMRK Junior
This one's a little older, but it works great. The only problem is that when the character has no weapon equipped, it can't calulate a value for the original attack and so it can't perform it's function to see whether the attack is increased or decreased by the new weapon. It results in a NoMethodError and closes the game. Can anyone fix this??? I've included the script below. The lines in question are 605-613.

Code: [Select]
#========================================================================
# 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