Advertisement
estriole

COMP - SES Instance + Mr Bubble Crafting

Jan 23rd, 2013
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.78 KB | None | 0 0
  1. =begin
  2. patch for SES Instance item with Mr. Bubble tactics ogre crafting system
  3. put this patch below all yanfly script. since yanfly do lots of rewrites to
  4. class window itemlist draw item method...
  5. (btw sorry for mispell Mr. Bubble :D)  
  6. Author : Estriole
  7. License: Free to use in all project (except the one containing pornography)
  8. as long as i credited (ESTRIOLE).
  9. =end
  10.  
  11. class Game_Party < Game_Unit
  12.   def item_instances(item)
  13.     type = :item if item.is_a?(RPG::Item)
  14.     type = :weapon if item.is_a?(RPG::Weapon)
  15.     type = :armor if item.is_a?(RPG::Armor)
  16.     return [] if eval("$game_#{type}s.size < 1")
  17.     array = []
  18.     eval("$game_#{type}s.each do |obj|
  19.    next if !obj
  20.    array.push(obj) if obj.old_id == #{item.id} && $game_party.item_number(obj)>0
  21.    end")
  22.     return array
  23.   end
  24.   alias old_item_number item_number
  25.   def item_number(item)
  26.     return instance_number(item)
  27.   end
  28.   def instance_number(item)
  29.     return 0 if item.nil?
  30.     instances = item_instances(item)
  31.       instances_amount = 0
  32.        instances.each do |ins|
  33.        instances_amount += old_item_number(ins)
  34.        end
  35.       party_amount = old_item_number(item) + instances_amount
  36.   end
  37. end
  38.  
  39. class Window_ItemList < Window_Selectable
  40.   def draw_item(index)
  41.     item = @data[index]
  42.     if item
  43.       rect = item_rect(index)
  44.       rect.width -= 4
  45.       draw_item_name(item, rect.x, rect.y, enable?(item))
  46.       draw_item_number(rect, item) unless item.unique
  47.     end
  48.   end
  49.   if $imported["YEA-CoreEngine"] == true
  50.     def draw_item(index)
  51.       item = @data[index]
  52.       return if item.nil?
  53.       rect = item_rect(index)
  54.       rect.width -= 4
  55.       draw_item_name(item, rect.x, rect.y, enable?(item), rect.width - 24)
  56.       draw_item_number(rect, item) unless item.unique
  57.     end
  58.   end
  59. end
  60.  
  61. class Window_EquipItem < Window_ItemList
  62.   if $imported["YEA-AceEquipEngine"] == true  
  63.     def draw_item(index)
  64.       item = @data[index]
  65.       rect = item_rect(index)
  66.       rect.width -= 4
  67.       if item.nil?
  68.         draw_remove_equip(rect)
  69.         return
  70.       end
  71.       dw = contents.width - rect.x - 24
  72.       draw_item_name(item, rect.x, rect.y, enable?(item), dw)
  73.       draw_item_number(rect, item) unless item.unique
  74.     end
  75.   end
  76. end
  77.  
  78. class Window_TOCraftingItemList < Window_ItemList
  79.   def draw_item(index)
  80.     item = @data[index]
  81.     if item
  82.       rect = item_rect(index)
  83.       rect.width -= 4
  84.       draw_item_name(item, rect.x, rect.y, enable?(item))
  85.       draw_item_number(rect, item)
  86.     end
  87.   end
  88.   if $imported["YEA-CoreEngine"] == true
  89.     def draw_item(index)
  90.       item = @data[index]
  91.       return if item.nil?
  92.       rect = item_rect(index)
  93.       rect.width -= 4
  94.       draw_item_name(item, rect.x, rect.y, enable?(item), rect.width - 24)
  95.       draw_item_number(rect, item)
  96.     end
  97.   end
  98. end
  99.  
  100. class Scene_TOCrafting < Scene_MenuBase
  101.   alias crafting_system_patch_instance_start start
  102.   def start
  103.     crafting_system_patch_instance_start
  104.     create_instances_window
  105.     @cancel_crafting = false
  106.     @instance_pool = {}
  107.   end
  108.   def create_instances_window
  109.     dx = @itemlist_window.x
  110.     dy = @itemlist_window.y
  111.     dw = @itemlist_window.width
  112.     dh = @itemlist_window.height
  113.     @instance_window = Window_TOCrafting_Instances.new(dx,dy,dw,dh)
  114.     @instance_window.set_handler(:ok,     method(:on_instance_ok))
  115.     @instance_window.set_handler(:cancel, method(:on_instance_cancel))    
  116.   end  
  117.  
  118.   def on_instance_ok
  119.     item = @instance_window.current_data
  120.     @instance_pool[@ingre]= [] if !@instance_pool[@ingre]
  121.     @instance_pool[@ingre].push(item)
  122.     @counter -= 1
  123.     @instance_window.activate if @counter != 0
  124.   end
  125.  
  126.   def on_instance_cancel
  127.     @cancel_crafting = true
  128.     @instance_pool = {}
  129.     @counter = 0
  130.   end  
  131.  
  132.   def lose_ingredients(item, number)
  133.     item.ingredient_list.each do |ingredient|
  134.       if ingredient.unique
  135.         @instance_pool[ingredient].each do |ins|
  136.         $game_party.lose_item(ins, 1)          
  137.         end      
  138.       else
  139.       $game_party.lose_item(ingredient, number)
  140.       end
  141.     end
  142.     @instance_pool = {}
  143.   end
  144.  
  145.   def select_instance(item,number)
  146.     item.ingredient_list.each do |ingredient|
  147.       if ingredient.unique
  148.         @counter = number
  149.         @ingre = ingredient
  150.         @instance_pool[ingredient] = [] if !@instance_pool[ingredient]
  151.         instances = $game_party.item_instances(ingredient) - @instance_pool[ingredient]
  152.         @instance_window.instances = instances
  153.         @itemlist_window.visible = false
  154.         @instance_window.show.activate
  155.         update while @counter > 0
  156.         @instance_window.visible = false
  157.         return if @cancel_crafting == true
  158.       end
  159.     end    
  160.   end
  161.  
  162.   def do_crafting(item, number)
  163.     return unless item
  164.     @cancel_crafting = false
  165.     play_crafting_se(item)
  166.     select_instance(item, number)
  167.     return if @cancel_crafting == true
  168.     lose_ingredients(item, number)
  169.     pay_crafting_fee(item, number)
  170.     gain_crafted_item(item, number)
  171.   end
  172.  
  173.   def on_number_ok
  174.     @number_window.close.hide
  175.     @number_window.number
  176.     do_crafting(@item, @number_window.number)
  177.     if @cancel_crafting == true
  178.     @gold_window.number = @info_window.number = 1
  179.     @info_window.page_change = true
  180.     return @itemlist_window.show.open.activate      
  181.     end
  182.     @result_window.set(@item, @number_window.number)
  183.     @result_window.show.open.activate
  184.     @itemlist_window.show.open
  185.     @info_window.page_change = true    
  186.     @gold_window.number = @info_window.number = 1
  187.     refresh
  188.     @result_window.show.open.activate
  189.   end
  190.  
  191. end #end class scene_tocrafting
  192.  
  193. class Window_TOCrafting_Instances < Window_Command
  194.   def initialize(dx,dy,dw,dh)
  195.     @height = dh
  196.     @width = dw
  197.     super(dx,dy)
  198.     @instances = []
  199.     self.visible = false
  200.     self.active = false
  201.   end
  202.   def instances=(ins)
  203.     return if @instances == ins
  204.     @instances = ins
  205.     make_command_list
  206.     select(0)
  207.     refresh
  208.   end
  209.   def make_command_list
  210.     return @list = [] if @instances.nil?
  211.     return @list = @instances.collect{|ins|ins.name}
  212.   end
  213.   def draw_item(index)
  214.     change_color(normal_color, command_enabled?(index))
  215.     dx = item_rect_for_text(index).x
  216.     dy = item_rect_for_text(index).y
  217.     draw_icon(@instances[index].icon_index,dx-4,dy)
  218.     draw_text(dx+20,dy,width-(3*standard_padding),line_height, command_name(index), alignment)
  219.   end
  220.   def current_data;index >= 0 ? @instances[index] : nil;end
  221.   def instances;@instances;end  
  222.   def window_width; return @width ;end
  223.   def window_height; return @height;end
  224.   def command_name(index); @list[index]; end  
  225.   def current_item_enabled?; true; end  
  226.   def command_enabled?(index); true; end
  227.   def ok_enabled?; true; end
  228.   def call_ok_handler;call_handler(:ok);end
  229.   def alignment;0;end
  230. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement