Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[RMXP] Simple Item, Equip, Status and Skill Menu.

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.
Scene Item:
7rl.png

9ze.png

9xwb.png


Scene Equip:
9xyc.png


Scene Status:
d6qp.png


Scene Skill (single tech):
lau7.png
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:
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
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):
v443.png
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top