Save-Point
Help with an ATB - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Games Development (https://www.save-point.org/forum-4.html)
+--- Forum: Code Support (https://www.save-point.org/forum-20.html)
+--- Thread: Help with an ATB (/thread-5115.html)



Help with an ATB - VEE-Chary - 04-20-2014

Whoops, I moved this over from development discussion. I was wondering if I could get any help wit a script I've been having a wee bit of trouble with.

The script in question is MakirouAru's ATB script. I've checked out other ATBs and this is the closest to what I wanted without getting very complicated. (just in case an ATB, Active Time Battle, is one of those systems like the SNES Final Fantasy's where instead of turns every character performs their action when a bar that fills up individually at a speed tied to a stat like agility.)

Anyway, the script works just fine. The thing is I'm trying to do the Earthbound/Persona thingie where the way you approach enemies from the overworld gives you an advantage in battle (if you catch the enemy from the back, you get an extra turn, you get the idea). I actually managed to get around that with a combination of Mr. MO's Abs and common events, and I'm very happy with the results.

The problem is I don't know how to give players full turns when they get Player Advantage, or give players no turn when they get Enemy Advantage. Calling a script should do the trick, but I don't know what to write to get this to work and the script has no explanation on how to do this.

Here's the script:


Code:
#==============================================================================# ¦ New_Battle #------------------------------------------------------------------------------ # Compiled By : MakirouAru #Instrucciones en español por Orochii ;3.#==============================================================================#=~Índice Orochezco:~=#-------Buscar "by xxxxx" usando Ctrl-F. El número de línea debe calzar.-------#Línea 16-Battle_End_Recovery, CODIGO BUSQUEDA:-<by fukuyama, ÷‰ë Ý“y>-#Línea 113-LevelUpWindow, CODIGO BUSQUEDA:-<by ÷‰ë Ý“y (*)>-#Línea 326-SlipDamage Effect Customizer (% de daño por turno), CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, fukuyama>-#Línea 404-BattleCP (Núcleo del ATB), CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, ˜aŠó, Jack-R>-#Línea 928-BattleStatus Mejorado, CODIGO BUSQUEDA:-<by ÷‰ë Ý“y, TOMY>-## ¥£¥ XRXS_BP 3. Ÿ—˜ŽžHP‰ñ•œ ver.1.01 ¥£¥# -<by fukuyama, ÷‰ë Ý“y>-
# Battle_End_Recovery## í“¬Œã‚̉ñ•œˆ—ƒ‚ƒWƒ…[ƒ‹## Request: stay# Script: fukuyama# Test: ƒmƒRƒmŽq## URL: http://www4.big.or.jp/~fukuyama/rgss/Battle_End_Recovery.txt##Instrucciones orochiianas: Cambia el valor nil en @@recovery_rate_variable_id#                por el número de variable que usarás para definir el % de#                HP/MP que se recobrará después de batalla.#                (Si nada ha cambiado, debería estar en la línea 30).
module Battle_End_Recovery
  module Scene_Battle_Module    # ‰ñ•œ—¦•Ï”‚ÌID  @@recovery_rate_variable_id = nil    # ‰ñ•œ—¦‚̎擾    def battle_end_recovery_rate      if @@recovery_rate_variable_id.nil?        @@recovery_rate_variable_id =          $data_system.variables.index 'í“¬Œã‚̉ñ•œ—¦'        if @@recovery_rate_variable_id.nil?          @@recovery_rate_variable_id = false        end      end      return 0 unless @@recovery_rate_variable_id      return $game_variables[@@recovery_rate_variable_id]    end        # í“¬Œã‚̉ñ•œˆ—    def battle_end_recovery        # ‰ñ•œ—¦      recovery_rate = battle_end_recovery_rate            # ‰ñ•œ—¦•Ï”‚ª‚OˆÈŠO‚©‚ƒAƒNƒ^[‚ª¶‘¶‚µ‚Ä‚¢‚éê‡Aí“¬Œã‚̉ñ•œˆ—‚ðs‚¤      if recovery_rate != 0 and not actor.dead?              # ƒp[ƒeƒB‚̃AƒNƒ^[–ˆ‚Ƀ‹[ƒv        $game_party.actors.each do |actor|                # ‰ñ•œ—ŒvŽZ          recovery_hp = (actor.maxhp / 100.0 * recovery_rate).truncate          recovery_sp = (actor.maxsp / 100.0 * recovery_rate).truncate                # ŽÀÛ‚ɉñ•œ          actor.hp += recovery_hp          actor.sp += recovery_sp                # ƒAƒjƒ[ƒVƒ‡ƒ“Ý’è          actor.damage = - recovery_hp          actor.damage_pop = true              end              # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðXV        @status_window.refresh            end    end      end # module Scene_Battle_Moduleend # module Battle_End_Recovery
#------------------------------# í“¬ƒV[ƒ“‚̍Ēè‹`#------------------------------class Scene_Battle
  # Scene_Battle—pƒ‚ƒWƒ…[ƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh  include Battle_End_Recovery::Scene_Battle_Module    # Œ³‚̃tƒF[ƒY‚TŠJŽn‚É•–¼‚ð‚‚¯‚é  alias battle_end_recovery_original_start_phase5 start_phase5    # ƒtƒF[ƒY‚TŠJŽn‚ðÄ’è‹`  def start_phase5      # í“¬Œã‚̉ñ•œˆ—‚ðŒÄ‚яo‚•    battle_end_recovery        # Œ³‚̃tƒF[ƒY‚TŠJŽn‚ðŒÄ‚яo‚•    battle_end_recovery_original_start_phase5      endend
# Battle_End_Recovery# ¥£¥ XRXS_BP10. LEVEL UP!ƒEƒBƒ“ƒhƒE ¥£¥# -<by ÷‰ë Ý“y (*)>-
#Instrucciones orochiianas: Modifica la siguiente configuración según tu gusto.$data_system_level_up_se = ""                      # ƒŒƒxƒ‹ƒAƒbƒvSEB""‚Å–³‚µB$data_system_level_up_me = "Audio/ME/007-Fanfare01" # ƒŒƒxƒ‹ƒAƒbƒvME$data_system_level_up_text = "¡SUBE DE NIVEL!"
#==============================================================================# ¡ Window_LevelUpWindow#------------------------------------------------------------------------------# @ƒoƒgƒ‹I—¹ŽžAƒŒƒxƒ‹ƒAƒbƒv‚µ‚½ê‡‚ɃXƒe[ƒ^ƒX‚ð•\Ž¦‚•‚éƒEƒBƒ“ƒhƒE‚Å‚•B#==============================================================================class Window_LevelUpWindow < Window_Base  #--------------------------------------------------------------------------  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»  #--------------------------------------------------------------------------  def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)    super(0, 128, 160, 192)    self.contents = Bitmap.new(width - 32, height - 32)    self.visible = false    refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)  end  #--------------------------------------------------------------------------  # œ ƒŠƒtƒŒƒbƒVƒ…  #--------------------------------------------------------------------------  def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)    self.contents.clear    self.contents.font.color = system_color    self.contents.font.name = "Arial"    self.contents.font.size = 14    self.contents.draw_text( 0,  0, 160, 24, $data_system_level_up_text)    self.contents.font.size = 18    self.contents.draw_text( 0,  28, 160, 24, $data_system.words.hp)    self.contents.draw_text( 0,  50, 160, 24, $data_system.words.sp)    self.contents.font.size = 14    self.contents.draw_text( 0,  72,  80, 24, $data_system.words.str)    self.contents.draw_text( 0,  94,  80, 24, $data_system.words.dex)    self.contents.draw_text( 0, 116,  80, 24, $data_system.words.agi)    self.contents.draw_text( 0, 138,  80, 24, $data_system.words.int)    self.contents.draw_text(92,  0, 128, 24, "->")    self.contents.draw_text(76,  28, 128, 24, "=")    self.contents.draw_text(76,  50, 128, 24, "=")    self.contents.draw_text(76,  72, 128, 24, "=")    self.contents.draw_text(76,  94, 128, 24, "=")    self.contents.draw_text(76, 116, 128, 24, "=")    self.contents.draw_text(76, 138, 128, 24, "=")    self.contents.font.color = normal_color    self.contents.draw_text( 0,  0,  88, 24, last_lv.to_s, 2)    self.contents.draw_text( 0,  28,  72, 24, "+" + up_hp.to_s, 2)    self.contents.draw_text( 0,  50,  72, 24, "+" + up_sp.to_s, 2)    self.contents.draw_text( 0,  72,  72, 24, "+" + up_str.to_s, 2)    self.contents.draw_text( 0,  94,  72, 24, "+" + up_dex.to_s, 2)    self.contents.draw_text( 0, 116,  72, 24, "+" + up_agi.to_s, 2)    self.contents.draw_text( 0, 138,  72, 24, "+" + up_int.to_s, 2)    self.contents.font.size = 20    self.contents.draw_text( 0,  0, 128, 24, actor.level.to_s, 2)    self.contents.draw_text( 0,  26, 128, 24, actor.maxhp.to_s, 2)    self.contents.draw_text( 0,  48, 128, 24, actor.maxsp.to_s, 2)    self.contents.draw_text( 0,  70, 128, 24, actor.str.to_s, 2)    self.contents.draw_text( 0,  92, 128, 24, actor.dex.to_s, 2)    self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)    self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)  endend#==============================================================================# ¡ Window_BattleStatus#==============================================================================class Window_BattleStatus < Window_Base  #--------------------------------------------------------------------------  # œ ’ljÁEŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”  #--------------------------------------------------------------------------  attr_accessor :level_up_flags            # ¡SUBE DE NIVEL!•\Ž¦end#==============================================================================# ¡ Game_Battler#==============================================================================class Game_Battler  #--------------------------------------------------------------------------  # œ ’ljÁEŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”  #--------------------------------------------------------------------------  attr_accessor :exp_gain_ban            # EXPŽæ“¾ˆêŽž‹ÖŽ~  #--------------------------------------------------------------------------  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»  #--------------------------------------------------------------------------  alias xrxs_bp10_initialize initialize  def initialize    @exp_gain_ban = false    xrxs_bp10_initialize  end#--------------------------------------------------------------------------# œ ƒXƒe[ƒg [EXP ‚ðŠl“¾‚Å‚«‚È‚¢] ”»’è#--------------------------------------------------------------------------  alias xrxs_bp10_cant_get_exp? cant_get_exp?  def cant_get_exp?    if @exp_gain_ban == true      return true    else      return xrxs_bp10_cant_get_exp?    end  endend#==============================================================================# ¡ Scene_Battle#==============================================================================class Scene_Battle  #--------------------------------------------------------------------------  # œ ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn  #--------------------------------------------------------------------------  alias xrxs_bp10_start_phase5 start_phase5  def start_phase5    # EXP Šl“¾‹ÖŽ~    for i in 0...$game_party.actors.size      $game_party.actors[i].exp_gain_ban = true    end    xrxs_bp10_start_phase5    # EXP Šl“¾‹ÖŽ~‚Ì‰ðœ    for i in 0...$game_party.actors.size      $game_party.actors[i].exp_gain_ban = false    end    # EXP‚ð‰Šú‰»    @exp_gained = 0    for enemy in $game_troop.enemies      # Šl“¾ EXP‚ð’ljÁ        # ƒGƒlƒ~[‚ª‰B‚êó‘Ô‚Å‚È‚¢ê‡      @exp_gained += enemy.exp if not enemy.hidden    end    # Ý’è    @phase5_step      = 0    @exp_gain_actor    = -1    # ƒŠƒUƒ‹ƒgƒEƒBƒ“ƒhƒE‚ð•\Ž¦    @result_window.y -= 64    @result_window.visible = true    # ƒŒƒxƒ‹ƒAƒbƒv”»’è‚Ö    phase5_next_levelup  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY)  #--------------------------------------------------------------------------  alias xrxs_bp10_update_phase5 update_phase5  def update_phase5    case @phase5_step    when 1      update_phase5_step1    else      xrxs_bp10_update_phase5      # ƒŒƒxƒ‹ƒAƒbƒv‚µ‚Ä‚¢‚éê‡‚Í‹ §ƒoƒgƒ‹I—¹      battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0    end  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒY 1 : ƒŒƒxƒ‹ƒAƒbƒv)  #--------------------------------------------------------------------------  def update_phase5_step1    # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡    if Input.trigger?(Input::C)      # ƒEƒBƒ“ƒhƒE‚ð•Â‚¶‚ÄŽŸ‚̃AƒNƒ^[‚Ö      @levelup_window.visible = false if @levelup_window != nil      @status_window.level_up_flags[@exp_gain_actor] = false      phase5_next_levelup    end  end  #--------------------------------------------------------------------------  # œ ŽŸ‚̃AƒNƒ^[‚̃Œƒxƒ‹ƒAƒbƒv•\Ž¦‚Ö  #--------------------------------------------------------------------------  def phase5_next_levelup    begin      # ŽŸ‚̃AƒNƒ^[‚Ö      @exp_gain_actor += 1      # ÅŒã‚̃AƒNƒ^[‚̏ꍇ      if @exp_gain_actor >= $game_party.actors.size        # ƒAƒtƒ^[ƒoƒgƒ‹ƒtƒF[ƒYŠJŽn        @phase5_step = 0        return      end      actor = $game_party.actors[@exp_gain_actor]      if actor.cant_get_exp? == false        # Œ»Ý‚Ì”\—Í’l‚ð•ÛŽ        last_level = actor.level        last_maxhp = actor.maxhp        last_maxsp = actor.maxsp        last_str = actor.str        last_dex = actor.dex        last_agi = actor.agi        last_int = actor.int        # ŒoŒ±’lŽæ“¾‚ÌŒˆ’è“IuŠÔ(“ä        actor.exp += @exp_gained        # ”»’è        if actor.level > last_level          # ƒŒƒxƒ‹ƒAƒbƒv‚µ‚½ê‡          @status_window.level_up(@exp_gain_actor)          if $data_system_level_up_se != ""            Audio.se_stop            Audio.se_play($data_system_level_up_se)          end          if $data_system_level_up_me != ""            Audio.me_stop            Audio.me_play($data_system_level_up_me)          end          @levelup_window = Window_LevelUpWindow.new(actor, last_level,            actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,            actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)          @levelup_window.x = 160 * @exp_gain_actor          @levelup_window.visible = true          @phase5_wait_count = 40          @phase5_step      =  1          # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…          @status_window.refresh          return        end      end    end until false  endend# ¥£¥ XRXS_17. ƒXƒŠƒbƒvƒ_ƒ[ƒW–hŒä^Œø‰Ê—ʏڍ׉» ver.1.51 ¥£¥# -<by ÷‰ë Ý“y, fukuyama>-
=begin#==============================================================================# ¡ Game_Battler#==============================================================================class Game_Battler  #--------------------------------------------------------------------------  # œ ƒXƒŠƒbƒvƒ_ƒ[ƒW‚ÌŒø‰Ê“K—p  #--------------------------------------------------------------------------  alias xrxs_bp7_slip_damage_effect slip_damage_effect  def slip_damage_effect    # ”’l‚̏‰Šú‰»    slip_damage_percent = 0    slip_damage_plus = 0    # Œ»Ý•t‰Á‚³‚ê‚Ä‚¢‚éƒXƒe[ƒg‚Ì’†‚©‚çƒXƒŠƒbƒvƒ_ƒ[ƒW—L‚è‚̃‚ƒm‚ð’T‚·    for i in @states      if $data_states[i].slip_damage        # ‚»‚̃Xƒe[ƒg‚ªŽ‚Á‚Ä‚¢‚éƒXƒŠƒbƒvƒ_ƒ[ƒW‚Ì        # Lvƒvƒ‰ƒXƒXƒe[ƒg‚Ü‚½‚ÍLvƒ}ƒCƒiƒXƒXƒe[ƒg‚ð”»’èB        for j in $data_states[i].plus_state_set          if $data_states[j] != nil            if $data_states[j].name =~ /^Veneno([0-9]+)\%/              slip_damage_percent += $1.to_i            elsif $data_states[j].name =~ /^Veneno([0-9]+)$/              slip_damage_plus += $1.to_i            end          end        end        for j in $data_states[i].minus_state_set          if $data_states[j] != nil            if $data_states[j].name =~ /^Veneno([0-9]+)\%/              slip_damage_percent -= $1.to_i            elsif $data_states[j].name =~ /^Veneno([0-9]+)$/              slip_damage_plus -= $1.to_i            end          end        end      end    end    if slip_damage_percent == 0 and slip_damage_plus == 0      xrxs_bp7_slip_damage_effect    else      # –h‹ï‚ªƒXƒŠƒbƒv–hŒä‚ª‚ ‚éê‡‚ð”»’è      for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]        armor = $data_armors[i]        next if armor == nil        for j in armor.guard_state_set           if $data_states[j] != nil            if $data_states[j].name =~ /^Veneno([0-9]+)\%/              if slip_damage_percent > 0                slip_damage_percent = [slip_damage_percent - $1.to_i, 0].max              end            end            if $data_states[j].name =~ /^Veneno([0-9]+)$/              if slip_damage_percent > 0                slip_damage_plus = [slip_damage_plus - $1.to_i, 0].max              end            end          end        end      end      # ƒ_ƒ[ƒW‚ðÝ’è      self.damage = self.maxhp * slip_damage_percent / 100 + slip_damage_plus      # •ªŽU      if self.damage.abs > 0        amp = [self.damage.abs * 15 / 100, 1].max        self.damage += rand(amp+1) + rand(amp+1) - amp      end      # HP ‚©‚çƒ_ƒ[ƒW‚ðŒ¸ŽZ      self.hp -= self.damage      # ƒƒ\ƒbƒhI—¹      return true    end  endend=end# ¥£¥ XRXS_BP 1. CP§“±“ü ver.15 ¥£¥# -<by ÷‰ë Ý“y, ˜aŠó, Jack-R>-
#==============================================================================# ¡ Scene_Battle_CP#==============================================================================class Scene_Battle_CP  #--------------------------------------------------------------------------  # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”  #--------------------------------------------------------------------------  attr_accessor  :stop                  # CP‰ÁŽZƒXƒgƒbƒv  #----------------------------------------------------------------------------  # œ ƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»  #----------------------------------------------------------------------------  def initialize    @battlers = []    @cancel = false    @agi_total = 0    # ”z—ñ @count_battlers ‚ð‰Šú‰»    @count_battlers = []    # ƒGƒlƒ~[‚ð”z—ñ @count_battlers ‚ɒljÁ    for enemy in $game_troop.enemies      @count_battlers.push(enemy)    end    # ƒAƒNƒ^[‚ð”z—ñ @count_battlers ‚ɒljÁ    for actor in $game_party.actors      @count_battlers.push(actor)    end    for battler in @count_battlers      @agi_total += battler.agi    end    for battler in @count_battlers      battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min    end  end  #----------------------------------------------------------------------------  # œ CPƒJƒEƒ“ƒg‚ÌŠJŽn  #----------------------------------------------------------------------------  def start    if @cp_thread != nil then      return    end    @cancel = false    @stop = false    # ‚±‚±‚©‚çƒXƒŒƒbƒh    @cp_thread = Thread.new do      while @cancel != true        if @stop != true          self.update # XV          sleep(0.05)        end      end    end  # ‚±‚±‚܂ŃXƒŒƒbƒh  end  #----------------------------------------------------------------------------  # œ CPƒJƒEƒ“ƒgƒAƒbƒv  #----------------------------------------------------------------------------  def update    if @count_battlers != nil then      for battler in @count_battlers        # s“®o—ˆ‚È‚¯‚ê‚Ζ³Ž‹        if battler.dead? == true #or battler.movable? == false then          battler.cp = 0          next        end        # ‚±‚±‚Ì 1.3‚ð•Ï‚¦‚邱‚ƂŁ«ƒXƒs[ƒh‚ð•ÏX‰Â”\B‚½‚¾‚µ¬”“_‚ÍŽg—p‚•‚邱‚ƁB        battler.cp = [[battler.cp + 1.3 * 4096 * battler.agi / @agi_total, 0].max, 65535].min      end    end  end  #----------------------------------------------------------------------------  # œ CPƒJƒEƒ“ƒg‚ÌŠJŽn  #----------------------------------------------------------------------------  def stop    @cancel = true    if @cp_thread != nil then      @cp_thread.join      @cp_thread = nil    end  endend
#==============================================================================# ¡ Game_Battler#==============================================================================class Game_Battler  attr_accessor :now_guarding            # Œ»Ý–hŒä’†ƒtƒ‰ƒO  attr_accessor :cp                      # Œ»ÝCP  attr_accessor :slip_state_update_ban    # ƒXƒŠƒbƒvEƒXƒe[ƒgŽ©“®ˆ—‚Ì‹ÖŽ~  #--------------------------------------------------------------------------  # œ ƒRƒ}ƒ“ƒh“ü—͉”\”»’è  #--------------------------------------------------------------------------  def inputable?    return (not @hidden and restriction <= 1 and @cp >=65535)  end  #--------------------------------------------------------------------------  # œ ƒXƒe[ƒg [ƒXƒŠƒbƒvƒ_ƒ[ƒW] ”»’è  #--------------------------------------------------------------------------  alias xrxs_bp1_slip_damage? slip_damage?  def slip_damage?    return false if @slip_state_update_ban    return xrxs_bp1_slip_damage?  end  #--------------------------------------------------------------------------  # œ ƒXƒe[ƒgŽ©‘R‰ðœ (ƒ^[ƒ“‚²‚ƂɌĂяo‚µ)  #--------------------------------------------------------------------------  alias xrxs_bp1_remove_states_auto remove_states_auto  def remove_states_auto    return if @slip_state_update_ban    xrxs_bp1_remove_states_auto  endend#==============================================================================# ¡ Game_Actor#==============================================================================class Game_Actor < Game_Battler  #--------------------------------------------------------------------------  # œ ƒZƒbƒgƒAƒbƒv  #--------------------------------------------------------------------------  alias xrxs_bp1_setup setup  def setup(actor_id)    xrxs_bp1_setup(actor_id)    @hate = 100  # init-value is 100    @cp = 0    @now_guarding = false    @slip_state_update_ban = false  endend#==============================================================================# ¡ Game_Enemy#==============================================================================class Game_Enemy < Game_Battler  #--------------------------------------------------------------------------  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»  #--------------------------------------------------------------------------  alias xrxs_bp1_initialize initialize  def initialize(troop_id, member_index)    xrxs_bp1_initialize(troop_id, member_index)    @hate = 100  # init-value is 100    @cp = 0    @now_guarding = false    @slip_state_update_ban = false  endend#==============================================================================# ¡ Window_BattleStatus#==============================================================================class Window_BattleStatus < Window_Base  #--------------------------------------------------------------------------  #--------------------------------------------------------------------------  # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”  #--------------------------------------------------------------------------  attr_accessor  :update_cp_only                  # CPƒ[ƒ^[‚݂̂̍XV  #--------------------------------------------------------------------------  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»  #--------------------------------------------------------------------------  alias xrxs_bp1_initialize initialize  def initialize    @update_cp_only = false    xrxs_bp1_initialize  end  #--------------------------------------------------------------------------  # œ ƒŠƒtƒŒƒbƒVƒ…  #--------------------------------------------------------------------------  alias xrxs_bp1_refresh refresh  def refresh    if @update_cp_only == false      xrxs_bp1_refresh    end    for i in 0...$game_party.actors.size      actor = $game_party.actors[i]      actor_x = i * 160 + 4      draw_actor_cp_meter(actor, actor_x, 96, 120, 0)    end  end  #--------------------------------------------------------------------------  def draw_actor_name(actor, x, y)    self.contents.font.color = normal_color    self.contents.font.size = 24    self.contents.draw_text(x, y, 120, 32, actor.name)  end  #--------------------------------------------------------------------------  # œ CPƒ[ƒ^[ ‚Ì•`‰æ  #--------------------------------------------------------------------------  def draw_actor_cp_meter(actor, x, y, width = 156, type = 0)    self.contents.font.color = system_color    self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))    if actor.cp == nil      actor.cp = 0    end    w = width * [actor.cp,65535].min / 65535    self.contents.fill_rect(x, y+28, w,1, Color.new(255, 255, 128, 255))    self.contents.fill_rect(x, y+29, w,1, Color.new(255, 255, 0, 255))    self.contents.fill_rect(x, y+30, w,1, Color.new(192, 192, 0, 255))    self.contents.fill_rect(x, y+31, w,1, Color.new(128, 128, 0, 255))  endend
#==============================================================================# ¡ Scene_Battle#==============================================================================class Scene_Battle  # ‚±‚±‚ÉŒø‰‰¹‚ðÝ’è‚•‚é‚ƁAƒAƒNƒ^[ƒRƒ}ƒ“ƒh‚ªƒ|ƒbƒv‚µ‚½‚Æ‚«‚ÉŒø‰‰¹‚ðÄ¶  $data_system_command_up_se = ""  #--------------------------------------------------------------------------  # œ ƒoƒgƒ‹I—¹  #    result : Œ‹‰ (0:Ÿ—˜ 1:”s–k 2:“¦‘–)  #--------------------------------------------------------------------------  alias xrxs_bp1_battle_end battle_end  def battle_end(result)    # CPƒJƒEƒ“ƒg’âŽ~    @cp_thread.stop    xrxs_bp1_battle_end(result)  end  #--------------------------------------------------------------------------  # œ ƒvƒŒƒoƒgƒ‹ƒtƒF[ƒYŠJŽn  #--------------------------------------------------------------------------  alias xrxs_bp1_start_phase1 start_phase1  def start_phase1    @agi_total = 0    @cp_thread = Scene_Battle_CP.new    # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðÄì¬    s1 = $data_system.words.attack    s2 = $data_system.words.skill    s3 = $data_system.words.guard    s4 = $data_system.words.item    @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, "Huir"])    @actor_command_window.y = 128    @actor_command_window.back_opacity = 160    @actor_command_window.active = false    @actor_command_window.visible = false    @actor_command_window.draw_item(4, $game_temp.battle_can_escape ? @actor_command_window.normal_color : @actor_command_window.disabled_color)    xrxs_bp1_start_phase1  end  #--------------------------------------------------------------------------  # œ ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF[ƒYŠJŽn  #--------------------------------------------------------------------------  alias xrxs_bp1_start_phase2 start_phase2  def start_phase2    xrxs_bp1_start_phase2    @party_command_window.active = false    @party_command_window.visible = false    # ŽŸ‚Ö    start_phase3  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒtƒF[ƒY)  #--------------------------------------------------------------------------  alias xrxs_bp1_update_phase2 update_phase2  def update_phase2    # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡    if Input.trigger?(Input::C)      # ƒp[ƒeƒBƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J[ƒ\ƒ‹ˆ’u‚Å•ªŠò      case @party_command_window.index      when 0  # í‚¤        # Œˆ’è SE ‚ð‰‰‘t        $game_system.se_play($data_system.decision_se)        @cp_thread.start        # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒtƒF[ƒYŠJŽn        start_phase3      end      return    end    xrxs_bp1_update_phase2  end  #--------------------------------------------------------------------------  # œ ŽŸ‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö  #--------------------------------------------------------------------------  def phase3_next_actor    # ƒ‹[ƒv    begin      # ƒAƒNƒ^[‚Ì–¾–ŃGƒtƒFƒNƒg OFF      if @active_battler != nil        @active_battler.blink = false      end      # ÅŒã‚̃AƒNƒ^[‚̏ꍇ      if @actor_index == $game_party.actors.size-1        # ƒƒCƒ“ƒtƒF[ƒYŠJŽn        @cp_thread.start        start_phase4        return      end      # ƒAƒNƒ^[‚̃Cƒ“ƒfƒbƒNƒX‚ði‚ß‚é      @actor_index += 1      @active_battler = $game_party.actors[@actor_index]      @active_battler.blink = true      if @active_battler.inputable? == false        @active_battler.current_action.kind = -1      end      # ƒAƒNƒ^[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢ó‘Ô‚È‚ç‚à‚¤ˆê“x    end until @active_battler.inputable?    @cp_thread.stop    # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv    @active_battler.now_guarding = false    phase3_setup_command_window  end  #--------------------------------------------------------------------------  # œ ‘O‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö  #--------------------------------------------------------------------------  def phase3_prior_actor    # ƒ‹[ƒv    begin      # ƒAƒNƒ^[‚Ì–¾–ŃGƒtƒFƒNƒg OFF      if @active_battler != nil        @active_battler.blink = false      end      # Å‰‚̃AƒNƒ^[‚̏ꍇ      if @actor_index == 0        # Å‰‚Ö–ß‚é        start_phase3        return      end      # ƒAƒNƒ^[‚̃Cƒ“ƒfƒbƒNƒX‚ð–ß‚•      @actor_index -= 1      @active_battler = $game_party.actors[@actor_index]      @active_battler.blink = true      # ƒAƒNƒ^[‚ªƒRƒ}ƒ“ƒh“ü—Í‚ðŽó‚¯•t‚¯‚È‚¢ó‘Ô‚È‚ç‚à‚¤ˆê“x    end until @active_battler.inputable?    @cp_thread.stop    # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚ðƒZƒbƒgƒAƒbƒv    @active_battler.now_guarding = false    phase3_setup_command_window  end  #--------------------------------------------------------------------------  # œ ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃ZƒbƒgƒAƒbƒv  #--------------------------------------------------------------------------  alias xrxs_bp1_phase3_setup_command_window phase3_setup_command_window  def phase3_setup_command_window    # Œø‰‰¹‚̍ж    Audio.se_play($data_system_command_up_se) if $data_system_command_up_se != ""    # –ß‚•    xrxs_bp1_phase3_setup_command_window  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒtƒF[ƒY : Šî–{ƒRƒ}ƒ“ƒh)  #--------------------------------------------------------------------------  alias xrxs_bsp1_update_phase3_basic_command update_phase3_basic_command  def update_phase3_basic_command    # C ƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽê‡    if Input.trigger?(Input::C)      # ƒAƒNƒ^[ƒRƒ}ƒ“ƒhƒEƒBƒ“ƒhƒE‚̃J[ƒ\ƒ‹ˆ’u‚Å•ªŠò      case @actor_command_window.index      when 4  # “¦‚°‚é        if $game_temp.battle_can_escape          # Œˆ’è SE ‚ð‰‰‘t          $game_system.se_play($data_system.decision_se)          # ƒAƒNƒVƒ‡ƒ“‚ðÝ’è          @active_battler.current_action.kind = 0          @active_battler.current_action.basic = 4          # ŽŸ‚̃AƒNƒ^[‚̃Rƒ}ƒ“ƒh“ü—Í‚Ö          phase3_next_actor        else          # ƒuƒU[ SE ‚ð‰‰‘t          $game_system.se_play($data_system.buzzer_se)        end        return      end    end    xrxs_bsp1_update_phase3_basic_command  end  #--------------------------------------------------------------------------  # œ ƒƒCƒ“ƒtƒF[ƒYŠJŽn  #--------------------------------------------------------------------------  alias xrxs_bp1_start_phase4 start_phase4  def start_phase4    xrxs_bp1_start_phase4    # ƒGƒlƒ~[ƒAƒNƒVƒ‡ƒ“ì¬    for enemy in $game_troop.enemies      if enemy.cp < 65535        enemy.current_action.clear        enemy.current_action.kind = -1 # ƒ^[ƒ“”ò‚΂µB        next      end      enemy.make_action    end    # s“®‡˜ì¬    make_action_orders  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 1 : ƒAƒNƒVƒ‡ƒ“€”õ)  #--------------------------------------------------------------------------  alias xrxs_bp1_update_phase4_step1 update_phase4_step1  def update_phase4_step1    # ‰Šú‰»    @phase4_act_continuation = 0    # Ÿ”s”»’è    if judge      @cp_thread.stop      # Ÿ—˜‚Ü‚½‚Í”s–k‚̏ꍇ : ƒƒ\ƒbƒhI—¹      return    end    # –¢s“®ƒoƒgƒ‰[”z—ñ‚̐擪‚©‚çŽæ“¾    @active_battler = @action_battlers[0]    # ƒXƒe[ƒ^ƒXXV‚ðCP‚¾‚¯‚ÉŒÀ’èB    @status_window.update_cp_only = true    # ƒXƒe[ƒgXV‚ð‹ÖŽ~B    @active_battler.slip_state_update_ban = true if @active_battler != nil    # –ß‚•    xrxs_bp1_update_phase4_step1    # ‹ÖŽ~‚ð‰ðœ    @status_window.update_cp_only = false    @active_battler.slip_state_update_ban = false if @active_battler != nil  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ“ŠJŽn)  #--------------------------------------------------------------------------  alias xrxs_bp1_update_phase4_step2 update_phase4_step2  def update_phase4_step2    # ‹ §ƒAƒNƒVƒ‡ƒ“‚Å‚È‚¯‚ê‚Π   unless @active_battler.current_action.forcing      # CP‚ª‘«‚è‚Ä‚¢‚È‚¢ê‡      if @phase4_act_continuation == 0 and @active_battler.cp < 65535        @phase4_step = 6        return      end      # §–ñ‚ª [“G‚ð’íUŒ‚‚•‚é] ‚© [–¡•û‚ð’íUŒ‚‚•‚é] ‚̏ꍇ      if @active_battler.restriction == 2 or @active_battler.restriction == 3        # ƒAƒNƒVƒ‡ƒ“‚ɍUŒ‚‚ðÝ’è        @active_battler.current_action.kind = 0        @active_battler.current_action.basic = 0      end      # §–ñ‚ª [s“®‚Å‚«‚È‚¢] ‚̏ꍇ      if @active_battler.restriction == 4        # ƒAƒNƒVƒ‡ƒ“‹ §‘Ώۂ̃oƒgƒ‰[‚ðƒNƒŠƒA        $game_temp.forcing_battler = nil        if @phase4_act_continuation == 0 and @active_battler.cp >= 65535          # ƒXƒe[ƒgŽ©‘R‰ðœ          @active_battler.remove_states_auto          # CPÁ”ï          @active_battler.cp = [(@active_battler.cp - 65535),0].max          # ƒXƒe[ƒ^ƒXƒEƒBƒ“ƒhƒE‚ðƒŠƒtƒŒƒbƒVƒ…          @status_window.refresh        end        # ƒXƒeƒbƒv 1 ‚Ɉڍs        @phase4_step = 1        return      end    end    # ƒAƒNƒVƒ‡ƒ“‚ÌŽí•‚Å•ªŠò    case @active_battler.current_action.kind    when 0      # UŒ‚¥–hŒäE“¦‚°‚éE‰½‚à‚µ‚È‚¢Žž‚Ì‹¤’Á”ïCP      @active_battler.cp -=    0 if @phase4_act_continuation == 0    when 1      # ƒXƒLƒ‹Žg—pŽž‚̏Á”ïCP      @active_battler.cp -= 65535 if @phase4_act_continuation == 0    when 2      # ƒAƒCƒeƒ€Žg—pŽž‚̏Á”ïCP      @active_battler.cp -= 65535 if @phase4_act_continuation == 0    when -1      # CP‚ª— ‚Ü‚Á‚Ä‚¢‚È‚¢      @phase4_step = 6      return    end    # CP‰ÁŽZ‚ðˆêŽž’âŽ~‚•‚é    @cp_thread.stop = true    # ƒXƒe[ƒgŽ©‘R‰ðœ    @active_battler.remove_states_auto    xrxs_bp1_update_phase4_step2  end  #--------------------------------------------------------------------------  # œ Šî–{ƒAƒNƒVƒ‡ƒ“ Œ‹‰ì¬  #--------------------------------------------------------------------------  alias xrxs_bp1_make_basic_action_result make_basic_action_result  def make_basic_action_result    # UŒ‚‚̏ꍇ    if @active_battler.current_action.basic == 0 and @phase4_act_continuation == 0      @active_battler.cp -= 65535 # UŒ‚Žž‚ÌCPÁ”ï    end    # –hŒä‚̏ꍇ    if @active_battler.current_action.basic == 1 and @phase4_act_continuation == 0      @active_battler.cp -= 32767 # –hŒäŽž‚ÌCPÁ”ï    end    # “G‚Ì“¦‚°‚é‚̏ꍇ    if @active_battler.is_a?(Game_Enemy) and      @active_battler.current_action.basic == 2 and @phase4_act_continuation == 0      @active_battler.cp -= 65535 # “¦‘–Žž‚ÌCPÁ”ï    end    # ‰½‚à‚µ‚È‚¢‚̏ꍇ    if @active_battler.current_action.basic == 3 and @phase4_act_continuation == 0      @active_battler.cp -= 32767 # ‰½‚à‚µ‚È‚¢Žž‚ÌCPÁ”ï    end    # “¦‚°‚é‚̏ꍇ    if @active_battler.current_action.basic == 4 and @phase4_act_continuation == 0      @active_battler.cp -= 65535 # “¦‘–Žž‚ÌCPÁ”ï      # “¦‘–‰Â”\‚Å‚Í‚È‚¢ê‡      if $game_temp.battle_can_escape == false        # ƒuƒU[ SE ‚ð‰‰‘t        $game_system.se_play($data_system.buzzer_se)        return      end      # Œˆ’è SE ‚ð‰‰‘t      $game_system.se_play($data_system.decision_se)      # “¦‘–ˆ—      update_phase2_escape      return    end    xrxs_bp1_make_basic_action_result  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 5 : ƒ_ƒ[ƒW•\Ž¦)  #--------------------------------------------------------------------------  alias xrxs_bp1_update_phase4_step5 update_phase4_step5  def update_phase4_step5    # ƒXƒŠƒbƒvƒ_ƒ[ƒW    if @active_battler.hp > 0 and @active_battler.slip_damage?      @active_battler.slip_damage_effect      @active_battler.damage_pop = true    end    xrxs_bp1_update_phase4_step5  end  #--------------------------------------------------------------------------  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 6 : ƒŠƒtƒŒƒbƒVƒ…)  #--------------------------------------------------------------------------  alias xrxs_bp1_update_phase4_step6 update_phase4_step6  def update_phase4_step6    # CP‰ÁŽZ‚ðÄŠJ‚•‚é    @cp_thread.stop = false    # ƒwƒ‹ƒvƒEƒBƒ“ƒhƒE‚ð‰B‚•    @help_window.visible = false    xrxs_bp1_update_phase4_step6  endend# ¥£¥ XRXS_BP 7. ƒoƒgƒ‹ƒXƒe[ƒ^ƒXEƒNƒŠƒAƒfƒUƒCƒ“ ver.1.02 ¥£¥ # -<by ÷‰ë Ý“y, TOMY>-
#==============================================================================# ¡ Window_BattleStatus #==============================================================================class Window_BattleStatus < Window_Base   #--------------------------------------------------------------------------   # œ ŒöŠJƒCƒ“ƒXƒ^ƒ“ƒX•Ï”   #--------------------------------------------------------------------------   attr_accessor :update_cp_only # CPƒ[ƒ^[‚݂̂̍XV   #--------------------------------------------------------------------------   # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»   #--------------------------------------------------------------------------   alias xrxs_bp7_initialize initialize   def initialize     xrxs_bp7_initialize     # «Full-View‚̏ꍇ‚͉º“ñs‚Ì # ‚ðÁ‚µ‚Ä‚‚¾‚³‚¢B     #self.opacity = 0     #self.back_opacity = 0   end   #--------------------------------------------------------------------------   # œ ƒŠƒtƒŒƒbƒVƒ…   #--------------------------------------------------------------------------   alias xrxs_bp7_refresh refresh   def refresh     if @update_cp_only       xrxs_bp7_refresh       return     end     # •`ŽÊ‚ð‹ÖŽ~‚µ‚È‚ª‚ç–ß‚·     @draw_ban = true     xrxs_bp7_refresh     # •`ŽÊ‚Ì‹ÖŽ~‚ð‰ðœ     @draw_ban = false     # •`ŽÊ‚ðŠJŽn     @item_max = $game_party.actors.size     for i in 0...$game_party.actors.size       actor = $game_party.actors[i]       actor_x = i * 160 + 21       # •àsƒLƒƒƒ‰ƒOƒ‰ƒtƒBƒbƒN‚Ì•`ŽÊ       draw_actor_graphic(actor, actor_x - 9, 116)       # HP/SPƒ[ƒ^[‚Ì•`ŽÊ       draw_actor_hp_meter_line(actor, actor_x, 72, 96, 12)       draw_actor_sp_meter_line(actor, actor_x, 104, 96, 12)       # HP”’l‚Ì•`ŽÊ       self.contents.font.size = 24 # HP/SP”’l‚Ì•Žš‚Ì‘å‚«‚³       self.contents.font.color = actor.hp == 0 ? knockout_color :       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color       draw_shadow_text(actor_x-2, 58, 96, 24, actor.hp.to_s, 2)       # SP”’l‚Ì•`ŽÊ       self.contents.font.color = actor.sp == 0 ? knockout_color :       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color       draw_shadow_text(actor_x-2, 90, 96, 24, actor.sp.to_s, 2)       # —pŒêuHPv‚Æ—pŒêuSPv‚Ì•`ŽÊ       self.contents.font.size = 12 # —pŒêuHP/SPv‚Ì•Žš‚Ì‘å‚«‚³       self.contents.font.color = system_color # —pŒêuHP/SPv‚Ì•Žš‚̐F       draw_shadow_text(actor_x, 60, 96, 12, $data_system.words.hp)       draw_shadow_text(actor_x, 92, 96, 12, $data_system.words.sp)             draw_actor_state(actor, actor_x, 100)     end   end end #==============================================================================# ¡ Window_Base #==============================================================================class Window_Base < Window   #--------------------------------------------------------------------------   # œ HPƒ[ƒ^[ ‚Ì•`‰æ   #--------------------------------------------------------------------------   def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)     w = width * actor.hp / actor.maxhp     hp_color_1 = Color.new(255, 0, 0, 192)     hp_color_2 = Color.new(255, 255, 0, 192)     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)     x -= 1     y += (height/4).floor     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)     x -= 1     y += (height/4).ceil     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)     x -= 1     y += (height/4).ceil     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)   end   #--------------------------------------------------------------------------   # œ SPƒ[ƒ^[ ‚Ì•`‰æ   #--------------------------------------------------------------------------   def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)     w = width * actor.sp / actor.maxsp     hp_color_1 = Color.new( 0, 0, 255, 192)     hp_color_2 = Color.new( 0, 255, 255, 192)     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)     x -= 1     y += (height/4).floor     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)     x -= 1     y += (height/4).ceil     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)     x -= 1     y += (height/4).ceil     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)   end   #--------------------------------------------------------------------------   # œ –¼‘O‚Ì•`‰æ   #--------------------------------------------------------------------------   alias xrxs_bp7_draw_actor_name draw_actor_name   def draw_actor_name(actor, x, y)     xrxs_bp7_draw_actor_name(actor, x, y) if @draw_ban != true   end   #--------------------------------------------------------------------------   # œ ƒXƒe[ƒg‚Ì•`‰æ   #--------------------------------------------------------------------------   alias xrxs_bp7_draw_actor_state draw_actor_state   def draw_actor_state(actor, x, y, width = 120)     xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true   end   #--------------------------------------------------------------------------   # œ HP ‚Ì•`‰æ   #--------------------------------------------------------------------------   alias xrxs_bp7_draw_actor_hp draw_actor_hp   def draw_actor_hp(actor, x, y, width = 144)     xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true   end   #--------------------------------------------------------------------------   # œ SP ‚Ì•`‰æ   #--------------------------------------------------------------------------   alias xrxs_bp7_draw_actor_sp draw_actor_sp   def draw_actor_sp(actor, x, y, width = 144)     xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true   end end #==============================================================================# ž ŠO•”ƒ‰ƒCƒuƒ‰ƒŠ #==============================================================================class Window_Base   #--------------------------------------------------------------------------   # œ ƒ‰ƒCƒ“•`‰æ by ÷‰ë Ý“y   #--------------------------------------------------------------------------   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)     # •`ŽÊ‹——£‚ÌŒvŽZB‘å‚«‚ß‚É’¼ŠpŽž‚Ì’·‚³B     distance = (start_x - end_x).abs + (start_y - end_y).abs     # •`ŽÊŠJŽn     if end_color == start_color       for i in 1..distance         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i         self.contents.fill_rect(x, y, width, width, start_color)       end     else       for i in 1..distance         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i         r = start_color.red * (distance-i)/distance + end_color.red * i/distance         g = start_color.green * (distance-i)/distance + end_color.green * i/distance         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance         self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))      end     end   end     #--------------------------------------------------------------------------   # œ ‰e•Žš•`‰æ by TOMY   #--------------------------------------------------------------------------   def draw_shadow_text(x, y, width, height, string, align = 0)     # Œ³‚̐F‚ð•Û‘‚µ‚Ä‚¨‚     color = self.contents.font.color.dup     # •Žš‚ʼne•`‰æ     self.contents.font.color = Color.new(0, 0, 0)     self.contents.draw_text(x + 2, y + 2, width, height, string, align)     # Œ³‚̐F‚É–ß‚µ‚Ä•`‰æ     self.contents.font.color = color     self.contents.draw_text(x, y, width, height, string, align)   end end


If there's a way to change the energy bar's value from an event, please let me know.
Or hey, if you know of another easy to integrate ATB where I can do this (Trickster's ATB for instance is a bit too messy), I'd love to hear some recommendations.

Thanks in advance.


RE: Help with an ATB - DerVVulfman - 04-20-2014

I am sorry, but the code within the code box didn't render properly as the line breaks didn't function. Perhaps you could see about editing your post with a fixed copy. Try pasting your own personal copy within notepad, and then copy from notepad into the post itself. Could work.

After that, a scripter could take a look. Less confusing that way.


RE: Help with an ATB - VEE-Chary - 04-20-2014

Good idea. Attached a .txt.

Some of the instructions are in gibberish (mistranslated japanese I suppose) and Spanish but none of it helps, so don't worry about the language barrier.


RE: Help with an ATB - DerVVulfman - 04-21-2014

Curious (mind you I'm at work so no actual RMXP engine for editing right now)......

Is this the pure code you received or did you perform any edits of your own. I see that the Game_Battler class that began around line #320 was commented out with the =begin and =end statements.

Also, I may have something that 'may' work, though it has been ages since I worked with it. It is a script that I wrote some years ago entitled: (>ADVANTAGES!<) The script allows you to have random encounters determine (based on party-vs-troop agility) who has an advantage and thus the surprise, and thus fill their AT bars. OR you can set a conditional switch to turn on 'player' advantage or 'troop' advantage. I wrote Advantages to be compatible with various battlsystems including XRXS #65 script.... you may have some luck.


RE: Help with an ATB - VEE-Chary - 04-21-2014

That's kind of what I had in mind, actually, but you're missing the point.

The game can detect whether the player or the enemy has an advantage. What I'm trying to do now is get that advantage to make a difference. Enemy advantage should make players start with no energy. Player advantage should make players start with full energy.

In case you're curious, you have to attack an enemy on the overworld (I'm using Mr. Mo's ABS) from the front to get enemy advantage, and from the back or sides to get player advantage. This system makes the thief and ranger characters extra important because the thief can temporarily stun enemies and then attack them on the back, while the ranger can get enemies from behind without alerting them (for obvious reasons).

As for the script itself, I didn't edit it myself, I'm assuming a Spanish-speaking translator snatched it from a Japanese coder. It works perfectly but I can't change the energy to zero or full from an event. That's all I need.

Thanks for replying.


RE: Help with an ATB - MechanicalPen - 04-22-2014

Actually you CAN change the energy from script, but the ATB system overwrites the value at battle start anyways. Let's fix that.

Find:
Code:
#----------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»
  #----------------------------------------------------------------------------
  def initialize
    @battlers = []
    @cancel = false
    @agi_total = 0
    # ”z—ñ @count_battlers ‚ð‰Šú‰»
    @count_battlers = []
    # ƒGƒlƒ~[‚ð”z—ñ @count_battlers ‚ɒljÁ
    for enemy in $game_troop.enemies
      @count_battlers.push(enemy)
    end
    # ƒAƒNƒ^[‚ð”z—ñ @count_battlers ‚ɒljÁ
    for actor in $game_party.actors
      @count_battlers.push(actor)
    end
    for battler in @count_battlers
      @agi_total += battler.agi
    end
    for battler in @count_battlers
      battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
    end
  end

replace with
Code:
#----------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‚̏‰Šú‰»
  #----------------------------------------------------------------------------
  def initialize
    @battlers = []
    @cancel = false
    @agi_total = 0
    # ”z—ñ @count_battlers ‚ð‰Šú‰»
    @count_battlers = []
    # ƒGƒlƒ~[‚ð”z—ñ @count_battlers ‚ɒljÁ
    for enemy in $game_troop.enemies
      @count_battlers.push(enemy)
    end
    # ƒAƒNƒ^[‚ð”z—ñ @count_battlers ‚ɒljÁ
    for actor in $game_party.actors
      @count_battlers.push(actor)
    end
    for battler in @count_battlers
      @agi_total += battler.agi
    end
    for battler in @count_battlers
      if (battler.cp == 0)
        battler.cp = [[65535 * (rand(15) + 85) / 100 * battler.agi / @agi_total * 4, 0].max, 65535].min
      end
    end
  end

then find:
Code:
#--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹I—¹
  #    result : Œ‹‰ (0:Ÿ—˜ 1:”s–k 2:“¦‘–)
  #--------------------------------------------------------------------------
  alias xrxs_bp1_battle_end battle_end
  def battle_end(result)
    # CPƒJƒEƒ“ƒg’âŽ~
    @cp_thread.stop
    xrxs_bp1_battle_end(result)
  end
  #-------

replace with:
Code:
#--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹I—¹
  #    result : Œ‹‰ (0:Ÿ—˜ 1:”s–k 2:“¦‘–)
  #--------------------------------------------------------------------------
  alias xrxs_bp1_battle_end battle_end
  def battle_end(result)
    #return actor CP to inital value
    for actor in $game_party.actors
      actor.cp = 0
    end
    # CPƒJƒEƒ“ƒg’âŽ~
    @cp_thread.stop
    xrxs_bp1_battle_end(result)
  end
  #------

Now, from a "Script..." Event, do:
Code:
#Player Advantage!
    for actor in $game_party.actors
      actor.cp = 65534
    end

Code:
#Enemy Advantage!
    for actor in $game_party.actors
      actor.cp = 1
    end

I tested it and it works for me, so let me know if you have any problems.


RE: Help with an ATB - VEE-Chary - 04-22-2014

YES, that works perfectly!
I think I'll name one of my children after you now. Thanks!


I'm adding the edited version in case anyone stumbles upon this thread and wants it:



.txt   MakirouAru\'s ATB (edited).txt (Size: 43.97 KB / Downloads: 0)