I am using Law's Custom Equipment Screen, but the code I am posting has been modified. The problem I am having is that the CBS that I am using is overright the default settings for the help/information box. So I need to figure out how to not change it for the CBS but change it for the equipment screen and I am not sure how. I also would like to be able to add a "Equip, Remove, Optimize, Remove All" option in the top left corner. Equip would function normally, remove would remove one equipped item of choice, Optimize would only effect weapon, shield, armor, and helmet, not effecting accessories, and remove all would remove everything equipped. Aftering searching post, forums from different sites and googling, I am posting up here in hope that someone can help me out.
Code:
#------------------------------------------------------------------------------
#==============================================================================
#==============================================================================
#====================*Law's Custom Equipment Screen*===========================
#=========================Author: The Law G14==================================
#============================Version 1.0=======================================
#==============================================================================
#------------------------------------------------------------------------------
#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipLeft < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(224, 227, 415, 190)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_parameter(@actor, 4, 0, 0)
draw_actor_parameter(@actor, 4, 18, 1)
draw_actor_parameter(@actor, 4, 36, 2)
draw_actor_parameter(@actor, 4, 54, 3)
draw_actor_parameter(@actor, 4, 72, 4)
draw_actor_parameter(@actor, 4, 90, 5)
draw_actor_parameter(@actor, 4, 108, 6)
if @new_atk != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 0, 40, 32, '->', 1)
if @new_atk > @actor.atk
self.contents.font.color = Color.new(0,255,0)
elsif (@new_atk < @actor.atk)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 0, 36, 32, @new_atk.to_s, 2)
end
if @new_pdef != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 18, 40, 32, '->', 1)
if @new_pdef > @actor.pdef
self.contents.font.color = Color.new(0,255,0)
elsif (@new_pdef < @actor.pdef)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 18, 36, 32, @new_pdef.to_s, 2)
end
if @new_mdef != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 36, 40, 32, '->', 1)
if @new_mdef > @actor.mdef
self.contents.font.color = Color.new(0,255,0)
elsif (@new_mdef < @actor.mdef)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 36, 36, 32, @new_mdef.to_s, 2)
end
if @new_str != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 54, 40, 32, '->', 1)
if @new_str > @actor.str
self.contents.font.color = Color.new(0,255,0)
elsif (@new_str < @actor.str)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 54, 36, 32, @new_str.to_s, 2)
end
if @new_dex != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 72, 40, 32, '->', 1)
if @new_dex > @actor.dex
self.contents.font.color = Color.new(0,255,0)
elsif (@new_dex < @actor.dex)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 72, 36, 32, @new_dex.to_s, 2)
end
if @new_agi != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 90, 40, 32, '->', 1)
if @new_agi > @actor.agi
self.contents.font.color = Color.new(0,255,0)
elsif (@new_agi < @actor.agi)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 90, 36, 32, @new_agi.to_s, 2)
end
if @new_int != nil
self.contents.font.color = normal_color
self.contents.draw_text(160, 108, 40, 32, '->', 1)
if @new_int > @actor.int
self.contents.font.color = Color.new(0,255,0)
elsif (@new_int < @actor.int)
self.contents.font.color = Color.new(255,0,0)
end
self.contents.draw_text(180, 108, 36, 32, @new_int.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Set parameters after changing equipment
# new_atk : attack power after changing equipment
# new_pdef : physical defense after changing equipment
# new_mdef : magic defense after changing equipment
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int)
if @new_atk != new_atk || @new_pdef != new_pdef || @new_mdef != new_mdef ||
@new_str != new_str || @new_dex != new_dex || @new_agi != new_agi ||
@new_int != new_int
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
refresh
end
end
end
#==============================================================================
# ** Window_EquipRight
#------------------------------------------------------------------------------
# This window displays items the actor is currently equipped with on the
# equipment screen.
#==============================================================================
class Window_EquipRight < Window_Selectable
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(224, 0, 415, 228)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# * Draw Actor Face Graphic
#--------------------------------------------------------------------------
def draw_actor_face_graphic(actor, x, y)
bitmap = RPG::Cache.battler(actor.battler_name, 0)
self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_face_graphic(@actor, x + 62, y + 30)
draw_actor_name(@actor, x + 75, 0)
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.draw_text(4, 32 * 0, 160, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 160, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 160, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 160, 32, $data_system.words.armor3)
self.contents.draw_text(5, 32 * 4, 160, 32, $data_system.words.armor4)
draw_item_name(@data[0], 140, 32 * 0)
draw_item_name(@data[1], 140, 32 * 1)
draw_item_name(@data[2], 140, 32 * 2)
draw_item_name(@data[3], 140, 32 * 3)
draw_item_name(@data[4], 140, 32 * 4)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# equip_type : equip region (0-3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
super(0, 87, 225, 330)
@actor = actor
@equip_type = equip_type
@column_max = 1
refresh
self.active = false
self.index = -1
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 = []
# Add equippable weapons
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# Add equippable armor
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# Add blank page
@data.push(nil)
# Make a bit map and draw all items
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 160, y, 16, 32, "x", 1)
self.contents.draw_text(x + 163, y, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
# This class performs equipment screen processing.
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Object Initialization
# actor_index : actor index
# equip_index : equipment index
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
@equip_index = equip_index
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Get actor
@actor = $game_party.actors[@actor_index]
# Make windows
@help_window = Window_Help.new
@left_window = Window_EquipLeft.new(@actor)
@right_window = Window_EquipRight.new(@actor)
@item_window1 = Window_EquipItem.new(@actor, 0)
@item_window2 = Window_EquipItem.new(@actor, 1)
@item_window3 = Window_EquipItem.new(@actor, 2)
@item_window4 = Window_EquipItem.new(@actor, 3)
@item_window5 = Window_EquipItem.new(@actor, 4)
# Associate help window
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
# Set cursor position
@right_window.index = @equip_index
refresh
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Set item window to visible
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# Get currently equipped item
item1 = @right_window.item
# Set current item window to @item_window
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
# If right window is active
if @right_window.active
# Erase parameters for after equipment change
@left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)
end
# If item window is active
if @item_window.active
# Get currently selected item
item2 = @item_window.item
# Change equipment
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
# Get parameters for after equipment change
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
# Return equipment
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# Draw in left window
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int)
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@left_window.update
@right_window.update
@item_window.update
refresh
# If right window is active: call update_right
if @right_window.active
update_right
return
end
# If item window is active: call update_item
if @item_window.active
update_item
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when right window is active)
#--------------------------------------------------------------------------
def update_right
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
$scene = Scene_Menu.new(2)
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If equipment is fixed
if @actor.equip_fix?(@right_window.index)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Activate item window
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
# If R button was pressed
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
@actor_index += 1
@actor_index %= $game_party.actors.size
# Switch to different equipment screen
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
# If L button was pressed
if Input.trigger?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To previous actor
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# Switch to different equipment screen
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Activate right window
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play equip SE
$game_system.se_play($data_system.equip_se)
# Get currently selected data on the item window
item = @item_window.item
# Change equipment
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
# Activate right window
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# Remake right window and item window contents
@right_window.refresh
@item_window.refresh
return
end
end
end