XRXS Battle System - Discussion - Edit: Code Beta Release!

Started by Heretic86, November 21, 2012, 05:09:12 am

Previous topic - Next topic

Heretic86

I've been screwing around with this Battle System for a couple of days now and have drawn some conclusions about it.

Firstly, it sucks.  Secondly, compared to everything else out there, it is the best, but since I already said it sucks, saying it is the best isnt much.

Second, it is not a REAL ATB.  Excluding BlizzABS (which is a totally different type of ABS), I have yet to find one single real true ATB / RTAB Battle System.  Effectively, what they all do is just insert some progress bars that make you wait, whereby the enemies dont actually do any attacking until the player finishes inputting the commands for the active battler.  However, I believe I might be able to do some manipulations to it that would allow it to because a REAL ATB Battle System.

Next (yeah, apparently I cant count past 2), is that it is about as laggy as an insurance company making a payment on a claim.  The biggest problem was the addons which got tacked into the only version I could find were all horribly written.  They are kind of purdy, but graphically expensive as a D.C. prostitute during a National Convention.  Refresh was being called EVERY FRAME.  It got to the point where games were unplayable.  So I decided to rip out ALL the Graphical bits and throw them all into their own appropriate seperate window classes.  I split the HP SP Bars and the Count Progress Bars each into their own separate windows.  Refreshing the CP Bar Window wont have any effect on the HP Bars which makes it way faster, and HP / SP Bar Window will only refresh if there is a change in the HP / SP.  Performance increase brings it back up from unplayable to a rock solid 40 FPS.  Other major problems came from just flat out bad coding.  Aliasing methods, rewriting to do something completely different, then calling back to the original methods.  I believe I have nailed all of those bugs.

Last, it is nearly impossible to read.  The only version I seem to be able to find is all in japanese.  Thus, it is nearly impossible for anyone to work with it.  There are so many things that have been added to it, and so much extra disorganized garbage that Im suprised I didnt just shift delete this damn thing.  I am suprised at myself because I actually did not delete it.

But not all has been lost!  I've lost count of the number of bugs that I've found and fixed.  I've been working hard on completely overhauling the entire damn thing to make it much more readable and flexible.  My hope is that by rewriting everything from the ground up (I'm almost done), organizing, commenting, and translating, that other Scripters will be able to use the rewritten version of the script as a framework for additional scripts.

So here's to hoping.  Is there any interest in a full english translated stable organized rewrite of this battle system script?

---

Edit:  Ok, Beta Testing
http://www.775.net/~heretic/downloads/rmxp/xrxs/index.php

Edit again:  I've posted this to Chaos Projects Scripts Databse
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Blizzard

Minkoff's RTAB is apparently quite good.

I think I did some coding on XRXS a long time ago for somebody. Yeah, it was a mess.
Check out our game brands:

Daygames
Game Night Games
Chugnar Games

Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Heretic86

I'm having a bit of trouble trying to translate this section.  Biggest problem is
if $data_states[j].name =~ /^ƒXƒŠƒbƒv([0-9]+)(%|")/
because the characters do not translate at all for me, so I have no clue what it is checking for.

However, I think this is probably a poor way to do it.  It appears to be trying to stack Slip Damage States, where I think it should be checking for the Slip Damage Flags instead of trying to do it by name, so I am not really sure what is going on in this method, mostly because I can't translate. 

Anyone care to rewrite the Comments of this Method?

Spoiler: ShowHide
  #--------------------------------------------------------------------------
  # * Calculate Slip Damage
  #--------------------------------------------------------------------------
  alias xrxs_bp7_slip_damage_effect slip_damage_effect
  def slip_damage_effect
    # Set damage
    slip_damage_percent = 0
    slip_damage_plus = 0
    # Dispersion
    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
      # Call Original
    xrxs_bp7_slip_damage_effect
    else
      # If this element is protected by armor, then it's reduced by half
      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


This is the last section left to Translate.  I still have a bit of work to do on code reorganization and just general crap to clean up.  After that, I'll post what I've got.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion

I love this battle system, but I have issues with it.

1. It is a nightmare for begginers (and even worse for those without any programming knowledge).
2. It is horribly written
3. Lag
4. Awkward rules (like sound effects don't really work, so you have to event them)...

I really love this ABS but it sucks. If you were to re-write it that would be AWESOME, and I know a-lot of people would be all over you for it, because it is a really good ABS, it just needs work.

Heretic86

Quote from: Zexion on November 25, 2012, 01:42:53 am
I love this battle system, but I have issues with it.

1. It is a nightmare for begginers (and even worse for those without any programming knowledge).
2. It is horribly written
3. Lag
4. Awkward rules (like sound effects don't really work, so you have to event them)...

I really love this ABS but it sucks. If you were to re-write it that would be AWESOME, and I know a-lot of people would be all over you for it, because it is a really good ABS, it just needs work.


Still workin on it...

Just so you know, I have fixed the lag completely.  It was all in the graphics display, Refresh Abuse basically.

Tons of other problems have been resolved also.  One of my big gripes with it was improper Battle Turn Incrementing making eventing battles nearly impossible.  I have managed to fix that.  But I now have another bug I cant seem to get around.

In eventing battles, forcing an action from any enemy results in the enemy action occuring immediately, regardless as to whether or not the forced enemy action is set to occur immediately or occur in normal sequence.  It is making me rethink the Turn Incrementing, but I dont have a solution at this time.  I am considering posting it with this bug and see if anyone else has an elegant solution to it.  Would someone be interested in taking a crack at it?

The only other thing I plan on doing is probably just yank out the untranslatable code that I put up in my 3rd post.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion

an idea- Try to display the code on your phone. I know it's wierd, but my smartphone displays the foreign characters that my laptop replaces with
[] [][][] (?)


Also you should try to see if you can make an easier config to control the enemies X, Y value and the size of the screen etc. Because when used with a resolution script, it works for me with some editing, but the enemy is still below me.

       ______________________
      |                                  |
      |       Me:                      |
      |                                  |
      |                                  |
      |_____________________|
                   Enemy

Just a suggestion. I have no idea what any code in the script does because it's just a nightmare, so yeahhhh....

Heretic86

Tell you what, can you read this?

Spoiler: ShowHide
#==============================================================================
# ** Window_CP - Holds "Count Progress" in Battle Windows
#------------------------------------------------------------------------------
#  This class is a Child Window of Window_BattleStatus
#
#  Updated when Parent is updated.
#
#  This class holds the "Count Progress" Bar for Actors
#
#  This Child Window will be refreshed when an Actor's CP has changed. It has
#  been optimized to draw the minimal level of graphics possible by displaying
#  the Black Background for this Bar in Window_BattleBars because the other
#  class is Refreshed much less frequently, thereby increasing performance.
#
#  During Battle, the CP Bar will change color if a Non Equipment Change in
#  an Actor's Agility is detected.  For example, any form of HASTE type of
#  spell effect on an Actor will change the color of the CP Bar to a Reddish
#  color to indicate a Statis having an effect on how quickly the CP Bar
#  will fill each turn.  Likewise, SLOW type of spell effects on any Actor
#  will also result in a Color Change of the CP Bar.  Equipment that increases
#  any Actor's Agility will NOT result in a Color Change of the CP Bar and
#  is regarded as an Actor's Normal Agility State.  However, if any Equipment
#  causes a Spell Effect that increases agility, like a "Haste Ring", that
#  will result in a color shift, as well as resulting in a spell effect status.
#
#  This class will also change the CP Bar to an Exp Bar to provide the Player
#  with a Graphic representation of Progress towards Next Level at the end
#  of Battle.
#
#  NOTE:  ATB - Window Level Up contains the commands to change the CP Meter
#  to the Experience Meter.  It is not called in this window.
#

#==============================================================================
class Window_CP < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization - Child of BattleStatus_Window
  #-------------------------------------------------------------------------- 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    # Make Border and Background Invisble
    self.opacity = 0
    self.contents_opacity = 255
    self.visible = true
    # Holds Value of Count Progress for each Actor
    @actor_cp = []
    # Whether to display CP Bar or Exp Bar
    @display_exp = false
    # Level Up Flags from Parent for a 4 Actor Party
    @level_up_flags = [false, false, false, false]
    # Display Contents
    self.refresh
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------   
  def dispose
    # Dispose if window contents Bitmap is set   
    if self.contents != nil
      self.contents.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Define New Colors for Consistency across Windows
  #--------------------------------------------------------------------------
  def cp_color_1
    return Color.new(255, 255, 128, 255) # Yellow
  end
  def cp_color_2
    return Color.new(128, 128, 0, 255)   # Dark Yellow
  end
  def exp_color_1
    Color.new(128, 128, 220, 255)        # Blue
  end
  def exp_color_2
    Color.new(48, 48, 220, 255)          # Dark Blue
  end
  def haste_color_1
    Color.new(255, 128, 128, 255)        # Red (well, red'ish)
  end
  def haste_color_2
    Color.new(128, 48, 48, 255)          # Dark Red
  end
  def slow_color_1
    Color.new(128, 255, 255, 255)        # Teal
  end
  def slow_color_2
    Color.new(48, 128, 128, 255)         # Dark Teal
  end
  #--------------------------------------------------------------------------
  # * Set Level Up Flag
  #     actor_index : actor index
  #--------------------------------------------------------------------------
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
  #--------------------------------------------------------------------------
  # * Set Display to Experience Mode
  #     1 = stored exp at start of battle, 2 = current exp after exp gain
  #--------------------------------------------------------------------------
  def set_display_exp=(value)
    @display_exp = value
  end
  #--------------------------------------------------------------------------
  # * Store Values - Stores CP, Percent to Next Level, Exp and Exp String
  #   - Since these values change at the end of battle, they need to be stored
  #--------------------------------------------------------------------------
  def store_values(actor, i)
    # If Level is Maxed out
    if actor.next_exp_s == "-------"
      # Next Level is just 100% / 100 or just 1
      percent_to_next_level = 1.0
    # Calculate Percent
    else
      # Math for Current c_exp and Next n_exp Exp Values
      c_exp = actor.exp - actor.exp_list[actor.level]
      n_exp = Float(actor.next_exp_s) - actor.exp_list[actor.level]
      # Math to calculate Percent to Next Level
      percent_to_next_level = c_exp / n_exp
    end
    # Store Actor ID
    @actor_cp[i] = [actor.id]
    # Store Count Progress - CP
    @actor_cp[i][1] = actor.cp
    # Store Percent
    @actor_cp[i][2] = percent_to_next_level
    # Store Exp String
    @actor_cp[i][3] = actor.exp_s == "-------" ? "Max" : actor.exp.to_s
    # Store Next Exp String
    @actor_cp[i][4] = actor.exp_s == "-------" ? "Max" : actor.next_exp_s
    # Store Actors Agility
    @actor_cp[i][5] = actor.agi
  end
  #--------------------------------------------------------------------------
  # * Refresh - Redraw the Contents of the Window - Called VERY Frequently
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Window holds CP and EXP Bar Data for All Actors
    for i in 0...$game_party.actors.size
      # Local Variables from Global for Storing and Positioning
      actor = $game_party.actors[i]
      # If Initial Battle Values not Stored, New Exp, or Stored and Level Up
      if not @actor_cp[i] or
         @display_exp == 2 or
         (@display_exp == 1 and @level_up_flags[i])
        # Store Actor CP, Percent to Next Level, Exp and Exp String
        store_values(actor, i)
      else
        # Store Count Progress - CP
        @actor_cp[i][1] = actor.cp
      end
      # Set Horizontal Position of CP Meter
    actor_x = i * 160 + 4
      # Draw the Line
      draw_actor_cp_meter(actor, actor_x, 96, 120, i)
    end
    # Reset to prevent Redraw
    @display_exp = false
  end
  #--------------------------------------------------------------------------
  # * Frame Update - Updates the Data and decides if a Refresh is needed
  #-------------------------------------------------------------------------- 
  def update
    # Super checks for a change in Windowskin
    super
    # If CP Bar is now Exp Bar
    @exp_bar_showing = true if @display_exp
    # Slightly higher opacity level during main phase
    if @exp_bar_showing
      self.contents_opacity += 4 if self.contents_opacity < 255
    elsif $game_temp.battle_main_phase
      self.contents_opacity += 6 if self.contents_opacity < 223
    else
      self.contents_opacity -= 6 if self.contents_opacity > 127
    end
    # If Stored Values Size doesnt match the number of Actors
    while $game_party.actors.size < @actor_cp.size
      # Pop the last element off of the array
      @actor_cp.pop
      # Set Flag to Refresh
      need_refresh = true     
    end   
    # For each Actor in the Party
    for i in 0...$game_party.actors.size
      # If Actor doesn't have Stored Values
      if not @actor_cp[i]
        # Store Actor CP, Percent to Next Level, Exp and Exp String
        store_values($game_party.actors[i], i)
      end 
      # If the Actor CP differs from Stored Value
      if @actor_cp[i][1] != $game_party.actors[i].cp
        # Redraw the Window
        self.refresh
        # Quit Processing so we dont Redraw for every Actor
        return
      end
    end
    # If changing Display Mode to Exp Bar instead of CP Bar or Exp Level Up
    if @display_exp
      # Redraw the Window
      self.refresh
      # Quit Processing so we dont Redraw again in the same frame
      return     
    end
    # If Stored Values changed
    if need_refresh
      # Redraw the Window
      self.refresh       
    end   
  end
  #--------------------------------------------------------------------------
  # ** Draw CP Meters for all Actors
  #--------------------------------------------------------------------------
  def draw_actor_cp_meter(actor, x, y, width, i)
    # If Display Exp flag not set (End of Battle - Called by Window Level Up)
    if not @display_exp
      # Displays the CP Bar
      self.contents.font.color = system_color
      # Calculate Width
      w = width * [actor.cp,65535].min / 65535
      # Color Change of CP Bar for Haste
      if actor.base_agi < actor.agi
        # Draw Vertiacal Gradient Line with a Variable Width
        draw_line (x, y+27, x, y+31, haste_color_1, w, haste_color_2)
      # Color Change of CP Bar for Slow
      elsif actor.base_agi > actor.agi
        # Draw Vertiacal Gradient Line with a Variable Width
        draw_line (x, y+27, x, y+31, slow_color_1, w, slow_color_2)
      # Default Progress Color
      else
        # Draw Vertiacal Gradient Line with a Variable Width
        draw_line (x, y+27, x, y+31, cp_color_1, w, cp_color_2)
      end
    else
      # Displays Exp Bar with Old and New Data
      self.contents.font.color = system_color
      # Percentage to Next Level from Stored Data in Array
      percent_to_next_level = @actor_cp[i][2] 
      # Text to Display for Current Experience String from Stored Data in Array
      exp_num = @actor_cp[i][3]
      # Text to Display for Next Experience String from Stored Data in Array
      exp_num_next = @actor_cp[i][4]
      # Calculate Width
      w = [width * percent_to_next_level].min
      # Draw Vertiacal Gradient Line with a Variable Width
      draw_line (x, y+27, x, y+31, exp_color_1, w, exp_color_2)
      # Displays Exp Text
      self.contents.font.color = normal_color
      self.contents.font.size = 12
      self.contents.draw_text(x+8,108,120,32,"Exp "+exp_num+" / "+exp_num_next)     
    end
  end 
end



#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
#  This window displays the status of all party members on the battle screen.
#==============================================================================
class Window_BattleStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  alias cp_window_battlestatus_initialize initialize
  def initialize
    # Original - Call first to allow CP Window Contents to be on top
    cp_window_battlestatus_initialize
    # CP Window holds Count Progress Bars due to very frequent Refreshing
    @cp_window = Window_CP.new     
  end 
  #----------------------------------------------------------------------------
  # * Frame Update for Child CP Window
  #----------------------------------------------------------------------------
  alias cp_window_battlestatus_update update
  def update
    # Update the CP Child Window
    @cp_window.update
    # Call Original
    cp_window_battlestatus_update
  end
  #--------------------------------------------------------------------------
  # * Display Exp - Passes Argument from Parent Window to Child Window
  #--------------------------------------------------------------------------
  def display_exp=(value)
    @cp_window.set_display_exp = value
  end
  #----------------------------------------------------------------------------
  # * Set Level Up Flag
  #     actor_index : actor index
  #----------------------------------------------------------------------------
  alias window_cp_level_up level_up
  def level_up(actor_index)
    # Call Original
    window_cp_level_up(actor_index)
    # Set Flags in Child CP Window
    @cp_window.level_up(actor_index)
  end 
  #--------------------------------------------------------------------------
  # * Dispose - Disposes of new Child Windows
  #--------------------------------------------------------------------------
  alias cp_battlestatus_window_dispose dispose
  def dispose
    # Kill the CP Window
    @cp_window.dispose
    # Original
    cp_battlestatus_window_dispose
  end 
end
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion

Yes, that code is beautifully written. :P
I like codes with proper indention, comments, etc.

Heretic86

No luck on displaying those characters on my phone.  :(

Its nearly all like that now.  I've been working some more on pulling out extra garbage, which actually allowed me to do things in a different way that should be much friendlier to other scripters.  I keep running into more bugs and other things that I just dont like and need to change just a couple more things, then I think I'll be able to start doing this more publicly.

The graphics have been completely separated from the script to allow for customizing the look and feel much more easily, so graphics arent a part of the script any more.  They are still there, but they are separate now.

Aside from the mentioned issues, are there any other major gripes with the way this ATB works?
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion

QuoteNo luck on displaying those characters on my phone.

Well it was worth a shot, right? :P

When I think about this battle system a few things come to mind instantly.
Graphics
Sound
Camera
Stage

Graphics - The hud was just annoying to remove, but I suspect that is what you removed from the script. Also for some reason, when the camera zoomed in, the player sprite turns semi transperent. MASSIVELY annoying.

Sound - Like I said the battle crys, attack sounds, etc. never worked as intended.

Camera - Firstly It would be nice to have some controls for the camera, and not have it randomly zooming in and out all the time. By controls I simply mean scripted controls like If i wanted a stationary camera i could set x,y,z = to whatever, if i wanted the camera to zoom to the character, then the enemy as in some kind of tutorial I could do that with script calls.

Stage - Not sure if the version you have is the one that allows you to fall off the stage, get hurt, and spawn back on the ground, but an explanation of how to use those controls (if even included) would be nice.

Also a "bug" with the stage&camera would be the awkward "zooming background". If you look at the background and character sprite when the camera zooms the player sprite is moved to stay in the center of the camera instead of the camera centering itself onto the player. This makes it appear as if the player is floating upwards off the ground on certain battlebacks.


Also were you going to release this to the public?

Heretic86

November 29, 2012, 09:23:05 pm #10 Last Edit: November 29, 2012, 09:26:08 pm by Heretic86
It was worth a shot on the chance that it may have worked.

I hope we are talking about the same battle system, because the way you describe it, it sounds more like Cogwheels ATB using Minkoff's Animated Battlers, or possibly another one.  This one has no camera at all.  But yeah, that camera in which ever one is the one that used the camera was one of my biggest gripes and I dumped it about 10 seconds after playing with it.

This is the original code for the XRXS Battle System (I think that is what this is called, as the intials are plastered all over the alias names, and not really a lot of commenting that I can read), and as you can see, this code is a complete mess, and that is being polite.

Spoiler: ShowHide
#==============================================================================
# ¦ New_Battle
#------------------------------------------------------------------------------
# Compiled By : MakirouAru
#==============================================================================
# ¥£¥ 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|

# ‰ñ•œ--ÊŒ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_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
#--------------------------------------------------------------------------
# œ 'ljÁEŒöŠJƒCƒ"ƒXƒ^ƒ"ƒX•ϐ"
#--------------------------------------------------------------------------
  attr_accessor :level_up_flags # LEVEL UP!•\ަ
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
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,ð'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
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 ,É'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
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
# •à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
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion


Heretic86

Nope.  The HP Bars should give it away.  That script above will work, just plug and play and try it out.  I dont have any screenshots or videos of it.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Heretic86

The core battle system appears to be rock solid now.  Still have a few things to iron out.

Problems I cant solve:

I have a new Window that holds Actor Stats using Bar Graphics.  This has caused me some issues.

The Actor Arrow displays below these Bars shown from the New Window.  I was able to resolve this by changing the viewport from viewport2 to viewport3 due to a higher z index.  So that part is fixed.

I cant seem to get Damage Pop to work quite the same way.  Increasing the Z Index fails to put it on top of the Bars Window.  It is using the default Damage Pop that, quite frankly, I'd like to get rid of and make it a bit more fancy, but that is on the backburner for now.  At this time, I'd like to just get the Damage an Actor takes to show on top of an additional window.

Any suggestions?
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

KK20

By the default damage pop, you mean the method 'damage' in RPG::Sprite? If that's the case, just rewrite the method by locating
@_damage_sprite = ::Sprite.new(self.viewport)

Instead of self.viewport, create a new viewport that has a higher z-value than your window's viewport.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

Heretic86

Looks like I didnt have a choice there.  So I made two new viewports, one for the Actor Arrow and one for the Damage animation.  That came from me not wanting the Actor Arrows to cover Damage.  Not sure if it was the best way to do it, but it seems to function just fine.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)

Zexion

OHH, I just realised why I was confused. I guess XRXS isn't the name of the battle system. It's the name of the person who made it. He also made a full motion linear battle system and pasted his name all over it, so I thought it was called XRXS lol.

Heretic86

December 03, 2012, 12:38:10 am #17 Last Edit: December 04, 2012, 04:03:29 am by Heretic86
Well, I feel it is ready for Beta Testing.  Let me know what you think or if you find any bugs.

XRXS ATB Battle System Demo
http://www.775.net/~heretic/downloads/rmxp/xrxs/index.php

Edit:  I feel this code is solid enough that I can post it to the Scripts Database.  Download has been updated a bit as well.
Current Scripts:
Heretic's Moving Platforms

Current Demos:
Collection of Art and 100% Compatible Scripts

(Script Demos are all still available in the Collection link above.  I lost some individual demos due to a server crash.)