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.

Maki's ATB system help requested!

Hi. I have been working on trying to get the script work properly.

The fights work, in fact everything so far works except for 1 minor detail and 1 major.

1. There's a small (sometimes little larger than small) gab in the Time Meter, when some character gains his turn. I tried using diffrent chars with diffrent AGI/DEX stats to see the change and it is completely random, and doesn't happen at all sometimes. I guess I can live with it, but I figured if there's a way to fix it there should be some sort of coding in the script for the meter to complete before the Attack window appears. Either way, I don't know for sure how to do this and would appreciate some help on it to make it perfect. :)

2. This is a big problem. The monsters just don't attack. They just stand there while I get turn after turn. In a way it's smooth for testing combat, but in the actual game later I want the monsters to fight back of course. I have absolutely no clue what can be causing this.

I will now post the entire script:


Code:
#==============================================================================
# â–  New_Battle
#------------------------------------------------------------------------------
# Compiled By : Maki
#==============================================================================
# Original Scripts By : Fukuyama, and 桜雅 在土
#==============================================================================
# ?????? 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
#

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|

       # AUTO-RECOVERY MP/SP
       recovery_hp = (actor.maxhp / 0.0 * recovery_rate).truncate
       recovery_sp = (actor.maxsp / 0.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_Module
end # 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

end
end

# Battle_End_Recovery
# ?????? XRXS_BP10. LEVEL UP!?E?B???h?E ??????
# by ???? ??y

$data_system_level_up_se = ""                       # ???x???A?b?vSE?B""??????B
$data_system_level_up_me = "Audio/ME/007-Fanfare01" # ???x???A?b?vME

#==============================================================================
# ?? 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, "LEVEL UP!!")
 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)
end
end
#==============================================================================
# ?? Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# ?? ????E???J?C???X?^???X???
#--------------------------------------------------------------------------
 attr_accessor :level_up_flags             # LEVEL UP!?\??
end
#==============================================================================
# ?? Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ?? ????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
end
end
#==============================================================================
# ?? 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?????         # ?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
end
end
# ?????? XRXS_17. ?X???b?v?_???[?W?h???^???????? ver.1.51 ??????
# by ???? ??y, fukuyama

#==============================================================================
# ?? 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 =~ /^?X???b?v([0-9]+)(%|??)/
           slip_damage_percent += $1.to_i
         elsif $data_states[j].name =~ /^?X???b?v([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 =~ /^?X???b?v([0-9]+)(%|??)/
           slip_damage_percent -= $1.to_i
         elsif $data_states[j].name =~ /^?X???b?v([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 =~ /^?X???b?v([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 =~ /^?X???b?v([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
end
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 ????
 for enemy in $game_troop.enemies
   @count_battlers.push(enemy)
 end
 # ?A?N?^?[???z?? @count_battlers ????
 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
end
end
#==============================================================================
# ?? 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
end
end
#==============================================================================
# ?? 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
end
end
#==============================================================================
# ?? 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
end
end
#==============================================================================
# ?? 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
#--------------------------------------------------------------------------
# ?? 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))
end
end
#==============================================================================
# ?? 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, "Run])
 @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
end
end
# ?????? 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
   # ACTOR SPRIT GFX
   # 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
 # ??????e?`??
 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
 
#2 fixed. Now all that remains (as far as I know), is that the time bar shows a small gab when the player gains a turn. It's almost like he gains a turn when there is still not a full meter.
 
This script is, actually a compilation of XRXS BP10:Level up notice window, XRXS 17, XRXS BP1: CP controlled battle, XRXS BP7: Battle Status Window Clear Design, and some other scripts. Among of them, XRXS BP1 is outdated, thus its authors don't provide any support for that. Instead, there's XRXS65: CP-controlled turn-based battle system, which is upgraded version of XRXS BP1. I suggest to use it instead of XRXS BP1. Though I'm not sure it will solve your problem..
 

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