AlexanderBlade
Member
Ok, so I'm currently using these 3 scripts for my side-view battle system and I'm getting an error in which the enemy battler image cuts up. How do I correct this?
Image Glitch
The battler itself is on a 4 frame, 11 pose sheet.
RTAB Configuration System by Cogwheel
Animated Battlers Enhanced by Minkoff/DerVVolfman
Image Glitch
http://i14.photobucket.com/albums/a338/The7thStone/shot.jpg[/img]
The battler itself is on a 4 frame, 11 pose sheet.
RTAB Configuration System by Cogwheel
Code:
# RTAB Configuration System
# Support bulletin board http: //www2.ezbbs.net/21/minto-aaa/
#
# Updated for use with:
# Real time active battle (RTAB) Ver 1.12
# Distribution original support URL
# http://members.jcom.home.ne.jp/cogwheel/
=begin
REVISED:
This script brings up an options menu geared to handle the speed, action and
camera functions of Cogwheel's RTAB CBS.
Originally designed and encorporated in a working main menu, you will note on
line 368 of this script that the designer intended the menu to return to menu
option #6 ( $scene = Scene_Menu.new(6) ).
As $scene = Scene_Menu.new(5) would have returned to the menu, highlighting the
"End Game" option, the designer's menu obviously had more than the default num-
ber of options.
Obviously for anyone designing their own menu, this system is already set up
to be encorporated into your own menu. But for those who want a system where
an event (such as a savepoint-like object) brings up the RTAB configuration
menu, you merely need to alter line #368 as such:
$scene = Scene_Map.new
-------------------------------------------------------------------------------
To call this script, use:
$scene = Scene_Customize.new
=end
#==============================================================================
# ** Game_System
#------------------------------------------------------------------------------
# This class handles data surrounding the system. Backround music, etc.
# is managed here as well. Refer to "$game_system" for the instance of
# this class.
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :battle_speed # 戦闘速度
attr_accessor :battle_active # アクティブ
attr_accessor :battle_camera # カメラ稼動
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_MINT_RTAB_Customize initialize
def initialize
# Call original initialization process
initialize_MINT_RTAB_Customize
@battle_speed = 150 # Default: RTAB speed
@battle_active = 2 # Default: Wait during Item/Skill Select
@battle_camera = false # Default: Camera turned off
end
end
#==============================================================================
# ** Window_Customize
#==============================================================================
class Window_Customize < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(160, 92, 320, 288)
@column_max = 1
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@element = []
#Acquiring the skill which you have acquired
get_data
get_element
# If the number of items is not 0, drawing item
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Acquire the menu option items
#--------------------------------------------------------------------------
def get_data
data = [
"Battle speed",
"Active",
"Camera work"]
@data = data
end
#--------------------------------------------------------------------------
# * Acquire the menu option settings
#--------------------------------------------------------------------------
def get_element
case $game_system.battle_active
when 1
active = "Wait"
when 2
active = "Semi active"
else
active = "Full active"
end
if $game_system.battle_camera
camera = "ON"
else
camera = "OFF"
end
data = [$game_system.battle_speed.to_s, active, camera]
@element = data
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
deta = @element[index]
x = 0
y = index * 32
self.contents.draw_text(x + 4, y, 140, 32, item, 0)
self.contents.draw_text(x + 144, y, 140, 32, deta, 2)
end
#--------------------------------------------------------------------------
# * Set Help Text
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "Modifies the combat speed. Lower numbers increases combat speed."
when 1
text = "Modifies the flow of time in battle"
else
text = "Sets whether the camera follows the moving battler."
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ** Window_Command2
#------------------------------------------------------------------------------
# This window deals with new command choices.
#==============================================================================
class Window_Command2 < Window_Selectable
#--------------------------------------------------------------------------
# * Object initilization
#--------------------------------------------------------------------------
def initialize(width, commands)
# Calculating the height of the window from the quantity of command
super(0, 0, width, commands.size * 32 + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.size = 20
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Set Help Text
#--------------------------------------------------------------------------
def help_text(index)
case index
when 0
text = "Pauses when choosing a Skill, an Item or an Enemy. (Beginners)"
when 1
text = "Pauses when the Skill or Item windows are active. (Recommended)"
else
text = "Action never pauses. (Expert-mode)"
end
end
#--------------------------------------------------------------------------
# * Update Help Text
#--------------------------------------------------------------------------
def update_help
text = help_text(self.index)
@help_window.set_text(text)
end
end
#==============================================================================
# ** Window_Help2
#------------------------------------------------------------------------------
# This window shows explanations for new options.
#==============================================================================
class Window_Help2 < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 420, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
self.pause = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Scene_Customize
#------------------------------------------------------------------------------
# This class performs RTAB Player Options decisions
#==============================================================================
class Scene_Customize
#--------------------------------------------------------------------------
# * Main processing
#--------------------------------------------------------------------------
def main
# Make help window, main window
@help_window = Window_Help2.new
@main_window = Window_Customize.new
@main_window.refresh
@dummy_window = Window_Base.new(480,92,100,64)
@dummy_window.visible = false
@number_window = Window_InputNumber.new(3)
@number_window.x = 480
@number_window.y = 92
@number_window.visible = false
@number_window.active = false
command = ["Wait", "Semi-Active", "Fully-Active"]
camera_command = ["On", "Off"]
@command_window = Window_Command2.new(120, command)
@command_window.x = 480
@command_window.y = 136
@command_window.visible = false
@command_window.active = false
@camera_window = Window_Command.new(120, camera_command)
@camera_window.x = 480
@camera_window.y = 172
@camera_window.visible = false
@camera_window.active = false
# Associate help window
@main_window.help_window = @help_window
@command_window.help_window = @help_window
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@main_window.dispose
@number_window.dispose
@dummy_window.dispose
@command_window.dispose
@camera_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If main window is active: call update_main
if @main_window.active
@main_window.update
update_main
return
end
if @number_window.active
@number_window.update
update_number
return
end
if @command_window.active
@command_window.update
update_command
return
end
if @camera_window.active
@camera_window.update
update_camera
return
end
end
#--------------------------------------------------------------------------
# * Main Update (when main window is active)
#--------------------------------------------------------------------------
def update_main
# If B Button is pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
# Return to Menu (THIS is where you return from an options menu)
#$scene = Scene_Menu.new(6)
$scene = Scene_Map.new
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by main command decision
@index = @main_window.index
# Play decision SE
$game_system.se_play($data_system.decision_se)
case @index
when 0
@number_window.active = true
@number_window.visible = true
@dummy_window.visible = true
@main_window.active = false
when 1
@command_window.active = true
@command_window.visible = true
@main_window.active = false
when 2
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
when 3
@camera_window.active = true
@camera_window.visible = true
@main_window.active = false
end
return
end
end
#--------------------------------------------------------------------------
# * Number Update (when number window is active)
#--------------------------------------------------------------------------
def update_number
# If B Button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
return
end
# If C Button was Pressed
if Input.trigger?(Input::C)
# Obtain Current RTAB Battle Speed
$game_system.battle_speed = @number_window.number
$game_system.battle_speed = 1 if @number_window.number == 0
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@number_window.active = false
@number_window.visible = false
@dummy_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Command Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
# If B Button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by "Active" window cursor position
case @command_window.index
when 0
$game_system.battle_active = 1
when 1
$game_system.battle_active = 2
when 2
$game_system.battle_active = 3
end
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@command_window.active = false
@command_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Camera Update (when camera window is active)
#--------------------------------------------------------------------------
def update_camera
# If B button was pressed
if Input.trigger?(Input::B)
# Play Cancel SE
$game_system.se_play($data_system.cancel_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
return
end
# If C Button was pressed
if Input.trigger?(Input::C)
# Branch by camera window cursor position
case @camera_window.index
when 0
$game_system.battle_camera = true
when 1
$game_system.battle_camera = false
end
# Play Decision SE
$game_system.se_play($data_system.decision_se)
@camera_window.active = false
@camera_window.visible = false
@main_window.active = true
@main_window.refresh
return
end
end
end
#==============================================================================
# Real time active battle (RTAB) Ver 1.12
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * ATB fundamental setup
#--------------------------------------------------------------------------
def atb_setup
# ATB initialization
#
# speed : Battle speed decision. The lower the value, the faster the system
#
# @active : Degree of active setting
# 3 : Always active state
# 2 : ATB pauses when selecting skill/item
# 1 : Same as 2, but pauses during target selection
# 0 : Same as 1, but pauses during command window selection.
#
# @action : Others while acting is the fact that by their causes conduct permitted?
# 3 : If by his is not incapacitation, limited to you permit
# 2 : If by his has not received the damage, you permit
# 1 : In addition to the state of 2, if the target has not acted, you permit
# 0 : Conduct is not permitted. Until it finishes to act in order, it waits
#
# @anime_wait : When it makes true, during battle animation damage indicating wait catches
# @damage_wait : Damage indicatory waiting (as for unit frame)
#
# @after_wait : At the time of ally enemy total loss, until moves to next processing, waiting
# [a, b] a) At the time of party total loss, b) At time of enemy total loss (unit frame)
#
# @enemy_speed : Thought speed of enemy. If 1 immediately conduct.
# In every frame, conduct is caused with the probability of 1/@enemy_speed
#
# @force : With forced action forced condition at time of skill use
# 2: As for skill everything not to reside permanently, by all means immediately execution
# 1: As for independent skill to reside permanently, only cooperation skill immediately execution
# 0: All the skill permanent residence just are done
#
# ($scene.force = Usually by making x, from the script of the event modification possibility)
#
# CAMERA DRIVE SYSTEM: This system moves the Camera POV to the currently moving battler
# @drive : Camera drive system ON/OFF. When true, drive ON, when false drive OFF
# @scroll_time : Time it takes to scroll/move the camera POV during battle
#
# @zoom_rate = [i, j] : Zoom Rate (Changes the size of the enemy based on perspective)
# i) When arranging in the picture first section, enlargement ratio
# j) When arranging in the picture lowest section, enlargement ratio
# 1 When liking to make time, 1.0 be sure to set with decimal
speed = $game_system.battle_speed # IN FRAMES / FOR ATB SYSTEM
@active = $game_system.battle_active # Active Setting (Range of 0 - 3)
@action = 2 # Action Setting (Range of 0 - 3)
@anime_wait = false #
@damage_wait = 10 #
@after_wait = [80, 0] #
@enemy_speed = 40 #
@force = 0 #
@drive = $game_system.battle_camera # Turns camera system on/off
@scroll_time = 15 # Speed of camera system
@zoom_rate = [1.0, 1.0] # Change size of battler based on perspective
@help_time = 40
@escape == false
@camera = nil
@max = 0
@turn_cnt = 0
@help_wait = 0
@action_battlers = []
@synthe = []
@spell_p = {}
@spell_e = {}
@command_a = false
@command = []
@party = false
for battler in $game_party.actors + $game_troop.enemies
spell_reset(battler)
battler.at = battler.agi * rand(speed / 2)
battler.damage_pop = {}
battler.damage = {}
battler.damage_sp = {}
battler.critical = {}
battler.recover_hp = {}
battler.recover_sp = {}
battler.state_p = {}
battler.state_m = {}
battler.animation = []
if battler.is_a?(Game_Actor)
@max += battler.agi
end
end
@max *= speed
@max /= $game_party.actors.size
for battler in $game_party.actors + $game_troop.enemies
battler.atp = 100 * battler.at / @max
end
end
end
Animated Battlers Enhanced by Minkoff/DerVVolfman
Code:
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# Animated Battlers by Minkoff
# Enhancement v 1.2 by DerVVulfman (07-18-2006)
#==============================================================================
#
# Now, an additional call can be made before combat begins:
# Script: $game_system.sideview_mirror = 1
# Reverses the position and direction of the battlers on-screen.
#
# Script: $game_system.sideview_mirror = 0
# Returns it to the normal style (enemies on left / heroes on right).
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport, battler = nil)
# * Configuration System *
# Animation Frames and Animation Speed
@speed = 7 # Framerate speed of the battlers
@frames = 4 # Number of frames in each pose
@poses = 10 # Number of poses (stances) in the template
# Poses Control (Some people wanted to change their template design)
$p1 = 0 # Sets the 'Ready Pose' ($p1) to be pose #1 in your template
$p2 = 1 # Sets the 'Struck Pose' ($p2) to be pose #2 in your template
$p3 = 2 # Sets the 'Woozy Pose' ($p3) to be pose #3 in your template
$p4 = 3 # Sets the 'Block Pose' ($p4) to be pose #4 in your template
$p5 = 4 # Sets the 'Charge Pose' ($p5) to be pose #5 in your template
$p6 = 5 # Sets the 'Retreat Pose'($p6) to be pose #6 in your template
$p7 = 6 # Sets the 'Attack Pose' ($p7) to be pose #7 in your template
$p8 = 7 # Sets the 'Item Pose' ($p8) to be pose #8 in your template
$p9 = 8 # Sets the 'Skill Pose' ($p9) to be pose #9 in your template
$p10 = 9 # Sets the 'Victory Pose'($p10)to be pose #10 in your template
$p11 = 10 # Sets the 'Defeat Pose' ($p11)to be pose #11 in your template
# Individual Battler Settings
@mirror_enemies = true # Enemy battlers use reversed image
@stationary_enemies = false # If the enemies don't move while attacking
@stationary_actors = false # If the actors don't move while attacking
@calculate_speed = false # System calculates a mean/average speed
@phasing = true # Characters fade in/out while attacking
@default_collapse = true # If true, restores the old 'red fade' effect.
# Action Settings
$rush_offset = 40 # How much overlap between attackers
$rush_skill = false # If true, battler steps forward to use skill
$rush_item = true # If true, battler steps forward to use item
# Array that holds the id # of skills, items or weapons that affect movement
@stationary_weapons = [17,18,19,20,21,22,23,24] # (examples are bows & guns)
$moving_item_atk = [] # Examples poisoned... um... dunno... (didn't add)
$moving_skill_atk = [57] # Examples are martial-art attacks & sneak attack
# DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING
@frame, @pose = 0, 0
@last_time = 0
@last_move_time = 0
cbs_initialize(viewport, battler)
viewport.z = 99
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
alias cbs_update update
def update
return unless @battler
# Regular Update
cbs_update
# Start Routine
unless @started
@pose = state
@width = @width / @frames
@height = @height / @poses
@display_x = @battler.screen_x
@display_y = @battler.screen_y
@destination_x = @display_x
@destination_y = @display_y
self.opacity = 0
@started = true
end
# Cut Out Frame
self.src_rect.set(@width * @frame, @height * @pose, @width, @height)
# Position Sprite
self.x = @display_x
self.y = @display_y
self.z = @display_y
self.ox = @width / 2
self.oy = @height
# Adjust sprite direction if facing the other way...
if $game_system.sideview_mirror == 1
if @battler.is_a?(Game_Actor)
self.mirror = !!battler
else
if not @mirror_enemies
self.mirror = !!battler
end
end
else
if @battler.is_a?(Game_Enemy)
if @mirror_enemies
self.mirror = !!battler
end
end
end
# Setup Animation
time = Graphics.frame_count / (Graphics.frame_rate / @speed)
if @last_time < time
@frame = (@frame + 1) % @frames
if @frame == 0
if @freeze
@frame = @frames - 1
return
end
@pose = state
end
end
@last_time = time
# Move It
move if moving
end
#--------------------------------------------------------------------------
# * Current State
#--------------------------------------------------------------------------
def state
# Damage State
if [nil,{}].include?(@battler.damage)
# Battler Fine
@state = $p1
# Battler Wounded
@state = $p3 if @battler.hp < @battler.maxhp / 4
# Battler Dead
if @default_collapse
# (Red-Out Collapse)
if @battler.dead? and @battler.is_a?(Game_Actor)
@state = $p3
# Fix Opacity
self.opacity = 50
end
else
# (Pose-Type Collapse)
if @battler.dead?
@state = $p3
# Fix Opacity
self.opacity = 50
end
end
end
# Guarding State
@state = $p4 if @battler.guarding?
# Moving State
if moving
# Adjust sprite direction if facing the other way...
if $game_system.sideview_mirror == 1
# If enemy battler moving
if @battler.is_a?(Game_Enemy)
# Battler Moving Left
@state = $p5 if moving.eql?(0)
# Battler Moving Right
@state = $p6 if moving.eql?(1)
# Else actor battler moving
else
# Battler Moving Left
@state = $p6 if moving.eql?(0)
# Battler Moving Right
@state = $p5 if moving.eql?(1)
end
else
# If enemy battler moving
if @battler.is_a?(Game_Enemy)
# Battler Moving Left
@state = $p6 if moving.eql?(0)
# Battler Moving Right
@state = $p5 if moving.eql?(1)
# Else actor battler moving
else
# Battler Moving Left
@state = $p5 if moving.eql?(0)
# Battler Moving Right
@state = $p6 if moving.eql?(1)
end
end
end
# Return State
return @state
end
#--------------------------------------------------------------------------
# * Move
#--------------------------------------------------------------------------
def move
time = Graphics.frame_count / (Graphics.frame_rate.to_f / (@speed * 5))
if @last_move_time < time
# Pause for Animation
return if @pose != state
# Phasing
if @phasing
d1 = (@display_x - @original_x).abs
d2 = (@display_y - @original_y).abs
d3 = (@display_x - @destination_x).abs
d4 = (@display_y - @destination_y).abs
self.opacity = [255 - ([d1 + d2, d3 + d4].min * 1.75).to_i, 0].max
end
# Calculate Difference
difference_x = (@display_x - @destination_x).abs
difference_y = (@display_y - @destination_y).abs
# Done? Reset, Stop
if [difference_x, difference_y].max.between?(0, 8)
@display_x = @destination_x
@display_y = @destination_y
@pose = state
return
end
# Calculate Movement Increments
increment_x = increment_y = 1
if difference_x < difference_y
increment_x = 1.0 / (difference_y.to_f / difference_x)
elsif difference_y < difference_x
increment_y = 1.0 / (difference_x.to_f / difference_y)
end
# Calculate Movement Speed
if @calculate_speed
total = 0; $game_party.actors.each{ |actor| total += actor.agi }
speed = @battler.agi.to_f / (total / $game_party.actors.size)
increment_x *= speed
increment_y *= speed
end
# Multiply and Move
multiplier_x = (@destination_x - @display_x > 0 ? 8 : -8)
multiplier_y = (@destination_y - @display_y > 0 ? 8 : -8)
@display_x += (increment_x * multiplier_x).to_i
@display_y += (increment_y * multiplier_y).to_i
end
@last_move_time = time
end
#--------------------------------------------------------------------------
# * Set Movement
#--------------------------------------------------------------------------
def setmove(destination_x, destination_y)
unless (@battler.is_a?(Game_Enemy) and @stationary_enemies) or
(@battler.is_a?(Game_Actor) and @stationary_actors)
unless @stationary_weapons.include?(@battler.weapon_id)
@original_x = @display_x
@original_y = @display_y
@destination_x = destination_x
@destination_y = destination_y
end
end
end
#--------------------------------------------------------------------------
# * Movement Check
#--------------------------------------------------------------------------
def moving
if (@display_x != @destination_x and @display_y != @destination_y and !@battler.dead?)
return (@display_x > @destination_x ? 0 : 1)
end
end
#--------------------------------------------------------------------------
# * Set Pose
#--------------------------------------------------------------------------
def pose=(pose)
@pose = pose
@frame = 0
end
#--------------------------------------------------------------------------
# * Freeze
#--------------------------------------------------------------------------
def freeze
@freeze = true
end
#--------------------------------------------------------------------------
# * Fallen Pose
#--------------------------------------------------------------------------
alias cbs_collapse collapse
def collapse
if @default_collapse
cbs_collapse if @battler.is_a?(Game_Enemy)
end
end
end
#==============================================================================
# ** Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :sideview_mirror
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias initialize_cbs_customize initialize
def initialize
# Call original initialization process
initialize_cbs_customize
@sideview_mirror = 0
end
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor
#--------------------------------------------------------------------------
# * Actor X Coordinate
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
if $game_system.sideview_mirror == 1
return self.index * -45 + 202
else
return self.index * 45 + 450
end
else
return 0
end
end
#--------------------------------------------------------------------------
# * Actor Y Coordinate
#--------------------------------------------------------------------------
def screen_y
return self.index * 35 + 200
end
#--------------------------------------------------------------------------
# * Actor Z Coordinate
#--------------------------------------------------------------------------
def screen_z
return screen_y
end
end
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
# This class handles enemies. It's used within the Game_Troop class
# ($game_troop).
#==============================================================================
class Game_Enemy < Game_Battler
def screen_x
if self.index != nil
if $game_system.sideview_mirror == 1
return 640 - $data_troops[@troop_id].members[@member_index].x
else
return $data_troops[@troop_id].members[@member_index].x
end
end
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Make Skill Action Results (alias used to determine skill used)
#--------------------------------------------------------------------------
alias make_skill_action_result_anim make_skill_action_result
def make_skill_action_result(battler = @active_battler)
@rtab = !@target_battlers
@rtab ? make_skill_action_result_anim(battler) : make_skill_action_result_anim
@skill_used = @skill.id
end
#--------------------------------------------------------------------------
# * Make Item Action Results (alias used to determine item used)
#--------------------------------------------------------------------------
alias make_item_action_result_anim make_item_action_result
def make_item_action_result(battler = @active_battler)
@rtab = !@target_battlers
@rtab ? make_item_action_result_anim(battler) : make_item_action_result_anim
@item_used = @item.id
@item_usage = @item.scope
end
#--------------------------------------------------------------------------
# * Action Animation, Movement
#--------------------------------------------------------------------------
alias cbs_update_phase4_step3 update_phase4_step3
def update_phase4_step3(battler = @active_battler)
@rtab = !@target_battlers
target = (@rtab ? battler.target : @target_battlers)[0]
@moved = {} unless @moved
return if @spriteset.battler(battler).moving
case battler.current_action.kind
when 0 # Attack
# Get 1 battle points for using an attack
$game_variables[1] += 1
if not (@moved[battler] or battler.guarding?)
if $game_system.sideview_mirror == 1
offset = (battler.is_a?(Game_Actor) ? -($rush_offset) : $rush_offset)
else
offset = (battler.is_a?(Game_Actor) ? $rush_offset : -($rush_offset))
end
@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = $p7
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
when 1 # Skill
# Get 2 battle points for using a skill
$game_variables[1] += 1
unless $moving_skill_atk.include?(@skill_used)
if $rush_skill
if not (@moved[battler] or battler.guarding?)
if $game_system.sideview_mirror == 1
offset = (battler.is_a?(Game_Actor) ? -($rush_offset) : $rush_offset)
else
offset = (battler.is_a?(Game_Actor) ? $rush_offset : -($rush_offset))
end
@spriteset.battler(battler).setmove(battler.screen_x - offset, battler.screen_y + 1)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = $p9
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
else
@spriteset.battler(battler).pose = $p9
end
else
if not (@moved[battler] or battler.guarding?)
if $game_system.sideview_mirror == 1
offset = (battler.is_a?(Game_Actor) ? -($rush_offset) : $rush_offset)
else
offset = (battler.is_a?(Game_Actor) ? $rush_offset : -($rush_offset))
end
@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = $p9
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
end
when 2 # Item
unless $moving_item_atk.include?(@item_used) or @item_scope == 1..2
# Perform attacks as normal
if $rush_item
if not (@moved[battler] or battler.guarding?)
if $game_system.sideview_mirror == 1
offset = (battler.is_a?(Game_Actor) ? -($rush_offset) : $rush_offset)
else
offset = (battler.is_a?(Game_Actor) ? $rush_offset : -($rush_offset))
end
@spriteset.battler(battler).setmove(battler.screen_x - offset, battler.screen_y + 1)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = $p8
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
else
@spriteset.battler(battler).pose = $p8
end
else
# Perform rushing attack styled item
if not (@moved[battler] or battler.guarding?)
if $game_system.sideview_mirror == 1
offset = (battler.is_a?(Game_Actor) ? -($rush_offset) : $rush_offset)
else
offset = (battler.is_a?(Game_Actor) ? $rush_offset : -($rush_offset))
end
@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = $p8
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
end
end
@moved[battler] = false
@rtab ? cbs_update_phase4_step3(battler) : cbs_update_phase4_step3
end
#--------------------------------------------------------------------------
# * Hit Animation
#--------------------------------------------------------------------------
alias cbs_update_phase4_step4 update_phase4_step4
def update_phase4_step4(battler = @active_battler)
for target in (@rtab ? battler.target : @target_battlers)
damage = (@rtab ? target.damage[battler] : target.damage)
if damage.is_a?(Numeric) and damage > 0
@spriteset.battler(target).pose = $p2
end
end
@rtab ? cbs_update_phase4_step4(battler) : cbs_update_phase4_step4
end
#--------------------------------------------------------------------------
# * Victory Animation
#--------------------------------------------------------------------------
alias cbs_start_phase5 start_phase5
def start_phase5
for actor in $game_party.actors
return if @spriteset.battler(actor).moving
end
for actor in $game_party.actors
unless actor.dead?
@spriteset.battler(actor).pose = $p10
@spriteset.battler(actor).freeze
end
end
cbs_start_phase5
end
#--------------------------------------------------------------------------
# * Change Arrow Viewport
#--------------------------------------------------------------------------
alias cbs_start_enemy_select start_enemy_select
def start_enemy_select
cbs_start_enemy_select
@enemy_arrow.dispose
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport2)
@enemy_arrow.help_window = @help_window
end
end
#==============================================================================
# ** Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# * Change Enemy Viewport
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize
cbs_initialize
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport2, enemy))
end
end
#--------------------------------------------------------------------------
# * Find Sprite From Battler Handle
#--------------------------------------------------------------------------
def battler(handle)
for sprite in @actor_sprites + @enemy_sprites
return sprite if sprite.battler == handle
end
end
end
#==============================================================================
# ** Arrow_Base
#==============================================================================
class Arrow_Base < Sprite
#--------------------------------------------------------------------------
# * Reposition Arrows
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport)
cbs_initialize(viewport)
self.ox = 14
self.oy = 10
end
end