Heartbreak61

「SIMPLE STUPID」 Item Filter ver.0.60

Jun 30th, 2013
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.56 KB | None | 0 0
  1. #==============================================================================
  2. # ■ 「SIMPLE STUPID」 Item Filter ver.0.60
  3. # by HBK61
  4. # Requires: N/A
  5. # Rewrites method:
  6. #   Window_ItemList#make_item_list
  7. # Aliases method:
  8. #   Window_ItemList#initialize
  9. #   Scene_Item#start
  10. #   Scene_Item#create_category_window
  11. #   Scene_Item#create_item_window
  12. #              
  13. #==============================================================================
  14. # CHANGELOG
  15. # - ver0.60  2013.07.1   Started the script & finished
  16. #==============================================================================
  17. # INTRODUCTION
  18. # - Simply stupidly add filtering function in Scene Item.
  19. #==============================================================================
  20. # INSTRUCTION
  21. # - Simply write "<category(space)=(space)my_category>" (without quotes)
  22. #   in item's/weapon's/armor's note.
  23. # example:
  24. #   <category = loot_items>
  25. #==============================================================================
  26.  
  27. module HBK
  28.   module ITEM_TAB
  29.     #enable/disable
  30.     ENABLED = true
  31.    
  32.     # use "_" for space & no upcase!
  33.     CATEGORY =[
  34.         :alchemy,
  35.         :tradeable,
  36.         :loots,
  37.         :crap,
  38.         ]
  39.     HELP_TEXT = "←→:Category select\nA: Filter B:Back C:Decision"
  40.   end #ITEM_TAB
  41. end #HBK
  42.  
  43. if HBK::ITEM_TAB::ENABLED
  44.  
  45. #==============================================================================
  46. # ■ Window_ItemCategory
  47. #==============================================================================
  48. class Window_ItemCategory < Window_HorzCommand
  49.   def process_handling
  50.     super
  51.     return process_extend if handle?(:extend) && Input.trigger?(:A) && active
  52.   end
  53.  
  54.   def process_extend
  55.     Sound.play_ok
  56.     Input.update
  57.     deactivate
  58.     call_handler(:extend)
  59.   end
  60.  
  61.   def update_help
  62.     @help_window.set_text(HBK::ITEM_TAB::HELP_TEXT)
  63.   end
  64. end #Window_ItemCategory
  65.  
  66. #==============================================================================
  67. # ■ Window_ItemList
  68. #==============================================================================
  69. class Window_ItemList < Window_Selectable
  70.   alias hbk_ssit_initialize initialize
  71.   def initialize(x, y, width, height)
  72.     hbk_ssit_initialize(x, y, width, height)
  73.     @filter = :none
  74.   end
  75.  
  76.   def process_handling
  77.     super
  78.     return process_extend if handle?(:extend) && Input.trigger?(:A) && active
  79.   end
  80.  
  81.   def process_extend
  82.     Sound.play_ok
  83.     Input.update
  84.     deactivate
  85.     call_handler(:extend)
  86.   end
  87.  
  88.   def filter=(filter)
  89.     return if @filter == filter
  90.     @filter = filter
  91.     refresh
  92.     self.oy = 0
  93.   end
  94.  
  95.   def filter?(item)
  96.     return false if item.nil?
  97.     if HBK::ITEM_TAB::CATEGORY.include?(@filter)
  98.       item.note.include?("<category = " + @filter.to_s + ">")
  99.     elsif @filter == :no_filter
  100.       true
  101.     else
  102.       false
  103.     end
  104.   end
  105.  
  106.   #--------------------------------------------------------------------------
  107.   # ● rewrite
  108.   #--------------------------------------------------------------------------
  109.   def make_item_list
  110.     @data = $game_party.all_items.select {|item|
  111.       ( include?(item) && filter?(item) )
  112.     }
  113.     @data.push(nil) if include?(nil)
  114.   end
  115. end #Window_ItemList
  116.  
  117. #==============================================================================
  118. # ■ Window_ItemOrganizer
  119. #==============================================================================
  120. class Window_ItemOrganizer < Window_Command
  121.   def window_width
  122.     return 180
  123.   end
  124.  
  125.   def make_command_list
  126.     add_command("Clear Filter", :no_filter)
  127.     HBK::ITEM_TAB::CATEGORY.size.times{|i|
  128.       sym = HBK::ITEM_TAB::CATEGORY[i]
  129.       next if sym.nil?
  130.       txt = sym.to_s.capitalize
  131.       txt.gsub!(/_/) {" "}
  132.       txt.gsub!(/(\s\w)/) {$&.upcase}
  133.       add_command(txt, sym)
  134.       }
  135.   end
  136. end #Window_ItemOrganizer
  137.  
  138. #==============================================================================
  139. # ■ Scene_Item
  140. #==============================================================================
  141. class Scene_Item
  142.   alias hbk_ssit_start start
  143.   def start
  144.     hbk_ssit_start
  145.     create_item_organizer_window
  146.   end
  147.  
  148.   alias hbk_ssit_create_category_window create_category_window
  149.   def create_category_window
  150.     hbk_ssit_create_category_window
  151.     @category_window.set_handler(:extend, method(:start_organizer))
  152.   end
  153.  
  154.   alias hbk_ssit_create_item_window create_item_window
  155.   def create_item_window
  156.     hbk_ssit_create_item_window
  157.     @item_window.set_handler(:extend, method(:start_organizer))
  158.     @item_window.filter = :no_filter
  159.   end
  160.  
  161.   def create_item_organizer_window
  162.     @organizer_window = Window_ItemOrganizer.new(0,0)
  163.     @organizer_window.hide
  164.     @organizer_window.close
  165.     @organizer_window.x = Graphics.width - @organizer_window.width
  166.     @organizer_window.y = @help_window.height
  167.     @organizer_window.z = @viewport.z + 1
  168.     @organizer_window.set_handler(:ok,     method(:on_organizer_ok))
  169.     @organizer_window.set_handler(:cancel, method(:return_prev_window))
  170.   end
  171.  
  172.   def start_organizer
  173.     @item_window.unselect
  174.     @category_window.deactivate
  175.     @organizer_window.show
  176.     @organizer_window.open
  177.     @organizer_window.activate
  178.   end
  179.  
  180.   def on_organizer_ok
  181.     @item_window.filter = @organizer_window.current_symbol
  182.     @organizer_window.close
  183.     @organizer_window.deactivate
  184.     @category_window.activate
  185.   end
  186.  
  187.   def return_prev_window
  188.     @organizer_window.close
  189.     @organizer_window.deactivate
  190.     @category_window.activate
  191.   end
  192. end #Scene_Item
  193.  
  194. end #if HBK::ITEM_TAB::ENABLED
Advertisement
Add Comment
Please, Sign In to add comment