Versão XP por Atoa
Original para VX por TywinLannister
Introdução
Esse script permite adicionar um sistema de aprendizado de skill similar ao do Breath of Fire 4: Você pode aprender determinadas skill do inimigo se o personagem estiver defendendo.
Fiz algumas modificações para que o sistema ficasse ainda mais parecido com a versão BoF:
- Um personagem que já tenha a skill (por exemplo aprendeu ela atravéz de ganho de níveis), não aprenderá a skill (no script original ele "aprendia" a skill, mesmo que ele já tivesse, o que impedia que outros membros pudessem aprender)
- As habilidades que podem ser aprendidas aparecem com nome em azul até que elas tenham sido efetivamente aprendidas.
- Agora é possível definir que personagem pode ou não pode aprender skills dessa maneira.
- Também é possivel selecionar uma animação para ser exibida quando o personagem aprender uma skill com esse sistema.
Características
• Permite aprender Habilidades dos inimigos quando defendendo
• Habilidades que podem ser aprendidas aparecem com nome destacado
• Possivel definir quais personagens podem aprender skills com este sistema
• Pode escolher uma animação para ser exibida quando o personagem aprender uma skill com esse sistema
Screenshots
Como usar
Para instalá-lo, apenas cole o script acima do main.
Este script é muito simples de se usar, Você deve criar um atributo com ID igual ao valor em "Learn_Skill_Element" na aba de sistemas.
Depois deve adicioná-lo às habilidades que você deseja que possam ser aprendidas
Você pode alterar as configurações no "module Atoa" dentro do próprio script.
Demo
Não necessita de Demo
Script
- Código:
#==============================================================================
# ** Aprender Habilidades do Inimigo
#------------------------------------------------------------------------------
# Original para VX por TywinLannister
# Versão XP por Atoa
#==============================================================================
# Este script permite que o personagem aprenda determinadas skills
# usadas por inimigosse ele estiver defendendo
# Fiz algumas modificações:
# - o personagem não "aprende" a habilidade
# se ele já possuí-la (o que tiraria a chance de outro aprende-la)
# - as habilidades que podem ser aprendidas aparecem com nome em
# azul quando usadas, voltando a cor original depois de aprendidas
# - possivel definir que personagens podem aprender habilidades
# desta maneira
# - possivel atribuir uma animação que indica qual personagem
# aprendeu a skill
#==============================================================================
# Usando o script:
# Este script é muito simples de se usar, Você deve criar um atributo
# com ID igual ao valor em "Learn_Skill_Element" na aba de sistemas.
# Depois deve adicioná-lo às habilidades que você deseja que
# possam ser aprendidas.
# Outras configurações podem ser feitas no "module Atoa"
#
# IMPORTANTE:
# Primeiro o sistema verifica a chance de aprender a skill,
# se tiver sucesso, ele seleciona aleatóriamente um dos personagens
# que estiver defendendo, e após isso é que ele verifica se o
# personagem pode ou não aprender a skill.
# Por isso, mesmo que a chance esteja 100%, pode ocorrer de ninguém
# aprender a skill, pois o sistema selecionou alguém inapto a aprende-la.
#==============================================================================
module Atoa
# ID do atributo das habilidades que podem ser aprendidas
Learn_Skill_Element = 18
# Chande de aprender uma skill do inimigo
Chance_to_learn = 80
# Adicine as IDs dos personagens que podem aprender habilidades
Char_can_learn = [1,2,7,8]
# ID da animação que será mostrada ao aprender uma skill
# deixe = nil para que nenhuma animação seja mostrada
Learn_animation = 98
# Mudar cor do texto das habilidades que podem ser aprendias?
Change_Text_Color = true
# Transparência da Janela de aprendizado da Skill
Window_Opacity = 255
# Texto de Aprendizado da skill
Learn_Skill_Tex = "{actor} aprendeu {skill}"
end
#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
alias enemy_skills_initialize initialize
#--------------------------------------------------------------------------
attr_accessor :enemy_skills_learned
#--------------------------------------------------------------------------
def initialize
enemy_skills_initialize
@enemy_skills_learned = []
end
end
#==============================================================================
# ** Window_Learn_Skill
#==============================================================================
class Window_Learn_Skill < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = Atoa::Window_Opacity
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.draw_text(0, 0, width - 32, 32, $skill_text, 1)
end
end
#==============================================================================
# ** Window_Help
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
def set_text2(text, align = 0)
self.contents.clear
self.contents.font.color = Color.new(160, 192, 255, 255)
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
self.visible = true
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
def now_action
@now_action = $data_weapons[@active_battler.weapon_id] if @active_battler.current_action.kind == 0 and @active_battler.current_action.basic == 0
@now_action = $data_skills[@active_battler.current_action.skill_id] if @active_battler.current_action.kind == 1
@now_action = $data_items[@active_battler.current_action.item_id] if @active_battler.current_action.kind == 2
end
#--------------------------------------------------------------------------
alias enemy_skill_update_phase4_step3 update_phase4_step3
def update_phase4_step3
return if check_action_can_use
@help_window.set_text2(@skill.name, 1) if Atoa::Change_Text_Color and @skill.element_set.include?(Atoa::Learn_Skill_Element) and not $game_party.enemy_skills_learned.include?(@skill.id)
enemy_skill_update_phase4_step3
end
#--------------------------------------------------------------------------
alias skill_update_phase4 update_phase4_step6
def update_phase4_step6
skill_update_phase4
if @active_battler.current_action.kind == 1
defending_members = []
chance_to_learn = Atoa::Chance_to_learn
skill = $data_skills[@active_battler.current_action.skill_id]
if skill.element_set.include?(Atoa::Learn_Skill_Element)
unless $game_party.enemy_skills_learned.include?(skill.id)
for member in $game_party.actors
defending_members.push(member) if member.guarding?
end
end
end
if defending_members.size > 0
learn_chance = rand(100)
if learn_chance < chance_to_learn
member_to_learn = defending_members[rand(defending_members.size)]
unless member_to_learn.skill_learn?(skill.id)
if Atoa::Char_can_learn.include?(member_to_learn.id)
member_to_learn.animation_id = Atoa::Learn_animation unless Atoa::Learn_animation == nil
member_to_learn.learn_skill(skill.id)
$game_party.enemy_skills_learned.push(skill.id)
$skill_text = Atoa::Learn_Skill_Tex.dup
$skill_text.gsub!(/{actor}/i) {"#{member_to_learn.name}"}
$skill_text.gsub!(/{skill}/i) {"#{skill.name}"}
@window_learn_skill = Window_Learn_Skill.new
waiting = 0
loop do
Graphics.update
Input.update
@spriteset.update
@window_learn_skill.refresh
waiting += 1
break if (Input.trigger?(Input::C) and waiting > 30) or waiting > 100
end
@window_learn_skill.dispose
end
end
end
end
end
end
#--------------------------------------------------------------------------
def check_action_can_use
now_action
if @now_action.is_a?(RPG::Skill) and not @active_battler.skill_can_use?(@skill.id)
unless @active_battler.current_action.forcing
$game_temp.forcing_battler = nil
@phase4_step = 1
return true
end
end
if @now_action.is_a?(RPG::Item) and not $game_party.item_can_use?(@item.id)
@phase4_step = 1
return true
end
return false
end
end
Créditos e Agradecimentos
•Versão XP feita por Atoa
•Original para VX feita por TywinLannister