O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Lune Item Craft

Iniciado por Raizen, 13/12/2012 às 18:44

Lune Item Craft

Compativel com: RMVXAce
Compatibilidade :boa
Facilidade de uso: médio
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Pode ser modificado, e divulgado em outros lugares, mas peço que não retire os créditos.

[box class=titlebg]
Para que serve o script
[/box]

O script adiciona uma opção na janela de itens para combinar itens, função bem semelhante ao do jogo Diablo II.
  Funciona com Itens, Armaduras e Armas.
Tem 2 scripts, a função em si e um adicional que é a janela de receitas para quem quiser utiliza-lo também.



[box class=titlebg]
Script.
[/box]

#=======================================================
#        Lune Item Craft
# Autor: Raizen
# Comunidade: centrorpg.com
# Compatibilidade: RMVXAce

# Adiciona a função de combinar itens no menu, 
# semelhante a outros jogos como Diablo II.
#=======================================================

module Lune_Combine
#===========================================================================
# Caso utilize a janela de formulas configure a seguir, caso contrário 
# pule para a parte de Perder Itens?
# Texto Superior na janela
Text_comb1 = "Veja a seguir os itens fundidos e seus resultados"
Text_comb2 = "Para combinar itens entre no Menu"
# Nome que aparecerá no menu.
Craft = "Craft"
# Adicionar no menu?
# true = sim, false = não.
Craft_Menu = true

# Para ativar a janela de Craft, SceneManager.call(Scene_LuneCraft)
# Pode ser ativado pelo Chamar Script.
#===========================================================================
# Perder Itens?
# Ao ser feito a combinação se deseja que os itens voltem
# ou que sejam perdidos.
# true = perde, false = não perde
Lose_Itens = true
# Som a ser tocado ao fundir itens,
# O som tem que estar na pasta SE do projeto.
Sound = "Item3"
# Texto na janela inferior de combinação
TextComb = "Combinação - Aperte A para confirmar"
# Para criar novas combinações copie a sequencia de comandos e adicione
# ao valor dentro de Combination[n].
# Tecla a ser pressionada para fazer a fusão,
# lembrando que são as mesmas teclas dos eventos.
# A = SHIFT, X = A, Y = S, Z = D, L = Q, R = W.
# Nesse formato :A por exemplo.
Tecla = :A
  Combination = []
  #=========================================================================
  # Combinação 0 => 10 poções grandes                                     
  #=========================================================================
   Combination[0] = {
   # ID dos itens que serão fundidos
  "Itens ID"      => [1, 2, 3],
   # Tipo dos itens que seão fundidos, na mesma ordem que acima.
   # 1 = item, 2 = armas, 3 = armaduras
  "Itens Types"   => [1, 1, 1],
   # Quantidade necessaria de cada item
  "Quantity"      => [4, 5, 5],
   # Resultado final , ID do item.
  "Result Item"   =>  3,
   # Tipo do item obtido.
   # 1 = item, 2 = armas, 3 = armaduras
  "Res Type"      =>  1,  
   # Quantidade do item obtido
  "ResQuantity"   =>  10    }
  #=========================================================================
  # Combinação 1 => 5 machados                                    
  #=========================================================================
   Combination[1] = {
   # ID dos itens que serão fundidos
  "Itens ID"      => [1, 2, 3],
   # Tipo dos itens que seão fundidos, na mesma ordem que acima.
   # 1 = item, 2 = armas, 3 = armaduras
  "Itens Types"   => [1, 1, 1],
   # Quantidade necessaria de cada item
  "Quantity"      => [3, 3, 3],
   # Resultado final , ID do item.
  "Result Item"   =>  3,
   # Tipo do item obtido.
   # 1 = item, 2 = armas, 3 = armaduras
  "Res Type"      =>  2,  
   # Quantidade do item obtido
  "ResQuantity"   =>  5    }
  #=========================================================================
  # Combinação 2 => 1 poção média                                     
  #=========================================================================
   Combination[2] = {
   # ID dos itens que serão fundidos
  "Itens ID"      => [1],
   # Tipo dos itens que seão fundidos, na mesma ordem que acima.
   # 1 = item, 2 = armas, 3 = armaduras
  "Itens Types"   => [1],
   # Quantidade necessaria de cada item
  "Quantity"      => [5],
   # Resultado final , ID do item.
  "Result Item"   =>  2,
   # Tipo do item obtido.
   # 1 = item, 2 = armas, 3 = armaduras
  "Res Type"      =>  1,  
   # Quantidade do item obtido
  "ResQuantity"   =>  1    }
  
  
#===========================================================================
# Inicio do script
#===========================================================================
end

class Scene_Item < Scene_ItemBase
alias raizen_combine_start start
alias lune_terminate terminate
  def start
    raizen_combine_start
    $combine_itemicon = []
    $combine_itemcheck = []
    @combine_item = Window_Item_Combine.new
    @combine_item.viewport = @viewport
    @combine_window = Window_Combine.new
    @combine_window.viewport = @viewport
    @combine_item.set_handler(:new_game, method(:command_use))
    @combine_item.set_handler(:continue, method(:command_combine))
    @combine_item.set_handler(:shutdown, method(:command_release))
  end
  def create_item_window
    wy = @category_window.y + @category_window.height
    wh = Graphics.height - wy
    @item_window = Window_ItemList.new(0, wy, Graphics.width, wh - 80)
    @item_window.viewport = @viewport
    @item_window.help_window = @help_window
    @item_window.set_handler(:ok,     method(:on_item_ok))
    @item_window.set_handler(:cancel, method(:on_item_cancel))
    @category_window.item_window = @item_window
  end
  def on_item_ok
    if item == nil
      @item_window.activate
      return 
    end
    if @combine_item.close?
      @combine_item.open
      @combine_item.activate
    else
      determine_item    
    end
  end
  def return_itens
  return if $combine_itemicon == []
    for n in 0...$combine_itemicon.size
      $game_party.gain_item($combine_itemicon[n], $combine_itens[n])
    end
    $combine_itemicon = []
  end
  def update
    super
    if Input.trigger?(Lune_Combine::Tecla)
      @noreturn = false
      for n in 0...Lune_Combine::Combination.size
        @types = true
        @lune_combination = []
        for i in 0...Lune_Combine::Combination[n]['Itens Types'].size
          case Lune_Combine::Combination[n]['Itens Types'][i]
          when 1
            @lune_combination.push($data_items[Lune_Combine::Combination[n]['Itens ID'][i]])
          when 2
            @lune_combination.push($data_weapons[Lune_Combine::Combination[n]['Itens ID'][i]])
          when 3
            @lune_combination.push($data_armors[Lune_Combine::Combination[n]['Itens ID'][i]])
          end
        end
        for inc in 0...$combine_itemicon.size
          @types = false unless @lune_combination.include?($combine_itemicon[inc])
          get_pos = $combine_itemicon.index(@lune_combination[inc])
          if get_pos != nil
          @types = false if Lune_Combine::Combination[n]['Quantity'][inc] != $combine_itens[get_pos]
          end
        end
        @types = false unless @lune_combination.size == $combine_itemicon.size
        if @types 
          @noreturn = true
          gotoforge(n)
        end
      end
      return if @noreturn
      @number_window.close if @number_window
      command_release(Lune_Combine::Lose_Itens)
      Sound.play_buzzer
    end
    @combine_window.refresh
    if @number_window and @number_window.nitens == true
        @number_window.nitens = false
        @combine_item.close
        @item_window.refresh
        @item_window.activate
    end
    if Input.trigger?(:B) and !@combine_item.close?
      Sound.play_cancel
      if @number_window and !@number_window.close?
        @number_window.close
        @combine_item.activate
      else
        @combine_item.close
        @item_window.activate
      end
    end
  end
  def command_use
    determine_item
  end
  def command_combine
    p @index
    if @number_window and !@number_window.close?
      @combine_item.activate
      return
    end
    @number_window = Window_NumberInputInner.new(Window_Base.new(0,0,0,0), item, @item_window.index)
    @number_window.viewport = @viewport
    @number_window.start
  end
  def command_release(n = false)
    return_itens unless n
    $combine_itens = []
    $combine_itemicon = []
    @item_window.refresh
    @combine_item.close
    @item_window.activate
  end
  def terminate
    return_itens
    lune_terminate
  end
  def gotoforge(n)
    $combine_itens = []
    $combine_itemicon = []
    case Lune_Combine::Combination[n]['Res Type']
    when 1
      get_item = $data_items[Lune_Combine::Combination[n]['Result Item']]
    when 2
      get_item = $data_weapons[Lune_Combine::Combination[n]['Result Item']]
    when 3
      get_item = $data_armors[Lune_Combine::Combination[n]['Result Item']]
    end
    RPG::SE.new(Lune_Combine::Sound).play
    $game_party.gain_item(get_item, Lune_Combine::Combination[n]['ResQuantity'])
    @item_window.refresh
  end
end
#==============================================================================
# ** Window_Combine
#------------------------------------------------------------------------------
#  Esta janela exibe os itens a serem fundidos.
#==============================================================================

class Window_Combine < Window_Base
include Lune_Combine
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, window_height, Graphics.width, 80)
    $combine_itens = []
    refresh
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    return 160
  end
  def window_height
    Graphics.height - 80
  end
  
  #--------------------------------------------------------------------------
  # * Renovação
  #--------------------------------------------------------------------------
  def refresh
    contents.clear

    draw_text(0, -5, Graphics.width, 30, TextComb, 0)
    unless $combine_itens.nil?
      for i in 0...$combine_itens.size
        draw_combine_icons(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Aquisição do valor em dinheiro
  #--------------------------------------------------------------------------
  def value
    $game_party.gold
  end
  def draw_combine_icons(i)
    item_icon = $combine_itemicon[i].icon_index
    item_number = $combine_itens[i]
    draw_icon(item_icon, 0 + i*50, 30)
    draw_text(i*50 + 5, 30, 20, 30, "x", 0)
    draw_text(i*50 + 20, 30, 20, 30, item_number, 0)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da unidade monetária
  #--------------------------------------------------------------------------
  def currency_unit
    Vocab::currency_unit
  end
  #--------------------------------------------------------------------------
  # * Abertura da janela
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
end

#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  Esta janela exibe os parâmetros dos membros do grupo na tela de menu.
#==============================================================================

class Window_Item_Combine < Window_Command

  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
    self.z = 9999
    self.x = (Graphics.width / 2) - (window_width / 2)
    self.y = Graphics.height / 2
    self.openness = 0
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    return 160
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    add_main_commands

  end
  #--------------------------------------------------------------------------
  # * Adição dos comandos principais
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command("Usar",   :new_game,   true)
    add_command("Combinar",  :continue,  true)
    add_command("Liberar",  :shutdown,  true)
  end

end




#==============================================================================
# ** Scene_ItemBase
#------------------------------------------------------------------------------
#  Esta é a superclasse das classes que executam as telas de itens e 
# habilidades.
#==============================================================================

class Scene_ItemBase < Scene_MenuBase
  def determine_item
    @combine_item.close
    if item.is_a?(RPG::Item) and item.for_friend?
      show_sub_window(@actor_window)
      @actor_window.select_for_item(item)
    else
      item.is_a?(RPG::Item) ? use_item : Sound.play_buzzer 
      activate_item_window
    end
  end
end

#==============================================================================
# ** Window_NumberInputInner
#------------------------------------------------------------------------------
#  Esta janela é utilizada para o comando de eventos [Armazenar Número]
#==============================================================================

class Window_NumberInputInner < Window_NumberInput
attr_accessor :nitens
def initialize(message_window, item, index_2)
  @index_2 = index_2
  @item = item
  @get_lost_itens = 0
  super(message_window)
end
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    @digits_max = 2
    @number = @get_lost_itens
    @number = [[@number, 0].max, 10 ** @digits_max - 1].min
    @index = 0
    update_placement
    create_contents
    refresh
    open
    activate
  end
  #--------------------------------------------------------------------------
  # * Atualização da posição da janela
  #--------------------------------------------------------------------------
  def update_placement
    self.width = @digits_max * 20 + padding * 2
    self.height = fitting_height(1)
    self.x = (Graphics.width - width) / 2
    self.y = Graphics.height/2 - height
    self.z = 150
  end

  #--------------------------------------------------------------------------
  # * Definição de resultado ao pressionar o botão de confirmação
  #--------------------------------------------------------------------------
  def process_ok
    Sound.play_ok
    number = $game_party.item_number(@item)
    if @number <= number
    make_icon 
    end
    deactivate
    @nitens = true
    close
  end
  def make_icon
    @nitens = true
    $combine_itemicon.push(@item)
    $combine_itemcheck.push(@item.id)
    $combine_itens.push(@number)
    $game_party.lose_item(@item, @number)
  end
end


Adicionar a Janela de receitas com as combinações possíveis, coloque esse abaixo do script acima.
#==============================================================================
# ** Scene_Item
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de item.
#==============================================================================

class Scene_LuneCraft < Scene_ItemBase
  #--------------------------------------------------------------------------
  # * Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    @get_index = 0
    create_category_window
    create_item_window
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de categorias
  #--------------------------------------------------------------------------
  def create_category_window
    @category_window = Window_CombineList.new
    @category_window.viewport = @viewport
    @help_window = Window_Help_Comb.new
    @help_window.viewport = @viewport
    @category_window.y = @help_window.height
    @category_window.set_handler(:cancel, method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de itens
  #--------------------------------------------------------------------------
  def create_item_window
    @item_window = Window_ShowCombs.new
    @item_window.viewport = @viewport
    @category_window.item_window = @item_window
  end
  def update
    super
    unless @category_window.index == @get_index
      @item_window.refresh(@category_window.index)
      @get_index = @category_window.index
    end
  end
  #--------------------------------------------------------------------------
  # * Categoria [Confirmação]
  #--------------------------------------------------------------------------
  def on_category_ok
    @item_window.activate
    @item_window.select_last
  end
  #--------------------------------------------------------------------------
  # * Item [Confirmação]
  #--------------------------------------------------------------------------
  def on_item_ok
    $game_party.last_item.object = item
    determine_item
  end
  #--------------------------------------------------------------------------
  # * Item [Cancelamento]
  #--------------------------------------------------------------------------
  def on_item_cancel
    @item_window.unselect
    @category_window.activate
  end
  #--------------------------------------------------------------------------
  # * Execução de SE para o item
  #--------------------------------------------------------------------------
  def play_se_for_item
    Sound.play_use_item
  end
  #--------------------------------------------------------------------------
  # * Usando um item
  #--------------------------------------------------------------------------
  def use_item
    super
    @item_window.redraw_current_item
  end
end


#==============================================================================
# ** Window_ItemCategory
#------------------------------------------------------------------------------
#  Esta janela é usada para selecionar o tipo de item e equipamentos para
# tela de itens ou lojas.
#==============================================================================

class Window_CombineList < Window_Command
include Lune_Combine
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :item_window
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    150
  end
  def window_height
    Graphics.height - fitting_height(2)
  end
  #--------------------------------------------------------------------------
  # * Aquisição do número de colunas
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    super
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    for i in 0...Combination.size
      case Combination[i]['Res Type']
      when 1
         command = $data_items[Combination[i]['Result Item']]
      when 2
         command = $data_weapons[Combination[i]['Result Item']]
      when 3
         command = $data_armors[Combination[i]['Result Item']]
      end
      add_command(command.name,     nil)
    end
  end
  #--------------------------------------------------------------------------
  # * Definição da janela de itens
  #     item_window : janela de itens
  #--------------------------------------------------------------------------
  def item_window=(item_window)
    @item_window = item_window
    update
  end
end

#==============================================================================
# ** Window_ShowCombs
#------------------------------------------------------------------------------
#  Esta janela exibe a quantia de dinheiro.
#==============================================================================

class Window_ShowCombs < Window_Base
include Lune_Combine
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(150, fitting_height(2), Graphics.width - 150, Graphics.height - fitting_height(2))
    refresh(0)
  end
  def draw_horz_line(y)
    line_y = y + line_height / 2 - 1
    contents.fill_rect(0, line_y, contents_width, 2, line_color)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
  end
  def line_color
    color = normal_color
    color.alpha = 48
    color
  end
  #--------------------------------------------------------------------------
  # * Renovação
  #--------------------------------------------------------------------------
  def refresh(index)
    contents.clear
    contents.font.color.set(250, 55, 50)
    draw_text(0, 0, 140, 50, "Itens", 0)
    draw_text(0, 30, 140, 50, "Necessários", 0)
    Combination[index]['Itens ID'].size == 1 ? (y = 30) : (y = 0)
    draw_horz_line(Combination[index]['Itens ID'].size * 30 + y)
    contents.font.color.set(normal_color)
    for i in 0...Combination[index]['Itens ID'].size
    case Combination[index]['Itens Types'][i]
      when 1
         command = $data_items[Combination[index]['Itens ID'][i]]
      when 2
         command = $data_weapons[Combination[index]['Itens ID'][i]]
      when 3
         command = $data_armors[Combination[index]['Itens ID'][i]]
    end
    draw_icon(command.icon_index, 150, i*30 + 10)
    draw_text(175, i * 30, 160, fitting_height(1), command.name, 0)
    draw_text(330, i * 30, 160, fitting_height(1), "X", 0)
    draw_text(350, i * 30, 160, fitting_height(1), Combination[index]['Quantity'][i], 0)
    end
    y = Combination[index]['Itens ID'].size * 30 + y + 20
    contents.font.color.set(50, 255, 50)
    draw_text(0, y, 140, 50, "Itens", 0)
    draw_text(0, y + 30, 140, 50, "Obtidos", 0)
    contents.font.color.set(normal_color)
    case Combination[index]['Res Type']
    when 1
      command = $data_items[Combination[index]['Result Item']]
    when 2
      command = $data_weapons[Combination[index]['Result Item']]
    when 3
      command = $data_armors[Combination[index]['Result Item']]
    end
    draw_icon(command.icon_index, 150, y + 10)
    draw_text(175, y, 160, fitting_height(1), command.name, 0)
    draw_text(330, y, 160, fitting_height(1), "X", 0)
    draw_text(350, y, 160, fitting_height(1), Combination[index]['ResQuantity'], 0)
  end
  def open
    refresh
    super
  end
end

#==============================================================================
# ** Window_Gold
#------------------------------------------------------------------------------
#  Esta janela exibe a quantia de dinheiro.
#==============================================================================

class Window_Help_Comb < Window_Base
include Lune_Combine
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, Graphics.width, fitting_height(2))
    draw_text(0, - 15, Graphics.width, fitting_height(1), Text_comb1, 0)
    draw_text(0, 15, Graphics.width, fitting_height(1), Text_comb2, 0)
  end
end

#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================
if Lune_Combine::Craft_Menu
class Scene_Menu < Scene_MenuBase
  def create_command_window
    @command_window = Window_MenuCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,     method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:elements,  method(:command_craft))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  def command_craft
    SceneManager.call(Scene_LuneCraft)
  end
end

#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos do menu.
#==============================================================================

class Window_MenuCommand < Window_Command
alias raizen_add_main_commands add_main_commands
  def add_main_commands
    raizen_add_main_commands
    add_command(Lune_Combine::Craft, :elements, main_commands_enabled)
  end
end
end


[box class=titlebg]
Imagens
[/box]

Spoiler
[close]
Spoiler
[close]
Spoiler
[close]

[box class=titlebg]
Download
[/box]

Não necessário

[box class=titlebg]
Créditos e Avisos
[/box]

Raizen pelo script

eae kra sera q posso usar esse script? rsrs
ele parece ser otimo ele vai ta lá no meu projeto.
antes uma pergunta:
ele tem alguma incompatibilidade com o SAS IV?

Citação de: Vinihaquer online 28/12/2012 às 22:05
eae kra sera q posso usar esse script? rsrs
ele parece ser otimo ele vai ta lá no meu projeto.
antes uma pergunta:
ele tem alguma incompatibilidade com o SAS IV?
Teste e veja :P, mas bem provavelmente não, porque ele mexe com algo que eu acho que o SAS não mexe, então de boas ^^, e sim estou disponibilizando use a vontade :D

funfoou de boa aqui, valeuu cara

  Hum interresante, se intendi bem com esse scripte poderia criar itens de plantas pra fazer remedios, tipo Resident Evil,  :hm:   :lol:  Acho que vai me ajudar muito em um projeto ae...Gostei ^^

Citação de: doughq online 16/12/2013 às 15:14
  Hum interresante, se intendi bem com esse scripte poderia criar itens de plantas pra fazer remedios, tipo Resident Evil,  :hm:   :lol:  Acho que vai me ajudar muito em um projeto ae...Gostei ^^
Essa é a ideia xD, ele foi mais baseado no diablo II, porém tem uma função semelhante a essa.

Esse script é ótimo, eu fazia por eventos e ficava horrível (esteticamente falando).
Valeu mesmo.  :clap:

:ded: Aproveitando...
Qual a possibilidade de alem de combinar podermos desmontar um item?

Por exemplo, durante o jogo o jogador combina uma lanterna descarregada com uma bateria, e obtêm uma lanterna "carregada". Seria ótimo se o sistema permitisse que ele a "desmontasse" recebendo a lanterna descarregada e a bateria de volta pra colocar em outro item descarregado que precise, como um rádio.

É possível? Seria mais perfeito ainda, pra mim pelo menos. :XD:
_______________________________________
Gosta de RPG? Visite-nos:

Ah saquei, no caso algo que não apenas receba um item e sim dê para por exemplo um item receber vários.. ai no caso desmontaria  :será:

Vou tentar adicionar essa opção para te ajudar, eu te aviso por MP quando eu terminar.

É possível fazer uma combinação que não apareça nas receitas? Isso seria útil para criar combinações secretas, por exemplo.