RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

[RESOLVED] Extra Accessory Slots...

Started by Isith88, May 10, 2007, 04:21:22 AM

0 Members and 2 Guests are viewing this topic.

Isith88

As the title implies, I need a script (or modified standard RMXP script) that will create two extra Accessory slots in addition to the first.

I've looked EVERYWHERE trying to find a script for this, and I've found a few that showed promise.  The only problem is, the scripts I keep finding have all of this extra stuff added in that I don't need...such as, Two-handed weapons, way too many different armor classes, etc.  All I need is a script that will add two extra accessory slots.  No more, no less.

Also, I tried doing it myself...I modified Game_Actor, and I thought I was on the right track to making it work, but I'm obviously doing something wrong.  Help?  :-\

Lackluster

Just use a freaking multi-equip script like everyone else and modify it so that it only adds 2 accesory slots.
.
.

Irock

The multi-equip script is great. It can easily be modified, if you follow the instructions correctly. ;)

Isith88

#3
Quote from: Irockman1 on May 10, 2007, 07:08:08 AM
The multi-equip script is great. It can easily be modified, if you follow the instructions correctly. ;)

Hi, thanks for the reply (which was polite, unlike Lackluster's...).

I've actually already downloaded and attempted to edit the multi-equip script (Guillaume777's, right?) several days ago, but I couln't make it work correctly.  I'm not a good scripter...I can edit a few basic things here and there, but overall I just suck out loud. 

But, since it seems to be my only option, I'll continue trying to figure it out...do you (or anybody who sees this) know where I can get the most easily understoood, up-to-date version of it?

Irock

Ah, I'll see if I can get it working for your needs. :)

Lackluster

Trickster's script is far superior to the one you have.
.
.

Irock

Does it really matter? It works for what he specifically asked for.

Honestly, you being so negative doesn't contribute to his problem.

Isith88

Quote from: Lackluster on May 10, 2007, 07:27:27 AM
Trickster's script is far superior to the one you have.

I haven't seen that one.  I'll search around and get ahold of it.  Maybe I can successfully work it to my needs.

Isith88

Quote from: Irockman1 on May 10, 2007, 07:26:40 AM
Ah, I'll see if I can get it working for your needs. :)

:o Really?  That's very nice of you.

You don't have to do that, though.  I should probably just learn to script better.  :lol:

Irock

#9
Learning would be nice, but that script can be a little hard to understand.

You just hang tight. ;D

EDIT: Here you are.
[code]
#==============================================================================
# Multi-slot equipment script
#------------------------------------------------------------------------------
# Guillaume777
# 6.2.1
# 2006/02/14
#==============================================================================
#To change slots of character
# $game_actors[1].weapon_slots = [0,0]
# $game_actors[1].armor_slots = [2,3,4,5,6,7]
#
#To make armor equipable in new slot :
# Add (5) in its name, where 5 is its slot number
#To make 2handed weapons :
# Add an element called 2handed to a weapon
# or, adds its id in TWO_HANDED_WEAPONS = []
# or, adds (2handed) in its name
#To make a weapon double attack
# Add an element called 2attacks to a weapon
# or, adds its id in DOUBLE_ATTACK_WEAPONS = []
# or, adds (2atks) in its name
#To make a weapon/armor cursed
# Adds its id in CURSED_WEAPONS or CURSED_ARMORS, or
# put (cursed) in its name
#To make a weapon require an offhand instead of any weapon
# Adds its id in NEEDS_OFFHAND or
# Adds (needs_offhand) in its name
module G7_MS_MOD #you set the default names,slots, etc here

#========Set weapon/armor properties ==========================================
CURSED_WEAPONS = [] #ids of weapons to be cursed
CURSED_ARMORS = [] #ids of armors to be cursed
TWO_HANDED_WEAPONS = [] #ids of 2handed weapons
DOUBLE_ATTACK_WEAPONS = [] #ids of double attack weapons
NEEDS_OFFHAND = []
SWITCH_EQUIP_WEAPONS = []
SWITCH_EQUIP_ARMORS = []
# use 1 array, first value of array = false item, second value = true item

#=========Set weapon/armor properties with element tagging and name edit=======
CURSED_STRING = 'cursed' # put (cursed) in item name for it to be cursed
HANDS_ELEMENT = 'handed' #nb of hands in front of HANDS_ELEMENT in the database
HANDS_STRING = 'handed' # name of string in item name like (2handed)

MULTI_ATTACK_ELEMENT = 'attacks' #name of element to tag to multi attacks like
# (2attacks)
MULTI_ATTACK_STRING = 'atks' #string in item name, like (3atks)

NEEDS_OFFHAND_STRING = 'needs_offhand' #string in item name if the weapon
#needs an offhand like (needs_offhand)
#=====Set character slots properties ==========================================
WEAPON_KINDS =
  • #number of weapons, 0 = weapon
    WEAPON_KIND_NAMES = ['Weapon'] #custom name of extra weapon slots,
    WEAPON_KIND_POWERS = [100, 100] # 100 = normal power, 90 = 90% power, etc
    #leave empty or put nil inside if you want default name
    ARMOR_KINDS = [1,2,3,4,4]
    # 1 = shield
    # 2 = helmet
    # 3 = armor
    # 4 = acc
    # 5 = and more : extra slot
    EXTRA_SLOT_NAMES = ['Glove','Boots','Belt']
    #Name of the extra slots in equip window
    #You need as many words as there are '5' or more in armor_kinds
    #The first order of the slots names reflect the order of the 5 in armor_kinds
    #Put (5) or more to in the armor name to have it assigned to the extra slot

    #=============Set multi-weapon behavior=======================================
    IGNORE_OFFHAND = false #ignore off_hand support
    TWOHANDED_IN_OFFHAND = true #if false don't show two handed weapon in offhand
    #window
    ALL_WEAPONS_FOR_SKILLS = true #true = combined power of all weapons for skills
    #false = only power of first weapon
    SHIELD_HAND_SLOT = 1 #slot number to be used for shield hand
    WEAPON_SHIELD_SHARE = true #if true, dont use shield and second weap at same time
    SHIELD_HAND_WIELD = true#true = allow to use shield hand for two handed weapon
    WEAPON_HAND_WIELD = true #true = allow to use weapon hand for two handed weapon
    MULTI_WEAPONS_PENALITY = 0 #percent of atk
    #that will be substracted if you use two weap
    #============Set appearance properties ========================================
    FONT_NAME = 'Maiandra GD' #font to use
    CURSED_COLOR = Color.new(255, 50, 50) #color of cursed equiped items
    SHOW_REMOVE = false #show empty in offhand window

    WINDOWS_STRETCH = true #true : equip_right stretch to adjust to nb of slots
    MAX_SHOW_SLOTS = 6 #maximum number of slots in 1 screen in equip right window
    #Useless if windows_stretch = false
    HELP_AT_BOTTOM = false #if true : will leave place for help window at bottom
    #useless if you didn't mofidy the help window y coordinate

    STATUS_WINDOW_ARRANGE = true #if true : you get a new status window.
    EVADE = false # if draw_actor_parameter is configured to receive parameter 7
    #( evade ), then it will show in new status window
    # EVADE = true has no effect if STATUS_WINDOW_ARRANGE is false
    #================ end of settings =============================================
    def initialize
    super
    RPG.set_new_item_types #fix armor and weapon properties at start of game
    end
    end #end module

    module RPG
    def RPG.set_new_item_types
    if @initialized_item_types then return end
    for armor in $data_armors #for each armor
    unless armor == nil #if armor
    armor.set_adv_type #set new type
    armor.set_cursed #set if item is cursed or not
    end
    end
    for weapon in $data_weapons #for each armor
    unless weapon == nil #if armor
    weapon.set_needs_offhand #set if it needs an offhand or not
    weapon.set_nb_hands #set the number of hands to wield it
    weapon.set_nb_attacks #set the number of attacks it can do
    weapon.set_cursed #set if item is cursed or not
    end
    end
    @initialized_item_types = true
    end
    def RPG.initialized_item_types=(bool)
    @initialized_item_types = bool
    end
    #--------------------------------------------------------------------------
    # New armor type = number in name of armor
    #--------------------------------------------------------------------------
    class Armor
    attr_accessor :cursed
    def set_adv_type
    pattern = /\((\d+)\)/
    if @name.sub!(pattern, '') != nil
    @kind = $1.to_i - 1 #set kind to number in name of armor
    end
    end
    def set_cursed
    pattern = '('+G7_MS_MOD::CURSED_STRING+')'
    if @name.sub!(pattern, '') != nil then cursed = true end
    if G7_MS_MOD::CURSED_ARMORS.include?(@id) then cursed = true end
    @cursed = cursed
    end
    end #end armor

    class Weapon
    attr_accessor :needs_offhand #does it need an offhand weapon
    attr_accessor :nb_hands #numbers of hands it requires
    attr_accessor :nb_attacks #number of attacks it can do
    attr_accessor :cursed #true if item is cursed
    def set_cursed
    pattern = '('+G7_MS_MOD::CURSED_STRING+')'
    if @name.sub!(pattern, '') != nil then cursed = true end
    if G7_MS_MOD::CURSED_WEAPONS.include?(@id) then cursed = true end
    @cursed = cursed
    end
    def set_needs_offhand
    pattern = '('+G7_MS_MOD::NEEDS_OFFHAND_STRING+')'
    if @name.sub!(pattern, '') != nil then
    @needs_offhand = true
    elsif G7_MS_MOD::NEEDS_OFFHAND.include?(self.id) then
    @needs_offhand = true
    elsif @needs_offhand== nil then
    @needs_offhand = false
    end
    end
    #--------------------------------------------------------------------------
    # Returns number of hands needed for weapons
    #--------------------------------------------------------------------------
    def set_nb_hands
    if G7_MS_MOD::TWO_HANDED_WEAPONS.include?(self.id) then
    nb_hands = 2
    end
    pattern = /\((\d+)#{G7_MS_MOD::HANDS_STRING}\)/
    if @name.sub!(pattern, '') != nil
    nb_hands = $1.downcase.delete('a-z')
    nb_hands = $1.to_i
    end
    for elementnb in self.element_set #search element
    elementname = $data_system.elements[elementnb].downcase
    if elementname.delete('0-9') == G7_MS_MOD::HANDS_ELEMENT.downcase #if weapons has element for another attack
    elementname = elementname.delete('a-z') #get the nb of attacks
    if elementname != '' then
    nb_hands = elementname.to_i
    self.element_set.delete(elementnb) #delete the element
    end
    end
    end
    if nb_hands.is_a?(Integer) == false or nb_hands <= 0 then nb_hands = 1 end
    @nb_hands = nb_hands
    end #end nb_hands

    #--------------------------------------------------------------------------
    # Returns the number of attack the weapon can do
    #--------------------------------------------------------------------------
    def set_nb_attacks
    if G7_MS_MOD::DOUBLE_ATTACK_WEAPONS.include?(self.id) then
    nb_attacks = 2
    else
    nb_attacks = 1
    end
    pattern = /\((\d+)#{G7_MS_MOD::MULTI_ATTACK_STRING}\)/
    if @name.sub!(pattern, '') != nil
    nb_attacks = $1.downcase.delete('a-z')
    nb_attacks = $1.to_i
    end
    for elementnb in self.element_set #search element that could
    #add more attacks
    elementname = $data_system.elements[elementnb].downcase
    if elementname.delete('0-9') == G7_MS_MOD::MULTI_ATTACK_ELEMENT.downcase #if weapons has element for another attack
    elementname = elementname.delete('a-z') #get the nb of attacks
    if elementname != '' then
    nb_attacks = elementname.to_i
    self.element_set.delete(elementnb) #delete the element
    end
    end
    end
    if nb_attacks.is_a?(Integer) == false or nb_attacks <= 0 then nb_attacks = 1 end
    @nb_attacks = nb_attacks
    end #end nb_attack
    end #end weapon
    end #end module

    class Game_Actor < Game_Battler
    include G7_MS_MOD
    attr_accessor :equip_mode #used to restore equipment after false equip
    attr_accessor :equip_type_force #used to bypass equip_type
    attr_accessor :equip_from_menu #used to prevent the user to unequip cursed items
    attr_accessor :translucent_texts #used to store translucents slots
    #--------------------------------------------------------------------------
    # Init the new slots
    #--------------------------------------------------------------------------
    alias g7_ms_game_actor_setup setup
    def setup(actor_id)
    g7_ms_game_actor_setup(actor_id) #setup normaly
    self.order_armor_ids
    end

    def nb_offhand_required(ignore=nil)
    nb_offhand = 0
    nb_need_offhand = 0
    for i in 0...self.weapon_slots.size
    if i != ignore then
    weapon = self.weapon_ids
    if weapon == 0 then
    nb_offhand += 1
    elsif $data_weapons[weapon].needs_offhand then
    nb_need_offhand += 1
    else
    nb_offhand += 1
    end
    end
    end
    return (nb_need_offhand - nb_offhand)
    end
    #==============================================================================
    # Modify how equipment is equiped so that extra items can be equipped
    #==============================================================================
    alias g7_ms_game_actor_equip equip
    def equip(equip_type, id)

    if @equip_type_force != nil then equip_type = @equip_type_force end
    #equip_type_force is used to bypass the
    #equip_type argument

    if self.equip_mode == 'STORE' then
    #store equipment for it to be restored after checking what the stats would
    self.equip_mode = nil
    @stored_armors = self.armor_ids.dup
    @stored_weapons = self.weapon_ids.dup
    saved_mode = 'STORE'
    elsif self.equip_mode == 'RESTORE'
    #restore equipment after preview of new equipment on stats
    self.equip_mode = nil
    self.restore(equip_type)
    return
    else #if equipping for real
    if self.enough_hands?(equip_type,id) != false then
    id = self.switch_items(equip_type,id) #switch item to be equiped to
    #fool players
    end
    end


    if self.enough_hands?(equip_type,id) == false then #if not enough hands
    id = 0 #then don't equip
    elsif self.equip_from_menu and self.cursed?(equip_type) then
    id = 0 #if cursed and player tried to remove it, do nothing
    elsif equip_type <= 4 #if the slot is one of the 5 basic one
    g7_ms_game_actor_equip(equip_type, id) #equip the good old way
    else
    equip_extra(equip_type,id) #equip in the new way
    end

    #fix in case there are no enough empty hands for all the equipped weapons
    if id != 0 then self.fix_handed_weapons(equip_type) end

    #this ensure that the next equiping will restore the original equipment
    if saved_mode == 'STORE' then self.equip_mode = 'RESTORE' end

    end
    #==============================================================================
    # Restore equipment once the stats got checked and adds translucent
    #==============================================================================
    def restore(equip_type)
    if self.translucent_texts == nil then self.translucent_texts = Array.new end
    self.equip_from_menu = false

    if equip_type != 0 and @stored_weapons[0] != self.weapon_ids[0]
    self.translucent_texts[0] = true
    end
    for i in 1...@stored_weapons.size
    if i+[self.armor_slots.size,4].max != equip_type and
    @stored_weapons != self.weapon_ids then
    self.translucent_texts = true
    end
    end
    for i in 0...@stored_armors.size
    if i+1 != equip_type and
    @stored_armors != self.armor_ids then

    self.translucent_texts[self.weapon_slots.size + i] = true
    end
    end
    @equip_type_force = nil
    copy = self.translucent_texts.dup

    self.weapon_ids = @stored_weapons

    self.armor_ids = @stored_armors

    self.translucent_texts = copy
    end

    #==============================================================================
    # Switch the id of an item to be equiped with another id to trick player
    #==============================================================================
    def switch_items(equip_type,id)

    if self.cursed?(equip_type) == false then

    if equip_type == 0 or equip_type > [self.armor_slots.size,4].max
    for i in 0...SWITCH_EQUIP_WEAPONS.size
    if SWITCH_EQUIP_WEAPONS
    • == id then
      $game_party.lose_weapon(SWITCH_EQUIP_WEAPONS
      • , 1)
        $game_party.gain_weapon(SWITCH_EQUIP_WEAPONS[1], 1)
        id = SWITCH_EQUIP_WEAPONS[1]
        end
        end

        else
        for i in 0...SWITCH_EQUIP_ARMORS.size
        if SWITCH_EQUIP_ARMORS
        • == id then
          $game_party.lose_armor(SWITCH_EQUIP_ARMORS
          • , 1)
            $game_party.gain_armor(SWITCH_EQUIP_ARMORS[1], 1)
            id = SWITCH_EQUIP_ARMORS[1]
            end
            end

            end
            end
            return id
            end

            #==============================================================================
            # Returns if there are enough hands to hold weapon
            #==============================================================================
            def enough_hands?(equip_type, id)
            if id == 0 then return true end # enough hand = true if you remove something

            if equip_type == 0 or equip_type > [self.armor_slots.size ,4].max #if weapon
            nb = $data_weapons[id].nb_hands
            elsif self.weapon_shield_share and self.armor_slots[equip_type-1] == self.shield_hand_slot
            nb = 1
            else
            return true #return true if not shield or weapon
            end

            nb_s = 0 #nb shield slots

            if self.shield_hand_wield then
            for i in 0...self.armor_slots.size
            if self.armor_slots == self.shield_hand_slot
            if self.weapon_shield_share != true then nb_s += 1 end
            if self.cursed?(i+1) then nb += 1 end
            end
            end
            end

            if self.weapon_hand_wield
            if self.cursed?(0) then #penalities if can't remove first weapon
            nb = nb + $data_weapons[self.weapon_ids[0]].nb_hands
            end

            for i in 1...self.weapon_slots.size #penalities if cant remove weapon
            if self.cursed?(self.armor_slots.size + i)
            nb = nb + $data_weapons[self.weapon_ids].nb_hands
            end
            end
            end

            if nb == 1 then #if it only takes 1 hand to hold
            return true
            elsif nb > nb_s+1 and self.weapon_hand_wield != true
            return false
            elsif nb > self.weapon_slots.size+ nb_s and self.weapon_hand_wield
            return false
            elsif self.shield_hand_wield != true and self.weapon_hand_wield != true
            return false
            else
            return true
            end
            end

            def equip_weapon(index,id)
            if index == 0 then
            self.equip(0, id)
            else
            self.equip([self.armor_slots.size, 4].max + index, id)
            end
            end

            def equip_armor(index, id)
            self.equip(index+1, armor)
            end
            #==============================================================================
            # Equip extra items
            #==============================================================================
            def equip_extra(equip_type,id)
            if equip_type <= [self.armor_slots.size,4].max # if its extra armor slot
            if id == 0 or $game_party.armor_number(id) > 0
            update_auto_state($data_armors[self.armor_ids[equip_type-1]], $data_armors[id])
            $game_party.gain_armor(self.armor_ids[equip_type-1], 1)
            self.armor_ids[equip_type-1] = id
            $game_party.lose_armor(id, 1)
            end
            else #if its weapon slot
            if id == 0 or $game_party.weapon_number(id) > 0
            equip_type = equip_type - [self.armor_slots.size, 4].max

            weapon = self.weapon_ids[equip_type]
            if weapon != nil then
            $game_party.gain_weapon(weapon, 1)
            end
            self.weapon_ids[equip_type] = id
            $game_party.lose_weapon(id, 1)
            end
            end
            end


            #==============================================================================
            # This fix multi handed weapons
            #==============================================================================
            def fix_handed_weapons(equip_keep=nil) #parameter for weapon to keep

            array_wield_hands = Array.new #stores slot of weapon that need empty hands
            nb_emp_hands = 0 #store nb of empty hands
            penalities = 0 #stores extra hand required

            save_force = @equip_type_force
            save_menu = @equip_from_menu
            @equip_from_menu = false
            @equip_type_force = nil

            if self.shield_hand_wield
            for narmor in 0...self.armor_slots.size
            if self.armor_slots[narmor] == self.shield_hand_slot
            if self.weapon_shield_share == true then
            penalities += 1
            end
            if self.armor_ids[narmor] == 0 then
            nb_emp_hands += 1 #stores empty shield hand
            end
            end
            end
            end
            for nweapon in 0...self.weapon_slots.size
            if self.weapon_ids[nweapon] == 0
            if self.weapon_hand_wield then
            nb_emp_hands += 1
            end
            else
            array_wield_hands.push(nweapon) #stores the hand to wield weapon
            end
            end

            for nweapon in Rg(array_wield_hands.size-1, 0, -1)
            if self.weapon_ids[array_wield_hands[nweapon]] != 0 then
            nb_hands = $data_weapons[self.weapon_ids[array_wield_hands[nweapon]]].nb_hands
            nb_hands += penalities
            penalities = 0
            save_hands = nb_hands
            end

            while nb_emp_hands != 0 and nb_hands > 1
            #if it finds empty hand
            nb_hands += -1 #decrease counter
            nb_emp_hands += -1
            end

            #if shield needs to be removed for empty hand
            if self.shield_hand_wield then
            for namor in 0...self.armor_slots.size
            if nb_hands > 1 and self.armor_ids[namor] != 0 and
            self.armor_slots[namor] == self.shield_hand_slot and
            namor+1 != equip_keep and self.cursed?(namor+1) == false then
            nb_hands += -1
            self.equip(namor+1,0)
            end
            end
            end

            #if it must remove weapons to make room for empty hands
            if self.weapon_hand_wield == true then
            for nhand in Rg(self.weapon_slots.size-1, 0, -1)
            if nb_hands > 1 and self.weapon_ids[nhand] != 0
            if nhand == 0 then
            if equip_keep != 0 and self.cursed?(0) == false then
            n = nb_emp_hands
            nb_emp_hands += $data_weapons[self.weapon_ids[nhand]].nb_hands
            n = nb_emp_hands - n

            self.equip(0,0)
            end
            else
            if nhand+[self.armor_slots.size,4].max != equip_keep and
            self.cursed?(nhand+[self.armor_slots.size,4].max) == false
            then

            if nhand < array_wield_hands[nweapon] then
            nb_emp_hands += 1
            else
            nb_emp_hands += $data_weapons[self.weapon_ids[nhand]].nb_hands
            end
            self.equip([self.armor_slots.size,4].max+nhand, 0)
            end
            end #end if nhnad ==0
            end #end if nb_hands != 1
            while nb_emp_hands != 0 and nb_hands > 1
            #if it finds empty hand
            nb_hands += -1 #decrease counter
            nb_emp_hands += -1
            end
            end #end for nahand
            end #end if self.weapon


            if nb_hands > 1 #if still can't find a slot, remove the weapon

            if array_wield_hands[nweapon] == 0 and self.cursed?(0) == false then
            nb_emp_hands = 1 + nb_emp_hands + save_hands - nb_hands
            self.equip(0, 0)
            elsif self.cursed?(array_wield_hands[nweapon]+[self.armor_slots.size,4].max) == false and
            array_wield_hands[nweapon] != 0 then

            nb_emp_hands = 1 + nb_emp_hands + save_hands - nb_hands
            self.equip(array_wield_hands[nweapon]+[self.armor_slots.size,4].max,0)
            end
            end
            while nb_emp_hands != 0 and nb_hands > 1
            #if it finds empty hand
            nb_hands += -1 #decrease counter
            nb_emp_hands += -1
            end
            if nb_hands > 1 then #if STILL not enough hands
            self.equip(equip_keep,0) # remove the item the user tried to equip
            end
            end #loop


            @equip_type_force = save_force #returns old equip_type_force
            @equip_from_menu = save_menu #return old equip_from_menu
            end

            #==============================================================================
            # Return true if there is a cursed item at that position
            #==============================================================================
            def cursed?(equip_type)
            if equip_type == 0
            weapon_id = self.weapon_ids[0]
            if weapon_id != 0 and $data_weapons[weapon_id].cursed then return true end
            elsif equip_type <= self.armor_slots.size #if armor
            armor_id = self.armor_ids[equip_type - 1]
            if armor_id != 0 and $data_armors[armor_id].cursed then return true end
            else
            weapon_id = self.weapon_ids[equip_type - [self.armor_slots.size, 4].max]
            if weapon_id != nil and weapon_id != 0 and $data_weapons[weapon_id].cursed then return true end
            end
            return false
            end

            #==============================================================================
            # Remove all cursed items
            #==============================================================================
            def remove_curse
            self.equip_type_force = nil
            for i in 0...(self.weapon_slots.size + self.armor_slots.size)
            if self.cursed?(i) then self.equip(i,0) end
            end
            end

            #--------------------------------------------------------------------------
            # It orders armor_ids to fit slots
            #--------------------------------------------------------------------------
            def order_armor_ids
            equipment_array = Array.new

            for i in 0...self.armor_ids.size
            if self.armor_ids != nil and self.armor_ids != 0
            kind = $data_armors[self.armor_ids].kind
            if equipment_array[kind] == nil then
            equipment_array[kind] = Array.new
            end
            equipment_array[kind].push(self.armor_ids)
            #array in which 0 = array for shield, 1 = array for helmet,
            #2 = array for armor and 3 = array for accessory, etc
            end
            end

            self.armor_ids = nil #remove all armors
            armors = Array.new
            for i in 0...self.armor_slots.size
            aitem = nil
            if equipment_array[(self.armor_slots)-1] == nil then
            equipment_array[(self.armor_slots)-1] = Array.new
            end
            while aitem == nil and equipment_array[(self.armor_slots)-1].size != 0
            aitem = equipment_array[(self.armor_slots)-1].delete_at(0)
            if aitem == 0 then aitem = nil end
            end
            if aitem != nil then
            armors.push(aitem) #adds armor
            else
            armors.push(0) #adds empty
            end #end if iaitem != nil
            end #end for i in

            self.armor_ids = armors
            end

            #==============================================================================
            # Change weapon slots
            #==============================================================================
            def weapon_slots=(array) #change slots of weapons
            if array == nil then array = WEAPON_KINDS end #use default slots
            weapon_array = Array.new(self.weapon_ids) #save weapons
            self.weapon_ids = nil
            @weapon_slots = Array.new(array) #new slots
            self.weapon_ids = weapon_array #reequip items

            i = self.weapon_ids.size
            while self.nb_offhand_required > 1
            if self.weapon_ids != nil and self.weapon_ids != 0 then
            self.equip_weapon(i,0)
            end
            i = i-1
            end
            end

            #==============================================================================
            # Change armor slots
            #==============================================================================
            def armor_slots=(array) # change slots of armor
            if array == nil then array = ARMOR_KINDS end #returns to default if nothing
            equipment_array = Array.new
            for i in 0...[array.max, self.armor_slots.max].max+1
            if equipment_array == nil then
            equipment_array = Array.new
            end
            end

            for i in 0...self.armor_ids.size
            if self.armor_ids != nil and self.armor_ids != 0 then
            kind = $data_armors[self.armor_ids].kind + 1
            equipment_array[kind].push(self.armor_ids)
            #array in which 0 = array for shield, 1 = array for helmet,
            #2 = array for armor and 3 = array for accessory, etc
            end
            end

            for kind in 0...[array.max, self.armor_slots.max].max+1
            if array.include?(kind) and self.armor_slots.include?(kind) then
            nb_i_new = 0
            nb_i_old = 0
            for i in 0...self.armor_slots.size
            if self.armor_slots == kind then nb_i_old += 1 end
            end
            for i in 0...array.size
            if array == kind then nb_i_new += 1 end
            end

            for i in nb_i_new...nb_i_old
            for k in 0...equipment_array[kind].size
            index = equipment_array[kind].index(0)
            if index != nil then
            equipment_array[kind].delete_at(index)
            end
            end
            end
            end
            end
            self.armor_ids = nil #remove items
            @armor_slots = array #new array
            for i in 0...self.armor_slots.size
            aitem = nil
            kind = self.armor_slots
            if equipment_array[kind].size != 0
            aitem = equipment_array[kind].delete_at(0)
            self.equip(i+ 1,aitem) #adds armor
            else
            self.equip(i+ 1,0)
            end
            end
            end #end def
            #--------------------------------------------------------------------------
            # Set new array of weapons, if nil then it removes all weapon
            #--------------------------------------------------------------------------
            def weapon_ids=(array) #be careful @item_type_force needs to be nil !
            if array == nil then
            self.equip(0, 0) #remove first weapon
            for i in 1...self.weapon_ids.size
            self.equip(i + [self.armor_slots.size,4].max, 0 ) #remove all weapons
            end
            return
            end

            self.weapon_ids = nil

            for i in 0...self.weapon_slots.size
            if array == nil then array = 0 end #ensure no nil are equiped
            if i == 0 then #if first weapon
            self.equip(0, array) #equip weapon
            else #if extra weapons
            self.equip(i + [self.armor_slots.size, 4].max, array)
            end
            end
            end
            #--------------------------------------------------------------------------
            # Set new array of armors in ordered fashion
            #--------------------------------------------------------------------------
            def armor_ids=(array)
            if array == nil then
            for i in 0...self.armor_slots.size
            self.equip(i + 1, 0) #remove all armors
            end
            return
            end
            self.armor_ids = nil #remove all armors
            for i in 0...self.armor_slots.size
            self.equip(i+ 1, array) #adds armor
            end
            end
            #--------------------------------------------------------------------------
            # Return @armor_ids
            #--------------------------------------------------------------------------
            def armor_ids
            #returns ids with all armor, also store 4 armor
            unless self.is_a?(Game_Actor)
            return []
            end
            if @armor_ids == nil then @armor_ids = Array.new(self.armor_slots.size) end

            ids = @armor_ids
            ids[0] = @armor1_id
            ids[1] = @armor2_id
            ids[2] = @armor3_id
            ids[3] = @armor4_id
            for i in 0...self.armor_slots.size #ensure no nil values are returned
            if ids == nil then ids = 0 end
            end

            return ids
            end

            def weapon_ids
            #returns ids with all weapon, also store first weapon
            unless self.is_a?(Game_Actor)
            return []
            end
            if @weapon_ids == nil then @weapon_ids = Array.new(self.weapon_slots.size) end
            ids = @weapon_ids
            ids[0] = @weapon_id

            for i in 0...self.weapon_slots.size
            if ids == nil then ids = 0 end
            end
            return ids
            end


            #--------------------------------------------------------------------------
            # Returns names of armor
            #--------------------------------------------------------------------------
            def armor_slot_names #return custom words for slots, or default ones
            if @armor_slot_names == nil then @armor_slot_names = Array.new end
            temp_array = Array.new(@armor_slot_names)
            default_names = [$data_system.words.armor1,$data_system.words.armor2,$data_system.words.armor3,$data_system.words.armor4, self.extra_slot_names].flatten #default names of slots
            for i in 0...default_names.size
            if temp_array == nil then temp_array = default_names end #if not
            #custom then set as default
            if temp_array == nil then temp_array = $data_system.words.armor4 end
            end
            return temp_array
            end

            #--------------------------------------------------------------------------
            # Returns names of weapons
            #--------------------------------------------------------------------------
            def weapon_slot_names #return custom words for weapon slots, of default ones
            if @weapon_slot_names != nil then
            temp_array = Array.new(@weapon_slot_names) #use the custom values
            else
            temp_array = Array.new(self.weapon_slots.size) #use default values
            end
            default_names = WEAPON_KIND_NAMES #default names of slots
            for i in 0...self.weapon_slots.size
            if temp_array == nil then temp_array = default_names end #set as constant
            if temp_array == nil then temp_array = $data_system.words.weapon end
            #if constant array is empty then use default one
            end
            return temp_array
            end

            #--------------------------------------------------------------------------
            # Return all element of all equipped armor
            #--------------------------------------------------------------------------
            def guard_element_set
            #return array with guard_element_set of all equipped armor
            set = []
            for id in self.armor_ids #seach all armor equipped
            next if id.nil?
            armor = $data_armors[id]
            set += (armor != nil ? armor.guard_element_set : []) #add the element to set
            end
            return set
            end

            #--------------------------------------------------------------------------
            # Return all equipment
            #--------------------------------------------------------------------------
            def equipments
            #return array with all equipment
            equipments = []
            self.weapon_ids.each {|id| equipments.push($data_weapons[id])}
            self.armor_ids.each {|id| equipments.push($data_armors[id])}
            return equipments
            end

            #--------------------------------------------------------------------------
            # Return if item is equiped
            #--------------------------------------------------------------------------
            def equiped?(item)
            #return if item is equipped, works with both armor and weapon
            case item
            when RPG::Weapon
            return self.weapon_ids.include?(item.id)
            when RPG::Armor
            return self.armor_ids.include?(item.id)
            else
            return false
            end
            end

            #==============================================================================
            # Return list of weapons to use for attacks
            #==============================================================================
            def attacks #this return an array with the list of all attacks of a character
            #this takes in consideration extra weapon + number of attacks of
            #each weapon
            attacks = Array.new
            for i in 0...self.weapon_ids.size
            weapon = $data_weapons[self.weapon_ids]
            if weapon != nil and weapon.atk != 0 then #if weapon is valid
            for counter in 0...weapon.nb_attacks
            attacks.push(i) #add attacks
            end
            end
            end
            if attacks.size == 0 then attacks[0] = 0 end #give 1 unarmed attack if no weapons on
            return Array.new(attacks)

            end #end nb_attacks

            #--------------------------------------------------------------------------
            # Get the weapon to be used in attack
            #--------------------------------------------------------------------------
            def get_weapon_data
            #this returns the weapon to use for the attack.
            weaponid = self.weapon_ids[self.attacks[self.attack_count]]
            weapon = $data_weapons[weaponid]
            return weapon
            end
            def animation1_id #set animation for current weapon
            weapon = self.get_weapon_data
            return weapon != nil ? weapon.animation1_id : 0
            end
            def animation2_id #set animation for current weapon
            weapon = self.get_weapon_data
            return weapon != nil ? weapon.animation2_id : 0
            end

            #--------------------------------------------------------------------------
            # Get the atk to be used in attack ( or shown in menu screen )
            #--------------------------------------------------------------------------
            def base_atk
            multiplier = nil
            if $game_temp.in_battle and (self.current_action.kind == 0 or self.all_weapons_for_skills? != true)
            #if in battle and doing a normal attack only use one weapon's attack power
            weapon = self.get_weapon_data
            n = weapon != nil ? weapon.atk : 0
            #multiplier of hand as definied in self.weapon_slot_powers
            if weapon != nil and weapon.nb_hands == 1 then
            multiplier = self.weapon_slot_powers[self.attacks[self.attack_count]]
            end
            if multiplier == nil then multiplier = 100 end
            n = n * (multiplier/100.0)
            else #use cumulative attack power of all weapons if in status screen or
            #if using skill and all_weapons_for_skills == true
            n = 0
            for i in 0...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            atk = weapon != nil ? weapon.atk : 0
            if weapon != nil and weapon.nb_hands == 1 then
            multiplier = self.weapon_slot_powers
            else
            multiplier = nil
            end
            if multiplier == nil then multiplier = 100 end

            atk = atk * (multiplier/100.0)
            n += atk
            end
            end
            nb_weap = 0
            for i in 0...self.weapon_slots.size
            if self.weapon_ids != nil and self.weapon_ids != 0
            nb_weap = nb_weap + 1
            end
            end #penality if more than 1 weapon
            penality = self.multi_weapons_penality != nil ? self.multi_weapons_penality : 0
            penality = penality /100.0
            if nb_weap > 1 then n = n * ( 1 - penality ) end
            return n
            end

            def element_set #return elemental set of the current weapon
            weapon = self.get_weapon_data
            return weapon != nil ? weapon.element_set : []
            end
            def plus_state_set #status the weapon can give
            weapon = self.get_weapon_data
            return weapon != nil ? weapon.plus_state_set : []
            end
            def minus_state_set #status the weapon can remove
            weapon = self.get_weapon_data
            return weapon != nil ? weapon.minus_state_set : []
            end
            #--------------------------------------------------------------------------
            # Return state defense of all armor
            #--------------------------------------------------------------------------
            def state_guard?(state_id)
            #------------------------------------------------------------------------------
            #Begin Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            for i in self.armor_ids
            #------------------------------------------------------------------------------
            #End Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            armor = $data_armors
            if armor != nil
            if armor.guard_state_set.include?(state_id)
            return true
            end
            end
            end
            return false
            end
            #==============================================================================
            # Methods calculate bonus of extra weapon and armor
            #==============================================================================
            alias g7_ms_game_actor_element_rate element_rate
            def element_rate(element_id)
            result = g7_ms_game_actor_element_rate(element_id)
            if self.armor_slots.size > 4
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            if armor != nil and armor.guard_element_set.include?(element_id)
            result /= 2
            end
            end
            end
            return result
            end

            alias g7_ms_game_actor_base_str base_str
            def base_str
            n = g7_ms_game_actor_base_str

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.str_plus : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.str_plus : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_dex base_dex
            def base_dex
            n = g7_ms_game_actor_base_dex

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.dex_plus : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.dex_plus : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_agi base_agi
            def base_agi
            n = g7_ms_game_actor_base_agi

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.agi_plus : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.agi_plus : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_int base_int
            def base_int
            n = g7_ms_game_actor_base_int

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.int_plus : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.int_plus : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_pdef base_pdef
            def base_pdef
            n = g7_ms_game_actor_base_pdef

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.pdef : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.pdef : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_mdef base_mdef
            def base_mdef
            n = g7_ms_game_actor_base_mdef

            for i in 1...self.weapon_slots.size
            weapon = $data_weapons[self.weapon_ids]
            n += weapon != nil ? weapon.mdef : 0
            end
            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.mdef : 0
            end
            return n
            end

            alias g7_ms_game_actor_base_eva base_eva
            def base_eva
            n = g7_ms_game_actor_base_eva

            for i in 4...self.armor_slots.size
            armor = $data_armors[self.armor_ids]
            n += armor != nil ? armor.eva : 0
            end
            return n
            end
            #--------------------------------------------------------------------------
            # Reset all slot data to default one
            #--------------------------------------------------------------------------
            def reset_all_slots
            self.armor_slots = nil
            self.weapon_slots = nil

            self.armor_slot_names = nil
            self.weapon_slot_names = nil
            self.extra_slot_names = nil

            self.weapon_slot_powers = nil
            self.shield_hand_wield = nil
            self.weapon_hand_wield = nil
            self.shield_hand_slot = nil
            self.weapon_shield_share = nil
            self.multi_weapons_penality = nil
            self.ignore_offhand = nil
            self.all_weapons_for_skills = nil
            end
            #--------------------------------------------------------------------------
            # Returns behavior of items on character
            #--------------------------------------------------------------------------
            def weapon_shield_share
            return @weapon_shield_share != nil ? @weapon_shield_share : WEAPON_SHIELD_SHARE
            end
            def weapon_slots
            return @weapon_slots != nil ? @weapon_slots : WEAPON_KINDS
            end
            def armor_slots
            return @armor_slots != nil ? @armor_slots : ARMOR_KINDS
            end
            def shield_hand_wield
            return @shield_hand_wield != nil ? @shield_hand_wield : SHIELD_HAND_WIELD
            end
            def multi_weapons_penality
            return @multi_weapons_penality != nil ? @multi_weapons_penality : MULTI_WEAPONS_PENALITY
            end
            def weapon_slot_powers
            return @weapon_slot_powers != nil ? @weapon_slot_powers : WEAPON_KIND_POWERS
            end
            def weapon_hand_wield
            return @weapon_hand_wield != nil ? @weapon_hand_wield : WEAPON_HAND_WIELD
            end
            def shield_hand_slot
            return @shield_hand_slot != nil ? @shield_hand_slot : SHIELD_HAND_SLOT
            end
            def extra_slot_names
            return @extra_slot_names != nil ? @extra_slot_names : EXTRA_SLOT_NAMES
            end
            def ignore_offhand?
            return @ignore_offhand != nil ? @ignore_offhand : IGNORE_OFFHAND
            end
            def attack_count #returns number of attacks already made
            return @attack_count != nil ? @attack_count : 0
            end
            def all_weapons_for_skills?
            return @all_weapons_for_skills != nil ? @all_weapons_for_skills : ALL_WEAPONS_FOR_SKILLS
            end
            #--------------------------------------------------------------------------
            # Change behavior of items on character
            #--------------------------------------------------------------------------
            def multi_weapons_penality=(value)
            @multi_weapons_penality = value
            end
            def weapon_slot_powers=(value)
            @weapon_slot_powers = value
            end
            def weapon_shield_share=(bool)
            @weapon_shield_share = bool
            end
            def shield_hand_slot=(int)
            @shield_hand_slot = int
            end
            def shield_hand_wield=(bool)
            @shield_hand_wield = bool
            end
            def weapon_hand_wield=(bool)
            @weapon_hand_wield = bool
            end
            def ignore_offhand=(bool)
            @ignore_offhand = bool
            end
            def all_weapons_for_skills=(bool)
            @all_weapons_for_skills = bool
            end
            def attack_count=(value) #set number of attacks already made
            @attack_count = value
            end
            #--------------------------------------------------------------------------
            # Change names for your slots
            #--------------------------------------------------------------------------
            def shield_name=(text) #set shield slot name with $game_actors[numberofactor].shield_name = 'Yourname'
            @armor_slot_names[0] = text
            end
            def helmet_name=(text)
            @armor_slot_names[1] = text
            end
            def armor_name=(text)
            @armor_slot_names[2] = text
            end
            def accessory_name=(text)
            @armor_slot_names[3] = text
            end
            def extra_slot_names=(array)
            @extra_slot_names = array
            end
            def armor_slot_names=(array) #set a new array of names.
            @armor_slot_names = array
            end
            def weapon_slot_names=(array) #set a new array of weapon names.
            @weapon_slot_names = array
            end
            end #end class game actor

            class Game_Actors
            def order_items
            for actor in 0...@data.size
            if @data[actor] != nil and @data[actor] != 0 then
            @data[actor].order_armor_ids #order armors
            end
            end
            end
            end
            class Scene_Equip
            #==============================================================================
            # Closes extra windows
            #==============================================================================
            alias g7_ms_scene_equip_main main
            def main
            @additional_initialize_done = false
            g7_ms_scene_equip_main
            for i in 5...@item_windows.size
            @item_windows.dispose unless @item_windows.nil?
            end
            end

            #==============================================================================
            # Initialize the extra right windows
            #==============================================================================
            def g7_ms_scene_equip_additional_initialize
            unless @additional_initialize_done
            @item_windows = []
            @item_windows[0] = @item_window1 #weapon
            @item_windows[1] = @item_window2 #shield
            @item_windows[2] = @item_window3 #helmet
            @item_windows[3] = @item_window4 #armor
            @item_windows[4] = @item_window5 #acc
            nb_old_windows = @item_windows.size

            for i in nb_old_windows...@actor.armor_slots.max+1
            @item_windows.push(Window_EquipItem.new(@actor, i) ) #add the remaining
            #windows for extra slots
            @item_windows.help_window = @help_window
            end

            @item_windows.push(Window_EquipOffHand.new(@actor, 0))
            @item_windows[-1].help_window = @help_window

            if G7_MS_MOD::WINDOWS_STRETCH #if windows_stretch is true, stretch window
            h = (@actor.weapon_slots.size + @actor.armor_slots.size + 1) * 32
            h2 = (G7_MS_MOD::MAX_SHOW_SLOTS+1) * 32
            h = [h, h2].min
            @right_window.height = h
            if @right_window.index > @actor.weapon_slots.size + @actor.armor_slots.size - 1
            @right_window.index = @actor.weapon_slots.size + @actor.armor_slots.size - 1
            end

            if @left_window.y + @left_window.height == 256

            @left_window.height = @right_window.height
            elsif G7_MS_MOD::HELP_AT_BOTTOM == true and @left_window.height == 416 then
            @left_window.height -= 64 #make left window shorter
            end
            y_pos = (@right_window.y + @right_window.height)
            y_space = 480 - y_pos

            #if help at bottom, reduce bottom item window size
            if G7_MS_MOD::HELP_AT_BOTTOM == true then y_space -= 64 end

            for item_window in @item_windows
            next if item_window.nil?
            item_window.y = y_pos
            item_window.height = y_space
            end
            end

            @additional_initialize_done = true
            end
            end

            alias g7_ms_scene_equip_refresh refresh
            #==============================================================================
            # Refresh and make visible the correct right window
            #==============================================================================
            def refresh
            #this part is used to refresh the equipped item at the right window
            g7_ms_scene_equip_additional_initialize

            @actor.translucent_texts.fill(false)

            @actor.equip_type_force = index_to_equip_part(@right_window.index)
            @right_window.item_fix_on
            @right_window.scroll_fix_on
            save = @right_window.index

            @right_window.index = index_to_equip_kind(@right_window.index)

            if @right_window.index == 0 and @actor.ignore_offhand? != true then
            if @actor.nb_offhand_required(save) > 0 then
            @right_window.index = @item_windows.size-1
            end
            end


            @actor.equip_from_menu = true
            @actor.equip_mode = 'STORE' #ensure current equipment will get properly stored
            # and reequiped

            @item_window = @item_windows[@right_window.index]
            @item_windows[@right_window.index].visible = true
            for i in 0...@item_windows.size
            if i != @right_window.index then
            @item_windows.visible = false
            end
            end
            #equip and remove item
            g7_ms_scene_equip_refresh

            @actor.equip_from_menu = false
            @actor.equip_mode = nil
            @actor.equip_type_force = nil

            @right_window.index = save

            @right_window.scroll_fix_off
            @right_window.item_fix_off

            if @item_window.index != @old_index
            @right_window.refresh
            end
            @old_index = @item_window.index
            end
            #==============================================================================
            # Convert the right_window.index to equip_type
            #==============================================================================
            alias g7_ms_scene_equip_update_item update_item
            def update_item #this changes the @right_window.index to the correct value
            #to take account of extra slots
            @actor.equip_type_force = index_to_equip_part(@right_window.index)
            @right_window.item_fix_on
            @right_window.scroll_fix_on

            save = @right_window.index
            @right_window.index = index_to_equip_kind(@right_window.index)

            @actor.equip_from_menu = true
            g7_ms_scene_equip_update_item #equip item
            @actor.equip_from_menu = false
            @actor.equip_type_force = nil
            # if not in item_window screen
            if @item_window.index == -1

            #if shield-weapon can modify each other
            if @actor.shield_hand_wield == true and
            if @right_window.index == @actor.shield_hand_slot then
            @item_windows[0].refresh
            @item_windows[-1].refresh
            elsif @right_window.index == 0
            @item_windows[@actor.shield_hand_slot].refresh #refresh shield slot
            end
            end

            if @right_window.index == 0 and @actor.ignore_offhand? != true then
            if @item_window == @item_windows[-1] then
            @item_windows[0].refresh
            elsif @item_window == @item_windows[0] then
            @item_windows[-1].refresh
            end
            end

            end
            @right_window.index = save
            @right_window.scroll_fix_off
            @right_window.item_fix_off
            @actor.equip_type_force = nil
            end
            #==============================================================================
            # Convert index to equip part
            #==============================================================================
            def index_to_equip_part(index)
            #return index of slot in the array [0, @actor.armor_slots, actor.weapon_slots]
            if index >= @actor.weapon_slots.size #if armor
            return index - (@actor.weapon_slots.size - 1)

            elsif index >= 1 #if extra weapon
            return index + [@actor.armor_slots.size, 4].max #make it last
            else
            return 0
            end
            end
            #==============================================================================
            # Convert index to equip kind
            #==============================================================================
            def index_to_equip_kind(index)
            #return index of slot in either actor.weapon_slots or actor.armor_slots
            i = index_to_equip_part(index)

            if index >= @actor.weapon_slots.size #if armor
            set = @actor.armor_slots[i-1]
            else #if weapon
            i = i == 0 ? 0 : i - [@actor.armor_slots.size, 4].max
            set = @actor.weapon_slots
            end
            return set != nil ? set : 0
            end
            end #end scene_equip
            #==============================================================================
            # Window_EquipRight
            #==============================================================================

            class Window_EquipRight < Window_Selectable
            def item_fix_on
            #fix window
            @fixed_item = @data[self.index]
            @fixed = true
            end

            def item_fix_off
            #stop fixing window
            @fixed_item = nil
            @fixed = false
            end
            #==============================================================================
            # Dont scroll right window if you press L or R
            #==============================================================================
            def update
            if Input.repeat?(Input::R) or Input.repeat?(Input::L) then
            return
            else
            super
            end
            end
            #==============================================================================
            # Draws equipped items with support of translucent and cursed items
            #==============================================================================
            def draw_item_name(item, x, y, translucent = false)
            if item == nil
            return
            end
            bitmap = RPG::Cache.icon(item.icon_name)

            if item.cursed
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
            self.contents.font.color = G7_MS_MOD::CURSED_COLOR
            elsif translucent
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), 128)
            self.contents.font.color = disabled_color
            else
            self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
            self.contents.font.color = normal_color
            end

            self.contents.draw_text(x + 28, y, 212, 32, item.name)
            end


            alias g7_ms_window_equipright_item item
            #==============================================================================
            # Prevent needless update of item quantities in item window
            #==============================================================================
            def item
            #this ensures that the number of items doesn't get updated if you move
            #cursor in item window
            return @fixed_item if @fixed
            return g7_ms_window_equipright_item
            end

            #==============================================================================
            # Change the height of right windows to fit the slots
            #==============================================================================
            alias g7_ms_window_equipright_initialize initialize
            def initialize(actor) #init with a different height

            g7_ms_window_equipright_initialize(actor)
            h = (actor.weapon_slots.size + actor.armor_slots.size) * 32 #total height
            #of right window
            self.contents = Bitmap.new(width - 32, h) #change the height

            refresh
            end

            #==============================================================================
            # Shows the slot names and the name of the items you have equipped
            #==============================================================================
            def refresh #remplaced method to show caption of all items and slot
            self.contents.clear
            @data = []
            #------------------------------------------------------------------------------
            #Begin Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            self.contents.font.name = G7_MS_MOD::FONT_NAME
            for i in 0...@actor.weapon_slots.size
            @data.push($data_weapons[@actor.weapon_ids]) #push name of weapon
            end
            for i in 0...@actor.armor_slots.size
            @data.push($data_armors[@actor.armor_ids]) #push name of armor
            end
            @caption = []
            for i in 0...@actor.weapon_slots.size
            @caption.push(@actor.weapon_slot_names) #push name of weapon slots

            end
            for i in 0...@actor.armor_slots.size
            @caption.push(@actor.armor_slot_names[@actor.armor_slots-1]) #push name of armor slot
            end
            @item_max = @data.size
            if @actor.translucent_texts == nil then @actor.translucent_texts = Array.new end

            for i in 0...@data.size
            if @caption != nil
            self.contents.font.color = system_color
            self.contents.draw_text(4, 32 * i, 92, 32, @caption) #draw name of slots
            end
            draw_item_name(@data, 92, 32 * i, @actor.translucent_texts) #draw name of equipment
            end
            #support for other script
            if defined? xrxs_additional_refresh
            xrxs_additional_refresh
            end
            #------------------------------------------------------------------------------
            # End Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            end
            end

            #==============================================================================
            # New class to show equipitem in offhand
            #==============================================================================
            class Window_EquipOffHand < Window_EquipItem
            def refresh
            if self.contents != nil
            self.contents.dispose
            self.contents = nil
            end
            @data = []
            # Add equippable weapons

            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)
            weapon = $data_weapons
            if weapon.needs_offhand == false
            if G7_MS_MOD::TWOHANDED_IN_OFFHAND != false and weapon.nb_hands <= 1 then
            @data.push(weapon)
            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)
            self.contents.font.name = G7_MS_MOD::FONT_NAME
            #self.contents.font.size = 24
            for i in 0...@item_max-1
            draw_item(i)
            end
            if G7_MS_MOD::SHOW_REMOVE then
            i += 1
            x = 4 + i % @column_max * (288 + 32)
            y = i / @column_max * 32
            self.contents.draw_text(x+4, y, 100, 32, '[Remove]')
            end
            end
            end

            class Window_Selectable < Window_Base

            def scroll_fix_on
            @scroll_fixed = true
            end
            def scroll_fix_off
            @scroll_fixed = false
            update_cursor_rect
            end
            #==============================================================================
            # Prevents unwanted scrolling
            #==============================================================================

            alias g7_ms_update_cursor_rect update_cursor_rect
            def update_cursor_rect
            #This prevents the windows from scrolling if scroll is fixed
            #This was added to ensure that if there are few slots, the right equip
            #screen doesn't scroll needlessly
            return if @scroll_fixed
            g7_ms_update_cursor_rect
            end
            end

            #==============================================================================
            # Shows a new status window if Status_window_arrange is true
            #==============================================================================
            if G7_MS_MOD::STATUS_WINDOW_ARRANGE
            class Window_Status < Window_Base
            def refresh
            #------------------------------------------------------------------------------
            #Begin Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            self.contents.font.name = G7_MS_MOD::FONT_NAME
            #------------------------------------------------------------------------------
            # End Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            self.contents.clear
            draw_actor_graphic(@actor, 40, 112)
            draw_actor_name(@actor, 4, 0)
            draw_actor_class(@actor, 4 + 144, 0)
            draw_actor_level(@actor, 96, 32)
            draw_actor_state(@actor, 96, 64)
            draw_actor_hp(@actor, 96, 112, 172)
            draw_actor_sp(@actor, 96, 144, 172)
            #------------------------------------------------------------------------------
            #Begin Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            if G7_MS_MOD::EVADE
            # activate if you have a draw_actor_paramter method that draw evade
            draw_actor_parameter(@actor, 96, 192, 0)
            draw_actor_parameter(@actor, 96, 224, 1)
            draw_actor_parameter(@actor, 96, 256, 2)
            draw_actor_parameter(@actor, 96, 288, 3)
            draw_actor_parameter(@actor, 96, 320, 4)
            draw_actor_parameter(@actor, 96, 352, 5)
            draw_actor_parameter(@actor, 96, 384, 6)
            draw_actor_parameter(@actor, 96, 416, 7)
            else
            # default style
            draw_actor_parameter(@actor, 96, 192, 0)
            draw_actor_parameter(@actor, 96, 224, 1)
            draw_actor_parameter(@actor, 96, 256, 2)
            draw_actor_parameter(@actor, 96, 304, 3)
            draw_actor_parameter(@actor, 96, 336, 4)
            draw_actor_parameter(@actor, 96, 368, 5)
            draw_actor_parameter(@actor, 96, 400, 6)
            end
            self.contents.font.color = system_color
            self.contents.draw_text(320, 16, 80, 32, 'EXP')
            self.contents.draw_text(320, 48, 80, 32, 'NEXT')
            self.contents.font.color = normal_color
            self.contents.draw_text(320 + 80, 16, 84, 32, @actor.exp_s, 2)
            self.contents.draw_text(320 + 80, 48, 84, 32, @actor.next_rest_exp_s, 2)
            self.contents.font.color = system_color
            self.contents.draw_text(320, 80, 96, 32, 'Equipment')

            for i in 0...@actor.weapon_slots.size
            draw_item_name($data_weapons[@actor.weapon_ids], 320 + 16, 80 + 24 * (i+1))
            end

            for i in 0...@actor.armor_slots.size
            draw_item_name($data_armors[@actor.armor_ids], 320 + 16, 200 + 24 * (i - 4 + @actor.weapon_slots.size))
            end
            #------------------------------------------------------------------------------
            # End Multi-slot equipment script Edit
            #------------------------------------------------------------------------------
            end
            end


            end



            class Scene_Battle
            #==============================================================================
            # Go to phase4 step2 for attack if attack_count < attacks.size
            #==============================================================================
            alias g7_ms_scene_battle_phase4_step6 update_phase4_step6
            def update_phase4_step6(battler=nil)
            #This methods make the battler return to phase4 step2 if there
            #an extra attack to be made

            if battler== nil then #if no parameters
            g7_ms_scene_battle_phase4_step6 #first do the appropriate action
            if @active_battler.is_a?(Game_Enemy) then return end
            @active_battler.attack_count += 1 #increase the number of attack made
            if @active_battler.attack_count == @active_battler.attacks.size or
            @active_battler.current_action.kind != 0 or
            @active_battler.current_action.basic != 0 or
            judge == true#if all attacks are made

            @active_battler.attack_count = 0
            else
            @phase4_step = 2 #return for extra attack
            end
            else #if it requires the battler as a parameters
            g7_ms_scene_battle_phase4_step6(battler)
            if battler.is_a?(Game_Enemy) then return end
            battler.attack_count += 1 #increase the number of attack made
            if battler.attack_count == battler.attacks.size or
            battler.current_action.kind != 0 or battler.current_action.basic != 0 or
            judge == true#if all attacks are made

            battler.attack_count = 0 #end of turn and return attack count to 0
            else
            if @action_battlers.include?(@active_battler) == false then @action_battlers.push(battler) end #add the battler again to the action
            battler.phase = 2 #returns for extra attack
            end
            end

            end #end def
            end #end class

            #--------------------------------------------------------------------------
            # Fix equiped item if user load saved game
            #--------------------------------------------------------------------------
            class Scene_Load < Scene_File
            alias g7_ms_scene_load_read_save_data read_save_data
            def read_save_data(file)
            g7_ms_scene_load_read_save_data(file)
            $game_actors.order_items #order armor when you load a saved game in
            #case it is an old game
            end
            end

            #--------------------------------------------------------------------------
            # Fix items as you open RMXP
            #--------------------------------------------------------------------------
            class Scene_Title
            alias g7_ms_scene_title_main main
            def main
            RPG.initialized_item_types = false
            g7_ms_scene_title_main
            RPG.set_new_item_types
            end
            end

            class Interpreter
            #=======

Isith88

Quote from: Irockman1 on May 10, 2007, 07:36:30 AM
Learning would be nice, but that script can be a little hard to understand.

You just hang tight. ;D

EDIT: Here you are.

Well, it works like a charm.  I envy your ability to do that sort of thing with ease.  I wish I could do something in return for you.

I think I'll look at the original script that was used and then look at yours, and compare them.  That way I can see what you did and learn a thing or two.

Thanks very much!  :D

Irock

Your welcome!

I don't require anything in return. I'm glad to help. ;)

And make sure you add [RESOLVED] to the title.