[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
Type: Graphic Add-on
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

Download

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]  endend#==============================================================================# ** 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  endend#==============================================================================# ** 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 asking for composite character, return it instead    if @ma_return_composite      @ma_return_composite = false      return self.composite_character    end    return modrnalgbra_comp_char_retrn_charctrnm_6gd4  endend#==============================================================================# ** Game_Character#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#  Summary of Changes:#    new instance variable - composite_character#==============================================================================class Game_Character  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  # * Public Instance Variables  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  attr_reader :composite_characterend#==============================================================================# ** 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    # Retrieve  first line comments    comments = []    @page.list.each { |i| i.code == 108 || i.code == 408 ? comments.push (i) : break }    # Evaluate comments for \CG codes    comments.each { |i|      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] }  endend#==============================================================================# ** 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  endend#==============================================================================# ** 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  endend#==============================================================================# ** 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  endend#==============================================================================# ** 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)  endend#==============================================================================# ** 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  endend#==============================================================================# ** 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)  endend#==============================================================================# ** Scene_Equip (For compatibility with KGC#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#  Summary of Changes:#    aliased method - terminate#==============================================================================class Scene_Equip  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  # * Terminate  #     updates game_player equipment  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  alias modalg_trmnte_cg_equipment_k8g9c terminate   def terminate    # RUn Original Method    modalg_trmnte_cg_equipment_k8g9c    \$game_player.refresh  endend``

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 !