#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#==============================================================================
module RE_MENU
#--------------------------------------------------------------------------
# ENGLISH
#--------------------------------------------------------------------------
# * how to create a recipe
# * place Reciepe[a] = [b, c, d]
# * a is a crescent number
# * b and c are the items that will be combined
# * d is the end item
#--------------------------------------------------------------------------
# PORTUGUES
#--------------------------------------------------------------------------
# * receitas de combinações de itens
# * coloque Reciepe[a] = [b, c, d] sendo
# * a o valor crescente da receita de 1 a sla quantos
# * b e c o valor dos intens da receitas que vam combinar
# * d o item que será formado apartir dos outrs
#--------------------------------------------------------------------------
Recipe = {}
Recipe[1] = [12, 13 , 14]
Recipe[2] = [1, 1, 2]
#Recipe[3] = [13, 16, 17]
#Recipe[4] = [15, 14, 17]
#Recipe[5] = [12, 12, 18]
#Recipe[6] = [12, 18, 19]
#--------------------------------------------------------------------------
# vocabulary
#--------------------------------------------------------------------------
Equip = " "
Discard = " "
Combine = "Combine"
Use = "Use"
Equip = "EQ: "
Inventary = "Item"
Key_itens = "Files"
Help_desc = " "
Help_name = " "
Maps = "Maps"
#--------------------------------------------------------------------------
# * Combine sond
#--------------------------------------------------------------------------
def self.playcombine
Sound.play_use_item
end
end
#OTTO Create Image for Background!!
def create_Image_Background
$sfondo = Sprite.new
$sfondo.bitmap = Cache.system("Menu_"+$game_variables[10].to_s)
$sfondo.x = 0
$sfondo.y = 0
#$sfondo.z =
$sfondo.opacity = 255
end
#==============================================================================
# ** Window_Help now turned into Item Name by Otto
#------------------------------------------------------------------------------
# Esta janela exibe explicação de habilidades e itens e outras informações.
#==============================================================================
class RE_Window_Iname < Window_Base
#--------------------------------------------------------------------------
# * Inicialização do objeto
# line_number : número de linhas
#--------------------------------------------------------------------------
def initialize(line_number = 1)
super(268, 252, 207, 48) # Graphics.height - 384) OTTO (252)
end
#--------------------------------------------------------------------------
# * Configuração de texto
# text : texto
#--------------------------------------------------------------------------
def set_text(text)
if text != @text
@text = text
refresh
end
end
#--------------------------------------------------------------------------
# * Limpeza
#--------------------------------------------------------------------------
def clear
set_text(" ")
end
#--------------------------------------------------------------------------
# * Definição de item
# item : habilidades, itens, etc.
#--------------------------------------------------------------------------
def set_item(item)
set_text(item ? item.description : " ")
@item = item
end
#--------------------------------------------------------------------------
# * Renovação
#--------------------------------------------------------------------------
def refresh
contents.clear
if @item != nil
#draw_text(5, 70, 150, 50, RE_MENU::Help_desc)
#~ draw_text(5, -12, 640, 100, @text)
draw_text(0, -12 , 207, 48, @item.name) #RE_MENU::Help_name + @item.name)
end
end
end
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
# Esta janela exibe os comandos do menu.
#==============================================================================
class MenuCommand < Window_HorzCommand
#--------------------------------------------------------------------------
# * Inicialização da posição do comando de seleção (método da classe)
#--------------------------------------------------------------------------
def self.init_command_position
@@last_command_symbol = nil
end
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize
super(268, 72)
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
return 372
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_height
48
end
#--------------------------------------------------------------------------
# * Aquisição do número de linhas exibidas
#--------------------------------------------------------------------------
def col_max
return 4
end
#def visible_line_number
# 3
#end
#--------------------------------------------------------------------------
# * Criação da lista de comandos
#--------------------------------------------------------------------------
def make_command_list
add_main_commands
add_map_command
add_game_end_command
end
#--------------------------------------------------------------------------
# * Adição dos comandos principais
#--------------------------------------------------------------------------
def add_main_commands
add_command(RE_MENU::Inventary, :item, main_commands_enabled)
add_command(RE_MENU::Key_itens, :key_item, main_commands_enabled)
end
#-------------------------------------------------------------------------
# not sure wtf im doing lol #OTTO
#-------------------------------------------------------------------------
def add_map_command
add_command(RE_MENU::Maps, :maps, main_commands_enabled) #OTTO
end
#--------------------------------------
#--------------------------------------------------------------------------
# * Definição de habilitação dos comandos principais
#--------------------------------------------------------------------------
def main_commands_enabled
$game_party.exists
end
#--------------------------------------------------------------------------
# * Adição do comando de fim do jogo
#--------------------------------------------------------------------------
def add_game_end_command
add_command(Vocab::game_end, :game_end)
end
#--------------------------------------------------------------------------
# * Definição de resultado ao pressionar o botão de confirmação
#--------------------------------------------------------------------------
def process_ok
@@last_command_symbol = current_symbol
super
end
#--------------------------------------------------------------------------
# * Definição da janela de itens
# item_window : janela de itens
#--------------------------------------------------------------------------
def item_window=(item_window)
@item_window = item_window
@item_window.category = current_symbol
end
end
class Window_ItemList < Window_Selectable
attr_accessor :iname_window #Thanks TheoAllen
#--------------------------------------------------------------------------
# * Inicialização do objeto
# x : coordenada X
# y : coordenada Y
# width : largura
# height : altura
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(268, 120, 207, 132)
@category = :none
@data = []
end
#--------------------------------------------------------------------------
# * Definição de categoria
#--------------------------------------------------------------------------
def category=(category)
return if @category == category
@category = category
refresh
self.oy = 0
end
#--------------------------------------------------------------------------
# * Aquisição do número de colunas
#--------------------------------------------------------------------------
def col_max
return 4
end
#--------------------------------------------------------------------------
# * Aquisição do número máximo de itens
#--------------------------------------------------------------------------
def item_max
case @category
when :item
8 + $game_variables[14]
when :key_item
@data ? @data.size : 1
else
@data ? @data.size : 1
end
end
#~ def item_max
#~ #8 + $game_variables[14]
#~ @data ? @data.size : 1 #Max Inventory Slot? Can I use variable? #OTTO
#~ end
#--------------------------------------------------------------------------
# * Aquisição do espaçamento entre os itens
#--------------------------------------------------------------------------
def spacing
return 4
end
#--------------------------------------------------------------------------
# * Aquisição de altura do item
#--------------------------------------------------------------------------
def item_height
36
end
#--------------------------------------------------------------------------
# * Aquisição das informações do item
#--------------------------------------------------------------------------
def item
@data && index >= 0 ? @data[index] : nil
end
#--------------------------------------------------------------------------
# * Definição de habilitação de seleção
#--------------------------------------------------------------------------
def current_item_enabled?
enable?(@data[index])
end
#--------------------------------------------------------------------------
# * Inclusão do item na lista
# item : item
#--------------------------------------------------------------------------
def include?(item)
case @category
when :item
item.is_a?(RPG::Item) && !item.key_item? #or item.is_a?(RPG::Weapon)
when :key_item
item.is_a?(RPG::Item) && item.key_item?
else
false
end
end
#--------------------------------------------------------------------------
# * Definição de itens disponíveis para uso
#--------------------------------------------------------------------------
def usable?(item)
if item.is_a?(RPG::Weapon)
return true
else
return $game_party.usable?(item)
end
return false
end
#--------------------------------------------------------------------------
# * Definição de habilitação do item
# item : item
#--------------------------------------------------------------------------
def enable?(item)
#$game_party.usable?(item)
return true
end
#--------------------------------------------------------------------------
# * Criação da lista de itens
#--------------------------------------------------------------------------
def make_item_list
@data = $game_party.all_items.select {|item| include?(item) }
@data.push(nil) if include?(nil)
end
#--------------------------------------------------------------------------
# * Retorno à seleção anterior
#--------------------------------------------------------------------------
def select_last
select(@data.index($game_party.last_item.object) || 0)
end
#--------------------------------------------------------------------------
# * desenhar o item
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true, width = 80)
return unless item
draw_icon(item.icon_index, x + 10, y + 6, enabled)
change_color(normal_color, enabled)
#~ draw_text(x + 5, y + 50, width, line_height, item.name)
end
#--------------------------------------------------------------------------
# * Desenho de um item
# index : índice do item
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
if item
rect = item_rect(index)
rect.width -= 4
draw_item_name(item, rect.x , rect.y, true)
rect.y -= 20
draw_item_number(rect, item)
end
end
#--------------------------------------------------------------------------
# * Desenho do número de itens possuido
# rect : retângulo
# item : item
#--------------------------------------------------------------------------
def draw_item_number(rect, item)
draw_text(rect, sprintf(" %2d", $game_party.item_number(item)), 2) #unless it has some tag in the notes??
end
#--------------------------------------------------------------------------
# * Atualização da janela de ajuda #<--- Thanks Theo Allen for help editing
#--------------------------------------------------------------------------
def update_help
@help_window.set_item(item)
@help_window.refresh
return unless @iname_window
@iname_window.set_item(item)
@iname_window.refresh
end
#--------------------------------------------------------------------------
# * Update Item Name #OTTO
#--------------------------------------------------------------------------
#~ def update_iname
#~ @iname_window.set_item(item)
#~ @iname_window.refresh
#~ end
#--------------------------------------------------------------------------
# * Renovação
#--------------------------------------------------------------------------
def refresh
make_item_list
create_contents
draw_all_items
update_help
#~ update_iname
end
end
class Comand_itens < Window_Command
#--------------------------------------------------------------------------
# * Inicialização do objeto
#--------------------------------------------------------------------------
def initialize
super(168, 120)
refresh
end
#--------------------------------------------------------------------------
# * Aquisição da largura da janela
#--------------------------------------------------------------------------
def window_width
return 100
end
def window_height
return 76
end
def activeCombine=(active)
@activecombine = active
end
def usename=(name)
@usename = name
end
def activeCombine
return @activecombine
end
def usename
return @usename
end
def important=(value)
@important = value
end
def important
return @important
end
def isuse=(value)
@isuse = value
end
def isuse
return @isuse
end
#--------------------------------------------------------------------------
# * Criação da lista de comandos
#--------------------------------------------------------------------------
def make_command_list
add_command(usename, :usar, isuse)
add_command(RE_MENU::Combine, :combine, activeCombine)
#~ add_command(RE_MENU::Discard, :discart, important)
end
end
class Scene_Menu < Scene_MenuBase
#--------------------------------------------------------------------------
# * Inicialização do processo
#--------------------------------------------------------------------------
def start
super
create_Help_window
create_command_window
create_item_window
create_Iname_window
create_status_window
create_command_itens
create_Equip_window
create_Image_Background
@iscombine = false
@actor = $game_party.members[0]
end
#--------------------------------------------------------------------------
# * Criação da janela de comando
#--------------------------------------------------------------------------
def create_command_window
@command_window = MenuCommand.new
@command_window.set_handler(:item, method(:command_item))
@command_window.set_handler(:key_item, method(:command_item))
@command_window.set_handler(:game_end, method(:command_game_end))
@command_window.set_handler(:cancel, method(:return_scene))
end
#--------------------------------------------------------------------------
# * Criação da janela de itens
#--------------------------------------------------------------------------
def create_item_window
wy = @command_window.y + @command_window.height + 100
wh = Graphics.height - wy
@item_window = Window_ItemList.new(344, wy, 200, wh)
@item_window.help_window = @help_window
@item_window.set_handler(:ok, method(:on_item_ok))
@item_window.set_handler(:cancel, method(:on_item_cancel))
@command_window.item_window = @item_window
@command_window.item_window = @item_window
end
#--------------------------------------------------------------------------
# * Criação da janela de comando dos intems
#--------------------------------------------------------------------------
def create_command_itens
@command_item = Comand_itens.new
@command_item.set_handler(:usar, method(:use_item))
@command_item.set_handler(:combine, method(:combine_item))
@command_item.set_handler(:discart, method(:discart_item))
@command_item.set_handler(:cancel, method(:return_itens))
@command_item.visible = false
@command_item.active = false
end
#--------------------------------------------------------------------------
# * Criação das janelas #Position for Status and Equip #OTTO
#--------------------------------------------------------------------------
def create_status_window
@Status_window = Window_Base.new(475,120,165,84)
@Status_window.contents.clear
#@Status_window.draw_actor_face(@actor, 1, 10)
@Status_window.change_color(@Status_window.normal_color)
@Status_window.draw_text(1, -10 , 120, 48, @actor.name)
@Status_window.draw_actor_hp(@actor, 0, 40, 120)
end
def create_Help_window
@help_window = Window_Help.new() #RE_Window_Help.new()
end
def create_Iname_window #OTTO
@ihelp_window = RE_Window_Iname.new()
@item_window.iname_window = @ihelp_window
end
def create_Equip_window
@Equip_window = Window_Base.new(475,183,165,48)
@Equip_window.contents.clear
if @actor.equips[0] != nil
@Equip_window.draw_icon(@actor.equips[0].icon_index, 36, 0, true)
@Equip_window.draw_text(0, -12 , 120, 48, RE_MENU::Equip)
#INSERT CURRENT / REMAINING AMMO HERE # OTTO
#@Equip_window.draw_text(10, 40 , 150, 50, @actor.equips[0].name)
else
@Equip_window.draw_text(0, -12 , 120, 48, RE_MENU::Equip)
end
end
def use_item
if @item.is_a?(RPG::Weapon)
@actor.change_equip(0,@item)
Sound.play_equip
else
Sound.play_use_item
@actor.use_item(@item)
use_item_to_actors
end
return_itens
refresh
check_common_event
end
def use_item_to_actors
$game_party.members.each do |target|
@item.repeats.times { target.item_apply(@actor, @item) }
end
end
def check_common_event
if $game_temp.common_event_reserved?
SceneManager.goto(Scene_Map)
@iscombine = false
end
end
def combine_item
if @iscombine == false
@iscombine = true
@combineitem = @item
else
recipe = RE_MENU::Recipe
if @combineitem.id == @item.template_id
if $game_party.item_number(@item) <= 1
@combineitem = nil
end
end
if @combineitem != nil
for x in 1..recipe.size
recipe1 = recipe[x]
if recipe1[0] == @combineitem.template_id and recipe1[1] == @item.template_id
@iscombine = false
combineitens(x)
break
elsif recipe1[1] == @combineitem.template_id and recipe1[0] == @item.template_id
@iscombine = false
combineitens(x)
break
end
end
end
if @iscombine == true
Sound.play_buzzer
@iscombine = false
end
end
refresh
return_itens
end
def combineitens(x)
RE_MENU::playcombine
$game_party.gain_item(@item, -1, true)
$game_party.gain_item(@combineitem, -1, true)
for y in 0..$data_items.size
novoitem = $data_items[y] if y == RE_MENU::Recipe[x][2]
end
$game_party.gain_item(novoitem, 1)
end
def discart_item
$game_party.gain_item(@item, -1, true)
return_itens
end
def return_itens
@command_item.visible = false
@command_item.active = false
@item_window.active = true
@item_window.refresh
end
#--------------------------------------------------------------------------
# * Item [Confirmação] #thanks to A-Moonless-Night
#--------------------------------------------------------------------------
#THIS BYPASSES THE SECOND USE/COMBINE WINDOW AND JUMPS DIRECTLY TO RECIPE CHECK
def on_item_ok
@item = @item_window.item
if @item != nil
if @iscombine && @item.is_a?(RPG::Item) && !@item.key_item?
combine_item
else
if @item.is_a?(RPG::Weapon)
@command_item.activeCombine = false
@command_item.usename = RE_MENU::Equip
else
@command_item.activeCombine = true
@command_item.usename = RE_MENU::Use
end
if @item.is_a?(RPG::Item) and @item.key_item?
@command_item.important = false
else
@command_item.important = true
end
if @item_window.usable?(@item)
@command_item.isuse = true
else
@command_item.isuse = false
end
@command_item.refresh
@command_item.visible = true
@command_item.active = true
end
else
Sound.play_buzzer
@item_window.active = true
end
@help_window.set_item(@item)
end
#~ def on_item_ok
#~ @item = @item_window.item
#~ if @item != nil
#~ if @item.is_a?(RPG::Weapon)
#~ @command_item.activeCombine = false
#~ @command_item.usename = RE_MENU::Equip
#~ else
#~ @command_item.activeCombine = true
#~ @command_item.usename = RE_MENU::Use
#~ end
#~ if @item.is_a?(RPG::Item) and @item.key_item?
#~ @command_item.important = false
#~ else
#~ @command_item.important = true
#~ end
#~ if @item_window.usable?(@item)
#~ @command_item.isuse = true
#~ else
#~ @command_item.isuse = false
#~ end
#~
#~ @command_item.refresh
#~ @command_item.visible = true
#~ @command_item.active = true
#~ else
#~ Sound.play_buzzer
#~ @item_window.active = true
#~ end
#~ @help_window.set_item(@item)
#~ end
#--------------------------------------------------------------------------
# * Item [Cancelamento]
#--------------------------------------------------------------------------
def on_item_cancel
@item_window.unselect
@command_window.activate
@iscombine = false
end
#--------------------------------------------------------------------------
# * Comando [Item]
#--------------------------------------------------------------------------
def command_item
@command_window.item_window = @item_window
@item_window.activate
@item_window.select_last
end
#--------------------------------------------------------------------------
# Trying to add a Maps command #OTTO
#--------------------------------------------------------------------------
def command_maps
SceneManager.call(Scene_Maps)
end
#--------------------------------------------------------------------------
# * Comando [Fim do Jogo]
#--------------------------------------------------------------------------
def command_game_end
SceneManager.call(Scene_End)
end
#--------------------------------------------------------------------------
# * Comandos individuais [Cancelamento]
#--------------------------------------------------------------------------
def on_personal_cancel
@status_window.unselect
@command_window.activate
end
def refresh
@actor = $game_party.members[0]
@item_window.refresh
@Equip_window.contents.clear
if @actor.equips[0] != nil
@Equip_window.draw_icon(@actor.equips[0].icon_index, 36, 0, true)
@Equip_window.draw_text(0, -12 , 120, 48, RE_MENU::Equip)
#~ @Equip_window.draw_text(10, 40 , 150, 50, @actor.equips[0].name)
else
@Equip_window.draw_text(0, -12 , 120, 48, RE_MENU::Equip)
end
@Status_window.contents.clear
#~ @Status_window.draw_actor_face(@actor, 1, 10)
@Status_window.change_color(@Status_window.normal_color)
@Status_window.draw_text(1, -10 , 120, 48, @actor.name)
@Status_window.draw_actor_hp(@actor, 0, 40, 120)
end
end