Advertisement
NinjaChicle

RPG Maker VX Ace - Item Age Sorting Script

Jul 24th, 2023 (edited)
1,836
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.76 KB | None | 1 0
  1. #------------------------------------------------------------------------------#
  2. # - Item Age Sorting Script - by NinjaChicle
  3. #
  4. # This script pushes the most recent obtained item to
  5. # the first index in the item list.
  6. #
  7. # v1.1 - Fixed issue where item disappeared after being used in the menu while
  8. #        the item number was still above 0.
  9. # v1.2 - Fixed Hime's Instance Items compatibility
  10. #------------------------------------------------------------------------------#
  11. module Sort_em_all
  12.  SORT_ITEMS   = true
  13.  SORT_WEAPONS = true
  14.  SORT_ARMORS  = true
  15. end
  16. # Turn to false if you don't want a type of item to be sorted.
  17. # For the sorting to take effect, obtain an item in your game.
  18. #
  19. # Doesn't work well on save files that existed before using this script.
  20.  
  21. module DataManager
  22.   class << self
  23.     alias :itemtastic_create_game_objects :create_game_objects
  24.     alias :itemtastic_make_save_contents :make_save_contents
  25.     alias :itemtastic_extract_save_contents :extract_save_contents
  26.   end
  27.  
  28.   def self.create_game_objects
  29.     itemtastic_create_game_objects
  30.     $awesome_items = []
  31.     $awesome_weapons = []
  32.     $awesome_armors = []
  33.   end
  34.   def self.make_save_contents
  35.     contents = itemtastic_make_save_contents
  36.     contents[:sorted_items]   = $awesome_items
  37.     contents[:sorted_weapons] = $awesome_weapons
  38.     contents[:sorted_armors]  = $awesome_armors
  39.     contents
  40.   end
  41.  
  42.   def self.extract_save_contents(contents)
  43.     itemtastic_extract_save_contents(contents)
  44.     $awesome_items = contents[:sorted_items]     || []
  45.     $awesome_weapons = contents[:sorted_weapons] || []
  46.     $awesome_armors = contents[:sorted_armors]   || []
  47.   end
  48. end
  49.  
  50. class Game_Party < Game_Unit
  51.   alias sortastic_gain_item gain_item
  52.   def gain_item(item, amount, include_equip = false)
  53.     sortastic_gain_item(item, amount, include_equip)
  54.       if item.is_a?(RPG::Item) && Sort_em_all::SORT_ITEMS == true
  55.        $awesome_items ||= []
  56.        $awesome_items = $game_party.all_items.select {|item| item.is_a?(RPG::Item) } if $awesome_items == []
  57.        if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
  58.         $awesome_items.delete(item) if $awesome_items.include?(item)
  59.         $awesome_items.unshift(item) unless $game_party.item_number(item) < 1
  60.        end
  61.       elsif item.is_a?(RPG::Weapon) && Sort_em_all::SORT_WEAPONS == true
  62.        $awesome_weapons ||= []
  63.        $awesome_weapons = $game_party.all_items.select {|item| item.is_a?(RPG::Weapon) } if $awesome_weapons == []
  64.        if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
  65.         $awesome_weapons.delete(item) if $awesome_weapons.include?(item)
  66.         $awesome_weapons.unshift(item) unless $game_party.item_number(item) < 1
  67.        end
  68.       elsif item.is_a?(RPG::Armor) && Sort_em_all::SORT_ARMORS == true
  69.        $awesome_armors ||= []
  70.        $awesome_armors = $game_party.all_items.select {|item| item.is_a?(RPG::Armor) } if $awesome_armors == []
  71.        if $imported["TH_InstanceItems"] && !instance_enabled?(item) || !$imported["TH_InstanceItems"]
  72.         $awesome_armors.delete(item) if $awesome_armors.include?(item)
  73.         $awesome_armors.unshift(item) unless $game_party.item_number(item) < 1
  74.        end
  75.       end
  76.   end
  77. #-------------------------------------------------------------------------------#
  78. # Instance Items compatibility
  79. #-------------------------------------------------------------------------------#
  80.   if $imported["TH_InstanceItems"]
  81.    alias you_gotta_add_instance add_instance_item
  82.    def add_instance_item(item)
  83.     you_gotta_add_instance(item)
  84.     awesome_stuff = get_awesome_item(item)
  85.     awesome_stuff ||= []
  86.     awesome_stuff = select_awesome_item(item) if awesome_stuff == []
  87.     awesome_stuff.delete(item) if awesome_stuff.include?(item)
  88.     awesome_stuff.unshift(item)
  89.     set_awesome_item(awesome_stuff)
  90.    end
  91.  
  92.    alias you_gotta_lose_instance lose_instance_item
  93.    def lose_instance_item(item)
  94.     you_gotta_lose_instance(item)
  95.     awesome_stuff = get_awesome_item(item)
  96.     awesome_stuff ||= []
  97.     awesome_stuff = select_awesome_item(item) if awesome_stuff == []
  98.     awesome_stuff.delete(item) if awesome_stuff.include?(item)
  99.     set_awesome_item(awesome_stuff)
  100.    end
  101.  
  102.    def lose_template_item(item, include_equip)
  103.     container_list = item_container_list(item)
  104.     item_lost = container_list.find {|obj| obj.template_id == item.template_id }
  105.     if item_lost
  106.       container = item_container(item.class)
  107.       container[item.template_id] ||= 0
  108.       container[item.template_id] -= 1
  109.       container_list.delete(item_lost)
  110.     elsif include_equip
  111.       discard_members_template_equip(item, 1)
  112.     end
  113.     awesome_stuff = get_awesome_item(item_lost)
  114.     awesome_stuff ||= []
  115.     awesome_stuff = select_awesome_item(item_lost) if awesome_stuff == []
  116.     awesome_stuff.delete(item_lost) if awesome_stuff.include?(item_lost)
  117.     set_awesome_item(awesome_stuff)
  118.     return item_lost
  119.   end
  120.  end
  121. #-------------------------------------------------------------------------------#
  122. # Instance Items compatibility
  123. #-------------------------------------------------------------------------------#
  124.   def select_awesome_item(item)
  125.    return $awesome_weapons = $game_party.all_items.select {|item| item.is_a?(RPG::Weapon) } if item.is_a?(RPG::Weapon)
  126.    return $awesome_armors = $game_party.all_items.select {|item| item.is_a?(RPG::Armor) } if item.is_a?(RPG::Armor)
  127.    return $awesome_items = $game_party.all_items.select {|item| item.is_a?(RPG::Item) } if item.is_a?(RPG::Item)
  128.   end
  129.  
  130.   def set_awesome_item(item)
  131.    return $awesome_weapons = item if item.is_a?(RPG::Weapon)
  132.    return $awesome_armors = item if item.is_a?(RPG::Armor)
  133.    return $awesome_items = item if item.is_a?(RPG::Item)
  134.  end
  135.  
  136.   def get_awesome_item(item)
  137.    return $awesome_weapons if item.is_a?(RPG::Weapon)
  138.    return $awesome_armors if item.is_a?(RPG::Armor)
  139.    return $awesome_items if item.is_a?(RPG::Item)
  140.   end
  141. end
  142.  
  143. class Window_ItemList < Window_Selectable
  144.   alias sortastic_make_item_list make_item_list
  145.   def make_item_list
  146.     sortastic_make_item_list
  147.     if SceneManager.scene_is?(Scene_Item)
  148.        if @data[0].is_a?(RPG::Weapon)
  149.         if Sort_em_all::SORT_WEAPONS == true
  150.          @data = $awesome_weapons.select {|item| include?(item) }
  151.          @data.push(nil) if include?(nil)
  152.         end
  153.       elsif @data[0].is_a?(RPG::Armor)
  154.         if Sort_em_all::SORT_ARMORS == true
  155.          @data = $awesome_armors.select {|item| include?(item) }
  156.          @data.push(nil) if include?(nil)
  157.         end
  158.       else
  159.         if Sort_em_all::SORT_ITEMS == true
  160.          @data = $awesome_items.select {|item| include?(item) }
  161.          @data.push(nil) if include?(nil)
  162.         end
  163.       end
  164.     end
  165.   end
  166. end
Tags: RPG maker
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement