## [VX] Composite Character Sets / Visual Equipment

Started by modern algebra, July 13, 2008, 10:08:05 pm

#### modern algebra

##### July 13, 2008, 10:08:05 pmLast Edit: May 29, 2009, 11:05:08 am by modern algebra
Composite Characters / Visual Equipment
Authors: modern algebra
Version: 1.0
Key Term: Player / Party / Troop Add-on

Introduction

This script allows you to create character sets from multiple character sheets, layering them on top of each other. It also allows you to set character graphics to armors and weapons, and these character sets will be layered on top of the character, thus making it a Visual Equipment script as well.

Features

• Easy configuration

• Hundreds of unique characters can be made from a limited set of resources.

• Allows you to set hue for character sheets, meaning each resource can have hundreds of distinct colours.

• Allows any weapon or armor to have any number of character sets stacked onto the character upon equip.

• Events and Actors can also be set up so that they are composed of multiple character sets

Screenshots

Spoiler: Show

All character sets seen composed of this one character sheet, with all resources taken from the character generator here: http://www.famitsu.com/freegame/tool/chibi/index1.html
Spoiler: Show

Demo

Script

Spoiler: Show

#==============================================================================
#  Composite Characters / Visual Equipment
#  Version 1.2
#  Author: modern algebra (rmrk.net)
#  Date: May 29, 2009
#  Original Release Date: July 5, 2008
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place this script in between Materials and Main in the Script Editor
#
#    Basically, to work this script you need to do two things. 1) Setup your
#  actors default character sets - you will see a full set of instructions at
#  line xx. Now, to set a graphic for an armor or weapon, all you need to do
#  is place this code in the Notes box of the item:
#
#    \CG[<Name of Character Set>, <index in character set>, <hue>, <z>]
#
#  If you leave out index, it defaults to 0 and if you leave out hue, it also
#  defaults to 0. You can put more than one graphic to an armor or weapon and
#  they will stack by priority (z). Things with lower priority are drawn first.
#
#    Setting up an Event is similar - all you need to do is place a comment at
#  the very beginning of the event and put in the same code to generate a
#  composite character set for the event. Same rules apply, and remember, you
#  can stack character sets.
#
#  EXAMPLES:
#    \cg[Actor1, 2]        # Character Set = Actor1 : index = 2 : hue = 0 : z = 0
#    \CG[Evil]             # Character Set = Evil   : index = 0 : hue = 0 : z = 0
#    \cG[Actor2, 3, 50, 2] # Character Set = Actor2 : index = 3 : hue = 50 : z = 2
#
#    You can now remove and add graphics to the actor using the following codes
#  in a script call:
#
#   remove_graphic_from_actor (actor_id, index)
#   remove_graphic_from_actor (actor_id, graphic_name, graphic_index, graphic_hue)
#   add_graphic_to_actor (actor_id, graphic_name, graphic_index, graphic_hue, index)
#
#  where:
#    actor_id      : the ID of the actor whose graphic you are changing
#    index         : the index of the graphic in the actor's composite_character
#    graphic_name  : the name of the character set
#    graphic_index : the index of the character file in the set
#    graphic_hue   : the hue of the graphic
#
#    Also, the Change Actor Graphic event command now adds character sets to
#  the current set. You can clear an actor's character set with the code:
#
#    clear_character_graphic (actor_id)
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Compatibility:
#
#    Unfortunately, I did need to overwrite some methods for this script, and
#  as such there are likely to be compatibility problems. I know that my
#  Extra Movement Frames Script certainly will not work with this script, and
#  any script that tampers with the way a character set is drawn will also
#  likely encounter problems. Now, this is not to say that any script that
#  draws a character set will be incompatible - as long as that scripter uses
#  the draw_actor_graphic method of Window_Base it should work fine - it is
#  only scripts that change the way a character set is drawn that will cause
#  problems. Also, I tamper with the load_gamedata method of Window_SaveFile,
#  and so if another script overwrites that then there will again be
#  compatibility issues. If you find a script that seems to cause problems,
#  please post at the topic at rmrk.net and I will try my best to assist you.
#
#    Diedrupo's Caterpillar Script does not work immediately. A fix is posted
#  in this script's topic at rmrk.net.
#    Tankentai Sideview Battle System will not use composite character sprites
#  without a fix. That fix is also posted in this script's topic at rmrk.net
#==============================================================================

#==============================================================================
# *** module Cache
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - composite_character
#==============================================================================

module Cache
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Composite Character
#    char_array : An array holding the names of all parts of a graphic
#``````````````````````````````````````````````````````````````````````````
#  Composes a single character bitmap out of all the ones given.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def self.composite_character (char_array)
@cache = {} if @cache == nil
# Blank bitmap if there is nothing in the array.
@cache[char_array] = Bitmap.new (32, 32) if char_array.empty?
# If not in the cache
if !@cache.include? (char_array) || @cache[char_array].disposed?
# Create a template bitmap
bitmap = Bitmap.new (32, 32)
# Add in all other graphics
char_array.each { |i|
name, index, hue = i[0], i[1], i[2]
# Bypass self.character in order to allow for setting hue
bmp = load_bitmap ("Graphics/Characters/", name, hue)
sign = name[/^[\!\\$]./]
# Get the width and height of the single character
if sign != nil && sign.include? ('\$')
wdth, hght = bmp.width, bmp.height
else
wdth = bmp.width / 4
hght = bmp.height / 2
end
# Expand bitmap if necessary
if bitmap.width < wdth || bitmap.height < hght
# Recreate bitmap
temp_bmp = bitmap.dup
bitmap = Bitmap.new ([temp_bmp.width, wdth].max, [temp_bmp.height, hght].max)
bitmap.blt (0, 0, temp_bmp, temp_bmp.rect)
temp_bmp.dispose
end
# Draw new character graphic onto bitmap
src_rect = Rect.new ((index%4)*wdth, (index/4)*hght, wdth, hght)
bitmap.blt (0, 0, bmp, src_rect)
}
@cache[char_array] = bitmap
end
return @cache[char_array]
end
end

#==============================================================================
# ** RPG::BaseItem
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - character_graphics
#==============================================================================

class RPG::BaseItem
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Character Graphics
#``````````````````````````````````````````````````````````````````````````
#  Retrieves Character Graphics from Note Field
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def character_graphics
graphics = []
# Retrieve Note Field
text = self.note.dup
while text.sub! (/\\cg\[([^,\]]+),*\s*(\d*),*\s*(\d*),*\s*(\d*)\]/i) { '' } != nil
a = [\$1.to_s, (\$2 != nil ? \$2.to_i : 0), (\$3 != nil ? \$3.to_i : 0), (\$4 != nil ? \$4.to_i : 0)]
graphics.push (a)
end
return graphics
end
end

#==============================================================================
# ** Game_Actor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new methods - composite_character, clear_character
#    aliased methods - initialize, change_equip, set_graphic
#    new public instance variables - ma_composite_character, ma_return_composite
#==============================================================================

class Game_Actor
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Public Instance Variable
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attr_accessor :ma_composite_character
attr_accessor :ma_return_composite
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Object Initalization
#`````````````````````````````````````````````````````````````````````````
#  Initializes stacked_character variable
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_arclght_vsual_equip_init_4t6h initialize
def initialize (id)
# Run Original Method
modalg_arclght_vsual_equip_init_4t6h (id)
@ma_composite_character = []
@ma_return_composite = false
case @actor_id
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
# EDITABLE REGION
#|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#  An actor will automatically have whatever you set in the database
#  as a bottom layer for him, but if you need to have other character
#  sets piled on top, then put them in this format:
#
#  when <actor_id>
#    @ma_composite_character.push (['graphic_name', index, hue, z])
#      *for as many graphics as you want - first ones drawn first. If you
#       want to know what each is, see the Instructions in the header.
#       The z value allows you to set priority. So, something with -1
#       z will be drawn below anything with a greater z value
#/////////////////////////////////////////////////////////////////////
when 1 # 1st Actor
# Create Hair Sprite
@ma_composite_character.push (['VisEquipSample', 1, 100])
when 3 # 3rd Actor
# Create skin sprite with different hue
@ma_composite_character.push (['VisEquipSample', 0, 20])
# Create Hair Sprites
@ma_composite_character.push (['VisEquipSample', 2, 75])
@ma_composite_character.push (['VisEquipSample', 3, 75])
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
# END EDITABLE REGION
#/////////////////////////////////////////////////////////////////////
end
@ma_composite_character.each { |i|
i[1] = 0 if i[1] == nil
i[2] = 0 if i[2] == nil
i[3] = 0 if i[3] == nil
}
@ma_composite_character.unshift ([@character_name, @character_index, 0, -1]) if @character_name != ''
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Get Composite Character
#``````````````````````````````````````````````````````````````````````````
#  Returns Graphic Array for the actor
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def composite_character
armor_graphics = []
weapon_graphics = []
# Body Armor, then Helmet, then Shield, then all others
dup_armors = armors.dup
for i in 0...2
j = 2 - i
armor_graphics += dup_armors[j].character_graphics if dup_armors[j] != nil
dup_armors.delete_at (j)
end
# If there is some multi-equip script, will get accessories and rest in order
dup_armors.each { |armr| armor_graphics += armr.character_graphics if armr != nil }
weapons.each { |wpn| weapon_graphics += wpn.character_graphics if wpn != nil }
cg = @ma_composite_character + armor_graphics + weapon_graphics
cg.sort! { |a, b| a[3] <=> b[3] }
return cg
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Change Graphics
#     character_name  : new character graphic filename
#     character_index : new character graphic index
#     face_name       : new face graphic filename
#     face_index      : new face graphic index
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias ma_cgve_st_grphic_evnt_6ht3 set_graphic
def set_graphic(character_name, character_index, face_name, face_index)
old_char_name, old_char_index = @character_name, @character_index
# Run Original Method
ma_cgve_st_grphic_evnt_6ht3 (character_name, character_index, face_name, face_index)
# Find old character name
count = 0
@ma_composite_character.each { |char|
count += 1
break if char[0] == old_char_name && char[1] == old_char_index
}
# Put in new character directly after old one
@ma_composite_character.insert (count, [@character_name, @character_index, 0, -1])
\$game_player.refresh
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Clear Graphic
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def clear_graphic
@ma_composite_character.clear
@ma_composite_character.push ([@character_name, @character_index, 0, -1])
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Character Name
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modrnalgbra_comp_char_retrn_charctrnm_6gd4 character_name
def character_name
if @ma_return_composite
@ma_return_composite = false
return self.composite_character
end
return modrnalgbra_comp_char_retrn_charctrnm_6gd4
end
end

#==============================================================================
# ** Game_Character
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new instance variable - composite_character
#==============================================================================

class Game_Character
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Public Instance Variables
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
end

#==============================================================================
# ** Game_Event
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - setup
#==============================================================================

class Game_Event
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Event page setup
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias malgbr_rclgh_req_comp_char_setup_5msk setup
def setup(new_page)
malgbr_rclgh_req_comp_char_setup_5msk (new_page)
# Create Composite Character
@composite_character = []
@composite_character.push ([@character_name, @character_index, 0, -1]) unless @character_name.nil?
# If page == nil, return
return if @page == nil
@page.list.each { |i| i.code == 108 || i.code == 408 ? comments.push (i) : break }
# Evaluate comments for \CG codes
text = i.parameters[0].dup
while text.sub! (/\\cg\[([^,\]]+),*\s*(\d*),*\s*(\d*),*\s*(\d*)\]/i) { '' } != nil
a = [\$1.to_s, (\$2 != nil ? \$2.to_i : 0), (\$3 != nil ? \$3.to_i : 0), (\$4 != nil ? \$4.to_i : 0)]
@composite_character.push (a)
end
}
# Sort Composite Characters by z value.
@composite_character.sort! { |a, b| a[3] <=> b[3] }
end
end

#==============================================================================
# ** Game_Player
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - refresh
#==============================================================================

class Game_Player
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Refresh
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias mdalg_arc_comp_character_find_rfrsh_8kwi refresh
def refresh
mdalg_arc_comp_character_find_rfrsh_8kwi
return if \$game_party.members.empty?
@composite_character = \$game_party.members[0].composite_character
end
end

#==============================================================================
# ** Game_Interpreter
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - clear_character_graphic
#==============================================================================

class Game_Interpreter
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Clear Character Graphic
#    actor_id : the ID of the actor to be cleared
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def clear_character_graphic (actor_id)
\$game_actors[actor_id].clear_graphic
\$game_player.refresh
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Remove Graphic From Character
#    actor_id : the ID of the actor
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def remove_graphic_from_actor (actor_id, *args)
actor = \$game_actors[actor_id]
if args[0].is_a? (Integer)
index = args[0]
else
index = 0
# Find index of the specified character set
for composite in actor.ma_composite_character
if (args[0] != nil || args[0] == composite[0]) &&
(args[1] != nil || args[1] == composite[1]) &&
(args[2] != nil || args[2] == composite[2])
break
end
index += 1
end
end
# Delete graphic from array
actor.ma_composite_character.delete_at (index)
\$game_player.refresh
return index
end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Add Graphic To Character
#    actor_id                        : the ID of the actor
#    char_name, char_index, char_hue : character graphic specifications
#    index                           : where to insert the new graphic
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def add_graphic_to_actor (actor_id, char_name, char_index = 0, char_hue = 0, z = 0, index = nil)
actor = \$game_actors[actor_id]
index = actor.ma_composite_character.size if index.nil?
actor.ma_composite_character.insert (index, [char_name, char_index, char_hue, z])
\$game_player.refresh
end
end

#==============================================================================
# ** Sprite_Character
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - update_bitmap
#==============================================================================

class Sprite_Character
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Update Transfer Origin Bitmap
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modern_alg_arclightrequest_visual_equip_bmp_update update_bitmap
def update_bitmap
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_index != @character.character_index ||
@composite_character != @character.composite_character
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_index = 0
@composite_character = @character.composite_character
if @tile_id > 0
sx = (@tile_id / 128 % 2 * 8 + @tile_id % 8) * 32;
sy = @tile_id % 256 / 8 % 16 * 32;
self.bitmap = tileset_bitmap(@tile_id)
self.src_rect.set(sx, sy, 32, 32)
self.ox = 16
self.oy = 32
else
if @composite_character == nil
# Regular Character Picture
self.bitmap = Cache.character(@character_name)
sign = @character_name[/^[\!\\$]./]
if sign != nil and sign.include?('\$')
@cw = bitmap.width / 3
@ch = bitmap.height / 4
else
@cw = bitmap.width / 12
@ch = bitmap.height / 8
end
else
self.bitmap = Cache.composite_character(@composite_character)
@cw = self.bitmap.width / 3
@ch = self.bitmap.height / 4
end
self.ox = @cw / 2
self.oy = @ch
end
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Update Transfer Origin Rectangle
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def update_src_rect
if @tile_id == 0
index = 0
pattern = @character.pattern < 3 ? @character.pattern : 1
sx = (index % 4 * 3 + pattern) * @cw
sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @ch
self.src_rect.set(sx, sy, @cw, @ch)
end
end
end

#==============================================================================
# ** Window_Base
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    overwritten method - draw_character_graphic
#==============================================================================

class Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Draw Actor Walking Graphic
#     actor : actor or comp character array
#     x     : draw spot x-coordinate
#     y     : draw spot y-coordinate
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def draw_actor_graphic(actor, x, y)
composite_character = actor.is_a? (Array) ? actor : actor.composite_character
bitmap = Cache.composite_character (composite_character)
cw = bitmap.width / 3
ch = bitmap.height / 4
rect = Rect.new (cw, 0, cw, ch)
self.contents.blt (x - (cw / 2), y - ch, bitmap, rect)
end
end

#==============================================================================
# ** Window_SaveFile
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    overwritten_methods - draw_party_characters
#==============================================================================

class Window_SaveFile < Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Draw Party Characters
#     x : Draw spot X coordinate
#     y : Draw spot Y coordinate
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def draw_party_characters(x, y)
for i in 0...@characters.size
draw_actor_graphic (@characters[i][0], x + i * 48, y)
end
end
end

#==============================================================================
# ** Scene_File
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - write_save_data
#==============================================================================

class Scene_File
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Write Save Data
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modrnbra_wrt_svdata_comp_chactes_63gb5 write_save_data
def write_save_data (*args)
# Set it to return composite characters
\$game_party.members.each { |actor| actor.ma_return_composite = true }
# Run Original Method
modrnbra_wrt_svdata_comp_chactes_63gb5 (*args)
end
end

#==============================================================================
# ** Scene_Equip (For compatibility with KGC
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - terminate
#==============================================================================

class Scene_Equip
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Terminate
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_trmnte_cg_equipment_k8g9c terminate
def terminate
# RUn Original Method
modalg_trmnte_cg_equipment_k8g9c
\$game_player.refresh
end
end

Instructions

Please see inside script for detailed instructions.

Compatibility

Any scripts that play around with the way character sets are drawn will undoubtedly have some problems with this script. If you encounter any problems, please post the error and the script that is causing the problem and I will see if I can make them compatible.

Credits and Thanks

• modern algebra

• Thanks to arclight, for the request

Author's Notes

You can post here for support and I will try to help when I log in, but as I am not as active here as I should be, please post in this topic at rmrk for swiftest response.

If this link dies, then try to notify me and in the meantime, the topic at rmrk will have an active link.

#### Sally

##### July 13, 2008, 10:33:52 pm #1
no attachment.\
lookes intelegent.

#### Nortos

##### July 14, 2008, 01:52:15 am #2
looks great I don't have VX but looks like can add a lot more depth to a game
*powers up*

#### Fantasist

##### July 14, 2008, 08:00:44 am #3
Neat! Too bad I can't use it in RMXP though.
Power up for you
Do you like ambient/electronic music? Then you should promote a talented artist! Help out here. (I'm serious. Just listen to his work at least!)

The best of freeware reviews: Gizmo's Freeware Reviews

#### modern algebra

##### July 15, 2008, 11:04:46 pm #4
Sorry, there is now a sendspace link for the demo  :-[

I'm glad you guys like it though.

#### element

##### November 28, 2009, 03:18:03 pm #5
U just need to make this in xp !
That would be fantastic !

#### Blizzard

##### November 28, 2009, 03:35:28 pm #6
I'm going to make a Visual Equipment System compatible with Blizz-ABS soon.
Check out Daygames and our games:

 King of Booze 2 King of Booze: Never Ever Drinking Game for Android Never have I ever for Android Drinking Game for iOS Never have I ever for iOS

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

#### element

##### November 28, 2009, 03:45:42 pm #7
great !
I was already planning to try to use it with blizz abs
I just made a script request :S
ill delete it now then :p

how long untill it will be done ?

#### Blizzard

##### November 28, 2009, 04:11:27 pm #8
Depends on when I will have time. But maybe I can do it during the next 2 weeks.
Check out Daygames and our games:

 King of Booze 2 King of Booze: Never Ever Drinking Game for Android Never have I ever for Android Drinking Game for iOS Never have I ever for iOS

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

#### element

##### November 28, 2009, 04:12:27 pm #9
that would be realy great !