Blue, Geomancy E Level Skills
Publicado em 9 de dezembro de 2011.Blue, Geomancy E Level Skills é um script para o RPG Maker XP, feito por SephirothSpawn que incrementa bastante o sistema de habilidades (skills) em um jogo feito neste maker.
Blue Skills permitem que o herói aprenda novas skills quando o personagem é alvo de habilidade. Você pode controlar quais habilidades são Blue, quando os personagens podem aprendâ-las, que as classes a aprendem ou também você pode controlar manualmente os actors que aprendem os Blue Skills.
Geomancy dá aos personagens, habilidades determinadas pelo mapa atual ou tag do terreno. É customizável para cada actor mapa e terreno.
Level skills só vão fazer de alvo heróis que são divisíveis por este level. Ele lhe dá a opção de definir o nível de habilidades para todas as skills.
Níveis dos inimigos serão aleatoriamente definidos de acordo com a média do grupo ou de alguns poucos níveis. Se Dynamic Enemies System está presente, o nível é baseado disto.
Instruções: Coloque o script embaixo do SDK e acima do Main. O script tem maiores informações sobre como customizar os skills.
#==============================================================================
# ** Blue, Geomancy & Level Skills
#------------------------------------------------------------------------------
# SephirothSpawn
# Version 1
# 2006-08-24
#------------------------------------------------------------------------------
# * Description :
#
# Blue Skills Allow you to learn new skills when character is targeted by
# skill. You can control which skills are blue, when characters can learn
# blue skills, which classes learn blue skills or manually control the
# actors that learn blue skills.
#
# Geomancy will give characters skills determinded by the current map or
# terrain tags. Is customizable for each actor, map and terrain.
#
# Level skills will only target people that are divisable by that level.
# It gives you the option to set the skills level for any skills.
#
# Enemy Levels - Enemy Levels will be randomly set depending on average
# party levels give or take a few levels. If Dynamic Enemies
# System exist, the level is based off that.
#------------------------------------------------------------------------------
# * Instructions :
#
# Place The Script Below the SDK and Above Main.
# To Customize your skills, refer to the customization instructions.
#------------------------------------------------------------------------------
# * Customization :
#
# ** Blue Magic **
#
# Setting Up "Blue Skills"
# - Blue_Skills = [skill_id, skill_id, ...]
# Setting Up Actors That Learn Blue Skills
# - Blue_Skill_Actors = [actor_id, actor_id, ...]
# Setting Up Classes That Learn Blue Skills
# - Blue_Skill_Classes = [class_id, class_id, ...]
# Setting Specific Actor During Game Play to Learn Blue Skills
# - <game_actor>.learn_blue_skills = true (LEARN) or false (DON'T LEARN)
#
# ** Geomancy **
#
# Setting Up Map ID Skills (For Specific Actors)
# - Geomancy_Actor_Map_ID_Skills = {
# actor_id => { map_id => [skill_id, ...], ... },
# ...
# }
# Setting Up Terrain ID Skills (For Specific Actors)
# - Geomancy_Actor_Terrain_Skills = {
# actor_id => { terrain_id => [skill_id, ...], ...},
# ...
# }
# Setting Up Up Map ID Class Skills (For Specific Class)
# - Geomancy_Class_Map_ID_Skills = {
# class_id => { map_id => [skill_id, ...], ... },
# ...
# }
# Setting Up Terrain ID Skills (For Specific Class)
# - Geomancy_Class_Terrain_Skills = {
# class_id => { terrain_id => [skill_id, ...], ...},
# ...
# }
#
# ** Level Skills **
#
# Setting Up Skills That Use Level
# - Level_Based_Skills = { skill_id => skill_level, ... }
#==============================================================================
#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Blue, Geomancy & Level Skills', 'SephirothSpawn', 1, '2006-08-24')
#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.state('Blue, Geomancy & Level Skills')
#==============================================================================
# ** BGL_Skills
#==============================================================================
module BGL_Skills
#--------------------------------------------------------------------------
# ** Blue Skills
#
# * Blue Skills
# ~ Blue_Skills = [skill_id, skill_id, ...]
# * Actors that Learn Blue Magic
# ~ Blue_Skill_Actors = [actor_id, ...]
# * Classes that Learn Blue Magic
# ~ Blue_Skill_Classes = [class_id, class_id, ...]
#--------------------------------------------------------------------------
Blue_Skills = []
Blue_Skill_Actors = []
Blue_Skill_Classes = []
#--------------------------------------------------------------------------
# ** Geomancy
#
# * Actor Map ID Skills
# ~ actor_id => { map_id => [skill_id, ...], ... }
#
# * Actor Terrain Skills
# ~ actor_id => { terrain_id => [skill_id, ...], ... }
#
# * Class Map ID Skills
# ~ class_id => { map_id => [skill_id, ...], ... }
#
# * Class Terrain Skills
# ~ class => { terrain_id => [skill_id, ...], ... }
#--------------------------------------------------------------------------
Geomancy_Actor_Map_ID_Skills = {
}
Geomancy_Actor_Terrain_Skills = {
}
Geomancy_Class_Map_ID_Skills = {
}
Geomancy_Class_Terrain_Skills = {
}
#--------------------------------------------------------------------------
# ** Level Based Skills
#
# * Level Based Skills
# ~ skill_id => level
#--------------------------------------------------------------------------
Level_Based_Skills = {
}
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_bglskills_gmbtlr_se skill_effect
#--------------------------------------------------------------------------
# * Apply Skill Effects
#--------------------------------------------------------------------------
def skill_effect(user, skill)
# If Skill is Level Based Skills
if BGL_Skills::Level_Based_Skills.has_key?(skill.id)
# If Level is isn't divisible
unless self.level % BGL_Skills::Level_Based_Skills[skill.id] == 0
# Sets Miss
self.damage = "Miss"
return
end
end
# Original Skill Effects
seph_bglskills_gmbtlr_se(user, skill)
end
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :learn_blue_skills
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_bglskills_gmactr_scu? skill_can_use?
alias seph_bglskills_gmactr_skills skills
alias seph_bglskills_gmactr_se skill_effect
#--------------------------------------------------------------------------
# * Skill Can Use Test
#--------------------------------------------------------------------------
def skill_can_use?(skill_id)
# If Skill Known
if self.skills.include?(skill_id)
return super
end
# Return Original Skill Can Use Test
return seph_bglskills_gmactr_scu?(skill_id)
end
#--------------------------------------------------------------------------
# * Skills
#--------------------------------------------------------------------------
def skills
# Get Original Skills
n = seph_bglskills_gmactr_skills.dup
# Adds Geomancy Skills
n << get_geomancy_skills
# Returns Skills
return n.flatten.uniq.sort
end
#--------------------------------------------------------------------------
# * Geomancy Skills
#--------------------------------------------------------------------------
def get_geomancy_skills
# Creates Skills Array
skills = []
# Checks Actor Based Geomancy Map Skills
if (gams = BGL_Skills::Geomancy_Actor_Map_ID_Skills).has_key?(@actor_id)
# If Current Map
if gams[@actor_id].has_key?($game_map.id)
# Adds Map Skill(s)
skills << gams[@actor_id][$game_map.id]
end
end
# Checks Actor Based Terrain Skills
if (gats = BGL_Skills::Geomancy_Actor_Terrain_Skills).has_key?(@actor_id)
# If Current Terrain
if gats[@actor_id].has_key?($game_player.terrain_tag)
# Adds Terrain Skill(s)
skills << gats[@actor_id][$game_player.terrain_tag]
end
end
# Checks Class Based Geomancy Map Skills
if (gcms = BGL_Skills::Geomancy_Class_Map_ID_Skills).has_key?(@class_id)
# If Current Map
if gams[@class_id].has_key?($game_map.id)
# Adds Map Skill(s)
skills << gams[@class_id][$game_map.id]
end
end
# Checks Actor Based Terrain Skills
if (gcts = BGL_Skills::Geomancy_Class_Terrain_Skills).has_key?(@class_id)
# If Current Terrain
if gats[@class_id].has_key?($game_player.terrain_tag)
# Adds Terrain Skill(s)
skills << gats[@class_id][$game_player.terrain_tag]
end
end
# Returns Skills
return skills.flatten
end
#--------------------------------------------------------------------------
# * Skill Effect
#--------------------------------------------------------------------------
def skill_effect(user, skill)
# If Actor / Class Can Learn Skill or Actor Can Learn Skill
if BGL_Skills::Blue_Skill_Classes.include?(@class_id) ||
BGL_Skills::Blue_Skill_Actors.include?(@actor_id) ||
self.learn_blue_skills
# If Skill is a Blue Skill
if BGL_Skills::Blue_Skills.include?(skill.id)
# If Skill Not Known
unless self.skills.include?(skill.id)
# Display Skill Learned
self.damage = "Learned Skill #{skill.name}"
# Learn Skill
learn_skill(skill.id)
end
end
end
# Original Skill Effect
seph_bglskills_gmactr_se(user, skill)
end
end
#==============================================================================
# ** Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :level
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias seph_bglskills_gmeny_init initialize
def initialize(troop_id, member_index)
# Original Initialization
seph_bglskills_gmeny_init(troop_id, member_index)
# If Dynamic Enemies Not Enabled
if SDK.state('Dynamic Enemy Stats')
# Sets Up Random Level
n = 0
$game_party.actors.each {|a| n += a.level}
n /= $game_party.actors.size
range = (-3..3).to_a
n = [1, (n + range[rand(range.size)])].max
@level = n
end
end
end
#------------------------------------------------------------------------------
# * End SDK Enable Test
#------------------------------------------------------------------------------
endInformações adicionais
- Categoria: Programação VX
- Adicionado por: LichKing
- Acessos: 43
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
