Problem with YEA - Visual Battlers

ScoopJohn

The guy who asks too many questions
Veteran
Joined
Sep 6, 2013
Messages
254
Reaction score
33
First Language
Italian
Primarily Uses
RMVXA
I have another problem, when one of my actor dies, the sprite of the dead actor is still seen but not disappeared.

Perhaps i have the old version or how i can fix it?
 

BoluBolu

Veteran
Veteran
Joined
Apr 24, 2014
Messages
452
Reaction score
117
Primarily Uses
No,by default it's like that. But here's the modified script by Berreytor, now the dead actor turn 90 degree, like collapse drop, err I don't know how to explain it.

I have configurated the script to act for front view system, so if you want it for sideview, just change the settings :) . But if you want the battler disappeared, then I don't know, sorry if not helping.

Code:
#==============================================================================## ¥ Yanfly Engine Ace - Visual Battlers v1.01# -- Last Updated: 2012.07.24# -- Level: Easy# -- Requires: n/a## ¥ Modified by:# -- Yami# -- Kread-Ex# -- Archeia_Nessiah## - Barreytor's modded copy of the script# Includes:# - "Actors drop dead" quickfix# - "Actors stay still" quickfix with toggle#============================================================================== $imported = {} if $imported.nil?$imported["YEA-VisualBattlers"] = true #==============================================================================# ¥ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.12.18 - Added preset views and able to change direction in-game.# 2012.07.24 - Finished Script.# 2012.01.05 - Started Script.##==============================================================================# ¥ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script provides a visual for all actors by default charsets. The actions# and movements are alike Final Fantasy 1, only move forward and backward when# start and finish actions.##==============================================================================# ¥ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To change the player direction in-game, use the snippet below in a script# call:## $game_system.party_direction = n## To install this script, open up your script editor and copy/paste this script# to an open slot below ¥ Materials but above ¥ Main. Remember to save.##==============================================================================# ¥ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.##============================================================================== module YEA  module VISUAL_BATTLERS       #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # - Party Location Setting -    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    # These settings are adjusted for Party Location. Each Actor will have    # coordinates calculated by below formula. There are two samples coordinates    # below, change PARTY_DIRECTION to the base index you want to use.    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-    PARTY_DIRECTION = 2 # This direction is opposite from actual direction.       PARTY_LOCATION_BASE_COORDINATES ={    # Index => [base_x, base_y, mod_x, mod_y],          2 => [    90,    293,    99,     0], #UP          4 => [   150,    280,    20,   -20], #LEFT          3 => [   460,    280,    30,   -10], #RIGHT          6 => [   440,    260,    20,    20], #DEFAULT RIGHT          8 => [   260,    230,    40,     0], #DOWN    } # Do not remove this.       PARTY_LOCATION_FORMULA_X = "base_x + index * mod_x"    PARTY_LOCATION_FORMULA_Y = "base_y + index * mod_y"       ACTORS_WALK_WHEN_STILL = false        end # VISUAL_BATTLERSend # YEA #==============================================================================#  ¥  Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#============================================================================== #==============================================================================# ? ¥  Direction#============================================================================== module Direction   #--------------------------------------------------------------------------  # self.correct  #--------------------------------------------------------------------------  def self.correct(direction)    case direction    when 1; return 4    when 3; return 6    when 7; return 4    when 9; return 6    else; return direction    end  end   #--------------------------------------------------------------------------  # self.opposite  #--------------------------------------------------------------------------  def self.opposite(direction)    case direction    when 1; return 6    when 2; return 8    when 3; return 4    when 4; return 6    when 6; return 4    when 7; return 6    when 8; return 2    when 9; return 4    else; return direction    end  end end # Direction #==============================================================================# ? ¥  Game_System#============================================================================== class Game_System; attr_accessor :party_direction; end #==============================================================================# ? ¥  Game_BattleCharacter#============================================================================== class Game_BattleCharacter < Game_Character   #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize(actor)    super()    setup_actor(actor)    @move_x_rate = 0    @move_y_rate = 0  end   #--------------------------------------------------------------------------  # setup_actor  #--------------------------------------------------------------------------  def setup_actor(actor)    @actor = actor    @step_anime = true    set_graphic(@actor.character_name, @actor.character_index)    setup_coordinates    dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::PARTY_DIRECTION    direction = Direction.opposite(dr)    set_direction(Direction.correct(direction))  end   #--------------------------------------------------------------------------  # step_anime=  #--------------------------------------------------------------------------  def step_anime=(step_anime)    @step_anime = step_anime  end   #--------------------------------------------------------------------------  # sprite=  #--------------------------------------------------------------------------  def sprite=(sprite)    @sprite = sprite  end   #--------------------------------------------------------------------------  # setup_coordinates  #--------------------------------------------------------------------------  def setup_coordinates    location = ($game_system.party_direction ||    YEA::VISUAL_BATTLERS::PARTY_DIRECTION)    base_x = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][0]    base_y = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][1]    mod_x = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][2]    mod_y = YEA::VISUAL_BATTLERS::PARTY_LOCATION_BASE_COORDINATES[location][3]    @actor.screen_x = eval(YEA::VISUAL_BATTLERS::PARTY_LOCATION_FORMULA_X)    @actor.screen_y = eval(YEA::VISUAL_BATTLERS::PARTY_LOCATION_FORMULA_Y)    @actor.origin_x = @actor.screen_x    @actor.origin_y = @actor.screen_y    @actor.create_move_to(screen_x, screen_y, 1)  end   #--------------------------------------------------------------------------  # index  #--------------------------------------------------------------------------  def index    return @actor.index  end   #--------------------------------------------------------------------------  # screen_x  #--------------------------------------------------------------------------  def screen_x    return @actor.screen_x  end   #--------------------------------------------------------------------------  # screen_y  #--------------------------------------------------------------------------  def screen_y    return @actor.screen_y  end   #--------------------------------------------------------------------------  # screen_z  #--------------------------------------------------------------------------  def screen_z    return @actor.screen_z  end end # Game_BattleCharacter #==============================================================================# ? ¥  Game_Battler#============================================================================== class Game_Battler < Game_BattlerBase   #--------------------------------------------------------------------------  # public instance variables  #--------------------------------------------------------------------------  attr_accessor :moved_back  attr_accessor :origin_x  attr_accessor :origin_y  attr_accessor :screen_x  attr_accessor :screen_y  attr_accessor :started_turn   #--------------------------------------------------------------------------  # alias method: execute_damage  #--------------------------------------------------------------------------  alias game_battler_execute_damage_vb execute_damage  def execute_damage(user)    game_battler_execute_damage_vb(user)    if @result.hp_damage > 0      move_backward(24, 6) unless @moved_back      @moved_back = true    end  end   #--------------------------------------------------------------------------  # face_opposing_party # This for direction channging  #--------------------------------------------------------------------------  def face_opposing_party    direction = ($game_system.party_direction ||    YEA::VISUAL_BATTLERS::PARTY_DIRECTION)    character.set_direction(Direction.correct(direction)) rescue 0  end   #--------------------------------------------------------------------------  # new method: face_coordinate  #--------------------------------------------------------------------------  def face_coordinate(destination_x, destination_y)    x1 = Integer(@screen_x)    x2 = Integer(destination_x)    y1 = Graphics.height - Integer(@screen_y)    y2 = Graphics.height - Integer(destination_y)    return if x1 == x2 and y1 == y2    #---    angle = Integer(Math.atan2((y2-y1),(x2-x1)) * 1800 / Math::PI)    if (0..225) === angle or (-225..0) === angle      direction = 6    elsif (226..675) === angle      direction = 9    elsif (676..1125) === angle      direction = 8    elsif (1126..1575) === angle      direction = 7    elsif (1576..1800) === angle or (-1800..-1576) === angle      direction = 4    elsif (-1575..-1126) === angle      direction = 1    elsif (-1125..-676) === angle      direction = 2    elsif (-675..-226) === angle      direction = 3    end    #---    character.set_direction(Direction.correct(direction)) rescue 0  end   #--------------------------------------------------------------------------  # create_move_to  #--------------------------------------------------------------------------  def create_move_to(destination_x, destination_y, frames = 6)    @destination_x = destination_x    @destination_y = destination_y    frames = [frames, 1].max    @move_x_rate = [(@screen_x - @destination_x).abs / frames, 2].max    @move_y_rate = [(@screen_y - @destination_y).abs / frames, 2].max  end   #--------------------------------------------------------------------------  # update_move_to  #--------------------------------------------------------------------------  def update_move_to    @move_x_rate = 0 if @screen_x == @destination_x || @move_x_rate.nil?    @move_y_rate = 0 if @screen_y == @destination_y || @move_y_rate.nil?    value = [(@screen_x - @destination_x).abs, @move_x_rate].min    @screen_x += (@destination_x > @screen_x) ? value : -value    value = [(@screen_y - @destination_y).abs, @move_y_rate].min    @screen_y += (@destination_y > @screen_y) ? value : -value  end   #--------------------------------------------------------------------------  # move_forward  #--------------------------------------------------------------------------  def move_forward(distance = 24, frames = 6)    direction = forward_direction    move_direction(direction, distance, frames)  end   #--------------------------------------------------------------------------  # move_backward  #--------------------------------------------------------------------------  def move_backward(distance = 24, frames = 6)    direction = Direction.opposite(forward_direction)    move_direction(direction, distance, frames)  end   #--------------------------------------------------------------------------  # move_direction  #--------------------------------------------------------------------------  def move_direction(direction, distance = 24, frames = 6)    case direction    when 1; move_x = distance / -2; move_y = distance /  2    when 2; move_x = distance *  0; move_y = distance *  1    when 3; move_x = distance / -2; move_y = distance /  2    when 4; move_x = distance * -1; move_y = distance *  0    when 6; move_x = distance *  1; move_y = distance *  0    when 7; move_x = distance / -2; move_y = distance / -2    when 8; move_x = distance *  0; move_y = distance * -1    when 9; move_x = distance /  2; move_y = distance / -2    else; return    end    destination_x = @screen_x + move_x    destination_y = @screen_y + move_y    create_move_to(destination_x, destination_y, frames)  end   #--------------------------------------------------------------------------  # forward_direction  #--------------------------------------------------------------------------  def forward_direction    return ($game_system.party_direction ||    YEA::VISUAL_BATTLERS::PARTY_DIRECTION)  end   #--------------------------------------------------------------------------  # move_origin  #--------------------------------------------------------------------------  def move_origin    create_move_to(@origin_x, @origin_y)    face_coordinate(@origin_x, @origin_y)    @moved_back = false  end   #--------------------------------------------------------------------------  # moving?  #--------------------------------------------------------------------------  def moving?    return false if dead? || !exist?    return @move_x_rate != 0 || @move_y_rate != 0  end end # Game_Battler #==============================================================================# ? ¥  Game_Actor#============================================================================== class Game_Actor < Game_Battler   #--------------------------------------------------------------------------  # overwrite method: use_sprite?  #--------------------------------------------------------------------------  def use_sprite?    return true  end   #--------------------------------------------------------------------------  # new method: screen_x  #--------------------------------------------------------------------------  def screen_x    return @screen_x rescue 0  end   #--------------------------------------------------------------------------  # new method: screen_y  #--------------------------------------------------------------------------  def screen_y    return @screen_y rescue 0  end   #--------------------------------------------------------------------------  # new method: screen_z  #--------------------------------------------------------------------------  def screen_z    return 100  end   #--------------------------------------------------------------------------  # new method: sprite  #--------------------------------------------------------------------------  def sprite    index = $game_party.battle_members.index(self)    return SceneManager.scene.spriteset.actor_sprites[index]  end   #--------------------------------------------------------------------------  # new method: character  #--------------------------------------------------------------------------  def character    return sprite.character_base  end   #--------------------------------------------------------------------------  # face_opposing_party  #--------------------------------------------------------------------------  def face_opposing_party    dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::PARTY_DIRECTION    direction = Direction.opposite(dr)    character.set_direction(Direction.correct(direction)) rescue 0  end   #--------------------------------------------------------------------------  # forward_direction  #--------------------------------------------------------------------------  def forward_direction    return Direction.opposite(($game_system.party_direction ||    YEA::VISUAL_BATTLERS::PARTY_DIRECTION))  end end # Game_Actor #==============================================================================# ? ¥  Game_Enemy#============================================================================== class Game_Enemy < Game_Battler   #--------------------------------------------------------------------------  # new method: sprite  #--------------------------------------------------------------------------  def sprite    return SceneManager.scene.spriteset.enemy_sprites.reverse[self.index]  end   #--------------------------------------------------------------------------  # new method: character  #--------------------------------------------------------------------------  def character    return sprite  end end # Game_Enemy #==============================================================================# ? ¥  Game_Troop#============================================================================== class Game_Troop < Game_Unit   #--------------------------------------------------------------------------  # alias method: setup  #--------------------------------------------------------------------------  alias game_troop_setup_vb setup  def setup(troop_id)    game_troop_setup_vb(troop_id)    set_coordinates  end   #--------------------------------------------------------------------------  # new method: set_coordinates  #--------------------------------------------------------------------------  def set_coordinates    for member in members      member.origin_x = member.screen_x      member.origin_y = member.screen_y      member.create_move_to(member.screen_x, member.screen_y, 1)    end  end end # Game_Troop #==============================================================================# ? ¥  Sprite_Battler#============================================================================== class Sprite_Battler < Sprite_Base   #--------------------------------------------------------------------------  # public instance_variable  #--------------------------------------------------------------------------  attr_accessor :character_base  attr_accessor :character_sprite   #--------------------------------------------------------------------------  # alias method: dispose  #--------------------------------------------------------------------------  alias sprite_battler_dispose_vb dispose  def dispose    dispose_character_sprite    sprite_battler_dispose_vb  end   #--------------------------------------------------------------------------  # new method: dispose_character_sprite  #--------------------------------------------------------------------------  def dispose_character_sprite    @character_sprite.dispose unless @character_sprite.nil?  end   #--------------------------------------------------------------------------  # alias method: update  #--------------------------------------------------------------------------  alias sprite_battler_update_vb update  def update    sprite_battler_update_vb    return if @battler.nil?    update_move_to    update_character_base    update_character_sprite  end   #--------------------------------------------------------------------------  # new method: update_character_base  #--------------------------------------------------------------------------  def update_character_base    return if @character_base.nil?    @character_base.update  end   #--------------------------------------------------------------------------  # new method: update_character_sprite  #--------------------------------------------------------------------------  def update_character_sprite    return if @character_sprite.nil?    @character_sprite.update  end   #--------------------------------------------------------------------------  # new method: update_move_to  #--------------------------------------------------------------------------  def update_move_to    @battler.update_move_to  end   #--------------------------------------------------------------------------  # new method: moving?  #--------------------------------------------------------------------------  def moving?    return false if @battler.nil?    return @battler.moving?  end end # Sprite_Battler #==============================================================================# ? ¥  Sprite_BattleCharacter#============================================================================== class Sprite_BattleCharacter < Sprite_Character   #--------------------------------------------------------------------------  # initialize  #--------------------------------------------------------------------------  def initialize(viewport, character = nil)    super(viewport, character)    character.sprite = self  end end # Sprite_BattleCharacter #==============================================================================# ? ¥  Spriteset_Battle#============================================================================== class Spriteset_Battle    #--------------------------------------------------------------------------  # public instance_variable  #--------------------------------------------------------------------------  attr_accessor :actor_sprites  attr_accessor :enemy_sprites  #has default attr_accessor :battler  #--------------------------------------------------------------------------  # overwrite method: create_actors # This method assign the actor to battler  # instance variable.  #--------------------------------------------------------------------------  def create_actors    total = $game_party.max_battle_members    @current_party = $game_party.battle_members.clone    @actor_sprites = Array.new(total) { Sprite_Battler.new(@viewport1) }        for actor in $game_party.battle_members # means the actor available in battle      # actor = Game_Actor object      p actor.is_a?(Game_Actor)         @actor_sprites[actor.index].battler = actor # assign actor to battler      create_actor_sprite(actor)    end  end   #--------------------------------------------------------------------------  # new method: create_actor_sprite  #--------------------------------------------------------------------------  def create_actor_sprite(actor)    character = Game_BattleCharacter.new(actor)    character_sprite = Sprite_BattleCharacter.new(@viewport1, character)       @actor_sprites[actor.index].character_base = character    @actor_sprites[actor.index].character_sprite = character_sprite    actor.face_opposing_party  end   #--------------------------------------------------------------------------  # alias method: update_actors  #--------------------------------------------------------------------------  alias spriteset_battle_update_actors_vb update_actors  def update_actors    for actor in $game_party.battle_members      if $game_party.battle_members[actor.index].death_state?        @actor_sprites[actor.index].character_sprite.angle = -90        @actor_sprites[actor.index].character_base.step_anime = false        #      elsif @actor_sprites[actor.index].battler.moving?        @actor_sprites[actor.index].character_sprite.angle = 0        @actor_sprites[actor.index].character_base.step_anime = true      else        @actor_sprites[actor.index].character_sprite.angle = 0        @actor_sprites[actor.index].character_base.step_anime = YEA::VISUAL_BATTLERS::ACTORS_WALK_WHEN_STILL      end    end    if @current_party != $game_party.battle_members      dispose_actors      create_actors    end    spriteset_battle_update_actors_vb  end   #--------------------------------------------------------------------------  # new method: moving?  #--------------------------------------------------------------------------  def moving?    return battler_sprites.any? {|sprite| sprite.moving? }  end end # Spriteset_Battle #==============================================================================# ? ¥  Scene_Battle#============================================================================== class Scene_Battle < Scene_Base   #--------------------------------------------------------------------------  # public instance variables  #--------------------------------------------------------------------------  attr_accessor :spriteset   #--------------------------------------------------------------------------  # alias method: process_action_end  #--------------------------------------------------------------------------  alias scene_battle_process_action_end_vb process_action_end  def process_action_end    start_battler_move_origin    scene_battle_process_action_end_vb  end   #--------------------------------------------------------------------------  # alias method: execute_action  #--------------------------------------------------------------------------  alias scene_battle_execute_action_vb execute_action  def execute_action    start_battler_move_forward    scene_battle_execute_action_vb  end   #--------------------------------------------------------------------------  # new method: start_battler_move_forward  #--------------------------------------------------------------------------  def start_battler_move_forward        return if @subject.started_turn    @subject.started_turn = true    @subject.move_forward    wait_for_moving  end   #--------------------------------------------------------------------------  # new method: start_battler_move_origin  #--------------------------------------------------------------------------  def start_battler_move_origin    @subject.started_turn = nil    move_battlers_origin    wait_for_moving    @subject.face_opposing_party rescue 0  end   #--------------------------------------------------------------------------  # new method: move_battlers_origin  #--------------------------------------------------------------------------  def move_battlers_origin    for member in all_battle_members      next unless member.exist?      next if member.dead?      member.move_origin    end  end   #--------------------------------------------------------------------------  # new method: wait_for_moving  #--------------------------------------------------------------------------  def wait_for_moving       update_for_wait    update_for_wait while @spriteset.moving?  end end # Scene_Battle #==============================================================================##  ¥  End of File##==============================================================================
 

ScoopJohn

The guy who asks too many questions
Veteran
Joined
Sep 6, 2013
Messages
254
Reaction score
33
First Language
Italian
Primarily Uses
RMVXA
No,by default it's like that. But here's the modified script by Berreytor, now the dead actor turn 90 degree, like collapse drop, err I don't know how to explain it.

I have configurated the script to act for front view system, so if you want it for sideview, just change the settings :) . But if you want the battler disappeared, then I don't know, sorry if not helping.

#==============================================================================## ¥ Yanfly Engine Ace - Visual Battlers v1.01# -- Last Updated: 2012.07.24# -- Level: Easy# -- Requires: n/a## ¥ Modified by:# -- Yami# -- Kread-Ex# -- Archeia_Nessiah## - Barreytor's modded copy of the script# Includes:# - "Actors drop dead" quickfix# - "Actors stay still" quickfix with toggle#============================================================================== $imported = {} if $imported.nil?$imported["YEA-VisualBattlers"] = true #==============================================================================# ¥ Updates# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# 2012.12.18 - Added preset views and able to change direction in-game.# 2012.07.24 - Finished Script.# 2012.01.05 - Started Script.##==============================================================================# ¥ Introduction# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script provides a visual for all actors by default charsets. The actions# and movements are alike Final Fantasy 1, only move forward and backward when# start and finish actions.##==============================================================================# ¥ Instructions# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# To change the player direction in-game, use the snippet below in a script# call:## $game_system.party_direction = n## To install this script, open up your script editor and copy/paste this script# to an open slot below ¥ Materials but above ¥ Main. Remember to save.##==============================================================================# ¥ Compatibility# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that# it will run with RPG Maker VX without adjusting.##============================================================================== module YEA module VISUAL_BATTLERS #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Party Location Setting - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # These settings are adjusted for Party Location. Each Actor will have # coordinates calculated by below formula. There are two samples coordinates # below, change PARTY_DIRECTION to the base index you want to use. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PARTY_DIRECTION = 2 # This direction is opposite from actual direction. PARTY_LOCATION_BASE_COORDINATES ={ # Index => [base_x, base_y, mod_x, mod_y], 2 => [ 90, 293, 99, 0], #UP 4 => [ 150, 280, 20, -20], #LEFT 3 => [ 460, 280, 30, -10], #RIGHT 6 => [ 440, 260, 20, 20], #DEFAULT RIGHT 8 => [ 260, 230, 40, 0], #DOWN } # Do not remove this. PARTY_LOCATION_FORMULA_X = "base_x + index * mod_x" PARTY_LOCATION_FORMULA_Y = "base_y + index * mod_y" ACTORS_WALK_WHEN_STILL = false end # VISUAL_BATTLERSend # YEA #==============================================================================# ¥ Editting anything past this point may potentially result in causing# computer damage, incontinence, explosion of user's head, coma, death, and/or# halitosis so edit at your own risk.#============================================================================== #==============================================================================# ? ¥ Direction#============================================================================== module Direction #-------------------------------------------------------------------------- # self.correct #-------------------------------------------------------------------------- def self.correct(direction) case direction when 1; return 4 when 3; return 6 when 7; return 4 when 9; return 6 else; return direction end end #-------------------------------------------------------------------------- # self.opposite #-------------------------------------------------------------------------- def self.opposite(direction) case direction when 1; return 6 when 2; return 8 when 3; return 4 when 4; return 6 when 6; return 4 when 7; return 6 when 8; return 2 when 9; return 4 else; return direction end end end # Direction #==============================================================================# ? ¥ Game_System#============================================================================== class Game_System; attr_accessor :party_direction; end #==============================================================================# ? ¥ Game_BattleCharacter#============================================================================== class Game_BattleCharacter < Game_Character #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(actor) super() setup_actor(actor) @move_x_rate = 0 @move_y_rate = 0 end #-------------------------------------------------------------------------- # setup_actor #-------------------------------------------------------------------------- def setup_actor(actor) @actor = actor @step_anime = true set_graphic(@actor.character_name, @actor.character_index) setup_coordinates dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION direction = Direction.opposite(dr) set_direction(Direction.correct(direction)) end #-------------------------------------------------------------------------- # step_anime= #-------------------------------------------------------------------------- def step_anime=(step_anime) @step_anime = step_anime end #-------------------------------------------------------------------------- # sprite= #-------------------------------------------------------------------------- def sprite=(sprite) @sprite = sprite end #-------------------------------------------------------------------------- # setup_coordinates #-------------------------------------------------------------------------- def setup_coordinates location = ($game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION) base_x = YEA::VISUAL_BATTLERS::pARTY_LOCATION_BASE_COORDINATES[location][0] base_y = YEA::VISUAL_BATTLERS::pARTY_LOCATION_BASE_COORDINATES[location][1] mod_x = YEA::VISUAL_BATTLERS::pARTY_LOCATION_BASE_COORDINATES[location][2] mod_y = YEA::VISUAL_BATTLERS::pARTY_LOCATION_BASE_COORDINATES[location][3] @actor.screen_x = eval(YEA::VISUAL_BATTLERS::pARTY_LOCATION_FORMULA_X) @actor.screen_y = eval(YEA::VISUAL_BATTLERS::pARTY_LOCATION_FORMULA_Y) @actor.origin_x = @actor.screen_x @actor.origin_y = @actor.screen_y @actor.create_move_to(screen_x, screen_y, 1) end #-------------------------------------------------------------------------- # index #-------------------------------------------------------------------------- def index return @actor.index end #-------------------------------------------------------------------------- # screen_x #-------------------------------------------------------------------------- def screen_x return @actor.screen_x end #-------------------------------------------------------------------------- # screen_y #-------------------------------------------------------------------------- def screen_y return @actor.screen_y end #-------------------------------------------------------------------------- # screen_z #-------------------------------------------------------------------------- def screen_z return @actor.screen_z end end # Game_BattleCharacter #==============================================================================# ? ¥ Game_Battler#============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :moved_back attr_accessor :origin_x attr_accessor :origin_y attr_accessor :screen_x attr_accessor :screen_y attr_accessor :started_turn #-------------------------------------------------------------------------- # alias method: execute_damage #-------------------------------------------------------------------------- alias game_battler_execute_damage_vb execute_damage def execute_damage(user) game_battler_execute_damage_vb(user) if @result.hp_damage > 0 move_backward(24, 6) unless @moved_back @moved_back = true end end #-------------------------------------------------------------------------- # face_opposing_party # This for direction channging #-------------------------------------------------------------------------- def face_opposing_party direction = ($game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION) character.set_direction(Direction.correct(direction)) rescue 0 end #-------------------------------------------------------------------------- # new method: face_coordinate #-------------------------------------------------------------------------- def face_coordinate(destination_x, destination_y) x1 = Integer(@screen_x) x2 = Integer(destination_x) y1 = Graphics.height - Integer(@screen_y) y2 = Graphics.height - Integer(destination_y) return if x1 == x2 and y1 == y2 #--- angle = Integer(Math.atan2((y2-y1),(x2-x1)) * 1800 / Math::pI) if (0..225) === angle or (-225..0) === angle direction = 6 elsif (226..675) === angle direction = 9 elsif (676..1125) === angle direction = 8 elsif (1126..1575) === angle direction = 7 elsif (1576..1800) === angle or (-1800..-1576) === angle direction = 4 elsif (-1575..-1126) === angle direction = 1 elsif (-1125..-676) === angle direction = 2 elsif (-675..-226) === angle direction = 3 end #--- character.set_direction(Direction.correct(direction)) rescue 0 end #-------------------------------------------------------------------------- # create_move_to #-------------------------------------------------------------------------- def create_move_to(destination_x, destination_y, frames = 6) @destination_x = destination_x @destination_y = destination_y frames = [frames, 1].max @move_x_rate = [(@screen_x - @destination_x).abs / frames, 2].max @move_y_rate = [(@screen_y - @destination_y).abs / frames, 2].max end #-------------------------------------------------------------------------- # update_move_to #-------------------------------------------------------------------------- def update_move_to @move_x_rate = 0 if @screen_x == @destination_x || @move_x_rate.nil? @move_y_rate = 0 if @screen_y == @destination_y || @move_y_rate.nil? value = [(@screen_x - @destination_x).abs, @move_x_rate].min @screen_x += (@destination_x > @screen_x) ? value : -value value = [(@screen_y - @destination_y).abs, @move_y_rate].min @screen_y += (@destination_y > @screen_y) ? value : -value end #-------------------------------------------------------------------------- # move_forward #-------------------------------------------------------------------------- def move_forward(distance = 24, frames = 6) direction = forward_direction move_direction(direction, distance, frames) end #-------------------------------------------------------------------------- # move_backward #-------------------------------------------------------------------------- def move_backward(distance = 24, frames = 6) direction = Direction.opposite(forward_direction) move_direction(direction, distance, frames) end #-------------------------------------------------------------------------- # move_direction #-------------------------------------------------------------------------- def move_direction(direction, distance = 24, frames = 6) case direction when 1; move_x = distance / -2; move_y = distance / 2 when 2; move_x = distance * 0; move_y = distance * 1 when 3; move_x = distance / -2; move_y = distance / 2 when 4; move_x = distance * -1; move_y = distance * 0 when 6; move_x = distance * 1; move_y = distance * 0 when 7; move_x = distance / -2; move_y = distance / -2 when 8; move_x = distance * 0; move_y = distance * -1 when 9; move_x = distance / 2; move_y = distance / -2 else; return end destination_x = @screen_x + move_x destination_y = @screen_y + move_y create_move_to(destination_x, destination_y, frames) end #-------------------------------------------------------------------------- # forward_direction #-------------------------------------------------------------------------- def forward_direction return ($game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION) end #-------------------------------------------------------------------------- # move_origin #-------------------------------------------------------------------------- def move_origin create_move_to(@origin_x, @origin_y) face_coordinate(@origin_x, @origin_y) @moved_back = false end #-------------------------------------------------------------------------- # moving? #-------------------------------------------------------------------------- def moving? return false if dead? || !exist? return @move_x_rate != 0 || @move_y_rate != 0 end end # Game_Battler #==============================================================================# ? ¥ Game_Actor#============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # overwrite method: use_sprite? #-------------------------------------------------------------------------- def use_sprite? return true end #-------------------------------------------------------------------------- # new method: screen_x #-------------------------------------------------------------------------- def screen_x return @screen_x rescue 0 end #-------------------------------------------------------------------------- # new method: screen_y #-------------------------------------------------------------------------- def screen_y return @screen_y rescue 0 end #-------------------------------------------------------------------------- # new method: screen_z #-------------------------------------------------------------------------- def screen_z return 100 end #-------------------------------------------------------------------------- # new method: sprite #-------------------------------------------------------------------------- def sprite index = $game_party.battle_members.index(self) return SceneManager.scene.spriteset.actor_sprites[index] end #-------------------------------------------------------------------------- # new method: character #-------------------------------------------------------------------------- def character return sprite.character_base end #-------------------------------------------------------------------------- # face_opposing_party #-------------------------------------------------------------------------- def face_opposing_party dr = $game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION direction = Direction.opposite(dr) character.set_direction(Direction.correct(direction)) rescue 0 end #-------------------------------------------------------------------------- # forward_direction #-------------------------------------------------------------------------- def forward_direction return Direction.opposite(($game_system.party_direction || YEA::VISUAL_BATTLERS::pARTY_DIRECTION)) end end # Game_Actor #==============================================================================# ? ¥ Game_Enemy#============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # new method: sprite #-------------------------------------------------------------------------- def sprite return SceneManager.scene.spriteset.enemy_sprites.reverse[self.index] end #-------------------------------------------------------------------------- # new method: character #-------------------------------------------------------------------------- def character return sprite end end # Game_Enemy #==============================================================================# ? ¥ Game_Troop#============================================================================== class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # alias method: setup #-------------------------------------------------------------------------- alias game_troop_setup_vb setup def setup(troop_id) game_troop_setup_vb(troop_id) set_coordinates end #-------------------------------------------------------------------------- # new method: set_coordinates #-------------------------------------------------------------------------- def set_coordinates for member in members member.origin_x = member.screen_x member.origin_y = member.screen_y member.create_move_to(member.screen_x, member.screen_y, 1) end end end # Game_Troop #==============================================================================# ? ¥ Sprite_Battler#============================================================================== class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # public instance_variable #-------------------------------------------------------------------------- attr_accessor :character_base attr_accessor :character_sprite #-------------------------------------------------------------------------- # alias method: dispose #-------------------------------------------------------------------------- alias sprite_battler_dispose_vb dispose def dispose dispose_character_sprite sprite_battler_dispose_vb end #-------------------------------------------------------------------------- # new method: dispose_character_sprite #-------------------------------------------------------------------------- def dispose_character_sprite @character_sprite.dispose unless @character_sprite.nil? end #-------------------------------------------------------------------------- # alias method: update #-------------------------------------------------------------------------- alias sprite_battler_update_vb update def update sprite_battler_update_vb return if @battler.nil? update_move_to update_character_base update_character_sprite end #-------------------------------------------------------------------------- # new method: update_character_base #-------------------------------------------------------------------------- def update_character_base return if @character_base.nil? @character_base.update end #-------------------------------------------------------------------------- # new method: update_character_sprite #-------------------------------------------------------------------------- def update_character_sprite return if @character_sprite.nil? @character_sprite.update end #-------------------------------------------------------------------------- # new method: update_move_to #-------------------------------------------------------------------------- def update_move_to @battler.update_move_to end #-------------------------------------------------------------------------- # new method: moving? #-------------------------------------------------------------------------- def moving? return false if @battler.nil? return @battler.moving? end end # Sprite_Battler #==============================================================================# ? ¥ Sprite_BattleCharacter#============================================================================== class Sprite_BattleCharacter < Sprite_Character #-------------------------------------------------------------------------- # initialize #-------------------------------------------------------------------------- def initialize(viewport, character = nil) super(viewport, character) character.sprite = self end end # Sprite_BattleCharacter #==============================================================================# ? ¥ Spriteset_Battle#============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # public instance_variable #-------------------------------------------------------------------------- attr_accessor :actor_sprites attr_accessor :enemy_sprites #has default attr_accessor :battler #-------------------------------------------------------------------------- # overwrite method: create_actors # This method assign the actor to battler # instance variable. #-------------------------------------------------------------------------- def create_actors total = $game_party.max_battle_members @current_party = $game_party.battle_members.clone @actor_sprites = Array.new(total) { Sprite_Battler.new(@viewport1) } for actor in $game_party.battle_members # means the actor available in battle # actor = Game_Actor object p actor.is_a?(Game_Actor) @actor_sprites[actor.index].battler = actor # assign actor to battler create_actor_sprite(actor) end end #-------------------------------------------------------------------------- # new method: create_actor_sprite #-------------------------------------------------------------------------- def create_actor_sprite(actor) character = Game_BattleCharacter.new(actor) character_sprite = Sprite_BattleCharacter.new(@viewport1, character) @actor_sprites[actor.index].character_base = character @actor_sprites[actor.index].character_sprite = character_sprite actor.face_opposing_party end #-------------------------------------------------------------------------- # alias method: update_actors #-------------------------------------------------------------------------- alias spriteset_battle_update_actors_vb update_actors def update_actors for actor in $game_party.battle_members if $game_party.battle_members[actor.index].death_state? @actor_sprites[actor.index].character_sprite.angle = -90 @actor_sprites[actor.index].character_base.step_anime = false # elsif @actor_sprites[actor.index].battler.moving? @actor_sprites[actor.index].character_sprite.angle = 0 @actor_sprites[actor.index].character_base.step_anime = true else @actor_sprites[actor.index].character_sprite.angle = 0 @actor_sprites[actor.index].character_base.step_anime = YEA::VISUAL_BATTLERS::ACTORS_WALK_WHEN_STILL end end if @current_party != $game_party.battle_members dispose_actors create_actors end spriteset_battle_update_actors_vb end #-------------------------------------------------------------------------- # new method: moving? #-------------------------------------------------------------------------- def moving? return battler_sprites.any? {|sprite| sprite.moving? } end end # Spriteset_Battle #==============================================================================# ? ¥ Scene_Battle#============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :spriteset #-------------------------------------------------------------------------- # alias method: process_action_end #-------------------------------------------------------------------------- alias scene_battle_process_action_end_vb process_action_end def process_action_end start_battler_move_origin scene_battle_process_action_end_vb end #-------------------------------------------------------------------------- # alias method: execute_action #-------------------------------------------------------------------------- alias scene_battle_execute_action_vb execute_action def execute_action start_battler_move_forward scene_battle_execute_action_vb end #-------------------------------------------------------------------------- # new method: start_battler_move_forward #-------------------------------------------------------------------------- def start_battler_move_forward return if @subject.started_turn @subject.started_turn = true @subject.move_forward wait_for_moving end #-------------------------------------------------------------------------- # new method: start_battler_move_origin #-------------------------------------------------------------------------- def start_battler_move_origin @subject.started_turn = nil move_battlers_origin wait_for_moving @subject.face_opposing_party rescue 0 end #-------------------------------------------------------------------------- # new method: move_battlers_origin #-------------------------------------------------------------------------- def move_battlers_origin for member in all_battle_members next unless member.exist? next if member.dead? member.move_origin end end #-------------------------------------------------------------------------- # new method: wait_for_moving #-------------------------------------------------------------------------- def wait_for_moving update_for_wait update_for_wait while @spriteset.moving? end end # Scene_Battle #==============================================================================## ¥ End of File##==============================================================================
Looks good enough for me, thank you.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c
So I was playing with filters and this looked interesting...

Versus the normal look...

Kind of gives a very different feel. :LZSexcite:

Forum statistics

Threads
105,855
Messages
1,017,007
Members
137,563
Latest member
MinyakaAeon
Top