1 Dragon Gene XP 12/8/2012, 22:23
FrozenGraveyard
Membro Honorário I
Introdução
Este script reproduz o sistema de Transformações em Dragão do jogo Breath of Fire 3.
Nele você podia combinar vários "Genes" para formar combições diferentes.
Corrigi vários bugs, além de ter melhorado vários aspéctos do menu de seleção e das transformações em si.
Características
• Adiciona um sistema de transformação em Dragão
• Correção de vários bugs e melhorias em relação ao Original para VX
Screenshots
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Como usar
Para instalá-lo, apenas cole o script acima do main.
ÍCONES DOS GENES
Os ícones dos genes devem estar na pasta Icons do seu projeto, e devem ter o mesmo nome do Gene + "_gene"
Ex.:
Fusion_gene
Infinity_gene
Você pode deixa-los sem ícones também caso queira
ADIQUIRINDO GENES
Para adicionar um gene a lista de genes do grupo, basta usar o comando de eventos "Chama Script" e adicionar nele o seguinte comando:
Onde ID é a ID do gene
Outras configurações podem ser encontradas no "module Dragon_Config"
Demo
Dragon Genes XP.rar
Script
Perguntas Frequentes
Créditos e Agradecimentos
•Feito por Atoa
•Original para VX por TywinLannister
Este script reproduz o sistema de Transformações em Dragão do jogo Breath of Fire 3.
Nele você podia combinar vários "Genes" para formar combições diferentes.
Corrigi vários bugs, além de ter melhorado vários aspéctos do menu de seleção e das transformações em si.
Características
• Adiciona um sistema de transformação em Dragão
• Correção de vários bugs e melhorias em relação ao Original para VX
Screenshots
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Como usar
Para instalá-lo, apenas cole o script acima do main.
ÍCONES DOS GENES
Os ícones dos genes devem estar na pasta Icons do seu projeto, e devem ter o mesmo nome do Gene + "_gene"
Ex.:
Fusion_gene
Infinity_gene
Você pode deixa-los sem ícones também caso queira
ADIQUIRINDO GENES
Para adicionar um gene a lista de genes do grupo, basta usar o comando de eventos "Chama Script" e adicionar nele o seguinte comando:
- Código:
$dragon_genes.gain_gene(ID)
Onde ID é a ID do gene
Outras configurações podem ser encontradas no "module Dragon_Config"
Demo
Dragon Genes XP.rar
Script
- Código:
#==============================================================================
# Dragon Genes XP
# Por Atoa
# Baseado no Original para VX por TywinLannister
#==============================================================================
=begin
Este é sistema de transformação em dragão ao estilo Breath of Fire 3
Nele você deve combinar nos "Genes" para gerar diversas transformações.
Todas as configurações dos genes podem ser feitas no "module Dragon_Config"
#==============================================================================
# ÍCONES DOS GENES
#==============================================================================
Os ícones dos genes devem estar na pasta Icons do seu projeto, e devem ter
o mesmo nome do Gene + "_gene"
Ex.:
Fusion_gene
Infinity_gene
Você pode deixa-los sem ícones também caso queira
#==============================================================================
# ADIQUIRINDO GENES
#==============================================================================
Para adicionar um gene a lista de genes do grupo, basta usar o comando de eventos
"Chama Script" e adicionar nele o seguinte comando:
$dragon_genes.gain_gene(ID)
Onde ID é a ID do gene
Outras configurações podem ser encontradas no "module Dragon_Config"
=end
#==============================================================================
# ** Dragon_Config
#==============================================================================
module Dragon_Config
# Não Altere estas Linhas
Genes = []
Combinations = []
Fusion_Skills = []
# Não altere estas linhas
# Compatibilidade com o SBL deixe true apenas se estiver usando o script
# de Batalha Lateral XP
Dragon_Gene_Side_Battle = false
# Configuração Padrão
Default_Dragon_State_ID = 17 # ID Padrão do efeito de dragão
Default_Dragon_Graphic = "Dragon1" # Nome Padrão do Gráfico de Dragão
Default_Dragon_Color = 0 # Cor Padrão do Gráfico de Dragão
Default_Dragon_Name = "Whelp" # Nome Padrão para as transformações
# Os valores padrão são usados caso algum dos valores sejam nulos mesmo após
# a combinação ser completada.
# Configurações de Animação
Accession_Skil_ID = 82 # ID da Habilidade de Transformação
Reverse_Skil_ID = 83 # ID da Habilidade de Reverter forma
Accession_Anim_ID = 2 # ID da Animação de Transformação
Reverse_Anim_ID = 1 # ID da Animação de Reverter forma
# Configurações de Texto
Confirm_Opition = "Confirmar"
Clear_Opition = "Limpar"
SP_Cost_text = "Custo de SP:"
SP_Drain_text = "SP"
# Diferente dos outros Genes, o Fusion gene tem um funcionamento difrente.
# com ele a transformação ganha habilidades de acordo com os outros membros
# do grupo, por isto o nome dele deve ser definido separadamente
Fusion = "Fusion"
# Configuração dos Genes
#[ID, Forma, Nome do Gene, Nome da Forma, Custo de SP, Efeitos, Habilidades, Gráfico, Cor, Descrição]
Genes[0] = [ 0, true, "Flame", nil, 50, 18, [7,8,84], nil,220,"Gene do Fogo"]
Genes[1] = [ 1, true, "Frost", nil, 50, 19, [10,11,84], nil, 70,"Gene do Gelo"]
Genes[2] = [ 2, true, "Thunder", nil, 50, 20, [13,14,84], nil,270,"Gene do Trovão"]
Genes[3] = [ 3, true, "Shadow", nil, 50, 21, [28,29,84], nil,150,"Gene Sombrio"]
Genes[4] = [ 4, true,"Radiance", nil, 50, 22, [25,26,84], nil, 30,"Gene Sagrado"]
Genes[5] = [ 5,false,"Eldritch", nil,130, 23,[2,33,68,84], nil,nil,"Gene que aumenta o Poder Mágico"]
Genes[6] = [ 6,false, "Force", nil, 80, 24, [84], nil,nil,"Gene que aumenta a Força"]
Genes[7] = [ 7,false, "Thorn", nil, 80, 25, [84], nil,nil,"Gene que aumenta todos Atributos"]
Genes[8] = [ 8, true,"Defender", "Dragon", 80, 26, [54,84],"Dragon2",nil,"Gene que garante a forma de Dragão"]
Genes[9] = [ 9, true, "Miracle","Behemoth",160, 27, [19,20,84],"Dragon3",nil,"Gene que enfatiza o tamanho"]
Genes[10] = [10, true, "Warrior", "Warrior", 80, 28, [53,57],"Dragon4",nil,"Gene do guerreiro"]
Genes[11] = [11, true, "Trance", nil, 80, 29, [84], nil,nil,"Quando combinado.... ????"]
Genes[12] = [12, true, Fusion, "Hybrid", 80, 30, [],"Dragon5",210,"Funde com o poder dos aliados"]
Genes[13] = [13, true,"Infinity", "Kaiser",400, 31, [68,true],"Dragon7", 0,"Gene definitivo"]
# ID = ID do Gene.
# Forma = true/false. se for true, a aparência muda quando este gene for usado
# deve ser true caso você queira que o gene altere a cor e/ou o grafico.
# Nome do Gene = Nome do Gene na tela de Seleção, o nome do gráfico do ícone
# do gene depende deste nome.
# Nome da Forma = Nome da transformação, se for nil a tranformação "herda" o
# nome das formas dos outros genes usados
# Custo de SP = Custo em SP para se usar a transformação
# Efeito = ID do Efeito causado no usuário, é atravez dos efeitos que se
# define os bonus de atributos de cada cada combinação, se for nil, nenhum
# efeito é causado
# Habilidades = ID das habilidades, devem sempre estar em colchetes [], você
# pode colocar "true" ao invez de um valor numerico, desta forma a
# transformação irá "herdar" todas skills do personagem.
# Gráfico = nome do arquivo de gráfico de char/battler, se for igual a nil,
# a transformação não tem gráfico específico.
# Dica: deixe os graficos dos dragões normais todos com a mesma cor, assim
# quando usar um gene elemental (que so muda a cor) a cor será a mesma
# independente da forma.
# Cor = Modificação da Cor, deve ser um valor entre 0 e 360. se for igual a nil
# não ocorre mudanã de cores.
# Descrição = descrição do gene na janela de batalha.
# Configuração das Combinações Especiais de Genes
#[ID, Troca de Skill, Forma, Nome da Combinação, Genes, Efeito, Habilidades, Gráfico, Cor]
Combinations[0] = [0,false,false, "Dragon", [0,5],nil, [9], nil,nil]
Combinations[1] = [1,false,false, "Dragon", [1,5],nil, [12], nil,nil]
Combinations[2] = [2,false,false, "Dragon", [2,5],nil, [15], nil,nil]
Combinations[3] = [3,false,false, "Dragon", [3,5],nil, [30], nil,nil]
Combinations[4] = [4,false,false, "Dragon", [4,5],nil, [27], nil,nil]
Combinations[5] = [5,false, true, "Dragon", [0,3],nil, [31],"Dragon2",180]
Combinations[6] = [6, true, true, "Trygon", [0,1,2], 32, [8,11,15,84],"Dragon2",270]
Combinations[7] = [7, true, true, "Myrmidon", [5,10], 33,[57,59,60,63,67],"Dragon4",300]
Combinations[8] = [8, true, true, "Tiamat", [3,11], 34,[30,34,36,40,84],"Dragon6", 0]
Combinations[9] = [9, true, true, "Kaiser",[4,11,13], 35, [68,true],"Dragon7", 30]
# ID = ID do Gene.
# Troca de Skill = se true, todas as habilidades de outros genes não ignoradas
# e apenas as habilidades da combinação serão ganhas
# Forma = true/false. se for true, a aparência muda quando esta combinação for usada
# deve ser true caso você queira que a combinação altere a cor e/ou o grafico.
# Genes = ID dos Genes necessários para a combinação, devem sempre esta dentro
# de [] e as IDs devem ser separadas por virgula.
# Nome da Combinação = Nome da transformação, se for nil a tranformação "herda" o
# nome das formas dos outros genes usados
# Efeito = ID do Efeito causado no usuário, é atravez dos efeitos que se
# define os bonus de atributos de cada cada combinação, se for nil, nenhum
# efeito é causado
# Habilidades = ID das habilidades, devem sempre estar em colchetes [], você
# pode colocar "true" ao invez de um valor numerico, desta forma a
# transformação irá "herdar" todas skills do personagem.
# Gráfico = nome do arquivo de gráfico de char/battler, se for igual a nil,
# a transformação não tem gráfico específico.
# Dica: deixe os graficos dos dragões normais todos com a mesma cor, assim
# quando usar um gene elemental (que so muda a cor) a cor será a mesma
# independente da forma.
# Cor = Modificação da Cor, deve ser um valor entre 0 e 360. se for igual a nil
# não ocorre mudanã de cores.
# Habilidades do Fusion Gene
# Fusion_Skills[ID] = [X,Y,Z]
# ID = ID do personagem
# X,Y,Z = ID das habilidades ganhas
Fusion_Skills[1] = [57,58]
Fusion_Skills[2] = [61,62]
Fusion_Skills[3] = [65,66]
Fusion_Skills[4] = [69,70]
Fusion_Skills[5] = [73,74]
Fusion_Skills[6] = [77,78]
Fusion_Skills[7] = [1,2,4]
Fusion_Skills[8] = [29,17,21]
end
#==============================================================================
# ** Scene_Title
#==============================================================================
class Scene_Title
#--------------------------------------------------------------------------
attr_accessor :last_gene_id
#--------------------------------------------------------------------------
alias tywin_dragon_gene_cng command_new_game
def command_new_game
tywin_dragon_gene_cng
$dragon_gene_script = Dragon_Gene_Script.new
$dragon_gene_script.main
end
end
#==============================================================================
# ** Dragon_Gene_Script
#==============================================================================
class Dragon_Gene_Script
#--------------------------------------------------------------------------
def main
$dragon_genes = Dragon_Genes.new
$dragon_genes.set_up_genes
end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_Save < Scene_File
#--------------------------------------------------------------------------
alias tywin_dragon_genes_wsd write_save_data
def write_save_data(file)
tywin_dragon_genes_wsd(file)
Marshal.dump($dragon_genes, file)
end
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_Load < Scene_File
#--------------------------------------------------------------------------
alias tywin_dragon_genes_rsd read_save_data
def read_save_data(file)
tywin_dragon_genes_rsd(file)
$dragon_genes = Marshal.load(file)
end
end
#==============================================================================
# ** Gene_Combination
#==============================================================================
class Gene_Combination
#--------------------------------------------------------------------------
attr_accessor :combination_id
attr_accessor :skill_swap
attr_accessor :combination_form
attr_accessor :combination_name
attr_accessor :name
attr_accessor :genes
attr_accessor :state_id
attr_accessor :skills_to_learn
attr_accessor :dragon_graphic
attr_accessor :dragon_graphic_hue
#--------------------------------------------------------------------------
def initialize (combination_id, skill_swap, combination_form, combination_name, genes, state, skills_to_learn, dragon_graphic, dragon_graphic_hue)
@combination_id = combination_id
@skill_swap = skill_swap
@combination_form = combination_form
@combination_name = combination_name
@genes = genes
@state_id = state
@skills_to_learn = skills_to_learn
@dragon_graphic = dragon_graphic
@dragon_graphic_hue = dragon_graphic_hue
end
#--------------------------------------------------------------------------
def get_genes
return @genes
end
#--------------------------------------------------------------------------
def get_name
return @name
end
end
#==============================================================================
# ** Dragon_Gene
#==============================================================================
class Dragon_Gene
#--------------------------------------------------------------------------
attr_accessor :gene_id
attr_accessor :name
attr_accessor :gene_form
attr_accessor :gene_name
attr_accessor :form_name
attr_accessor :sp_cost
attr_accessor :description
attr_accessor :state_id
attr_accessor :skills_to_learn
attr_accessor :dragon_graphic
attr_accessor :dragon_graphic_hue
#--------------------------------------------------------------------------
def initialize (gene_id, gene_form, gene_name, form_name, sp_cost, state, skills_to_learn, dragon_graphic, dragon_graphic_hue, description)
@gene_id = gene_id
@gene_form = gene_form
@gene_name = @name = gene_name
@form_name = form_name
@sp_cost = sp_cost
@state_id = state
@skills_to_learn = skills_to_learn
@dragon_graphic = dragon_graphic
@dragon_graphic_hue = dragon_graphic_hue
@description = description
end
end
#==============================================================================
# ** Dragon_Genes
#==============================================================================
class Dragon_Genes
#--------------------------------------------------------------------------
include Dragon_Config
#--------------------------------------------------------------------------
attr_accessor :genes
attr_accessor :gene_combinations
attr_accessor :genes_aquired
#--------------------------------------------------------------------------
def initialize
@data = []
end
#--------------------------------------------------------------------------
def [](gene_id)
if @data[gene_id] == nil
@data[gene_id] = Dragon_Gene.new(gene_id)
end
return @data[gene_id]
end
#--------------------------------------------------------------------------
def set_up_genes
@genes = []
@genes_aquired = []
@gene_combinations = []
for g in Genes
@genes[g[0]] = Dragon_Gene.new(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8],g[9])
end
for g in Combinations
@gene_combinations[g[0]] = Gene_Combination.new(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8])
end
@genes = @genes.compact
@gene_combinations = @gene_combinations.compact
end
#--------------------------------------------------------------------------
def gain_gene(gene_id)
@genes_aquired.push(@genes[gene_id])
@genes_aquired.sort! {|a, b| a.gene_id <=> b.gene_id}
@genes_aquired = @genes_aquired.compact
@genes_aquired = @genes_aquired.uniq
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
include Dragon_Config
#--------------------------------------------------------------------------
alias tywin_battle_end battle_end
def battle_end(result)
for battler in $game_party.actors
battler.revert_form if battler.in_dragon_form
end
tywin_battle_end(result)
end
#--------------------------------------------------------------------------
alias tywin_update_phase3_skill_select update_phase3_skill_select
def update_phase3_skill_select
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
if @skill.id == Accession_Skil_ID
start_gene_selection
return
elsif @skill.id == Reverse_Skil_ID
@active_battler.current_action.skill_id = Reverse_Skil_ID
end_skill_select
phase3_next_actor
return
end
end
tywin_update_phase3_skill_select
end
#--------------------------------------------------------------------------
alias tywin_update_update_phase3 update_phase3
def update_phase3
if @gene_window != nil
update_gene_selection
end
tywin_update_update_phase3
end
#--------------------------------------------------------------------------
def start_gene_selection
@old_index = @skill_window.index
end_skill_select
@gene_window = Window_Gene_Select.new(0, 64, 340, 256, @active_battler)
@gene_window.help_window = @help_window
@selected_genes = Window_Selected_Genes.new(340, 64, 300, 256)
@actor_command_window.active = false
@actor_command_window.visible = false
@gene_window.active = true
@total_sp_cost = 0
@active_battler_window.visible = false if Dragon_Gene_Side_Battle
end
#--------------------------------------------------------------------------
def update_gene_selection
@gene_window.active = true
@gene_window.update
@help_window.update
@selected_genes.update
@gene = @gene_window.gene
if Input.trigger?(Input::B)
@chosen_genes = @selected_genes.get_selected_genes
if @chosen_genes.size <= 0
@status_window.refresh
end_gene_selection
@active_battler.current_action.kind = 1
start_skill_select
@skill_window.index = @old_index
else
@selected_genes.remove_last_gene
@gene_window.remove_last_gene
@status_window.refresh
@gene_window.refresh
@selected_genes.refresh
end
elsif Input.trigger?(Input::C)
if @gene != nil
@active_battler.last_gene_id = @gene.id
end
if @active_battler.gene_can_use?(@gene)
determine_gene(@gene)
end
end
end
#--------------------------------------------------------------------------
def end_gene_selection
if @gene_window != nil
@gene_window.dispose
@gene_window = nil
@help_window.visible = false
@selected_genes.dispose
@selected_genes = nil
end
end
#--------------------------------------------------------------------------
def determine_gene(gene)
@total_sp_cost = 0
if gene == Clear_Opition
@selected_genes.clear_selected_genes
@gene_window.clear_selected_genes
elsif gene == Confirm_Opition
@chosen_genes = @selected_genes.get_selected_genes
for g in @chosen_genes
@total_sp_cost += g.sp_cost
end
if @chosen_genes.size != 0 and @active_battler.sp > @total_sp_cost
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.skill_id = Accession_Skil_ID
@active_battler.memorize_total_cost = @total_sp_cost
@active_battler.memorize_dragon_sp_damage = @selected_genes.get_sp_cost
@active_battler.memorize_transformation = @selected_genes.get_selected_genes
end_gene_selection
@actor_command_window.active = true
@actor_command_window.visible = true
phase3_next_actor
else
$game_system.se_play($data_system.buzzer_se)
end
else
@chosen_genes = @selected_genes.get_selected_genes
if @chosen_genes.size > 0 and @chosen_genes.include?(gene)
@selected_genes.remove_gene(gene)
@gene_window.remove_gene(gene)
elsif @chosen_genes.size < 3 and !@chosen_genes.include?(gene) and @gene_window.enough_sp?(gene.sp_cost)
@selected_genes.add_gene(gene)
@gene_window.add_gene(gene)
else
$game_system.se_play($data_system.buzzer_se)
end
end
if gene != Confirm_Opition
@status_window.refresh
@gene_window.refresh
@selected_genes.refresh
end
end
#--------------------------------------------------------------------------
alias tywin_make_skill_action_result make_skill_action_result
def make_skill_action_result
@skill = $data_skills[@active_battler.current_action.skill_id]
if @skill.id == Accession_Skil_ID
dragon_transformation
return
elsif @skill.id == Reverse_Skil_ID
revert_form
return
end
tywin_make_skill_action_result
end
#--------------------------------------------------------------------------
def revert_form
@status_window.refresh
@help_window.set_text(@skill.name, 1)
@animation1_id = Reverse_Anim_ID
@active_battler.revert_form
end
#--------------------------------------------------------------------------
def dragon_transformation
@active_battler.sp -= @active_battler.memorize_total_cost
@active_battler.calculate_sp_damage(@active_battler.memorize_dragon_sp_damage)
dragon_name = @active_battler.dragon_name(@active_battler.memorize_transformation)
@status_window.refresh
@help_window.set_text(dragon_name, 1)
@animation1_id = Accession_Anim_ID
set_target_battlers(7)
@active_battler.transform_into_dragon(@active_battler.memorize_transformation)
end
#--------------------------------------------------------------------------
alias tywin_update_phase4_step6 update_phase4_step6
def update_phase4_step6
if @active_battler.is_a?(Game_Actor) && @active_battler.in_dragon_form
if @active_battler.just_transformed
@active_battler.just_transformed = false
else
if @active_battler.dragon_sp_damage < @active_battler.sp
if Dragon_Gene_Side_Battle
@active_battler.sp_damage = true
damage = @active_battler.dragon_sp_damage
@active_battler.sp -= damage
@spriteset.set_damage_pop(true,@active_battler.index, damage)
wait(30)
else
@active_battler.damage = @active_battler.dragon_sp_damage.to_s + " "+ SP_Drain_text
@active_battler.damage_pop = true
@active_battler.sp -= @active_battler.dragon_sp_damage
end
else
@active_battler.animation_id = Reverse_Anim_ID
@active_battler.revert_form
end
end
end
tywin_update_phase4_step6
for actor in $game_party.actors
actor.revert_form if actor.dead? and actor.in_dragon_form
end
end
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
include Dragon_Config
#--------------------------------------------------------------------------
attr_accessor :last_gene_id
attr_accessor :dragon_sp_damage
attr_accessor :memorize_dragon_sp_damage
attr_accessor :memorize_transformation
attr_accessor :memorize_total_cost
attr_accessor :dragon_name
attr_accessor :in_dragon_form
attr_accessor :just_transformed
#--------------------------------------------------------------------------
alias tywin_initialize initialize
def initialize(actor_id)
tywin_initialize(actor_id)
@last_gene_id = 0
@skills_to_remember = []
@skills_to_forget = []
@dragon_sp_damage = 0
@old_character_name = @character_name
@old_character_hue = @character_hue
@old_battler_name = @battler_name
@old_battler_hue = @battler_hue
@in_dragon_form = @just_transformed = false
end
#--------------------------------------------------------------------------
def transform_into_dragon(genes)
@in_dragon_form = true
@just_transformed = true
@skills_to_remember = self.skills.dup
self.forget_all_skills
self.transform_into_multi_gene_dragon(genes)
self.forget_skill(Accession_Skil_ID)
self.learn_skill(Reverse_Skil_ID)
@skills_to_forget = self.skills.dup
end
#--------------------------------------------------------------------------
def transform_into_multi_gene_dragon(genes)
genes = genes.sort! {|a, b| a.gene_id <=> b.gene_id}
combinations = $dragon_genes.gene_combinations
combination_in_use = combination_test(genes, combinations)
@dragon_graphic = @gene_state = @dragon_hue = nil
if combination_in_use == nil
for gene in genes
@gene_state = gene.state_id if gene.state_id != nil
self.add_state(@gene_state) if @gene_state != nil
if gene.gene_form
@dragon_graphic = gene.dragon_graphic unless gene.dragon_graphic == nil
@dragon_hue = gene.dragon_graphic_hue unless gene.dragon_graphic_hue == nil
end
end
@gene_state = @gene_state == nil ? Default_Dragon_State_ID : @gene_state
@dragon_graphic = @dragon_graphic == nil ? Default_Dragon_Graphic : @dragon_graphic
@dragon_hue = @dragon_hue == nil ? Default_Dragon_Color : @dragon_hue
dragon_graphic_change(@dragon_graphic, @dragon_hue, @dragon_graphic, @dragon_hue)
self.learn_skills_multi_gene_no_combination(genes)
else
for combination in combination_in_use
for gene in genes
unless combination.genes.include?(gene.gene_id)
@gene_state = gene.state_id if gene.state_id != nil
self.add_state(@gene_state) if @gene_state != nil
if gene.gene_form
@dragon_graphic = gene.dragon_graphic unless gene.dragon_graphic == nil
@dragon_hue = gene.dragon_graphic_hue unless gene.dragon_graphic_hue == nil
end
end
end
end
for combination in combination_in_use
@gene_state = combination.state_id if combination.state_id != nil
self.add_state(@gene_state) if @gene_state != nil
if combination.combination_form
@dragon_graphic = combination.dragon_graphic unless combination.dragon_graphic == nil
@dragon_hue = combination.dragon_graphic_hue unless combination.dragon_graphic_hue == nil
end
end
@gene_state = @gene_state == nil ? Default_Dragon_State_ID : @gene_state
@dragon_graphic = @dragon_graphic == nil ? Default_Dragon_Graphic : @dragon_graphic
@dragon_hue = @dragon_hue == nil ? Default_Dragon_Color : @dragon_hue
dragon_graphic_change(@dragon_graphic, @dragon_hue, @dragon_graphic, @dragon_hue)
self.learn_dragon_skills_multi_gene(combination_in_use, genes)
end
end
#--------------------------------------------------------------------------
def dragon_graphic_change(dragon_char, dragon_char_hue, dragon_battler, dragon_battler_hue)
@character_name = dragon_char
@character_hue = dragon_char_hue
@battler_name = dragon_battler
@battler_hue = dragon_battler_hue
end
#--------------------------------------------------------------------------
def dragon_name(genes)
genes = genes.sort! {|a, b| a.gene_id <=> b.gene_id}
combinations = $dragon_genes.gene_combinations
combination_in_use = combination_test(genes, combinations)
@dragon_name = nil
if combination_in_use == nil
for gene in genes
@dragon_name = gene.form_name unless gene.form_name == nil
end
@dragon_name = @dragon_name == nil ? Default_Dragon_Name : @dragon_name
return @dragon_name
else
for combination in combination_in_use
for gene in genes
unless combination.genes.include?(gene.gene_id)
@dragon_name = gene.form_name unless gene.form_name == nil
end
end
end
for combination in combination_in_use
@dragon_name = combination.combination_name unless combination.combination_name == nil
end
@dragon_name = @dragon_name == nil ? Default_Dragon_Name : @dragon_name
return @dragon_name
end
end
#--------------------------------------------------------------------------
def combination_test(genes, combinations)
gene_combination = []
for combination in combinations
combination_size = 0
genes_id = []
for gene in genes
genes_id.push(gene.gene_id)
end
for gene in combination.genes
combination_size += 1 if genes_id.include?(gene)
end
gene_combination.push(combination) if combination_size == combination.genes.size
end
return gene_combination unless gene_combination.empty?
return nil
end
#--------------------------------------------------------------------------
def all_genes_in_combination?(genes, genes_needed)
id = []
for gene in genes
if genes_needed.include?(gene.gene_id)
is_a_combination.push(true)
else
is_a_combination.push(false)
end
end
return false if is_a_combination.include?(false)
return true
end
#--------------------------------------------------------------------------
def gene_can_use?(gene)
return true if gene == Clear_Opition
return true if gene == Confirm_Opition
return false unless $dragon_genes.genes_aquired.include?(gene)
return false if gene.sp_cost > sp
return true
end
#--------------------------------------------------------------------------
def forget_all_skills
actor_skills = self.skills
for skill in actor_skills
self.forget_skill(skill)
end
end
#--------------------------------------------------------------------------
def learn_dragon_skills_multi_gene(combination_in_use, genes)
for combination in combination_in_use
for gene in genes
unless combination.genes.include?(gene.gene_id)
learn_skills_multi_gene_no_combination(gene.to_a)
end
end
end
for combination in combination_in_use
if combination.skill_swap == false
for id in combination.skills_to_learn
if id == true
for skill in @skills_to_remember
self.learn_skill(skill)
self.forget_skill(Accession_Skil_ID)
end
else id != nil
self.learn_skill(id)
end
end
end
end
for combination in combination_in_use
if combination.skill_swap
self.forget_all_skills
for id in combination.skills_to_learn
if id == true
for skill in @skills_to_remember
self.learn_skill(skill)
self.forget_skill(Accession_Skil_ID)
end
else id != nil
self.learn_skill(id)
end
end
end
end
end
#--------------------------------------------------------------------------
def learn_skills_multi_gene_no_combination(genes)
for gene in genes
if gene.name == Fusion
self.learn_skills_fusion($game_party.actors)
else
for id in gene.skills_to_learn
if id == true
for skill in @skills_to_remember
self.learn_skill(skill)
self.forget_skill(Accession_Skil_ID)
end
else id != nil
self.learn_skill(id)
end
end
end
end
end
#--------------------------------------------------------------------------
def learn_skills_fusion(members)
@actor_ids = []
for member in members
@actor_ids.push(member.id) unless member.id == self.id
end
for f in 0...Fusion_Skills.size
if @actor_ids.include?(f)
for s in Fusion_Skills[f]
self.learn_skill(s)
end
end
end
end
#--------------------------------------------------------------------------
def revert_form
@in_dragon_form = @just_transformed = false
@character_name = @old_character_name
@character_hue = @old_character_hue
@battler_name = @old_battler_name
@battler_hue = @old_battler_hue
self.remove_dragon_states
self.relearn_skills
end
#--------------------------------------------------------------------------
def remove_dragon_states
for gene in $dragon_genes.genes
if gene.state_id != nil
self.remove_state(gene.state_id)
end
end
for combination in $dragon_genes.gene_combinations
if combination.state_id != nil
self.remove_state(combination.state_id)
end
end
end
#--------------------------------------------------------------------------
def relearn_skills
for id in @skills_to_forget
self.forget_skill(id)
end
for id in @skills_to_remember
self.learn_skill(id)
end
end
#--------------------------------------------------------------------------
def calculate_sp_damage(total_gene_cost)
self.dragon_sp_damage = total_gene_cost / 3 + 1
end
end
#==============================================================================
# ** Window_Gene_Select
#==============================================================================
class Window_Gene_Select < Window_Selectable
#--------------------------------------------------------------------------
include Dragon_Config
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.z = 2000 if Dragon_Gene_Side_Battle
@actor = actor
@column_max = 1
@chosen_genes = []
@number_of_genes = 0
self.index = 0
refresh
end
#--------------------------------------------------------------------------
def gene
return @data[self.index]
end
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for gene in $dragon_genes.genes_aquired
if gene != nil
@data.push(gene)
end
end
@data.push(Confirm_Opition)
@data.push(Clear_Opition)
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
def draw_item(index)
gene = @data[index]
if gene != nil
enabled = @actor.gene_can_use?(gene)
enabled = gene_selected?(gene) if enabled
enabled = max_genes_selected? if enabled
enabled = enough_sp?(gene.sp_cost) if enabled and gene != nil and gene != Clear_Opition and gene != Confirm_Opition
x = 4
y = index * 32
enabled = (@number_of_genes == 0 ? false : true) if gene == Confirm_Opition
enabled = true if gene == Clear_Opition
draw_item_name(gene, x, y, enabled)
unless gene == Confirm_Opition or gene == Clear_Opition
self.contents.draw_text(x, y, self.width - 48, 32, gene.sp_cost.to_s, 2)
end
end
end
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true)
if item == Confirm_Opition
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 4 , y, 172, 32, Confirm_Opition)
elsif item == Clear_Opition
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 4 , y, 172, 32, Clear_Opition)
elsif item != nil
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
begin
gene = RPG::Cache.icon(item.name + "_gene")
self.contents.blt(x + 4, y + 4, gene, Rect.new(0, 0, 24, 24), enabled ? 255 : 128)
self.contents.draw_text(x + 32, y, 172, 32, item.name)
rescue
self.contents.draw_text(x + 4, y, 172, 32, item.name)
end
end
end
#--------------------------------------------------------------------------
def update_help
if gene == Confirm_Opition or gene == Clear_Opition
@help_window.set_text(gene == nil ? "" : "")
else
@help_window.set_text(gene == nil ? "" : gene.description)
end
end
#--------------------------------------------------------------------------
def add_gene(gene)
@chosen_genes.push(gene)
@number_of_genes += 1
end
#--------------------------------------------------------------------------
def remove_gene(gene)
@chosen_genes.delete(gene)
@number_of_genes -= 1
end
#--------------------------------------------------------------------------
def remove_last_gene
@chosen_genes.pop
@number_of_genes -= 1
end
#--------------------------------------------------------------------------
def clear_selected_genes
@chosen_genes.clear
@number_of_genes = 0
end
#--------------------------------------------------------------------------
def gene_selected?(gene)
return false if @chosen_genes.include?(gene)
return true
end
#--------------------------------------------------------------------------
def max_genes_selected?
return false if @number_of_genes >= 3
return true
end
#--------------------------------------------------------------------------
def enough_sp?(gene = 0)
total_sp = gene
for gene in @chosen_genes
total_sp += gene.sp_cost
end
return total_sp <= @actor.sp
end
end
#==============================================================================
# ** Window_Selected_Genes
#==============================================================================
class Window_Selected_Genes < Window_Base
#--------------------------------------------------------------------------
include Dragon_Config
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.z = 2000 if Dragon_Gene_Side_Battle
@genes = []
@sp_cost = 0
@column_max = 1
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(0, 0, 160, 32, SP_Cost_text)
txt_position = self.contents.text_size(SP_Cost_text + " ").width
self.contents.draw_text(txt_position, 0, 100, 32, @sp_cost.to_s)
@item_max = @genes.size
x = 0
y = 32
for i in 0...@item_max
draw_item_name(@genes[i], x, y)
y += 32
end
end
#--------------------------------------------------------------------------
def draw_item_name(item, x, y)
begin
gene = RPG::Cache.icon(item.name + "_gene")
self.contents.blt(x + 4, y + 4, gene, Rect.new(0, 0, 24, 24),255)
self.contents.draw_text(x + 32 , y, 200, 32, item.name)
rescue
self.contents.draw_text(x + 4 , y, 200, 32, item.name)
end
end
#--------------------------------------------------------------------------
def add_gene(gene)
@sp_cost += gene.sp_cost
@genes.push(gene)
end
#--------------------------------------------------------------------------
def remove_gene(gene)
@sp_cost -= gene.sp_cost
@genes.delete(gene)
end
#--------------------------------------------------------------------------
def remove_last_gene
gene = @genes.pop
@sp_cost -= gene.sp_cost
@genes.delete(gene)
end
#--------------------------------------------------------------------------
def get_sp_cost
return @sp_cost
end
#--------------------------------------------------------------------------
def clear_selected_genes
@genes.clear
@sp_cost = 0
end
#--------------------------------------------------------------------------
def get_selected_genes
return @genes
end
end
Perguntas Frequentes
Pergunta:Fuincona no Sistema de Batalha Lateral?
Resposta:Sim, basta você mudar no inicio do script a linha "Dragon_Gene_Side_Battle = false" para "Dragon_Gene_Side_Battle = true"
Créditos e Agradecimentos
•Feito por Atoa
•Original para VX por TywinLannister