04-08-2024, 03:50 AM (This post was last modified: 03-15-2025, 10:26 PM by kyonides.
Edit Reason: 2 Script Versions - 1 Updated
)
Character's Dash Animation 2 Versions
by Kyonides
Introduction
This is pretty much a plug & play script that will allow you to change the dash animation of the whole party. You must have an extra character spritesheet and name it something like "original_sheet1_dash.png", being "original_sheet1" the actual filename of the original actor spriteset. Then the script will switch from one to another in no time depending on the Dash button and any arrow key or its equivalent.
# You will need some extra character spritesheets to make it work.
# Their filenames should include the _dash suffix or they will be ignored.
# It will crash if you never move them in the Graphics/Characters directory.
class Game_Character
def actor?
false
end
end
class Game_Player
def actor?
true
end
end
class Game_Follower
def actor?
true
end
end
class Sprite_Character
DASH_SUFFIX = "_dash"
alias :kyon_char_dash_anime_sprt_char_up_bit :update_bitmap
def initialize(viewport, character=nil)
super(viewport)
@character = character
@party_member = character.actor?
@balloon_duration = 0
update
end
def update_bitmap
if @party_member
bitmap_update
else
kyon_char_dash_anime_sprt_char_up_bit
end
end
def bitmap_update
dashing = $game_player.dash? && Input.dir4 > 0
if graphic_changed? or dashing != @dashing
@dashing = dashing
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_name += DASH_SUFFIX if !@character_name.empty? && @dashing
@character_index = @character.character_index
if @tile_id > 0
set_tile_bitmap
else
set_character_bitmap
end
end
end
end
The Omega Orca Edition Basically, the only new feature it includes is that it lets you add 1 or more horizontal frames to a given character's spritesheet, and adds the new pattern_max variable so it never skips any of the extra frames while updating the animation.
Now it also affects all window classes by overwriting the draw_character method.
# You will need some extra character spritesheets to make it work.
# Their filenames should include the _dash suffix or they will be ignored.
# It will crash if you never move them in the Graphics/Characters directory.
# Overwritten Methods:
# Window_Base#draw_character
# Sprite_Character#set_character_bitmap and #update_src_rect
module DashCharSetup
WIDTH_MAX_FRAMES = 4
DASH_SUFFIX = "_dash"
end
class Game_CharacterBase
alias :kyon_char_dash_anime_gm_charbs_init_pub_mbrs :init_public_members
def init_public_members
kyon_char_dash_anime_gm_charbs_init_pub_mbrs
@pattern_max = DashCharSetup::WIDTH_MAX_FRAMES + 1
end
def update_anime_pattern
if !@step_anime && @stop_count > 0
@pattern = @original_pattern
else
@pattern = (@pattern + 1) % @pattern_max
end
end
attr_reader :pattern_max
end
class Sprite_Character
include DashCharSetup
alias :kyon_char_dash_anime_sprt_char_up_bit :update_bitmap
def initialize(viewport, character=nil)
super(viewport)
@character = character
@party_member = character.actor?
@balloon_duration = 0
@width_frames = WIDTH_MAX_FRAMES
update
end
def update_bitmap
if @party_member
bitmap_update
else
kyon_char_dash_anime_sprt_char_up_bit
end
end
def bitmap_update
dashing = $game_player.dash? && Input.dir4 > 0
if graphic_changed? or dashing != @dashing
@dashing = dashing
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_name += DASH_SUFFIX if !@character_name.empty? && @dashing
@character_index = @character.character_index
if @tile_id > 0
set_tile_bitmap
else
set_character_bitmap
end
end
end