Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # Cataclisman - Quest
- # por King Gerar
- #------------------------------------------------------------------------------
- # Este script permite implementar missões ao jogo, com a adição de uma Scene e
- # manusear as missões.
- #==============================================================================
- # Módulo CTCM001
- #------------------------------------------------------------------------------
- # - Este módulo serve para você fazer as configurações deste script.
- #==============================================================================
- module CTCM001
- #-------------------------------------------------------------------------------
- # Escolha o tamanho da fonte.
- #-------------------------------------------------------------------------------
- Font_size = 16
- #-------------------------------------------------------------------------------
- # Adicionar o comando no menu principal? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Add_Quests = true
- #-------------------------------------------------------------------------------
- # Texto que ficará no menu e no topo da scene.
- #-------------------------------------------------------------------------------
- Command = "Quests"
- #-------------------------------------------------------------------------------
- # Tipos de missões que podem haver.
- #-------------------------------------------------------------------------------
- Tipos = ["Principal", "Opcional"]
- #-------------------------------------------------------------------------------
- # Estados que são as situações em que a missão pode estar, sendo eles: "não
- # descoberta", ou seja, quando ainda você não tem acesso à missão; "em
- # progresso", que é quando você está cumprindo ela; "completa" que é quando
- # realiza todos objetivos e; "fracassada" que é quando falha em um ou mais
- # objetivos.
- # É imprescindível manter esta ordem, somente substitua as palavras pelas que
- # preferir.
- #-------------------------------------------------------------------------------
- Estados = ["Não descoberta", "Em Progresso", "Completa", "Fracassada"]
- #-------------------------------------------------------------------------------
- # Escolha aqui a ordem de exibição das missões. Utilizando os números 1 (não
- # descobertas), 2 (fracassadas) e 3 (completas), coloque na ordem que preferir.
- # Por padrão a ordem é 1, 2, 3, ou seja, primeiro serão exibidas as missões
- # não descobertas, em seguida as fracassadas e por fim as já completadas.
- #-------------------------------------------------------------------------------
- Ordem = [1, 2, 3]
- #-------------------------------------------------------------------------------
- # Aqui é a parte de criação das missões. Existe uma de exemplo abaixo. Para
- # criar uma nova é só copiar o exemplo, modificando principalmente o valor
- # entre os colchetes "[]" na frente da palavra "Quests", este valor corresponde
- # ao ID da missão e ela será controlada por ele, portanto não podem haver duas
- # missões com o mesmo ID. Depois, modifique e deixe a quest como quiser.
- #-------------------------------------------------------------------------------
- Quests = Array.new #Não modifique a esta linha!
- #-------------------------------------------------------------------------------
- # Quests[ID] = ["Nome da Missão", Tipo, ID do Ícone, Estado, Símbolo, Progresso,
- # "Descrição: Escreva aqui sobre a missão.",
- # "Quem a lhe deu e a recompensa por exemplo.",
- # "Podem ser usadas até três linhas para isso.",
- # "Primeiro objetivo",
- # "Segundo objetivo",
- # "Terceiro objetivo",
- # "Quarto objetivo",
- # "Quinto objetivo",
- # ID do item de recompensa, Quantidade,
- # ID da arma de recompensa, Quantidade,
- # ID da proteção de recompensa, Quantidade,
- # Ouro, EXP,
- # Valor, Valor final, Valor de adição, Texto 1, Texto 2, Objetivo]
- #
- # Explicações: TIPO = 0 para missões "Principais" ou 1 para "Opcionais".
- # ESTADO = 0 (não descoberta), 1 (em progresso), 2 (completa) ou
- # 3 (fracassada).
- # SÍMBOLO = pode colocar qualquer coisa, desde que venha precedido
- # por : (dois pontos).
- # PROGRESSO = é o objetivo atual em que a missão se encontra.
- # 0 significa que não tem nenhum objetivo ainda,
- # portanto ela não foi descoberta. Logo que ela é
- # descoberta/obtida, o progresso para a ter valor 1.
- #-------------------------------------------------------------------------------
- # Se não for utilizar a janela auxiliar, não é preciso colocar os dados após a
- # exp dada como recompensa.
- #-------------------------------------------------------------------------------
- # VALOR = O valor inicial usado na janela auxiliar (explica-se
- # abaixo).
- # VALOR FINAL = O valor final, ou seja, o que precisa ser alcançado
- # para o objetivo ser completado.
- # VALOR DE ADIÇÃO = o valor que se soma ao primeiro gradativamente
- # a fim de alcançar o valor final.
- # TEXTO 1 = Primeira linha do texto que será exibido na janela.
- # TEXTO 2 = Segunda linha do texto que será exibido na janela.
- # OBJETIVO = número do objetivo da missão em que a janela será
- # utilizada. Lembrando que é um valor de 1 a 5.
- #-------------------------------------------------------------------------------
- # NÃO ESQUEÇA DAS VÍRGULAS, SE NÂO VAI BUGAR è-é
- #-------------------------------------------------------------------------------
- Quests[0] = ["O Resgate dos Mineiros", 0, 276, 0, :quest00, 0,
- "Na entrada da caverna, um mineiro se encontrava",
- "caído, e disse que seus companheiros estavam",
- "presos no interior da caverna.",
- "- Encontrar 5 mineiros.",
- "- Achar uma saída.",
- "- Salvar o mineiro restante.",
- "- Encontrar uma saída alternativa.",
- "- Achar um meio de abrir o portão.",
- 1, 3,
- 1, 1,
- 1, 1,
- 0, 250,
- 0, 5, 1, "Mineiros", "Encontrados", 1]
- Quests[1] = ["Fuga do Templo", 0, 12, 0, :quest01, 0,
- "Precisamos sair do templo, mas para isso",
- "tivemos que passar por um misterioso guarda",
- "aparentemente nos deixou seguir.",
- "- Passar pelo corregor e entrar na porta.",
- "",
- "",
- "",
- "",
- 0, 0,
- 0, 0,
- 0, 0,
- 500, 100]
- #-------------------------------------------------------------------------------
- # Deseja marcar como completa uma missão assim que todos seus objetivos forem
- # completados? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Auto_complete = true
- #-------------------------------------------------------------------------------
- # Ao completar uma missão, deseja que as recompensas sejam dadas
- # automaticamente? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Auto_reward = true
- #-------------------------------------------------------------------------------
- # Quanto à experiência dada como recompensa. Gostaria de distribuir a quantidade
- # de exp entre os membros do grupo? Coloque true(sim) ou false(não). Colocando
- # false, cada membro do grupo receberá o valor de exp integral.
- #-------------------------------------------------------------------------------
- Divide_exp = true
- #-------------------------------------------------------------------------------
- # Caso um personagem suba de nível ao ganhar a experiência dada pela missão,
- # deseja exibir uma mensagem de level up? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Show_levelup_message = true
- #-------------------------------------------------------------------------------
- # ID dos ícones de ouro e experiência, respectivamente.
- #-------------------------------------------------------------------------------
- Gold_Icon = 361
- Exp_Icon = 121
- #-------------------------------------------------------------------------------
- # COMO MANUSEAR AS MISSÕES?
- #-------------------------------------------------------------------------------
- # Para desbloquear uma missão, avançar um objetivo, marcá-la como completada
- # ou fracassada, você irá utilizar pequenos códigos via comando por eventos
- # "Chamar Script", os quais seguem abaixo.
- #-------------------------------------------------------------------------------
- # Para avançar um objetivo e/ou DESBLOQUEAR uma missão, você utilizará:
- #
- # advance_quest(id)
- #
- # Onde "id" é o id da missão, mencionado na explicação de como criar uma
- # quest. Por exemplo, para avançar um objetivo na Quest[5], você deve por
- # "advance_quest(5)". Lembrando que, na primeira vez que se usa esse comando
- # a missão é desbloqueada e é liberado o primeiro objetivo dela.
- #-------------------------------------------------------------------------------
- # Para marcar uma missão como COMPLETA, você utilizará:
- #
- # advance_quest(id)
- #
- # Onde "id" é o id da missão. Caso estejam faltando objetivos a serem marcados
- # como completados, eles serão marcados também.
- #-------------------------------------------------------------------------------
- # Para marcar uma missão como FRACASSADA, você utilizará:
- #
- # failed_quest(id)
- #
- # Onde "id" é o id da missão. Os objetivos não desbloqueados continuarão
- # ocultos, porém, se nenhum objetivo estiver sido exibido, o primeiro será
- # revelado.
- #-------------------------------------------------------------------------------
- # Supondo que o jogador fracasse em uma missão e a mesma seja marcada como
- # fracassada, e caso o jogador volte onde pegou a missão, é possível
- # REABILITAR uma missão que estej marcada como fracassada, utilizando:
- #
- # reactive_quest(id)
- #
- # Onde "id" é o id da missão. Os objetivos serão "resetados" e somente o
- # primeiro será liberado até que os próximos sejam desbloqueados.
- #-------------------------------------------------------------------------------
- # Para acrescentar um de valor (o valor acrescentado corresponde ao VALOR DE
- # ADIÇÃO da missão respectiva), utilize:
- #
- # add_quest_obj(id)
- #
- # Onde "id" é o id da missão. Importante ressaltar que este comando só
- # funcionará se a missão cujo id foi usado neste comando estiver em progresso
- # e no mesmo objetivo indicado nas configurações da janela auxiliar da própria
- # quest (ou seja, o último valor das configurações da quest).
- #-------------------------------------------------------------------------------
- # Para verificar se uma missão já foi descoberta, utilize:
- #
- # verify_quest(id)
- #
- # Onde "id" é o id da missão. Caso a missão já tenha sido descoberta,completada
- # ou fracassada, irá retornar "true", caso contrário, retornará "false". É ideal
- # para usar em condições.
- #-------------------------------------------------------------------------------
- # JANELA AUXILIAR
- #-------------------------------------------------------------------------------
- # A janela auxiliar irá exibir o estado de alguns progressos da missão, como
- # por exemplo, a quantidade de itens encontrados em uma missão de encontrar
- # itens, ou o número de poções que faltam entregar em uma missão d entregar
- # poções. Os dados utilizados por esta janela correspondem à ultima linha de
- # informações da quest, como explicado acima (na criação da mesma).
- #-------------------------------------------------------------------------------
- # Deseja utilizar a janela auxiliar? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Aux_window = true
- #-------------------------------------------------------------------------------
- # Posição da janela auxiliar.
- # "left_top", "right_top", "left_bottom" ou "right_bottom"
- #-------------------------------------------------------------------------------
- Aux_pos = "right_top"
- #-------------------------------------------------------------------------------
- # Tempo em frames que a janela mantém uma informação.
- #-------------------------------------------------------------------------------
- Aux_time = 300
- #-------------------------------------------------------------------------------
- # Opacidade da janela auxiliar. Valor de 0 a 255.
- #-------------------------------------------------------------------------------
- Aux_opacity = 255
- #-------------------------------------------------------------------------------
- # Completar objetivo ao igualar os valores da janela auxiliar e objetivo
- # auxiliar? Por exemplo, em uma missão de encontrar 5 pedras, ao encontrar as
- # 5 pedras, deseja habilitar automaticamente o próximo onjetivo?
- # Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Aux_next_objective = true
- #-------------------------------------------------------------------------------
- # AVISOS DAS MISSÕES
- #-------------------------------------------------------------------------------
- # Os avisos das missões, se habilitados, serão exibidos automaticamente quando
- # um objetivo for concluído, uma missão for completada, fracassada ou
- # desbloqueada.
- #-------------------------------------------------------------------------------
- # Deseja utilizar os avisos das missões? Coloque true(sim) ou false(não).
- #-------------------------------------------------------------------------------
- Advice_use = true
- #-------------------------------------------------------------------------------
- # Tempo em que o aviso permanece na tela.
- #-------------------------------------------------------------------------------
- Advice_time = 300
- #-------------------------------------------------------------------------------
- # Ao invés de window, uma imagem pode ser usada como fundo para exibição dos
- # avisos, para isto a imagem deve estar na pasta "Graphics\Pictures" do projeto.
- # É importante que a imagem tenha dimensões de 120 x 96 pixels.
- #-------------------------------------------------------------------------------
- Advice_img = "Quest - Advice"
- #-------------------------------------------------------------------------------
- # Textos para objetivo concluído, missão descoberta, completada e fracassada,
- # respectivamente. Cada linha deve estar entre aspas e separadas por vírgula
- # como nos padrões. É um máximo de duas linhas.
- #-------------------------------------------------------------------------------
- Txt_obj_ok = ["Objetivo", "Concluído"]
- Txt_learn = ["Nova Missão", "Descoberta"]
- Txt_ok = ["Missão", "Completada"]
- Txt_fail = ["Missão", "Fracassada"]
- #-------------------------------------------------------------------------------
- # SE para serem executados na mesma ordem acima. Escreva o nome do SE utilizado
- # entre aspas, como nos padrões.
- #-------------------------------------------------------------------------------
- SE_obj_ok = "Chime2"
- SE_learn = "Save"
- SE_ok = "Skill3"
- SE_fail = "Down4"
- #==============================================================================
- # NÃO MODIFIQUE ABAIXO
- #==============================================================================
- end
- #==============================================================================
- # SCENES
- #==============================================================================
- # Scene_Quests
- #------------------------------------------------------------------------------
- # Esta classe executa o processamento da tela de missões.
- #==============================================================================
- class Scene_Quests < Scene_Base
- #--------------------------------------------------------------------------
- # Inicialização do processo
- #--------------------------------------------------------------------------
- def start
- super
- create_upper_window
- create_quests_window
- create_descript_window
- end
- #--------------------------------------------------------------------------
- # Criação da janela superior com o nome da Scene.
- #--------------------------------------------------------------------------
- def create_upper_window
- @upper_window = Window_UpperWindow.new
- @upper_window.write_total_quests
- end
- #--------------------------------------------------------------------------
- # Criação da janela com a lista de missões.
- #--------------------------------------------------------------------------
- def create_quests_window
- @quests_window = Window_QuestSelect.new(0, @upper_window.height)
- @quests_window.height = Graphics.height - @upper_window.height
- @quests_window.set_handler(:ok, method(:on_quests_ok))
- @quests_window.set_handler(:cancel, method(:return_scene))
- @quests_window.make_icon_command_list
- end
- #--------------------------------------------------------------------------
- # Criação da janela com as informações da missão.
- #--------------------------------------------------------------------------
- def create_descript_window
- width = Graphics.width - @quests_window.width
- height = Graphics.height - @upper_window.height
- @descript_window = Window_QuestDescript.new(@quests_window.width, @upper_window.height, width, height)
- end
- #--------------------------------------------------------------------------
- # Quest [Confirmação]
- #--------------------------------------------------------------------------
- def on_quests_ok
- $selected_quest = @quests_window.command_name(@quests_window.index)
- @descript_window.data_quest($selected_quest)
- @quests_window.activate
- end
- end
- #==============================================================================
- # Scene_Menu
- #------------------------------------------------------------------------------
- # Esta classe executa o processamento da tela de menu.
- #==============================================================================
- class Scene_Menu < Scene_MenuBase
- #--------------------------------------------------------------------------
- # Criação da janela de comando
- #--------------------------------------------------------------------------
- alias create_menu_command_window create_command_window
- def create_command_window
- create_menu_command_window
- @command_window.set_handler(:quests, method(:command_ctcmquests)) if CTCM001::Add_Quests == true
- end
- #--------------------------------------------------------------------------
- # Comando [Missões]
- #--------------------------------------------------------------------------
- def command_ctcmquests
- SceneManager.call(Scene_Quests)
- end
- end
- #==============================================================================
- # Scene_Map
- #------------------------------------------------------------------------------
- # Esta classe executa o processamento da tela de mapa.
- #==============================================================================
- class Scene_Map < Scene_Base
- #--------------------------------------------------------------------------
- # Inicialização do processo
- #--------------------------------------------------------------------------
- alias aux_quest_start start
- def start
- aux_quest_start
- $aux_quest_window = Window_AuxQuest.new if CTCM001::Aux_window == true
- $adv_quest_window = Window_AdviceQuest.new if CTCM001::Advice_use == true
- end
- #--------------------------------------------------------------------------
- # Atualização da tela
- #--------------------------------------------------------------------------
- alias aux_quest_update update
- def update
- aux_quest_update
- $aux_quest_window.refresh if CTCM001::Aux_window == true
- $adv_quest_window.refresh if CTCM001::Advice_use == true
- end
- #--------------------------------------------------------------------------
- # Finalização do processo
- #--------------------------------------------------------------------------
- alias aux_quest_terminate terminate
- def terminate
- aux_quest_terminate
- $aux_quest_window.dispose if CTCM001::Aux_window == true
- $adv_quest_window.dispose if CTCM001::Advice_use == true
- end
- end
- #==============================================================================
- # WINDOWS
- #==============================================================================
- # Window_Base
- #------------------------------------------------------------------------------
- # Esta é a superclasse para todas as janelas no jogo.
- #==============================================================================
- class Window_Base < Window
- #--------------------------------------------------------------------------
- # Desenho de uma linha horzontal
- #--------------------------------------------------------------------------
- def draw_hr(y)
- contents.fill_rect(0, y, contents_width, 1, normal_color)
- end
- end
- #==============================================================================
- # Window_MenuCommand
- #------------------------------------------------------------------------------
- # Esta janela exibe os comandos do menu.
- #==============================================================================
- class Window_MenuCommand < Window_Command
- #--------------------------------------------------------------------------
- # Adição de comandos próprios
- #--------------------------------------------------------------------------
- alias add_ctcm_commands add_original_commands
- def add_original_commands
- add_ctcm_commands
- add_command(CTCM001::Command, :quests, quests_verify) if CTCM001::Add_Quests == true
- end
- #--------------------------------------------------------------------------
- # Verificar de existem missões descorbertas.
- #--------------------------------------------------------------------------
- def quests_verify
- n = 0
- while n < $aux_quests.size do
- if $aux_quests[n][3] == 0
- n += 1
- else
- return true
- end
- end
- return false
- end
- end
- #==============================================================================
- # Window_UpperWindow
- #------------------------------------------------------------------------------
- # Esta janela exibe o nome da Scene no topo da tela.
- #==============================================================================
- class Window_UpperWindow < Window_Base
- #--------------------------------------------------------------------------
- # Inicialização do objeto.
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0, Graphics.width, (standard_padding * 2) + line_height)
- self.contents.font.size = CTCM001::Font_size + 2
- draw_text( 0, 0, contents_width, line_height, CTCM001::Command, 1)
- end
- #--------------------------------------------------------------------------
- # Exibição do número de missões completas/descobertas + fracassadas.
- #--------------------------------------------------------------------------
- def write_total_quests
- @completeds = Array.new if @completeds == nil
- @total = Array.new if @total == nil
- n = 0
- while n < $aux_quests.size do
- @completeds.push(n) if $aux_quests[n][3] == 2
- @total.push(n) if $aux_quests[n][3] > 0
- n += 1
- end
- self.contents.font.size = CTCM001::Font_size
- draw_text( contents_width - 64, 0, 32, line_height, @completeds.size.to_s, 2)
- draw_text( contents_width - 32, 0, 32, line_height, "/ " + @total.size.to_s, 0)
- end
- end
- #==============================================================================
- # Window_QuestSelect
- #------------------------------------------------------------------------------
- # Esta janela exibe as missões disponíveis dentro da categoria selecionada.
- #==============================================================================
- class Window_QuestSelect < Window_Command
- include CTCM001
- #--------------------------------------------------------------------------
- # Inicialização do objeto.
- #--------------------------------------------------------------------------
- def initialize(x, y)
- super(x, y)
- end
- #--------------------------------------------------------------------------
- # Inicialização da posição do comando de seleção (método da classe).
- #--------------------------------------------------------------------------
- def self.init_command_position
- return 0
- end
- #--------------------------------------------------------------------------
- # Aquisição da largura da janela.
- #--------------------------------------------------------------------------
- def window_width
- return 208
- end
- #--------------------------------------------------------------------------
- # Aquisição do número de linhas exibidas.
- #--------------------------------------------------------------------------
- def visible_line_number
- return 10
- end
- #--------------------------------------------------------------------------
- # Criação da lista de comandos.
- #--------------------------------------------------------------------------
- def make_command_list
- @discovereds = Array.new if @discovereds == nil
- @completeds = Array.new if @completeds == nil
- @faileds = Array.new if @faileds == nil
- #--------------------------------------------------------------------------
- # Criando as arrays com cada tipo de missão.
- #--------------------------------------------------------------------------
- n = 0
- while n < Quests.size do
- @discovereds.push(n) if $aux_quests[n][3] == 1 && @discovereds.include?(n) == false
- @completeds.push(n) if $aux_quests[n][3] == 2 && @completeds.include?(n) == false
- @faileds.push(n) if $aux_quests[n][3] == 3 && @faileds.include?(n) == false
- n += 1
- end
- #--------------------------------------------------------------------------
- # Colocando na ordem selecionada.
- #--------------------------------------------------------------------------
- a = Ordem.index(1)
- b = Ordem.index(2)
- c = Ordem.index(3)
- order = Array.new
- order[a] = @discovereds
- order[b] = @faileds
- order[c] = @completeds
- @ordered_quests = order[0] + order[1] + order[2]
- #--------------------------------------------------------------------------
- # Criando os comandos.
- #--------------------------------------------------------------------------
- n = 0
- while n < @ordered_quests.size do
- add_command($aux_quests[@ordered_quests[n]][0], $aux_quests[@ordered_quests[n]][4])
- n += 1
- end
- end
- #--------------------------------------------------------------------------
- # Criação dos ícones da lista de comandos.
- #--------------------------------------------------------------------------
- def make_icon_command_list
- n = 0
- while n < @ordered_quests.size do
- draw_icon($aux_quests[@ordered_quests[n]][2], 0, n * line_height)
- n += 1
- end
- end
- #--------------------------------------------------------------------------
- # Desenho do item
- # index : índice do item
- #--------------------------------------------------------------------------
- def draw_item(index)
- change_color(normal_color, command_enabled?(index))
- draw_text(item_rect_for_text(index), command_name(index), alignment)
- end
- #--------------------------------------------------------------------------
- # Aquisição do retangulo para desenhar o item (para texto)
- # index : índice do item
- #--------------------------------------------------------------------------
- def item_rect_for_text(index)
- rect = item_rect(index)
- rect.x += 28
- rect.width -= 8
- rect
- end
- end
- #==============================================================================
- # Window_QuestDescript
- #------------------------------------------------------------------------------
- # Esta janela exibe as informações da missão selecionada.
- #==============================================================================
- class Window_QuestDescript < Window_Base
- include CTCM001
- #--------------------------------------------------------------------------
- # Inicialização do objeto.
- #--------------------------------------------------------------------------
- def initialize(x, y, width, height)
- super(x, y, width, height)
- end
- #--------------------------------------------------------------------------
- # Dados da missão selecionada.
- #--------------------------------------------------------------------------
- def data_quest(index)
- $all_quest_names = Array.new if $all_quest_names == nil
- n = 0
- while n < Quests.size do
- $all_quest_names.push($aux_quests[n][0])
- n += 1
- end
- contents.clear
- change_color(normal_color)
- quest = $all_quest_names.index(index) # "quest" = ID da missão selecionada.
- #------------------------------------------------------------------------
- # Cabeçalho.
- #------------------------------------------------------------------------
- draw_icon($aux_quests[quest][2], 0, 0)
- contents.font.size = Font_size + 4
- draw_text(0, 0, contents_width, line_height, $aux_quests[quest][0], 1)
- contents.font.size = Font_size - 1
- draw_text(0, line_height, contents_width, line_height, Tipos[$aux_quests[quest][1]], 1)
- draw_hr(line_height * 2)
- #------------------------------------------------------------------------
- # Descrição.
- #------------------------------------------------------------------------
- contents.font.size = Font_size
- draw_text(0, (line_height * 3), contents_width, line_height, $aux_quests[quest][6], 0)
- draw_text(0, (line_height * 4), contents_width, line_height, $aux_quests[quest][7], 0)
- draw_text(0, (line_height * 5), contents_width, line_height, $aux_quests[quest][8], 0)
- #------------------------------------------------------------------------
- # Objetivos.
- #------------------------------------------------------------------------
- n = $aux_quests[quest][5]
- while n > 0 do
- if n == $aux_quests[quest][5] && $aux_quests[quest][3] == (1 || 2)
- change_color(normal_color)
- else
- change_color(Color.new(255, 255, 255, 150))
- end
- text = $aux_quests[quest][8 + n]
- if $aux_quests[quest].size > 22 && $aux_quests[quest][5] == $aux_quests[quest][27]
- text += (" (" + $aux_quests[quest][22].to_s + "/" + $aux_quests[quest][23].to_s + ")")
- end
- draw_text(0, (line_height * (n + 5)), contents_width, line_height, text, 0)
- n -= 1
- end
- change_color(normal_color)
- #------------------------------------------------------------------------
- # Recompensas.
- #------------------------------------------------------------------------
- draw_hr(line_height * 11)
- draw_text(0, (line_height * 11), contents_width, line_height, "Recompensas", 1)
- contents.font.size = Font_size - 3
- if $aux_quests[quest][15] > 0
- draw_icon($data_items[$aux_quests[quest][14]].icon_index, 0, line_height * 12)
- draw_text(24, (line_height * 12), contents_width, line_height, "x" + $aux_quests[quest][15].to_s, 0)
- end
- if $aux_quests[quest][17] > 0
- draw_icon($data_weapons[$aux_quests[quest][16]].icon_index, 48, line_height * 12)
- draw_text(72, (line_height * 12), contents_width, line_height, "x" + $aux_quests[quest][17].to_s, 0)
- end
- if $aux_quests[quest][19] > 0
- draw_icon($data_armors[$aux_quests[quest][18]].icon_index, 96, line_height * 12)
- draw_text(120, (line_height * 12), contents_width, line_height, "x" + $aux_quests[quest][19].to_s, 0)
- end
- contents.font.size = Font_size - 1
- if $aux_quests[quest][20] > 0
- draw_icon(Gold_Icon, contents_width - 148, line_height * 12)
- draw_text(contents_width - 124, (line_height * 12), 50, line_height, $aux_quests[quest][20].to_s + " G", 0)
- end
- if $aux_quests[quest][21] > 0
- draw_icon(Exp_Icon, contents_width - 64, line_height * 12)
- draw_text(contents_width - 40, (line_height * 12), 40, line_height, $aux_quests[quest][21].to_s, 0)
- end
- #------------------------------------------------------------------------
- # Estado.
- #------------------------------------------------------------------------
- contents.font.size = Font_size + 2
- case $aux_quests[quest][3]
- when 2
- change_color(Color.new(190, 255, 50, 255))
- when 3
- change_color(Color.new(255, 100, 75, 255))
- end
- draw_text(0, (line_height * 13) + 8, contents_width, line_height, Estados[$aux_quests[quest][3]].to_s, 1)
- end
- end
- #==============================================================================
- # Window_AuxQuest
- #------------------------------------------------------------------------------
- # Esta janela exibe status de algum(ns) objetivo(s) das missões ativas.
- #==============================================================================
- class Window_AuxQuest < Window_Base
- include CTCM001
- #--------------------------------------------------------------------------
- # Inicialização do objeto.
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0, 120, 96)
- set_x
- set_y
- opacity = 0
- contents_opacity = 0
- self.back_opacity = Aux_opacity
- @current_quest = 0
- @timer = Aux_time - 1
- refresh
- end
- #--------------------------------------------------------------------------
- # Posição x
- #--------------------------------------------------------------------------
- def set_x
- case Aux_pos
- when "left_top" || "left_bottom"
- self.x = 0
- when "right_top" || "right_bottom"
- self.x = Graphics.width - 120
- end
- end
- #--------------------------------------------------------------------------
- # Posição y
- #--------------------------------------------------------------------------
- def set_y
- case Aux_pos
- when "left_top" || "right_top"
- self.y = 0
- when "left_bottom" || "right_bottom"
- self.y = Graphics.height - 96
- end
- end
- #--------------------------------------------------------------------------
- # Atualização das informações.
- #--------------------------------------------------------------------------
- def refresh
- @infos_quest = [nil]
- n = 0
- while n < Quests.size do
- if $aux_quests[n].size > 22 && $aux_quests[n][3] == 1
- @infos_quest.push(n) if $aux_quests[n][5] == $aux_quests[n][27]
- end
- n += 1
- end
- @infos_quest.delete(nil)
- @timer += 1
- if @infos_quest[0] != nil
- self.opacity = 255
- self.contents_opacity = 255
- if @timer >= Aux_time
- @current_quest += 1
- @current_quest = 0 if @current_quest >= @infos_quest.size
- @timer = 0
- draw_infos
- end
- else
- contents.clear
- self.opacity = 0
- self.contents_opacity = 0
- end
- end
- #--------------------------------------------------------------------------
- # Escrever s informações na janela.
- #--------------------------------------------------------------------------
- def draw_infos
- contents.clear
- draw_text(0, 0, contents_width, line_height, $aux_quests[@infos_quest[@current_quest]][25], 1)
- draw_text(0, line_height, contents_width, line_height, $aux_quests[@infos_quest[@current_quest]][26], 1)
- text = $aux_quests[@infos_quest[@current_quest]][22].to_s + " / " + $aux_quests[@infos_quest[@current_quest]][23].to_s
- draw_text(0, line_height * 2, contents_width, line_height, text, 1)
- end
- end
- #==============================================================================
- # Window_AdviceQuest
- #------------------------------------------------------------------------------
- # Esta janela exibe informações quando uma missão é manuseada.
- #==============================================================================
- class Window_AdviceQuest < Window_Base
- include CTCM001
- #--------------------------------------------------------------------------
- # Inicialização do objeto.
- #--------------------------------------------------------------------------
- def initialize
- super(Graphics.width - 120, -96, 120, 96)
- if Advice_img != ""
- @layout = Sprite.new
- @layout.bitmap = Cache.picture(Advice_img)
- @layout.x = self.x
- @layout.y = self.y
- @layout.z = $aux_quest_window.z if $aux_quest_window != nil
- self.opacity = 0
- self.z = @layout.z + 1
- end
- @timer = 0
- end
- #--------------------------------------------------------------------------
- # Criação e atualização do texto.
- #--------------------------------------------------------------------------
- def quest_advice(text, icon)
- text = text
- icon = icon
- contents.clear
- draw_text(0, 0, contents_width, line_height, text[0], 1)
- draw_text(0, line_height, contents_width, line_height, text[1], 1)
- draw_icon(icon, (contents_width - 24) / 2, line_height * 2)
- @adviced = false
- @timer = 0
- end
- #--------------------------------------------------------------------------
- # Atualização das informações.
- #--------------------------------------------------------------------------
- def refresh
- if @adviced == false
- if self.y < -48
- self.y += 10
- elsif self.y >= -48 && self.y < -24
- self.y += 5
- elsif self.y >= -24 && self.y < -12
- self.y += 3
- elsif self.y >= -12 && self.y < 0
- self.y += 1
- elsif self.y == 0
- @adviced = true
- end
- @layout.y = self.y
- $aux_quest_window.y = self.y + 96 if $aux_quest_window != nil
- else
- if @timer < 300
- @timer += 1
- else
- if self.y >= -12
- self.y -= 1
- elsif self.y < -12 && self.y >= -24
- self.y -= 3
- elsif self.y < -24 && self.y >= -48
- self.y -= 5
- elsif self.y < -48 && self.y > -96
- self.y -= 10
- elsif self.y <= -96
- self.y = -96
- @adviced = nil
- @timer = 0
- end
- @layout.y = self.y
- $aux_quest_window.y = self.y + 96 if $aux_quest_window != nil
- end
- end
- end
- end
- #==============================================================================
- # GAME
- #==============================================================================
- # Game_Interpreter
- #------------------------------------------------------------------------------
- # Um interpretador para executar os comandos de evento. Esta classe é usada
- # internamente pelas classes Game_Map, Game_Troop e Game_Event.
- #==============================================================================
- class Game_Interpreter
- include CTCM001
- #--------------------------------------------------------------------------
- # Avançar um objetivo na missão.
- #--------------------------------------------------------------------------
- def advance_quest(id)
- if $aux_quests[id][3] == 0
- $aux_quests[id][3] = 1
- if Advice_use == true
- RPG::SE.new(SE_learn, 60, 100).play
- $adv_quest_window.quest_advice(Txt_learn, $aux_quests[id][2])
- end
- end
- if $aux_quests[id][9 + $aux_quests[id][5]] != "" && $aux_quests[id][9 + $aux_quests[id][5]].is_a?(String)
- $aux_quests[id][5] += 1
- if Advice_use == true && $aux_quests[id][5] > 1
- RPG::SE.new(SE_obj_ok, 60, 100).play
- $adv_quest_window.quest_advice(Txt_obj_ok, $aux_quests[id][2])
- end
- elsif Auto_complete == true
- complete_quest(id)
- end
- end
- #--------------------------------------------------------------------------
- # Marcar uma missão como completa.
- #--------------------------------------------------------------------------
- def complete_quest(id)
- $aux_quests[id][3] = 2
- if Advice_use == true
- RPG::SE.new(SE_ok, 60, 100).play
- $adv_quest_window.quest_advice(Txt_ok, $aux_quests[id][2])
- end
- n = $aux_quests[id][5]
- while $aux_quests[id][9 + n] != "" && n < 5
- $aux_quests[id][5] += 1
- n += 1
- end
- give_rewards_quest(id) if Auto_reward == true
- end
- #--------------------------------------------------------------------------
- # Marcar uma missão como fracassada.
- #--------------------------------------------------------------------------
- def failed_quest(id)
- $aux_quests[id][3] = 3
- $aux_quests[id][5] = 1 if $aux_quests[id][5] == 0
- if Advice_use == true
- RPG::SE.new(SE_fail, 60, 100).play
- $adv_quest_window.quest_advice(Txt_fail, $aux_quests[id][2])
- end
- end
- #--------------------------------------------------------------------------
- # Reabilitar uma missão que foi fracassada.
- #--------------------------------------------------------------------------
- def reactive_quest(id)
- if $aux_quests[id][3] == 3
- $aux_quests[id][3] = 1
- $aux_quests[id][5] = 1
- if Advice_use == true
- RPG::SE.new(SE_learn, 60, 100).play
- $adv_quest_window.quest_advice(Txt_learn, $aux_quests[id][2])
- end
- else
- return
- end
- end
- #--------------------------------------------------------------------------
- # Acrescentar um de valor na janela auxiliar de missões.
- #--------------------------------------------------------------------------
- def add_quest_obj(id)
- return if $aux_quests[id][3] == 0
- $aux_quests[id][22] += $aux_quests[id][24] if $aux_quests[id][22] < $aux_quests[id][23] && $aux_quests[id][5] == $aux_quests[id][27]
- advance_quest(id) if Aux_next_objective == true && $aux_quests[id][22] == $aux_quests[id][23]
- $aux_quest_window.draw_infos
- end
- #--------------------------------------------------------------------------
- # Distribuir as recompensas se esta opção estiver habilitada.
- #--------------------------------------------------------------------------
- def give_rewards_quest(id)
- $game_party.gain_item($data_items[$aux_quests[id][14]], $aux_quests[id][15])
- $game_party.gain_item($data_weapons[$aux_quests[id][16]], $aux_quests[id][17])
- $game_party.gain_item($data_armors[$aux_quests[id][18]], $aux_quests[id][19])
- $game_party.gain_gold($aux_quests[id][20])
- if Divide_exp == true
- each_exp = ($aux_quests[id][21] / $game_party.members.size)
- n = 0
- while n < $game_party.members.size do
- $game_party.members[n].gain_quest_exp(each_exp)
- n += 1
- end
- else
- n = 0
- while n < $game_party.members.size do
- $game_party.members[n].gain_quest_exp($aux_quests[id][21])
- n += 1
- end
- $game_party.members[0].gain_quest_exp($aux_quests[id][21])
- end
- end
- #--------------------------------------------------------------------------
- # Distribuir as recompensas se esta opção estiver habilitada.
- #--------------------------------------------------------------------------
- def verify_quest(id)
- if $aux_quests[id][3] != 0
- return true
- else
- return false
- end
- end
- end
- #==============================================================================
- # Game_Actor
- #------------------------------------------------------------------------------
- # Adição do método "gain_quest_exp" para adicionar a experiência dada pelas
- # missões com a opção de mostrar subida de nível ou não.
- #==============================================================================
- class Game_Actor < Game_Battler
- include CTCM001
- def gain_quest_exp(exp)
- change_exp(self.exp + (exp * final_exp_rate).to_i, Show_levelup_message)
- end
- end
- #==============================================================================
- # ** DataManager
- #------------------------------------------------------------------------------
- # Este módulo gerencia o jogo e objetos do banco de dados utilizados no jogo.
- # Quase todas as variáveis globais são inicializadas no módulo.
- #==============================================================================
- class << DataManager
- alias create_game_quests_objects create_game_objects
- def create_game_objects(*a, &b)
- create_game_quests_objects(*a, &b)
- $aux_quests = CTCM001::Quests.clone
- end
- alias make_save_quests_contents make_save_contents
- def make_save_contents(*a, &b)
- contents = make_save_quests_contents(*a, &b)
- contents[:aux_quests] = $aux_quests
- contents
- end
- alias extract_save_quest_contents extract_save_contents
- def extract_save_contents(contents)
- extract_save_quest_contents(contents)
- $aux_quests = contents[:aux_quests]
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement