Dual/Triple Tech script

Discussion in 'RGSS Script Requests' started by AveyondFan, Aug 5, 2019.

  1. AveyondFan

    AveyondFan Villager Member

    Messages:
    23
    Likes Received:
    1
    First Language:
    English
    Primarily Uses:
    RMXP
    I've been looking for a script that would allow two or more actors to combine a skill for more damage, basically replicating the dual tech system in Chrono Trigger. I found some for VX, but not XP.

    For those who might not know what Dual Techs or Triple Techs (In this case I'm looking for a script that can have up to four actors be involved) are, they are skills that are shared by characters that, when selected, use up both of the characters' turns and the MP that would be involved to cast a spell that would do more damage (or healing in some cases) in one attack than the two spells would by themselves.

    I'm working with the default battle system in XP (sans the fact that I'm using side-battlers), so it would need to be compatible with the default system.

    All I really need is a script that allows this to occur. I know there are XP compatible scripts that allow you to give certain states custom effects (ranging from deflecting spells to allowing you to give an ally the ability to absorb or reduce damage from a specific element). I'm pretty sure something similar could work for a dual-tech system, I just am not script-savvy enough to figure out how.
     
    #1
  2. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    How about a blast from the past when Trickster, SephirothSpawn and a team of coders were working upon a system called the RMXP SDK?

    [​IMG] Simple Combo Skills
    by Trickster ()
    This script is an addon for the DBS or any of the Timer Based Battle systems. This script allows two or more players/enemies to combine skills to form a better skill.

    While it has the SDK script within, this system does NOT require it. If you don't want the SDK, just remove the SDK script itself, and remove/comment out the lines near the top of the Simple Combo Skills script (22 & 27) and the final line at the bottom (the one marked 'end').

    Aluxes's CROSS CUT + Basil's LEG SWEEP ... turns CROSS CUT into 'FIRE SLASH' ;)
     
    #2
  3. AveyondFan

    AveyondFan Villager Member

    Messages:
    23
    Likes Received:
    1
    First Language:
    English
    Primarily Uses:
    RMXP
    Would there be a way to modify it so that, say in the case of the demo, Basil's turn wouldn't come up when they perform fire slash? And how could I let the characters learn the dual techs over time, I.e make it so that just because X character has the spell and Y character has the other spell, doesn't mean they cast it every time they use those spells on the turn?

    Basically, what I'm trying to do is make it so that the dual techs for certain characters aren't usable until a specific point in time, and I want them to be usable, but also allow the characters to use the spells that make up the dual techs in the same turn without it triggering the dual tech.

    Like, say if I wanted to use Aluxes's Cross Cut, but at the same time I wanted to also use Basil's Leg Sweep that same round, but I didn't want it to trigger Fire Slash because for some reason the undead they are fighting is healed by fire magic but is weak to vs undead and I want that extra damage from Basil's Leg Sweep; is there a way I could modify the script so I could allow that to happen? (I mean, the answer is probably yes, but for me reading scripting languages is like trying to read Latin when it's written in a non-Latin script like katakana, Hebrew, or Arabic)

    And also, say that the two characters learn the skill, but I don't want the player to be able to use the dual tech until a certain point in the story where, say, some old master teaches them how to do that dual tech: how could I do that?

    This script is pretty much what I'm looking for, I just need the other two parts for it to be 100% what I'm looking for.
     
    #3
  4. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    So.... you want the ability to 'disable' combos until certain conditions have been met. Hrm......
    1) Characters must 'learn' that they can perform a combo effect together. Some triggering event to activate it.
    2) Combos cannot combine for certain monster types. Immunity.

    Is that about right? Or are there other conditions. This will require a bit of extra work.... Thankfully, I know how Bra-- Um... Trickster worked his scripts since ... oh, since 2005? ^_^
     
    #4
  5. AveyondFan

    AveyondFan Villager Member

    Messages:
    23
    Likes Received:
    1
    First Language:
    English
    Primarily Uses:
    RMXP
    First one, yes, that's about right.
    I also want to be able to choose whether or not I want the spells to combo after the characters learn they can combo the spells, although I suppose that's what you're getting at with point two.
    I suppose having two or more actors combining their turn into one is a bit difficult, unless doing so would just cancel the extra actors' turns and just have one of the involved actors' turn go off, so that part I'm not so worried about.

    Yeah I'm not the best at explaining things. Sorry.
     
    #5
  6. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    First off... My bad. I just tested Trickster's system and it has a BUG in it. Just try using the Crosscut skill all by itself and it still generates the fire slash attack. It gives the combo skill effect but without it being part of a combo. Trickster goofed,

    Second, I think that the notion that a combo skill cannot combine because an enemy is immune doesn't really work. Why wouldn't the skill combine if the heroes know how to combine it. The Enemy should just be immune or have a strong defense against the attack.

    Now THIRD.... I forgot I had an old script of my own that does combos. I just spent 15 minutes adding an option into the combos that a switch needs to be turned on for a switch to be learned...... or have no switch at all and it is learned automatically.

    Pop this into a project for a test run.
    IF you have switch 21 turned on, Aluxes's, Gloria's and Hilda's skill attacks bring out a nice light show
    If you have switch 1 turned on, Hilda's fire attack grows awesome by itself.
    Aluxes's Cross Cut and Hilda's Fire attack should generate a combo by itself.... no switch needed.
    Code:
    #==============================================================================
    # ** Karen's Combos
    #------------------------------------------------------------------------------
    #    by DerVVulfman
    #    version 2.0
    #    08-24-2010
    #    RPGMaker XP / RGSS (Compatible with SDK v 2.3 and earlier)
    #------------------------------------------------------------------------------
    #
    #  INTRODUCTION:
    #  This system allows you to have battlers combine their skill effects to pro-
    #  duce a different skill action.
    #
    #------------------------------------------------------------------------------
    #
    #  INSTALLATION:
    #  Paste below Scene_Debug and/or your battlesystem and addons and above Main.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  INSTRUCTIONS:
    #  The system is fairly easy  as there are only three configurables to handle.
    #  One is the list of the combos used.   The second determines if enemies can
    #  perform combos.   And the third determines  if those performing a combined
    #  skill perform a user animation together, or if it's just the trigger man.
    #
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  COMBOS:
    #  There is  an array  called COMBOS  that is  a list  of the special Combined
    #  skill, and the individual skills that are combined to perform it.   I don't
    #  know how else to really describe it.
    #
    #  The structure for each skill combo is fairly simple:
    #
    #         [ Result, SP Type, [ skill_id, skill_id,.... ], Switch]
    #
    #   Result        This value is the ID of the resulting 'combo skill' used.
    #   SP Type       This sets up how the battler's SP points are used (see below)
    #   Combinations  This is a list of skill IDs used to call the combo skill
    #   Switch        This is the ID for the switch that turns the combo on.
    #
    #  There is  an array  called COMBOS  that is  a list  of the special Combined
    #  The order in which the skills are placed  should be by order of preference,
    #  with the most desired but difficult to attain skills on the top. The easier
    #  to gain ones should be situated at the bottom of your list.
    #
    #    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .
    #
    #  * The SP Type value determines if the battlers use the SP points from the
    #    skills that they  are using,  or if it is based on the  'combo'  skill.
    #    If it is set to 'true', then the battlers use the SP Cost of the combo.
    #    The battlers must have enough 'SP' to be able to use their combo.
    #
    #  * If there is no Switch value (ie nil), it assumes it is on from the start.
    #
    #------------------------------------------------------------------------------
    #
    #  TRIGGERING THE COMBO SKILLS:
    #  Whether the player assigns skills for the actors,  or if the game assigns
    #  skills to monsters, these skills are loaded into an array for use.  These
    #  skills remain in memory until triggered.   Whichever battlesystem you use
    #  this system on, one thing is fairly certain. The fastest team-member with
    #  a loaded spell  for a given combo  is usually  the one  that triggers the
    #  combined skill effect.
    #
    #  I call him the trigger man.
    #
    #  Most combo systems  operate under this principle,  so those who have used
    #  similar scripts shouldn't be surprised. Nor should they be surprised that
    #  the final target of the combo skill will be determined by the trigger man.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  COMBOS WITH DIFFERENT TARGETS:
    #  When combos are performed, the last loaded or triggering skill determines
    #  the target of the combined attack.  As such, if a delayed skill targeting
    #  a ghost and a lightning bolt skill that immediately attacks a skeleton is
    #  combined, the skeleton target will feel the brunt of the combined attack.
    #
    #  The only exception to this would be if the resulting combined skill works
    #  on all targets.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  LAST MAN STANDING
    #  It happens  once and a while  when a skill combo is being cast  and there
    #  are more than enough participants  for that combined skill to be created.
    #  The system will cycle through  the current list of actors or enemies that
    #  can perform the combo  and generate a list.   If two or more participants
    #  are performing the same skill, one will be chosen based on their position
    #  within the party (Aluxes gets chosen over Basil, chosen over Gloria...).
    #
    #  When that happens, there are two possible actions.
    #
    #  If the trigger man  is not a combo user,  or if any  would-be participant
    #  not selected  to be part of the combined skill  is faster than those per-
    #  forming the skill, their non-combo skills get performed.
    #
    #    Example:
    #    * Aluxes, Basil and Gloria are selected for a shockwave attack.
    #    * Shockwave uses only two skills and both Aluxes and Basil have one.
    #    * Aluxes is chosen and is paired with Gloria.
    #    * Basil is faster and can go first.            **** CASTING SPELL  ****
    #    * Aluxes and Gloria cast their combo next.     ****  COMBO SKILL!  ****
    #
    #  But,  if the would-be participant  of a combined skill reacts slower than
    #  those performing the skill, that skill is cast last.  Formerly,  it would
    #  have been wasted.  But that problem has been solved.
    #
    #    Example:
    #    * Aluxes, Basil and Gloria are selected for a shockwave attack.
    #    * Shockwave uses only two skills and both Aluxes and Basil have one.
    #    * Aluxes is chosen and is paired with Gloria.
    #    * Aluxes and Gloria cast their combo first.    ****  COMBO SKILL!  ****
    #    * Basil tries to cast, but lost his chance.    **** CASTING SPELL  ****
    #
    #
    #------------------------------------------------------------------------------
    #
    #  COMPATABILITY:   
    #  Designed for use with RPGMakerXP.
    #
    #  With all the aliases involved, it should work with the default battlesystem
    #  and versions of the SDK from versions 2.3 and earlier. It also has allowan-
    #  ces and edits specifially designed for Charlie Fleed's FF-like CTB.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  SCRIPT MODULES:
    #  The following modules  have been added or changed.   Please take care  when
    #  using with other systems that may be affected.
    #  
    #  Aliased:
    #  ----------------
    #  Game_System:      initialize
    #  Game_Battler:     initialize
    #  Game_Enemy:       make_action
    #  Scene_Battle:     main, end_skill_select, phase3_next_actor,
    #                    make_skill_action_result, update_phase4_step3,
    #                    update_phase4_step4, update_phase4_step5
    #
    #   
    #  Rewritten:  
    #  ------------
    #  Game_Party:       actors  (Array now re-defined for read and write methods)
    #  Game_Troop:       enemies (Array now defined for read and write methods)
    #
    #
    #  New:
    #  ------------
    #  Game_Battler:     combo_timer
    #  Scene_Battle:     make_combo_action_result, combo?, combo_users_acquire,
    #                    current_user_action, combo_sp_cost, combo_list_clear_dead,
    #                    combo_list_clear_users, combo_list_clear, combo_scope_check
    #  
    #
    #------------------------------------------------------------------------------
    #
    #  CREDITS & THANKS:
    #  Eh...  kinda got inspired by Cogwheel who made one of the first Combo Skill
    #  systems,  and Trickster for his work on his own system.  Later advances for
    #  Karen's Combos was due in part by development with Charlie Fleed's CTB.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  TERMS AND CONDITIONS:
    #
    #  Free to use, even in commercial projects.  Just note that I need some form
    #  of due credit... even a mere mention in some end titles.
    #
    #
    #==============================================================================
    
    
      # == The Configurable COMBO Array ==
      #
      #                 Result  SP type,  Combinations  Switch
      COMBOS        = [ [32,    true,     [57,1, 7],    21],
                        [68,    false,    [57, 7],],
                        [9,     false,    [7],          1]
                      ]  
    
                   
      # == Whether Enemies can perform COMBOS
      #    (true/false)         
      #                 
      ENEMY_COMBOS  = true
     
     
      # == Whether all performing combos perform
      #    synced battle animations.
      #    (true/false)         
      #                 
      ANIM_COMBOS   = true
     
                   
    #==============================================================================
    # ** Game_System
    #------------------------------------------------------------------------------
    #  This class handles data surrounding the system. Backround music, etc.
    #  is managed here as well. Refer to "$game_system" for the instance of
    #  this class.
    #==============================================================================
    
    class Game_System
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :actor_combo_list         # array for actors and skills used
      attr_accessor :enemy_combo_list         # array for enemies and skills used
      attr_accessor :combos_cfc_detect        # Charlie Fleed's CTB Detection  
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias combo_initialize initialize
      def initialize
        # Perform the original call
        combo_initialize
        # Initialize the arrays
        @actor_combo_list = []
        @enemy_combo_list = []
        @combos_cfc_detect = true  if $charlie_lee_ctb
      end
    end
    
    
    #==============================================================================
    # ** Game_Battler
    #------------------------------------------------------------------------------
    #  This class deals with battlers. It's used as a superclass for the Game_Actor
    #  and Game_Enemy classes.
    #==============================================================================
    
    class Game_Battler
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :combo_id                 # Combo skill ID
      attr_accessor :combo_array
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias combo_init initialize
      def initialize
        # Perform the original call
        combo_init
        @combo_id = 0  # Add the combo ID value
        @combo_array = []
      end
      #--------------------------------------------------------------------------
      # * Recalculate Timer for Combo Users
      #--------------------------------------------------------------------------  
      def combo_timer
        @next_action_time = @next_action_time + @after_cast_delay + @rest_delay
      end
    end
    
    
    
    
    #==============================================================================
    # ** Game_Enemy
    #------------------------------------------------------------------------------
    #  This class handles enemies. It's used within the Game_Troop class
    #  ($game_troop).
    #==============================================================================
    
    class Game_Enemy < Game_Battler
      #--------------------------------------------------------------------------
      # * Make Action
      #--------------------------------------------------------------------------
      alias combo_make_action make_action
      def make_action
        # Perform the original call
        combo_make_action
        # Push enemies & skills into array
        if self.current_action.kind == 1
          temp_array  = []
          enemy_id    = self.index
          skill_id    = self.current_action.skill_id
          temp_array  = [enemy_id, skill_id]
          $game_system.enemy_combo_list.push(temp_array)
        end
      end
    end
    
    
    
    #==============================================================================
    # ** Game_Party
    #------------------------------------------------------------------------------
    #  This class handles the party. It includes information on amount of gold
    #  and items. Refer to "$game_party" for the instance of this class.
    #==============================================================================
    
    class Game_Party
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :actors                   # actors
    end
    
    
    
    #==============================================================================
    # ** Game_Troop
    #------------------------------------------------------------------------------
    #  This class deals with troops. Refer to "$game_troop" for the instance of
    #  this class.
    #==============================================================================
    
    class Game_Troop
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :enemies                  # enemies
    end
    
    
    
    #==============================================================================
    # ** Scene_Battle
    #------------------------------------------------------------------------------
    #  This class performs battle screen processing.
    #==============================================================================
    
    class Scene_Battle
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias skillcombo_main main
      alias combo_end_skill_select end_skill_select
      alias combo_p3na phase3_next_actor
      alias combo_msar make_skill_action_result
      alias combo_up4s3 update_phase4_step3
      alias combo_up4s5 update_phase4_step5
      #--------------------------------------------------------------------------
      # * Main Processing
      #--------------------------------------------------------------------------
      def main
        # Reset Values
        $game_system.actor_combo_list = []
        $game_system.enemy_combo_list = []
        @combo_scope = false
        # Perform the original call
        skillcombo_main
      end  
      #--------------------------------------------------------------------------
      # * End Skill Selection
      #--------------------------------------------------------------------------
      def end_skill_select
        # Get Skill Select Data
        user_id       = @actor_index
        skill_id      = @active_battler.current_action.skill_id
        # Only if a valid skill
        if skill_id   != 0
          # Push actors & skills into array
          temp_array  = []
          temp_array  = [user_id, skill_id]
          $game_system.actor_combo_list.push(temp_array)
        end
        # Perform the original call
        combo_end_skill_select
      end
      #--------------------------------------------------------------------------
      # * Go to Command Input for Next Actor
      #--------------------------------------------------------------------------
      def phase3_next_actor
        # Disregard if no current battler
        unless @active_battler.nil?
          # If the actor has no skill
          if @active_battler.current_action.kind != 1
            # Check to make sure he/she is not in the combo list
            temp_party_list = []
            temp_party_list = $game_system.actor_combo_list
            # Cycle through the combo list
            for i in 0...temp_party_list.size
              # If the non-skill using actor is in the list
              if temp_party_list[i][0] == @active_battler.index
                # Remove him/her from the list
                combo_list_clear(@active_battler.index, true)
              end
            end
          end
        end
        # Perform the original call
        combo_p3na
      end  
      #--------------------------------------------------------------------------
      # * Make Skill Action Results
      #--------------------------------------------------------------------------
      def make_skill_action_result
        # Get Skill
        oldskill = $data_skills[@active_battler.current_action.skill_id]
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          unless @active_battler.casting_action.nil?
            unless @active_battler.casting_action.skill_id == 0
              oldskill = $data_skills[@active_battler.casting_action.skill_id]
            end
          end
        end
        # Determine if actors only or enemies permitted
        check_combo = false
        check_combo = true if @active_battler.is_a?(Game_Actor)
        check_combo = true if ENEMY_COMBOS
        # Check for combo skill (skill & sp flag) & Apply
        combo_skill = combo? if check_combo
        # if no combo skill
        if combo_skill.nil?
          # Perform the original call
          combo_msar
          # Erase battler from list
          if @active_battler.is_a?(Game_Actor)
            combo_list_clear(@active_battler.index, true)
          else
            combo_list_clear(@active_battler.index)
          end
        else
          # Perform combo skill
          make_combo_action_result(combo_skill, oldskill)
        end   
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 3 : animation for action performer)
      #--------------------------------------------------------------------------
      def update_phase4_step3
        # For animations
        if ANIM_COMBOS
          # Set who's casting (Actor or Enemy
          temp_party_list =
          @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
          # Acquire combo skill in use
          user_id = @active_battler.index
          combo_id = temp_party_list[user_id].combo_id
          # Go through party list
          for i in 0...temp_party_list.size
            # Only perform for addtl combo users
            if temp_party_list[i].combo_id != 0
            # Only if combo skill matches current user's
              if temp_party_list[i].combo_id == combo_id
                # Animation for action performer (if ID is 0, then white flash)
                if @animation1_id == 0
                  temp_party_list[i].white_flash   = true       
                else
                  temp_party_list[i].animation_id  = @animation1_id
                  temp_party_list[i].animation_hit = true
                end
              end
            end
          end
        end
        # Perform the original call
        combo_up4s3
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 4: animation for target)
      #--------------------------------------------------------------------------
      # For Charlie Fleed's CTB (wrapping the whole method used only by his CTB)
      if $charlie_lee_ctb
        alias combo_update_phase4_step4 update_phase4_step4
        def update_phase4_step4
          if @reflected_battler != nil
            # Save temp data
            temp1 = @reflected_battler.animation_id
            temp2 = @reflected_battler.animation_hit
          end
          # Perform the Original call
          combo_update_phase4_step4
          # set animation for char on which the skill is reflected
          # unless it's in reflex state too
          if @reflected_battler != nil
            # Target the last user if not a multi scope or combo skill
            if @combo_scope
              # Animation for target
              for target in @target_battlers
                target.animation_id = @animation2_id
                target.animation_hit = (target.damage != "Miss")
              end       
              # Reset changes in original method
              @reflected_battler.animation_id = temp1
              @reflected_battler.animation_hit = temp2
              # Apply changes for multi-scope combo
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                if $game_troop.enemies[user].state?($reflect_state_id)
                  unless REFLECT_ANIMATION_ID == nil
                    $game_troop.enemies[user].animation_id = REFLECT_ANIMATION_ID
                  end
                else
                  $game_troop.enemies[user].animation_id = @animation2_id
                  $game_troop.enemies[user].animation_hit = (target.damage != "Miss")  
                end
              end
            end
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 5 : damage display)
      #--------------------------------------------------------------------------
      # For Charlie Fleed's CTB (wrapping the whole method used only by his CTB)
      if $charlie_lee_ctb
        alias combo_update_phase4_step5 update_phase4_step5
        def update_phase4_step5
          # Perform the Original call
          combo_update_phase4_step5
          # set animation for char on which the skill is reflected
          # unless it's in reflex state too
          if @reflected_battler != nil
            # Target the last user if not a multi scope or combo skill
            if @combo_scope
              # Display damage
              for target in @target_battlers
                target.damage_pop = true if target.damage != nil
              end         
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                if $game_troop.enemies[user].damage != nil
                  $game_troop.enemies[user].damage_pop = true
                end
                if $game_troop.enemies[user].changed_state_text != []
                  $game_troop.enemies[user].changed_state_pop = true
                  # Show changed state text
                  @spriteset.battler($game_troop.enemies[user]).damage("", false,
                  $game_troop.enemies[user].changed_state_text)
                  $game_troop.enemies[user].changed_state_pop = false
                  $game_troop.enemies[user].changed_state_text = []
                end
              end         
            end
          end
          # Reset combo scope flag
          @combo_scope = false
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 5 : damage display)
      #--------------------------------------------------------------------------
      def update_phase4_step5
        # Set who's casting (Actor or Enemy
        temp_party_list =
        @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
        for i in 0...temp_party_list.size
          temp_party_list[i].combo_id = 0
        end
        # Perform the original call
        combo_up4s5   
      end
      #--------------------------------------------------------------------------
      # * Make Combo Action Results
      #     combo_skill : array of skill and boolean flag
      #     oldskill    : skill
      #--------------------------------------------------------------------------   
      def make_combo_action_result(combo_skill, oldskill)
        # Set the combo skill
        @skill = $data_skills[combo_skill[0]]
        # Obtain SP Cost (dependant on SP type in combo)
        battler_spcost = 0
        battler_spcost = combo_skill[1] ? @skill.sp_cost : oldskill.sp_cost
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect     
          # Unless playable
          unless @reacting or (@hits_count > 0)
            # Use up SP
            if @active_battler.sp_override_cost
              sp_cost = @active_battler.sp_override_cost
              @active_battler.sp_override_cost = nil
            else
              sp_cost = battler_spcost
            end
            # Use up SP (dependant on state)
            if @active_battler.state?($mp1_state_id)
              @active_battler.sp -= 1
            elsif @active_battler.state?($half_mp_state_id)
              @active_battler.sp -= sp_cost / 2
            else
              @active_battler.sp -= sp_cost
            end       
          end     
        else
          @active_battler.sp -= battler_spcost
        end
        # Refresh status window
        @status_window.refresh
        # Show skill name on help window
        @help_window.set_text(@skill.name, 1)
        # Set animation ID
        @animation1_id = @skill.animation1_id
        @animation2_id = @skill.animation2_id
        # Set command event ID
        @common_event_id = @skill.common_event_id
        # Set target battlers
        set_target_battlers(@skill.scope)
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          # Apply skill effect
          for target in @target_battlers
            $game_temp.skill_reflected = false
            # Check if target reflects and set 'skill_reflected'
            target.skill_effect(@active_battler, @skill)
            # Reflect support
            @reflected_battler = nil
            if $game_temp.skill_reflected
              if (target == @active_battler)
                @reflected_battler = $game_troop.random_target_enemy
              else
                @reflected_battler = @active_battler
              end
              @reflecters.push(target)
            end
          end
          # Reflect battler support
          if @reflected_battler != nil
            # Determine of combo skill is multi-targetting
            @combo_scope = combo_scope_check
            @combo_scope = false if @reflected_battler.combo_array == [false]
            # Target the last user if not a multi scope or combo skill
            unless @combo_scope
              @reflected_battler.skill_effect(@active_battler, @skill)
            # Otherwise a multi-scope combo
            else
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                $game_troop.enemies[user].skill_effect(@active_battler, @skill)
              end         
            end
          end     
        else
          # Apply skill effect
          for target in @target_battlers
            target.skill_effect(@active_battler, @skill)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Determine Combo Skill and Apply
      #--------------------------------------------------------------------------  
      def combo?
        # reset combos lists n flags
        cs_skills, cs_users, temp_combo_list, temp_party_list = [],[],[],[]
        combo_skill, index, cs_sp                             = nil, nil, false
        # What's your trigger?
        trigger_skill = @active_battler.current_action.skill_id
        # Set who's casting (Actor or Enemy
        if @active_battler.is_a?(Game_Actor)
          temp_combo_list = $game_system.actor_combo_list
          temp_party_list = $game_party.actors
        else
          temp_combo_list = $game_system.enemy_combo_list
          temp_party_list = $game_troop.enemies
        end
        # Clear Dead Members
        temp_combo_list = combo_list_clear_dead(temp_combo_list,temp_party_list)
        # Loop through combo list
        for i in 0...COMBOS.size
          # If exact match, acquire the combo users
          combo_users = []
          combo_users = combo_users_acquire(temp_combo_list, i, trigger_skill)
          unless combo_users == [false]
            combo_skill = COMBOS[i][0]
            index = i
            for j in 0...combo_users.size
              temp_party_list[combo_users[j]].combo_id = combo_skill
            end
            break
          end
        end
        # Assign combo party to current battler
        @active_battler.combo_array = combo_users
        # Return if no combo skills at all
        return nil if index.nil?
        # To ensure that someone not participating doesn't use the skill
        unless COMBOS[index][2].include?(@active_battler.current_action.skill_id)
          return nil
        end   
        # Last unlucky no-combo user (if he's last... lost it)
        return nil unless combo_users.include?(@active_battler.index)
        # Reset combo & actor counter
        combo_counter = 0
        user_counter  = []
        # Make sure all battlers can cast their skills (or have enough SP for combo)   
        for i in combo_users
          user = temp_party_list[i]
          cur_action = current_user_action(user)
          unless cur_action.skill_id.nil?
            if COMBOS[index][2].include?(cur_action.skill_id)
              if COMBOS[index][1] == true
                # SP flag (for current battler)
                cs_sp = true
                # Only if enough sp points for combo skill
                unless user.sp < $data_skills[COMBOS[index][0]].sp_cost
                  # Add to the counter
                  combo_counter += 1
                  # Push the actor into an array
                  user_counter.push(user)
                else
                  user.combo_id = 0
                end
              else
                # Only if can cast skill
                if user.skill_can_use?(cur_action.skill_id)
                  # Add to the counter
                  combo_counter += 1
                  # Push the actor into an array
                  user_counter.push(user)
                else
                  user.combo_id = 0             
                end
              end
            end
          end
        end
        # Re-integrate the lists
        if @active_battler.is_a?(Game_Actor)
          $game_system.actor_combo_list = temp_combo_list
          $game_party.actors = temp_party_list
        else
          $game_system.enemy_combo_list = temp_combo_list
          $game_troop.enemies = temp_party_list
        end   
        # Not enough MP for combo, perform as normal
        return nil if combo_counter < COMBOS[index][2].size
        # Remove SP & Remove from list
        if @active_battler.is_a?(Game_Actor)
          combo_list_clear_users(user_counter, index, true)
        else
          combo_list_clear_users(user_counter, index)
        end
        # return skill & flag
        return combo_skill, cs_sp
      end
      #--------------------------------------------------------------------------
      # * Check Scope of Combo Skill (returns false if none)
      #--------------------------------------------------------------------------   
      def combo_scope_check
        combo_scope = false
        # Set who's casting (Actor or Enemy
        temp_party_list =
        @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
        # Acquire combo skill in use
        user_id = @active_battler.index
        combo_id = temp_party_list[user_id].combo_id
        unless combo_id == 0
          combo_scope = true if $data_skills[combo_id].scope == 2
          combo_scope = true if $data_skills[combo_id].scope == 4
        end     
        return combo_scope
      end
      #--------------------------------------------------------------------------
      # * Combo?  Return Combo Users if Found
      #     temp_combo_list : array of actor or enemy skills in use
      #     i               : index identifying which COMBO ARRAY scanned
      #     trigger         : skill that triggered the combo (last skill)
      #--------------------------------------------------------------------------  
      def combo_users_acquire(temp_combo_list, i, trigger)
        select_combo = COMBOS[i][2]
        tempswtch    = 0
        tempswtch    = COMBOS[i][3] if COMBOS[i][3] != nil
        if tempswtch != 0
          return [false] if $game_switches[tempswtch] != true
        end
        temp_combos, combos, cs_skills, cs_users = [], [], [], []
        temp_combos, combos = temp_combo_list, select_combo
        combo1_temp, combo2_temp, combo3_temp, sample = [], [], [], []
        for j in 0...temp_combos.size
          # Push into temp array if skill is in curent combo
          combo1_temp.push(temp_combos[j]) if combos.include?(temp_combos[j][1])
        end       
        # If larger, narrow them down
        if combo1_temp.size > combos.size
          # Sort through combo array
          combo3_temp = combo1_temp
          for j in 0...combos.size
            # Push into temp array if combo is in curent actor skill array
            for k in 0...combo3_temp.size
              sample = combo3_temp[k]
              if sample[1] == combos[j]
                combo2_temp.push(sample)
                combo3_temp.delete_at(k)
                break
              end
            end
          end         
        else
          combo2_temp = combo1_temp
        end   
        # Sort and get skills from current list
        for list in 0...combo2_temp.size
          # Get the ids
          user_id = combo2_temp[list][0]
          skill_id = combo2_temp[list][1]
          # Push the ids
          cs_skills.push(skill_id)
          cs_users.push(user_id)
        end   
        # Sort for exact matching
        cs_skills.sort!
        cs_users.sort!
        combos.sort!   
        # Must include trigger
        return [false] unless cs_skills.include?(trigger)
        # If the exact match, return actors doing the combo
        return cs_users if cs_skills == combos
        # Nope
        return [false]
      end
      #--------------------------------------------------------------------------
      # * Combo?  Get Current Action (whether current_action or casting_action)
      #     battler     : actor
      #--------------------------------------------------------------------------  
      def current_user_action(battler)
        curr_action = battler.current_action
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          # Only get overriding skill if a skill exists
          unless battler.casting_action.nil?
            curr_action = battler.casting_action unless battler.casting_action.skill_id == 0
          end
        end
        return curr_action
      end
      #--------------------------------------------------------------------------
      # * Combo?  Drain SP Cost
      #     battler     : actor
      #     action      : current action / casting action
      #     index       : index of Combos (which combo is used)
      #--------------------------------------------------------------------------   
      def combo_sp_cost(battler, action, index)
        # If not the 'current' battler and is using the current combo skill
        unless battler.id == @active_battler.id
          battler.combo_timer if $game_system.combos_cfc_detect
          if COMBOS[index][2].include?(action.skill_id)
            # Obtain SP Cost (dependant on SP type in combo)
            if COMBOS[index][1] == true
              battler_spcost = $data_skills[COMBOS[index][0]].sp_cost
            else
              battler_spcost = $data_skills[action.skill_id].sp_cost
            end
            # Use up SP (dependant on state)
            if @active_battler.state?($mp1_state_id)
              battler.sp -= 1
            elsif @active_battler.state?($half_mp_state_id)
              battler.sp -= battler_spcost / 2
            else
              battler.sp -= battler_spcost
            end
          end
        end   
        # Reset Regardless if trigger man or skill collaborators
        action.kind = -1
        battler.current_action.kind = -1
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          battler.cf_casting = false
        end
      end  
      #--------------------------------------------------------------------------
      # * Clear Dead from Combo List
      #     temp_combo_list : array of actor or enemy skills in use
      #     temp_party_list : list of party or troop members
      #--------------------------------------------------------------------------  
      def combo_list_clear_dead(temp_combo_list, temp_party_list)
        # Recreate the list, eliminating dead members
        temp_array1 = []
        for list in 0..temp_combo_list.size-1
          user_id = temp_combo_list[list][0]
          skill_id = temp_combo_list[list][1]
          unless temp_party_list[user_id].dead?
            temp_array2 = []
            temp_array2 = [user_id, skill_id]
            temp_array1.push(temp_array2)
          end
        end
        temp_combo_list = []
        temp_combo_list = temp_array1
        return temp_combo_list   
      end  
      #--------------------------------------------------------------------------
      # * Clear Combo Users from Combo List & Apply SP costs
      #     user_counter    : list of actors
      #     index           : index of Combos (which combo is used)  
      #     temp_combo_list : array of actor or enemy skills in use
      #--------------------------------------------------------------------------  
      def combo_list_clear_users(user_counter, index, actor_flag=false)
        # Remove SP & Remove from list
        for user in user_counter
          cur_action = current_user_action(user)
          # Make sure all additional battlers use up their sp
          combo_sp_cost(user, cur_action, index)
          # Erase from combo list
          combo_list_clear(user.index, actor_flag)
        end
      end   
      #--------------------------------------------------------------------------
      # * Clear from Combo List
      #     value           : index value of actor in system
      #     temp_combo_list : array of actor or enemy skills in use
      #--------------------------------------------------------------------------  
      def combo_list_clear(value, actor_flag=false)
        temp_array = []
        # Set who's casting (Actor or Enemy
        if actor_flag
          temp_combo_list = $game_system.actor_combo_list
        else
          temp_combo_list = $game_system.enemy_combo_list
        end   
        for combo in temp_combo_list
          temp_array.push(combo) unless value == combo[0]
        end
        temp_combo_list = temp_array
        if actor_flag
          $game_system.actor_combo_list = temp_combo_list
        else
          $game_system.enemy_combo_list = temp_combo_list
        end   
      end
    end
    
     
    #6
  7. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    First off... My bad. I just tested Trickster's system and it has a BUG in it. Just try using the Crosscut skill all by itself and it still generates the fire slash attack. It gives the combo skill effect but without it being part of a combo. Trickster goofed,

    Second, I think that the notion that a combo skill cannot combine because an enemy is immune doesn't really work. Why wouldn't the skill combine if the heroes know how to combine it. The Enemy should just be immune or have a strong defense against the attack.

    Now THIRD.... I forgot I had an old script of my own that does combos. I just spent 15 minutes adding an option into the combos that a switch needs to be turned on for a switch to be learned...... or have no switch at all and it is learned automatically.

    Pop this into a project for a test run.
    IF you have switch 21 turned on, Aluxes's, Gloria's and Hilda's skill attacks bring out a nice light show
    If you have switch 1 turned on, Hilda's fire attack grows awesome by itself.
    Aluxes's Cross Cut and Hilda's Fire attack should generate a combo by itself.... no switch needed.
    Code:
    #==============================================================================
    # ** Karen's Combos
    #------------------------------------------------------------------------------
    #    by DerVVulfman
    #    version 2.0
    #    08-24-2010
    #    RPGMaker XP / RGSS (Compatible with SDK v 2.3 and earlier)
    #------------------------------------------------------------------------------
    #
    #  INTRODUCTION:
    #  This system allows you to have battlers combine their skill effects to pro-
    #  duce a different skill action.
    #
    #------------------------------------------------------------------------------
    #
    #  INSTALLATION:
    #  Paste below Scene_Debug and/or your battlesystem and addons and above Main.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  INSTRUCTIONS:
    #  The system is fairly easy  as there are only three configurables to handle.
    #  One is the list of the combos used.   The second determines if enemies can
    #  perform combos.   And the third determines  if those performing a combined
    #  skill perform a user animation together, or if it's just the trigger man.
    #
    #
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #
    #  COMBOS:
    #  There is  an array  called COMBOS  that is  a list  of the special Combined
    #  skill, and the individual skills that are combined to perform it.   I don't
    #  know how else to really describe it.
    #
    #  The structure for each skill combo is fairly simple:
    #
    #         [ Result, SP Type, [ skill_id, skill_id,.... ], Switch]
    #
    #   Result        This value is the ID of the resulting 'combo skill' used.
    #   SP Type       This sets up how the battler's SP points are used (see below)
    #   Combinations  This is a list of skill IDs used to call the combo skill
    #   Switch        This is the ID for the switch that turns the combo on.
    #
    #  There is  an array  called COMBOS  that is  a list  of the special Combined
    #  The order in which the skills are placed  should be by order of preference,
    #  with the most desired but difficult to attain skills on the top. The easier
    #  to gain ones should be situated at the bottom of your list.
    #
    #    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .
    #
    #  * The SP Type value determines if the battlers use the SP points from the
    #    skills that they  are using,  or if it is based on the  'combo'  skill.
    #    If it is set to 'true', then the battlers use the SP Cost of the combo.
    #    The battlers must have enough 'SP' to be able to use their combo.
    #
    #  * If there is no Switch value (ie nil), it assumes it is on from the start.
    #
    #------------------------------------------------------------------------------
    #
    #  TRIGGERING THE COMBO SKILLS:
    #  Whether the player assigns skills for the actors,  or if the game assigns
    #  skills to monsters, these skills are loaded into an array for use.  These
    #  skills remain in memory until triggered.   Whichever battlesystem you use
    #  this system on, one thing is fairly certain. The fastest team-member with
    #  a loaded spell  for a given combo  is usually  the one  that triggers the
    #  combined skill effect.
    #
    #  I call him the trigger man.
    #
    #  Most combo systems  operate under this principle,  so those who have used
    #  similar scripts shouldn't be surprised. Nor should they be surprised that
    #  the final target of the combo skill will be determined by the trigger man.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  COMBOS WITH DIFFERENT TARGETS:
    #  When combos are performed, the last loaded or triggering skill determines
    #  the target of the combined attack.  As such, if a delayed skill targeting
    #  a ghost and a lightning bolt skill that immediately attacks a skeleton is
    #  combined, the skeleton target will feel the brunt of the combined attack.
    #
    #  The only exception to this would be if the resulting combined skill works
    #  on all targets.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  LAST MAN STANDING
    #  It happens  once and a while  when a skill combo is being cast  and there
    #  are more than enough participants  for that combined skill to be created.
    #  The system will cycle through  the current list of actors or enemies that
    #  can perform the combo  and generate a list.   If two or more participants
    #  are performing the same skill, one will be chosen based on their position
    #  within the party (Aluxes gets chosen over Basil, chosen over Gloria...).
    #
    #  When that happens, there are two possible actions.
    #
    #  If the trigger man  is not a combo user,  or if any  would-be participant
    #  not selected  to be part of the combined skill  is faster than those per-
    #  forming the skill, their non-combo skills get performed.
    #
    #    Example:
    #    * Aluxes, Basil and Gloria are selected for a shockwave attack.
    #    * Shockwave uses only two skills and both Aluxes and Basil have one.
    #    * Aluxes is chosen and is paired with Gloria.
    #    * Basil is faster and can go first.            **** CASTING SPELL  ****
    #    * Aluxes and Gloria cast their combo next.     ****  COMBO SKILL!  ****
    #
    #  But,  if the would-be participant  of a combined skill reacts slower than
    #  those performing the skill, that skill is cast last.  Formerly,  it would
    #  have been wasted.  But that problem has been solved.
    #
    #    Example:
    #    * Aluxes, Basil and Gloria are selected for a shockwave attack.
    #    * Shockwave uses only two skills and both Aluxes and Basil have one.
    #    * Aluxes is chosen and is paired with Gloria.
    #    * Aluxes and Gloria cast their combo first.    ****  COMBO SKILL!  ****
    #    * Basil tries to cast, but lost his chance.    **** CASTING SPELL  ****
    #
    #
    #------------------------------------------------------------------------------
    #
    #  COMPATABILITY:   
    #  Designed for use with RPGMakerXP.
    #
    #  With all the aliases involved, it should work with the default battlesystem
    #  and versions of the SDK from versions 2.3 and earlier. It also has allowan-
    #  ces and edits specifially designed for Charlie Fleed's FF-like CTB.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  SCRIPT MODULES:
    #  The following modules  have been added or changed.   Please take care  when
    #  using with other systems that may be affected.
    #  
    #  Aliased:
    #  ----------------
    #  Game_System:      initialize
    #  Game_Battler:     initialize
    #  Game_Enemy:       make_action
    #  Scene_Battle:     main, end_skill_select, phase3_next_actor,
    #                    make_skill_action_result, update_phase4_step3,
    #                    update_phase4_step4, update_phase4_step5
    #
    #   
    #  Rewritten:  
    #  ------------
    #  Game_Party:       actors  (Array now re-defined for read and write methods)
    #  Game_Troop:       enemies (Array now defined for read and write methods)
    #
    #
    #  New:
    #  ------------
    #  Game_Battler:     combo_timer
    #  Scene_Battle:     make_combo_action_result, combo?, combo_users_acquire,
    #                    current_user_action, combo_sp_cost, combo_list_clear_dead,
    #                    combo_list_clear_users, combo_list_clear, combo_scope_check
    #  
    #
    #------------------------------------------------------------------------------
    #
    #  CREDITS & THANKS:
    #  Eh...  kinda got inspired by Cogwheel who made one of the first Combo Skill
    #  systems,  and Trickster for his work on his own system.  Later advances for
    #  Karen's Combos was due in part by development with Charlie Fleed's CTB.
    #
    #
    #------------------------------------------------------------------------------
    #
    #  TERMS AND CONDITIONS:
    #
    #  Free to use, even in commercial projects.  Just note that I need some form
    #  of due credit... even a mere mention in some end titles.
    #
    #
    #==============================================================================
    
    
      # == The Configurable COMBO Array ==
      #
      #                 Result  SP type,  Combinations  Switch
      COMBOS        = [ [32,    true,     [57,1, 7],    21],
                        [68,    false,    [57, 7],],
                        [9,     false,    [7],          1]
                      ]  
    
                   
      # == Whether Enemies can perform COMBOS
      #    (true/false)         
      #                 
      ENEMY_COMBOS  = true
     
     
      # == Whether all performing combos perform
      #    synced battle animations.
      #    (true/false)         
      #                 
      ANIM_COMBOS   = true
     
                   
    #==============================================================================
    # ** Game_System
    #------------------------------------------------------------------------------
    #  This class handles data surrounding the system. Backround music, etc.
    #  is managed here as well. Refer to "$game_system" for the instance of
    #  this class.
    #==============================================================================
    
    class Game_System
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :actor_combo_list         # array for actors and skills used
      attr_accessor :enemy_combo_list         # array for enemies and skills used
      attr_accessor :combos_cfc_detect        # Charlie Fleed's CTB Detection  
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias combo_initialize initialize
      def initialize
        # Perform the original call
        combo_initialize
        # Initialize the arrays
        @actor_combo_list = []
        @enemy_combo_list = []
        @combos_cfc_detect = true  if $charlie_lee_ctb
      end
    end
    
    
    #==============================================================================
    # ** Game_Battler
    #------------------------------------------------------------------------------
    #  This class deals with battlers. It's used as a superclass for the Game_Actor
    #  and Game_Enemy classes.
    #==============================================================================
    
    class Game_Battler
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :combo_id                 # Combo skill ID
      attr_accessor :combo_array
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      alias combo_init initialize
      def initialize
        # Perform the original call
        combo_init
        @combo_id = 0  # Add the combo ID value
        @combo_array = []
      end
      #--------------------------------------------------------------------------
      # * Recalculate Timer for Combo Users
      #--------------------------------------------------------------------------  
      def combo_timer
        @next_action_time = @next_action_time + @after_cast_delay + @rest_delay
      end
    end
    
    
    
    
    #==============================================================================
    # ** Game_Enemy
    #------------------------------------------------------------------------------
    #  This class handles enemies. It's used within the Game_Troop class
    #  ($game_troop).
    #==============================================================================
    
    class Game_Enemy < Game_Battler
      #--------------------------------------------------------------------------
      # * Make Action
      #--------------------------------------------------------------------------
      alias combo_make_action make_action
      def make_action
        # Perform the original call
        combo_make_action
        # Push enemies & skills into array
        if self.current_action.kind == 1
          temp_array  = []
          enemy_id    = self.index
          skill_id    = self.current_action.skill_id
          temp_array  = [enemy_id, skill_id]
          $game_system.enemy_combo_list.push(temp_array)
        end
      end
    end
    
    
    
    #==============================================================================
    # ** Game_Party
    #------------------------------------------------------------------------------
    #  This class handles the party. It includes information on amount of gold
    #  and items. Refer to "$game_party" for the instance of this class.
    #==============================================================================
    
    class Game_Party
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :actors                   # actors
    end
    
    
    
    #==============================================================================
    # ** Game_Troop
    #------------------------------------------------------------------------------
    #  This class deals with troops. Refer to "$game_troop" for the instance of
    #  this class.
    #==============================================================================
    
    class Game_Troop
      #--------------------------------------------------------------------------
      # * Public Instance Variables
      #--------------------------------------------------------------------------
      attr_accessor :enemies                  # enemies
    end
    
    
    
    #==============================================================================
    # ** Scene_Battle
    #------------------------------------------------------------------------------
    #  This class performs battle screen processing.
    #==============================================================================
    
    class Scene_Battle
      #--------------------------------------------------------------------------
      # * Alias Listings
      #--------------------------------------------------------------------------
      alias skillcombo_main main
      alias combo_end_skill_select end_skill_select
      alias combo_p3na phase3_next_actor
      alias combo_msar make_skill_action_result
      alias combo_up4s3 update_phase4_step3
      alias combo_up4s5 update_phase4_step5
      #--------------------------------------------------------------------------
      # * Main Processing
      #--------------------------------------------------------------------------
      def main
        # Reset Values
        $game_system.actor_combo_list = []
        $game_system.enemy_combo_list = []
        @combo_scope = false
        # Perform the original call
        skillcombo_main
      end  
      #--------------------------------------------------------------------------
      # * End Skill Selection
      #--------------------------------------------------------------------------
      def end_skill_select
        # Get Skill Select Data
        user_id       = @actor_index
        skill_id      = @active_battler.current_action.skill_id
        # Only if a valid skill
        if skill_id   != 0
          # Push actors & skills into array
          temp_array  = []
          temp_array  = [user_id, skill_id]
          $game_system.actor_combo_list.push(temp_array)
        end
        # Perform the original call
        combo_end_skill_select
      end
      #--------------------------------------------------------------------------
      # * Go to Command Input for Next Actor
      #--------------------------------------------------------------------------
      def phase3_next_actor
        # Disregard if no current battler
        unless @active_battler.nil?
          # If the actor has no skill
          if @active_battler.current_action.kind != 1
            # Check to make sure he/she is not in the combo list
            temp_party_list = []
            temp_party_list = $game_system.actor_combo_list
            # Cycle through the combo list
            for i in 0...temp_party_list.size
              # If the non-skill using actor is in the list
              if temp_party_list[i][0] == @active_battler.index
                # Remove him/her from the list
                combo_list_clear(@active_battler.index, true)
              end
            end
          end
        end
        # Perform the original call
        combo_p3na
      end  
      #--------------------------------------------------------------------------
      # * Make Skill Action Results
      #--------------------------------------------------------------------------
      def make_skill_action_result
        # Get Skill
        oldskill = $data_skills[@active_battler.current_action.skill_id]
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          unless @active_battler.casting_action.nil?
            unless @active_battler.casting_action.skill_id == 0
              oldskill = $data_skills[@active_battler.casting_action.skill_id]
            end
          end
        end
        # Determine if actors only or enemies permitted
        check_combo = false
        check_combo = true if @active_battler.is_a?(Game_Actor)
        check_combo = true if ENEMY_COMBOS
        # Check for combo skill (skill & sp flag) & Apply
        combo_skill = combo? if check_combo
        # if no combo skill
        if combo_skill.nil?
          # Perform the original call
          combo_msar
          # Erase battler from list
          if @active_battler.is_a?(Game_Actor)
            combo_list_clear(@active_battler.index, true)
          else
            combo_list_clear(@active_battler.index)
          end
        else
          # Perform combo skill
          make_combo_action_result(combo_skill, oldskill)
        end   
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 3 : animation for action performer)
      #--------------------------------------------------------------------------
      def update_phase4_step3
        # For animations
        if ANIM_COMBOS
          # Set who's casting (Actor or Enemy
          temp_party_list =
          @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
          # Acquire combo skill in use
          user_id = @active_battler.index
          combo_id = temp_party_list[user_id].combo_id
          # Go through party list
          for i in 0...temp_party_list.size
            # Only perform for addtl combo users
            if temp_party_list[i].combo_id != 0
            # Only if combo skill matches current user's
              if temp_party_list[i].combo_id == combo_id
                # Animation for action performer (if ID is 0, then white flash)
                if @animation1_id == 0
                  temp_party_list[i].white_flash   = true       
                else
                  temp_party_list[i].animation_id  = @animation1_id
                  temp_party_list[i].animation_hit = true
                end
              end
            end
          end
        end
        # Perform the original call
        combo_up4s3
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 4: animation for target)
      #--------------------------------------------------------------------------
      # For Charlie Fleed's CTB (wrapping the whole method used only by his CTB)
      if $charlie_lee_ctb
        alias combo_update_phase4_step4 update_phase4_step4
        def update_phase4_step4
          if @reflected_battler != nil
            # Save temp data
            temp1 = @reflected_battler.animation_id
            temp2 = @reflected_battler.animation_hit
          end
          # Perform the Original call
          combo_update_phase4_step4
          # set animation for char on which the skill is reflected
          # unless it's in reflex state too
          if @reflected_battler != nil
            # Target the last user if not a multi scope or combo skill
            if @combo_scope
              # Animation for target
              for target in @target_battlers
                target.animation_id = @animation2_id
                target.animation_hit = (target.damage != "Miss")
              end       
              # Reset changes in original method
              @reflected_battler.animation_id = temp1
              @reflected_battler.animation_hit = temp2
              # Apply changes for multi-scope combo
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                if $game_troop.enemies[user].state?($reflect_state_id)
                  unless REFLECT_ANIMATION_ID == nil
                    $game_troop.enemies[user].animation_id = REFLECT_ANIMATION_ID
                  end
                else
                  $game_troop.enemies[user].animation_id = @animation2_id
                  $game_troop.enemies[user].animation_hit = (target.damage != "Miss")  
                end
              end
            end
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 5 : damage display)
      #--------------------------------------------------------------------------
      # For Charlie Fleed's CTB (wrapping the whole method used only by his CTB)
      if $charlie_lee_ctb
        alias combo_update_phase4_step5 update_phase4_step5
        def update_phase4_step5
          # Perform the Original call
          combo_update_phase4_step5
          # set animation for char on which the skill is reflected
          # unless it's in reflex state too
          if @reflected_battler != nil
            # Target the last user if not a multi scope or combo skill
            if @combo_scope
              # Display damage
              for target in @target_battlers
                target.damage_pop = true if target.damage != nil
              end         
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                if $game_troop.enemies[user].damage != nil
                  $game_troop.enemies[user].damage_pop = true
                end
                if $game_troop.enemies[user].changed_state_text != []
                  $game_troop.enemies[user].changed_state_pop = true
                  # Show changed state text
                  @spriteset.battler($game_troop.enemies[user]).damage("", false,
                  $game_troop.enemies[user].changed_state_text)
                  $game_troop.enemies[user].changed_state_pop = false
                  $game_troop.enemies[user].changed_state_text = []
                end
              end         
            end
          end
          # Reset combo scope flag
          @combo_scope = false
        end
      end
      #--------------------------------------------------------------------------
      # * Frame Update (main phase step 5 : damage display)
      #--------------------------------------------------------------------------
      def update_phase4_step5
        # Set who's casting (Actor or Enemy
        temp_party_list =
        @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
        for i in 0...temp_party_list.size
          temp_party_list[i].combo_id = 0
        end
        # Perform the original call
        combo_up4s5   
      end
      #--------------------------------------------------------------------------
      # * Make Combo Action Results
      #     combo_skill : array of skill and boolean flag
      #     oldskill    : skill
      #--------------------------------------------------------------------------   
      def make_combo_action_result(combo_skill, oldskill)
        # Set the combo skill
        @skill = $data_skills[combo_skill[0]]
        # Obtain SP Cost (dependant on SP type in combo)
        battler_spcost = 0
        battler_spcost = combo_skill[1] ? @skill.sp_cost : oldskill.sp_cost
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect     
          # Unless playable
          unless @reacting or (@hits_count > 0)
            # Use up SP
            if @active_battler.sp_override_cost
              sp_cost = @active_battler.sp_override_cost
              @active_battler.sp_override_cost = nil
            else
              sp_cost = battler_spcost
            end
            # Use up SP (dependant on state)
            if @active_battler.state?($mp1_state_id)
              @active_battler.sp -= 1
            elsif @active_battler.state?($half_mp_state_id)
              @active_battler.sp -= sp_cost / 2
            else
              @active_battler.sp -= sp_cost
            end       
          end     
        else
          @active_battler.sp -= battler_spcost
        end
        # Refresh status window
        @status_window.refresh
        # Show skill name on help window
        @help_window.set_text(@skill.name, 1)
        # Set animation ID
        @animation1_id = @skill.animation1_id
        @animation2_id = @skill.animation2_id
        # Set command event ID
        @common_event_id = @skill.common_event_id
        # Set target battlers
        set_target_battlers(@skill.scope)
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          # Apply skill effect
          for target in @target_battlers
            $game_temp.skill_reflected = false
            # Check if target reflects and set 'skill_reflected'
            target.skill_effect(@active_battler, @skill)
            # Reflect support
            @reflected_battler = nil
            if $game_temp.skill_reflected
              if (target == @active_battler)
                @reflected_battler = $game_troop.random_target_enemy
              else
                @reflected_battler = @active_battler
              end
              @reflecters.push(target)
            end
          end
          # Reflect battler support
          if @reflected_battler != nil
            # Determine of combo skill is multi-targetting
            @combo_scope = combo_scope_check
            @combo_scope = false if @reflected_battler.combo_array == [false]
            # Target the last user if not a multi scope or combo skill
            unless @combo_scope
              @reflected_battler.skill_effect(@active_battler, @skill)
            # Otherwise a multi-scope combo
            else
              for i in 0...@reflected_battler.combo_array.size
                user = @reflected_battler.combo_array[i]
                $game_troop.enemies[user].skill_effect(@active_battler, @skill)
              end         
            end
          end     
        else
          # Apply skill effect
          for target in @target_battlers
            target.skill_effect(@active_battler, @skill)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Determine Combo Skill and Apply
      #--------------------------------------------------------------------------  
      def combo?
        # reset combos lists n flags
        cs_skills, cs_users, temp_combo_list, temp_party_list = [],[],[],[]
        combo_skill, index, cs_sp                             = nil, nil, false
        # What's your trigger?
        trigger_skill = @active_battler.current_action.skill_id
        # Set who's casting (Actor or Enemy
        if @active_battler.is_a?(Game_Actor)
          temp_combo_list = $game_system.actor_combo_list
          temp_party_list = $game_party.actors
        else
          temp_combo_list = $game_system.enemy_combo_list
          temp_party_list = $game_troop.enemies
        end
        # Clear Dead Members
        temp_combo_list = combo_list_clear_dead(temp_combo_list,temp_party_list)
        # Loop through combo list
        for i in 0...COMBOS.size
          # If exact match, acquire the combo users
          combo_users = []
          combo_users = combo_users_acquire(temp_combo_list, i, trigger_skill)
          unless combo_users == [false]
            combo_skill = COMBOS[i][0]
            index = i
            for j in 0...combo_users.size
              temp_party_list[combo_users[j]].combo_id = combo_skill
            end
            break
          end
        end
        # Assign combo party to current battler
        @active_battler.combo_array = combo_users
        # Return if no combo skills at all
        return nil if index.nil?
        # To ensure that someone not participating doesn't use the skill
        unless COMBOS[index][2].include?(@active_battler.current_action.skill_id)
          return nil
        end   
        # Last unlucky no-combo user (if he's last... lost it)
        return nil unless combo_users.include?(@active_battler.index)
        # Reset combo & actor counter
        combo_counter = 0
        user_counter  = []
        # Make sure all battlers can cast their skills (or have enough SP for combo)   
        for i in combo_users
          user = temp_party_list[i]
          cur_action = current_user_action(user)
          unless cur_action.skill_id.nil?
            if COMBOS[index][2].include?(cur_action.skill_id)
              if COMBOS[index][1] == true
                # SP flag (for current battler)
                cs_sp = true
                # Only if enough sp points for combo skill
                unless user.sp < $data_skills[COMBOS[index][0]].sp_cost
                  # Add to the counter
                  combo_counter += 1
                  # Push the actor into an array
                  user_counter.push(user)
                else
                  user.combo_id = 0
                end
              else
                # Only if can cast skill
                if user.skill_can_use?(cur_action.skill_id)
                  # Add to the counter
                  combo_counter += 1
                  # Push the actor into an array
                  user_counter.push(user)
                else
                  user.combo_id = 0             
                end
              end
            end
          end
        end
        # Re-integrate the lists
        if @active_battler.is_a?(Game_Actor)
          $game_system.actor_combo_list = temp_combo_list
          $game_party.actors = temp_party_list
        else
          $game_system.enemy_combo_list = temp_combo_list
          $game_troop.enemies = temp_party_list
        end   
        # Not enough MP for combo, perform as normal
        return nil if combo_counter < COMBOS[index][2].size
        # Remove SP & Remove from list
        if @active_battler.is_a?(Game_Actor)
          combo_list_clear_users(user_counter, index, true)
        else
          combo_list_clear_users(user_counter, index)
        end
        # return skill & flag
        return combo_skill, cs_sp
      end
      #--------------------------------------------------------------------------
      # * Check Scope of Combo Skill (returns false if none)
      #--------------------------------------------------------------------------   
      def combo_scope_check
        combo_scope = false
        # Set who's casting (Actor or Enemy
        temp_party_list =
        @active_battler.is_a?(Game_Actor) ? $game_party.actors : $game_troop.enemies
        # Acquire combo skill in use
        user_id = @active_battler.index
        combo_id = temp_party_list[user_id].combo_id
        unless combo_id == 0
          combo_scope = true if $data_skills[combo_id].scope == 2
          combo_scope = true if $data_skills[combo_id].scope == 4
        end     
        return combo_scope
      end
      #--------------------------------------------------------------------------
      # * Combo?  Return Combo Users if Found
      #     temp_combo_list : array of actor or enemy skills in use
      #     i               : index identifying which COMBO ARRAY scanned
      #     trigger         : skill that triggered the combo (last skill)
      #--------------------------------------------------------------------------  
      def combo_users_acquire(temp_combo_list, i, trigger)
        select_combo = COMBOS[i][2]
        tempswtch    = 0
        tempswtch    = COMBOS[i][3] if COMBOS[i][3] != nil
        if tempswtch != 0
          return [false] if $game_switches[tempswtch] != true
        end
        temp_combos, combos, cs_skills, cs_users = [], [], [], []
        temp_combos, combos = temp_combo_list, select_combo
        combo1_temp, combo2_temp, combo3_temp, sample = [], [], [], []
        for j in 0...temp_combos.size
          # Push into temp array if skill is in curent combo
          combo1_temp.push(temp_combos[j]) if combos.include?(temp_combos[j][1])
        end       
        # If larger, narrow them down
        if combo1_temp.size > combos.size
          # Sort through combo array
          combo3_temp = combo1_temp
          for j in 0...combos.size
            # Push into temp array if combo is in curent actor skill array
            for k in 0...combo3_temp.size
              sample = combo3_temp[k]
              if sample[1] == combos[j]
                combo2_temp.push(sample)
                combo3_temp.delete_at(k)
                break
              end
            end
          end         
        else
          combo2_temp = combo1_temp
        end   
        # Sort and get skills from current list
        for list in 0...combo2_temp.size
          # Get the ids
          user_id = combo2_temp[list][0]
          skill_id = combo2_temp[list][1]
          # Push the ids
          cs_skills.push(skill_id)
          cs_users.push(user_id)
        end   
        # Sort for exact matching
        cs_skills.sort!
        cs_users.sort!
        combos.sort!   
        # Must include trigger
        return [false] unless cs_skills.include?(trigger)
        # If the exact match, return actors doing the combo
        return cs_users if cs_skills == combos
        # Nope
        return [false]
      end
      #--------------------------------------------------------------------------
      # * Combo?  Get Current Action (whether current_action or casting_action)
      #     battler     : actor
      #--------------------------------------------------------------------------  
      def current_user_action(battler)
        curr_action = battler.current_action
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          # Only get overriding skill if a skill exists
          unless battler.casting_action.nil?
            curr_action = battler.casting_action unless battler.casting_action.skill_id == 0
          end
        end
        return curr_action
      end
      #--------------------------------------------------------------------------
      # * Combo?  Drain SP Cost
      #     battler     : actor
      #     action      : current action / casting action
      #     index       : index of Combos (which combo is used)
      #--------------------------------------------------------------------------   
      def combo_sp_cost(battler, action, index)
        # If not the 'current' battler and is using the current combo skill
        unless battler.id == @active_battler.id
          battler.combo_timer if $game_system.combos_cfc_detect
          if COMBOS[index][2].include?(action.skill_id)
            # Obtain SP Cost (dependant on SP type in combo)
            if COMBOS[index][1] == true
              battler_spcost = $data_skills[COMBOS[index][0]].sp_cost
            else
              battler_spcost = $data_skills[action.skill_id].sp_cost
            end
            # Use up SP (dependant on state)
            if @active_battler.state?($mp1_state_id)
              battler.sp -= 1
            elsif @active_battler.state?($half_mp_state_id)
              battler.sp -= battler_spcost / 2
            else
              battler.sp -= battler_spcost
            end
          end
        end   
        # Reset Regardless if trigger man or skill collaborators
        action.kind = -1
        battler.current_action.kind = -1
        # For Charlie Fleed's CTB
        if $game_system.combos_cfc_detect   
          battler.cf_casting = false
        end
      end  
      #--------------------------------------------------------------------------
      # * Clear Dead from Combo List
      #     temp_combo_list : array of actor or enemy skills in use
      #     temp_party_list : list of party or troop members
      #--------------------------------------------------------------------------  
      def combo_list_clear_dead(temp_combo_list, temp_party_list)
        # Recreate the list, eliminating dead members
        temp_array1 = []
        for list in 0..temp_combo_list.size-1
          user_id = temp_combo_list[list][0]
          skill_id = temp_combo_list[list][1]
          unless temp_party_list[user_id].dead?
            temp_array2 = []
            temp_array2 = [user_id, skill_id]
            temp_array1.push(temp_array2)
          end
        end
        temp_combo_list = []
        temp_combo_list = temp_array1
        return temp_combo_list   
      end  
      #--------------------------------------------------------------------------
      # * Clear Combo Users from Combo List & Apply SP costs
      #     user_counter    : list of actors
      #     index           : index of Combos (which combo is used)  
      #     temp_combo_list : array of actor or enemy skills in use
      #--------------------------------------------------------------------------  
      def combo_list_clear_users(user_counter, index, actor_flag=false)
        # Remove SP & Remove from list
        for user in user_counter
          cur_action = current_user_action(user)
          # Make sure all additional battlers use up their sp
          combo_sp_cost(user, cur_action, index)
          # Erase from combo list
          combo_list_clear(user.index, actor_flag)
        end
      end   
      #--------------------------------------------------------------------------
      # * Clear from Combo List
      #     value           : index value of actor in system
      #     temp_combo_list : array of actor or enemy skills in use
      #--------------------------------------------------------------------------  
      def combo_list_clear(value, actor_flag=false)
        temp_array = []
        # Set who's casting (Actor or Enemy
        if actor_flag
          temp_combo_list = $game_system.actor_combo_list
        else
          temp_combo_list = $game_system.enemy_combo_list
        end   
        for combo in temp_combo_list
          temp_array.push(combo) unless value == combo[0]
        end
        temp_combo_list = temp_array
        if actor_flag
          $game_system.actor_combo_list = temp_combo_list
        else
          $game_system.enemy_combo_list = temp_combo_list
        end   
      end
    end
    
     
    #7
  8. AveyondFan

    AveyondFan Villager Member

    Messages:
    23
    Likes Received:
    1
    First Language:
    English
    Primarily Uses:
    RMXP
    Sorry that I haven't been on in a while.
    This is what I'm looking for. Actually, it's almost exactly what I'm looking for. I just need to figure out how to make it so that I can allow the skills to be separate on the same round even if the heroes have learned to combine them (I.e if I wanted Alexus to use cross slash, Hilda fire, and Gloria healing separately on the same round even after the switch for them to use their shock wave ability is turned on). Basically, I'm trying to allow the player to choose whether two-three heroes combine their turns for one single attack or those two-three heroes take their turns separately, as they would normally (i.e choosing between the radiate spell (Alexus, Gloria, and Hilda together) vs cross cut, heal, and fire (Alexus, Gloria, and Hilda separate).
    Does that make sense?
     
    #8
  9. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    I recognize your intent. However, I have not seen 'deliberation' as an option in any Combined-Skills system. For one thing, you would need to have an extra 'choice' in each actor's in-battle skill select option if they wish to combine their skills. And for another, not all actors may be able to cast/use their skills when so desired (ie Silenced, MP drain to 0, killed first). And it would be virtually impossible to set up especially if one wished to have Two-on-Two combinations like: Basil & Gloria combining for one effect while Aluxes and Hilda another... When all four's spells selected would normally combine to make a big blast.

    Systems such as these only recognizes the actual combination of skills in the main action phase (or the 4th phase) after the actors have already decided upon their actions. When it is time for an actor to choose his/her skill, nothing appears showing that a choice results in (or can result in) a combination attack, as the system has not reached the point where skills combine. This for any system I have seen, from cogwheel's RTAB + Cooperative Skills Ver 1.02 on up.
     
    #9
  10. AveyondFan

    AveyondFan Villager Member

    Messages:
    23
    Likes Received:
    1
    First Language:
    English
    Primarily Uses:
    RMXP
    Sorry for the delayed reply.
    So there's no way to specify what you want the spells to do without managing to do something crazy? And what do you mean by an "extra 'choice' in each actor's in-battle skill select option"? You mean an option other than attack, defend, spell, and item? Or do you mean something else? Or is it like alternate effects that aren't a programmed feature? I've seen some scripts use the numbers of status ailments for certain status effects, such as reflecting an attack back or changing damage calculations for the slip damage. I wonder if the same could be applied to this in any way...

    Though, I suppose the program has its limits in recreating certain effects, such as Chrono Trigger's dual tech system. I guess if it's impossible with just the script, or any script for that matter, I could try to figure out a way to use common events combined with the script to cobble something up that more closely resembles Chrono Trigger's, or even just set aside specific spells that have no purpose other than to be used in the dual or triple attacks. Will kind of stink that I have to use up more spell spots in the skill database to achieve this and that it might be less streamlined than I hoped for, but I guess if that's how it is that's just how the cookie crumbles.
    Any idea on how I could do this?
     
    #10
  11. DerVVulfman

    DerVVulfman Resident Werewolf Veteran

    Messages:
    305
    Likes Received:
    149
    First Language:
    English
    Primarily Uses:
    RMXP
    Consider this. If Aluxes, Basil, Gloria and Hilda's combined skills create a Hellfire Typhoon Blades attack, but Aluxes's and Hilda's combined skills make Flaming Swords attack, Gloria's and Basil's combined skills makes Holy Kick (good against ghosts), and Aluxes's and Gloria's skills makes Holy Sword.... which takes control first?

    It is an automated system. It chooses from your list of skills, so you may wish to be careful when configuring them.


    Now look at this:
    Code:
      COMBOS        = [ [32,    true,     [57,1, 7],    21],
                       [68,    false,    [57, 7],],
                       [9,     false,    [7],          1]
                     ] 
    The choice of what skill combo is top-down. The highest one is used first, and the second one is chosen if the first one cannot be selected... and so on. In this example, a combination of Cross Cut, Fire and Healing creates a combined skill of Radiate (which is kind of stupid. But if the Heal skill is not available, Cross Cut and Fire creates the combined skill of Rolling Axe.


    If you instead make the skill list appear like this:
    Code:
      COMBOS        = [[68,    false,    [57, 7],],
                       [32,    true,     [57,1, 7],    21],
                       [9,     false,    [7],          1]
                     ] 
    Then the Rolling Axe combined skill will certainly be chosen before the Radiate skill. However, this manner would mean that the Rolling Axe combined skill will always be chosen without any chance for Radiate to ever be used.


    Um, kinda... sorta... But more like an option for a 'Combine Skill' option AFTER selecting a skill. I'm talking about a new window option that asks if you want his/her skill to combine, asking YES/NO. This is chosen before you select your target. Well, maybe AFTER you select, but... Try this for an example run some combat:

    EXAMPLE:
    (For this, we're using the above 'properly configured' list of skills with Radiate and Rolling Axe)

    Ghosts attack the party. Party has the first round:

    ALUXES: Chooses SKILL: Selects CROSS CUT: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1
    BASIL: Chooses SKILL: Selects LEG SWEEP: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1
    GLORIA: Chooses SKILL: Selects HEAL: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1
    HILDA: Chooses SKILL: Selects FIRE: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1


    Basil attacks with his Leg Sweep and scores against a ghost. His skill does not combine with anyone else's skill, so it's just his attack. Aluxes, Gloria and Hilda's skills all combine to make Radiate which hits both ghosts, killing the one that Basil already wounded.

    The Ghost attacks, wounding Basil.

    Now the Party attacks again:
    ALUXES: Chooses SKILL: Selects CROSS CUT: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1
    BASIL: Chooses SKILL: Selects LEG SWEEP: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1
    GLORIA: Chooses SKILL: Selects HEAL: (Brings up "COMBINE OPTION?)-Chooses No: Chooses Target: Basil
    HILDA: Chooses SKILL: Selects FIRE: (Brings up "COMBINE OPTION?)-Chooses YES: Chooses Target: GHOST 1


    Basil makes another Leg Sweep attack against the ghost and misses, Gloria casts a healing skill which did NOT combine as she didn't select that as an option. Her target was Basil anyway and heals him. Aluxes and Hilda's skills combine to make Rolling Axe and kills the second ghost.

    So, does this sound entertaining? I don't (AS YET) know how to adapt the battlesystem to do this. And this would only let one combo to work per turn. You cannot have it perform two combos (Aluxes+Gloria and Basil+Hilda) in this manner if all four have combinable skills at the same time.
     
    #11

Share This Page