Envision, Create, Share

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

ACBS - Atoa Custom Battle System 3.2

@Atoa
system combo I used to,
but , that want to be want to show damage in frames that want ,

such as ,
frames that 6 have damage,
frames that 21 have damage,
frames that 53 have damage,

but , your system is like to show animetion finished then arrive at show damage that one (but many)
 
good evening
I have to create a system recharging of skill, but I do not manage to incorporate it in the “ACBS - Atoa Custom Battle System 2.0 Final


the script “ACBS - 2.0 Final” which I use:

Code:
Atoa's Active Time Battle Version "Atoa ATB"

New Status

Skill Auto-Life

Skill Reflect

Skill Scan

Skill Drain

Atoa Bestiary

Consum Items Actions

Two Hands

Equipment Multi Slots

Status Limit

Advanced Weapons

Enemy Advanced Status


Here my script skill recharging:
Code:
#==============================================================================

# ■ Compétence avec rechargement(V1.01)

#  -Par Johnseed

#------------------------------------------------------------------------------

#  Incompatibiliter avec scrits modiffier:

#  Game_Battler 1

#  Game_Battler 3

#  Scene_Battle 1

#  Scene_Battle 3

#  Scene_Battle 4

#  Window_Skill

#------------------------------------------------------------------------------

# Changelog:

# Mise en place 

# Compilation

# Window_Skill en une seul collone

# Ajout de Window_Skill_Info

# Ajout d'atribution du nombre des tours

#------------------------------------------------------------------------------

# Explication:

# A partire de la ligne 64 il sufit de rajouter la comande:

#    @skill_active[X].round_max = Y

#     X = id de la compétence

#     Y = nombres de tour de rechargement

# Si Y = 0 la compétence poura etre lancer a chaque tour 

# Si vous ne choisisser pas de commande pour une compétence 

# son temp de recharge sera obligatoirment de 3 tours

#==============================================================================

# ■ Skill_Switching

#==============================================================================

class Skill_Switching

  def initialize(round_max=3)

    @round_max = round_max+1

    @round = 0

  end

  def round

    return @round

  end

  def round=(val)

    @round = val

    @round=0 if @round<0

  end

  def round_max

    return @round_max

  end

  def round_max=(val)

    @round_max = val+1

  end

end

#==============================================================================

# ■ Game_Battler

#==============================================================================

class Game_Battler

  def round(id)

    return @skill_active[id].round

  end

  def skill_active(id)

    return @skill_active[id]

  end

  def define_cooldown

    for i in 1..$data_skills.size

      @skill_active[i] = Skill_Switching.new

    end

    @skill_active[1].round_max = 1

    @skill_active[2].round_max = 2

    @skill_active[3].round_max = 3 

    @skill_active[4].round_max = 4

    @skill_active[5].round_max = 5 

    @skill_active[6].round_max = 6

    @skill_active[7].round_max = 0

    @skill_active[81].round_max = 0

    # etc ...

  end

end

#==============================================================================

# ■ Game_Battler 1

#==============================================================================

class Game_Battler

  attr_reader   :battler_name 

  attr_reader   :battler_hue              

  attr_reader   :hp                       

  attr_reader   :sp                     

  attr_reader   :states  

  attr_accessor :hidden 

  attr_accessor :immortal

  attr_accessor :damage_pop

  attr_accessor :damage

  attr_accessor :critical                 

  attr_accessor :animation_id             

  attr_accessor :animation_hit            

  attr_accessor :white_flash              

  attr_accessor :blink                    

  def initialize

    @skill_active = []

    define_cooldown

    @battler_name = ""

    @battler_hue = 0

    @hp = 0

    @sp = 0

    @states = []

    @states_turn = {}

    @maxhp_plus = 0

    @maxsp_plus = 0

    @str_plus = 0

    @dex_plus = 0

    @agi_plus = 0

    @int_plus = 0

    @hidden = false

    @immortal = false

    @damage_pop = false

    @damage = nil

    @critical = false

    @animation_id = 0

    @animation_hit = false

    @white_flash = false

    @blink = false

    @current_action = Game_BattleAction.new

  end

  def maxhp

    n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min

    for i in @states

      n *= $data_states[i].maxhp_rate / 100.0

    end

    n = [[Integer(n), 1].max, 999999].min

    return n

  end

  def maxsp

    n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min

    for i in @states

      n *= $data_states[i].maxsp_rate / 100.0

    end

    n = [[Integer(n), 0].max, 9999].min

    return n

  end

  def str

    n = [[base_str + @str_plus, 1].max, 999].min

    for i in @states

      n *= $data_states[i].str_rate / 100.0

    end

    n = [[Integer(n), 1].max, 999].min

    return n

  end

  def dex

    n = [[base_dex + @dex_plus, 1].max, 999].min

    for i in @states

      n *= $data_states[i].dex_rate / 100.0

    end

    n = [[Integer(n), 1].max, 999].min

    return n

  end

  def agi

    n = [[base_agi + @agi_plus, 1].max, 999].min

    for i in @states

      n *= $data_states[i].agi_rate / 100.0

    end

    n = [[Integer(n), 1].max, 999].min

    return n

  end

  def int

    n = [[base_int + @int_plus, 1].max, 999].min

    for i in @states

      n *= $data_states[i].int_rate / 100.0

    end

    n = [[Integer(n), 1].max, 999].min

    return n

  end

  def maxhp=(maxhp)

    @maxhp_plus += maxhp - self.maxhp

    @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min

    @hp = [@hp, self.maxhp].min

  end

  def maxsp=(maxsp)

    @maxsp_plus += maxsp - self.maxsp

    @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min

    @sp = [@sp, self.maxsp].min

  end

  def str=(str)

    @str_plus += str - self.str

    @str_plus = [[@str_plus, -999].max, 999].min

  end

  def dex=(dex)

    @dex_plus += dex - self.dex

    @dex_plus = [[@dex_plus, -999].max, 999].min

  end

  def agi=(agi)

    @agi_plus += agi - self.agi

    @agi_plus = [[@agi_plus, -999].max, 999].min

  end

  def int=(int)

    @int_plus += int - self.int

    @int_plus = [[@int_plus, -999].max, 999].min

  end

  def hit

    n = 100

    for i in @states

      n *= $data_states[i].hit_rate / 100.0

    end

    return Integer(n)

  end

  def atk

    n = base_atk

    for i in @states

      n *= $data_states[i].atk_rate / 100.0

    end

    return Integer(n)

  end

  def pdef

    n = base_pdef

    for i in @states

      n *= $data_states[i].pdef_rate / 100.0

    end

    return Integer(n)

  end

  def mdef

    n = base_mdef

    for i in @states

      n *= $data_states[i].mdef_rate / 100.0

    end

    return Integer(n)

  end

  def eva

    n = base_eva

    for i in @states

      n += $data_states[i].eva

    end

    return n

  end

  def hp=(hp)

    @hp = [[hp, maxhp].min, 0].max

    for i in 1...$data_states.size

      if $data_states[i].zero_hp

        if self.dead?

          add_state(i)

        else

          remove_state(i)

        end

      end

    end

  end

  def sp=(sp)

    @sp = [[sp, maxsp].min, 0].max

  end

  def recover_all

    @hp = maxhp

    @sp = maxsp

    for i in @states.clone

      remove_state(i)

    end

  end

  def current_action

    return @current_action

  end

  def make_action_speed

    @current_action.speed = agi + rand(10 + agi / 4)

  end

  def dead?

    return (@hp == 0 and not @immortal)

  end

  def exist?

    return (not @hidden and (@hp > 0 or @immortal))

  end

  def hp0?

    return (not @hidden and @hp == 0)

  end

  def inputable?

    return (not @hidden and restriction <= 1)

  end

  def movable?

    return (not @hidden and restriction < 4)

  end

  def guarding?

    return (@current_action.kind == 0 and @current_action.basic == 1)

  end

  def resting?

    return (@current_action.kind == 0 and @current_action.basic == 3)

  end

end

#==============================================================================

# ■ Game_Battler 3

#==============================================================================

class Game_Battler

  def skill_can_use?(skill_id)

          if round(skill_id)>0 and round(skill_id)<skill_active(skill_id).round_max

      return false

    end

    if $data_skills[skill_id].sp_cost > self.sp

      return false

    end

    if dead?

      return false

    end

    if $data_skills[skill_id].atk_f == 0 and self.restriction == 1

      return false

    end

    occasion = $data_skills[skill_id].occasion

    if $game_temp.in_battle

      return (occasion == 0 or occasion == 1)

    else

      return (occasion == 0 or occasion == 2)

    end

  end

  def attack_effect(attacker)

    self.critical = false

    hit_result = (rand(100) < attacker.hit)

    if hit_result == true

      atk = [attacker.atk - self.pdef / 2, 0].max

      self.damage = atk * (20 + attacker.str) / 20

      self.damage *= elements_correct(attacker.element_set)

      self.damage /= 100

      if self.damage > 0

        if rand(100) < 4 * attacker.dex / self.agi

          self.damage *= 2

          self.critical = true

        end

        if self.guarding?

          self.damage /= 2

        end

      end

      if self.damage.abs > 0

        amp = [self.damage.abs * 15 / 100, 1].max

        self.damage += rand(amp+1) + rand(amp+1) - amp

      end

      eva = 8 * self.agi / attacker.dex + self.eva

      hit = self.damage < 0 ? 100 : 100 - eva

      hit = self.cant_evade? ? 100 : hit

      hit_result = (rand(100) < hit)

    end

    if hit_result == true

      remove_states_shock

      self.hp -= self.damage

      @state_changed = false

      states_plus(attacker.plus_state_set)

      states_minus(attacker.minus_state_set)

    else

      self.damage = "Manqué!"

      self.critical = false

    end

    return true

  end

  def skill_effect(user, skill)

    self.critical = false

    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or

       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)

      return false

    end

    effective = false

    effective |= skill.common_event_id > 0

    hit = skill.hit

    if skill.atk_f > 0

      hit *= user.hit / 100

    end

    hit_result = (rand(100) < hit)

    effective |= hit < 100

    if hit_result == true

      power = skill.power + user.atk * skill.atk_f / 100

      if power > 0

        power -= self.pdef * skill.pdef_f / 200

        power -= self.mdef * skill.mdef_f / 200

        power = [power, 0].max

      end

      rate = 20

      rate += (user.str * skill.str_f / 100)

      rate += (user.dex * skill.dex_f / 100)

      rate += (user.agi * skill.agi_f / 100)

      rate += (user.int * skill.int_f / 100)

      self.damage = power * rate / 20

      self.damage *= elements_correct(skill.element_set)

      self.damage /= 100

      if self.damage > 0

        if self.guarding?

          self.damage /= 2

        end

      end

      if skill.variance > 0 and self.damage.abs > 0

        amp = [self.damage.abs * skill.variance / 100, 1].max

        self.damage += rand(amp+1) + rand(amp+1) - amp

      end

      eva = 8 * self.agi / user.dex + self.eva

      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100

      hit = self.cant_evade? ? 100 : hit

      hit_result = (rand(100) < hit)

      effective |= hit < 100

    end

    if hit_result == true

      if skill.power != 0 and skill.atk_f > 0

        remove_states_shock

        effective = true

      end

      last_hp = self.hp

      self.hp -= self.damage

      effective |= self.hp != last_hp

      @state_changed = false

      effective |= states_plus(skill.plus_state_set)

      effective |= states_minus(skill.minus_state_set)

      if skill.power == 0

        self.damage = ""

        unless @state_changed

          self.damage = "Manqué!"

        end

      end

    else

      self.damage = "Manqué!"

    end

    unless $game_temp.in_battle

      self.damage = nil

    end

    return effective

  end

  def item_effect(item)

    self.critical = false

    if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or

       ((item.scope == 5 or item.scope == 6) and self.hp >= 1)

      return false

    end

    effective = false

    effective |= item.common_event_id > 0

    hit_result = (rand(100) < item.hit)

    effective |= item.hit < 100

    if hit_result == true

      recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp

      recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp

      if recover_hp < 0

        recover_hp += self.pdef * item.pdef_f / 20

        recover_hp += self.mdef * item.mdef_f / 20

        recover_hp = [recover_hp, 0].min

      end

      recover_hp *= elements_correct(item.element_set)

      recover_hp /= 100

      recover_sp *= elements_correct(item.element_set)

      recover_sp /= 100

      if item.variance > 0 and recover_hp.abs > 0

        amp = [recover_hp.abs * item.variance / 100, 1].max

        recover_hp += rand(amp+1) + rand(amp+1) - amp

      end

      if item.variance > 0 and recover_sp.abs > 0

        amp = [recover_sp.abs * item.variance / 100, 1].max

        recover_sp += rand(amp+1) + rand(amp+1) - amp

      end

      if recover_hp < 0

        if self.guarding?

          recover_hp /= 2

        end

      end

      self.damage = -recover_hp

      last_hp = self.hp

      last_sp = self.sp

      self.hp += recover_hp

      self.sp += recover_sp

      effective |= self.hp != last_hp

      effective |= self.sp != last_sp

      @state_changed = false

      effective |= states_plus(item.plus_state_set)

      effective |= states_minus(item.minus_state_set)

      if item.parameter_type > 0 and item.parameter_points != 0

        case item.parameter_type

        when 1  

          @maxhp_plus += item.parameter_points

        when 2  

          @maxsp_plus += item.parameter_points

        when 3  

          @str_plus += item.parameter_points

        when 4  

          @dex_plus += item.parameter_points

        when 5  

          @agi_plus += item.parameter_points

        when 6  

          @int_plus += item.parameter_points

        end

        effective = true

      end

      if item.recover_hp_rate == 0 and item.recover_hp == 0

        self.damage = ""

        if item.recover_sp_rate == 0 and item.recover_sp == 0 and

           (item.parameter_type == 0 or item.parameter_points == 0)

          unless @state_changed

            self.damage = "Manqué!"

          end

        end

      end

    else

      self.damage = "Manqué!"

    end

    unless $game_temp.in_battle

      self.damage = nil

    end

    return effective

  end

  def slip_damage_effect

    self.damage = self.maxhp / 10

    if self.damage.abs > 0

      amp = [self.damage.abs * 15 / 100, 1].max

      self.damage += rand(amp+1) + rand(amp+1) - amp

    end

    self.hp -= self.damage

    return true

  end

  def elements_correct(element_set)

    if element_set == []

      return 100

    end

    weakest = -100

    for i in element_set

      weakest = [weakest, self.element_rate(i)].max

    end

    return weakest

  end

end

#==============================================================================

# ■ Scene_Battle 1

#==============================================================================

class Scene_Battle

  def battle_end(result)

    $game_temp.in_battle = false

    $game_party.clear_actions

    for actor in $game_party.actors

      actor.remove_states_battle

    end

    $game_troop.enemies.clear

    if $game_temp.battle_proc != nil

      $game_temp.battle_proc.call(result)

      $game_temp.battle_proc = nil

    end

    for j in 0...$game_party.actors.size

      for i in 1..$data_skills.size

        $game_party.actors[j].skill_active(i).round = 0

      end

    end

    $scene = Scene_Map.new

  end

end

#==============================================================================

# ■ Scene_Battle 3

#==============================================================================

class Scene_Battle

  def phase3_prior_actor

    begin

      if @active_battler != nil

        @active_battler.blink = false

      end

      if @actor_index == 0

        start_phase2

        return

      end

      @actor_index -= 1

      @active_battler = $game_party.actors[@actor_index]

      @active_battler.blink = true

      @active_battler.skill_active(@skill.id).round = 0 

    end until @active_battler.inputable?

    phase3_setup_command_window

  end

  def update_phase3_skill_select

    @skill_window.visible = true

    @skill_info_window.visible = true

    @skill_window.update

    if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)

      @skill_info_window.refresh(@skill_window.skill)

    end

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      end_skill_select

      return

    end

    if Input.trigger?(Input::C)

      @skill = @skill_window.skill

      if @skill == nil or not @active_battler.skill_can_use?(@skill.id)

        $game_system.se_play($data_system.buzzer_se)

        return

      end

      $game_system.se_play($data_system.decision_se)

      @active_battler.current_action.skill_id = @skill.id

      @skill_window.visible = false

      @skill_info_window.visible = false

        $game_party.actors[@actor_index].skill_active(@skill.id).round =

        $game_party.actors[@actor_index].skill_active(@skill.id).round_max

      if @skill.scope == 1

        start_enemy_select

      elsif @skill.scope == 3 or @skill.scope == 5

        start_actor_select

      else

        end_skill_select

        phase3_next_actor

      end

      return

    end

  end

def update_phase3_enemy_select

    @enemy_arrow.update

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      end_enemy_select

      @active_battler.skill_active(@skill.id).round = 0 

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      @active_battler.current_action.target_index = @enemy_arrow.index

      end_enemy_select

      if @skill_window != nil

        end_skill_select

      end

      if @item_window != nil

        end_item_select

      end

      phase3_next_actor

    end

  end

def update_phase3_actor_select

    @actor_arrow.update

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      end_actor_select

      @active_battler.skill_active(@skill.id).round = 0 

      return

    end

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      @active_battler.current_action.target_index = @actor_arrow.index

      end_actor_select

      if @skill_window != nil

        end_skill_select

      end

      if @item_window != nil

        end_item_select

      end

      phase3_next_actor

    end

  end

  def start_skill_select

    @skill_window = Window_Skill.new(@active_battler)

    @skill_info_window = Window_Skill_Info.new(@active_battler, @skill_window.skill)

    @skill_window.help_window = @help_window

    @actor_command_window.active = false

    @actor_command_window.visible = false

  end

  def end_skill_select

    @skill_window.dispose

    @skill_info_window.dispose

    @skill_window = nil

    @help_window.visible = false

    @actor_command_window.active = true

    @actor_command_window.visible = true

  end

end

#==============================================================================

# ■ Scene_Battle 4

#==============================================================================

class Scene_Battle

    def update_phase4_step1

    @help_window.visible = false

    if judge

      return

    end

    if $game_temp.forcing_battler == nil

      setup_battle_event

      if $game_system.battle_interpreter.running?

        return

      end

    end

    if $game_temp.forcing_battler != nil

      @action_battlers.delete($game_temp.forcing_battler)

      @action_battlers.unshift($game_temp.forcing_battler)

    end

    if @action_battlers.size == 0

      for j in 0...$game_party.actors.size

        for i in 1..$data_skills.size

          $game_party.actors[j].skill_active(i).round -= 1

        end

      end

      start_phase2

      return

    end

    @animation1_id = 0

    @animation2_id = 0

    @common_event_id = 0

    @active_battler = @action_battlers.shift

    if @active_battler.index == nil

      return

    end

    if @active_battler.hp > 0 and @active_battler.slip_damage?

      @active_battler.slip_damage_effect

      @active_battler.damage_pop = true

    end

    @active_battler.remove_states_auto

    @status_window.refresh

    @phase4_step = 2

  end

end

#==============================================================================

# ■ Window_Skill

#==============================================================================

class Window_Skill < Window_Selectable

  def initialize(actor)

    super(0, 128, 320, 352)

    @actor = actor

    @column_max = 1

    self.index = 0

    if $game_temp.in_battle

      @column_max = 1

      self.y = 64

      self.width = 320

      self.height = 256

      self.back_opacity = 160

    end

    refresh

  end

  def skill

    return @data[self.index]

  end

  def refresh

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    @data = []

    for i in [email=0...@actor.skills.size]0...@actor.skills.size[/email]

      skill = $data_skills[@actor.skills[i]]

      if skill != nil

        @data.push(skill)

      end

    end

    @item_max = @data.size

    if @item_max > 0

      self.contents = Bitmap.new(width - 32, row_max * 32)

      self.contents.font.name = $fontface

      self.contents.font.size = $fontsize

      for i in 0...@item_max

        draw_item(i)

      end

    end

  end

  def draw_item(index)

    skill = @data[index]

    if @actor.skill_can_use?(skill.id)

      self.contents.font.color = normal_color

    else

      self.contents.font.color = disabled_color

    end

    x = 4 

    y = index * 32 

    rect = Rect.new(x, y, self.width / @column_max - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    bitmap = RPG::Cache.icon(skill.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)

    self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)

  end

  def update_help

    @help_window.set_text(self.skill == nil ? "" : self.skill.description)

  end

end

#==============================================================================

# ■ Window_Skill_Info

#==============================================================================

class Window_Skill_Info < Window_Base

  def initialize(actor, skill)

    super(320, 64, 320, 256)

    self.back_opacity = 160

    self.contents = Bitmap.new(width - 32, height - 32)

    self.contents.font.name = $fontface

    self.contents.font.size = $fontsize

    @actor = actor

    refresh(skill)

  end

  def refresh(skill)

    self.contents.clear

    x = 4

    wait = @actor.skill_active(skill.id).round

    wait = 0 if wait<0

    wait_max = @actor.skill_active(skill.id).round_max-1

    scope = ""

    case skill.scope

      when 0 then scope = "Aucun"

      when 1 then scope = "Un Ennemi"

      when 2 then scope = "Tout les ennemis"

      when 3 then scope = "Un Allié"

      when 4 then scope = "Tout les alliés"

      when 5 then scope = "Allié KO"

      when 6 then scope = "Tout les alliés KO"

      when 7 then scope = "Utilisateur"

    end

    self.contents.font.color = system_color

    self.contents.draw_text(x, 0, 160, 32, skill.name)

    self.contents.draw_text(x, 32*1, 160, 32, "Mana : ")

    self.contents.draw_text(x, 32*2, 160, 32, "Recharge : ")

    self.contents.draw_text(x+120, 32*2, 160, 32, "Attente : ")

    self.contents.draw_text(x, 32*3, 160, 32, "Cible : ")

    self.contents.font.color = normal_color

    self.contents.draw_text(x+65, 32*1, 128, 32, skill.sp_cost.to_s)

    self.contents.draw_text(x+110, 32*2, 128, 32, wait_max.to_s)

    self.contents.draw_text(x+210, 32*2, 128, 32, wait.to_s)

    self.contents.draw_text(x+160, 32*3, 128, 32, scope)

    case skill.id

    when 57

        self.contents.draw_text(x, 32*4, 250, 32, "c la fin du monde mais tout va bien")

    when 

        self.contents.draw_text(x, 32*4, 250, 32, skill.description)

      end

  end

end

please to help me
tanks
to afflict for my English I am French just.
 

Atoa

Member

@johnseed
No wonder why this dont work... you've rewrote a lot of class that you didn't change.
First, you don't need to replace the *whole* class, just add the methos you changes, and *only* them.
Also try using alias intead of rewitting methods.
 
@Atoa
I thank you for having answered me, I know that my script has much defect (it is my first script) and I thank you for your advises.
I arrive has to incorporate without problem my script in the “ACBS - 2.0 Final”
But it is with script “Atoa ATB” and “Consum Items Actions” that there is incompatibility which I do not arrive has to resolve.
I thank you
 
@Atoa

Wow! :biggrin:
My mouth felt down when I tested the Crono Trigger cbs. This is totaly amazing.

Officialy the best rmxp battle script I've ever seen.

This script seems perfect for my game:
viewtopic.php?f=78&t=70897

I'm currently reading the scripts to learn how this little beast was made.

So Atoa, do you have any suggestions, to help me to get close to the super mario rpg battle system?

I'll keep reading!

Thanks again!
 

XaineC

Member

I'm having a problem. I'm using some CCOA battlers. They completely fine until it either casts magic or dies, then the graphic begins to cycle strangely. For instance:

multiple.png
 
I've been looking everywhere trying to figure out how to make it so that when you start a battle the battlers run from the edge of the screen into their positions. could you give me a point in the right direction, it's basicly the escape animation but inverted, but i had no luck in finding the escape animation either.
 
This battle system got a lot of nice optional script!

I got a suggestion for another one!

In many games there are combos option (by combo I mean tricks that needs a certain combination of keyboard/joystick input in order to succeed/add damage).

Adding combos for attack and defense would bring this incredible acbs, imo, a step further.
Maybe the critical damage could be based on the sucess/failure of the combo.
In other words:

When the party attack:
If combo was right = critical hit
if not = normal hit

When the monsters/ennemies attack:
If defense combo is right = normal hit
if not = critical hit


What do you guys think?
 
I think that would be an amazing Idea. To have things such as timed hits and/or a button to gaurd damage if pressed correctly with a % that it might fail.
Wow. Just thinking about it makes me pretty excited if it were to ever happen. I'm sure a lot of people would think this is a good idea too. :)
 

macboy

Member

vince0vince":1yn9p9ko said:
This battle system got a lot of nice optional script!

I got a suggestion for another one!

In many games there are combos option (by combo I mean tricks that needs a certain combination of keyboard/joystick input in order to succeed/add damage).

Adding combos for attack and defense would bring this incredible acbs, imo, a step further.
Maybe the critical damage could be based on the sucess/failure of the combo.
In other words:

When the party attack:
If combo was right = critical hit
if not = normal hit

When the monsters/ennemies attack:
If defense combo is right = normal hit
if not = critical hit


What do you guys think?

Great idea, too bad I'm horrible at scripting. Hope someone with talent will script that! I'll use it in my game that's for sure!

Btw, nice cbs Atoa! Thanks for the incredible work.
 

Atoa

Member

In many games there are combos option (by combo I mean tricks that needs a certain combination of keyboard/joystick input in order to succeed/add damage).
 
[...]
 
If combo was right = critical hit
if not = normal hit
This is already possible for skills with the Blitz add-on.

@Regashi
By default there's no way to make this, it would be needed edits direct on the main code.

@XaineC
Never get this bug here, maybe it's the combination of add-ons used.
 
Atoa,

Just had a crazy thought while reading through some of our old posts here.

For your next update, would it be possible to have all of the user-configurations in one script, a scrip that won't really change much, if at all, that contains all of the configurations such as window positions, animation sets, skills, etc, instead of having that for any of the engine scripts? This way, every time you update, someone can just replace the old engine files with the new ones and not have to go back and change the configs for everything.

Just a thought. I'm not even sure if that is possible or not.

Thanks!
 

Atoa

Member

@MayorAnime
But it's already like this.

The only separate settings are the ones for the add-ons.
I've made them separately so people can use custom window scripts if they want to.

People don't need to replace the settings unless there are new settings.
If an add on was updated, and the settings wasn't changed, just replace everything bellow the "Atoa Module"
 
Atoa":ftm0jotr said:
@MayorAnime
But it's already like this.

The only separate settings are the ones for the add-ons.
I've made them separately so people can use custom window scripts if they want to.

People don't need to replace the settings unless there are new settings.
If an add on was updated, and the settings wasn't changed, just replace everything bellow the "Atoa Module"

I was talking about for the add-ons, but now that I think about it, I see your point of view.

So nevermind, it makes sense the way you do it. :smile:
 
I'm still looking forward for good things to come Atoa. Take your time. I won't push you. :biggrin: I know it's going to be one of the most epic updates for ACBS. Pardon me for long absence.
 

Atoa

Member

For those who are expecting the next update, i'm already translating the comments. Sadly the Legaia System add-on will not come this time, i having really an hard time with it and it would delay too much the relase of the system.

So, unless i have some (bad) surprise, the next update will be avaliable soon.
 
Atoa":pzok7kq1 said:
For those who are expecting the next update, i'm already translating the comments. Sadly the Legaia System add-on will not come this time, i having really an hard time with it and it would delay too much the relase of the system.

So, unless i have some (bad) surprise, the next update will be avaliable soon.

Legaia System add-on? I must have missed that in the postings. What is that?
 

Atoa

Member

It's an add-on to implement an legend of legaia like combo system.

Since the ACBS alread have support for skill sequences, it would be needed only to make the code for manage the sequence. But since legaia haves an relly dynamic system that allows various combos, it's being quite hard do assemble them @.@
http://www.youtube.com/watch?v=CLuyIPfNGKk
 

Thank you for viewing

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

Discord

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

Content

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