PrinceEndymion88
Member
Hi guys. I'm searching for some very simple script for my new Item, Equip, Status and Skill Menu. Actually I'm using Drago Scene Menu as my Scene Menu and other script like: ccoa's weather script, KH SAVE, ums by ccoa, mode7, CCOA 3.04 RTA, Mog Damage System, DRG - Scene Menu Animated Cursor, Scene into flash, mana title, MOG Scene Shop, mog scene story, Party Changer, Stop the victory ME, Skill Chrono Trigger, shadow text, ,dash, region system, mog battler effects, Light Effects XP 2.1...
These are some pictures with description of what I would.
I also use a Link Tech system. For example, an hero can use a "special" skill in battle only if there is other (one or more) heroes in battle...
An example: HERO1 can use in battle the tech MAGIC WIND only if HERO2 and HERO3 are in battle.
This is the script used for link tech:
and I would to group these skills in a separate menu if possible, otherwise it will not make them appear in the skill menu.
Scene Skill (Link Tech):
These are some pictures with description of what I would.
Scene Item:
Scene Equip:
Scene Status:
Scene Skill (single tech):



Scene Equip:

Scene Status:

Scene Skill (single tech):

An example: HERO1 can use in battle the tech MAGIC WIND only if HERO2 and HERO3 are in battle.
This is the script used for link tech:
Code:
#==============================================================================
# • 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 [email=0...@actor.skills.size]0...@actor.skills.size[/email]
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 [email=0...@animate.size]0...@animate.size[/email]
$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 [email=0...@animate.size]0...@animate.size[/email]
$game_actors[@animate[b]].animation_id = @animation1_id
$game_actors[@animate[b]].animation_hit = true
end
end
#ccoa
for b in [email=0...@animate.size]0...@animate.size[/email]
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 [email=0...@actor.skills.size]0...@actor.skills.size[/email]
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 [email=0...@actor.skills.size]0...@actor.skills.size[/email]
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
Scene Skill (Link Tech):
