#==============================================================================
# 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 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
end
end
#==============================================================================
# ** Game_Character
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# new instance variable - composite_character
#==============================================================================
class Game_Character
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Public Instance Variables
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attr_reader :composite_character
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
# 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] }
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
# updates game_player equipment
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_trmnte_cg_equipment_k8g9c terminate
def terminate
# RUn Original Method
modalg_trmnte_cg_equipment_k8g9c
$game_player.refresh
end
end