#============================================================================== # Lune Item Grid - Size Upgrade Addon Script by Black Mage # For: RPG Maker VX Ace # (Commissioned by LucaBicono) # # This script is an addon for Lune Item Grid script by Raizen, which can be # found on the link below: # https://forums.rpgmakerweb.com/index.php?threads/lune-item-grid.37399/ # # This script add a function to increase the size of the grid inventory after # the game is started. Do note that if you tried to decrease the grid size # instead, an error will occured because I have no plan to implement that. # # Use the following script call to change the grid size: # $game_party.party_grid_upgrade(x,y) # # License: CC-BY 3.0 # Feel free to use this addon for any kind of project you might have as long as # you abide by the terms of the original Lune Item Grid script. # # Find more of my works at: # https://burningwizard.wordpress.com/ #============================================================================== #============================================================================== # Changelog #============================================================================== # Version 1.0 # - Initial version. #============================================================================== #------------------------------------------------------------------------------ # * Beyond this is the sacred land of code. You need programming qualification # to delve deeper, or it'll cause many unnecessary problems. Proceed at your # own risk. #------------------------------------------------------------------------------ #============================================================================== # Make the grid become upgradable #============================================================================== class Game_System attr_accessor :lune_grid_size alias b_grid_addon_init initialize def initialize b_grid_addon_init; @lune_grid_size = Lune_Item_Grid::Grid_Size end end class Game_Party < Game_Unit def party_grid_upgrade(x,y) old_size = $game_system.lune_grid_size old_party_grid = @party_grid.dup $game_system.lune_grid_size = [x,y] @party_grid = Array.new(x - 1) for n in 0..@party_grid.size @party_grid[n] = Array.new(y, 0) end old_party_grid.each_with_index do |obj1, i| obj1.each_with_index do |obj2, j| @party_grid[i][j] = obj2 end end end end #============================================================================== #============================================================================== # Adjusting the script to follow new upgraded size. #============================================================================== class Game_Party < Game_Unit def remove_item(item) return false if item == nil if item.is_a?(RPG::Item) @item_type = 1 elsif item.is_a?(RPG::Weapon) @item_type = 2 else @item_type = 3 end item_size = get_item_size(item) if @item_grid_x == -1 max_x = $game_system.lune_grid_size[0] - 1 max_y = $game_system.lune_grid_size[1] - 1 item_found = false item_remove_x = -1 item_remove_y = -1 for y in 0..max_y for x in 0..max_x next unless @party_grid.is_a?(Array) if @party_grid[x][y][0] == @item_type && @party_grid[x][y][1] == item.id item_found = true item_remove_x = x item_remove_y = y end break if item_found end break if item_found end return unless item_found else item_remove_x = @item_grid_x item_remove_y = @item_grid_y end for x in item_remove_x..(item_size[0] + item_remove_x - 1) for y in item_remove_y..(item_size[1] + item_remove_y - 1) @party_grid[x][y] = 0 end end end def check_grid_available(item, add = true) return false if item == nil max_x = $game_system.lune_grid_size[0] - 1 max_y = $game_system.lune_grid_size[1] - 1 item_size = get_item_size(item) space_for_item = false for y in 0..max_y for x in 0..max_x space_for_item = check_for_item_space(x, y, item_size[0], item_size[1]) break if space_for_item end break if space_for_item end return false unless space_for_item return true unless add if item.is_a?(RPG::Item) @item_type = 1 elsif item.is_a?(RPG::Weapon) @item_type = 2 else @item_type = 3 end for x3 in x..(item_size[0] + x - 1) for y3 in y..(item_size[1] + y - 1) @party_grid[x3][y3] = [@item_type, item.id, x, y, item_size[0], item_size[1]] end end return true end end class Scene_Item < Scene_ItemBase def cursor_left? @item_window.index % $game_system.lune_grid_size[0] < $game_system.lune_grid_size[0]/2 end end class Window_Grid_ItemList < Window_ItemList def select_last inndex = @data.index($game_party.last_item.object) || 0 if $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]].is_a?(Array) inndex = $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][2] + $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][3] * $game_system.lune_grid_size[0] select(inndex) return end select(@data.index($game_party.last_item.object) || 0) end def col_max if @size_item_move return $game_system.lune_grid_size[0] + 1 - (@size_item_move[0] / Item_Size[0]) end return $game_system.lune_grid_size[0] end def item_width return @size_item_move[0] if @size_item_move != nil if $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]].is_a?(Array) $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][4] * Item_Size[0] else Item_Size[0] end end def item_height return @size_item_move[1] if @size_item_move != nil if $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]].is_a?(Array) $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][5] * Item_Size[1] else Item_Size[1] end end def item_max if @size_item_move return ($game_system.lune_grid_size[0] + 1 - (@size_item_move[0] / Item_Size[0]))*($game_system.lune_grid_size[1] + 1 - (@size_item_move[1] / Item_Size[1])) end $game_system.lune_grid_size[0]*$game_system.lune_grid_size[1] end def make_item_list for n in 0..$game_system.lune_grid_size[1] - 1 for i in 0..$game_system.lune_grid_size[0] - 1 if $game_party.party_grid[i][n] == 0 || $game_party.party_grid[i][n][2] != i || $game_party.party_grid[i][n][3] != n @data << nil else case $game_party.party_grid[i][n][0] when 1 @data << $data_items[$game_party.party_grid[i][n][1]] when 2 @data << $data_weapons[$game_party.party_grid[i][n][1]] when 3 @data << $data_armors[$game_party.party_grid[i][n][1]] end end end end end def cursor_down(wrap = false) if @size_item_move super(true) return end correction = 1 correction = $game_party.party_grid[index % $game_system.lune_grid_size[0]][index / $game_system.lune_grid_size[0]][5] if $game_party.party_grid[index % $game_system.lune_grid_size[0]][index / $game_system.lune_grid_size[0]].is_a?(Array) inndex = (index + col_max * correction) % item_max if $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]].is_a?(Array) inndex = $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][2] + $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][3] * $game_system.lune_grid_size[0] select(inndex) return end select((index + col_max * correction) % item_max) end def cursor_up(wrap = false) if @size_item_move super(true) return end inndex = (index - col_max + item_max) % item_max if $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]].is_a?(Array) inndex = $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][2] + $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][3] * $game_system.lune_grid_size[0] select(inndex) return end select((index - col_max) % item_max) end def cursor_right(wrap = false) if @size_item_move super(true) return end correction = 1 correction = $game_party.party_grid[index % $game_system.lune_grid_size[0]][index / $game_system.lune_grid_size[0]][4] if $game_party.party_grid[index % $game_system.lune_grid_size[0]][index / $game_system.lune_grid_size[0]].is_a?(Array) inndex = (index + correction) % item_max if $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]].is_a?(Array) inndex = $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][2] + $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][3] * $game_system.lune_grid_size[0] select(inndex) return end select((index + correction) % item_max) end def cursor_left(wrap = false) if @size_item_move super(true) return end inndex = (index - 1 + item_max) % item_max if $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]].is_a?(Array) inndex = $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][2] + $game_party.party_grid[inndex % $game_system.lune_grid_size[0]][inndex / $game_system.lune_grid_size[0]][3] * $game_system.lune_grid_size[0] select(inndex) return end select((index - 1 + item_max) % item_max) end def selected_item return false unless $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]].is_a?(Array) case $game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][0] when 1 return $data_items[$game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][1]] when 2 return $data_weapons[$game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][1]] when 3 return $data_armors[$game_party.party_grid[@index % $game_system.lune_grid_size[0]][@index / $game_system.lune_grid_size[0]][1]] end end end #==============================================================================