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

Opção de Ajuda no Menu V2.0

Iniciado por LoboShow, 23/01/2013 às 17:20

Opção de Ajuda no Menu V2.0

Compativel com: RMVX
Compatibilidade: ?
Facilidade de uso: ?
Lag gerado: ?

[box class=titlebg]
Condições de Uso
[/box]
Dê os devidos créditos.

[box class=titlebg]
Para que serve o script
[/box]
Adiciona uma opção no menu com o nome Ajuda, e poderá encontrar opções do jogo/dicas...
Funções:
*Bem editável
*Informações
*Bestiário
*Créditos do jogo.
Dicas:
*Você pode criar vários sistemas com esse script, apenas editando as partes fáceis, então, estude-o
*Na aba de informações, você pode botar algumas dicas para o game...

[box class=titlebg]
Imagens
[/box]

[box class=titlebg]
Script
[/box]
#==============================================================================
# Menu de Ajuda feito por Shepher
#------------------------------------------------------------------------------
# Classe de operações na tela do menu.
# Criado por Shepher
# Agradecimentos :
# Angel Ivy: Me ajudou na edição do script e também... O quê? '-'
# Opa E também ajudou, em muitos bugs =D
# Dark Chocobo: De onde tirei o script de Anotações.
################################################################################


#==============================================================================
#                                  Instruções :
# Para alterar o nome que aparecerá no menu basta ir na
# linha 24, e alterar o "Ajuda"
# Para alterar o nome que aparecerá no menu
# Basta ir na linha 40 e trocar o "Shepher" pelo que quiser
# Caso queira trocar o que há nas janelas ( as mensagens )
# Basta ir na linha 208 á 240 e trocar o que há dentro das aspas ("")
# Outras configurações na linha 26 até 43
#==============================================================================

module Shepher
# Mude aqui para o nome que quer que apareça no menu
Ajuda = "Ajuda"
# Mude a opacidade das janelas
Opacidade = 200
# Mude aqui o tamanho da letra , onde aparecerá seu nome
Letra = 35
# Nome da Fonte =D
Fonte = "Arial Black"
# Mude aqui o tamanho da fonte que aparecerá nos textos normais
Letra2 = 12
# Se você quer que apareça a aba informações no menu true/false
Informações = true
# Bote aqui o nome que quer apareça, seu nome, ou outra coisa
$MeuNome = "Shepher"
# Opacidade da janela com seu nome
Opacidade_Janelinha = 200
end

module Shepher2
# Nomes das janelas
Ajuda = "Ajuda"
Creditos = "Créditos"
Bestiario = "Bestiario"
Informações = "Informações"
end

class Scene_Menu < Scene_Base
#--------------------------------------------------------------------------
# Inicialização do objeto
#     menu_index : posição inicial do cursor
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
  @menu_index = menu_index
end
#--------------------------------------------------------------------------
# Inicialização do processo
#--------------------------------------------------------------------------
def start
  super
  create_menu_background # Cria o menu
  create_command_window # Cria o menu
  @gold_window = Window_Gold.new(0, 360) # Cria a janela de gold
  @status_window = Window_MenuStatus.new(160, 0) # Cria a janela de Status
  @gold_window.opacity = (Shepher::Opacidade)
  @status_window.opacity = (Shepher::Opacidade)
  @command_window.opacity = (Shepher::Opacidade)
  end
#--------------------------------------------------------------------------
# Fim do processo
#--------------------------------------------------------------------------
def terminate
  super
  dispose_menu_background
  @command_window.dispose
  @gold_window.dispose
  @status_window.dispose
#   @playtime_window.dispose
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
  super
  update_menu_background
  @command_window.update
  @gold_window.update
  @status_window.update
  if @command_window.active
    update_command_selection
  elsif @status_window.active
    update_actor_selection
  end
end
#--------------------------------------------------------------------------
# Criação da janela de comandos
#--------------------------------------------------------------------------
def create_command_window
  s1 = Vocab::item
  s2 = Vocab::skill
  s3 = Vocab::equip
  s4 = Vocab::status
  s5 = Vocab::save
  s6 = Shepher::Ajuda
  s7 = Vocab::game_end
  @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6,s7])
  @command_window.index = @menu_index
  if $game_party.members.size == 0          # Se não houver membros na equipe
    @command_window.draw_item(0, false)     # Desabilita "Items"
    @command_window.draw_item(1, false)     # Desabilita "Habilidades"
    @command_window.draw_item(2, false)     # Desabilita "Equipamentos"
    @command_window.draw_item(3, false)     # Desabilita "Status"
  end
  if $game_system.save_disabled             # Se salvar for proibido
    @command_window.draw_item(4, false)     # Desabilita "Salvar"
  end
end
#--------------------------------------------------------------------------
# Atualização da escolha de comando
#--------------------------------------------------------------------------
def update_command_selection
  if Input.trigger?(Input::B)
    Sound.play_cancel
    $scene = Scene_Map.new
  elsif Input.trigger?(Input::C)
    if $game_party.members.size == 0 and @command_window.index < 4
      Sound.play_buzzer
      return
    elsif $game_system.save_disabled and @command_window.index == 4
      Sound.play_buzzer
      return
    end
    Sound.play_decision
    case @command_window.index
    when 0      # Item
      $scene = Scene_Item.new
    when 1,2,3  # Habilidades, equipamento, status
      start_actor_selection
    when 4      # Salvar
      $scene = Scene_File.new(true, false, false)
    when 5      # Ajuda
      $scene = Scene_Ajuda.new
    when 6      # Fim de jogo
      $scene = Scene_End.new
    end
  end
end
#--------------------------------------------------------------------------
# Início da seleção de herói
#--------------------------------------------------------------------------
def start_actor_selection
  @command_window.active = false
  @status_window.active = true
  if $game_party.last_actor_index < @status_window.item_max
    @status_window.index = $game_party.last_actor_index
  else
    @status_window.index = 0
  end
end
#--------------------------------------------------------------------------
# Fim da seleção de herói
#--------------------------------------------------------------------------
def end_actor_selection
  @command_window.active = true
  @status_window.active = false
  @status_window.index = -1
end
#--------------------------------------------------------------------------
# Atualização da seleção de herói
#--------------------------------------------------------------------------
def update_actor_selection
  if Input.trigger?(Input::B)
    Sound.play_cancel
    end_actor_selection
  elsif Input.trigger?(Input::C)
    $game_party.last_actor_index = @status_window.index
    Sound.play_decision
    case @command_window.index
    when 1  # Habilidades
      $scene = Scene_Skill.new(@status_window.index)
    when 2  # Equipamento
      $scene = Scene_Equip.new(@status_window.index)
    when 3  # Status
      $scene = Scene_Status.new(@status_window.index)
    end
  end
end
end

#===============================================================================
# Configurações do Menu de ajuda
#-------------------------------------------------------------------------------
# Criado por: Shepher
#===============================================================================

$linhah1 = "Texto da Linha 1 de Ajuda"
$linhah2 = "Texto da Linha 2 de Ajuda"
$linhah3 = "Texto da Linha 3 de Ajuda"
$linhah4 = "Texto da Linha 4 de Ajuda"
$linhah5 = "Texto da Linha 5 de Ajuda"
$linhah6 = "Texto da Linha 6 de Ajuda"
$linhah7 = "Texto da Linha 7 de Ajuda"
$linhah8 = "Texto da Linha 8 de Ajuda"
$linhah9 = "Texto da Linha 9 de Ajuda"

# Da janela de Créditos:

$linhac1 = "Shepher Criador do SCRIPT"
$linhac2 = "Angel Ivy Por Ajudar =D"
$linhac3 = "Meu jogo ? Que manero =D"
$linhac4 = "Texto da Linha 4 de Créditos"
$linhac5 = "Texto da Linha 5 de Créditos"
$linhac6 = "Texto da Linha 6 de Créditos"
$linhac7 = "Texto da Linha 7 de Créditos"
$linhac8 = "Texto da Linha 8 de Créditos"
$linhac9 = "Texto da Linha 9 de Créditos"



#===============================================================================
# Janela de Ajuda
#-------------------------------------------------------------------------------
# Criado por: Shepher
#===============================================================================

class Window_Ajudinha < Window_Base
def initialize
super (0,0,544,416)
self.opacity = (Shepher::Opacidade)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.draw_text(4, 32, self.width, 32, "         Ajuda", 0)
self.contents.draw_text(4, 64, self.width, 32, $linhah1, 0)
self.contents.draw_text(4, 96, self.width, 32, $linhah2, 0)
self.contents.draw_text(4, 128, self.width, 32, $linhah3, 0)
self.contents.draw_text(4, 160, self.width, 32, $linhah4, 0)
self.contents.draw_text(4, 192, self.width, 32, $linhah5, 0)
self.contents.draw_text(4, 224, self.width, 32, $linhah6 , 0)
self.contents.draw_text(4, 256, self.width, 32, $linhah7, 0)
self.contents.draw_text(4, 288, self.width, 32, $linhah8, 0)
self.contents.draw_text(4, 320, self.width, 32, $linhah9, 0)
end
end


#===============================================================================
# Janela de Créditos
#-------------------------------------------------------------------------------
# Criado por: Shepher
#===============================================================================

class Window_Creditos < Window_Base
def initialize
  super (0,0,544,416)
  self.opacity = 255
  self.contents.font.name = (Shepher::Fonte)
  self.contents.font.size = (Shepher::Letra2)
  self.contents = Bitmap.new(width - 32, height - 32)
self.contents.draw_text(4, 32, self.width, 32, "         Créditos", 0)
self.contents.draw_text(4, 64, self.width, 32, $linhac1, 0)
self.contents.draw_text(4, 96, self.width, 32, $linhac2, 0)
self.contents.draw_text(4, 128, self.width, 32, $linhac3, 0)
self.contents.draw_text(4, 160, self.width, 32, $linhac4, 0)
self.contents.draw_text(4, 192, self.width, 32, $linhac5, 0)
self.contents.draw_text(4, 224, self.width, 32, $linhac6 , 0)
self.contents.draw_text(4, 256, self.width, 32, $linhac7, 0)
self.contents.draw_text(4, 288, self.width, 32, $linhac8, 0)
self.contents.draw_text(4, 320, self.width, 32, $linhac9, 0)
end
end
#===============================================================================
# Pequena janela com seu nome
#-------------------------------------------------------------------------------
# Criado por: Shepher
#===============================================================================


class Window_minha < Window_Base
def initialize
super(0,210, 160, 96)
  self.opacity = (Shepher::Opacidade_Janelinha)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.contents.font.name = (Shepher::Fonte)
  self.contents.font.size = (Shepher::Letra)
end
def update
  super
refresh
end
def refresh
self.contents.clear
self.contents.font.color = Color.new(119,51,14,150)
self.contents.draw_text(0, 0, 120, self.height - 32, $MeuNome, 0) # ponha o seu nome
end                                                             # Ou qualquer outra coisa
end

class Scene_Ajuda < Scene_Base
#--------------------------------------------------------------------------
# Inicialização do objeto
#     menu_index : posição inicial do cursor
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
  @menu_index = menu_index
end
#--------------------------------------------------------------------------
# Inicialização do processo
#--------------------------------------------------------------------------
def start
  super
  create_menu_background
  create_command_window
  @seu_nome = Window_minha.new
  @status = Window_MenuStatus.new(160, 0)
  @note_window = DC_Window_Anotações.new
  @ajuda_window = Window_Ajudinha.new
  @creditos_window = Window_Creditos.new
  @ajuda_window.visible = false
  @creditos_window.visible = false
  @note_window.visible = false
end
#--------------------------------------------------------------------------
# Fim do processo
#--------------------------------------------------------------------------
def terminate
  super
  dispose_menu_background
  @note_window.dispose
  @ajuda_window.dispose
  @creditos_window.dispose
  @command_window.dispose
  @seu_nome.dispose
  @status.dispose
end
#--------------------------------------------------------------------------
# Atualização da tela
#--------------------------------------------------------------------------
def update
  super
  update_menu_background
  @note_window.update
  @ajuda_window.update
  @creditos_window.update
  @command_window.update
  @seu_nome.update
  @status.update
  if @command_window.active
    update_command_selection
  else
    update_actor_selection
  end
end
#--------------------------------------------------------------------------
# Criação da janela de comandos
#--------------------------------------------------------------------------
def create_command_window
  s1 = Shepher2::Ajuda
  s2 = Shepher2::Creditos
  s3 = Shepher2::Bestiario
  s4 = Shepher2::Informações
  s5 = "Cancelar"
  if Shepher::Informações == true
  @command_window = Window_Command.new(160, [s1, s2, s3, s4 , s5])
  @command_window.index = @menu_index
else
  @command_window = Window_Command.new(160, [s1, s2, s3, s5])
  @command_window.index = @menu_index
  end
end
#--------------------------------------------------------------------------
# Atualização da escolha de comando
#--------------------------------------------------------------------------
def update_command_selection
  if Input.trigger?(Input::B)
    if @ajuda_window.visible or @creditos_window.visible
      @ajuda_window.visible = false
      @creditos_window.visible = false
      end
    Sound.play_cancel
    $scene = Scene_Menu.new
  elsif Input.trigger?(Input::C)
    if $game_party.members.size == 0 and @command_window.index < 4
      Sound.play_buzzer
      return
    elsif $game_system.save_disabled and @command_window.index == 4
      Sound.play_buzzer
      return
    end
    Sound.play_decision
    case @command_window.index
    when 0      # Help
      @ajuda_window.visible = true
      @creditos_window.visible = false
      @note_window.visible = false
    when 1      # Creditos
      @ajuda_window.visible = false
      @creditos_window.visible = true
      @note_window.visible = false
    when 2      # Bestiario
      $scene = Scene_Bestiary.new
    when 3      # Informações
     if Shepher::Informações == true
      @ajuda_window.visible = false
      @creditos_window.visible = false
      @note_window.visible = true
    else
       $scene = Scene_Menu.new
       end
    when 4       # Cancelar
      $scene = Scene_Menu.new
    end
       @command_window.active = false
  end
end
def update_actor_selection
  if Input.trigger?(Input::B)
    if @ajuda_window.visible or @creditos_window.visible or @note_window.visible
      @note_window.visible = false
      @ajuda_window.visible = false
      @creditos_window.visible = false
    end
    Sound.play_cancel
    @command_window.active = true
  end
  end

end

#===============================================================================
# Janela de informações leia as instruções de uso
#-------------------------------------------------------------------------------
# Criado por: Shepher
#===============================================================================

=begin    > Exibir Variável:
      \\v[ID]
  > Exibir sim/não se uma switch estiver ativada ou não:
      \\s[ID]
  > Exibir o nome de um herói:
      \\h[ID]
  > Exibir o nome da arma utilizada pelo herói:
      \\w[ID]
  > Exibir o nome da classe do herói:
      \\c[ID]
  > Exibir o dinheiro do grupo:
      \\g[ID]
  > Exibir o nome da música configurada para o mapa atual:
      \\b
  > Exibir o número de membros no grupo:
      \\p

      Apartir da linha 432 , você edita seu texto =D
=end

# Cria as configurações iniciais do script.
$DarkChocoboScripts = {} if $DarkChocoboScripts.nil?
$DarkChocoboScripts["Anotações"] = {}
$DarkChocoboScripts["Anotações"]["Título"] = "Informações"
$DarkChocoboScripts["Anotações"]["Tamanho da Fonte"] = 32
$DarkChocoboScripts["Anotações"]["Windowskin da Janela"] = "" # O Arquivo deve estar na pasta System
$DarkChocoboScripts["Anotações"]["Imagem de Fundo"] = "" # O arquivo deve estar na pasta Pictures
$DarkChocoboScripts["Anotações"]["Distância do Topo"] = 32
$DarkChocoboScripts["Anotações"]["Distância Entre os Textos"] = 4
$DarkChocoboScripts["Anotações"]["Transparência da Janela"] = 200 # 0~255

# Não altere o valor abaixo:
$DarkChocoboScripts["Anotações"]["Textos"] = [

 ["Seu nome é \\h[1]"   , [ 0     , 0      ,  255   ], 0    , 0     , [ 0    , 0      ]],
 ["Você está usando a arma \\w[1]"   , [ 0     , 0      ,  255   ], 0    , 0     , [ 0    , 0      ]],
 ["Sua classe é \\c[1]"   , [ 0     , 0      ,  255   ], 0    , 0     , [ 0    , 0      ]],
 ["Você tem \\g de gold"   , [ 0     , 0      ,  255   ], 0    , 0     , [ 0    , 0      ]],
 ["Seu grupo tem \\p membros"   , [ 0     , 0      ,  255   ], 0    , 0     , [ 0    , 0      ]]
 ] # Observação importante: 'O último texto não deve apresentar uma vírgula no final.'

class Game_Party < Game_Unit
def actors
  return @actors
end
end
class DC_Window_Anotações < Window_Base
def initialize
  super(0,0,544,416)
  windowskin_name = $DarkChocoboScripts["Anotações"]["Windowskin da Janela"] == "" ? "Window" : $DarkChocoboScripts["Anotações"]["Windowskin da Janela"]
  self.windowskin = Cache.system(windowskin_name)
  if $DarkChocoboScripts["Anotações"]["Imagem de Fundo"] != ""
    self.contents.dispose
    self.contents = Bitmap.new(Cache.picture($DarkChocoboScripts["Anotações"]["Imagem de Fundo"]))
  end
  refresh
end
def refresh
  backup = self.contents.font.size
  self.contents.font.size = $DarkChocoboScripts["Anotações"]["Tamanho da Fonte"] == 0 ? backup : $DarkChocoboScripts["Anotações"]["Tamanho da Fonte"]
  self.contents.font.color = system_color
  self.contents.draw_text(4, $DarkChocoboScripts["Anotações"]["Distância do Topo"],
  self.contents.width, $DarkChocoboScripts["Anotações"]["Tamanho da Fonte"], $DarkChocoboScripts["Anotações"]["Título"], 1)
  self.contents.font.color = normal_color
  self.contents.font.size = backup
  y = WLH + $DarkChocoboScripts["Anotações"]["Distância do Topo"] + $DarkChocoboScripts["Anotações"]["Tamanho da Fonte"]
  for i in 0 ... $DarkChocoboScripts["Anotações"]["Textos"].size
    y += WLH + $DarkChocoboScripts["Anotações"]["Distância Entre os Textos"]
    show = false
    if set_switch(i) and set_var(i) then show = true end
    unless show
      y -= WLH + $DarkChocoboScripts["Anotações"]["Distância Entre os Textos"]
      next
    end
    set_color(i)
    set_icon(i, y)
    text = $DarkChocoboScripts["Anotações"]["Textos"][i][0]
    text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
    text.gsub!(/\\S\[([0-9]+)\]/i) { $game_switches[$1.to_i] == true ? "Sim" : "Não" }
    text.gsub!(/\\H\[([0-9]+)\]/i) { $1.to_i != 0 ? $game_actors[$1.to_i].name : $game_actors[$game_party.actors[0]].name }
    text.gsub!(/\\W\[([0-9]+)\]/i) { $1.to_i != 0 ? $game_actors[$1.to_i].weapons[0].name : $game_actors[$game_party.actors[0]].weapons[0].name }
    text.gsub!(/\\C\[([0-9]+)\]/i) { $1.to_i != 0 ? $data_classes[$game_actors[$1.to_i].class_id].name : $data_classes[$game_actors[$game_party.actors[0]].class_id].name }
    text.gsub!(/\\G/i) { $game_party.gold }
    text.gsub!(/\\B/i) { load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id)).bgm.name }
    text.gsub!(/\\P/i) { $game_party.actors.size }
 
    self.contents.draw_text(32, y, self.contents.width, WLH, text)
  end
end
def set_color(i)
  self.contents.font.color = text_color($DarkChocoboScripts["Anotações"]["Textos"][i][2])
end
def set_icon(i, pos_y)
  x = $DarkChocoboScripts["Anotações"]["Textos"][i][1][0]
  y = $DarkChocoboScripts["Anotações"]["Textos"][i][1][1]
  o = $DarkChocoboScripts["Anotações"]["Textos"][i][1][2]
  bitmap = Cache.system("IconSet")
  rect = Rect.new(x*24, y*24, 24, 24)
  self.contents.blt(4, pos_y, bitmap, rect, o)
end
def set_switch(i)
  return true if $DarkChocoboScripts["Anotações"]["Textos"][i][3] == 0
  return $game_switches[$DarkChocoboScripts["Anotações"]["Textos"][i][3]]
end
def set_var(i)
  return true if $DarkChocoboScripts["Anotações"]["Textos"][i][4][0] == 0
  return $game_variables[$DarkChocoboScripts["Anotações"]["Textos"][i][4][0]] >= $DarkChocoboScripts["Anotações"]["Textos"][i][4][1]
end
end
class DC_Anotações < Scene_Base
def start
  @note = DC_Window_Anotações.new
  @note.opacity = $DarkChocoboScripts["Anotações"]["Transparência da Janela"]
  create_menu_background if $DarkChocoboScripts["Anotações"]["Transparência da Janela"] != 255
end
def update
  update_menu_background if $DarkChocoboScripts["Anotações"]["Transparência da Janela"] != 255
  @note.update
  if Input.trigger?(Input::B) then Sound.play_cancel
    $scene = Scene_Map.new # Edite esta linha
  end
end
def terminate
  @note.dispose
  dispose_menu_background if $DarkChocoboScripts["Anotações"]["Transparência da Janela"] != 255
end
end

#==============================================================================
# Bestiário
#------------------------------------------------------------------------------
# Criado por Dargor em 04/06/2008
# Versão 1.4
#
# Modificação por Angel Ivy-chan
#
#------------------------------------------------------------------------------
# :: Histórico
#   - 1.0 (21/05/08) Lançamento inicial
#   - 1.1 (21/05/08) Alguns bugs corrigidos
#   - 1.2 (24/05/08) Bug do bestiário sendo apagado corrigido
#   - 1.3 (01/06/08) Alterações na visibilidade da janela
#   - 1.4 (04/06/08) Bug da largura do cursor corrigido
#   - 1.5 (23/06/08) Adição de cores para todos os elementos (Por Angel Ivy-chan)
#==============================================================================
# :: Como utilizar
#
# Crie um evento e coloque um comando de evento Chamar Script. Logo, insira
# este código na janela do Chamar Script:
#
# $scene = Scene_Bestiary.new
#
#==============================================================================

#==============================================================================
# Configuração do script
#==============================================================================

module Bestiary
# Array de inimigos que não devem aparecer no bestiário [1,2,3,etc]
Excluded_Enemies = [31]

# Elementos exibidos no bestiário
Elements = [9,10,11,12,13,14,15,16]

# Índice dos ícones de elementos
Element_Icons = { 9  => 104,
                 10 => 105,
                 11 => 106,
                 12 => 107,
                 13 => 108,
                 14 => 109,
                 15 => 110,
                 16 => 111,
               }
             
# Tocar uma música de fundo no bestiário?
Play_BGM = true

# Lista de músicas, baseada na ID do inimigo
BGM = { 19 => 'Battle7',
       20 => 'Battle7',
       21 => 'Battle7',
       22 => 'Battle7',
       23 => 'Battle7',
       24 => 'Battle7',
       25 => 'Battle8',
       26 => 'Battle8',
       27 => 'Battle8',
       28 => 'Battle8',
       29 => 'Battle8',
       30 => 'Battle9'
     }
   
# Música padrão
BGM.default = 'Battle1'

end

# Vocabulário
Vocab::Hit = 'Taxa de acerto'
Vocab::Eva = 'Evasão'
Vocab::Exp = 'EXP'
Vocab::UnknownEnemy = '?'
Vocab::UnknownDrop  = '?'

#==============================================================================
# Game_System
#------------------------------------------------------------------------------
# Esta classe controla os dados em torno do sistema de jogo. Ela controla os
# veículos, músicas, etc. Pode ser acessada utilizando $game_system.
#==============================================================================

class Game_System
attr_accessor :new_enemy
attr_accessor :enemy_encountered
attr_accessor :enemy_defeated
attr_accessor :enemy_drops
alias dargor_vx_bestiary_system_initialize initialize

def initialize
 @new_enemy = []
 @enemy_encountered = []
 @enemy_defeated = []
 @enemy_drops = []
 for i in 1...$data_enemies.size
   @new_enemy[i] = true
   @enemy_encountered[i] = 0
   @enemy_defeated[i] = 0
   @enemy_drops[i] = [false, false]
 end
 dargor_vx_bestiary_system_initialize
end
end

#==============================================================================
# Game_Troop
#------------------------------------------------------------------------------
# Esta classe controla os inimigos, os dados da batalha e seus eventos.
# Pode ser acessada utilizando $game_troop.
#==============================================================================

class Game_Troop < Game_Unit
alias dargor_vx_bestiary_troop_setup setup
alias dargor_vx_bestiary_troop_make_drop_items make_drop_items

def setup(troop_id)
 dargor_vx_bestiary_troop_setup(troop_id)
 for member in troop.members
   next if $data_enemies[member.enemy_id] == nil
   enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
   $game_system.enemy_encountered[member.enemy_id] += 1
 end
end

def make_drop_items
 drop_items = []
 for enemy in dead_members
   for di in [enemy.drop_item1, enemy.drop_item2]
     next if di.kind == 0
     next if rand(di.denominator) != 0
     index = [enemy.drop_item1, enemy.drop_item2].index(di)
     $game_system.enemy_drops[enemy.enemy_id][index] = true
     if di.kind == 1
       drop_items.push($data_items[di.item_id])
     elsif di.kind == 2
       drop_items.push($data_weapons[di.weapon_id])
     elsif di.kind == 3
       drop_items.push($data_armors[di.armor_id])
     end
   end
 end
 return drop_items
end
end

#==============================================================================
# Game_Enemy
#------------------------------------------------------------------------------
# Classe é responsável pelas informações inimigos durante a batalha.
# Esta classe é utilizada pela classe Game_Troop ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
alias dargor_vx_bestiary_enemy_perform_collapse perform_collapse

def perform_collapse
 dargor_vx_bestiary_enemy_perform_collapse
 if $game_temp.in_battle and dead?
   $game_system.enemy_defeated[@enemy_id] += 1
 end
end
end

#==============================================================================
# Window_Base
#------------------------------------------------------------------------------
# Esta é a classe superior à todas as classes de janelas do jogo.
#==============================================================================

class Window_Base < Window
def hp_color(actor)
 return normal_color if actor.is_a?(RPG::Enemy)
 return knockout_color if actor.hp == 0
 return crisis_color if actor.hp < actor.maxhp / 4
 return normal_color
end

def draw_enemy_maxhp(enemy, x, y, width = 120)
 draw_enemy_hp_gauge(enemy, x, y, width)
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 30, WLH, Vocab::hp)
 self.contents.font.color = hp_color(enemy)
 last_font_size = self.contents.font.size
 xr = x + width
 self.contents.font.color = normal_color
 self.contents.draw_text(xr - 80, y, 80, WLH, enemy.maxhp, 2)
end

def draw_enemy_hp_gauge(enemy, x, y, width = 120)
 gw = width
 gc1 = hp_gauge_color1
 gc2 = hp_gauge_color2
 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
 self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end


def draw_enemy_maxmp(enemy, x, y, width = 120)
 draw_enemy_mp_gauge(enemy, x, y, width)
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 30, WLH, Vocab::mp)
 self.contents.font.color = hp_color(enemy)
 last_font_size = self.contents.font.size
 xr = x + width
 self.contents.font.color = normal_color
 self.contents.draw_text(xr - 80, y, 80, WLH, enemy.maxmp, 2)
end

def draw_enemy_mp_gauge(enemy, x, y, width = 120)
 gw = width
 gc1 = mp_gauge_color1
 gc2 = mp_gauge_color2
 self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
 self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end

def draw_enemy_parameter(enemy, x, y, type)
 case type
 when 0
   parameter_name = Vocab::atk
   parameter_value = enemy.atk
 when 1
   parameter_name = Vocab::def
   parameter_value = enemy.def
 when 2
   parameter_name = Vocab::spi
   parameter_value = enemy.spi
 when 3
   parameter_name = Vocab::agi
   parameter_value = enemy.agi
 when 4
   parameter_name = Vocab::Hit
   parameter_value = enemy.hit
 when 5
   parameter_name = Vocab::Eva
   parameter_value = enemy.eva
 when 6
   parameter_name = Vocab::Exp
   parameter_value = enemy.exp
 when 7
   parameter_name = Vocab::gold
   parameter_value = enemy.gold
 end
 self.contents.font.color = system_color
 self.contents.draw_text(x, y, 120, WLH, parameter_name)
 self.contents.font.color = normal_color
 parameter_value = "#{parameter_value}%" if [4,5].include?(type)
 self.contents.draw_text(x + 100, y, 56, WLH, parameter_value, 2)
end

def draw_enemy_drop(enemy,x,y)
 self.contents.font.color = system_color
 self.contents.draw_text(x,y,220,WLH,'Itens Deixados')
 drops = []
 drops_index = []
 drops << enemy.drop_item1 unless enemy.drop_item1.kind == 0
 drops << enemy.drop_item2 unless enemy.drop_item2.kind == 0
 drops_index << 0 unless enemy.drop_item1.kind == 0
 drops_index << 1 unless enemy.drop_item2.kind == 0
 for i in 0...drops.size
   drop = drops[i]
   index = drops_index[i]
   case drop.kind
   when 1
     item = $data_items[drop.item_id]
   when 2
     item = $data_weapons[drop.weapon_id]
   when 3
     item = $data_armors[drop.armor_id]
   end
   if $game_system.enemy_drops[enemy.id][index]
     draw_item_name(item,x,y + (i+1) * WLH)
     probability = 100 / drop.denominator
     self.contents.draw_text(x,y + (i+1) * WLH,220,WLH, "#{probability}%",2)
   else
     self.contents.font.color = normal_color
     self.contents.draw_text(x+26,y + (i+1) * WLH,220,WLH,Vocab::UnknownDrop)
   end
 end
end

def draw_enemy_encountered(enemy,x,y)
 self.contents.font.color = system_color
 self.contents.draw_text(x,y,120,WLH,'Encontrados')
 times = $game_system.enemy_encountered[enemy.id]
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 120,y,36,WLH,times,2)
end

def draw_enemy_defeated(enemy,x,y)
 self.contents.font.color = system_color
 self.contents.draw_text(x,y,120,WLH,'Derrotados')
 times = $game_system.enemy_defeated[enemy.id]
 self.contents.font.color = normal_color
 self.contents.draw_text(x + 120,y,36,WLH,times,2)
end

def draw_enemy_weakness(enemy,x,y)
 enemy = Game_Enemy.new(0, enemy.id)
 self.contents.font.color = system_color
 self.contents.draw_text(x,y,120,WLH,'Elementos:')
 weakness = []
 for element_id in Bestiary::Elements
   weakness << element_id if enemy.element_rate(element_id) != 1
 end
 for i in 0...weakness.size
   element_id = weakness[i]
   x = 144 * (i % 2)
   y2 = WLH * (i / 2)
   icon_index = Bestiary::Element_Icons[element_id]
   draw_icon(icon_index,x,y2 + (y + WLH))
   element = $data_system.elements[element_id]
   if enemy.element_rate(element_id) == 100
   self.contents.font.color = normal_color
   elsif enemy.element_rate(element_id) > 100 and enemy.element_rate(element_id) != 200
   self.contents.font.color = Color.new(255,255,0,255)
   elsif enemy.element_rate(element_id) == 200
   self.contents.font.color = Color.new(255,0,0,255)
   elsif enemy.element_rate(element_id) == 0
   self.contents.font.color = Color.new(50,50,50,255)
   elsif enemy.element_rate(element_id) < 0
   self.contents.font.color = Color.new(150,0,255,255)
   else
   self.contents.font.color = Color.new(150,150,255,255)
   end
   self.contents.font.size = 14
   self.contents.font.bold = true
   self.contents.draw_text(x+22,y2 + 5 + (y + WLH),120,WLH,"#{enemy.element_rate(element_id)}%")
   self.contents.draw_text(x+32,y2 + 5 + (y + WLH),120,WLH,"")
   self.contents.font.size = 18
   self.contents.font.bold = false
 end
end
end

#==============================================================================
# Window_EnemyStatus
#==============================================================================

class Window_EnemyStatus < Window_Base
def initialize
 super(0,0,544,416)
end

def setup(enemy, id)
 @enemy = enemy
 @id = id
 $game_system.new_enemy[enemy.id] = false
 refresh
end

def refresh
 self.contents.clear
 bitmap = Cache.battler(@enemy.battler_name, @enemy.battler_hue)
 self.contents.blt(0,32,bitmap,bitmap.rect)
 self.contents.font.color = normal_color
 self.contents.draw_text(0,0,272,WLH,"#{@id}: #{@enemy.name}")
 draw_enemy_maxhp(@enemy,272,WLH * 1,156)
 draw_enemy_maxmp(@enemy,272,WLH * 2,156)
 for i in 0..7
   draw_enemy_parameter(@enemy, 304, WLH * 3 + (WLH * i), i)
 end
 draw_enemy_drop(@enemy,272,WLH * 11)
 draw_enemy_encountered(@enemy,272,WLH * 14)
 draw_enemy_defeated(@enemy,272,WLH * 15)
 draw_enemy_weakness(@enemy,0,WLH * 11)
end
end

#==============================================================================
# Window_EnemyList
#==============================================================================

class Window_EnemyList < Window_Selectable

def initialize(x,y)
 super(x,y,544,360)
 @column_max = 2
 self.index = 0
 refresh
end

def enemy
 return @data[self.index]
end

def enemies
 return @data
end

def refresh
 self.contents.clear
 @data = []
 for item in $data_enemies
   next if Bestiary::Excluded_Enemies.include?(item.id)
   @data << item
 end
 @data.compact!
 @item_max = @data.size
 create_contents
 for i in 0...@item_max
   draw_item(i)
 end
end

def draw_item(index)
 rect = item_rect(index)
 self.contents.clear_rect(rect)
 item = @data[index]
 if item != nil
   rect.width -= 4
   if $game_system.enemy_encountered[item.id] > 0
     if $game_system.new_enemy[item.id]
       self.contents.font.color = power_up_color
     else
       self.contents.font.color = normal_color
     end
     self.contents.draw_text(rect, "#{index+1}:#{item.name}")
   else
     self.contents.font.color = normal_color
     self.contents.draw_text(rect, "#{index+1}:#{Vocab::UnknownEnemy}")
   end
 end
end
end

#==============================================================================
# Scene_Bestiary
#==============================================================================

class Scene_Bestiary < Scene_Base
def start
 super
 create_menu_background
 @last_bgm = RPG::BGM.last
 @help_window = Window_Help.new
 @list_window = Window_EnemyList.new(0,56)
 @status_window = Window_EnemyStatus.new
 @status_window.visible = false
 encountered = 0
 for enemy in @list_window.enemies
   if $game_system.enemy_encountered[enemy.id] > 0
     encountered += 1
   end
 end
 completion1 = "#{encountered}/#{@list_window.enemies.size}"
 completion2 = (encountered * 100) / @list_window.enemies.size
 @help_window.set_text("Andamento: #{completion1}(#{completion2}%)")
end

def terminate
 super
 $game_message.texts = []
 dispose_menu_background
 @help_window.dispose
 @list_window.dispose
 @status_window.dispose
end

def update
 super
 if @status_window.visible
   update_status_selection
   return
 end
 if @list_window.active
   @list_window.update
   update_list_selection
   return
 end
end

def update_status_selection
 if Input.trigger?(Input::B)
   Sound.play_cancel
   @status_window.visible = false
   @list_window.visible = true
   @help_window.visible = true
   @last_bgm.play
   return
 end
 if Input.trigger?(Input::L) or Input.repeat?(Input::L)
   Sound.play_cursor
   loop do
     @list_window.index = (@list_window.index + 1)
     @list_window.index %= @list_window.enemies.size
     break if $game_system.enemy_encountered[@list_window.index+1] > 0
   end
   process_status_window(@list_window.enemy, @list_window.index+1)
 end
 if Input.trigger?(Input::R) or Input.repeat?(Input::R)
   Sound.play_cursor
   loop do
     @list_window.index = (@list_window.index - 1) % @list_window.enemies.size
     break if $game_system.enemy_encountered[@list_window.index+1] > 0
   end
   process_status_window(@list_window.enemy, @list_window.index+1)
 end
end

def update_list_selection
 if Input.trigger?(Input::B)
   Sound.play_cancel
   $scene = Scene_Ajuda.new
   return
 end
 if Input.trigger?(Input::C)
   unless $game_system.enemy_encountered[@list_window.enemy.id] > 0
     Sound.play_buzzer
     return
   end
   process_status_window(@list_window.enemy, @list_window.index+1)
 end
end

def process_status_window(enemy, index)
 if Bestiary::Play_BGM
   bgm_name = Bestiary::BGM[enemy.id]
   if bgm_name.nil?
     bgm = RPG::BGM.new(Bestiary::BGM.default)
     bgm.play
   else
     bgm = RPG::BGM.new(bgm_name)
     bgm.play
   end
 end
 @status_window.setup(enemy, index)
 @status_window.visible = true
 @list_window.visible = false
 @help_window.visible = false
 @list_window.draw_item(index-1)
end
end


[box class=titlebg]
Créditos e Avisos
[/box]
Criador:Shepher por fazer.
DarkChocobo
Angel Ivy