Kod:
#===============================================================================
# Skill Categories / Kategorie Zdolności
# Wersja 1.3
# Autor: gameus
# Tłumacz: Yoroiookami
#-------------------------------------------------------------------------------
# Intro:
# Dodaje Kategorie Zdolności do podstawowego systemu walki.
# Dla każdej kategorii bohater dostanie nową komendę, zakładając że zna
# odpowiednie skille z tej kategorii. Zatrzymuje też komendę "Skill".
#
# Funkcje:
# -Dodaje nowe komendy dla kategorii,
# -Oddziela od siebie skille zależnie od kategorii,
# -Lista wszystkich zdolności jest nadal dostępna w "Skills",
# -Można mieć tyle kategorii ile się tylko podoba.
#
# Hostira Wersji:
# 1.3 - Dodana kompatybilność z Chaos Rage Limit System, Blizzarda.
# 1.2 - Naprawiony błąd z Easy Overdrive System, Blizzarda.
# 1.1 - Dodana kompatybilność z Easy Overdrive System, Blizzarda.
# 1.0 - Podstawowa wersja.
#
# Instrukcje:
# Zjedź niżej w konfiguracji, a zobaczysz ten fragment kodu, gdzie możesz
# zdefiniować swoje Kategorie Zdolności.
# SKILL_SETS = {
# "Kategoria 1" => 17,
# "Kategoria 2" => 18,
# "Kategoria 3" => 19,
# }
# Aby stworzyć nową kategorię, dodaj nową linijkę kodu zaraz pod ostatnią,
# stosując poniższy wzorek:
# "Nazwa Kategorii" => ID_Żywiołu (Elementu),
# Na przykład:
# "Super Duper Zakazane Techniki" => 19,
# Nazwij je jak chcesz, ale upewnij się że używasz unikalnego ID żywiołu.
#
# Żeby dodać zdolności do kategorii, musisz przypisać je do podanego żywiołu.
# Przykładowo jeżeli chcesz zdolności 1, 2 i 3 pod kategorią #19,
# wszystkie te skille muszą zawierać żywioł o tym ID w Bazie Danych.
#
# Kompatybilność:
# -Nie testowane z niczym poza podstawowym systemem walki.
# -Nie działa z Skill Seperation z paczki Tons of Add-ons, Blizzarda.
# -Nie działa z Battle Memory Commands, gameusa.
# -Nie działa poprawnie z Battle Icons, Juana.
# -Nie testowane z SDK (raczej nie działa).
# -Działa doskonale z Easy Overdrive System, Blizzarda. Należy umieścić ten
# skrypt pod jego skryptem.
# -Jeżeli natkniesz się na jakieś inne skrypty które z tym nie działają, napisz
# w temacie i zobaczę, czy można coś poradzić.
# -Działa z Unique Skill Commands, Blizzarda.
# -Działa z Chaos Rage Limit System, Blizzarda. Należy umieścić ten
# skrypt pod jego skryptem.
#
# Kredytki (Credits):
# gameus ~ Stworzenie skryptu
# MarkHest ~ Pomysł i testy
# Yoroiookami ~ Tłumaczenie
#===============================================================================
module Gameus
SKILL_SETS = {
"White Magic" => 17,
"Black Magic" => 18,
"Przytulanki" => 19,
}
end
$gg_skill_categories = 1.3
#-------------------------------------------------------------------------------
# Scene_Battle
#-------------------------------------------------------------------------------
class Scene_Battle
alias gg_phase3_setup_command_lat phase3_setup_command_window
def phase3_setup_command_window
gg_phase3_setup_command_lat
@actor_command_window.new_items(@active_battler.generate_commands)
end
alias gg_cats_update_phase3_basic_command update_phase3_basic_command
def update_phase3_basic_command
if $crls != nil && $crls >= 6.2
battler = (BlizzCFG::RTAB_ACTIVE ? @active_actor : @active_battler)
restore_commands(battler)
return if update_sls_input(battler)
return if update_srs_input(battler)
return if update_cds_input(battler)
end
if $easy_overdrive != nil && $easy_overdrive >= 2.21
battler = (BlizzCFG::RTAB_ACTIVE ? @active_actor : @active_battler)
restore_commands(battler)
return if update_overdrive_input(battler)
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
phase3_prior_actor
return
end
if Input.trigger?(Input::C)
case @actor_command_window.index
when 0
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 0
start_enemy_select
when 1..@actor_command_window.commands.size - 3
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
start_skill_select
when @actor_command_window.commands.size - 2
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 0
@active_battler.current_action.basic = 1
phase3_next_actor
when @actor_command_window.commands.size - 1
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 2
start_item_select
end
return
end
end
alias gg_cats_start_skill_select start_skill_select
def start_skill_select
gg_cats_start_skill_select
index = @actor_command_window.index
@skill_window.index = 0
@skill_window.refresh(@actor_command_window.commands[index]) if index > 1
end
end
#-------------------------------------------------------------------------------
# Game_Actor
#-------------------------------------------------------------------------------
class Game_Actor < Game_Battler
def generate_commands
s1, s2 = $data_system.words.attack, $data_system.words.skill
s3, s4 = $data_system.words.guard, $data_system.words.item
si = []
Gameus::SKILL_SETS.each_key {|key|
skills = @skills.find_all {|id|
$data_skills[id].element_set.include?(Gameus::SKILL_SETS[key])}
si.push(key) if skills != []}
return [s1, s2] + si + [s3, s4]
end
end
#-------------------------------------------------------------------------------
# Window_Command
#-------------------------------------------------------------------------------
class Window_Command < Window_Selectable
attr_accessor :commands
def new_items(commands)
self.contents.dispose if self.contents != nil
self.contents = nil
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
end
if $crls != nil && $crls >= 6.2
alias gg_refresh_skill_cats_lat refresh
def refresh
for i in 0...@item_max
draw_item(i, normal_color)
end
gg_refresh_skill_cats_lat
end
end
end
#-------------------------------------------------------------------------------
# Window_Skill
#-------------------------------------------------------------------------------
class Window_Skill < Window_Selectable
alias gg_cats_refresh_skill_window_lat refresh
def refresh(category = "")
if !$scene.is_a?(Scene_Battle)
gg_cats_refresh_skill_window_lat
return
end
if self.contents != nil
self.contents.dispose
self.contents = nil
end
rank = category == "" ? nil : Gameus::SKILL_SETS[category]
@data = []
@actor.skills.each {|id|
skill = $data_skills[id]
if skill != nil
if rank == nil
flag = true
Gameus::SKILL_SETS.each_value {|element|
flag = false if skill.element_set.include?(element)}
@data.push(skill) if flag
else
@data.push(skill) if skill.element_set.include?(rank)
end
end}
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
end