RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Side-View Battle System

0 Members and 1 Guest are viewing this topic.

**
Rep: +0/-0Level 88
Hey, I need a Side-View Battle System. Now I know what you're all thinking, that I'm a n00b that can't use the search button. I need one that you DO need Battlers for, not one that requires NO battlers. Thanks,

*~Bloods teh Hedgie~*

*
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Rep:
Level 96
&&&&&&&&&&&&&&&&&&&&&&&&&&&
GIAW 14: 2nd Place (Hard Mode)2013 Biggest Drama Whore2013 Zero to HeroParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
THIS IS NOT BY ME, but I wish I could script...

[quote name='Guedez' date='Jan 12 2006, 03:03 PM' post='69916']
GCBS: Guedez's Custon Battle System Version: 1.5
Know Bugs:
None
Fixed Bugs:
-Command menu close when a monster attack
-You cant select a command whyle someone is attacking

Upgrade Log:
=====Version 1.0=====
-Added CT Bar
-Added a custon escape system
-Removed Defend command
-Added a test for enemy escape
-Added a easy text custumization system
=====Version 1.05=====
-Fixed a bug
=====Version 1.1=====
-Fixed a bug
-Added a new option: @less_xp
=====Version 1.5=====
-Improved Grafics
-Added Side View option

Instalation:
-Add this above Main and below all custon scripts
Code: [Select]
#----------------------------------------------------------------
#GCBS: Guedez's Custon Battle Sytem V1.5
#Thx to: Sepirothspawn511 and Minkoff
#Released in: 16 / 1 / 2006
#----------------------------------------------------------------

#===========================Usage================================
#Just add this script above Main:
#Conflicts: can happen with ANY script that modify Scene_Battle
#================================================================

#========================Customize===============================
#@less_xp: if true, before the battle end, the exp will be
#dividied by the party size before is given to each party member
#@success_escape_enemy_text: change the text that will appear in
#help window when the enemy escape
#@failed_escape_enemy_text: change the text that will appear in
#help window when the enemy fail to escape
#@failed_to_escape_text: change the text that will appear in
#help window when you fail escape
#@escape_text: change command name to trigger the escape flag
#@waiting_text: change the text that will appear in
#help window when the enemy is waiting
#@miss_text: change the text that will pop up when you miss
#================================================================
class Scene_Battle
 
  def main_customize
    @side_view = true
    @less_xp = true
    @success_escape_enemy_text = " escaped"
    @failed_escape_enemy_text = " failed to escape"
    @failed_to_escape_text = "Failed to escape"
    @escape_text = "Escape"
    @waiting_text = " is waiting"
    @miss_text = "Miss"
  end
   
  def main_uncustomize
    @escapeflag = false
    @aready_ended = false
    @phase4_active_battler = nil
    @waiting_unitys = []
    $game_temp.in_battle = true
  end
 
  def main_base
    if @side_view == true
      SDK.enable('Minkoffs Custom Battle System')
    else
      SDK.disable('Minkoffs Custom Battle System')
    end
    $game_temp.battle_turn = 0
    $game_temp.battle_event_flags.clear
    $game_temp.battle_abort = false
    $game_temp.battle_main_phase = false
    $game_temp.battleback_name = $game_map.battleback_name
    $game_temp.forcing_battler = nil
    $game_system.battle_interpreter.setup(nil, 0)
    @troop_id = $game_temp.battle_troop_id
    $game_troop.setup(@troop_id)
    $unity_by_itself = []
    for enemy in $game_troop.enemies
      $unity_by_itself.push(enemy)
    end
    for actor in $game_party.actors
      $unity_by_itself.push(actor)
    end
    $ctunits = []
    for i in 0...$unity_by_itself.size
      $ctunits[i] = 0
    end
  end
 
  def main_window
    s1 = $data_system.words.attack
    s2 = $data_system.words.skill
    s3 = $data_system.words.item
    s4 = @escape_text
    @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
    @actor_command_window.y = 160
    @actor_command_window.height = 160
    @actor_command_window.back_opacity = 160
    @actor_command_window.active = false
    @actor_command_window.visible = false
    @help_window = Window_Help.new
    @help_window.back_opacity = 160
    @help_window.visible = false
    if @side_view
      @atpandlimit_window = Window_Side_Ct.new
      @status_window = Window_Side_BattleStatus.new
    else
      @atpandlimit_window = Window_Ct.new
      @status_window = Window_BattleStatus.new
    end
    @message_window = Window_Message.new
    @spriteset = Spriteset_Battle.new
    @wait_count = 0
  end
 
  def main_transition
    if $data_system.battle_transition == ""
      Graphics.transition(20)
    else
      Graphics.transition(40, "Graphics/Transitions/" +
        $data_system.battle_transition)
    end
  end
 
  def main
    main_customize
    main_uncustomize
    main_base
    main_window
    main_transition
    start_phase1
    loop do
      Graphics.update
      Input.update
      main_update
      if $scene != self
        break
      end
    end
    $game_map.refresh
    Graphics.freeze
    main_dispose
  end
 
  def main_dispose
    @actor_command_window.dispose
    @help_window.dispose
    @status_window.dispose
    @message_window.dispose
    @atpandlimit_window.dispose
    if @skill_window != nil
      @skill_window.dispose
    end
    if @item_window != nil
      @item_window.dispose
    end
    if @result_window != nil
      @result_window.dispose
    end
    @spriteset.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
    if $BTEST and not $scene.is_a?(Scene_Gameover)
      $scene = nil
    end
  end
 
  def main_update
    unless @aready_ended or @side_view
      paralel_phase3_update
    end
    if @aready_ended and @actor_command_window.visible
      @actor_command_window.active = false
      @actor_command_window.visible = false
    end
    if $game_system.battle_interpreter.running?
      $game_system.battle_interpreter.update
      if $game_temp.forcing_battler == nil
        unless $game_system.battle_interpreter.running?
          unless judge
            setup_battle_event
          end
        end
        if @phase != 5
        end
      end
    end
    $game_system.update
    $game_screen.update
    if $game_system.timer_working and $game_system.timer == 0
      $game_temp.battle_abort = true
    end
    @help_window.update
    @message_window.update
    @spriteset.update
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    if $game_temp.message_window_showing
      return
    end
    if @spriteset.effect?
      return
    end
    if $game_temp.gameover
      $scene = Scene_Gameover.new
      return
    end
    if $game_temp.to_title
      $scene = Scene_Title.new
      return
    end
    if $game_temp.battle_abort
      $game_system.bgm_play($game_temp.map_bgm)
      battle_end(1)
      return
    end
    if @wait_count > 0
      @wait_count -= 1
      return
    end
    if $game_temp.forcing_battler == nil and
       $game_system.battle_interpreter.running?
      return
    end
    unless @aready_ended
      plus_atp
      search_for_enemy
      get_a_new_actor
    end
    case @phase
    when 1
      update_phase1
    when 2
      update_phase2
    when 3
      update_phase3
    when 4
      update_phase4
    when 5
      update_phase5
    end
  end
 
  def paralel_phase3_update
    if @phase != 3
      if @enemy_arrow != nil
        update_phase3_enemy_select
      elsif @actor_arrow != nil
        update_phase3_actor_select
      elsif @skill_window != nil
        update_phase3_skill_select
      elsif @item_window != nil
        update_phase3_item_select
      elsif @actor_command_window.active
        update_phase3_basic_command(@actor)
      end
    end
  end
#=========================Scene_battle2==========================
 
  def start_phase2
    @phase = 3
    @actor_index = -1
    @active_battler = nil
    @actor_command_window.active = false
    @actor_command_window.visible = false
    $game_temp.battle_main_phase = false
    $game_party.clear_actions
    unless $game_party.inputable?
      start_phase4
    end
  end
 
  def escape
    $game_party.clear_actions
    enemies_agi = 0
    enemies_number = 0
    for enemy in $game_troop.enemies
      if enemy.exist?
        enemies_agi += enemy.agi
        enemies_number += 1
      end
    end
    if enemies_number > 0
      enemies_agi /= enemies_number
    end
    actors_agi = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_agi += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_agi /= actors_number
    end
    success = rand(100) < 50 * actors_agi / enemies_agi
    if success
      $game_system.se_play($data_system.escape_se)
      $game_system.bgm_play($game_temp.map_bgm)
      battle_end(1)
    else
      $game_party.clear_actions
      @help_window.set_text(@failed_to_escape_text, 1)
      @wait_count = 55
    end
  end
 
#============================Scene_battle3=======================
  def start_phase3
    @phase = 3
    @actor_index = -1
    @active_battler = nil
    update_phase3
  end
 
  def phase3_setup_command_window
    $game_system.se_play($data_system.cursor_se)
    @actor_command_window.active = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
    @actor_command_window.x = 0
    case @actor.index
    when 0
      @actor_command_window.x = 0
    when 1
      @actor_command_window.x = 160
    when 2
      @actor_command_window.x = 320
    when 3
      @actor_command_window.x = 480
    end
    #@actor_command_window.x = 320 - (@actor_command_window.width / 2)
    @actor_command_window.index = 0
  end
 
  def actorcheck(actor)
    if actor.is_a?(Game_Actor)
      return true
    end
    return false
  end
 
  def search_for_actor
    if @escapeflag
      needed = 0
      number = 0
      for i in 0..$ctunits.size
        for actor in $game_party.actors
          if $unity_by_itself[i] == actor and
          $unity_by_itself[i].inputable?
            needed +=1
            if $ctunits[i] == 100
              number += 1
            end
          end
        end
      end
      if number >= needed
        escape
        @escapeflag = false
        for i in 0..$ctunits.size
          for actor in $game_party.actors
            if $unity_by_itself[i] == actor
              $ctunits[i] = 0
            end
          end
        end
      end
    else
      for i in 0..$ctunits.size
        if $ctunits[i] == 100
          unless @actor_command_window.active or
          actorcheck($unity_by_itself[i]) == false
            @actor = $unity_by_itself[i]
            phase3_setup_command_window
          return
          end
        end
      end
    end
  end
 
  def research_for_actor(actor)
    @last_actor = [] if @last_actor == nil
    @last_actor.push(actor)
    @actor_command_window.active == false
    for i in 0...$ctunits.size
      if $ctunits[i] == 100
        if actorcheck($unity_by_itself[i])
          unless @last_actor.include?($unity_by_itself[i])
            @actor = $unity_by_itself[i]
            phase3_setup_command_window
            update_phase3_basic_command(actor)
            return
          end
        end
      end
    end
    @last_actor = []
  end
 
  def plus_atp
    unless @enemy_arrow != nil or @actor_arrow != nil or
    @skill_window != nil or @item_window != nil
      if @help_window.visible == true
        @help_window.visible = false
      end
      for i in 0...$ctunits.size
        if $unity_by_itself[i] == nil
          $unity_by_itself.unshift($unity_by_itself[i])
          $unity_by_itself.delete($unity_by_itself[i])
          $ctunits.unshift($ctunits[i])
          $ctunits.delete($ctunits[i])
          return
        end
        unless $ctunits[i] >= 100
          if $unity_by_itself[i].is_a?(Game_Actor) and $unity_by_itself[i].inputable?
            $ctunits[i] = 0 if $ctunits[i] == nil
            $ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.25 unless
            $ctunits[i] == 100
            $ctunits[i] = 100 if $ctunits[i] > 100
          elsif not $unity_by_itself[i].is_a?(Game_Actor)
            if $unity_by_itself[i].hp > 0
              $ctunits[i] = 0 if $ctunits[i] == nil
              $ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.5 unless
              $ctunits[i] == 100
              $ctunits[i] = 100 if $ctunits[i] > 100
            end
          end
        end
      end
      unless @actor_command_window.active
        search_for_actor
      end
    end
    @atpandlimit_window.refresh
  end
 
  def update_phase3
    if @enemy_arrow != nil
      update_phase3_enemy_select
    elsif @actor_arrow != nil
      update_phase3_actor_select
    elsif @skill_window != nil
      update_phase3_skill_select
    elsif @item_window != nil
      update_phase3_item_select
    elsif @actor_command_window.active
      update_phase3_basic_command(@actor)
    end
  end
 
  def search_for_enemy
    for i in 0..$ctunits.size
      if $ctunits[i] != nil and $unity_by_itself[i].is_a?(Game_Enemy)
        if $ctunits[i] == 100
          $unity_by_itself[i].make_action
          start_phase4($unity_by_itself[i])
          $ctunits[i] = 0
          return
        end
      end
    end
  end
     
  def update_phase3_basic_command(actor)
    @active_battler = actor
    @active_battler.current_action.clear
    @actor_command_window.update
    if Input.trigger?(Input::B)
      loop do
        Input.update
        if Input.repeat?(Input::B) == false
          break
        end
      end
      @actor_command_window.active = false
      research_for_actor(@active_battler)
      return
    end
    if Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
        start_enemy_select
      when 1
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 1
        start_skill_select
      when 2
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 2
        start_item_select
      when 3
        @escapeflag = true
        @actor_command_window.visible = false
      end
      return
    end
  end
 
  def update_phase3_skill_select
    @skill_window.visible = true
    @skill_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_skill_select
      return
    end
    if Input.trigger?(Input::C)
      @skill = @skill_window.skill
      if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.skill_id = @skill.id
      @skill_window.visible = false
      if @skill.scope == 1
        start_enemy_select
      elsif @skill.scope == 3 or @skill.scope == 5
        start_actor_select
      else
        end_skill_select
      end
      return
    end
  end
 
  def update_phase3_item_select
    @item_window.visible = true
    @item_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_item_select
      return
    end
    if Input.trigger?(Input::C)
      @item = @item_window.item
      unless $game_party.item_can_use?(@item.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.item_id = @item.id
      @item_window.visible = false
      if @item.scope == 1
        start_enemy_select
      elsif @item.scope == 3 or @item.scope == 5
        start_actor_select
      else
        end_item_select
      end
      return
    end
  end
 
  def update_phase3_enemy_select
    @enemy_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_enemy_select
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.target_index = @enemy_arrow.index
      end_enemy_select
      if @skill_window != nil
        end_skill_select
      end
      if @item_window != nil
        end_item_select
      end
      start_phase4(@actor)
      for i in 0..$ctunits.size
        if $unity_by_itself[i] == @actor
          $ctunits[i] = 0
        end
      end
    end
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def update_phase3_actor_select
    @actor_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_actor_select
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.target_index = @actor_arrow.index
      end_actor_select
      if @skill_window != nil
        end_skill_select
      end
      if @item_window != nil
        end_item_select
      end
      start_phase4(@actor)
      for i in 0..$ctunits.size
        if $unity_by_itself[i] == @actor
          $ctunits[i] = 0
        end
      end
    end
    @actor_command_window.visible = false
    @actor_command_window.active = false
  end
 
  def start_enemy_select
    @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
    @enemy_arrow.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_enemy_select
    @enemy_arrow.dispose
    @enemy_arrow = nil
    if @actor_command_window.index == 0
      @actor_command_window.active = true
      @actor_command_window.visible = true
      @help_window.visible = false
    end
  end
 
  def start_actor_select
    @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
    @actor_arrow.index = @actor_index
    @actor_arrow.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_actor_select
    @actor_arrow.dispose
    @actor_arrow = nil
  end
 
  def start_skill_select
    @skill_window = Window_Skill.new(@active_battler)
    @skill_window.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_skill_select
    @skill_window.dispose
    @skill_window = nil
    @help_window.visible = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
 
  def start_item_select
    @item_window = Window_Item.new
    @item_window.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_item_select
    @item_window.dispose
    @item_window = nil
    @help_window.visible = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
#========================Scene_battle4===========================
  def start_phase4(actor)
    @phase = 4
    $game_temp.battle_turn += 1
    for index in 0...$data_troops[@troop_id].pages.size
      page = $data_troops[@troop_id].pages[index]
      if page.span == 1
        $game_temp.battle_event_flags[index] = false
      end
    end
    @actor_index = -1
    @waiting_unitys.push(actor)
  end
 
  def get_a_new_actor
    if @phase4_active_battler == nil
      for i in 0..@waiting_unitys.size
        if @waiting_unitys[i].is_a?(Game_Battler)
          @phase4_active_battler = @waiting_unitys[i]
          @waiting_unitys[i] = nil
          $game_temp.battle_main_phase = true
          @phase4_step = 1
          @using_actor = true
          return
        end
      end
      @phase = 3
      @waiting_unitys = []
    end
  end
 
  def update_phase4
    case @phase4_step
    when 1
      update_phase4_step1
    when 2
      update_phase4_step2
    when 3
      if @side_view
        update_phase4_step3(@phase4_active_battler)
      else
        update_phase4_step3
      end
    when 4
      if @side_view
        update_phase4_step4(@phase4_active_battler)
      else
        update_phase4_step4
      end
    when 5
      update_phase4_step5
    when 6
      update_phase4_step6
    end
  end
 
  def update_phase4_step1
    @help_window.visible = false
    if judge
      return
    end
    if $game_temp.forcing_battler == nil
      setup_battle_event
      if $game_system.battle_interpreter.running?
        return
      end
    end
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    if @phase4_active_battler.index == nil
      return
    end
    if @phase4_active_battler.hp > 0 and @phase4_active_battler.slip_damage?
      @phase4_active_battler.slip_damage_effect
      @phase4_active_battler.damage_pop = true
    end
    @phase4_active_battler.remove_states_auto
    @status_window.refresh
    @phase4_step = 2
  end
 
  def update_phase4_step2
    unless @phase4_active_battler.current_action.forcing
      if @phase4_active_battler.restriction == 2 or @phase4_active_battler.restriction == 3
        @phase4_active_battler.current_action.kind = 0
        @phase4_active_battler.current_action.basic = 0
      end
      if @phase4_active_battler.restriction == 4
        $game_temp.forcing_battler = nil
        @phase4_step = 1
        return
      end
    end
    @target_battlers = []
    case @phase4_active_battler.current_action.kind
    when 0
      make_basic_action_result
    when 1
      make_skill_action_result
    when 2
      make_item_action_result
    end
    if @phase4_step == 2
      @phase4_step = 3
    end
  end
 
  def make_basic_action_result
    if @phase4_active_battler.current_action.basic == 0
      @animation1_id = @phase4_active_battler.animation1_id
      @animation2_id = @phase4_active_battler.animation2_id
      if @phase4_active_battler.is_a?(Game_Enemy)
        if @phase4_active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @phase4_active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @phase4_active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      if @phase4_active_battler.is_a?(Game_Actor)
        if @phase4_active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @phase4_active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @phase4_active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      @target_battlers = [target]
      for target in @target_battlers
        target.attack_effect(@phase4_active_battler)
      end
      return
    end
    if @phase4_active_battler.current_action.basic == 1
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    if @phase4_active_battler.is_a?(Game_Enemy) and
    @phase4_active_battler.current_action.basic == 2
      if @phase4_active_battler.escape
        @help_window.set_text(@phase4_active_battler.name + @success_escape_enemy_text, 1)
      else
        @help_window.set_text(@phase4_active_battler.name + @failed_escape_enemy_text, 1)
      end
      @wait_count = 55
      @phase4_active_battler = nil
      return
    end
    if @phase4_active_battler.current_action.basic == 3
      @help_window.set_text(@phase4_active_battler.name + @waiting_text, 1)
      $game_temp.forcing_battler = nil
      @wait_count = 55
      @phase4_active_battler.current_action.clear
      @phase4_active_battler = nil
      if judge
        return
      end
      return
    end
  end
 
  def update_phase4_step3
    if @animation1_id == 0
      @phase4_active_battler.white_flash = true
    else
      @phase4_active_battler.animation_id = @animation1_id
      @phase4_active_battler.animation_hit = true
    end
    @phase4_step = 4
  end
 
  def update_phase4_step4
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != @miss_text)
    end
    @wait_count = 8
    @phase4_step = 5
  end
 
  def update_phase4_step5
    @help_window.visible = false
    @status_window.refresh
    for target in @target_battlers
      if target.damage != nil
        target.damage_pop = true
      end
    end
    @phase4_step = 6
  end
 
  def update_phase4_step6
    $game_temp.forcing_battler = nil
    if @common_event_id > 0
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
    end
    @phase4_active_battler.current_action.clear
    @phase4_active_battler = nil
    if judge
      return
    end
  end
#==========================Phase_5===============================
  def start_phase5
    @phase = 5
    $game_system.me_play($game_system.battle_end_me)
    $game_system.bgm_play($game_temp.map_bgm)
    exp = 0
    gold = 0
    treasures = []
    for enemy in $game_troop.enemies
      unless enemy.hidden
        exp += enemy.exp
        gold += enemy.gold
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
    if @less_xp == true
      exp /= $game_party.actors.size
    end
    treasures = treasures[0..5]
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        actor.exp += exp
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
    $game_party.gain_gold(gold)
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    @phase5_wait_count = 100
    @aready_ended = true
  end

end
#======================End_of_Scene_Battle=======================
class Window_Ct < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_x = i * 160 + 4
      for i in 0..$unity_by_itself.size
        if $unity_by_itself[i] == actor
          actornumber = i
        end
      end
      atp_gaugue = $ctunits[actornumber] * 6 / 10
      draw_actor_limit(actor,actor_x, 74,60)
      draw_bar_beginner(actor_x + 68, 74 , atp_gaugue, 0, 60, 24,
        bar_color = Color.new(0, 255, 255, 255))
    end
  end
 
  def update
    super
  end
end

class Window_Side_Ct < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_y = i * 32
      draw_actor_limit(actor,470,actor_y,64)
      for i in 0..$unity_by_itself.size
        if $unity_by_itself[i] == actor
          actornumber = i
        end
      end
      atp_gaugue = $ctunits[actornumber] * 64 / 100
      draw_bar_beginner(544, actor_y + 4, atp_gaugue, 0, 64, 24,
        bar_color = Color.new(0, 255, 255, 255))
    end
  end
 
  def update
    super
  end
end

class Window_BattleStatus < Window_Base
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_x = i * 160 + 4
      draw_actor_name(actor, actor_x, -8)
      draw_actor_hp(actor, actor_x, 20, 120)
      draw_actor_sp(actor, actor_x, 48, 120)
      if @level_up_flags[i]
        self.contents.font.color = normal_color
        self.contents.draw_text(actor_x + 30, 100, 120, 32, "Nível Acima!")
      else
        draw_actor_state(actor, actor_x + 30, 100)
      end
    end
  end

end
class Window_Side_BattleStatus < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_y = i * 32
      draw_actor_name(actor, 0, actor_y)
      draw_actor_hp(actor, 128, actor_y, 128)
      draw_actor_sp(actor, 260, actor_y, 128)
      if @level_up_flags[i]
        self.contents.font.color = normal_color
        self.contents.draw_text(actor, 392, actor_y, 32, "Nível Acima!")
      else
        draw_actor_state(actor, 392 , actor_y)
      end
    end
  end

  def update
    super
    if $game_temp.battle_main_phase
      self.contents_opacity -= 4 if self.contents_opacity > 191
    else
      self.contents_opacity += 4 if self.contents_opacity < 255
    end
  end
end

#=========================Window_Base============================
class Window_Base
  def draw_actor_hp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(x + 24, y, 48, 32, actor.hp.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 84, y, 48, 32, actor.maxhp.to_s)
  end
 
  def draw_actor_sp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(x + 24, y, 48, 32, actor.sp.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 84, y, 48, 32, actor.maxsp.to_s)
  end

  def draw_actor_limit(actor, x, y, width)
    midbar = x + (width/2 - width/4)
    self.contents.draw_text(midbar, y, width, 32, "")
  end
  #--------------------------------------------------------------------------
  # Draw Bar (Beginner) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_bar_beginner(x, y, porcentage, max, width, height,
    bar_color = Color.new(150, 0, 0, 255) )
    # Draws Background
    self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
    # Draw Bar
    self.contents.fill_rect(x + 1, y + 1, porcentage - 2, height - 2, bar_color)
  end

  #--------------------------------------------------------------------------
  # Draw Bar (Intermediate) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_bar_intermediate(x, y, min, max, width = 152, height = 6,
      bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
    # Draw Background
    self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
    # Draws Bar
    for i in 1..( (min / max) * width -1)
      r = bar_color.red * (width - i) / width + end_color.red * i / width
      g = bar_color.green * (width - i) / width + end_color.green * i / width
      b = bar_color.blue * (width - i) / width + end_color.blue * i / width
      a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
      self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2, Color.new(r, g, b, a))
    end
  end
  #--------------------------------------------------------------------------
  # Draw Slant Bar (Advanced) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_slant_bar_advanced(x, y, min, max, width = 152, height = 6,
      bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
    # Draw Border
    for i in 0..height
      self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
    end
    # Draw Background
    for i in 1..(height - 1)
      r = 100 * (height - i) / height + 0 * i / height
      g = 100 * (height - i) / height + 0 * i / height
      b = 100 * (height - i) / height + 0 * i / height
      a = 255 * (height - i) / height + 255 * i / height
      self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
    end
    # Draws Bar
    for i in 1..( (min / max) * width - 1)
      for j in 1..(height - 1)
        r = bar_color.red * (width - i) / width + end_color.red * i / width
        g = bar_color.green * (width - i) / width + end_color.green * i / width
        b = bar_color.blue * (width - i) / width + end_color.blue * i / width
        a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
        self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
      end
    end
  end
end
#============================Game_Enemy==========================
class Game_Enemy < Game_Battler
 
  def escape
    self.current_action.clear
    enemies_agi = self.agi
    actors_agi = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_agi += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_agi /= actors_number
    end
    success = rand(100) < 50 * enemies_agi / actors_agi
    if success
      @hidden = true   
    else
      return false
    end
  end
end
-if you want to use side view you will need this above Main and BELOW GCBS
[attachmentid=1855]



Demo:
[attachmentid=1853]



Screens:
-Side View:
[attachmentid=1856]
-Normal Mode:
[attachmentid=1857]

Note: for side view you will need new sprites, and you will need to give the weapons EX:
[attachmentid=1852]
1: Standing Position: All the time that he is not making anything
2: Damage Position: Every time he recive damage
3: Dead Position: Not yet tested, i think when he is dead
4: Dunno Position: I think when he is afected by Status (maybe positive too)
5: Moving Position: Moving left
6: Moving Position: Moving right
7: Attacking 1 Position: When he attack
8: Attacking 2 Position: Dunno
9: Skill Using Position: Maybe itens too
10: Win Position: Will not repeat

To make your battle sprites you can go to Chara-Project where you can use theyr generator (need to adapt the image and add a weapon)
[/quote]
&&&&&&&&&&&&&&&&

**
Rep: +0/-0Level 88
~Genma
Wow, thats really great! Is there an in depth guide on how to use it somewhere? I mean...i know a entry level amount of coding...but sheezus, most of that is greek to me. For instance, how would a sprite sheet to be used for that battle system be set up, how would it know which sheet to use, what do i import them as, important things like that. Awesome script, though! thanks for putting it up!

(does guedez have a site or profile somewhere where one can contact him?)
~Django
"What a terible night to have a curse..."

**
Rep: +0/-0Level 88
~Genma
Also, when i tried running it the first time in XP after pasting it into my scripts, it came up with this messege when the first battle occured:

????? 'Custom Battle System ???? NameError ????? uninitialized constant Scene_Battle;;SDK

...yeeeaaaah...about the only part of that i understood was "custom battle system", as thats what i named the script. Am i just doing something wrong here, or is this a bug in the script? Any advice or help would rock, as i cant wait to try out the system.
Thanks!
~Django
"What a terible night to have a curse..."

**
Rep:
Level 88
I have this Side View battle system, not made by me, unsure who created it :(
[code]  class Bitmap
if not method_defined?('original_draw_text')
 alias original_draw_text draw_text
 def draw_text(*arg)

   original_color = self.font.color.dup
   self.font.color = Color.new(0, 0, 0, 128)

   if arg[0].is_a?(Rect)
     arg[0].x += 2
     arg[0].y += 2
     self.original_draw_text(*arg)
     arg[0].x -= 2
     arg[0].y -= 2
   else
     arg[0] += 2
     arg[1] += 2
     self.original_draw_text(*arg)
     arg[0] -= 2
     arg[1] -= 2
   end

   self.font.color = original_color
   self.original_draw_text(*arg)

 end
end
def gradation_rect(x, y, width, height, color1, color2, align = 0)
 if align == 0
   for i in x...x + width
     red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
     green = color1.green +
             (color2.green - color1.green) * (i - x) / (width - 1)
     blue  = color1.blue +
             (color2.blue - color1.blue) * (i - x) / (width - 1)
     alpha = color1.alpha +
             (color2.alpha - color1.alpha) * (i - x) / (width - 1)
     color = Color.new(red, green, blue, alpha)
     fill_rect(i, y, 1, height, color)
   end
 elsif align == 1
   for i in y...y + height
     red   = color1.red +
             (color2.red - color1.red) * (i - y) / (height - 1)
     green = color1.green +
             (color2.green - color1.green) * (i - y) / (height - 1)
     blue  = color1.blue +
             (color2.blue - color1.blue) * (i - y) / (height - 1)
     alpha = color1.alpha +
             (color2.alpha - color1.alpha) * (i - y) / (height - 1)
     color = Color.new(red, green, blue, alpha)
     fill_rect(x, i, width, 1, color)
   end
 elsif align == 2
   for i in x...x + width
     for j in y...y + height
       red   = color1.red + (color2.red - color1.red) *
               ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       green = color1.green + (color2.green - color1.green) *
               ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       blue  = color1.blue + (color2.blue - color1.blue) *
               ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       alpha = color1.alpha + (color2.alpha - color1.alpha) *
               ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       color = Color.new(red, green, blue, alpha)
       set_pixel(i, j, color)
     end
   end
 elsif align == 3
   for i in x...x + width
     for j in y...y + height
       red   = color1.red + (color2.red - color1.red) *
             ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       green = color1.green + (color2.green - color1.green) *
             ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       blue  = color1.blue + (color2.blue - color1.blue) *
             ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       alpha = color1.alpha + (color2.alpha - color1.alpha) *
             ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
       color = Color.new(red, green, blue, alpha)
       set_pixel(i, j, color)
     end
   end
 end
end
end

module RPG
class Sprite < ::Sprite
 def damage(value, critical)
   dispose_damage
   if value.is_a?(Numeric)
     damage_string = value.abs.to_s
   else
     damage_string = value.to_s
   end
   bitmap = Bitmap.new(160, 48)
   bitmap.font.name = "Arial Black"
   bitmap.font.size = 32
   bitmap.font.color.set(0, 0, 0)
   bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
   bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
   bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
   bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
   if value.is_a?(Numeric) and value < 0
     bitmap.font.color.set(176, 255, 144)
   else
     bitmap.font.color.set(255, 255, 255)
   end
   bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
   if critical
     bitmap.font.size = 20
     bitmap.font.color.set(0, 0, 0)
     bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
     bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
     bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
     bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
     bitmap.font.color.set(255, 255, 255)
     bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
   end
   @_damage_sprite = ::Sprite.new
   @_damage_sprite.bitmap = bitmap
   @_damage_sprite.ox = 80 + self.viewport.ox
   @_damage_sprite.oy = 20 + self.viewport.oy
   @_damage_sprite.x = self.x + self.viewport.rect.x
   @_damage_sprite.y = self.y - self.oy / 2 + self.viewport.rect.y
   @_damage_sprite.z = 3000
   @_damage_duration = 40
 end
 def animation(animation, hit)
   dispose_animation
   @_animation = animation
   return if @_animation == nil
   @_animation_hit = hit
   @_animation_duration = @_animation.frame_max
   animation_name = @_animation.animation_name
   animation_hue = @_animation.animation_hue
   bitmap = RPG::Cache.animation(animation_name, animation_hue)
   if @@_reference_count.include?(bitmap)
     @@_reference_count[bitmap] += 1
   else
     @@_reference_count[bitmap] = 1
   end
   @_animation_sprites = []
   if @_animation.position != 3 or not @@_animations.include?(animation)
     for i in 0..15
       sprite = ::Sprite.new
       sprite.bitmap = bitmap
       sprite.visible = false
       @_animation_sprites.push(sprite)
     end
     unless @@_animations.include?(animation)
       @@_animations.push(animation)
     end
   end
   update_animation
 end
 def loop_animation(animation)
   return if animation == @_loop_animation
   dispose_loop_animation
   @_loop_animation = animation
   return if @_loop_animation == nil
   @_loop_animation_index = 0
   animation_name = @_loop_animation.animation_name
   animation_hue = @_loop_animation.animation_hue
   bitmap = RPG::Cache.animation(animation_name, animation_hue)
   if @@_reference_count.include?(bitmap)
     @@_reference_count[bitmap] += 1
   else
     @@_reference_count[bitmap] = 1
   end
   @_loop_animation_sprites = []
   for i in 0..15
     sprite = ::Sprite.new
     sprite.bitmap = bitmap
     sprite.visible = false
     @_loop_animation_sprites.push(sprite)
   end
   update_loop_animation
 end
 def animation_set_sprites(sprites, cell_data, position)
   for i in 0..15
     sprite = sprites
     pattern = cell_data[i, 0]
     if sprite == nil or pattern == nil or pattern == -1
       sprite.visible = false if sprite != nil
       next
     end
     sprite.visible = true
     sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
     if position == 3
       if self.viewport != nil
         sprite.x = self.viewport.rect.width / 2
         sprite.y = self.viewport.rect.height - 160
       else
         sprite.x = 320
         sprite.y = 240
       end
     else
       sprite.x = self.x + self.viewport.rect.x -
                   self.ox + self.src_rect.width / 2
       sprite.y = self.y + self.viewport.rect.y -
                   self.oy + self.src_rect.height / 2
       sprite.y -= self.src_rect.height / 4 if position == 0
       sprite.y += self.src_rect.height / 4 if position == 2
     end
     sprite.x += cell_data[i, 1]
     sprite.y += cell_data[i, 2]
     sprite.z = 2000
     sprite.ox = 96
     sprite.oy = 96
     sprite.zoom_x = cell_data[i, 3] / 100.0
     sprite.zoom_y = cell_data[i, 3] / 100.0
     sprite.angle = cell_data[i, 4]
     sprite.mirror = (cell_data[i, 5] == 1)
     sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
     sprite.blend_type = cell_data[i, 7]
   end
 end
end
end

class Game_Actor < Game_Battler
 def screen_x
   if self.index != nil
   n_split = [($game_party.actors.length * 0.5).ceil, 4].min
   case n_split
   when 1
     n_index = self.index * 2
   when 2
     if self.index < ($game_party.actors.length - 2)
       n_index = 0.5 + (2 * self.index)
     else
       if $game_party.actors.length == 3 then
         n_index = (self.index * 2) + 2
       elsif $game_party.actors.length == 4 then
         n_index = self.index * 2
       end
     end
   when 3
       n_index = self.index + (0.25 * (self.index + 1))
     if $game_party.actors.length == 5
     if self.index < 2
       n_index = self.index + (0.25 * (self.index + 1))
     else
       n_index = self.index + (0.25 * (self.index + 2)) + 1
     end
     end
   when 4
     n_index = self.index
     if $game_party.actors.length == 7
     if self.index < 3
       n_index = self.index
     else
       n_index = self.index + 1
     end
     end
   end
     return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) / 5) + 480 + ((n_index / 4).floor * 60)
   else
     return 0
   end
 end
 #--------------------------------------------------------------------------
 # ? ????? Y ?????
 #--------------------------------------------------------------------------
 def screen_y
   n_split = [($game_party.actors.length * 0.5).ceil, 4].min
   case n_split
   when 1
     n_index = self.index * 2
   when 2
     if self.index < ($game_party.actors.length - 2)
       n_index = 0.5 + (2 * self.index)
     else
       if $game_party.actors.length == 3 then
         n_index = (self.index * 2) + 2
       elsif $game_party.actors.length == 4 then
         n_index = self.index * 2
       end
     end
   when 3
       n_index = self.index + (0.25 * (self.index + 1))
     if $game_party.actors.length == 5
     if self.index < 2
       n_index = self.index + (0.25 * (self.index + 1))
     else
       n_index = self.index + (0.25 * (self.index + 2)) + 1
     end
     end
   when 4
     n_index = self.index
     if $game_party.actors.length == 7
     if self.index < 3
       n_index = self.index
     else
       n_index = self.index + 1
     end
     end
   end
   return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
end
 #--------------------------------------------------------------------------
 # ? ????? Z ?????
 #--------------------------------------------------------------------------
 def screen_z
   # ??????????? Z ?????????
   if self.index != nil
     return self.index
   else
     return 0
   end
 end
end

class Game_Enemy < Game_Battler
 def screen_x
   n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
   case n_split
   when 1
     n_index = self.index * 2
   when 2
     if self.index < ($game_troop.enemies.length - 2)
       n_index = 0.5 + (2 * self.index)
     else
       if $game_troop.enemies.length == 3 then
         n_index = (self.index * 2) + 2
       elsif $game_troop.enemies.length == 4 then
         n_index = self.index * 2
       end
     end
   when 3
       n_index = self.index + (0.25 * (self.index + 1))
     if $game_troop.enemies.length == 5
     if self.index < 2
       n_index = self.index + (0.25 * (self.index + 1))
     else
       n_index = self.index + (0.25 * (self.index + 2)) + 2
     end
     end
   when 4
     n_index = self.index
     if $game_troop.enemies.length == 7
     if self.index < 3
       n_index = self.index
     else
       n_index = self.index + 1
     end
     end
   end
   return (n_index - ((n_index / 4).floor) * 4) * ((-160 / (4)) / 5) + 160 - ((n_index / 4).floor * 60)
 end
 #--------------------------------------------------------------------------
 # ? ????? Y ?????
 #--------------------------------------------------------------------------
 def screen_y
   n_split = [($game_troop.enemies.length * 0.5).ceil, 4].min
   case n_split
   when 1
     n_index = self.index * 2
   when 2
     if self.index < ($game_troop.enemies.length - 2)
       n_index = 0.5 + (2 * self.index)
     else
       if $game_troop.enemies.length == 3 then
         n_index = (self.index * 2) + 2
       elsif $game_troop.enemies.length == 4 then
         n_index = self.index * 2
       end
     end
   when 3
       n_index = self.index + (0.25 * (self.index + 1))
     if $game_troop.enemies.length == 5
     if self.index < 2
       n_index = self.index + (0.25 * (self.index + 1))
     else
       n_index = self.index + (0.25 * (self.index + 2)) + 1
     end
     end
   when 4
     n_index = self.index
     if $game_troop.enemies.length == 7
     if self.index < 3
       n_index = self.index
     else
       n_index = self.index + 1
     end
     end
   end
   return (n_index - ((n_index / 4).floor) * 4) * ((160 / (4)) * 1.6) + 270 - ((n_index / 4).floor * (110 - (4 * 20)))
 end
 #--------------------------------------------------------------------------
 # ? ????? Z ?????
 #--------------------------------------------------------------------------
 def screen_z
   return @member_index + 1
 end
end

#==============================================================================
# ¦ Sprite_Battler
#------------------------------------------------------------------------------
????????????????Game_Battler ???????????????
# ????????????????????
#==============================================================================

class Sprite_Battler < RPG::Sprite
 #--------------------------------------------------------------------------
 # ? ??????????
 #--------------------------------------------------------------------------
 attr_accessor :battler                  # ????
 attr_accessor :moving        # Is the sprite moving?
 attr_reader   :index
 attr_accessor :target_index
 attr_accessor :direction
 attr_accessor :pattern
 #--------------------------------------------------------------------------
 # ? ?????????
 #     viewport : ??????
 #     battler  : ???? (Game_Battler)
 #--------------------------------------------------------------------------
 def initialize(viewport, battler = nil)
   super(viewport)
   change
   @old = Graphics.frame_count  # For the delay method
   @goingup = true    # Increasing animation? (if @rm2k_mode is true)
   @once = false      # Is the animation only played once?
   @animated = true   # Used to stop animation when @once is true
   self.opacity = 0
   @index = 0
   @pattern_b = 0
   @counter_b = 0
   @trans_sprite = Sprite.new
   @trans_sprite.opacity = 0
   @bar_hp_sprite = Sprite.new
   @bar_hp_sprite.bitmap = Bitmap.new(64, 10)
   @bar_sp_sprite = Sprite.new
   @bar_sp_sprite.bitmap = Bitmap.new(64, 10)
   @color1 = Color.new(0, 0, 0, 192)
   @color2 = Color.new(255, 255, 192, 192)
   @color3 = Color.new(0, 0, 0, 192)
   @color4 = Color.new(64, 0, 0, 192)
   @old_hp = -1
   @old_sp = -1
   @battler = battler
   @battler_visible = false
   @first = true
   @pattern = 0
   if $target_index == nil
     $target_index = 0
   end
   @battler.is_a?(Game_Enemy) ? enemy_pose(0, 1) : pose(0, 1)
 end
 #--------------------------------------------------------------------------
 # ? ??
 #--------------------------------------------------------------------------
 def dispose
   if self.bitmap != nil
     self.bitmap.dispose
   end
   if @trans_sprite.bitmap != nil
     @trans_sprite.bitmap.dispose
   end
   @trans_sprite.dispose
   @bar_hp_sprite.bitmap.dispose
   @bar_hp_sprite.dispose
   @bar_sp_sprite.bitmap.dispose
   @bar_sp_sprite.dispose
   super
 end
 
 def change(frames = 0, delay = 0, offx = 0, offy = 0, startf = 0, once = false)
   @frames = frames
   @delay = delay
   @offset_x, @offset_y = offx, offy
   @current_frame = startf
   @once = once
   @goingup = true
   @animated = true
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def update
   bar_check = true if @_damage_duration == 1
   super
   @trans_sprite.blend_type = self.blend_type
   @trans_sprite.color = self.color
   if @_collapse_duration > 0
     @trans_sprite.opacity = self.opacity
   else
     @trans_sprite.opacity = [self.opacity, 160].min
   end
   if (@_damage_duration == 0 and bar_check == true) or @first == true
     @first = false if @first == true
     bar_check = false
     @bar_must_change = true
   end
   @bar_hp_sprite.opacity = self.opacity
   @bar_sp_sprite.opacity = self.opacity
   # ????? nil ???
   if @battler == nil
     self.bitmap = nil
     @trans_sprite.bitmap = nil
     loop_animation(nil)
     return
   end
   # ????????????????????
   if @battler.battler_name != @battler_name or
      @battler.battler_hue != @battler_hue
     # ????????????
     @battler_name = @battler.battler_name
     @battler_hue = @battler.battler_hue
     if @battler.is_a?(Game_Actor)
       @battler_name = @battler.character_name
       @battler_hue = @battler.character_hue
       @direction = 4
     else
       @direction = 6
     end
       self.bitmap = RPG::Cache.character(@battler_name, @battler_hue)
       @width = bitmap.width / 4
       @height = bitmap.height / 4
       @frame_width = @width
       @frame_height = @height
       self.ox = @width / 2
       self.oy = @height
       @pattern = @current_frame
       @direction = @offset_y
       sx = @pattern * @width
       sy = (@direction - 2) / 2 * @height
       self.src_rect.set(sx, sy, @width, @height)
       @current_frame = (@current_frame + 1) unless @frames == 0
       @animated = false if @current_frame == @frames and @once
       @current_frame %= @frames
       @trans_sprite.bitmap = self.bitmap
       @trans_sprite.ox = self.ox
       @trans_sprite.oy = self.oy
       @trans_sprite.src_rect.set(sx, sy, @width, @height)
     # ?????????????????? 0 ???
     if @battler.dead? or @battler.hidden
       self.opacity = 0
       @trans_sprite.opacity = 0
       @bar_hp_sprite.opacity = 0
       @bar_sp_sprite.opacity = 0
     end
   self.x = @battler.screen_x
   self.y = @battler.screen_y
   self.z = @battler.screen_z
 end
 change_sp_bar if @old_sp != @battler.sp
 if delay(@delay) and @animated
     @pattern = @current_frame
     @direction = @offset_y
     sx = @pattern * @width
     sy = (@direction - 2) / 2 * @height
     self.src_rect.set(sx, sy, @width, @height)
     @current_frame = (@current_frame + 1) unless @frames == 0
     @animated = false if @current_frame == @frames and @once
     @current_frame %= @frames
     @trans_sprite.ox = self.ox
     @trans_sprite.oy = self.oy
     @trans_sprite.src_rect.set(sx, sy, @width, @height)
   end
   # ??????? ID ????????????
   if @battler.damage == nil and
      @battler.state_animation_id != @state_animation_id
     @state_animation_id = @battler.state_animation_id
     loop_animation($data_animations[@state_animation_id])
   end
   # ??????????????
   #if @battler.is_a?(Game_Actor) and @battler_visible
     # ???????????????????????
     #if $game_temp.battle_main_phase
       #self.opacity += 3 if self.opacity < 255
     #else
       #self.opacity -= 3 if self.opacity > 207
     #end
   #end
   # ??
   if @battler.blink
     blink_on
   else
     blink_off
   end
   # ??????
   unless @battler_visible
     # ??
     if not @battler.hidden and not @battler.dead? and
        (@battler.damage == nil or @battler.damage_pop)
       appear
       @battler_visible = true
     end
   end
   # ?????
   if @battler_visible
     # ??
     if @battler.hidden
       $game_system.se_play($data_system.escape_se)
       escape
       @trans_sprite.opacity = 0
       @battler_visible = false
     end
     # ??????
     if @battler.white_flash
       whiten
       @battler.white_flash = false
     end
     # ???????
     if @battler.animation_id != 0
       animation = $data_animations[@battler.animation_id]
       animation(animation, @battler.animation_hit)
       @battler.animation_id = 0
     end
     # ????
     if @battler.damage_pop
       damage(@battler.damage, @battler.critical)
       @battler.damage = nil
       @battler.critical = false
       @battler.damage_pop = false
     end
     if @bar_must_change == true
       @bar_must_change = false
       if @old_hp != @battler.hp
         change_hp_bar
       end
       if @battler.damage == nil and @battler.dead?
         if @battler.is_a?(Game_Enemy)
           $game_system.se_play($data_system.enemy_collapse_se)
         else
           $game_system.se_play($data_system.actor_collapse_se)
         end
         collapse
         @battler_visible = false
       end
     end
   end
   # ???????????
   @trans_sprite.x = self.x
   @trans_sprite.y = self.y
   @trans_sprite.z = self.z
   @bar_hp_sprite.x = @battler.screen_x - 32
   @bar_hp_sprite.y = @battler.screen_y - (@height +18) if @height != nil
   @bar_hp_sprite.z = 100
   @bar_sp_sprite.x = @battler.screen_x - 32
   @bar_sp_sprite.y = @battler.screen_y - (@height + 8) if @height != nil
   @bar_sp_sprite.z = 100
 end
 
 #--------------------------------------------------------------------------
 # - Move the sprite
 #   x : X coordinate of the destination point
 #   y : Y coordinate of the destination point
 #   speed : Speed of movement (0 = delayed, 1+ = faster)
 #   delay : Movement delay if speed is at 0
 #--------------------------------------------------------------------------
 def move(x, y, speed = 1, delay = 0)
   @destx = x
   @desty = y
   @move_speed = speed
   @move_delay = delay
   @move_old = Graphics.frame_count
   @moving = true
 end
 
 #--------------------------------------------------------------------------
 # - Move sprite to destx and desty
 #--------------------------------------------------------------------------
 def update_move
   return unless @moving
   movinc = @move_speed == 0 ? 1 : @move_speed
   if Graphics.frame_count - @move_old > @move_delay or @move_speed != 0
     self.x += movinc if self.x < @destx
     self.x -= movinc if self.x > @destx
     self.y += movinc if self.y < @desty
     self.y -= movinc if self.y > @desty
     @move_old = Graphics.frame_count
   end
   if @move_speed > 1  # Check if sprite can't reach that point
     self.x = @destx if (@destx - self.x).abs % @move_speed != 0 and
                        (@destx - self.x).abs <= @move_speed
     self.y = @desty if (@desty - self.y).abs % @move_speed != 0 and
                        (@desty - self.y).abs <= @move_speed
   end
   if self.x == @destx and self.y == @desty
     @moving = false
   end
 end
 
 #--------------------------------------------------------------------------
 # - Pause animation, but still updates movement
 #   frames : Number of frames
 #--------------------------------------------------------------------------
 def delay(frames)
   update_move
   if (Graphics.frame_count - @old >= frames)
     @old = Graphics.frame_count
     return true
   end
   return false
 end
 
 def change_hp_bar
   j = false
  @old_hp = @battler.hp if @old_hp == -1
   i = @old_hp
   loop do
     i -= 10
     if i < @battler.hp
       i = @battler.hp
       j = true
     end
     rate = i.to_f / @battler.maxhp
     @color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
     @color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
     @bar_hp_sprite.bitmap.clear
     @bar_hp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
     @bar_hp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
     @bar_hp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
     #@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
     @bar_hp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color5, @color6, 2)
     #@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
     @bar_hp_sprite.opacity = self.opacity
     Graphics.update
     if j == true
       j = false
       break
     end
   end
   @old_hp = @battler.hp
 end
 
 def change_sp_bar
   j = false
  @old_sp = @battler.sp if @old_sp == -1
   i = @old_sp
   loop do
     i -= 10
     if i < @battler.sp
       i = @battler.sp
       j = true
     end
     rate = i.to_f / @battler.maxsp
     @color7 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
     @color8 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
     @bar_sp_sprite.bitmap.clear
     @bar_sp_sprite.bitmap.fill_rect(0, 0, 64, 10, @color1)
     @bar_sp_sprite.bitmap.fill_rect(1, 1, 62, 8, @color2)
     @bar_sp_sprite.bitmap.gradation_rect(2, 2, 60, 6, @color3, @color4, 1)
     #@bar_hp_sprite.bitmap.fill_rect(2, 2, 60, 6, @color3)
     @bar_sp_sprite.bitmap.gradation_rect(2, 2, 64 * rate - 4, 6, @color7, @color8, 0)
     #@bar_hp_sprite.bitmap.fill_rect(2, 2, 64 * rate - 4, 6, @color5)
     @bar_sp_sprite.opacity = self.opacity
     Graphics.update
     if j == true
       j = false
       break
     end
   end
   @old_sp = @battler.sp
 end
 
 def enemy                                             #
   $target_index += $game_troop.enemies.size
   $target_index %= $game_troop.enemies.size
   return $game_troop.enemies[$target_index]           #
 end                                                   #
 
 def actor                                             #
   $target_index += $game_party.actors.size
   $target_index %= $game_party.actors.size
   return $game_party.actors[$target_index]            #
 end
 
 def index=(index)
   @index = index
   update
 end
 
   def pose(number, frames = 4)
   case number
   when 0
     change(frames, 4, 0, 4, 0)
   when 1
     change(frames, 4, 0, 4)
   when 2
     change(frames, 4, 0, 6)
   else
     change(frames, 4, 0, 0, 0)
   end
 end
 
   def enemy_pose(number ,enemy_frames = 4)
   case number
   when 0
     change(enemy_frames, 4, 0, 6, 0)
   when 1
     change(enemy_frames, 4, 0, 4)
   when 2
     change(enemy_frames, 4, 0, 6)
   else
     change(enemy_frames, 4, 0, 0, 0)
   end
 end
 
 def default_pose
   pose(0, 1)
 end
end

#==============================================================================
# ¦ Spriteset_Battle
#------------------------------------------------------------------------------
???????????????????????????? Scene_Battle ??
# ????????????
#==============================================================================

class Spriteset_Battle
 #--------------------------------------------------------------------------
 # ? ??????????
 #--------------------------------------------------------------------------
 attr_reader   :viewport1                # ????????????
 attr_reader   :viewport2                # ????????????
 attr_accessor :actor_sprites
 attr_accessor :enemy_sprites
 #--------------------------------------------------------------------------
 # ? ?????????
 #--------------------------------------------------------------------------
 def initialize
   # ?????????
   @viewport1 = Viewport.new(0, 0, 640, 480)
   @viewport2 = Viewport.new(0, 0, 640, 480)
   @viewport3 = Viewport.new(0, 0, 640, 480)
   @viewport4 = Viewport.new(0, 0, 640, 480)
   @viewport2.z = 101
   @viewport3.z = 200
   @viewport4.z = 5000
   if $game_temp.battleback_name == ""
   @battleback_sprite = nil
   @tilemap = Tilemap.new(@viewport1)
   @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
   for i in 0..6
     autotile_name = $game_map.autotile_names
     @tilemap.autotiles = RPG::Cache.autotile(autotile_name)
   end
   @tilemap.map_data = $game_map.data
   @tilemap.priorities = $game_map.priorities
   else
   # ??????????????
   @tilemap = nil
   @battleback_sprite = Sprite.new(@viewport1)
   end
   # ????????????
   @enemy_sprites = []
   for enemy in $game_troop.enemies#.reverse
     @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
   end
   # ????????????
   @actor_sprites = []
   for j in 0..7
       # ƒAƒNƒ^[ƒXƒvƒ‰ƒCƒg‚ð’ljÁ
       @actor_sprites.push(Sprite_Battler.new(@viewport1, $game_party.actors[j]))
   end
   # ?????
   @weather = RPG::Weather.new(@viewport1)
   # ????????????
   @picture_sprites = []
   for i in 51..100
     @picture_sprites.push(Sprite_Picture.new(@viewport3,
       $game_screen.pictures))
   end
   # ????????????
   @timer_sprite = Sprite_Timer.new
   # ??????
   update
 end
 #--------------------------------------------------------------------------
 # ? ??
 #--------------------------------------------------------------------------
 def dispose
   if @tilemap != nil
   # ?????????
   @tilemap.tileset.dispose
   for i in 0..6
     @tilemap.autotiles.dispose
   end
   @tilemap.dispose
   end
   # ??????????????
   if @battleback_sprite != nil
   # ??????????????????????
   if @battleback_sprite.bitmap != nil
     @battleback_sprite.bitmap.dispose
   end
   @battleback_sprite.dispose
   end
   # ??????????????????????
   for sprite in @enemy_sprites + @actor_sprites
     sprite.dispose
   end
   # ?????
   @weather.dispose
   # ????????????
   for sprite in @picture_sprites
     sprite.dispose
   end
   # ????????????
   @timer_sprite.dispose
   # ?????????
   @viewport1.dispose
   @viewport2.dispose
   @viewport3.dispose
   @viewport4.dispose
 end
 #--------------------------------------------------------------------------
 # ? ??????????
 #--------------------------------------------------------------------------
 def effect?
   # ??????????????? true ???
   for sprite in @enemy_sprites + @actor_sprites
     return true if sprite.effect?
   end
   return false
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def update
   # ???????????????????????
   if @battleback_sprite != nil
   if @battleback_name != $game_temp.battleback_name
     @battleback_name = $game_temp.battleback_name
     if @battleback_sprite.bitmap != nil
       @battleback_sprite.bitmap.dispose
     end
     bg_bitmap = RPG::Cache.battleback(@battleback_name)
     bg_bitmap_stretch = Bitmap.new(640, 480)
     bg_bitmap_stretch.stretch_blt(Rect.new(0, 0, 640, 480), bg_bitmap, bg_bitmap.rect)
     @battleback_sprite.bitmap = bg_bitmap_stretch
   end
   end
   if @tilemap != nil
   @tilemap.ox = $game_map.display_x / 4
   @tilemap.oy = $game_map.display_y / 4
   @tilemap.update
   end
   # ????????????
   for sprite in @enemy_sprites + @actor_sprites
     sprite.update
   end
   # ???????????
   @weather.type = $game_screen.weather_type
   @weather.max = $game_screen.weather_max
   @weather.update
   # ????????????
   for sprite in @picture_sprites
     sprite.update
   end
   # ????????????
   @timer_sprite.update
   # ???????????????
   @viewport1.tone = $game_screen.tone
   @viewport1.ox = $game_screen.shake
   # ????????????
   @viewport4.color = $game_screen.flash_color
   # ?????????
   @viewport1.update
   @viewport2.update
   @viewport4.update
 end
end

#==============================================================================
# ¦ Window_Command
#------------------------------------------------------------------------------
?????????????????????
#==============================================================================

class Window_Command < Window_Selectable
 #--------------------------------------------------------------------------
 # ? ?????????
 #     width    : ???????
 #     commands : ??????????
 #--------------------------------------------------------------------------
 def initialize(width, commands, column_max = 1, style = 0, inf_scroll = 1)
   # ????????????????????
   super(0, 0, width, (commands.size * 1.0 / column_max).ceil * 32 + 32)
   @inf_scroll = inf_scroll
   @item_max = commands.size
   @commands = commands
   @column_max = column_max
   @style = style
   self.contents = Bitmap.new(width - 32, (@item_max * 1.0 / @column_max).ceil * 32)
   self.contents.font.name = "Tahoma"
   self.contents.font.size = 22
   refresh
   self.index = 0
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def refresh
   self.contents.clear
   for i in 0...@item_max
     draw_item(i, normal_color)
   end
 end
 #--------------------------------------------------------------------------
 # ? ?????
 #     index : ????
 #     color : ???
 #--------------------------------------------------------------------------
 def draw_item(index, color)
   self.contents.font.color = color
   rect = Rect.new(index%@column_max * (self.width / @column_max) + 4, 32 * (index/@column_max), self.width / @column_max - 40, 32)
   self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
   self.contents.draw_text(rect, @commands[index], @style)
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #     index : ????
 #--------------------------------------------------------------------------
 def disable_item(index)
   draw_item(index, disabled_color)
 end
 
 def update_help
   @help_window.set_actor($game_party.actors[$scene.actor_index])
 end
end

#==============================================================================
# ¦ Arrow_Enemy
#------------------------------------------------------------------------------
????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================

class Arrow_Enemy < Arrow_Base
 #--------------------------------------------------------------------------
 # ? ?????????????????
 #--------------------------------------------------------------------------
 def enemy
   return $game_troop.enemies[@index]
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def update
   super
   # ???????????????????
   $game_troop.enemies.size.times do
     break if self.enemy.exist?
     @index += 1
     @index %= $game_troop.enemies.size
   end
   # ?????
   if Input.repeat?(Input::DOWN)
     $game_system.se_play($data_system.cursor_se)
     $game_troop.enemies.size.times do
       @index += 1
       @index %= $game_troop.enemies.size
       break if self.enemy.exist?
     end
   end
   # ?????
   if Input.repeat?(Input::UP)
     $game_system.se_play($data_system.cursor_se)
     $game_troop.enemies.size.times do
       @index += $game_troop.enemies.size - 1
       @index %= $game_troop.enemies.size
       break if self.enemy.exist?
     end
   end
   if Input.repeat?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     $game_troop.enemies.size.times do
       @index += ((($game_troop.enemies.length) * 0.5).ceil)
       @index %= $game_troop.enemies.size
       break if self.enemy.exist?
     end
   end
   if Input.repeat?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     $game_troop.enemies.size.times do
       @index += $game_troop.enemies.size - ((($game_troop.enemies.length) * 0.5).ceil)
       @index %= $game_troop.enemies.size
       break if self.enemy.exist?
     end
   end
   # ???????????
   if self.enemy != nil
     self.x = self.enemy.screen_x + 4
     self.y = self.enemy.screen_y + 36
     self.z = self.enemy.screen_z + 1
   end
 end
 #--------------------------------------------------------------------------
 # ? ?????????
 #--------------------------------------------------------------------------
 def update_help
   # ????????????????????????
   @help_window.set_enemy(self.enemy)
 end
end

#==============================================================================
# ¦ Arrow_Actor
#------------------------------------------------------------------------------
????????????????????????????? Arrow_Base ??
# ????????
#==============================================================================

class Arrow_Actor < Arrow_Base
 #--------------------------------------------------------------------------
 # ? ?????????????????
 #--------------------------------------------------------------------------
 def actor
   return $game_party.actors[@index]
 end
 #--------------------------------------------------------------------------
 # ? ??????
 #--------------------------------------------------------------------------
 def update
   super
   # ?????
   if Input.repeat?(Input::DOWN)
     $game_system.se_play($data_system.cursor_se)
     @index += 1
     @index %= $game_party.actors.size
   end
   # ?????
   if Input.repeat?(Input::UP)
     $game_system.se_play($data_system.cursor_se)
     @index += $game_party.actors.size - 1
     @index %= $game_party.actors.size
   end
   if Input.repeat?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     @index += ($game_party.actors.length * 0.5).ceil
     @index %= $game_party.actors.size
   end
   # ?????
   if Input.repeat?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     @index += $game_party.actors.size - (($game_party.actors.length * 0.5).ceil)
     @index %= $game_party.actors.size
   end
   # ???????????
   if self.actor != nil
     self.x = self.actor.screen_x
     self.y = self.actor.screen_y + 36
     self.z = self.actor.screen_z + 1
   end
 end
 #--------------------------------------------------------------------------
 # ? ?????????
 #--------------------------------------------------------------------------
 def update_help
   # ??????????????????????
   @help_window.set_actor(self.actor)
 end
end

class Scene_Battle
 attr_accessor :actor_index
 def main
   # ???????????????
   $game_temp.in_battle = true
   $game_temp.battle_turn = 0
   $game_temp.battle_event_flags.clear
   $game_temp.battle_abort = false
   $game_temp.battle_main_phase = false
   $game_temp.battleback_name = $game_map.battleback_name
   $game_temp.forcing_battler = nil
   # ??????????????????
   $game_system.battle_interpreter.setup(nil, 0)
   # ???????
   @troop_id = $game_temp.battle_troop_id
   $game_troop.setup(@troop_id)
   # ????????????????
   s1 = $data_system.words.attack
   s2 = $data_system.words.skill
   s3 = $data_system.words.guard
   s4 = $data_system.words.item
   @actor_command_window = Window_Command.new(640, [s1, s2, s3, s4], 4)
   @actor_command_window.y = 64
   @actor_command_window.back_opacity = 160
   @actor_command_window.active = false
   @actor_command_window.visible = false
   # ????????????
   @party_command_window = Window_PartyCommand.new
   @help_window = Window_Help.new
   @help_window.back_opacity = 160
   @help_window.visible = false
   #@status_window = Window_BattleStatus.new
   @message_window = Window_Message.new
   # ???????????
   @spriteset = Spriteset_Battle.new
   # ????????????
   @wait_count = 0
   # ?????????
   if $data_system.battle_transition == ""
     Graphics.transition(20)
   else
     Graphics.transition(40, "Graphics/Transitions/" +
       $data_system.battle_transition)
   end
   # ???????????
   start_phase1
   # ??????
   loop do
     # ????????
     Graphics.update
     # ???????
     Input.update
     # ??????
     update
     # ????????????????
     if $scene != self
       break
     end
   end
   # ??????????
$game_map.refresh
   # ?????????
   Graphics.freeze
   # ????????
   @actor_command_window.dispose
   @party_command_window.dispose
   @help_window.dispose
   #@status_window.dispose
   @message_window.dispose
   if @skill_window != nil
     @skill_window.dispose
   end
   if @item_window != nil
     @item_window.dispose
   end
   if @result_window != nil
     @result_window.dispose
   end
   # ???????????
   @spriteset.dispose
   # ???????????????
   if $scene.is_a?(Scene_Title)
     # ??????????
     Graphics.transition
     Graphics.freeze
   end
   # ???????????????????????????
   if $BTEST and not $scene.is_a?(Scene_Gameover)
     $scene = nil
   end
 end
 
 def update
   # ?????????????
   if $game_system.battle_interpreter.running?
     # ?????????
     $game_system.battle_interpreter.update
     # ?????????????????????????
     if $game_temp.forcing_battler == nil
       # ?????????????????
       unless $game_system.battle_interpreter.running?
         # ??????????????????????????
         unless judge
           setup_battle_event
         end
       end
       # ????????????????
       if @phase != 5
         # ?????????????????
         #@status_window.refresh
       end
     end
   end
   # ???? (????)??????
   $game_system.update
   $game_screen.update
   # ????? 0 ??????
   if $game_system.timer_working and $game_system.timer == 0
     # ?????
     $game_temp.battle_abort = true
   end
   # ????????
   @help_window.update
   @party_command_window.update
   @actor_command_window.update
   #@status_window.update
   @message_window.update
   # ???????????
   @spriteset.update
   # ?????????????
   if $game_temp.transition_processing
     # ?????????????????
     $game_temp.transition_processing = false
     # ?????????
     if $game_temp.transition_name == ""
       Graphics.transition(20)
     else
       Graphics.transition(40, "Graphics/Transitions/" +
         $game_temp.transition_name)
     end
   end
   # ????????????????
   if $game_temp.message_window_showing
     return
   end
   # ???????????
   if @spriteset.effect?
     return
   end
   # ??????????
   if $game_temp.gameover
     # ??????????????
     $scene = Scene_Gameover.new
     return
   end
   # ???????????
   if $game_temp.to_title
     # ???????????
     $scene = Scene_Title.new
     return
   end
   # ????????
   if $game_temp.battle_abort
     # ??????? BGM ???
     $game_system.bgm_play($game_temp.map_bgm)
     # ?????
     battle_end(1)
     return
   end
   # ????????
   if @wait_count > 0
     # ????????????
     @wait_count -= 1
     return
   end
   
   # this one holds the battle while the player moves
   for actor in @spriteset.actor_sprites
     if actor.moving
       return
     end
   end
   # and this one is for the enemy...
   for enemy in @spriteset.enemy_sprites
     if enemy.moving# and $game_system.animated_enemy
       return
     end
   end
   # ???????????????????????
   # ????????????????
   if $game_temp.forcing_battler == nil and
      $game_system.battle_interpreter.running?
     return
   end
   # ??????????
   case @phase
   when 1  # ?????????
     update_phase1
   when 2  # ????????????
     update_phase2
   when 3  # ????????????
     update_phase3
   when 4  # ???????
     update_phase4
   when 5  # ???????????
     update_phase5
   end
 end
 
 def start_phase2
   # ???? 2 ???
   @phase = 2
   # ?????????????
   @actor_index = -1
   @active_battler = nil
   # ?????????????????
   @party_command_window.active = true
   @party_command_window.visible = true
   # ?????????????????
   @actor_command_window.active = false
   @actor_command_window.visible = false
   @help_window.visible = false
   # ??????????????
   $game_temp.battle_main_phase = false
   # ????????????????
   $game_party.clear_actions
   # ????????????
   unless $game_party.inputable?
     # ?????????
     start_phase4
   end
 end
 
 def update_phase2_escape
   # ??????????????
   enemies_agi = 0
   enemies_number = 0
   for enemy in $game_troop.enemies
     if enemy.exist?
       enemies_agi += enemy.agi
       enemies_number += 1
     end
   end
   if enemies_number > 0
     enemies_agi /= enemies_number
   end
   # ??????????????
   actors_agi = 0
   actors_number = 0
   for actor in $game_party.actors
     if actor.exist?
       actors_agi += actor.agi
       actors_number += 1
     end
   end
   if actors_number > 0
     actors_agi /= actors_number
   end
   # ??????
   success = rand(100) < 50 * actors_agi / enemies_agi
   # ???????
   if success
     # ?? SE ???
     $game_system.se_play($data_system.escape_se)
       for actor in $game_party.actors
         @spriteset.actor_sprites[actor.index].pose(2)
         @spriteset.actor_sprites[actor.index].move(660, actor.screen_y, 10)
       end
       check = escape_move
     until check == false
       @spriteset.update
       Graphics.update
       check = escape_move
     end
     # ??????? BGM ???
     $game_system.bgm_play($game_temp.map_bgm)
     # ?????
     battle_end(1)
   # ???????
   else
     # ????????????????
     $game_party.clear_actions
     # ?????????
     start_phase4
   end
 end
 
 def escape_move
   for actor in @spriteset.actor_sprites
     if actor.moving
       return true
     end
   end
   return false
 end
 
 def start_phase5
   # ???? 5 ???
   @phase = 5
   # ????? ME ???
   $game_system.me_play($game_system.battle_end_me)
   # ??????? BGM ???
   $game_system.bgm_play($game_temp.map_bgm)
   # EXP???????????????
   exp = 0
   gold = 0
   treasures = []
   # ???
   for enemy in $game_troop.enemies
     # ??????????????
     unless enemy.hidden
       # ?? EXP????????
       exp += enemy.exp
       gold += enemy.gold
       # ?????????
       if rand(100) < enemy.treasure_prob
         if enemy.item_id > 0
           treasures.push($data_items[enemy.item_id])
         end
         if enemy.weapon_id > 0
           treasures.push($data_weapons[enemy.weapon_id])
         end
         if enemy.armor_id > 0
           treasures.push($data_armors[enemy.armor_id])
         end
       end
     end
   end
   # ???????? 6 ??????
   treasures = treasures[0..5]
   # EXP ??
   for i in 0...$game_party.actors.size
     actor = $game_party.actors
     if actor.cant_get_exp? == false
       last_level = actor.level
       actor.exp += exp
       if actor.level > last_level
         #@status_window.level_up(i)
       end
     end
   end
   # ??????
   $game_party.gain_gold(gold)
   # ???????
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   # ???????????????
   @result_window = Window_BattleResult.new(exp, gold, treasures)
   # ???????????
   @phase5_wait_count = 100
 end
 
 #--------------------------------------------------------------------------
 # ? ?????? (???????????)
 #--------------------------------------------------------------------------
 def update_phase5
   # ????????? 0 ???????
   if @phase5_wait_count > 0
     # ????????????
     @phase5_wait_count -= 1
     # ????????? 0 ??????
     if @phase
« Last Edit: January 13, 2007, 05:37:27 PM by Synthesize »

*
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Rep:
Level 96
&&&&&&&&&&&&&&&&&&&&&&&&&&&
GIAW 14: 2nd Place (Hard Mode)2013 Biggest Drama Whore2013 Zero to HeroParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
Quote
This script is a simple script to implement side-view battles. Modification is required if you want the characters to walk up to the monsters and attack, for instance. The first block of code below should replace Game_Actor#Screen_X. The second block should replace Game_Actor#Screen_Y. The last block should replace Window_BattleStatus#Update. If you want to change the arrangement of the party members on the battle screen, play around with the return values of Game_Actor#Screen_X and Game_Actor#Screen_Y until you find something you like. Please note that the coordinates provided in this script are intended to be used with battler images the size of map sprites. If you keep the full-size battler sprites, this script will make your battles look really stupid.

Code: [Select]
def screen_x
    if self.index != nil
      return self.index * 40 + 360
    else
      return 0
    end
  end

Code: [Select]
def screen_y
    return self.index * 20 + 220
end

Code: [Select]
def update
    super
    if $game_temp.battle_main_phase
      self.contents_opacity = 255
    end
  end
end
« Last Edit: January 10, 2007, 12:23:59 AM by BanisherOfEden »
&&&&&&&&&&&&&&&&

**
Rep: +0/-0Level 88
~Genma
This is great! However, i'm not entirely sure what numbers to mess around with in order to move the battlers...as right now, it looks like this:


I'd like it to look a bit more like this, if possible (photoshop edit)


Would moving the monsters around, as well as adjusting the hero Battler transparency be too difficult? Either way, thanks!
"What a terible night to have a curse..."

*
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Rep:
Level 96
&&&&&&&&&&&&&&&&&&&&&&&&&&&
GIAW 14: 2nd Place (Hard Mode)2013 Biggest Drama Whore2013 Zero to HeroParticipant - GIAW 11Secret Santa 2013 ParticipantFor taking arms in the name of your breakfast.
Quote
play around with the return values of Game_Actor#Screen_X and Game_Actor#Screen_Y until you find something you like. Please note that the coordinates provided in this script are intended to be used with battler images the size of map sprites. If you keep the full-size battler sprites, this script will make your battles look really stupid.

Code: [Select]
def screen_x
    if self.index != nil
      return self.index * 40 + 360
    else
      return 0
    end
  end

Code: [Select]
def screen_y
    return self.index * 20 + 220
end

&&&&&&&&&&&&&&&&

**
Rep: +0/-0Level 88
~Genma
Yes....i see that...but i'm new to coding, and when i tried to change the numbers def screen_x from 40 to 60 and 360 to 380, nothing seemed to happen. Also, i'm still wondering about being able to move the monsters, and alter the battler transparency...
"What a terible night to have a curse..."

**
Rep:
Level 88
I'm trying to implement this script, but I think I must be doing something wrong.
It works fine for the normal char sprites but when I try to use a custom made sprite I imported into the game they just run on the spot after taking 1 step
any ideas on what's wrong?

**
Rep: +0/-0Level 88
~Genma
THIS IS NOT BY ME, but I wish I could script...

[quote name='Guedez' date='Jan 12 2006, 03:03 PM' post='69916']
GCBS: Guedez's Custon Battle System Version: 1.5
Know Bugs:
None
Fixed Bugs:
-Command menu close when a monster attack
-You cant select a command whyle someone is attacking

Upgrade Log:
=====Version 1.0=====
-Added CT Bar
-Added a custon escape system
-Removed Defend command
-Added a test for enemy escape
-Added a easy text custumization system
=====Version 1.05=====
-Fixed a bug
=====Version 1.1=====
-Fixed a bug
-Added a new option: @less_xp
=====Version 1.5=====
-Improved Grafics
-Added Side View option

Instalation:
-Add this above Main and below all custon scripts
Code: [Select]
#----------------------------------------------------------------
#GCBS: Guedez's Custon Battle Sytem V1.5
#Thx to: Sepirothspawn511 and Minkoff
#Released in: 16 / 1 / 2006
#----------------------------------------------------------------

#===========================Usage================================
#Just add this script above Main:
#Conflicts: can happen with ANY script that modify Scene_Battle
#================================================================

#========================Customize===============================
#@less_xp: if true, before the battle end, the exp will be
#dividied by the party size before is given to each party member
#@success_escape_enemy_text: change the text that will appear in
#help window when the enemy escape
#@failed_escape_enemy_text: change the text that will appear in
#help window when the enemy fail to escape
#@failed_to_escape_text: change the text that will appear in
#help window when you fail escape
#@escape_text: change command name to trigger the escape flag
#@waiting_text: change the text that will appear in
#help window when the enemy is waiting
#@miss_text: change the text that will pop up when you miss
#================================================================
class Scene_Battle
 
  def main_customize
    @side_view = true
    @less_xp = true
    @success_escape_enemy_text = " escaped"
    @failed_escape_enemy_text = " failed to escape"
    @failed_to_escape_text = "Failed to escape"
    @escape_text = "Escape"
    @waiting_text = " is waiting"
    @miss_text = "Miss"
  end
   
  def main_uncustomize
    @escapeflag = false
    @aready_ended = false
    @phase4_active_battler = nil
    @waiting_unitys = []
    $game_temp.in_battle = true
  end
 
  def main_base
    if @side_view == true
      SDK.enable('Minkoffs Custom Battle System')
    else
      SDK.disable('Minkoffs Custom Battle System')
    end
    $game_temp.battle_turn = 0
    $game_temp.battle_event_flags.clear
    $game_temp.battle_abort = false
    $game_temp.battle_main_phase = false
    $game_temp.battleback_name = $game_map.battleback_name
    $game_temp.forcing_battler = nil
    $game_system.battle_interpreter.setup(nil, 0)
    @troop_id = $game_temp.battle_troop_id
    $game_troop.setup(@troop_id)
    $unity_by_itself = []
    for enemy in $game_troop.enemies
      $unity_by_itself.push(enemy)
    end
    for actor in $game_party.actors
      $unity_by_itself.push(actor)
    end
    $ctunits = []
    for i in 0...$unity_by_itself.size
      $ctunits[i] = 0
    end
  end
 
  def main_window
    s1 = $data_system.words.attack
    s2 = $data_system.words.skill
    s3 = $data_system.words.item
    s4 = @escape_text
    @actor_command_window = Window_Command.new(160, [s1, s2, s3, s4])
    @actor_command_window.y = 160
    @actor_command_window.height = 160
    @actor_command_window.back_opacity = 160
    @actor_command_window.active = false
    @actor_command_window.visible = false
    @help_window = Window_Help.new
    @help_window.back_opacity = 160
    @help_window.visible = false
    if @side_view
      @atpandlimit_window = Window_Side_Ct.new
      @status_window = Window_Side_BattleStatus.new
    else
      @atpandlimit_window = Window_Ct.new
      @status_window = Window_BattleStatus.new
    end
    @message_window = Window_Message.new
    @spriteset = Spriteset_Battle.new
    @wait_count = 0
  end
 
  def main_transition
    if $data_system.battle_transition == ""
      Graphics.transition(20)
    else
      Graphics.transition(40, "Graphics/Transitions/" +
        $data_system.battle_transition)
    end
  end
 
  def main
    main_customize
    main_uncustomize
    main_base
    main_window
    main_transition
    start_phase1
    loop do
      Graphics.update
      Input.update
      main_update
      if $scene != self
        break
      end
    end
    $game_map.refresh
    Graphics.freeze
    main_dispose
  end
 
  def main_dispose
    @actor_command_window.dispose
    @help_window.dispose
    @status_window.dispose
    @message_window.dispose
    @atpandlimit_window.dispose
    if @skill_window != nil
      @skill_window.dispose
    end
    if @item_window != nil
      @item_window.dispose
    end
    if @result_window != nil
      @result_window.dispose
    end
    @spriteset.dispose
    if $scene.is_a?(Scene_Title)
      Graphics.transition
      Graphics.freeze
    end
    if $BTEST and not $scene.is_a?(Scene_Gameover)
      $scene = nil
    end
  end
 
  def main_update
    unless @aready_ended or @side_view
      paralel_phase3_update
    end
    if @aready_ended and @actor_command_window.visible
      @actor_command_window.active = false
      @actor_command_window.visible = false
    end
    if $game_system.battle_interpreter.running?
      $game_system.battle_interpreter.update
      if $game_temp.forcing_battler == nil
        unless $game_system.battle_interpreter.running?
          unless judge
            setup_battle_event
          end
        end
        if @phase != 5
        end
      end
    end
    $game_system.update
    $game_screen.update
    if $game_system.timer_working and $game_system.timer == 0
      $game_temp.battle_abort = true
    end
    @help_window.update
    @message_window.update
    @spriteset.update
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    if $game_temp.message_window_showing
      return
    end
    if @spriteset.effect?
      return
    end
    if $game_temp.gameover
      $scene = Scene_Gameover.new
      return
    end
    if $game_temp.to_title
      $scene = Scene_Title.new
      return
    end
    if $game_temp.battle_abort
      $game_system.bgm_play($game_temp.map_bgm)
      battle_end(1)
      return
    end
    if @wait_count > 0
      @wait_count -= 1
      return
    end
    if $game_temp.forcing_battler == nil and
       $game_system.battle_interpreter.running?
      return
    end
    unless @aready_ended
      plus_atp
      search_for_enemy
      get_a_new_actor
    end
    case @phase
    when 1
      update_phase1
    when 2
      update_phase2
    when 3
      update_phase3
    when 4
      update_phase4
    when 5
      update_phase5
    end
  end
 
  def paralel_phase3_update
    if @phase != 3
      if @enemy_arrow != nil
        update_phase3_enemy_select
      elsif @actor_arrow != nil
        update_phase3_actor_select
      elsif @skill_window != nil
        update_phase3_skill_select
      elsif @item_window != nil
        update_phase3_item_select
      elsif @actor_command_window.active
        update_phase3_basic_command(@actor)
      end
    end
  end
#=========================Scene_battle2==========================
 
  def start_phase2
    @phase = 3
    @actor_index = -1
    @active_battler = nil
    @actor_command_window.active = false
    @actor_command_window.visible = false
    $game_temp.battle_main_phase = false
    $game_party.clear_actions
    unless $game_party.inputable?
      start_phase4
    end
  end
 
  def escape
    $game_party.clear_actions
    enemies_agi = 0
    enemies_number = 0
    for enemy in $game_troop.enemies
      if enemy.exist?
        enemies_agi += enemy.agi
        enemies_number += 1
      end
    end
    if enemies_number > 0
      enemies_agi /= enemies_number
    end
    actors_agi = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_agi += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_agi /= actors_number
    end
    success = rand(100) < 50 * actors_agi / enemies_agi
    if success
      $game_system.se_play($data_system.escape_se)
      $game_system.bgm_play($game_temp.map_bgm)
      battle_end(1)
    else
      $game_party.clear_actions
      @help_window.set_text(@failed_to_escape_text, 1)
      @wait_count = 55
    end
  end
 
#============================Scene_battle3=======================
  def start_phase3
    @phase = 3
    @actor_index = -1
    @active_battler = nil
    update_phase3
  end
 
  def phase3_setup_command_window
    $game_system.se_play($data_system.cursor_se)
    @actor_command_window.active = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
    @actor_command_window.x = 0
    case @actor.index
    when 0
      @actor_command_window.x = 0
    when 1
      @actor_command_window.x = 160
    when 2
      @actor_command_window.x = 320
    when 3
      @actor_command_window.x = 480
    end
    #@actor_command_window.x = 320 - (@actor_command_window.width / 2)
    @actor_command_window.index = 0
  end
 
  def actorcheck(actor)
    if actor.is_a?(Game_Actor)
      return true
    end
    return false
  end
 
  def search_for_actor
    if @escapeflag
      needed = 0
      number = 0
      for i in 0..$ctunits.size
        for actor in $game_party.actors
          if $unity_by_itself[i] == actor and
          $unity_by_itself[i].inputable?
            needed +=1
            if $ctunits[i] == 100
              number += 1
            end
          end
        end
      end
      if number >= needed
        escape
        @escapeflag = false
        for i in 0..$ctunits.size
          for actor in $game_party.actors
            if $unity_by_itself[i] == actor
              $ctunits[i] = 0
            end
          end
        end
      end
    else
      for i in 0..$ctunits.size
        if $ctunits[i] == 100
          unless @actor_command_window.active or
          actorcheck($unity_by_itself[i]) == false
            @actor = $unity_by_itself[i]
            phase3_setup_command_window
          return
          end
        end
      end
    end
  end
 
  def research_for_actor(actor)
    @last_actor = [] if @last_actor == nil
    @last_actor.push(actor)
    @actor_command_window.active == false
    for i in 0...$ctunits.size
      if $ctunits[i] == 100
        if actorcheck($unity_by_itself[i])
          unless @last_actor.include?($unity_by_itself[i])
            @actor = $unity_by_itself[i]
            phase3_setup_command_window
            update_phase3_basic_command(actor)
            return
          end
        end
      end
    end
    @last_actor = []
  end
 
  def plus_atp
    unless @enemy_arrow != nil or @actor_arrow != nil or
    @skill_window != nil or @item_window != nil
      if @help_window.visible == true
        @help_window.visible = false
      end
      for i in 0...$ctunits.size
        if $unity_by_itself[i] == nil
          $unity_by_itself.unshift($unity_by_itself[i])
          $unity_by_itself.delete($unity_by_itself[i])
          $ctunits.unshift($ctunits[i])
          $ctunits.delete($ctunits[i])
          return
        end
        unless $ctunits[i] >= 100
          if $unity_by_itself[i].is_a?(Game_Actor) and $unity_by_itself[i].inputable?
            $ctunits[i] = 0 if $ctunits[i] == nil
            $ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.25 unless
            $ctunits[i] == 100
            $ctunits[i] = 100 if $ctunits[i] > 100
          elsif not $unity_by_itself[i].is_a?(Game_Actor)
            if $unity_by_itself[i].hp > 0
              $ctunits[i] = 0 if $ctunits[i] == nil
              $ctunits[i] += $unity_by_itself[i].agi / 999.0 + 0.25 / 1.5 unless
              $ctunits[i] == 100
              $ctunits[i] = 100 if $ctunits[i] > 100
            end
          end
        end
      end
      unless @actor_command_window.active
        search_for_actor
      end
    end
    @atpandlimit_window.refresh
  end
 
  def update_phase3
    if @enemy_arrow != nil
      update_phase3_enemy_select
    elsif @actor_arrow != nil
      update_phase3_actor_select
    elsif @skill_window != nil
      update_phase3_skill_select
    elsif @item_window != nil
      update_phase3_item_select
    elsif @actor_command_window.active
      update_phase3_basic_command(@actor)
    end
  end
 
  def search_for_enemy
    for i in 0..$ctunits.size
      if $ctunits[i] != nil and $unity_by_itself[i].is_a?(Game_Enemy)
        if $ctunits[i] == 100
          $unity_by_itself[i].make_action
          start_phase4($unity_by_itself[i])
          $ctunits[i] = 0
          return
        end
      end
    end
  end
     
  def update_phase3_basic_command(actor)
    @active_battler = actor
    @active_battler.current_action.clear
    @actor_command_window.update
    if Input.trigger?(Input::B)
      loop do
        Input.update
        if Input.repeat?(Input::B) == false
          break
        end
      end
      @actor_command_window.active = false
      research_for_actor(@active_battler)
      return
    end
    if Input.trigger?(Input::C)
      case @actor_command_window.index
      when 0
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
        start_enemy_select
      when 1
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 1
        start_skill_select
      when 2
        $game_system.se_play($data_system.decision_se)
        @active_battler.current_action.kind = 2
        start_item_select
      when 3
        @escapeflag = true
        @actor_command_window.visible = false
      end
      return
    end
  end
 
  def update_phase3_skill_select
    @skill_window.visible = true
    @skill_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_skill_select
      return
    end
    if Input.trigger?(Input::C)
      @skill = @skill_window.skill
      if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.skill_id = @skill.id
      @skill_window.visible = false
      if @skill.scope == 1
        start_enemy_select
      elsif @skill.scope == 3 or @skill.scope == 5
        start_actor_select
      else
        end_skill_select
      end
      return
    end
  end
 
  def update_phase3_item_select
    @item_window.visible = true
    @item_window.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_item_select
      return
    end
    if Input.trigger?(Input::C)
      @item = @item_window.item
      unless $game_party.item_can_use?(@item.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.item_id = @item.id
      @item_window.visible = false
      if @item.scope == 1
        start_enemy_select
      elsif @item.scope == 3 or @item.scope == 5
        start_actor_select
      else
        end_item_select
      end
      return
    end
  end
 
  def update_phase3_enemy_select
    @enemy_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_enemy_select
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.target_index = @enemy_arrow.index
      end_enemy_select
      if @skill_window != nil
        end_skill_select
      end
      if @item_window != nil
        end_item_select
      end
      start_phase4(@actor)
      for i in 0..$ctunits.size
        if $unity_by_itself[i] == @actor
          $ctunits[i] = 0
        end
      end
    end
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def update_phase3_actor_select
    @actor_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_actor_select
      return
    end
    if Input.trigger?(Input::C)
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.target_index = @actor_arrow.index
      end_actor_select
      if @skill_window != nil
        end_skill_select
      end
      if @item_window != nil
        end_item_select
      end
      start_phase4(@actor)
      for i in 0..$ctunits.size
        if $unity_by_itself[i] == @actor
          $ctunits[i] = 0
        end
      end
    end
    @actor_command_window.visible = false
    @actor_command_window.active = false
  end
 
  def start_enemy_select
    @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
    @enemy_arrow.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_enemy_select
    @enemy_arrow.dispose
    @enemy_arrow = nil
    if @actor_command_window.index == 0
      @actor_command_window.active = true
      @actor_command_window.visible = true
      @help_window.visible = false
    end
  end
 
  def start_actor_select
    @actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
    @actor_arrow.index = @actor_index
    @actor_arrow.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_actor_select
    @actor_arrow.dispose
    @actor_arrow = nil
  end
 
  def start_skill_select
    @skill_window = Window_Skill.new(@active_battler)
    @skill_window.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_skill_select
    @skill_window.dispose
    @skill_window = nil
    @help_window.visible = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
 
  def start_item_select
    @item_window = Window_Item.new
    @item_window.help_window = @help_window
    @actor_command_window.active = false
    @actor_command_window.visible = false
  end
 
  def end_item_select
    @item_window.dispose
    @item_window = nil
    @help_window.visible = false
    @actor_command_window.active = true
    @actor_command_window.visible = true
  end
#========================Scene_battle4===========================
  def start_phase4(actor)
    @phase = 4
    $game_temp.battle_turn += 1
    for index in 0...$data_troops[@troop_id].pages.size
      page = $data_troops[@troop_id].pages[index]
      if page.span == 1
        $game_temp.battle_event_flags[index] = false
      end
    end
    @actor_index = -1
    @waiting_unitys.push(actor)
  end
 
  def get_a_new_actor
    if @phase4_active_battler == nil
      for i in 0..@waiting_unitys.size
        if @waiting_unitys[i].is_a?(Game_Battler)
          @phase4_active_battler = @waiting_unitys[i]
          @waiting_unitys[i] = nil
          $game_temp.battle_main_phase = true
          @phase4_step = 1
          @using_actor = true
          return
        end
      end
      @phase = 3
      @waiting_unitys = []
    end
  end
 
  def update_phase4
    case @phase4_step
    when 1
      update_phase4_step1
    when 2
      update_phase4_step2
    when 3
      if @side_view
        update_phase4_step3(@phase4_active_battler)
      else
        update_phase4_step3
      end
    when 4
      if @side_view
        update_phase4_step4(@phase4_active_battler)
      else
        update_phase4_step4
      end
    when 5
      update_phase4_step5
    when 6
      update_phase4_step6
    end
  end
 
  def update_phase4_step1
    @help_window.visible = false
    if judge
      return
    end
    if $game_temp.forcing_battler == nil
      setup_battle_event
      if $game_system.battle_interpreter.running?
        return
      end
    end
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    if @phase4_active_battler.index == nil
      return
    end
    if @phase4_active_battler.hp > 0 and @phase4_active_battler.slip_damage?
      @phase4_active_battler.slip_damage_effect
      @phase4_active_battler.damage_pop = true
    end
    @phase4_active_battler.remove_states_auto
    @status_window.refresh
    @phase4_step = 2
  end
 
  def update_phase4_step2
    unless @phase4_active_battler.current_action.forcing
      if @phase4_active_battler.restriction == 2 or @phase4_active_battler.restriction == 3
        @phase4_active_battler.current_action.kind = 0
        @phase4_active_battler.current_action.basic = 0
      end
      if @phase4_active_battler.restriction == 4
        $game_temp.forcing_battler = nil
        @phase4_step = 1
        return
      end
    end
    @target_battlers = []
    case @phase4_active_battler.current_action.kind
    when 0
      make_basic_action_result
    when 1
      make_skill_action_result
    when 2
      make_item_action_result
    end
    if @phase4_step == 2
      @phase4_step = 3
    end
  end
 
  def make_basic_action_result
    if @phase4_active_battler.current_action.basic == 0
      @animation1_id = @phase4_active_battler.animation1_id
      @animation2_id = @phase4_active_battler.animation2_id
      if @phase4_active_battler.is_a?(Game_Enemy)
        if @phase4_active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @phase4_active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @phase4_active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      if @phase4_active_battler.is_a?(Game_Actor)
        if @phase4_active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @phase4_active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @phase4_active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      @target_battlers = [target]
      for target in @target_battlers
        target.attack_effect(@phase4_active_battler)
      end
      return
    end
    if @phase4_active_battler.current_action.basic == 1
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    if @phase4_active_battler.is_a?(Game_Enemy) and
    @phase4_active_battler.current_action.basic == 2
      if @phase4_active_battler.escape
        @help_window.set_text(@phase4_active_battler.name + @success_escape_enemy_text, 1)
      else
        @help_window.set_text(@phase4_active_battler.name + @failed_escape_enemy_text, 1)
      end
      @wait_count = 55
      @phase4_active_battler = nil
      return
    end
    if @phase4_active_battler.current_action.basic == 3
      @help_window.set_text(@phase4_active_battler.name + @waiting_text, 1)
      $game_temp.forcing_battler = nil
      @wait_count = 55
      @phase4_active_battler.current_action.clear
      @phase4_active_battler = nil
      if judge
        return
      end
      return
    end
  end
 
  def update_phase4_step3
    if @animation1_id == 0
      @phase4_active_battler.white_flash = true
    else
      @phase4_active_battler.animation_id = @animation1_id
      @phase4_active_battler.animation_hit = true
    end
    @phase4_step = 4
  end
 
  def update_phase4_step4
    for target in @target_battlers
      target.animation_id = @animation2_id
      target.animation_hit = (target.damage != @miss_text)
    end
    @wait_count = 8
    @phase4_step = 5
  end
 
  def update_phase4_step5
    @help_window.visible = false
    @status_window.refresh
    for target in @target_battlers
      if target.damage != nil
        target.damage_pop = true
      end
    end
    @phase4_step = 6
  end
 
  def update_phase4_step6
    $game_temp.forcing_battler = nil
    if @common_event_id > 0
      common_event = $data_common_events[@common_event_id]
      $game_system.battle_interpreter.setup(common_event.list, 0)
    end
    @phase4_active_battler.current_action.clear
    @phase4_active_battler = nil
    if judge
      return
    end
  end
#==========================Phase_5===============================
  def start_phase5
    @phase = 5
    $game_system.me_play($game_system.battle_end_me)
    $game_system.bgm_play($game_temp.map_bgm)
    exp = 0
    gold = 0
    treasures = []
    for enemy in $game_troop.enemies
      unless enemy.hidden
        exp += enemy.exp
        gold += enemy.gold
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
    if @less_xp == true
      exp /= $game_party.actors.size
    end
    treasures = treasures[0..5]
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if actor.cant_get_exp? == false
        last_level = actor.level
        actor.exp += exp
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
    $game_party.gain_gold(gold)
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    @phase5_wait_count = 100
    @aready_ended = true
  end

end
#======================End_of_Scene_Battle=======================
class Window_Ct < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_x = i * 160 + 4
      for i in 0..$unity_by_itself.size
        if $unity_by_itself[i] == actor
          actornumber = i
        end
      end
      atp_gaugue = $ctunits[actornumber] * 6 / 10
      draw_actor_limit(actor,actor_x, 74,60)
      draw_bar_beginner(actor_x + 68, 74 , atp_gaugue, 0, 60, 24,
        bar_color = Color.new(0, 255, 255, 255))
    end
  end
 
  def update
    super
  end
end

class Window_Side_Ct < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_y = i * 32
      draw_actor_limit(actor,470,actor_y,64)
      for i in 0..$unity_by_itself.size
        if $unity_by_itself[i] == actor
          actornumber = i
        end
      end
      atp_gaugue = $ctunits[actornumber] * 64 / 100
      draw_bar_beginner(544, actor_y + 4, atp_gaugue, 0, 64, 24,
        bar_color = Color.new(0, 255, 255, 255))
    end
  end
 
  def update
    super
  end
end

class Window_BattleStatus < Window_Base
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_x = i * 160 + 4
      draw_actor_name(actor, actor_x, -8)
      draw_actor_hp(actor, actor_x, 20, 120)
      draw_actor_sp(actor, actor_x, 48, 120)
      if @level_up_flags[i]
        self.contents.font.color = normal_color
        self.contents.draw_text(actor_x + 30, 100, 120, 32, "Nível Acima!")
      else
        draw_actor_state(actor, actor_x + 30, 100)
      end
    end
  end

end
class Window_Side_BattleStatus < Window_Base
 
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    @level_up_flags = [false, false, false, false]
    refresh
  end
 
  def dispose
    super
  end
 
  def level_up(actor_index)
    @level_up_flags[actor_index] = true
  end
 
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      actor_y = i * 32
      draw_actor_name(actor, 0, actor_y)
      draw_actor_hp(actor, 128, actor_y, 128)
      draw_actor_sp(actor, 260, actor_y, 128)
      if @level_up_flags[i]
        self.contents.font.color = normal_color
        self.contents.draw_text(actor, 392, actor_y, 32, "Nível Acima!")
      else
        draw_actor_state(actor, 392 , actor_y)
      end
    end
  end

  def update
    super
    if $game_temp.battle_main_phase
      self.contents_opacity -= 4 if self.contents_opacity > 191
    else
      self.contents_opacity += 4 if self.contents_opacity < 255
    end
  end
end

#=========================Window_Base============================
class Window_Base
  def draw_actor_hp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(x + 24, y, 48, 32, actor.hp.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 84, y, 48, 32, actor.maxhp.to_s)
  end
 
  def draw_actor_sp(actor, x, y, width = 144)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    self.contents.font.color = actor.hp == 0 ? knockout_color :
      actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
    self.contents.draw_text(x + 24, y, 48, 32, actor.sp.to_s, 2)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 72, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 84, y, 48, 32, actor.maxsp.to_s)
  end

  def draw_actor_limit(actor, x, y, width)
    midbar = x + (width/2 - width/4)
    self.contents.draw_text(midbar, y, width, 32, "")
  end
  #--------------------------------------------------------------------------
  # Draw Bar (Beginner) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_bar_beginner(x, y, porcentage, max, width, height,
    bar_color = Color.new(150, 0, 0, 255) )
    # Draws Background
    self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
    # Draw Bar
    self.contents.fill_rect(x + 1, y + 1, porcentage - 2, height - 2, bar_color)
  end

  #--------------------------------------------------------------------------
  # Draw Bar (Intermediate) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_bar_intermediate(x, y, min, max, width = 152, height = 6,
      bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
    # Draw Background
    self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
    # Draws Bar
    for i in 1..( (min / max) * width -1)
      r = bar_color.red * (width - i) / width + end_color.red * i / width
      g = bar_color.green * (width - i) / width + end_color.green * i / width
      b = bar_color.blue * (width - i) / width + end_color.blue * i / width
      a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
      self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2, Color.new(r, g, b, a))
    end
  end
  #--------------------------------------------------------------------------
  # Draw Slant Bar (Advanced) $By Sepirothspawn511
  #--------------------------------------------------------------------------
  def draw_slant_bar_advanced(x, y, min, max, width = 152, height = 6,
      bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
    # Draw Border
    for i in 0..height
      self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
    end
    # Draw Background
    for i in 1..(height - 1)
      r = 100 * (height - i) / height + 0 * i / height
      g = 100 * (height - i) / height + 0 * i / height
      b = 100 * (height - i) / height + 0 * i / height
      a = 255 * (height - i) / height + 255 * i / height
      self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
    end
    # Draws Bar
    for i in 1..( (min / max) * width - 1)
      for j in 1..(height - 1)
        r = bar_color.red * (width - i) / width + end_color.red * i / width
        g = bar_color.green * (width - i) / width + end_color.green * i / width
        b = bar_color.blue * (width - i) / width + end_color.blue * i / width
        a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
        self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
      end
    end
  end
end
#============================Game_Enemy==========================
class Game_Enemy < Game_Battler
 
  def escape
    self.current_action.clear
    enemies_agi = self.agi
    actors_agi = 0
    actors_number = 0
    for actor in $game_party.actors
      if actor.exist?
        actors_agi += actor.agi
        actors_number += 1
      end
    end
    if actors_number > 0
      actors_agi /= actors_number
    end
    success = rand(100) < 50 * enemies_agi / actors_agi
    if success
      @hidden = true   
    else
      return false
    end
  end
end
-if you want to use side view you will need this above Main and BELOW GCBS
[attachmentid=1855]



Demo:
[attachmentid=1853]



Screens:
-Side View:
[attachmentid=1856]
-Normal Mode:
[attachmentid=1857]

Note: for side view you will need new sprites, and you will need to give the weapons EX:
[attachmentid=1852]
1: Standing Position: All the time that he is not making anything
2: Damage Position: Every time he recive damage
3: Dead Position: Not yet tested, i think when he is dead
4: Dunno Position: I think when he is afected by Status (maybe positive too)
5: Moving Position: Moving left
6: Moving Position: Moving right
7: Attacking 1 Position: When he attack
8: Attacking 2 Position: Dunno
9: Skill Using Position: Maybe itens too
10: Win Position: Will not repeat

To make your battle sprites you can go to Chara-Project where you can use theyr generator (need to adapt the image and add a weapon)

[/quote]




Ok, cool...one thing, can you repost the demo of this? The attachment doesnt work for me, and i really want to see this in action before i go ahead and impliment it. Thanks!
"What a terible night to have a curse..."