Advertisement
Fomar0153

Fomar0153 - Multiple Inventories 1.0

Feb 24th, 2012
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.91 KB | None | 0 0
  1. =begin
  2. Multiple Inventories
  3. by Fomar0153
  4. Version 1.0
  5. ----------------------
  6. Notes
  7. ----------------------
  8. Allows you to easily handle multiple inventories in game.
  9. ----------------------
  10. Instructions
  11. ----------------------
  12. The default inventory is called "Main" you can change it below
  13. if you wish.
  14. To change inventory call:
  15. $game_party.change_inventory(name)
  16. To merge two inventories call:
  17. $game_party.merge_inventories(inv1, inv2)
  18. inv1 will recieve all the gold and items in inv2
  19. If ERASE_WHEN_MERGE is set to true then inv2 will be erased after
  20. the merge.
  21. ----------------------
  22. Known bugs
  23. ----------------------
  24. None
  25. =end
  26. class Game_Party < Game_Unit
  27.   #--------------------------------------------------------------------------
  28.   # ● Set the name of your starting inventory here
  29.   #--------------------------------------------------------------------------
  30.   START_INVENTORY = "Main"
  31.   #--------------------------------------------------------------------------
  32.   # ● Set the name of your starting inventory here
  33.   #--------------------------------------------------------------------------
  34.   ERASE_WHEN_MERGE = true
  35.   #--------------------------------------------------------------------------
  36.   # ● Aliased
  37.   #--------------------------------------------------------------------------
  38.   alias mi_initialize initialize
  39.   def initialize
  40.     mi_initialize
  41.     @current_inventory = START_INVENTORY
  42.     @gold = {}
  43.     @gold[START_INVENTORY] = 0
  44.     @last_item = Game_BaseItem.new
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● New, example call $game_party.change_inventory(name)
  48.   #--------------------------------------------------------------------------
  49.   def change_inventory(name)
  50.     if @gold[name].nil?
  51.       @gold[name] = 0
  52.       @items[name] = {}
  53.       @weapons[name] = {}
  54.       @armors[name] = {}
  55.     end
  56.     @current_inventory = name
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● New, example call $game_party.merge_inventories(inv1, inv2)
  60.   #--------------------------------------------------------------------------
  61.   def merge_inventories(inv1, inv2)
  62.     return if @gold[inv1].nil? or @gold[inv2].nil?
  63.     @current_inventory = inv1
  64.     @gold[inv1] += @gold[inv2]
  65.     @gold[inv2] = nil if ERASE_WHEN_MERGE
  66.     for item in @items[inv2].keys
  67.       gain_item($data_items[item.to_i], @items[inv2][item])
  68.     end
  69.     @items[inv2] = nil if ERASE_WHEN_MERGE
  70.     for weapon in @weapons[inv2].keys
  71.       gain_item($data_weapons[weapon.to_i], @weapons[inv2][weapon])
  72.     end
  73.     @weapons[inv2] = nil if ERASE_WHEN_MERGE
  74.     for armor in @armors[inv2].keys
  75.       gain_item($data_armors[armor.to_i], @armors[inv2][armor])
  76.     end
  77.     @armors[inv2] = nil if ERASE_WHEN_MERGE
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● Aliased
  81.   #--------------------------------------------------------------------------
  82.   alias mi_init_all_items init_all_items
  83.   def init_all_items
  84.     mi_init_all_items
  85.     @items[START_INVENTORY] = {}
  86.     @weapons[START_INVENTORY] = {}
  87.     @armors[START_INVENTORY] = {}
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● New
  91.   #--------------------------------------------------------------------------
  92.   def gold
  93.     return @gold[START_INVENTORY]
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● Rewrites
  97.   #--------------------------------------------------------------------------
  98.   def items
  99.     @items[@current_inventory].keys.sort.collect {|id| $data_items[id] }
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● Rewrites
  103.   #--------------------------------------------------------------------------
  104.   def weapons
  105.     @weapons[@current_inventory].keys.sort.collect {|id| $data_weapons[id] }
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● Rewrites
  109.   #--------------------------------------------------------------------------
  110.   def armors
  111.     @armors[@current_inventory].keys.sort.collect {|id| $data_armors[id] }
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● Rewrites
  115.   #--------------------------------------------------------------------------
  116.   def item_container(item_class)
  117.     return @items[@current_inventory]   if item_class == RPG::Item
  118.     return @weapons[@current_inventory] if item_class == RPG::Weapon
  119.     return @armors[@current_inventory]  if item_class == RPG::Armor
  120.     return nil
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● Rewrites
  124.   #--------------------------------------------------------------------------
  125.   def gain_gold(amount)
  126.     @gold[@current_inventory] = [[@gold[@current_inventory] + amount, 0].max, max_gold].min
  127.   end
  128. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement