#==============================================================================
# • Tecniche combinate stile Chrono Trigger
# di mikb89
# demo: 2 agosto 2009
# versione 1.2 - CCOA (3.04) compatible
#------------------------------------------------------------------------------
# Per creare una skill combo basta fare una skill normale e poi
# configurare qui ciò che viene richiesto.
# Da notare che nelle skill combo è utilizzato il sistema che c'era
# nell'rm2k, cioè che per usare una tecnica con un attributo, devi
# avere l'equipaggiamento con quell'attributo. Ad esempio lo skill
# "Colpo di spada" con l'attributo "Spada", richiede che devi avere
# equipaggiata un arma con l'attributo "Spada" (una spada, quindi);
# se non usate gli attributi non ci fate caso, ma nell'rm2k era così. Se
# invece li usate e volete lo stesso anche per gli skill normali, copiate
# alla fine di questo script lo script Skill Add-on che segue.
# NEW: Se non volete usare questo sistema degli attributi adesso potete
# configurarlo tramite il USA_ATTRIBUTI_SKILL sotto impostato a 0
#==============================================================================
# • Configurazioni:
#------------------------------------------------------------------------------
module Impostazioni
class CTCombo
TASTO_CAMBIO_SKILL_E_COMBO = Input::A
# I combo vengono utilizzati scegliendo Skill dal menu (o come l'avete
# tradotto) e premendo un tasto.
# Premendolo nuovamente si torna alle skill normali. Con questa costante
# si specifica il tasto da premere.
# Input::A equivale a SHIFT
# Input::CTRL equivale a CONTROL
# Input::L e Input::R equivalgono a PageUp e PageDown
# e ce ne sono altri, l'importante è che c'è Input:: prima
ARCHIVIAZIONE_VIA_SWITCH = 0
# Occorre spendere due parole...
# In Chrono Trigger ci sono tre membri che vanno in battaglia ma i personaggi
# che sono nel party (oltre quei tre) dal menu possono usare i combo. Questa
# situazione può essere emulata tramite switch mettendo 1. Con 0 per il combo
# saranno considerati validi soltanto i personaggi che vanno in battaglia.
SWITCH_INIZIALE_MEMBRI = 11
# Se la constante sopra è settata a 1 questo valore specifica lo switch che
# viene attivato quando il PRIMO eroe è nel party. Gli altri eroi avranno gli switch
# seguenti a seconda del loro ordine nel database.
# Da notare che se questo metodo è attivo gli switch vanno impostati anche per
# i tre eroi che vanno in battaglia.
USA_ATTRIBUTI_SKILL = 0
# Attiva (1) o disattiva (0) il sistema di abilitazione skill per attributi.
# Dato che non tutti conoscono questa opzione (che era standard nei vecchi
# rpg maker) ho pensato di dare la possibilità di rimuoverla.
# Qualunque sia l'impostazione, varrà solo per le SKILL COMBO!
# Quindi per le skill normali basterà mettere sopra (attivo) o sotto (disattivo)
# il Main lo Skill AddOn incluso in questa demo.
end
end
$combo_skill = [53, 54, 55, 56, 57, 58, 59, 60, 61, 81, 82, 83, 84, 85, 86, 87, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 147, 148, 149, 150, 151, 152, 153, 154]
# Contiene gli id delle skill che sono combo.
# In questo caso le skill dal n° 82 al n° 84 sono combo.
# Quindi vi chiederete: "Sono combo sì, ma chi le usa?"
# Questo viene specificato sotto.
$combo_hero = [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 9], [1, 8], [1, 7], [1, 10], [2, 3], [2, 4], [2, 5], [2, 6], [2, 8], [2, 7], [3, 4], [3, 5], [3, 7], [4, 5], [4, 6], [4, 9], [5, 10], [9, 8], [9, 7], [7, 8], [7, 9, 8], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [11, 12, 13, 14], [6, 11, 12, 13, 14], [15, 16, 17, 18]]
# Contiene gli id degli eroi che usano le combo (per ogni combo sono tra parentesi quadra).
# In questo caso la prima skill combo (la n° 82 come impostato sopra) sarà eseguita dagli eroi
# n°1 e 8; la seconda skill dagli eroi 5 e 8; la terza da 7 e 8.
# E a questo punto vi chiederete: "E come faccio a specificare gli MP necessari per ogni eroe?"
# E anche questo viene specificato sotto.
$combo_point = [[4, 4], [4, 4], [4, 4], [4, 4], [6, 6], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [8, 8, 8], [10, 10, 10, 10, 10], [12, 12, 12, 12, 12], [16, 16, 16, 16, 16], [20, 20, 20, 20, 20], [22, 22, 22, 22, 22], [16, 16, 16, 16], [16, 16, 16, 16, 16], [20, 20, 20, 20]]
# Contiene i punti necessari per eseguire la combo per ogni eroe.
# Identico a quello sopra, solo che dovete sostituire il numero dell'eroe con gli MP necessari per
# utilizzare la combo. In questo caso nella skill 82 l'eroe 1 necessiterà di 100 MP, l'eroe 8 di 75.
# Nota: gli MP specificati nella scheda della skill, se la skill è combo, non serviranno
# ad un emerito niente.
# Fine configurazioni
#-----------------VALENTINO------------
SKILL_COMBO = {
147=>SHOOT, #shoot
148=>ARROW, #arrow
149=>VICTORY, #victory
150=>CLUSTER, #cluster
152=>ARROW #arrow
}
#----------------VALENTINO-------------
class Window_Combo < Window_Selectable
#--------------------------------------------------------------------------
# ● Inizializzazione
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 320, 640, 160)
@actor = actor
@column_max = 1
refresh
self.index = 0
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● Riporta la combo selezionata
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● Conteggia i combo da disegnare
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil and $combo_skill.include?(skill.id)
@data.push(skill)
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
#--------------------------------------------------------------------------
# ● Disegna la combo
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
for i in 0...$combo_skill.size
if $combo_skill[i] != nil
if $combo_skill[i] == skill.id
n = i
end
end
end
v = 0
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].combo_can_use?(skill.id)
v += 1
end
end
end
#VALENTINO
formation = SKILL_COMBO[skill.id]
@colore = false
if formation != nil
if $battle_formation == formation
self.contents.font.color = normal_color
else
@colore = true
self.contents.font.color = disabled_color
end
end
#VALENTINO
if v == $combo_hero[n].size
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.font.color = disabled_color if @colore
x = 4
y = index * 32
rect = Rect.new(x, y, self.width - 32, 64)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
if not $game_temp.in_battle
self.contents.draw_text(x + 232, y, 48, 32, $combo_point[n][0].to_s, 2)
self.contents.draw_text(x + 288, y, 48, 32, $combo_point[n][1].to_s, 2) rescue nil
self.contents.draw_text(x + 344, y, 48, 32, $combo_point[n][2].to_s, 2) rescue nil
self.contents.draw_text(x + 400, y, 48, 32, $combo_point[n][3].to_s, 2) rescue nil
else
po = []
for i in 0...$game_party.actors.size
if $combo_hero[n].include?($game_party.actors[i].id)
po.push $game_party.actors[i].id
end
end
ex = po.size
for r in 0...$combo_hero[n].size
if $combo_hero[n][r] != nil
if not po.include?($combo_hero[n][r])
po.push $combo_hero[n][r]
end
end
end
for ach in 0...po.size
if ach == ex
self.contents.font.color = self.contents.font.color == normal_color ? knockout_color : Color.new(255, 64, 0, 128)
end
for h in 0...$combo_hero[n].size
if $combo_point[n][h] != nil
if $combo_hero[n][h] == po[ach]
punti = $combo_point[n][h]
end
end
end
self.contents.draw_text(x + 232 + (ach * 56), y, 48, 32, punti.to_s, 2)
end
end
end
#--------------------------------------------------------------------------
# ● Finestra con descrizione combo
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
class Window_ComboStatus < Window_Base
#--------------------------------------------------------------------------
# ● Inizializzazione
#--------------------------------------------------------------------------
def initialize(actor, n)
super(0, 64*n, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# ● Disegna i valori
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @actor != nil
draw_actor_name(@actor, 4, 0)
draw_actor_state(@actor, 140, 0)
draw_actor_hp(@actor, 284, 0)
draw_actor_sp(@actor, 460, 0)
end
end
#--------------------------------------------------------------------------
# ● Imposta il personaggio
#--------------------------------------------------------------------------
def actor=(actor)
@actor = actor
refresh
end
end
class Scene_Combo
#--------------------------------------------------------------------------
# ● Inizializzazione
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ● Ciclo principale
#--------------------------------------------------------------------------
def main
@actor = $game_party.actors[@actor_index]
@help_window = Window_Help.new
@status_window = Window_ComboStatus.new(@actor, 1)
@status_window2 = Window_ComboStatus.new(nil, 2)
@status_window3 = Window_ComboStatus.new(nil, 3)
@status_window4 = Window_ComboStatus.new(nil, 4)
@skill_window = Window_Combo.new(@actor)
@skill_window.help_window = @help_window
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@status_window.dispose
@status_window2.dispose
@status_window3.dispose
@status_window4.dispose
@skill_window.dispose
@target_window.dispose
end
#--------------------------------------------------------------------------
# ● Aggiornamento
#--------------------------------------------------------------------------
def update
@help_window.update
@status_window.update
@status_window2.update
@status_window3.update
@status_window4.update
@skill_window.update
@target_window.update
if @skill_window.active
update_skill
return
end
if @target_window.active
update_target
return
end
end
#--------------------------------------------------------------------------
# ● Gestione combo
#--------------------------------------------------------------------------
def update_skill
for i in 0...$combo_skill.size
if $combo_skill[i] == @skill_window.skill.id
n = i
end
end
if n != nil
v = 0
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].combo_can_use?(@skill_window.skill.id)
v += 1
end
end
end
end
@status_window.actor = $game_actors[$combo_hero[n][0]] rescue @status_window.actor = @actor
@status_window2.actor = $game_actors[$combo_hero[n][1]] rescue @status_window2.actor = nil
@status_window3.actor = $game_actors[$combo_hero[n][2]] rescue @status_window3.actor = nil
@status_window4.actor = $game_actors[$combo_hero[n][3]] rescue @status_window4.actor = nil
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(1)
return
end
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not v == $combo_hero[n].size
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @skill.scope >= 3
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
else
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$game_system.se_play(@skill.menu_se)
for s in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][s]] != nil
$game_actors[$combo_hero[n][s]].sp -= $combo_point[n][s]
end
end
@status_window.refresh
@status_window2.refresh
@status_window3.refresh
@status_window4.refresh
@skill_window.refresh
@target_window.refresh
$scene = Scene_Map.new
return
end
end
return
end
if Input.trigger?(Input::R)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
$scene = Scene_Combo.new(@actor_index)
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Combo.new(@actor_index)
return
end
if Input.trigger?(Impostazioni::CTCombo::TASTO_CAMBIO_SKILL_E_COMBO)
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@actor_index)
return
end
end
#--------------------------------------------------------------------------
# ● Scelta personaggio per utilizzare combo di cura
#--------------------------------------------------------------------------
def update_target
for i in 0...$combo_skill.size
if $combo_skill[i] == @skill_window.skill.id
n = i
end
end
@status_window.actor = $game_actors[$combo_hero[n][0]] rescue @status_window.actor = @actor
@status_window2.actor = $game_actors[$combo_hero[n][1]] rescue @status_window2.actor = nil
@status_window3.actor = $game_actors[$combo_hero[n][2]] rescue @status_window3.actor = nil
@status_window4.actor = $game_actors[$combo_hero[n][3]] rescue @status_window4.actor = nil
v = 0
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].combo_can_use?(@skill_window.skill.id)
v += 1
end
end
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
if Input.trigger?(Input::C)
unless v == $combo_hero[n].size
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
if @target_window.index <= -2
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
if used
$game_system.se_play(@skill.menu_se)
for s in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][s]] != nil
$game_actors[$combo_hero[n][s]].sp -= $combo_point[n][s]
end
end
@status_window.refresh
@status_window2.refresh
@status_window3.refresh
@status_window4.refresh
@skill_window.refresh
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$scene = Scene_Map.new
return
end
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
class Game_Actor < Game_Battler
def combo_can_use?(skill_id)
for i in 0...$combo_skill.size
if $combo_skill[i] == skill_id
n = i
end
end
for i in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][i]] != nil
if not $game_actors[$combo_hero[n][i]].skills.include?(skill_id)
return false
end
end
end
if Impostazioni::CTCombo::USA_ATTRIBUTI_SKILL == 0
return super
else
@acc = 0
@times = 0
for a in $data_skills[skill_id].element_set
@times +=1
if ($combo_hero[n][0] != nil and $data_weapons[$game_actors[$combo_hero[n][0]].weapon_id] != nil and $data_weapons[$game_actors[$combo_hero[n][0]].weapon_id].element_set.include?(a)) or
($combo_hero[n][1] != nil and $data_weapons[$game_actors[$combo_hero[n][1]].weapon_id] != nil and $data_weapons[$game_actors[$combo_hero[n][1]].weapon_id].element_set.include?(a)) or
($combo_hero[n][2] != nil and $data_weapons[$game_actors[$combo_hero[n][2]].weapon_id] != nil and $data_weapons[$game_actors[$combo_hero[n][2]].weapon_id].element_set.include?(a))
@acc += 1
else
if ($combo_hero[n][0] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor1_id] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor1_id].guard_element_set.include?(a)) or
($combo_hero[n][1] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor1_id] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor1_id].guard_element_set.include?(a)) or
($combo_hero[n][2] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor1_id] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor1_id].guard_element_set.include?(a))
@acc += 1
else
if ($combo_hero[n][0] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor2_id] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor2_id].guard_element_set.include?(a)) or
($combo_hero[n][1] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor2_id] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor2_id].guard_element_set.include?(a)) or
($combo_hero[n][2] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor2_id] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor2_id].guard_element_set.include?(a))
@acc += 1
else
if ($combo_hero[n][0] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor3_id] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor3_id].guard_element_set.include?(a)) or
($combo_hero[n][1] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor3_id] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor3_id].guard_element_set.include?(a)) or
($combo_hero[n][2] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor3_id] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor3_id].guard_element_set.include?(a))
@acc += 1
else
if ($combo_hero[n][0] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor4_id] != nil and $data_armors[$game_actors[$combo_hero[n][0]].armor4_id].guard_element_set.include?(a)) or
($combo_hero[n][1] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor4_id] != nil and $data_armors[$game_actors[$combo_hero[n][1]].armor4_id].guard_element_set.include?(a)) or
($combo_hero[n][2] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor4_id] != nil and $data_armors[$game_actors[$combo_hero[n][2]].armor4_id].guard_element_set.include?(a))
@acc += 1
else
return false
end
end
end
end
end
end
if @times == @acc
return super
else
return false
end
end
end
end
class Game_Battler
def combo_can_use?(skill_id)
for i in 0...$combo_skill.size
if $combo_skill[i] == skill_id
n = i
end
end
for i in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][i]] != nil
if $combo_point[n][i] > $game_actors[$combo_hero[n][i]].sp
return false
end
end
end
for i in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][i]] != nil
if $game_actors[$combo_hero[n][i]].hp == 0 and not $game_actors[$combo_hero[n][i]].immortal
return false
end
end
end
for i in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][i]] != nil
if $data_skills[skill_id].atk_f == 0 and $game_actors[$combo_hero[n][i]].restriction == 1
return false
end
end
end
occasion = $data_skills[skill_id].occasion
pl = 0
if $game_temp.in_battle
for i in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][i]] != nil
if $game_party.actors.include?($game_actors[$combo_hero[n][i]])
pl += 1
end
end
end
if pl == $combo_hero[n].size
return (occasion == 0 or occasion == 1)
else
return false
end
else
for i in 0...$combo_hero[n].size
if $combo_hero[n][i] != nil
if Impostazioni::CTCombo::ARCHIVIAZIONE_VIA_SWITCH
if $game_switches[$combo_hero[n][i] + Impostazioni::CTCombo::SWITCH_INIZIALE_MEMBRI - 1] == true
pl += 1
end
end
else
if $game_party.actors.include?($combo_hero[n][i])
pl += 1
end
end
end
if pl == $combo_hero[n].size
return (occasion == 0 or occasion == 2)
else
return false
end
end
end
end
class Scene_Skill
alias ctbs_update_skill update_skill
def update_skill
ctbs_update_skill
if Input.trigger?(Impostazioni::CTCombo::TASTO_CAMBIO_SKILL_E_COMBO)
$game_system.se_play($data_system.decision_se)
$scene = Scene_Combo.new(@actor_index)
return
end
end
end
class Scene_Battle
def main
$game_temp.in_battle = true
$game_temp.battle_turn = 0
$game_temp.battle_event_flags.clear
$game_temp.battle_abort = false
$game_temp.battle_main_phase = false
$game_temp.battleback_name = $game_map.battleback_name
$game_temp.forcing_battler = nil
$game_system.battle_interpreter.setup(nil, 0)
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
@party_command_window = Window_PartyCommand.new
@help_window = Window_Help.new
@help_window.back_opacity = 160
@help_window.visible = false
@status_window = Window_BattleStatus.new
@message_window = Window_Message.new
#ccoa
#s1 = $data_system.words.attack
#s2 = $data_system.words.skill
#s3 = $data_system.words.guard
#s4 = $data_system.words.item
#@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
#@actor_command_window.y = 160
#@actor_command_window.back_opacity = 160
#@actor_command_window.active = false
#@actor_command_window.visible = false
@help_window2 = Win_Help.new
@help_window2.visible = false
@help_window2.contents_opacity = 0
@help_time = 0
@actor_command_windows = []
setup_actor_command_windows
@cursor_bitmap = Sprite.new
@cursor_bitmap.bitmap = RPG::Cache.windowskin($game_system.windowskin_name)
@cursor_bitmap.src_rect.set(128, 96, 32, 32)
@cursor_bitmap.visible = false
@blink_count = 0
#fine ccoa
@spriteset = Spriteset_Battle.new
@wait_count = 0
# compatibilità CCOA
@extra_sprites = [] if @extra_sprites == nil
# cp_preset_party
# @cp_meters = CP_Meters.new
# @extra_sprites.push(@cp_meters)
# fine compatibilità
if $data_system.battle_transition == ""
Graphics.transition(0)
else
Graphics.transition(40, "Graphics/Transitions/" +
$data_system.battle_transition) #era 40 ora è 100 x ccoa
end
start_phase1
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
$game_map.refresh
Graphics.freeze
#ccoa
for window in @actor_command_windows
window.dispose
end
#@actor_command_window.dispose
#fine ccoa
@party_command_window.dispose
@help_window.dispose
@help_window2.dispose #ccoa
@status_window.dispose
@message_window.dispose
if @skill_window != nil
@skill_window.dispose
end
#ccoa
if @skill_window2 != nil
@skill_window2.dispose
end
#fine ccoa
if @combo_window != nil
@combo_window.dispose
end
if @item_window != nil
@item_window.dispose
end
if @result_window != nil
@result_window.dispose
end
@spriteset.dispose
# compatibilità CCOA
@cursor_bitmap.dispose
#@cp_meters.dispose
# fine compatibilità
if $scene.is_a?(Scene_Title)
Graphics.transition
Graphics.freeze
end
if $BTEST and not $scene.is_a?(Scene_Gameover)
$scene = nil
end
end
def update_phase3
if @enemy_arrow != nil
update_phase3_enemy_select
return #ccoa
elsif @actor_arrow != nil
update_phase3_actor_select
return #ccoa
elsif @skill_window != nil
update_phase3_skill_select
return #ccoa
elsif @combo_window != nil
update_phase3_combo_select
return #ccoa
elsif @item_window != nil
update_phase3_item_select
return #ccoa
end #ccoa
#ccoa
#elsif @actor_command_window.active
# update_phase3_basic_command
#end
# If actor command window is enabled
for i in 0..$game_party.actors.size - 1
if @actor_command_windows[i].active
update_phase3_basic_command
return
end
end
#fine ccoa
end
alias update_phase3_skill_select_combo update_phase3_skill_select
def update_phase3_skill_select
update_phase3_skill_select_combo
if Input.trigger?(Impostazioni::CTCombo::TASTO_CAMBIO_SKILL_E_COMBO)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
end_skill_select
start_combo_select
return
end
end
def update_phase3_combo_select
@combo_window.visible = true
@combo_window.update
for i in 0...$combo_skill.size
if $combo_skill[i] == @combo_window.skill.id
n = i
end
end
for b in 0...$game_party.actors.size
$game_party.actors[b].blink = false
end
if n != nil
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_party.actors.include?($game_actors[$combo_hero[n][h]])
$game_actors[$combo_hero[n][h]].blink = true
end
end
end
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_combo_select
return
end
if Input.trigger?(Input::C)
@skill = @combo_window.skill
#VALENTINO
formation = SKILL_COMBO[@skill.id]
if formation != nil
unless $battle_formation == formation
$game_system.se_play($data_system.buzzer_se)
return
end
end
#VALENTINO
if n == nil
$game_system.se_play($data_system.buzzer_se)
return
end
v = 0
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].combo_can_use?(@skill.id)
v += 1
end
end
end
if @skill == nil or not v == $combo_hero[n].size
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.skill_id = @skill.id
@combo_window.visible = false
if @skill.scope == 1
start_enemy_select
elsif @skill.scope == 3 or @skill.scope == 5
start_actor_select
else
end_combo_select
phase3_next_actor
end
return
end
if Input.trigger?(Impostazioni::CTCombo::TASTO_CAMBIO_SKILL_E_COMBO)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.kind = 1
end_combo_select
start_skill_select
return
end
end
def update_phase3_enemy_select
@enemy_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_enemy_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @enemy_arrow.index
end_enemy_select
if @skill_window != nil
end_skill_select
end
if @combo_window != nil
end_combo_select
end
if @item_window != nil
end_item_select
end
phase3_next_actor
end
end
def update_phase3_actor_select
@actor_arrow.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
end_actor_select
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@active_battler.current_action.target_index = @actor_arrow.index
end_actor_select
if @skill_window != nil
end_skill_select
end
if @combo_window != nil
end_combo_select
end
if @item_window != nil
end_item_select
end
phase3_next_actor
end
end
def start_combo_select
@combo_window = Window_Combo.new(@active_battler)
@combo_window.help_window = @help_window
#ccoa
for i in 0..$game_party.actors.size - 1
@actor_command_windows[i].active = false
@actor_command_windows[i].visible = false
end
#@actor_command_window.active = false
#@actor_command_window.visible = false
#fine ccoa
end
def end_combo_select
for b in 0...$game_party.actors.size
$game_party.actors[b].blink = false
end
@active_battler.blink = true
@combo_window.dispose
@combo_window = nil
@help_window.visible = false
#ccoa
@actor_command_windows[@actor_index].active = true
@actor_command_windows[@actor_index].visible = true
#@actor_command_window.active = true
#@actor_command_window.visible = true
#fine ccoa
end
def make_skill_action_result
@animate = nil
@skill = $data_skills[@active_battler.current_action.skill_id]
for i in 0...$combo_skill.size
if $combo_skill[i] == @skill.id
n = i
end
end
if not $combo_skill.include?(@skill.id)
#ccoa
if @active_battler.is_a?(Game_Actor)
if $USING_INDIV_SKILL_ANIM
@active_battler.set_pose(@active_battler.skill_hash[$data_skills[@active_battler.current_action.skill_id].name], false)
else # get animation by skill type
@active_battler.set_pose(@active_battler.skill_type_hash[@active_battler.skill_kind], false)
end
else
@active_battler.set_pose($SKILL, false)
end
#fine ccoa
unless @active_battler.current_action.forcing
unless @active_battler.skill_can_use?(@skill.id)
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
@active_battler.sp -= @skill.sp_cost
@status_window.refresh
#ccoa
@help_window2.contents_opacity = 0
@help_window2.y = -200
$name_help = CCOA_CBS::NAME_SKILL
@help_window2.set_text(@skill.name, 1)
#@help_window.set_text(@skill.name, 1)
#fine ccoa
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
@common_event_id = @skill.common_event_id
set_target_battlers(@skill.scope)
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
#ccoa
unless target == @active_battler
reset_pose(target)
end
#fine ccoa
end
else
#ccoa
if n != nil
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].is_a?(Game_Actor)
if $USING_INDIV_SKILL_ANIM
$game_actors[$combo_hero[n][h]].set_pose($game_actors[$combo_hero[n][h]].skill_hash[$data_skills[@active_battler.current_action.skill_id].name], false)
else # get animation by skill type
$game_actors[$combo_hero[n][h]].set_pose($game_actors[$combo_hero[n][h]].skill_type_hash[$game_actors[$combo_hero[n][h]].skill_kind], false)
end
end
else
$game_actors[$combo_hero[n][h]].set_pose($SKILL, false) if $game_actors[$combo_hero[n][h]] != nil
end
end
else
if @active_battler.is_a?(Game_Actor)
if $USING_INDIV_SKILL_ANIM
@active_battler.set_pose(@active_battler.skill_hash[$data_skills[@active_battler.current_action.skill_id].name], false)
else # get animation by skill type
@active_battler.set_pose(@active_battler.skill_type_hash[@active_battler.skill_kind], false)
end
else
@active_battler.set_pose($SKILL, false)
end
end
#fine ccoa
unless @active_battler.current_action.forcing
if n != nil
v = 0
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
if $game_actors[$combo_hero[n][h]].combo_can_use?(@skill.id)
v +=1
end
end
end
end
unless v == $combo_hero[n].size
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
if n != nil
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
$game_actors[$combo_hero[n][h]].sp -= $combo_point[n][h]
@animate = $combo_hero[n]
end
end
end
@status_window.refresh
#ccoa
@help_window2.contents_opacity = 0
@help_window2.y = -200
$name_help = CCOA_CBS::NAME_SKILL
@help_window2.set_text(@skill.name, 1)
#@help_window.set_text(@skill.name, 1)
#fine ccoa
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
@common_event_id = @skill.common_event_id
set_target_battlers(@skill.scope)
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
#ccoa
if n != nil
for h in 0...$combo_hero[n].size
if $game_actors[$combo_hero[n][h]] != nil
unless target == $game_actors[$combo_hero[n][h]]
reset_pose(target)
end
end
end
else
unless target == @active_battler
reset_pose(target)
end
end
#fine ccoa
end
end
end
def update_phase4_step3
if @animate == nil
if @animation1_id == 0
@active_battler.white_flash = true
#ccoa
if @active_battler.animated
@wait_count = [@active_battler.attack_frames * 10 - 10, 8].max
else
@wait_count = 8
end
#fine ccoa
else
@active_battler.animation_id = @animation1_id
@active_battler.animation_hit = true
end
#ccoa
if @active_battler.current_action.kind == 0 and @active_battler.current_action.basic == 0
@active_battler.set_pose($ATTACK, false)
end
#fine ccoa
@phase4_step = 4
else
if @animation1_id == 0
for b in 0...@animate.size
$game_actors[@animate[b]].white_flash = true
#ccoa
if $game_actors[@animate[b]].animated
@wait_count = [$game_actors[@animate[b]].attack_frames * 10 - 10, 8].max
else
@wait_count = 8
end
#fine ccoa
end
else
for b in 0...@animate.size
$game_actors[@animate[b]].animation_id = @animation1_id
$game_actors[@animate[b]].animation_hit = true
end
end
#ccoa
for b in 0...@animate.size
if $game_actors[@animate[b]].current_action.kind == 0 and $game_actors[@animate[b]].current_action.basic == 0
$game_actors[@animate[b]].set_pose($ATTACK, false)
end
end
#fine ccoa
@animate = nil
@phase4_step = 4
end
end
end
class Window_Skill < Window_Selectable
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
#ccoa
if (@skill_kind == -1)
if skill != nil and not $combo_skill.include?(skill.id)
@data.push(skill)
end
else
if (skill != nil and skill.element_set.include?(@skill_kind)) and not $combo_skill.include?(skill.id)
@data.push(skill)
end
end
#if skill != nil and not $combo_skill.include?(skill.id)
# @data.push(skill)
#end
#fine ccoa
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
#ccoa
class Win_Skill < Window_Selectable
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if (@skill_kind == -1)
if skill != nil and not $combo_skill.include?(skill.id)
@data.push(skill)
end
else
if (skill != nil and skill.element_set.include?(@skill_kind)) and not $combo_skill.include?(skill.id)
@data.push(skill)
end
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
#fine ccoa