Retaime's nice and easy to understand. It doesn't cover battlers though...I would try making some battler edits and seeing if you can even do all that work.
All pics go in CharacterSets folder
#==============================================================================
# ? Visual_Equipment
# Written by Rataime
#
# Edit below
#
# Note : If you have a custom Window_SaveFile, check the one at the end of the script,
# add the added lines to yours, and delete the whole Window_SaveFile class here
#==============================================================================
def equip_update(light=false)
$visual_equipment=Array.new
$visual_equipment[0]=light
for i in 0..3
$visual_equipment[i+1]=[]
end
#===================================================
# ? EDIT HERE !
#===================================================
#If weapon n°33 is equiped, add the charset tpl_helmet_1.png (I don't have a weapon charset ><)
#add_weapon_sprite(33,"tpl_helmet_1")
#If weapon n°6 is equiped, add the charset tpl_helmet_1.png
add_armor_sprite(6,"tpl_helmet_1")
add_armor_sprite(7,"tpl_helmet_2")
add_armor_sprite(20,"tpl_armor_white")
add_armor_sprite(15,"tpl_armor_blue")
add_armor_sprite(21,"tpl_armor_cape")
#===================================================
# ? Visual_equip functions
#===================================================
RPG::Cache.clear
@game_party = $game_party
@game_party = $game_party2 if $visual_equipment[0]
for i in 0...@game_party.actors.size
for img in $visual_equipment[i+1]
bitmap = RPG::Cache.character(@game_party.actors[i].character_name, @game_party.actors[i].character_hue)
if img!=true and img!=false
add_equip(bitmap,img,i)
end
end
end
end
def add_equip(sprite,to_add,character)
@game_party = $game_party
@game_party = $game_party2 if $visual_equipment[0]
bmp = Sprite.new
bmp.visible =false
bmp.bitmap = RPG::Cache.character(to_add,@game_party.actors[character].character_hue)
color = bmp.bitmap.get_pixel(0, 0)
x=sprite.width
y=sprite.height
if $visual_equipment[0]
x=x/4
y=y/4
end
for i in 0..x
for j in 0..y
color_get=bmp.bitmap.get_pixel(i, j)
if color_get!=color
sprite.set_pixel(i, j ,color_get)
end
end
end
bmp=nil
end
def add_weapon_sprite(id,sprite)
@game_party = $game_party
@game_party = $game_party2 if $visual_equipment[0]
for i in 0...@game_party.actors.size
if @game_party.actors[i].weapon_id==id
$visual_equipment[i+1].push(sprite)
end
end
end
def add_armor_sprite(id,sprite)
@game_party = $game_party
@game_party = $game_party2 if $visual_equipment[0]
for i in 0...@game_party.actors.size
if @game_party.actors[i].armor1_id==id or @game_party.actors[i].armor2_id==id or @game_party.actors[i].armor3_id==id or @game_party.actors[i].armor4_id==id
$visual_equipment[i+1].push(sprite)
end
end
end
#===================================================
# ? CLASS Scene_Equip edit
#===================================================
class Scene_Equip
alias visual_update_right update_right
def update_right
if Input.trigger?(Input::B)
equip_update
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(2)
return
end
visual_update_right
end
end
class Interpreter
alias visual_command_319 command_319
def command_319
actor = $game_actors[@parameters[0]]
if actor != nil
actor.equip(@parameters[1], @parameters[2])
end
equip_update
return true
end
end
class Game_Character
attr_accessor :character_hue
end
class Game_Actor < Game_Battler
alias visual_setup setup
def setup(actor_id)
visual_setup(actor_id)
@character_hue = (@character_hue+1)%256
end
end
class Scene_Load
alias visual_read_save_data read_save_data
alias visual_on_cancel on_cancel
def on_cancel
equip_update
visual_on_cancel
end
def read_save_data(file)
visual_read_save_data(file)
equip_update
end
end
class Scene_Save
alias visual_on_decision on_decision
alias visual_on_cancel on_cancel
def on_cancel
equip_update
visual_on_cancel
end
def on_decision(file)
equip_update
visual_on_decision(file)
end
end
class Scene_Title
alias visual_command_new_game command_new_game
def command_new_game
visual_command_new_game
equip_update
end
end
class Window_SaveFile < Window_Base
def initialize(file_index, filename)
super(0, 64 + file_index % 4 * 104, 640, 104)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
@file_index = file_index
@filename = "Save#{@file_index + 1}.rxdata"
@time_stamp = Time.at(0)
@file_exist = FileTest.exist?(@filename)
if @file_exist
file = File.open(@filename, "r")
@time_stamp = file.mtime
@characters = Marshal.load(file)
@frame_count = Marshal.load(file)
@game_system = Marshal.load(file)
@game_switches = Marshal.load(file)
@game_variables = Marshal.load(file)
@self_variables = Marshal.load(file)#added
@game_screen = Marshal.load(file)#added
@game_actors = Marshal.load(file)#added
$game_party2=@game_party= Marshal.load(file)#added
@total_sec = @frame_count / Graphics.frame_rate
file.close
end
equip_update(true)#added
refresh
@selected = false
end
end