RTAB Compatibility Help!
#1
I recently found a Battle Result Script by Raziel. I think that it's the only Battle Result Script that is compatible with the Tanketai Sideview Battle Script.

Here's what the Battle Result Script does.

[Image: ErrorRTAB2.jpg]

Here's The Battle Result Script.
PHP Code:
<?php 
#==============================================================================
# ** Battle Report
#==============================================================================
# Raziel (originally by David Schooley alias Illustrationism)
# Version 1.6
# 2006-10-08
#------------------------------------------------------------------------------
# * Instructions
# ~ Place this script above main. Make a folder in the pictures folder
# and call it Faces. When using a face picture, make sure it's
# named like the character's file. To turn facesets on search for
# @face = false and set it to true to turn facesets on.
#------------------------------------------------------------------------------
#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Change EXP
# exp : new EXP
#--------------------------------------------------------------------------
def exp=(exp)
@
exp = [[exp, 9999999].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
# NEW - David
$d_new_skill = nil
for j in $data_classes[@class_id].learnings
if j.level == @level
learn_skill
(j.skill_id)
# NEW - David
skill = $data_skills[j.skill_id]
$d_new_skill = skill.name
end
end
end
while @exp < @exp_list[@level]
@
level -= 1
end
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
#--------------------------------------------------------------------------
# * Get the current EXP
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get the next level's EXP
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Window_LevelUP
#==============================================================================

class Window_LevelUp < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(actor, pos)
#change this to true to show the actor's face
@face = true
@actor = actor
y
= (pos * 120)
super(280, y, 360, 120)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 255
if $d_dum == false
refresh
end
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self
.contents.clear
self
.contents.font.size = 18
if @face == true
draw_actor_face
(@actor, 4, 0)
else
draw_actor_graphic(@actor, 50, 80)
end
draw_actor_name
(@actor, 111, 0)
draw_actor_level(@actor, 186, 0)
show_next_exp = @actor.level == 99 ? "---" : "#{@actor.next_exp}"
min_bar = @actor.level == 99 ? 1 : @actor.now_exp
max_bar
= @actor.level == 99 ? 1 : @actor.next_exp
draw_slant_bar
(115, 80, min_bar, max_bar, 190, 6, bar_color = Color.new(0, 100, 0, 255), end_color = Color.new(0, 255, 0, 255))
self.contents.draw_text(115, 24, 300, 32, "Exp: #{@actor.now_exp}")
self.contents.draw_text(115, 48, 300, 32, "Level Up: #{show_next_exp}")
end
#--------------------------------------------------------------------------
# * Level UP
#--------------------------------------------------------------------------
def level_up
self
.contents.font.color = system_color
self
.contents.draw_text(230, 48, 80, 32, "LEVEL UP!")
end
#--------------------------------------------------------------------------
# * Learn Skill
#--------------------------------------------------------------------------
def learn_skill(skill)
self.contents.font.color = normal_color
unless $d_new_skill
== nil
Audio
.se_play("Audio/SE/105-Heal01")
self.contents.draw_text(186, 24, 80, 32, "Learned:")
self.contents.font.color = system_color
self
.contents.draw_text(261, 24, 90, 32, skill)
end
end
end
#==============================================================================
# ** Window_Exp
#==============================================================================

class Window_EXP < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(exp)
super(0, 0, 280, 60)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 255
refresh
(exp)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(exp)
self.contents.clear
self
.contents.font.color = system_color
self
.contents.draw_text(0, 0, 150, 32, "Exp Earned:")
self.contents.font.color = normal_color
self
.contents.draw_text(180, 0, 54, 32, exp.to_s, 2)
end
end
#==============================================================================
# ** Window_Money_Items
#==============================================================================

class Window_Money_Items < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(money, treasures)
@
treasures = treasures
super
(0, 60, 280, 420)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 255
refresh
(money)
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(money)
@
money = money
self
.contents.clear
self
.contents.font.color = system_color
self
.contents.draw_text(4, 4, 100, 32, "Items Found:")
self.contents.font.color = normal_color
y
= 32
for item in @treasures
draw_item_name
(item, 4, y)
y += 32
end
cx
= contents.text_size($data_system.words.gold).width
self
.contents.font.color = normal_color
self
.contents.draw_text(4, 340, 220-cx-2, 32, $game_party.gold.to_s, 2)
self.contents.font.color = normal_color
self
.contents.draw_text(4, 300, 220-cx-2, 32, "+ " + @money.to_s, 2)
self.contents.font.color = system_color
self
.contents.draw_text(124-cx, 340, cx + 100, 32, $data_system.words.gold, 2)
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias raz_battle_report_main main
alias raz_battle_report_be battle_end
#--------------------------------------------------------------------------
# * Game Temp Variable Setup
#--------------------------------------------------------------------------
def main
@lvup_window = []
@
show_dummies = true
raz_battle_report_main
@lvup_window = nil
@level_up = nil
@ch_stats = nil
@ch_compare_stats = nil
Audio
.me_stop
end
#--------------------------------------------------------------------------
# * Battle Ends
# result : results (0:win 1:lose 2:escape)
#--------------------------------------------------------------------------
def battle_end(result)
raz_battle_report_be(result)
@
status_window.visible = false
@spriteset.dispose
Graphics
.transition
if result == 0
display_lv_up
(@exp, @gold, @treasures)
loop do
Graphics.update
Input
.update
if Input.trigger?(Input::C)
break
end
end
trash_lv_up
end
end
#--------------------------------------------------------------------------
# * Start After Battle Phase
#--------------------------------------------------------------------------
def start_phase5
# Shift to phase 5
@phase = 5
# Play battle end ME
$game_system.me_play($game_system.battle_end_me)
# Return to BGM before battle started
$game_system.bgm_play($game_temp.map_bgm)
# Initialize EXP, amount of gold, and treasure
exp = 0
gold
= 0
treasures
= []
# Loop
for enemy in $game_troop.enemies
# If enemy is not hidden
unless enemy.hidden
# Add EXP and amount of gold obtained
exp += enemy.exp
gold
+= enemy.gold
# Determine if treasure appears
if rand(100) < enemy.treasure_prob
if enemy.item_id > 0
treasures
.push($data_items[enemy.item_id])
end
if enemy.weapon_id > 0
treasures
.push($data_weapons[enemy.weapon_id])
end
if enemy.armor_id > 0
treasures
.push($data_armors[enemy.armor_id])
end
end
end
end
# Treasure is limited to a maximum of 6 items
treasures = treasures[0..5]
@
treasures = treasures
@exp = exp
@gold = gold
for item in treasures
case item
when RPG
::Item
$game_party
.gain_item(item.id, 1)
when RPG::Weapon
$game_party
.gain_weapon(item.id, 1)
when RPG::Armor
$game_party
.gain_armor(item.id, 1)
end
end
@phase5_wait_count = 10
end
#--------------------------------------------------------------------------
# * Frame Update (after battle phase)
#--------------------------------------------------------------------------
def update_phase5
if @phase5_wait_count > 0
@phase5_wait_count -= 1
if @phase5_wait_count == 0
$game_temp
.battle_main_phase = false
end
return
end
battle_end
(0)
end
#--------------------------------------------------------------------------
# * Display Level UP
#--------------------------------------------------------------------------
def display_lv_up(exp, gold, treasures)
$d_dum = false
d_extra
= 0
i
= 0
for actor in $game_party.actors
# Fill up the Lv up windows
@lvup_window[i] = Window_LevelUp.new($game_party.actors[i], i)
i += 1
end
# Make Dummies
if @show_dummies == true
$d_dum
= true
for m in i..3
@lvup_window[m] = Window_LevelUp.new(m, m)
end
end
@exp_window = Window_EXP.new(exp)
@
m_i_window = Window_Money_Items.new(gold, treasures)
@
press_enter = nil
gainedexp
= exp
@level_up = [0, 0, 0, 0]
@
d_new_skill = ["", "", "", ""]
@
d_breakout = false
@m_i_window.refresh(gold)
wait_for_OK
@d_remember = $game_system.bgs_memorize
Audio
.bgs_play("Audio/SE/032-Switch01", 100, 300)
max_exp = exp
value
= 28
if exp < value
value
= exp
end
if value == 0
value
= 1
end
for n in 0..gainedexp - (max_exp / value)
exp -= (max_exp / value)
if @
d_breakout == false
Input
.update
end
for i in 0...$game_party.actors.size
actor
= $game_party.actors[i]
if
actor.cant_get_exp? == false
last_level
= actor.level
actor
.exp += (max_exp / value)
# Fill up the Lv up windows
if @d_breakout == false
@lvup_window[i].refresh
@exp_window.refresh(exp)
end
if actor.level > last_level
@level_up[i] = 5
Audio
.se_play("Audio/SE/056-Right02.ogg", 70, 150)
if
$d_new_skill
@d_new_skill[i] = $d_new_skill
end
end
if @level_up[i] == 0
@d_new_skill[i] = ""
end
if @level_up[i] > 0
@lvup_window[i].level_up
if @d_new_skill[i] != ""
@lvup_window[i].learn_skill(@d_new_skill[i])
end
end
if Input.trigger?(Input::C) or exp <= 0
@d_breakout = true
end
end
if @d_breakout == false
if @level_up[i] >0
@level_up[i] -= 1
end
Graphics
.update
end
end
if @d_breakout == true
for i in 0...$game_party.actors.size
actor
= $game_party.actors[i]
if
actor.cant_get_exp? == false
actor
.exp += exp
end
end
exp
= 0
break
end
end
Audio
.bgs_stop
@d_remember = $game_system.bgs_restore
for i in 0...$game_party.actors.size
@lvup_window[i].refresh
end
@exp_window.refresh(exp)
Audio.se_play("Audio/SE/006-System06.ogg", 70, 150)
$game_party.gain_gold(gold)
@
m_i_window.refresh(0)
Graphics.update
end
#--------------------------------------------------------------------------
# * Trash Level UP
#--------------------------------------------------------------------------
def trash_lv_up
for i in 0...4
@lvup_window[i].visible = false
end
@exp_window.visible = false
@m_i_window.visible = false
@lvup_window = nil
@exp_window = nil
@m_i_window = nil
end
# Wait until OK key is pressed
def wait_for_OK
loop
do
Input.update
Graphics
.update
if Input.trigger?(Input::C)
break
end
end
end
end
#--------------------------------------------------------------------------
# * Module RPG::Cache
#--------------------------------------------------------------------------

module RPG::Cache
def self
.face(filename, hue = 0)
self.load_bitmap("Graphics/Faces/", filename, hue)
end
end
#--------------------------------------------------------------------------
# * Window_Base
#--------------------------------------------------------------------------

class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw Actor Face
#--------------------------------------------------------------------------
def draw_actor_face(actor, x, y)
bitmap = RPG::Cache.face(actor.character_name, actor.character_hue)
self.contents.blt(x, y, bitmap, Rect.new(0,0,bitmap.width, bitmap.height))
end
#--------------------------------------------------------------------------
# * Draw Slant Bar(by SephirothSpawn)
#--------------------------------------------------------------------------
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self
.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g
= 100 * (height - i) / height + 0 * i / height
b
= 100 * (height - i) / height + 0 * i / height
a
= 255 * (height - i) / height + 255 * i / height
self
.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max.to_f) * width - 1)
for
j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g
= bar_color.green * (width - i) / width + end_color.green * i / width
b
= bar_color.blue * (width - i) / width + end_color.blue * i / width
a
= bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self
.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
end

And Here's the Addon which makes the Battle Result Script compatible with RTAB scripts.
PHP Code:
<?php 
class Scene_Battle
alias raz_battle_fix_be battle_end
def battle_end
(result)
raz_battle_fix_be(result)
@
status_window.visible = false
@spriteset.dispose
Graphics
.transition
if result == 0
display_lv_up
(@exp, @gold, @treasures)
loop do
Graphics.update
Input
.update
if Input.trigger?(Input::C)
break
end
end
trash_lv_up
end
end
end

The Battle Result script comes with a addon script which makes it compatible with an RTAB script(By DerVVulfman), so i got the addon that came with the Battle Result Script because i'm also using Atoa's RTAB. Everything goes good until i complete a battle, this error shows up.

[Image: RTABError.jpg]

The error comes up after i close the battle result window. Can someone help me out?
Reply }
#2
I made a test :
I downloaded the demo of the CBS here, pasted your Battle Result Script below, then the Addon.
I got the error after a battle too.

Having read the scripts, it seems that the Addon is already integrated in your version of the Battle Result Script.
I removed the Addon and then it didn't crash.

I suggest you to give a try.
Some scripts :
Working on :
Reply }
#3
Did you also paste Atoa's ATB Script also? Because it won't work with Atoa's ATB and the addon that came with the Battle Result Script was suppose to make it compatible.
Reply }
#4
Ahem.

RTAB is a battlesystem created by a Japanese scripter named Cogwheel. Atoa's ATB is a separate battlesystem. Neither battlesystem will work with one another. And Cogwheel's RTAB is fairly complex and incompatible with a number of default 'battle' scripts.

As to using the Raziel/Illustrationism Battle Report system with Atoa's battlesystem... I never tried the two together. But I don't see combining Atoa's battlesystem and RTAB as possible.

Funny how other people started trying to call their own systems 'RTABSs' after Cogwheel's...
Reply }
#5
I think you misunderstood what i was saying. I'm not asking to make a RTAB and ATB compatible. I'm trying to ask for help with making Atoa's ATB script compatible with Raziel's Battle status.

Edit: Ok, i see where you misunderstood me. On my first post i said that i was using Atoa's RTAB. I'm not using an RTAB, i'm using Atoa's ATB. Here it is.
PHP Code:
<?php 
#==============================================================================
# Add-On: Atoa's Active Time Battle
# by Atoa
#==============================================================================
# This Add-On adds a time bar system to the game
# If you don't want to use this Add-ON, simply delete it
# The configurations are explained below
#==============================================================================

module N01
# Do not remove or change this line
Cast_Time = {}
# Do not remove or change this line

# Waiting Mode
Wait_Mode = 0
# 0 = On Hold Battle: the bar stops to select actions, skills and itens
# 1 = Semi On Hold Battle: the bar stop to select itens and skills.
# 2 = 100% Active Battle: the bar will never stop.

# Pause the bar when a battler is executing an action?
Wait_Act_End = true

# Show individual time bars for the battlers?
Meters = true

# Show a single bar that indicates the battler's action order?
Bars = true

# Battle Speed
Speed = 10.0

# Initial bar value modifier
Atb_Initial_Value = 0

# Multiplication rate of the initial bar value
Atb_Initial_Rate = 1.0

# Definition of turn shifting.
# This definition must be used for the duration of effects and
# battle event conditions
# This value does not count to enemies actions conditions
Custom_Turn_Count = 0
# 0 = By number of fighters
# 1 = By number of executed actions
# 2 = By time (in frames)

# If 'Custom_Turn_Count = 1', define how many actions are equal to 1 turn
Action_Turn_Count = 10

# If 'Custom_Turn_Count = 2', define how much time (in frames) are equal to 1 turn
Time_Tunr_Count = 1200 # 20 frames is about 1 second

# Activate a timer for the casting of magical skills?
Magic_Skill_Cast = true

# Activate a timer for the casting of physical skills?
Physical_Skill_Cast = true

# Activate a timer for the casting of itens?
Item_Cast = true

# Set the escape style
Escape_Type = 0
# 0 = Escape options is shown on the character's action menu
# 1 = Keep pressed the key set in Escape_Input to escape
# shows a message on the screen
# 2 = Keep pressed the key set in Escape_Input to escape
# shows an escape bar

# Key that must be pressed to escape
Escape_Input = Input::A
# Input::A = Keyborard:Z
# Input::B = Keyborard:X
# Input::C = Keyborard:C
# Input::X = Keyborard:A
# Input::Y = Keyborard:S
# Input::Z = Keyborard:D
# Input::L = Keyborard:Q
# Input::R = Keyborard:W

# Show the name for the escape option when Escape_Type = 0
Escape_Name = 'Escape'

# Escape message when Escape_Type = 1
Escape_Message = 'Escaping...'
Cant_Escape_Message = "Can't Escape!"

# Time (in frames) needed to escape when Escape_Type > 0
# it is affected by the agility of characters and enemies
Escape_Time = 600

# Name of the graphic file when Escape_Type = 2
Escape_Skin = 'ESCAPEMeter'

# Position of the Fleeing Bar
Escape_Meter_Pos_Type = 0
# 0 = Above the characters
# 1 = Upper-Mid of the screen
# 2 = Custom position

# Custom position of the Fleeing Bar when Escape_Meter_Pos_Type = 2
Escape_Meter_Position = [240,64]

# Time Bar configurations
Meter_Skin = 'ATBMeter' # Graphic file name that represents the bars
# must be on the Graphic/Windowskins folder

# Position of the character's Time Bars
Meter_Pos_Style = 0
# 0 = Horizontal Pattern, not centralized
# 1 = Horizontal Pattern, centralized
# 2 = Vertical Bars
# 3 = Under the characters
# 4 = Custom

# Readjust the Time Bar's position on the battle screen
X_Meter = 12 # X position of the Bars
Y_Meter = 360 # Y position of the Bars

# Custom Time Bar position, only valid when Meter_Pos_Style = 4
Meter_Position = [[460,180],[480,210],[500,240],[520,270]]

# Coordinate 'Z' (height) of the Meter image if Meter_Pos_Style = 4
Meter_Height = 500

# Position of the enemie's Time Bars
Enemy_Meter = 0
# 0 = No time bars for the enemies
# 1 = Under the enemy
# 2 = Vertical list on the Side

# Configuration of the Action Bars.
Bar_Skin = 'ATBBar' # Name of the graphic file that represents the bar, must be
# on the Graphics/Windowskins folder
X_Bar = 128 # X position of the Bars
Y_Bar = 80 # Y position of the Bars

# Name of the default graphic Icon for characters
Default_Party_Icon = '050-Skill07'
# Individual character's Icons
# Must be configured on the following way: 'Battler file name' => 'Icon file name'
Party_Icon = {
'003-Fighter03' => 'Atoa-Icon',
'008-Fighter08' => 'Kahh-Icon',
'040-Mage08' => 'Herena-Icon',
'035-Mage03' => 'Tunicoelp-Icon',
}

# Name of the default graphic Icon for enemies
Default_Enemy_Icon = '046-Skill03'
# Individual icons for enemies
# must be configured on the following way: 'Battler file name' => 'Icon file name'
Enemy_Icon = {
'003-Fighter03' => 'Ash-Icon',
'049-Soldier01' => 'Soldier-Icon',
}

# Sound effect played when teh character's turn comes.
Command_Up_SE = '046-Book01'

# ATB's maximum value, only change if you know what you doing.
Max_Atb = 60000

#¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
# CAST SETTINGS
#¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

# Default cast pose
Casting_Pose_Default = "WAIT"

# Individual cast pose
# Casting_Pose = { Actor ID => "Action Name"}
Casting_Pose = { 3 => "GUARD_ATTACK", 4 => "WAIT-FLOAT"}

# NOTE: The poses must be configurated on the main config.

# Set here the cast time for each item and skill
# By default all items have the cast speed = 0 (that means, no cast).
#
# Cast_Time[Action_Type] = {Action_ID => [Speed, status]}
# Action_Type = 'Skill' for skills, 'Item' for items
# Action_ID = ID of the skill or item
# Speed = cast speed, higher value = faster cast
# recomended values between 500-100
# Status = The status that the cast speed is based
# if nil, the cast will have fixed speed
# the status can be:
# 'hp', 'sp', 'level', 'str', 'dex', 'int', 'agi'

Cast_Time['Skill'] = {1 => [500,'int'], 2 => [400,'int'], 3 => [300,'int'],
7 => [500,'int'], 8 => [400,'int'], 9 => [300,'int'], 10 => [500,'int'],
11 => [400,'int'], 12 => [300,'int'], 13 => [500,'int'], 14 => [400,'int'],
15 => [300,'int'], 16 => [500,'int'], 17 => [400,'int'], 18 => [300,'int'],
19 => [500,'int'], 20 => [400,'int'], 21 => [300,'int'], 22 => [500,'int'],
23 => [400,'int'], 24 => [300,'int'], 25 => [500,'int'], 26 => [400,'int'],
27 => [300,'int'], 28 => [500,'int'], 29 => [400,'int'], 30 => [300,'int']}

Cast_Time['Item'] = {1 => [500,'int'], 2 => [500,'int'], 3 => [500,'int'],
7 => [500,'int'], 8 => [500,'int'], 9 => [500,'int'], 10 => [500,'int'],
11 => [500,'int'], 12 => [500,'int']}

end

#==============================================================================
# ? Atoa Module
#==============================================================================
$atoa_script['SBS ATB'] = true

#==============================================================================
# ? RPG::Skill
#==============================================================================
class RPG::Skill
#----------------------------------------------------------------------------
include N01
#----------------------------------------------------------------------------
def cast_speed(battler)
if
Cast_Time != nil and Cast_Time['Skill'] != nil and Cast_Time['Skill'][@id] != nil
cast1
= Cast_Time['Skill'][@id][0]
if
Cast_Time['Skill'][@id][1].nil?
cast2 = 200
else
if
Cast_Time['Skill'][@id][1] == 'level'
cast2 = (eval("battler.#{Cast_Time['Skill'][@id][1]}") * 2) + 100
elsif Cast_Time
['Skill'][@id][1] == 'hp' or Cast_Time['Skill'][@id][1] == 'sp'
cast2 = (eval("battler.#{Cast_Time['Skill'][@id][1]}") / 50) + 100
else
cast2 = (eval("battler.#{Cast_Time['Skill'][@id][1]}") / 5) + 100
end
end
return (cast1 * cast2).to_i
end
return 0
end
end

#==============================================================================
# ? RPG::Item
#==============================================================================
class RPG::Item
#----------------------------------------------------------------------------
include N01
#----------------------------------------------------------------------------
def cast_speed(battler)
if
Cast_Time != nil and Cast_Time['Item'] != nil and Cast_Time['Item'][@id] != nil
cast1
= Cast_Time['Item'][@id][0]
if
Cast_Time['Item'][@id][1].nil?
cast2 = 200
else
if
Cast_Time['Item'][@id][1] == 'level'
cast2 = (eval("battler.#{Cast_Time['Item'][@id][1]}") * 2) + 100
elsif Cast_Time
['Item'][@id][1] == 'hp' or Cast_Time['Item'][@id][1] == 'sp'
cast2 = (eval("battler.#{Cast_Time['Item'][@id][1]}") / 50) + 100
else
cast2 = (eval("battler.#{Cast_Time['Item'][@id][1]}") / 5) + 100
end
end
return cast1 * cast2
end
return 0
end
end

#==============================================================================
# ? Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
attr_accessor :max_escape_count
attr_accessor
:escape_count
#--------------------------------------------------------------------------
def escape_atb_linetype
return 2 unless @battle_can_escape
return 1 if @battle_can_escape
end
#--------------------------------------------------------------------------
def escape_atb_lineamount
return 100 * @escape_count / @max_escape_count if @battle_can_escape
return 100 unless @battle_can_escape
end
#--------------------------------------------------------------------------
def max_escape_count
return @max_escape_count.nil? ? @max_escape_count = 0 : @max_escape_count
end
#--------------------------------------------------------------------------
def escape_count
return @escape_count.nil? ? @escape_count = 0 : @escape_count
end
#--------------------------------------------------------------------------
def max_escape_count=(n)
@
max_escape_count = n
end
#--------------------------------------------------------------------------
def escape_count=(n)
@
escape_count = n
end
end

#==============================================================================
# ? Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
attr_accessor :cast_action
attr_accessor
:cast_target
attr_accessor
:turn_count
attr_accessor
:guarding
attr_accessor
:passed
#--------------------------------------------------------------------------
alias acbs_initialize_atb initialize
def initialize
acbs_initialize_atb
@cast_skill = @turn_count = 0
@guarding = @passed = false
end
#--------------------------------------------------------------------------
def atb_linetype
return 4 if self.cast_action != nil and self.atb_full?
return
3 if self.cast_action != nil
return 2 if self.atb_full?
return
1
end
#--------------------------------------------------------------------------
def atb_lineamount
return 0 if self.dead?
return
100 * self.atb / self.max_atb
end
#--------------------------------------------------------------------------
def atb_enemy_visible
return 0 if self.dead? and Enemy_Meter > 0
return 255
end
#--------------------------------------------------------------------------
def max_atb
return Max_Atb
end
#--------------------------------------------------------------------------
def atb
return @atb.nil? ? @atb = 0 : @atb
end
#--------------------------------------------------------------------------
def atb=(n)
@
atb = [[n.to_i, 0].max, self.max_atb].min
end
#--------------------------------------------------------------------------
def atb_preset
percent
= self.max_atb * Atb_Initial_Rate * (rand(64) + 16) * self.agi / total_agi / 240
self
.atb = Atb_Initial_Value + percent
end
#--------------------------------------------------------------------------
def total_agi
total
= 0
for battler in $game_party.actors + $game_troop.enemies
total
+= battler.agi
end
return total
end
#--------------------------------------------------------------------------
def atb_full?
return @
atb == self.max_atb
end
#--------------------------------------------------------------------------
def atb_update
if self.cast_action.nil?
self.atb += Speed * (190 + rand(10)) * self.agi / total_agi
else
cast = cast_action.cast_speed(self)
self.atb += Speed * cast / total_agi
end
end
#--------------------------------------------------------------------------
def casting
if Casting_Pose[self.id] != nil
return Casting_Pose[self.id]
end
return Casting_Pose_Default
end
end

#==============================================================================
# ? Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
def inputable?
return (
self.atb_full? and super)
end
end

#==============================================================================
# ? Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
def movable?
return (
self.atb_full? and super)
end
#--------------------------------------------------------------------------
def make_action
self
.current_action.clear
return unless self.movable?
available_actions = []
rating_max = 0
for action in self.actions
n
= @turn_count
a
= action.condition_turn_a
b
= action.condition_turn_b
next
if (b == 0 and n != a) or (b > 0 and (n < 1 or n < a or n % b != a % b))
next if self.hp * 100.0 / self.maxhp > action.condition_hp
next
if $game_party.max_level < action.condition_level
switch_id
= action.condition_switch_id
next
if switch_id > 0 and $game_switches[switch_id] == false
available_actions
<< action
rating_max
= action.rating if action.rating > rating_max
end
ratings_total
= 0
for action in available_actions
ratings_total
+= action.rating - (rating_max - 3) if action.rating > rating_max - 3
end
if ratings_total > 0
value
= rand(ratings_total)
for
action in available_actions
if action.rating > rating_max - 3
if value < action.rating - (rating_max - 3)
self.current_action.kind = action.kind
self
.current_action.basic = action.basic
self
.current_action.skill_id = action.skill_id
self
.current_action.decide_random_target_for_enemy
return
else
value -= action.rating - (rating_max - 3)
end
end
end
end
end
end

#==============================================================================
# ? Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
attr_accessor :wait_mode
attr_accessor
:action_wait
#--------------------------------------------------------------------------
alias acbs_initialize_atb initialize
def initialize
acbs_initialize_atb
@wait_mode = Wait_Mode
@action_wait = Wait_Act_End
end
end

#==============================================================================
# ? Sprite_Battler
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
def stand_by
@repeat_action = @battler.normal
@repeat_action = @battler.pinch if @battler.hp <= @battler.maxhp / 4
@repeat_action = @battler.defence if @battler.defense_pose
@repeat_action = @battler.casting if @battler.cast_action != nil
unless
@battler.state_id == nil
for state in @battler.battler_states.reverse
next
if state.extension.include?("NOSTATEANIME")
next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
@
repeat_action = state.base_action
end
end
end
#--------------------------------------------------------------------------
def push_stand_by
action
= @battler.normal
action
= @battler.pinch if @battler.hp <= @battler.maxhp / 4
action
= @battler.defence if @battler.defense_pose
action
= @battler.casting if @battler.cast_action != nil
for state in @battler.battler_states.reverse
next
if state.extension.include?("NOSTATEANIME")
next if @battler.is_a?(Game_Enemy) && state.extension.include?("EXCEPTENEMY")
action = state.base_action
end
@repeat_action = action
@action.delete("End")
act = ACTION[action].dup
for i in 0...act.size
@action.push(act[i])
end
@action.push("End")
@
anime_end = true
@angle = self.angle = 0
end
end

#==============================================================================
# ? Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
alias acbs_main_atb main
def main
turn_count_speed
@escape_ratio = 40
$game_temp
.escape_count = 0
@escape_type, @escape_name = Escape_Type, Escape_Name
@input_battlers, @action_battlers = [], []
@
input_battler, @action_battler = nil, nil
@escaped = @update_turn_end = @action_phase = false
acbs_main_atb
end
#--------------------------------------------------------------------------
alias acbs_start_atb start
def start
acbs_start_atb
add_bars
for battler in $game_party.actors + $game_troop.enemies
battler
.turn_count = 0
battler
.atb = 0
battler
.atb_preset
battler
.cast_action = nil
battler
.cast_target = nil
battler
.defense_pose = false
end
for actor in $game_party.actors
actor
.atb = actor.max_atb - 1 if $preemptive
actor
.atb = 0 if $back_attack
end
for enemy in $game_troop.enemies
enemy
.atb = 0 if $preemptive
enemy
.atb = enemy.max_atb - 1 if $back_attack
end
update_meters
end
#--------------------------------------------------------------------------
alias acbs_terminate_atb terminate
def terminate
acbs_terminate_atb
remove_bars
end
#--------------------------------------------------------------------------
def add_bars
@atb_meters = ATB_Meters.new if Meters
@atb_meters_enemy = ATB_Meters_Enemy.new if Enemy_Meter != 0 and Meters
@atb_bars = ATB_Bars.new if Bars
end
#--------------------------------------------------------------------------
def remove_bars
@atb_meters.dispose if Meters
@atb_bars.dispose if Bars
@atb_meters_enemy.dispose if Enemy_Meter != 0 and Meters
end
#--------------------------------------------------------------------------
alias acbs_update_atb update
def update
if @phase == 1
$game_temp
.battle_main_phase = true
@actor_command_window.opacity = 0
@phase = 0
elsif
@phase != 5
@phase = 0
end
@event_running = true if $game_system.battle_interpreter.running?
acbs_update_atb
if $game_system.battle_interpreter.running?
return
elsif @event_running
@status_window.refresh
@event_running = false
end
return $scene = Scene_Gameover.new if $game_temp.gameover
return update_phase5 if @phase == 5
@event_running = true if $game_system.battle_interpreter.running?
if @
update_turn_end
turn_ending
@update_turn_end = false
end
if Input.press?(Escape_Input) and @escape_type > 0
if $game_temp.battle_can_escape
$game_temp
.max_escape_count = update_phase2_escape_rate
$game_temp
.escape_count += 2 unless @wait_on
@escaping = true
if !@help_window.visible and @escape_type == 1
@help_window.set_text('')
@
help_window.set_text(Escape_Message, 1)
end
if @escape_type == 2
if @escape_atb_meters.nil?
@
escape_atb_meters = Escape_Meters.new
@
escape_meter_opacity = 0
@escape_atb_meters.visible = true
else @escape_atb_meters != nil
@escape_atb_meters.opacity = 15 * @escape_meter_opacity
@escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
@escape_atb_meters.refresh
end
end
if $game_temp.escape_count >= $game_temp.max_escape_count
$game_temp
.escape_count = 0
update_phase2_escape unless $game_party
.all_dead?
end
else
@
help_window.set_text(Cant_Escape_Message, 1) if @escape_type == 1
if @escape_type == 2
if @escape_atb_meters.nil?
@
escape_atb_meters = Escape_Meters.new
@
escape_meter_opacity = 0
@escape_atb_meters.visible = true
else @escape_atb_meters != nil
@escape_atb_meters.opacity = 15 * @escape_meter_opacity
@escape_meter_opacity = [@escape_meter_opacity + 1, 17].min
@escape_atb_meters.refresh
end
end
end
elsif
@escape_type > 0
if @escaping
@escaping = false
@help_window.visible = false
end
$game_temp
.escape_count = [$game_temp.escape_count - 1, 0].max unless @wait_on
if @escape_atb_meters != nil and $game_temp.escape_count == 0
@escape_atb_meters.opacity = 15 * @escape_meter_opacity
@escape_meter_opacity = [@escape_meter_opacity - 1, 0].max
if @escape_meter_opacity == 0
@escape_atb_meters.dispose
@escape_atb_meters = nil
end
end
@escape_atb_meters.refresh if @escape_atb_meters != nil
end
return if @escaped
atb_update
input_battler_update
(false)
if @
action_battlers[0] != nil && @action_battler.nil?
@
action_battlers.flatten!
@
action_battler = @action_battlers[0]
if @
action_battler.dead?
@
action_battler.atb = 0
@action_battler = nil
else
start_phase4
end
end
if @action_battler != nil && !@spriteset.effect?
@
active_battler = @action_battler
update_phase4
end
end
#--------------------------------------------------------------------------
alias acbs_judge_atb judge
def judge
@end_battle = acbs_judge_atb
return @end_battle
end
#--------------------------------------------------------------------------
alias acbs_update_basic_atb update_basic
def update_basic
atb_update unless
@battle_start
input_battler_update
(true)
acbs_update_basic_atb
end
#--------------------------------------------------------------------------
def input_battler_update(basic)
for
battler in $game_troop.enemies + $game_party.actors
if battler.atb_full? and battler != @action_battler and not
@action_battlers.include?(battler)
battler_turn(battler)
break if
Wait_Act_End and not battler.actor?
end
end
if @input_battlers[0] != nil && @input_battler.nil? && !@wait_on
@input_battlers.flatten!
@
input_battler = @input_battlers[0]
if @
input_battler.current_action.forcing || @input_battler.restriction == 2 ||
@
input_battler.restriction == 3
if @input_battler.restriction == 2 || @input_battler.restriction == 3
@input_battler.current_action.kind = 0
@input_battler.current_action.basic = 0
end
@input_battler.defense_pose = false
@action_battlers << @input_battler
@input_battlers.shift
@input_battler = nil
elsif
@input_battler.inputable?
@
actor_index = $game_party.actors.index(@input_battler)
@
input_battler.current_action.clear
@input_battler.blink = true
else
@
input_battler.atb_update
@input_battlers.shift
@input_battler = nil
end
end
if @input_battler != nil
@input_action = true if basic
@now_battler = @active_battler
@active_battler = @input_battler
@input_battler.defense_pose = false
phase3_setup_command_window
if @actor_command_window.opacity == 0
update_phase3
@active_battler = @now_battler
@input_action = false if basic
end
for battler in $game_party.actors + $game_troop.enemies
if battler.dead? or not battler.exist?
@
input_battlers.delete(battler)
@
action_battlers.delete(battler)
end
end
end
#--------------------------------------------------------------------------
def battler_turn(battler)
battler.turn_count += 1
if battler.is_a?(Game_Actor)
if
battler.inputable? and battler.cast_action.nil?
@
input_battlers << battler
else
if
battler.restriction == 2 || battler.restriction == 3
battler
.current_action.kind = 0
battler
.current_action.basic = 0
end
battler
.defense_pose = false
@action_battlers << battler
end
else
battler.make_action
@action_battlers << battler
end
end
#--------------------------------------------------------------------------
def atb_update
@wait_on = wait_on
return if @wait_on
@atb_turn_count += 1 if Custom_Turn_Count == 2
if @atb_turn_count >= @abt_turn_speed
@update_turn_end = true
$game_temp
.battle_turn += 1
turn_count_speed
for battler in $game_party.actors + $game_troop.enemies
battler
.remove_states_auto if battler.exist?
end
setup_battle_event
end
for battler in $game_party.actors + $game_troop.enemies
unless battler
== @action_battler or
(@
escaping and battler.actor? and @escape_type > 0)
battler.atb_update if battler.exist? and not battler.restriction == 4
end
end
update_meters
end
#--------------------------------------------------------------------------
def wait_on
return true if $game_system.wait_mode == 1 and (@skill_window != nil or @item_window != nil)
return
true if $game_system.wait_mode == 0 and @input_battler != nil
return true if $game_system.action_wait and @action_battler != nil
return true if @force_wait or @battle_end or @escaped
return false
end
#--------------------------------------------------------------------------
def start_phase2
end
#--------------------------------------------------------------------------
def update_meters
@atb_meters.refresh if Meters
@atb_meters_enemy.refresh if Enemy_Meter != 0 and Meters
@atb_bars.refresh if Bars
end
#--------------------------------------------------------------------------
def turn_count_speed
@atb_turn_count = @abt_turn_speed = 0
case Custom_Turn_Count
when 0
for battler in $game_party.actors + $game_troop.enemies
@abt_turn_speed += 1 if battler.exist?
end
when 1
@abt_turn_speed = Action_Turn_Count
when 2
@abt_turn_speed = Time_Tunr_Count
end
end
#--------------------------------------------------------------------------
def update_phase2_escape
windows_dispose
update_phase2_escape_type1
if @escape_type == 0
update_phase2_escape_type2
if @escape_type > 0
end
#--------------------------------------------------------------------------
def update_phase2_escape_type1
enemies_agi
= enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number
+= 1
end
end
enemies_agi
/= [enemies_number, 1].max
actors_agi
= actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number
+= 1
end
end
actors_agi
/= [actors_number, 1].max
@success = rand(100) < @escape_ratio * actors_agi / enemies_agi
if @success
@battle_end = true
$game_system
.se_play($data_system.escape_se)
$game_system.bgm_play($game_temp.map_bgm)
battle_end(1)
else
@
escape_ratio += 3
phase3_next_actor
end
end
#--------------------------------------------------------------------------
def update_phase2_escape_type2
@escaped = true
@party_command_window.visible = false
@party_command_window.active = false
@actor_command_window.visible = false if @actor_command_window != nil
@actor_command_window.active = false if @actor_command_window != nil
wait
(1)
@
battle_end = true
$game_system
.se_play($data_system.escape_se)
$game_system.bgm_play($game_temp.map_bgm)
if @
escape_atb_meters != nil
@escape_atb_meters.dispose
@escape_atb_meters = nil
end
battle_end
(1)
end
#--------------------------------------------------------------------------
def update_phase2_escape_rate
enemies_agi
= enemies_number = 0
for enemy in $game_troop.enemies
if enemy.exist?
enemies_agi += enemy.agi
enemies_number
+= 1
end
end
enemies_agi
/= [enemies_number, 1].max
actors_agi
= actors_number = 0
for actor in $game_party.actors
if actor.exist?
actors_agi += actor.agi
actors_number
+= 1
end
end
actors_agi
/= [actors_number, 1].max
escape_rate
= Escape_Time * enemies_agi / (actors_agi * Speed)
return
escape_rate
end
#--------------------------------------------------------------------------
alias acbs_start_phase5_atb start_phase5
def start_phase5
if @input_battler != nil
@help_window.visible = false if @help_window != nil
windows_dispose
@input_battler.blink = false if @input_battler != nil
end
@atb_meters.opacity = 0 if Meter_Pos_Style == 3
update_meters
acbs_start_phase5_atb
end
#--------------------------------------------------------------------------
alias acbs_update_phase5_atb update_phase5
def update_phase5
windows_dispose
acbs_update_phase5_atb
end
#--------------------------------------------------------------------------
def phase3_setup_command_window
return if @escaped
if @active_battler != nil && @active_battler.cast_action != nil
@active_battler.blink = false
return
end
Audio
.se_play('Audio/SE/' + Command_Up_SE)
@
party_command_window.active = false
@party_command_window.visible = false
@actor_command_window.dispose if @actor_command_window != nil
s1
= $data_system.words.attack
s2
= $data_system.words.skill
s3
= $data_system.words.item
s4
= $data_system.words.guard
s5
= @escape_name
if @escape_type == 0
@actor_command_window = Window_Command.new(160, [s1, s2, s3, s4, s5])
else
@
actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
end
@actor_command_window.x = COMMAND_WINDOW_POSITION[0]
@
actor_command_window.y = COMMAND_WINDOW_POSITION[1]
@
actor_command_window.back_opacity = COMMAND_OPACITY
@actor_command_window.z = 4500
@active_battler_window.refresh(@active_battler)
@
active_battler_window.visible = BATTLER_NAME_WINDOW
@active_battler_window.x = COMMAND_WINDOW_POSITION[0]
@
active_battler_window.y = COMMAND_WINDOW_POSITION[1] - 64
@active_battler_window.z = 4500
end
#--------------------------------------------------------------------------
alias acbs_start_enemy_select_atb start_enemy_select
def start_enemy_select
@teste = true
acbs_start_enemy_select_atb
@atb_meters.visible = true if Meters
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_skill_select_atb update_phase3_skill_select
def update_phase3_skill_select
@atb_meters.visible = false if Meters and Meter_Pos_Style < 3 and HIDE_WINDOW
acbs_update_phase3_skill_select_atb
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_item_select_atb update_phase3_item_select
def update_phase3_item_select
@atb_meters.visible = false if Meters and Meter_Pos_Style < 3 and HIDE_WINDOW
acbs_update_phase3_item_select_atb
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_start_actor_select_atb start_actor_select
def start_actor_select
acbs_start_actor_select_atb
@atb_meters.visible = true if Meters
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_start_skill_select_atb start_skill_select
def start_skill_select
acbs_start_skill_select_atb
@atb_meters.visible = false if Meters and Meter_Pos_Style < 3 and HIDE_WINDOW
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_end_skill_select_atb end_skill_select
def end_skill_select
acbs_end_skill_select_atb
@atb_meters.visible = true if Meters
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_start_item_select_atb start_item_select
def start_item_select
acbs_start_item_select_atb
@atb_meters.visible = false if Meters and Meter_Pos_Style < 3 and HIDE_WINDOW
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
alias acbs_end_item_select_atb end_item_select
def end_item_select
acbs_end_item_select_atb
@atb_meters.visible = true if Meters
update_meters unless Wait_Mode
== 2
end
#--------------------------------------------------------------------------
def phase3_next_actor
@input_battler.blink = false
action_battler
= @input_battlers.shift
@action_battlers << action_battler
command_input_cancel
@input_battler = nil
@actor_index = nil
@active_battler = nil
end
#--------------------------------------------------------------------------
def phase3_prior_actor
@input_battler.current_action.kind = 0
@input_battler.current_action.basic = 3
@input_battler.blink = false
action_battler
= @input_battlers.shift
@action_battlers << action_battler
@input_battler = nil
@actor_index = nil
@active_battler = nil
windows_dispose
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_atb update_phase3
def update_phase3
if cancel_command?
if
can_act?
if [
2, 3].include?(@input_battler.restriction)
@
input_battler.current_action.kind = 0
@input_battler.current_action.basic = 0
end
@action_battlers << @input_battler
end
command_input_cancel
return
end
acbs_update_phase3_atb
end
#--------------------------------------------------------------------------
def cancel_command?
return
false if @input_battler.nil?
return
true if @input_battler.current_action.forcing
return true if [2, 3, 4].include?(@input_battler.restriction)
return
true if not $game_party.actors.include?(@input_battler)
return
false
end
#--------------------------------------------------------------------------
def can_act?
return
true if @input_battler.current_action.forcing
return true if [2, 3].include?(@input_battler.restriction)
return
false
end
#--------------------------------------------------------------------------
alias acbs_update_phase3_basic_command_atb update_phase3_basic_command
def update_phase3_basic_command
if Input.trigger?(Input::C)
case @
actor_command_window.commands[@actor_command_window.index]
when @escape_name
if $game_temp.battle_can_escape == false
$game_system
.se_play($data_system.buzzer_se)
return
end
$game_system
.se_play($data_system.decision_se)
update_phase2_escape
return
end
end
if Input.trigger?(Input::UP) and @input_action
$game_system
.se_play($data_system.cursor_se)
@
actor_command_window.index -= 1
if @actor_command_window.index <= -1
@actor_command_window.index = @actor_command_window.commands_size - 1
end
return
end
if Input.trigger?(Input::DOWN) and @input_action
$game_system
.se_play($data_system.cursor_se)
@
actor_command_window.index += 1
if @actor_command_window.index >= @actor_command_window.commands_size - 1
@actor_command_window.index = 0
end
return
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.decision_se)
phase3_next_actor
return
end
if Input.trigger?(Input::A)
$game_system.se_play($data_system.decision_se)
@
input_battler.passed = true
phase3_next_actor
return
end
acbs_update_phase3_basic_command_atb
end
#--------------------------------------------------------------------------
def command_input_cancel
windows_dispose
@input_battler.blink = false
@input_battlers.delete(@input_battler)
@
input_battler = nil
end
#--------------------------------------------------------------------------
def windows_dispose
@help_window.visible = false if !@escaping
if @enemy_arrow != nil
@enemy_arrow.dispose
@enemy_arrow = nil
end
if @actor_arrow != nil
@actor_arrow.dispose
@actor_arrow = nil
end
if @actor_arrow != nil
@actor_arrow.dispose
@actor_arrow = nil
end
if @skill_window != nil
@skill_window.dispose
@skill_window = nil
end
if @item_window != nil
@item_window.dispose
@item_window = nil
end
if @enemy_arrow_all != nil
@enemy_arrow_all.dispose_multi_arrow
@enemy_arrow_all = nil
end
if @actor_arrow_all != nil
@actor_arrow_all.dispose_multi_arrow
@actor_arrow_all = nil
end
if @battler_arrow_all != nil
@battler_arrow_all.dispose_multi_arrow
@battler_arrow_all = nil
end
if @actor_command_window != nil
@actor_command_window.active = false
@actor_command_window.visible = false
@active_battler_window.visible = false
@actor_command_window.opacity = 0
end
@status_window.visible = true
end
#--------------------------------------------------------------------------
alias acbs_update_phase4_step1_atb update_phase4_step1
def update_phase4_step1
if @action_battlers.size == 0
@input_battlers.clear
@action_battlers.clear
@action_battler.atb = 0
@action_battler = nil
end
acbs_update_phase4_step1_atb
end
#--------------------------------------------------------------------------
alias acbs_update_phase4_step2_atb update_phase4_step2
def update_phase4_step2
@active_battler.defense_pose = false
if @active_battler.cast_action != nil
active_cast
= @active_battler.cast_action
if active_cast.scope == 1 or active_cast.scope == 3 or active_cast.scope == 5
@active_battler.current_action.target_index = @active_battler.cast_target
end
if active_cast.is_a?(RPG::Skill)
@
active_battler.current_action.kind = 1
@active_battler.current_action.skill_id = @active_battler.cast_action.id
elsif active_cast
.is_a?(RPG::Item)
@
active_battler.current_action.kind = 2
@active_battler.current_action.item_id = @active_battler.cast_action.id
end
end
for state in @active_battler.battler_states
@active_battler.remove_state(state.id) if state.extension.include?("ZEROTURNLIFT")
end
acbs_update_phase4_step2_atb
end
#--------------------------------------------------------------------------
alias make_skill_action_result_atb_n01 make_skill_action_result
def make_skill_action_result
skill
= $data_skills[@action_battler.current_action.skill_id]
if @
action_battler.cast_action == nil
@active_battler.cast_action = skill
@active_battler.cast_target = @active_battler.current_action.target_index
@cast_speed = skill.cast_speed(@active_battler)
@
active_battler.cast_action = nil if @cast_speed == 0
@spriteset.set_stand_by_action(@active_battler.actor?, @active_battler.index)
return
unless @cast_speed == 0
end
make_skill_action_result_atb_n01
@active_battler.cast_action = nil
end
#--------------------------------------------------------------------------
alias make_item_action_result_atb_n01 make_item_action_result
def make_item_action_result
item
= $data_items[@action_battler.current_action.item_id]
if @
action_battler.cast_action == nil
@active_battler.cast_action = item
@active_battler.cast_target = @active_battler.current_action.target_index
@cast_speed = item.cast_speed(@active_battler)
@
active_battler.cast_action = nil if @cast_speed == 0
@spriteset.set_stand_by_action(@active_battler.actor?, @active_battler.index)
return
unless @cast_speed == 0
end
make_item_action_result_atb_n01
@active_battler.cast_action = nil
end
#--------------------------------------------------------------------------
alias acbs_action_end_atb action_end
def action_end
acbs_action_end_atb
@active_battler.cast_action = nil
end
#--------------------------------------------------------------------------
def start_phase4
@phase4_step = 1
@action_phase = true
end
#--------------------------------------------------------------------------
alias acbs_update_phase4_step6_atb update_phase4_step6
def update_phase4_step6
acbs_update_phase4_step6_atb
@atb_turn_count += 1 unless Custom_Turn_Count == 2
@active_battler.atb = 0 unless @active_battler.passed
@active_battler.passed = false
@input_battlers.delete(@active_battler)
@
action_battlers.delete(@active_battler)
@
action_battler = nil
@action_phase = false
update_meters
judge
end
end

#==============================================================================
# ? Window_Command
#==============================================================================
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
attr_accessor :commands
#--------------------------------------------------------------------------
def commands_size
return @item_max
end
end

#==============================================================================
# ? ATB_Meters
#==============================================================================
class ATB_Meters
#--------------------------------------------------------------------------
attr_accessor :meters
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize
@meters = []
@
skin = RPG::Cache.windowskin(Meter_Skin)
for
i in 0...$game_party.actors.size
@meter = MeterSprite.new(@skin, 5)
refresh_meter(i)
end
refresh
end
#--------------------------------------------------------------------------
def refresh
return if !Meters
for i in @meters.size...$game_party.actors.size
refresh_meter
(i)
end
for i in $game_party.actors.size...@meters.size
@meters[i].dispose
@meters[i] = nil
end
@meters.compact!
for
i in 0...$game_party.actors.size
actor
= $game_party.actors[i]
@
meters[i].line = actor.atb_linetype
@meters[i].amount = actor.atb_lineamount
@meters[i].atb_visible = 255
end
end
#--------------------------------------------------------------------------
def refresh_meter(i)
actor = $game_party.actors[i]
case
Meter_Pos_Style
when 0
@meter.x = i * (624 / MAX_MEMBER) + 4 + X_Meter
@meter.y = Y_Meter
when 1
@meter.x = X_Meter + ((624 / MAX_MEMBER) * ((4 - $game_party.actors.size)/2.0 + i)).floor
@meter.y = Y_Meter
when 2
@meter.x = X_Meter
@meter.y = i * 32 + Y_Meter
when 3
@meter.x = actor.screen_x - @skin.width / 2
@meter.y = actor.screen_y - @skin.height / 5
when 4
base
= Meter_Position[i]
@
meter.x = base[0]
@
meter.y = base[1]
end
@meters[i] = @meter
end
#--------------------------------------------------------------------------
def visible=(b)
@
meters.each{|sprite| sprite.visible = b }
end
#--------------------------------------------------------------------------
def opacity=(b)
@
meters.each{|sprite| sprite.opacity = b }
end
#--------------------------------------------------------------------------
def dispose
@meters.each{|sprite| sprite.dispose }
end
end

#==============================================================================
# ? ATB_Meters_Enemy
#==============================================================================
class ATB_Meters_Enemy
#--------------------------------------------------------------------------
attr_accessor :enemy_meters
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize
@meters = []
@
enemy_meters = [] if Enemy_Meter != 0
@skin = RPG::Cache.windowskin(Meter_Skin)
for
i in 0...$game_troop.enemies.size
next unless $game_troop
.enemies[i].exist?
@
enemy_meter = MeterSprite.new(@skin, 5)
refresh_enemy_meter(i)
end
refresh
end
#--------------------------------------------------------------------------
def refresh
return if !Meters
for i in @enemy_meters.size...$game_troop.enemies.size
refresh_enemy_meter
(i)
end
for i in $game_troop.enemies.size...@enemy_meters.size
@enemy_meters[i].dispose
@enemy_meters[i] = nil
end
@enemy_meters.compact!
for
i in 0...$game_troop.enemies.size
enemy
= $game_troop.enemies[i]
next unless enemy.exist?
@
enemy_meters[i].line = enemy.atb_linetype
@enemy_meters[i].amount = enemy.atb_lineamount
@enemy_meters[i].atb_visible = enemy.atb_enemy_visible
end
end
#--------------------------------------------------------------------------
def refresh_enemy_meter(i)
enemy = $game_troop.enemies[i]
return @
enemy_meters[i] = nil unless enemy.exist?
case
Enemy_Meter
when 1
@enemy_meter.x = enemy.screen_x - @skin.width / 2
@enemy_meter.y = enemy.screen_y - @skin.height / 5
@enemy_meter.z = 100
when 2
@enemy_meter.x = 32
@enemy_meter.y = 80 + i * 32
@enemy_meter.z = 1000
end
@enemy_meters[i] = @enemy_meter
end
#--------------------------------------------------------------------------
def visible=(b)
@
meters.each{|sprite| sprite.visible = b }
end
#--------------------------------------------------------------------------
def opacity=(b)
@
meters.each{|sprite| sprite.opacity = b }
end
#--------------------------------------------------------------------------
def dispose
@enemy_meters.each{|sprite| sprite.dispose }
end
end

#==============================================================================
# ? ATB_Bars
#==============================================================================
class ATB_Bars
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize
@base = Sprite.new
@
base.bitmap = RPG::Cache.windowskin(Bar_Skin).dup
@base.x = X_Bar
@base.y = Y_Bar
@base.z = 1000
@width = @base.bitmap.width
@height = @base.bitmap.height
@icon_set = []
@
base.opacity = self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
def refresh
@base.opacity = self.opacity = 255 if Bars
return @base.opacity = self.opacity = 0 if !Bars
need_initializes
= []
for
battler in $game_party.actors + $game_troop.enemies
exist
= false
for set in @icon_set
exist
|= (set[1] == battler)
end
need_initializes
<< battler unless exist
end
for battler in need_initializes
iconname
= nil
if battler.is_a?(Game_Actor)
iconname = Party_Icon[battler.battler_name]
else
iconname = Enemy_Icon[battler.battler_name]
end
if iconname.nil?
if
battler.is_a?(Game_Actor)
iconname = Default_Party_Icon
else
iconname = Default_Enemy_Icon
end
end
sprite
= Sprite.new
sprite.bitmap = RPG::Cache.icon(iconname).dup
sprite
.y = Y_Bar + @height / 2 - 12
@icon_set << [sprite, battler]
end
for set in @icon_set
set
[0].x = X_Bar + @width * set[1].atb / set[1].max_atb - 12
set
[0].z = 1001
set
[0].visible = (!set[1].dead? and set[1].exist?)
end
end
#--------------------------------------------------------------------------
def visible=(n)
@
base.visible = n
@icon_set.each{|set| set[0].visible = n }
end
#--------------------------------------------------------------------------
def opacity=(n)
@
base.opacity = n
@icon_set.each{|set| set[0].opacity = n }
end
#--------------------------------------------------------------------------
def dispose
@base.dispose
@icon_set.each{|set| set[0].dispose }
end
end

#==============================================================================
# ? Escape_Meters
#==============================================================================
class Escape_Meters
#--------------------------------------------------------------------------
attr_accessor :meters
attr_reader
:meters
attr_accessor
:enemy_meters
attr_reader
:enemy_meters
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize
@skin = RPG::Cache.windowskin(Escape_Skin)
@
escape_meter = MeterSprite.new(@skin, 3)
refresh_meter
refresh
end
#--------------------------------------------------------------------------
def refresh
@escape_meter.line = $game_temp.escape_atb_linetype
@escape_meter.amount = $game_temp.escape_atb_lineamount
end
#--------------------------------------------------------------------------
def refresh_meter
case Escape_Meter_Pos_Type
when 0
@escape_meter.x = 608 - @skin.width
@escape_meter.y = 80
when 1
@escape_meter.x = 320 - skin.width
@escape_meter.y = 64
when 2
@escape_meter.x = Escape_Meter_Position[0]
@
escape_meter.y = Escape_Meter_Position[1]
end
end
#--------------------------------------------------------------------------
def visible=(n)
@
escape_meter.visible = n
end
#--------------------------------------------------------------------------
def opacity=(n)
@
escape_meter.opacity = n
end
#--------------------------------------------------------------------------
def dispose
@escape_meter.dispose
end
end

#==============================================================================
# ? MeterSprite
#==============================================================================
class MeterSprite < Sprite
#--------------------------------------------------------------------------
include N01
#--------------------------------------------------------------------------
def initialize(skin, line_height)
@
line_height = line_height
@skin = skin
@width = @skin.width
@height = @skin.height / @line_height
@line = 1
@amount = 0
@atb_visible = 0
@base_sprite.dispose if @base_sprite != nil
@base_sprite = Sprite.new
@
base_sprite.bitmap = @skin
@base_sprite.src_rect.set(0, 0, @width, @height)
@
base_sprite.z = 450 * @line_height
@base_sprite.z = 60 if Meter_Pos_Style == 3 and @line_height == 5
@base_sprite.z = Meter_Height if Meter_Pos_Style == 4 and @line_height == 5
@base_sprite.opacity = 0
super
()
self.z = @base_sprite.z + 1
self
.bitmap = @skin
self
.line = 1
self
.opacity = @base_sprite.opacity = 0 if !Meters or @line_height == 3
end
#--------------------------------------------------------------------------
def line=(n)
@
line = n
refresh
end
#--------------------------------------------------------------------------
def amount=(n)
@
amount = n
refresh
end
#--------------------------------------------------------------------------
def visible=(n)
super
@base_sprite.visible = n
refresh
end
#--------------------------------------------------------------------------
def atb_visible=(n)
@
atb_visible = n
refresh
end
#--------------------------------------------------------------------------
def refresh
@base_sprite.opacity = self.opacity = @atb_visible if @line_height == 5
@base_sprite.opacity = self.opacity if @line_height == 3
@base_sprite.z = self.z - 1
self
.opacity = @base_sprite.opacity = 0 if !Meters and @line_height == 5
self
.src_rect.set(0, @line * @height, @width * @amount / 100, @height)
end
#--------------------------------------------------------------------------
def x=(n)
super
@base_sprite.x = n
end
#--------------------------------------------------------------------------
def y=(n)
super
@base_sprite.y = n
end
#--------------------------------------------------------------------------
def dispose
@base_sprite.dispose
super
end
end
Reply }
#6
Another attempt with scripts in this order :
- Tanketai Sideview Battle Script
- Raziel's Battle Report script
- the following fix :
Code:
#==============================================================================
# ** Scene_Battle
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # * Frame Update (after battle phase)
  #--------------------------------------------------------------------------
  def update_phase5
    remove_bars
    if @phase5_wait_count > 0
      @phase5_wait_count -= 1
      if @phase5_wait_count == 0
        $game_temp.battle_main_phase = false        
      end
      return
    end
    if !@lvup_window.nil? then battle_end(0) end
  end
end
- Add-On: Atoa's Active Time Battle
- Main

Didn't crash...
Some scripts :
Working on :
Reply }
#7
I know where this left off. Thanks to the hack from Wednesday night, we're missing Flare Knight's response:

Quote:Thank you so much! It works now. :)

Hehe...
Reply }


Possibly Related Threads…
Thread Author Replies Views Last Post
   Script compatibility help Lord Vectra 3 4,583 07-25-2021, 11:42 PM
Last Post: DerVVulfman
   Adding face script on Cogwheel's RTAB Battle Status rekkatsu 15 15,745 08-25-2020, 03:09 AM
Last Post: DerVVulfman
Question  MGC ISO Engine + Extra Movement Frames compatibility Morrigan Aensland 1 5,809 10-26-2013, 12:03 PM
Last Post: evindom
   Cogwheels RTAB help sherper1 15 16,650 01-29-2010, 04:32 PM
Last Post: DerVVulfman
   Issue with RTAB and battle event systems... samsonite789 4 7,579 11-08-2009, 07:21 AM
Last Post: Jaberwocky



Users browsing this thread: 2 Guest(s)