Hey all, so I suddenly got inspired to sprite today and I was making an enemy sprite and implemented into my animated battle system, when suddenly, out of nowhere I got this error:
https://www.dropbox.com/s/tv259crtsggu74m/error.png
I have never gotten anything like this and I've had my animated battler script for well . . . ever now, so I am baffled that this is now consistently happening. The weird thing is depending on the battleback background I choose or the character battler I have in the test battle, sometimes I won't encounter this error. I know next to nothing about scripting so any help here would be so appreciated! Here's the script that the error is referencing:
https://www.dropbox.com/s/tv259crtsggu74m/error.png
I have never gotten anything like this and I've had my animated battler script for well . . . ever now, so I am baffled that this is now consistently happening. The weird thing is depending on the battleback background I choose or the character battler I have in the test battle, sometimes I won't encounter this error. I know next to nothing about scripting so any help here would be so appreciated! Here's the script that the error is referencing:
Code:
#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# Animated Battlers by Minkoff
#==============================================================================
class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Initialize
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport, battler = nil)
@speed = 5#7
@frames = 4
@poses = 11
@stationary_enemies = true
@stationary_actors = false
@calculate_speed = true
@phasing = true
@frame = 0
@pose = 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
@width = @width / @frames
@height = @height / @poses
@display_x = @battler.screen_x
@display_y = @battler.screen_y
@destination_x = @display_x
@destination_y = @display_y
end
# Setup Sprite
self.src_rect.set(@width * @frame, @height * @pose, @width, @height)
self.mirror = @battler.is_a?(Game_Enemy) unless @started
if @battler.is_a?(Game_Actor)
@stationary_actors = [5, 7, 9].include?(@battler.class_id)
end
# Position Sprite
self.x = @display_x
self.y = @display_y
self.z = @display_y
self.ox = @width / 2
self.oy = @height
# Setup Animation
time = Graphics.frame_count / (Graphics.frame_rate / @speed)
if @last_time < time
@frame = (@frame + 1) % @frames
if @frame == 0 or @reload
if @freeze
@frame = @frames - 1
return
end
@pose = state
end
end
@last_time = time
# Move It
move if moving
# Finish Up
@started = true
end
#--------------------------------------------------------------------------
# * Current State
#--------------------------------------------------------------------------
def state
# Damage State
if [nil,{}].include?(@battler.damage)
# Battler Fine
@state = 0
# Battler Wounded
@state = 0 if @battler.hp < @battler.maxhp / 4
# Battler Dead
@state = 2 if @battler.dead?
end
# Guarding State
@state = 3 if @battler.guarding?
# Moving State
if moving
# Battler Moving Left
@state = 4 if moving.eql?(0)
# Battler Moving Right
@state = 5 if moving.eql?(1)
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)
@original_x = @display_x
@original_y = @display_y
@destination_x = destination_x
@destination_y = destination_y
end
end
#--------------------------------------------------------------------------
# * Movement Check
#--------------------------------------------------------------------------
def moving
if (@display_x != @destination_x and @display_y != @destination_y)
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
#--------------------------------------------------------------------------
def collapse
return
end
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor
#--------------------------------------------------------------------------
# * Actor X Coordinate
#--------------------------------------------------------------------------
def screen_x
if self.index != nil
return self.index * 45 + 450
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
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * 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
if not (@moved[battler] or battler.guarding?)
offset = (battler.is_a?(Game_Actor) ? 40 : -40)
@spriteset.battler(battler).setmove(target.screen_x + offset, target.screen_y)
@moved[battler] = true
return
elsif not battler.guarding?
@spriteset.battler(battler).pose = 6 + rand(2)
@spriteset.battler(battler).setmove(battler.screen_x, battler.screen_y)
end
when 1 # Skill
@spriteset.battler(battler).pose = 10
when 2 # Item
@spriteset.battler(battler).pose = 8
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 = 1
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 = 9
@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
#--------------------------------------------------------------------------
# * Find Sprite From Battler Handle
#--------------------------------------------------------------------------
def battler(handle)
for sprite in @actor_sprites + @enemy_sprites
return sprite if sprite.battler == handle
end
return false
end
end
#==============================================================================
# ** Arrow_Base
#==============================================================================
class Arrow_Base < Sprite
#--------------------------------------------------------------------------
# * Reposition Arrows
#--------------------------------------------------------------------------
alias cbs_initialize initialize
def initialize(viewport)
cbs_initialize(viewport)
self.ox = 14 # 32
self.oy = 10 # 40
end
end
class Spriteset_Battle
attr_accessor :actor_sprites
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Constants
#--------------------------------------------------------------------------
# Loads Data System
data_system = load_data("Data/System.rxdata")
# Gets Element Array
element_array = data_system.elements
# Here's the Constants
REMOVE_NO_REPLACE = element_array.index('Remove - No Replace')
REMOVE_REPLACE_SAME = element_array.index('Remove - Replace Same')
REMOVE_REPLACE_DEAD = element_array.index('Remove - Replace Dead')
TEMP_REMOVE_SAME = element_array.index('Temp Remove - Same')
TEMP_REMOVE_KO = element_array.index('Temp Remove - KO')
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias sephraziel_actorreplacing_scenebattle_main main
alias sephraziel_actorreplacing_scenebattle_msar make_skill_action_result
alias sephraziel_actorreplacing_scenebattle_ups6 update_phase4_step6
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# This Part Executes Before our original Main Method
# Creates Replacing Array
@sephraziel_replacing_array = []
# Calls our old Main Method
sephraziel_actorreplacing_scenebattle_main
# Once our loop in the main method is broke, and it
# does the rest of the stuff at the end of our
# default main method, these lines will execute
# This code block goes through each idea in the actor replacing array
for id in @sephraziel_replacing_array
# Adds the actor back in with the actor id
$game_party.add_actor(id)
end
end
#--------------------------------------------------------------------------
# * Make Skill Action Results
#--------------------------------------------------------------------------
def make_skill_action_result
# Get skill
skill = $data_skills[@active_battler.current_action.skill_id]
# Checks for Temp Remove
if skill.element_set.include?(TEMP_REMOVE_SAME) ||
skill.element_set.include?(TEMP_REMOVE_KO)
# Gets Active Battler Index
index = $game_party.actors.index(@active_battler)
# Turns off visiblilty
@spriteset.actor_sprites[index].visible = false
end
# Original Method
sephraziel_actorreplacing_scenebattle_msar
end
#--------------------------------------------------------------------------
# * Frame Update (main phase step 6 : refresh)
#--------------------------------------------------------------------------
def update_phase4_step6
# Execute our original method
sephraziel_actorreplacing_scenebattle_ups6
# New Part
if @phase4_step == 1
# If Casing Skill
if @active_battler.current_action.kind == 1
# Gets skill
skill = $data_skills[@active_battler.current_action.skill_id]
# First, we check for Remove - No Replace Skills
if skill.element_set.include?(REMOVE_NO_REPLACE)
# Removes the Actor from the party
$game_party.remove_actor(@active_battler.id)
# Now, we check for Remove - Replace Same
elsif skill.element_set.include?(REMOVE_REPLACE_SAME)
# Stores Actor Id Into Array
@sephraziel_replacing_array << @active_battler.id
# Removes the Actor from the party
$game_party.remove_actor(@active_battler.id)
# Finally, we check for Remove - Replace Dead
elsif @skill.element_set.include?(REMOVE_REPLACE_DEAD)
# Stores Actor Id Into Array
@sephraziel_replacing_array << @active_battler.id
# Kills Actor
@active_battler.hp = 0
# Removes the Actor from the party
$game_party.remove_actor(@active_battler.id)
end
# Checks for Temp Remove
if skill.element_set.include?(TEMP_REMOVE_SAME) ||
skill.element_set.include?(TEMP_REMOVE_KO)
# Gets Active Battler Index
index = $game_party.actors.index(@active_battler)
# KO's actor, if Temo Remove - KO
if skill.element_set.include?(TEMP_REMOVE_KO)
@active_battler.hp = 0
end
# Turns off visiblilty
@spriteset.actor_sprites[index].visible = true
end
end
# Refreshes Status Window
@status_window.refresh
end
end
end