Templo RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

1Dragon Gene XP Empty Dragon Gene XP 12/8/2012, 22:23

FrozenGraveyard

FrozenGraveyard
Membro Honorário I
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:

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

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos