- #===============================================================================
 
 
- # Side-View Battle System(Patch Behind)
 
 
- # By Jet10985 (Jet)
 
 
- #===============================================================================
 
 
- # This script will allow you to have battle where all the actor's sprites are
 
 
- # display on the behind of the characters.
 
 
- # This script has: 10 customization options.
 
 
- #===============================================================================
 
 
- # Overwritten Methods:
 
 
- # Scene_Battle: show_attack_animation
 
 
- # Spriteset_Battle: update_actors
 
 
- #-------------------------------------------------------------------------------
 
 
- # Aliased methods:
 
 
- # Spriteset_Battle: create_actors, create_enemies
 
 
- # Sprite_Character: initialize, update, dispose, start_new_effect
 
 
- # Scene_Battle: use_item, next_command, prior_command
 
 
- # Game_Character: screen_x, screen_y
 
 
- #===============================================================================
 
 
-   
- module Jet
 
 
-   module Sideview
 
 
-   
-         #===========================================================================
 
 
-         # ENEMY OPTIONS
 
 
-         #===========================================================================
 
 
-   
-         # These are the attack animations for enemies when they use a regular attack.
 
 
-         # It follows this format: enemy_id => animation_id
 
 
-         ENEMY_ATK_ANIMS = {
 
 
-   
-   
-         }
 
 
-   
-         # This is the default enemy attack animation, used when they do not have a
 
 
-         # specific attack animation above.
 
 
-         ENEMY_ATK_ANIMS.default = 1
 
 
-   
-         # This is a list of enemies whose portraits should be flipped in battle.
 
 
-         FLIPPED_ENEMIES = [2, 3, 4, 5, 8, 10, 12, 13, 14, 16, 17, 18, 19]
 
 
-   
-         #===========================================================================
 
 
-         # ACTOR OPTIONS
 
 
-         #===========================================================================
 
 
-   
-         # Should the player sprite have a shadow beneath them?
 
 
-         PLAYER_SHADOW = true
 
 
-   
-         # These are sprite changes depending on state infliction.
 
 
-         # It follows this format: state_id => "sprite_appention"
 
 
-         # This means if the state is inflicted, the sprite will look for a graphic
 
 
-         # that is the same name as the character's sprite, plus the appended option.
 
 
-         # EX: Ralph's sprite's name is $ralph. Ralph gets knocked-out. This means
 
 
-         # state 1 was inflicted, and my below config for 1 was: 1 => "_dead"
 
 
-         # Now, his shown sprite will be $ralph_dead. If the sprite does not exist,
 
 
-         # no change will be made.
 
 
-         # The sprite index will be the same as the actor's.
 
 
-         STATE_SPRITES = {
 
 
-   
-         1 => "_dead",
 
 
-         2 => "_poison",
 
 
-         3 => "_blind"
 
 
-   
-         }
 
 
-   
-         #===========================================================================
 
 
-         # GENERAL_OPTIONS
 
 
-         #===========================================================================
 
 
-   
-         # This is the animation displayed when a skill is about to be used.
 
 
-         SKILL_ANIMATION = 43
 
 
-   
-         # This is the animation displayed when an item is about to be used.
 
 
-         ITEM_ANIMATION = 43
 
 
-   
-         # These are the animations played when a state is inflicted.
 
 
-         # It follows this format: state_id => animation_id
 
 
-         STATE_ANIMATIONS = {
 
 
-   
-         1 => 56,
 
 
-         2 => 50,
 
 
-         3 => 51
 
 
-   
-         }
 
 
-   
-         #===========================================================================
 
 
-         # FIELD OPTIONS
 
 
-         #===========================================================================
 
 
-   
-         # This is where the line-up begins. [x, y]. The higher the x, the further
 
 
-         # right and the higher the y the further down.
 
 
-         FIELD_POS = [275, 280]
 
 
-   
-         # This is how far down, and to the right each player is from the previous
 
 
-         # actor. [x, y]. Same rules as above.
 
 
-         FIELD_SPACING = [50, 0]
 
 
-   
-   end
 
 
- end
 
 
-   
- #===============================================================================
 
 
- # DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
 
 
- #===============================================================================
 
 
-   
- ($imported ||= {})[:jet] ||= {}
 
 
- $imported[:jet][:Sideview] = true
 
 
-   
- class Game_Character
 
 
-   
-   attr_accessor :step_anime
 
 
-   
-   %w[screen_x screen_y].each {|a|
 
 
-         aStr = %Q{
 
 
-           alias jet6372_#{a} #{a}
 
 
-           def #{a}(*args, &block)
 
 
-                 $BTEST ? 0 : jet6372_#{a}(*args, &block)
 
 
-           end
 
 
-         }
 
 
-         module_eval(aStr)
 
 
-   }
 
 
- end
 
 
-   
- class Game_Actor
 
 
-   
-   def animation_id=(t)
 
 
-         self.battle_sprite.start_animation($data_animations[t]) rescue nil
 
 
-   end
 
 
- end
 
 
-   
- class Game_Battler
 
 
-   
-   def battle_sprite
 
 
-         return nil unless SceneManager.scene_is?(Scene_Battle)
 
 
-         SceneManager.scene.spriteset.battler_sprites.each {|a|
 
 
-           return a if a.battler == self
 
 
-         }
 
 
-         return nil
 
 
-   end
 
 
- end
 
 
-   
- class Spriteset_Battle
 
 
-   
-   alias jet2847_create_enemies create_enemies
 
 
-   def create_enemies(*args, &block)
 
 
-         jet2847_create_enemies(*args, &block)
 
 
-         @enemy_sprites.each {|a|
 
 
-           a.mirror = Jet::Sideview::FLIPPED_ENEMIES.include?(a.battler.enemy.id)
 
 
-         }
 
 
-   end
 
 
-   
-   alias jet3835_create_actors create_actors
 
 
-   def create_actors(*args, &block)
 
 
-         jet3835_create_actors(*args, &block)
 
 
-         @jet_party = $game_party.members
 
 
-         @actor_sprites.each {|a|
 
 
-           a.dispose
 
 
-         }
 
 
-         @actor_sprites = []
 
 
-         $game_party.members.each {|a|
 
 
-           f = Game_Character.new
 
 
-           f.set_graphic(a.character_name, a.character_index)
 
 
-           f.step_anime = true
 
 
-           f.set_direction(8)
 
 
-           n = Sprite_Character.new(@viewport1, f)
 
 
-           n.jet_x = Jet::Sideview::FIELD_POS[0] + a.index * Jet::Sideview::FIELD_SPACING[0]
 
 
-           n.jet_y = Jet::Sideview::FIELD_POS[1] + a.index * Jet::Sideview::FIELD_SPACING[1]
 
 
-           n.battler = a
 
 
-           n.battle_sprite = true
 
 
-           if Jet::Sideview::PLAYER_SHADOW
 
 
-                 v = Sprite.new(nil)
 
 
-                 v.bitmap = Cache.system("Shadow")
 
 
-                 n.shadow_sprite = v
 
 
-           end
 
 
-           @actor_sprites.push(n)
 
 
-         }
 
 
-   end
 
 
-   
-   def update_actors
 
 
-         if @jet_party != $game_party.members
 
 
-           @actor_sprites.each {|a|
 
 
-                 a.dispose
 
 
-           }
 
 
-           @actor_sprites = []
 
 
-           create_actors
 
 
-         end
 
 
-         @actor_sprites.each {|a| a.update }
 
 
-   end
 
 
- end
 
 
-   
- class Sprite_Character
 
 
-   
-   attr_accessor :battle_sprite, :jet_x, :jet_y, :shadow_sprite, :battler
 
 
-   
-   alias jet4646_initialize initialize
 
 
-   def initialize(*args, &block)
 
 
-         @battle_sprite = false
 
 
-         jet4646_initialize(*args, &block)
 
 
-   end
 
 
-   
-   alias jet3645_update update
 
 
-   def update(*args, &block)
 
 
-         jet3645_update(*args, &block)
 
 
-         if @battle_sprite
 
 
-           @character.update
 
 
-           self.x = @jet_x
 
 
-           self.y = @jet_y
 
 
-                 f = @battler.states.dup
 
 
-                 f.sort! {|a, b|
 
 
-                   a.priority <=> b.priority
 
 
-                 }.reverse!
 
 
-                 for i in 0...f.size
 
 
-                   a = Jet::Sideview::STATE_SPRITES[f[i].id]
 
 
-                   next if a.nil?
 
 
-                   b = (Cache.character(@character.character_name + a) rescue false)
 
 
-                   next unless b
 
 
-                   index = @character.character_index
 
 
-                   @character.set_graphic(@character.character_name + a, index)
 
 
-                   break
 
 
-                 end
 
 
-           end
 
 
-           if !@shadow_sprite.nil?
 
 
-                 @shadow_sprite.x = self.x - @shadow_sprite.width / 2
 
 
-                 @shadow_sprite.y = self.y - 28
 
 
-                 @shadow_sprite.visible = self.visible
 
 
-                 @shadow_sprite.viewport = self.viewport
 
 
-                 @shadow_sprite.z = self.z - 1
 
 
-           end
 
 
-         end
 
 
-   end
 
 
-   
-   alias jet5484_dispose dispose
 
 
-   def dispose(*args, &block)
 
 
-         @shadow_sprite.dispose if !@shadow_sprite.nil?
 
 
-         jet5484_dispose(*args, &block)
 
 
-   end
 
 
-   
-   def move_x(times, amount)
 
 
-         i = 0
 
 
-         until i == times
 
 
-           self.jet_y += amount
 
 
-           i += 1
 
 
-           [Graphics, SceneManager.scene.spriteset].each {|a| a.update }
 
 
-         end
 
 
-   end
 
 
-   
-   def effect?
 
 
-         false
 
 
-   end
 
 
- end
 
 
-   
- class Game_Enemy
 
 
-   
-   def atk_animation_id1
 
 
-         return Jet::Sideview::ENEMY_ATK_ANIMS[@enemy_id]
 
 
-   end
 
 
-   
-   def atk_animation_id2
 
 
-         return 0
 
 
-   end
 
 
- end
 
 
-   
- class Scene_Battle
 
 
-   
-   attr_reader :spriteset
 
 
-   
-   alias jet2711_use_item use_item
 
 
-   def use_item(*args, &block)
 
 
-         if @subject.is_a?(Game_Actor)
 
 
-                 @subject.battle_sprite.move_x(11, -4)
 
 
-           end
 
 
-         end
 
 
-           if @subject.current_action.item.is_a?(RPG::Item)
 
 
-                 n = $data_animations[Jet::Sideview::ITEM_ANIMATION]
 
 
-           else
 
 
-                 n = $data_animations[Jet::Sideview::SKILL_ANIMATION]
 
 
-           end
 
 
-           @subject.battle_sprite.start_animation(n)
 
 
-           wait_for_animation
 
 
-         end
 
 
-         jet2711_use_item(*args, &block)
 
 
-         if @subject.is_a?(Game_Actor)
 
 
-                 @subject.battle_sprite.move_x(11, 4)
 
 
-           end
 
 
-         end
 
 
-   end
 
 
-   
-   def show_attack_animation(targets)
 
 
-         aid1 = @subject.atk_animation_id1
 
 
-         aid2 = @subject.atk_animation_id2
 
 
-         show_normal_animation(targets, aid1, false)
 
 
-         show_normal_animation(targets, aid2, true)
 
 
-   end
 
 
-   
-   %w[next prior].each {|a|
 
 
-         aStr = %Q{
 
 
-           alias jet3734_#{a}_command #{a}_command
 
 
-           def #{a}_command(*args, &block)
 
 
-                 f = BattleManager.actor
 
 
-                 f.battle_sprite.move_x(6, 4) if f.is_a?(Game_Actor)
 
 
-                 jet3734_#{a}_command(*args, &block)
 
 
-                 f = BattleManager.actor
 
 
-                 f.battle_sprite.move_x(6, -4) if f.is_a?(Game_Actor)
 
 
-           end
 
 
-         }
 
 
-         module_eval(aStr)
 
 
-   }
 
 
- end
 
 
-   
- class Game_Action
 
 
-   
-   def guard?
 
 
-         item == $data_skills[subject.guard_skill_id]
 
 
-   end
 
 
- end
 
 
-   
- if $imported[:jet][:BattlePopUps]
 
 
-   class Sprite_Character
 
 
-   
-         attr_accessor :popups
 
 
-   
-         alias jet4758_initialize initialize
 
 
-         def initialize(*args, &block)
 
 
-           @popups = []
 
 
-           @updating_sprites = []
 
 
-           @popup_wait = 0
 
 
-           jet4758_initialize(*args, &block)
 
 
-         end
 
 
-   
-         alias jet7467_update update
 
 
-         def update(*args, &block)
 
 
-           jet7467_update(*args, &block)
 
 
-           if @popup_wait == 0
 
 
-                   @updating_sprites.push(@popups.pop)
 
 
-                   @popup_wait = 30
 
 
-                 end
 
 
-           else
 
 
-                 @popup_wait -= 1
 
 
-           end
 
 
-           @updating_sprites.each {|a|
 
 
-                 a.visible = true if !a.visible
 
 
-                 a.update
 
 
-                 @updating_sprites.delete(a) if a.disposed?
 
 
-           }
 
 
-         end
 
 
-   
-         alias jet5483_dispose dispose
 
 
-         def dispose(*args, &block)
 
 
-           (@updating_sprites + @popups).each {|a| a.dispose }
 
 
-           jet5483_dispose(*args, &block)
 
 
-         end
 
 
-   
-         alias jet3745_setup_new_effect setup_new_effect
 
 
-         def setup_new_effect(*args, &block)
 
 
-           jet3745_setup_new_effect(*args, &block)
 
 
-           do_sprite_popups
 
 
-         end
 
 
-   
-         def make_popup(text, color)
 
 
-           @popups.unshift(Sprite_JetPopup.new(text.to_s, color, self))
 
 
-         end
 
 
-   
-         def do_sprite_popups
 
 
-           return if @battler.nil?
 
 
-           if @battler_struct.nil?
 
 
-                 @battler_struct = Struct.new(:hp, :mp, :tp).new(0, 0, 0)
 
 
-                 @battler_struct.hp = @battler.hp
 
 
-                 @battler_struct.mp = @battler.mp
 
 
-                 @battler_struct.tp = @battler.tp
 
 
-           end
 
 
-           check_success_popup
 
 
-           check_hp_popup
 
 
-           check_mp_popup
 
 
-           check_tp_popup
 
 
-         end
 
 
-   
-         def check_success_popup
 
 
-           if @battler.result.success
 
 
-                 if @battler.result.critical
 
 
-                   make_popup(Jet::BattlePopUps::CRITICAL_TEXT, Jet::BattlePopUps::CRITICAL_COLOR)
 
 
-                 elsif @battler.result.missed
 
 
-                   make_popup(Jet::BattlePopUps::MISSED_TEXT, Jet::BattlePopUps::MISS_COLOR)
 
 
-                 elsif @battler.result.evaded
 
 
-                   make_popup(Jet::BattlePopUps::EVADED_TEXT, Jet::BattlePopUps::EVADE_COLOR)
 
 
-                 end
 
 
-                 @battler.result.clear_hit_flags
 
 
-           end
 
 
-         end
 
 
-   
-         def check_hp_popup
 
 
-           if @battler_struct.hp != @battler.hp
 
 
-                 f = @battler_struct.hp - @battler.hp
 
 
-                 if f > 0
 
 
-                   make_popup(Jet::BattlePopUps::HURT_TEXT + f.to_s, Jet::BattlePopUps::HURT_COLOR)
 
 
-                 elsif f < 0
 
 
-                   make_popup(Jet::BattlePopUps::HEAL_TEXT + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR)
 
 
-                 end
 
 
-                 @battler_struct.hp = @battler.hp
 
 
-           end
 
 
-         end
 
 
-   
-         def check_mp_popup
 
 
-           if @battler_struct.mp != @battler.mp
 
 
-                 f = @battler_struct.mp - @battler.mp
 
 
-                 if f > 0
 
 
-                   make_popup(Jet::BattlePopUps::HURT_TEXT_MP + f.to_s, Jet::BattlePopUps::HURT_COLOR_MP)
 
 
-                 elsif f < 0
 
 
-                   make_popup(Jet::BattlePopUps::HEAL_TEXT_MP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_MP)
 
 
-                 end
 
 
-                 @battler_struct.mp = @battler.mp
 
 
-           end
 
 
-         end
 
 
-   
-         def check_tp_popup
 
 
-           if @battler_struct.tp != @battler.tp
 
 
-                 f = (@battler_struct.tp - @battler.tp).round
 
 
-                 if f > 0
 
 
-                   make_popup(Jet::BattlePopUps::HURT_TEXT_TP + f.to_s, Jet::BattlePopUps::HURT_COLOR_TP)
 
 
-                 elsif f < 0
 
 
-                   make_popup(Jet::BattlePopUps::HEAL_TEXT_TP + f.abs.to_s, Jet::BattlePopUps::HEAL_COLOR_TP)
 
 
-                 end
 
 
-                 @battler_struct.tp = @battler.tp
 
 
-           end
 
 
-         end
 
 
-   end
 
 
- end