#===============================================================================
# RMVX
# Multiple Simultaneous Inventories by IMP1 | Version 1.0 | 6th November 2011
#-------------------------------------------------------------------------------
# This script enables the party to have more than one inventory.
#===============================================================================
$imported ||= {}
$imported["IMP1"] ||= {}
$imported["IMP1"]["Multiple Simultaneous Inventories"] = 1.0
#===============================================================================
# Instructions:
#===============================================================================
=begin
* Set the amount of inventory you want in game.
* Use the following event commands:
$game_party.current_inventory = 4
* This will set all party item dealings to deal with inventory 4.
* Enjoy
=end
module IMP_MSI
#===============================================================================
# Customisation Begin
#===============================================================================
# The amount of inventories.
Amount_of_Inventories = 8
#===============================================================================
# Customisation End
#===============================================================================
end
#===============================================================================
# Game_Party
#-------------------------------------------------------------------------------
#
# Alised Methods:
# * initialize
#
# Overwritten Methods:
# * items
# * setup_battle_test_members
# * gain_item
# * item_number
#
# New Methods:
# * none.
#
#===============================================================================
class Game_Party
attr_accessor :current_inventory
alias non_mi_initialize initialize unless $@
def initialize
non_mi_initialize
@current_inventory = 0
@items = Array.new(IMP_MSI::Amount_of_Inventories)
@weapons = Array.new(IMP_MSI::Amount_of_Inventories)
@armors = Array.new(IMP_MSI::Amount_of_Inventories)
for i in 0...IMP_MSI::Amount_of_Inventories do
@items[i] = {}
@weapons[i] = {}
@armors[i] = {}
end
end
def items
result = []
for i in @items[@current_inventory].keys.sort
result.push($data_items[i]) if @items[@current_inventory][i] > 0
end
for i in @weapons[@current_inventory].keys.sort
result.push($data_weapons[i]) if @weapons[@current_inventory][i] > 0
end
for i in @armors[@current_inventory].keys.sort
result.push($data_armors[i]) if @armors[@current_inventory][i] > 0
end
return result
end
def setup_battle_test_members
@actors = []
for battler in $data_system.test_battlers
actor = $game_actors[battler.actor_id]
actor.change_level(battler.level, false)
actor.change_equip_by_id(0, battler.weapon_id, true)
actor.change_equip_by_id(1, battler.armor1_id, true)
actor.change_equip_by_id(2, battler.armor2_id, true)
actor.change_equip_by_id(3, battler.armor3_id, true)
actor.change_equip_by_id(4, battler.armor4_id, true)
actor.recover_all
@actors.push(actor.id)
end
@items = [{}]
for i in 1...$data_items.size
if $data_items[i].battle_ok?
@items[0][i] = 99 unless $data_items[i].name.empty?
end
end
end
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[@current_inventory][item.id] = [[number + n, 0].max, 99].min
when RPG::Weapon
@weapons[@current_inventory][item.id] = [[number + n, 0].max, 99].min
when RPG::Armor
@armors[@current_inventory][item.id] = [[number + n, 0].max, 99].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
def item_number(item)
case item
when RPG::Item
number = @items[@current_inventory][item.id]
when RPG::Weapon
number = @weapons[@current_inventory][item.id]
when RPG::Armor
number = @armors[@current_inventory][item.id]
end
return number == nil ? 0 : number
end
end # Game_Party