Herramientas de usuario

Herramientas del sitio


Barra lateral

ayuda:rgss:biblioteca:batallaraisefield

Sistema de Batalla de RaiseField

Ficha técnica

  • Nombre original: Desconocido
  • Nombre del autor: RaiseField
  • Utilidad: Sistema de batalla lateral
  • Dependencia de otros scripts: No
  • Incompatibilidades: Desconocidas

Instalación

Crea un nuevo script encima de "Main" y pega en su interior el siguiente código:

#--------------------------------------------------------------------------
# ™ƒTƒCƒhƒrƒ…[ ŠÈˆÕ”Š
#
#    (C) copyright by RaiseField     Date 2006/09/23    Ver 1.03
#--------------------------------------------------------------------------
#  ƒTƒCƒhƒrƒ…[í“¬ƒXƒNƒŠƒvƒg•àsƒOƒ‰ƒtƒBƒbƒN”Š      ™Special Thanks by á
#--------------------------------------------------------------------------
 
#--------------------------------------------------------------------------
#  ƒOƒ‰ƒtƒBƒbƒNƒtƒ@ƒCƒ‹‚Ì‹KŠi
#--------------------------------------------------------------------------
#  ƒoƒgƒ‰[ƒOƒ‰ƒtƒBƒbƒN
#  
#  @•àsƒOƒ‰ƒtƒBƒbƒN‚ð‚»‚Ì‚Ü‚ÜŽg‚¢‚Ü‚·B
#  @ 
#  •ŠíƒOƒ‰ƒtƒBƒbƒN
#  
#  @•Ší‚̃AƒCƒRƒâ€œƒOƒ‰ƒtƒBƒbƒN‚ð‚»‚Ì‚Ü‚ÜŽg‚¢‚Ü‚·B      
#      
 
 
module Side_view
  #--------------------------------------------------------------------------
  # œ RTAB•¹—pƒtƒ‰ƒbƒO@™Ž©â€œ®â€FŽ¯
  #    Scene_Battle ‚É ƒƒ\ƒbƒh synthe? ‚ª‚ ‚é‚©‚Ç‚¤‚©‚Å”FŽ¯
  #    Ž©â€œ®â€FŽ¯‚µ‚½‚­‚È‚¢ê‡‚͏‘‚«Š·‚¦‚Ä‚­‚¾‚³‚¢B
  #--------------------------------------------------------------------------
  if Scene_Battle.method_defined?("synthe?")
    RTAB = true
  else
    RTAB = false
  end
  #--------------------------------------------------------------------------
  # œ RTAB‚̃Jƒƒ‰ƒ[ƒN‚ðŽg‚¤ê‡‚Ì•`‰æˆÊ’u Œë·C³ ™Ž©â€œ®â€FŽ¯
  #    Ž©â€œ®â€FŽ¯‚µ‚½‚­‚È‚¢ê‡‚͏‘‚«Š·‚¦‚Ä‚­‚¾‚³‚¢B
  #--------------------------------------------------------------------------
  def camera_correctness
    return false if !RTAB
    begin 
      return $scene.drive
    rescue
      return false
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒp[ƒeƒB‚̍őålâ€ i‚ ‚­‚Ü‚Å‚àƒXƒvƒ‰ƒCƒg‚𑝂₷‚¾‚¯‚Ì‚à‚́j
  #--------------------------------------------------------------------------
  Party_max = 4
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‰[ƒOƒ‰ƒtƒBƒbƒN‚ÌŠg‘å—¦(ƒAƒNƒ^[ê—pj
  #--------------------------------------------------------------------------
  CHAR_ZOOM = 1.0
  #--------------------------------------------------------------------------
  # œ ƒAƒ[ƒJ[ƒ\ƒ‹ˆÊ’u•â³
  #--------------------------------------------------------------------------
  ARROW_OX = -64
  ARROW_OY = 64
  #--------------------------------------------------------------------------
  # œ ”òs‚Æ‚µ‚Ĉµ‚¤ƒXƒe[ƒg–¼â€z—ñ
  #--------------------------------------------------------------------------
  FLY_STATES = ["”òs"]
  #--------------------------------------------------------------------------
  # œ í“¬‰æ–ʃp[ƒeƒB‚̈ʒu
  #--------------------------------------------------------------------------
  PARTY_X = 480     # ƒp[ƒeƒB‚Ì X ˆÊ’u
  PARTY_Y = 120     # ƒp[ƒeƒB‚Ì Y ˆÊ’u
  FORMATION_X = 32  # ŠeƒAƒNƒ^[“¯Žm‚ÌŠÔŠu X
  FORMATION_Y = 48  # ŠeƒAƒNƒ^[“¯Žm‚ÌŠÔŠu Y
  #--------------------------------------------------------------------------
  # œ ƒJƒXƒ^ƒ}ƒCƒY’èâ€
  #--------------------------------------------------------------------------
  NORMAL   = "NORMAL"
  WALK_R   = "WALK_R"
  WALK_L   = "WALK_L"
  ATTACK   = "ATTACK"
  ATTACK_R = "ATTACK_R"
  ATTACK_L = "ATTACK_L"
  MAGIC    = "MAGIC"
  ITEM     = "ITEM"
  # ƒAƒjƒ‚̐ݒè
  ANIME = { 
    # [‰æ‘œID,ƒ‹[ƒv‚·‚é‚©,ƒAƒjƒƒXƒs[ƒh,•Ší•\Ž¦‚·‚é‚©,ƒAƒjƒ‚³‚¹‚È‚¢,•ŠíƒOƒ‰‰EŽèor¶Žè]
    NORMAL            => [1,true , 0,false, true ,""    ], # ’ʏí‘Ò‹@
    WALK_R            => [2,true , 6,false, false,""    ], # ‰EˆÚ“®
    WALK_L            => [1,true , 6,false, false,""    ], # ¶ˆÚ“®
    ATTACK_R          => [1,false, 6,true , false,"‰EŽè"], # ‰EŽèUŒ‚
    ATTACK_L          => [1,false, 6,true , false,"¶Žè"], # ¶ŽèUŒ‚
    MAGIC             => [1,false, 6,false, false,""    ], # ‰EŽèUŒ‚
    ITEM              => [1,false, 6,false, false,""    ], # ¶ŽèUŒ‚
    }
 
  # ƒfƒtƒHƒ‹ƒg’l‚ÌÝ’è  
  ANIME.default = [1,false,12,false,"",""]
 
  # ƒAƒNƒVƒ‡ƒâ€œÝ’è‚ÌŠÖ˜A•t‚¯
  ACTION_LIB = { 
    "ˆÚ“®"                 => "moving_setup",
    "ƒAƒNƒ^[ƒAƒjƒŽÀs"   => "action",
    "‰â€œ‹——£ƒAƒjƒ"         => "flying",
    "ƒAƒNƒ^[ƒAƒjƒ•ÏX"   => "change",
    "s“®ƒAƒjƒ"           => "animation1",
    "‘ΏۃAƒjƒ"           => "animation2",
    "ƒEƒGƒCƒg"             => "wait",
    "¶‰E”½â€œ]"             => "reverse",
    "‘M‚«ƒAƒjƒ"           => "flash",
    "Žc‘œ•¦"             => "shadow_on",
    "Žc‘œÁ‹Ž"             => "shadow_off",
    "ƒAƒNƒ^[ƒAƒjƒŒÅ’è"   => "freeze",
    "ƒAƒjƒŒÅ’è‰ðœ"       => "freeze_lifting",
    "ƒAƒjƒ[ƒVƒ‡ƒâ€œ‚Ì•¦" => "animation_start",
    "SE‚̉‰‘t"             => "play_se",
  }
  ACTION_LIB.default = "finish"
 
  # ƒAƒNƒVƒ‡ƒâ€œÝ’è‚Ì‚Æ‚«‚É ‰EŽèUŒ‚ or ¶ŽèUŒ‚ ‚ð”»•Ê‚·‚éANIME
  # "ƒAƒNƒ^[ƒAƒjƒ•ÏX#ATTACK"‚Æ‚µ‚½‚Æ‚«‚ÉATTACK_R‚Ü‚½‚ÍATTACK_L‚ð”»•Ê‚·‚é
  DUAL_WEAPONS_ANIME = [ATTACK]
 
  #ƒoƒgƒ‰[ƒAƒjƒ[ƒVƒ‡ƒâ€œƒpƒ^[ƒâ€œâ€(‚±‚±‚ðŠÔˆá‚¦‚é‚Ɛ³í‚ɃAƒCƒRƒâ€œ‚ªâ€œ®‚«‚Ü‚¹‚ñ)
  ANIME_PATARN = 3
  #•Ší•\Ž¦XÀ•W
  BLZ_X = {
  # X À•W‚̐ݒè@•ŠíƒAƒjƒ => [1, 2, 3] © ANIME_PATARN‚̐”‚ƍ‡‚킹‚é
  0=>[0,0,0,0],   # ƒAƒjƒ‚È‚µ
  1=>[2,2,2,2],   # U‚艺‚낵
  2=>[15,10,0,0], # “˂«
  3=>[2,2,2,2],   # U‚èã‚°
  4=>[0,0,3,3],   # ‹|Ae
  5=>[0,0,0,0],   # ’ljÁ—p
  6=>[0,0,0,0],   # ’ljÁ—p
  7=>[0,0,0,0],   # ’ljÁ—p
  8=>[0,0,0,0],   # ’ljÁ—p
  }
  #•Ší•\Ž¦YÀ•W
  BLZ_Y = {
  # Y À•W‚̐ݒè@•ŠíƒAƒjƒ => [1, 2, 3] © ANIME_PATARN‚̐”‚ƍ‡‚킹‚é
  0=>[0,0,0,0], # ƒAƒjƒ‚È‚µ
  1=>[6,6,6,6], # U‚艺‚낵
  2=>[6,6,6,6], # “˂«
  3=>[6,6,6,6], # U‚èã‚°
  4=>[8,8,8,8], # ‹|Ae
  5=>[0,0,0,0], # ’ljÁ—p
  6=>[0,0,0,0], # ’ljÁ—p
  7=>[0,0,0,0], # ’ljÁ—p
  8=>[0,0,0,0], # ’ljÁ—p
  }
  #•Ší•\Ž¦Šp“x
  BLZ_ANGLE = {
  # Y À•W‚̐ݒè@•ŠíƒAƒjƒ => [1, 2, 3] © ANIME_PATARN‚̐”‚ƍ‡‚킹‚é
  # •Ê‚É Ž® ‚ðŽg‚í‚È‚­‚Ä’èâ€‚Å‚à‚æ‚¢‚ªŽg‚Á‚½‚Ù‚¤‚ª‚í‚©‚è‚â‚·‚¢‚©‚àH
  0=>[0,0,0,0],                    # ƒAƒjƒ‚È‚µ
  1=>[75-45*3,75-45*2,75-45*1,75-45*1],    # U‚艺‚낵
  2=>[45,45,45,45],                   # “˂«
  3=>[100-45*1,100-45*2,100-45*3,00-45*4], # U‚èã‚°
  4=>[45,45,45,45],                # ‹|Ae
  5=>[0,0,0,0], # ’ljÁ—p
  6=>[0,0,0,0], # ’ljÁ—p
  7=>[0,0,0,0], # ’ljÁ—p
  8=>[0,0,0,0], # ’ljÁ—p
  }
 
  #--------------------------------------------------------------------------
  # œ ƒVƒFƒCƒN‚̐ݒè
  #--------------------------------------------------------------------------
  SHAKE_FILE = "ƒVƒFƒCƒN"  # ƒtƒ@ƒCƒ‹–¼
  SHAKE_POWER = 5          # ‹­‚³
  SHAKE_SPEED = 5          # ‘¬‚³
  SHAKE_DURATION = 5      # ŽžŠÔ
  #--------------------------------------------------------------------------
  # œ ã‰ºâ€½â€œ]‚̐ݒè
  #--------------------------------------------------------------------------
  UPSIDE_DOWN_FILE = "ã‰ºâ€½â€œ]" # ƒtƒ@ƒCƒ‹–¼
  #--------------------------------------------------------------------------
  # œ ¶‰E”½â€œ]‚̐ݒè
  #--------------------------------------------------------------------------
  REVERSE_FILE = "¶‰E”½â€œ]" # ƒtƒ@ƒCƒ‹–¼
  #--------------------------------------------------------------------------
  # œ ‰ñ“]‚̐ݒè
  #--------------------------------------------------------------------------
  TURNING_FILE = "‰ñ“]" # ƒtƒ@ƒCƒ‹–¼
  TURNING_DIRECTION = 1 # •ûŒüi1.”½ŽžŒv‰ñ‚è,-1.ŽžŒv‰ñ‚è)
  TURNING_SPEED = 40    # ‘¬‚³
  TURNING_DURATION = 1  # ‰ñ“]â€
  #--------------------------------------------------------------------------
  # œ ˆÚ“®‚̐ݒè
  #--------------------------------------------------------------------------
  MOVE_FILE = "ˆÚ“®"             # ƒtƒ@ƒCƒ‹–¼
  MOVE_RETURN = 1                # Œ³‚̈ʒu‚É–ß‚é‚©H
  MOVE_SPEED = 32                # ‘¬‚³
  MOVE_COORDINATES = [0,-640]    # Œ³‚̈ʒu‚©‚ç‚Ì‘Š‘΍À•W
  #--------------------------------------------------------------------------
  # œ ƒAƒjƒ’ljÁ‚̐ݒè
  #--------------------------------------------------------------------------
  ADD_ANIME_FILE = "ƒAƒjƒ’ljÁ"  # ƒtƒ@ƒCƒ‹–¼
  ADD_ANIME_ID = 0               # ƒAƒjƒ[ƒVƒ‡ƒâ€œID 
  #--------------------------------------------------------------------------
  # œ ƒfƒtƒHƒ‹ƒg‚ÆRTAB‚̃f[ƒ^•ÏŠ·
  #--------------------------------------------------------------------------
  def convert_battler
    return RTAB ? @active_actor : @active_battler
  end
  #--------------------------------------------------------------------------
  # œ ƒfƒtƒHƒ‹ƒg‚ÆRTAB‚̃f[ƒ^•ÏŠ·2
  #--------------------------------------------------------------------------
  def convert_battler2(*arg)
    return RTAB ? arg[0] : @active_battler
  end
end
#--------------------------------------------------------------------------
# œ ƒAƒNƒVƒ‡ƒâ€œÝ’è
#--------------------------------------------------------------------------
module BattleActions
 
  # ‰º‚Ì‚à‚Ì‚Í‚ ‚­‚Ü‚Å‚àˆê—á‚È‚Ì‚Å
  # “Ǝ©‚ɍì‚Á‚Ä‚­‚¾‚³‚¢B
 
  Actions = {
 
  "’ʏíUŒ‚" => [
 
  "‘M‚«ƒAƒjƒ",
  "s“®ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#target,32,0,64,0",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#NORMAL",
  "ƒEƒGƒCƒg#5",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#ATTACK",
  "‰â€œ‹——£ƒAƒjƒ",
  "‘ΏۃAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "SE‚̉‰‘t#016-Jump02,80,100",
  "ˆÚ“®#self,0,0,48,5",
  "I—¹"
  ],
 
  "ƒGƒlƒ~[UŒ‚" => [
 
  "‘M‚«ƒAƒjƒ",
  "s“®ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,-36,0,12,0",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#NORMAL",
  "ƒEƒGƒCƒg#5",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#ATTACK",
  "‰â€œ‹——£ƒAƒjƒ",
  "‘ΏۃAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,0,0,12,0",
  "I—¹"
  ],
 
 
  "p”­â€œ®" => [
 
  "‘M‚«ƒAƒjƒ",
  "s“®ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,-32,0,4,0",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#MAGIC",
  "ƒEƒGƒCƒg#15",
  "‰â€œ‹——£ƒAƒjƒ",
  "‘ΏۃAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,0,0,4,2",
  "I—¹"
  ],
 
  "ƒAƒCƒeƒ€Žg—p" => [
 
  "‘M‚«ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,-32,0,4,0",
  "s“®ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#ITEM",
  "ƒEƒGƒCƒg#15",
  "‰â€œ‹——£ƒAƒjƒ",
  "‘ΏۃAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,0,0,4,2",
  "I—¹"
  ],
 
  "•¥‚¢â€²‚¯" => [
 
  "‘M‚«ƒAƒjƒ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#target_near,50,0,48,6",  
  "¶‰E”½â€œ]",
  "ƒAƒNƒ^[ƒAƒjƒŒÅ’è#ATTACK#3",
  "s“®ƒAƒjƒ",
  "SE‚̉‰‘t#135-Light01,100,100",
  "ƒAƒjƒ[ƒVƒ‡ƒâ€œ‚Ì•¦#self,42",
  "ƒEƒGƒCƒg#15",
  "¶‰E”½â€œ]",
  "Žc‘œ•¦",
  "ˆÚ“®#target_far,-50,0,48,0",
  "‘ΏۃAƒjƒ",
  "Žc‘œÁ‹Ž",
  "ƒAƒjƒŒÅ’è‰ðœ",
  "ƒAƒNƒ^[ƒAƒjƒ•ÏX#WALK_L",
  "ˆÚ“®#self,0,0,48,1,0",
  "I—¹"
  ],
  } # ‚±‚±‚ŏI‚í‚è@Á‚³‚È‚¢‚Å‚­‚¾‚³‚¢
 
end
 
module RPG
  class Weapon
    #--------------------------------------------------------------------------
    # œ ƒAƒNƒVƒ‡ƒâ€œÝ’è
    #--------------------------------------------------------------------------
    def battle_actions
      case @id
      when 1 # ƒuƒƒâ€œƒYƒ\[ƒh
        return BattleActions::Actions["’ʏíUŒ‚"]
      end 
      return BattleActions::Actions["’ʏíUŒ‚"] # ƒfƒtƒHƒ‹ƒg’l
    end
  end
  class Skill
    #--------------------------------------------------------------------------
    # œ ƒAƒNƒVƒ‡ƒâ€œÝ’è
    #--------------------------------------------------------------------------
    def battle_actions
      if self.magic?
        return BattleActions::Actions["p”­â€œ®"] # ƒfƒtƒHƒ‹ƒg’l
      else
        return BattleActions::Actions["•¥‚¢â€²‚¯"] # ƒfƒtƒHƒ‹ƒg’l
      end
    end
  end
  class Item
    #--------------------------------------------------------------------------
    # œ ƒAƒNƒVƒ‡ƒâ€œÝ’è
    #--------------------------------------------------------------------------
    def battle_actions
      return BattleActions::Actions["ƒAƒCƒeƒ€Žg—p"] # ƒfƒtƒHƒ‹ƒg’l
    end
  end
end
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒVƒ‡ƒâ€œÝ’è
  #--------------------------------------------------------------------------
  def battle_actions
    return BattleActions::Actions["ƒGƒlƒ~[UŒ‚"] # ƒfƒtƒHƒ‹ƒg’l
  end
end
module RPG
=begin
 
@™ à–¾
 
@ƒAƒCƒRƒâ€œ•Ší‚Ì“®‚«•û‚̐ݒè‚Å‚·B
@module Side_view ‚Ì BLZ_X, BLZ_Y, BLZ_ANGLE ‚ªŽQÆ‚³‚ê‚Ü‚·B
@‚ ‚­‚Ü‚Å‚à“®‚«•û‚̐ݒè‚Ȃ̂ʼn摜‚̓AƒCƒRƒâ€œ‚ªŽg‚í‚ê‚Ü‚·B
 
  œ ƒJƒXƒ^ƒ}ƒCƒY•û–@
 
  ‚PAƒf[ƒ^ƒx[ƒX‚©‚ç‚̐ݒèi‰‹‰ŽÒŒü‚¯j
 
    •ŠíƒAƒjƒ‘®«‚ðì‚èA‚»‚ê‚𕐊í‚ւ‚¯‚Ü‚·B
    @@
    —á@•ŠíƒAƒjƒ1@â€Žš‚Í”¼Šp‚ŁAƒXƒy[ƒX‚ÍŠJ‚¯‚È‚¢
 
  ‚QAƒXƒNƒŠƒvƒg‚©‚ç‚̐ݒè(’†‹‰ŽÒŒü‚¯)
 
    case @id
    when 1,2,3,4
      return 1
    when 5,6,7,8
      return 2
    end
    return 0
 
    ‚̂悤‚É•`‚­‚ÆID•Ê‚ÉŽw’è‰Â”\‚Å‚·B
 
    ‚»‚Ì‘¼‚É‚àAðŒ•ªŠò‚È‚Ç‚ð‚¢‚ê‚Đݒ肵‚Ä‚à—Ç‚¢‚Å‚·B
    —Ⴆ‚΁A‘®«ID50‚ðŽ‚Á‚Ä‚¢‚é‚Æ‚«‚́AƒAƒjƒ‚P‚Æ‚µ‚½‚¢‚È‚ç
 
    if @element_set.include?(50)
      return 1
    end
 
    ‚Æ‚µ‚Ü‚·B
 
    ‚PA‚̃f[ƒ^ƒx[ƒX‚©‚ç‚̐ݒè‚ðŽg‚í‚È‚¢ê‡
    element_name = "•ŠíƒAƒjƒ"
    for i in @element_set
      if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
        return $1.to_i
      end
    end
    ‚̕”•ª‚͍폜‚µ‚Ä‚à‚©‚Ü‚¢‚Ü‚¹‚ñ
 
 
=end
  class Weapon
    #--------------------------------------------------------------------------
    # œ •ŠíƒAƒjƒ[ƒVƒ‡ƒâ€œ
    #--------------------------------------------------------------------------
    def anime
      # ‘®«Žæ“¾—p
      element_name = "•ŠíƒAƒjƒ"
      for i in @element_set
        if $data_system.elements[i] =~ /#{element_name}([+-]?[0-9]+)?(%)?/
          return $1.to_i
        end
      end
      # ƒJƒXƒ^ƒ}ƒCƒYÝ’è@ID Žw’è
      case @id
      when 1,2,3,4
        return 1
      when 5,6,7,8
        return 2
      end
      return 1 # ƒfƒtƒHƒ‹ƒg’l
    end
  end
end
=begin
#--------------------------------------------------------------------------
# œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œ
#--------------------------------------------------------------------------
@™ à–¾
 
@  s“®ŽÒ‚©‚ç‘Ώێ҂ɃAƒjƒ‚ð”ò‚΂µ‚Ü‚·B
@  ”ò‚΂·ƒAƒjƒ‚ð@ƒf[ƒ^ƒx[ƒX]ƒAƒjƒ[ƒVƒ‡ƒâ€œ@‚ōì‚è‚Ü‚·B
    [ƒAƒjƒ[ƒVƒ‡ƒâ€œID, ƒXƒs[ƒh, ‰•œ‚·‚é‚©H,’¼ü(false)or‹Èü(true)]@‚ÅŽw’肵‚Ü‚·B
 
 
  œ ƒJƒXƒ^ƒ}ƒCƒY•û–@
 
    case @id
    when 17,18,19,20
      return [101,32,false,false]
    when 21,22,23,24
      return [102,32,false,false]
    end
    return 0
 
    ‚̂悤‚É•`‚­‚ÆID•Ê‚ÉŽw’è‰Â”\‚Å‚·B
 
 
  œ ƒAƒjƒ[ƒVƒ‡ƒâ€œID
 
  ”ò‚΂·ƒAƒjƒ[ƒVƒ‡ƒâ€œID‚Å‚·B’Z‚¢ê‡‚ÍŒJ‚è•Ô‚µ‚Å•\Ž¦‚³‚ê‚Ü‚·B
 
 
  œ ƒXƒs[ƒh
 
  ‘å‚«‚¢‚Ù‚¤‚ª‘‚¢i‚O‚¾‚ƃAƒjƒ‚͈Ú“®‚µ‚Ü‚¹‚ñj
 
  1  1ƒtƒŒ[ƒ€‚Å1ƒhƒbƒgi‚ނƍl‚¦‚Ä‚­‚¾‚³‚¢B
 
  œ ‰•œ‚·‚é‚©H
 
  true ‚Æ‚µ‚½ê‡Aƒu[ƒƒ‰ƒâ€œ‚̂悤‚ɃAƒjƒ‚ª–ß‚è‚Ü‚·B
 
  œ ’¼ü(false)or‹Èü(true)
 
  true  = ‘ΏۂɌü‚©‚Á‚ċȐü‚ŁAƒAƒjƒ‚ªâ€ò‚Ñ‚Ü‚·BiC³‚Ì—]’n‚ ‚è‚Å‚·‚ªEEEj
  false = ‘ΏۂɌü‚©‚Á‚Ä’¼ü‚ŁAƒAƒjƒ‚ªâ€ò‚Ñ‚Ü‚·B
 
=end
module RPG
  class Weapon
    #--------------------------------------------------------------------------
    # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œ
    #--------------------------------------------------------------------------
    def flying_anime
      # ID Žw’è ‚Ì—á
      #case @id
      #when 34 # ƒu[ƒƒ‰ƒâ€œ‚Á‚Û‚¢‚â‚Â
      #  return [103,32,true,true]
      #when 17,18,19,20
      #  return [101,32,false,false]
      #when 21,22,23,24
      #  return [102,32,false,false]
      #end
      return [0,0,false,false] # ƒfƒtƒHƒ‹ƒg’l
    end
  end
  class Skill
    #--------------------------------------------------------------------------
    # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œ
    #--------------------------------------------------------------------------
    def flying_anime
      return [0,0,false,false] # ƒfƒtƒHƒ‹ƒg’l
    end
  end
  class Item
    #--------------------------------------------------------------------------
    # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œ
    #--------------------------------------------------------------------------
    def flying_anime
      return [0,0,false,false] # ƒfƒtƒHƒ‹ƒg’l
    end
  end
end
 
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œ
  #--------------------------------------------------------------------------
  def flying_anime
    return [0,0,false,false] # ƒfƒtƒHƒ‹ƒg’l
  end
end
#==============================================================================
# ¡ Game_Battler
#==============================================================================
class Game_Battler
  include Side_view
  #--------------------------------------------------------------------------
  # œ ’ljÁEŒöŠJƒCƒâ€œƒXƒ^ƒâ€œƒX•Ïâ€
  #--------------------------------------------------------------------------
  attr_accessor :height                  # ‰æ‘œ‚̍‚‚³
  attr_accessor :real_x                  # XÀ•W•â³
  attr_accessor :real_y                  # YÀ•W•â³
  attr_accessor :real_zoom               # Šg‘å—¦
  attr_accessor :wait_count              # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ‘Ò‚¿ŽžŠÔ
  attr_accessor :wait_count2             # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ‘Ò‚¿ŽžŠÔ2
  attr_accessor :pattern                 # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ƒJƒEƒâ€œƒgiƒLƒƒƒ‰)
  attr_accessor :shake                   # ƒVƒFƒCƒNŠJŽnƒtƒ‰ƒbƒO
  attr_accessor :reverse                 # ¶‰E”½â€œ]ƒtƒ‰ƒbƒO
  attr_accessor :shadow                  # Žc‘œƒtƒ‰ƒbƒO
  attr_accessor :flash_flag              # ‘M‚«ƒtƒ‰ƒbƒO
  attr_reader   :ox                      # XÀ•W•â³
  attr_reader   :oy                      # YÀ•W•â³
  attr_reader   :flying_x                # ‰â€œ‹——£ƒAƒjƒXÀ•W
  attr_reader   :flying_y                # ‰â€œ‹——£ƒAƒjƒYÀ•W
  attr_reader   :flying_anime            # ‰â€œ‹——£ƒAƒjƒ
  attr_reader   :animation1_on           # s“®ƒAƒjƒŠJŽnƒtƒ‰ƒbƒO
  attr_reader   :animation2_on           # ‘ΏۃAƒjƒŠJŽnƒtƒ‰ƒbƒO
  #--------------------------------------------------------------------------
  # œ ƒfƒtƒHƒ‹ƒg‚̃Aƒjƒ[ƒVƒ‡ƒâ€œ‘Ò‚¿ŽžŠÔ‚ðŽæ“¾
  #--------------------------------------------------------------------------
  def animation_duration=(animation_duration)
    @_animation_duration = animation_duration
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹ŠJŽnŽž‚̃ZƒbƒgƒAƒbƒv
  #--------------------------------------------------------------------------
  def start_battle
    @height = 0
    @real_x = 0
    @real_y = 0
    @real_zoom = 1.0
    @battler_condition = ""
    @action = nil
    @battle_actions = []
    @battler_action = false
    @step = 0
    @anime_on = false
    @wait_count = 0
    @wait_count2 = 0
    @ox = 0
    @oy = 0
    @pattern = 0
    @pattern_log = true
    @pattern_freeze = false
    @condition_freeze = false
    @active = false
    @move_distance = nil
    @move_wait = 0
    @move_coordinates = [0,0,0,0]
    @flying_distance = nil
    @flying_wait = 0
    @flying_x = 0
    @flying_y = 0
    @flash_flag = {}
    self.flying_clear
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®’†â€»’è
  #--------------------------------------------------------------------------
  def moving?
    # XÀ•W•â³‚Ü‚½‚́AYÀ•W•â³‚ª0‚Å‚È‚¯‚ê‚΁AˆÚ“®’†
    return (@ox != 0 or @oy != 0)
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®I—¹â€»’è
  #--------------------------------------------------------------------------
  def move_end?
    return (@ox == @move_coordinates[0] and @oy == @move_coordinates[1])
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒVƒ‡ƒâ€œŠJŽnÝ’è
  #--------------------------------------------------------------------------
  def action(flag = true)
    @battler_action = flag
    @animation1_on = false
    @animation2_on = false
    @step = "setup"
  end    
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒVƒ‡ƒâ€œ’†â€»’è
  #--------------------------------------------------------------------------
  def action?
    return @battler_action 
  end
  #--------------------------------------------------------------------------
  # œ ‘M‚«â€»’è
  #--------------------------------------------------------------------------
  def flash?
    return @flash_flg
  end
  #--------------------------------------------------------------------------
  # œ í“¬•s”\”»’è
  #--------------------------------------------------------------------------
  def anime_dead?
    if $game_temp.in_battle and !RTAB
      if [2,3,4,5].include?($scene.phase4_step)
        return @last_dead
      end
    end
    return @last_dead = self.dead?
  end
  #--------------------------------------------------------------------------
  # œ ƒsƒâ€œƒ`ó‘Ô”»’è
  #--------------------------------------------------------------------------
  def crisis?
    if $game_temp.in_battle and !RTAB
      if [2,3,4,5].include?($scene.phase4_step)
        return @last_crisis
      end
    end
    return @last_crisis = (self.hp <= self.maxhp / 4 or badstate?)
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒbƒhƒXƒe[ƒg”»’è
  #--------------------------------------------------------------------------
  def badstate?
    for i in @states
      unless $data_states[i].nonresistance
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # œ ”òs
  #--------------------------------------------------------------------------
  def fly
    if @fly != nil
      return @fly
    end
    for id in @states
      if FLY_STATES.include?($data_states[id].name)
        return 60
      end
    end
    return 0
  end
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ–Ú•WÀ•W‚ÌŒvŽZ
  #--------------------------------------------------------------------------
  def flying_setup
    # “ñ“x–Ú‚ÍŽÀs‚µ‚È‚¢
    return if @flying_distance != nil && !camera_correctness
    if RTAB
      targets = @target
    else
      targets = $scene.target_battlers
    end
    # –Ú“IÀ•W‚ðŒvŽZ
    @f_target_x = 0
    @f_target_y = 0
    for t in targets
      @f_target_x += t.screen_x 
      @f_target_y += t.screen_y
    end
    if targets != []
      @f_target_x /= targets.size
      @f_target_y /= targets.size
    else
      @flying_distance = 0
      return
    end
    # ‹——£‚ÌŒvŽZ
    @flying_distance = (self.screen_x - @f_target_x).abs + (self.screen_y - @f_target_y).abs
    @flying_end = false
  end
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ
  #--------------------------------------------------------------------------
  def flying_animation
    # –ß‚é
    if @step != "flying" or @flying_distance.nil?
      return [false,true]
    end
    # ‚ ‚ç‚©‚¶‚ߌvŽZ
    self_x = self.screen_x
    self_y = self.screen_y
    @flying_distance = @flying_distance == 0 ? 1 : @flying_distance
    n1 = @flying_wait / @flying_distance.to_f
    if @flying_distance - @flying_wait > @flying_distance / 2
      n2 = 1.0 + 10.0 * @flying_wait / @flying_distance.to_f
    else
      n2 = 1.0 + 10.0 * (@flying_distance - @flying_wait) / @flying_distance.to_f
    end
    if !@flying_anime[4]
      # ’¼üˆÚ“®
      x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
      y = (self_y + 1.0 * (@f_target_y - self_y) * n1).to_i
    else
      # ‹ÈüˆÚ“®
      if !@flying_proceed_end
        x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
        y = (self_y + 1.0 * (@f_target_y - self_y) * n1 - n2**2).to_i
      else
        x = (self_x + 1.0 * (@f_target_x - self_x) * n1).to_i
        y = (self_y + 1.0 * (@f_target_y - self_y) * n1 + n2**2).to_i
      end
    end
    # À•W‘ã“ü
    @flying_x = x
    @flying_y = y
    # ƒEƒGƒCƒg
    if !@flying_proceed_end
      # ŠJŽn
      @flying_proceed_start = @flying_wait == 0
      @flying_wait += @flying_anime[1]
      @flying_wait = [@flying_wait,@flying_distance].min
      @flying_proceed_end = @flying_wait == @flying_distance
    else
      # ŠJŽn
      @flying_return_start = @flying_wait == @flying_distance
      @flying_wait -= @flying_anime[1]
      @flying_wait = [@flying_wait,0].max
      @flying_return_end = @flying_wait == 0
    end
    if @flying_anime[1] == 0
      @flying_end = true
    elsif !@flying_anime[2]
      @flying_end = @flying_proceed_end
    else
      @flying_end = @flying_return_end
    end
    # ’l‚ð•Ô‚·iƒAƒjƒŠJŽn,ƒAƒjƒI—¹)
    return [@flying_proceed_start,@flying_end]
  end
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ‰Šú‰»
  #--------------------------------------------------------------------------
  def flying_clear
    @flying_proceed_start = false
    @flying_proceed_end = false
    @flying_return_start = false
    @flying_return_end = false
    @flying_end = true
    @flying_anime = [0,0,false,false]
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®
  #--------------------------------------------------------------------------
  def move
    # ‹——£‚ÌŒvŽZ
    @move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +
                     (@move_coordinates[3] - @move_coordinates[1]).abs
    if @move_distance > 0
      return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]
      array = @move_coordinates
      # ƒWƒƒƒâ€œƒv•â³’l‚ÌŒvŽZ
      n = 100.0 * @move_wait / @move_distance 
      jump = -@move_action[4] * n * (100 - n) / 100.0
      @ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i
      @oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i
      # ƒEƒGƒCƒg
      @move_wait -= @move_action[3]
      @move_wait = [@move_wait,0].max
    end
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®ƒAƒNƒVƒ‡ƒâ€œ‚̎擾
  #--------------------------------------------------------------------------
  def get_move_action
    string = @action.split(/#/)[1]
    string = string.split(/,/)
    @move_action = [string[0],string[1].to_i,string[2].to_i,string[3].to_i,string[4].to_i,string[5].to_i]
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒVƒ‡ƒâ€œ‚̎擾
  #--------------------------------------------------------------------------
  def get_step
    if @action.nil?
      @step = "finish"
      return 
    end
    return ACTION_LIB[@action.split(/#/)[0]]
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ŽŸ‚̃AƒNƒVƒ‡ƒâ€œ‚Ö)
  #--------------------------------------------------------------------------
  def update_next
    @action = @battle_actions.shift
    @step = get_step
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (“®ìŽæ“¾)
  #--------------------------------------------------------------------------
  def update_setup
    # ƒAƒNƒVƒ‡ƒâ€œ‚̎擾
    self.get_actions
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ˆÚ“®Žæ“¾)
  #--------------------------------------------------------------------------
  def update_moving_setup
    # ˆÚ“®ƒAƒNƒVƒ‡ƒâ€œ‚̎擾
    self.get_move_action
    # ˆÚ“®–Ú•W‚̐ݒè
    self.move_setup
    @step = "moving"
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ˆÚ“®)
  #--------------------------------------------------------------------------
  def update_moving
    # ˆÚ“®
    self.move
    self.condition = @battler_condition
    # ˆÚ“®Š®—¹‚µ‚½‚玟‚̃Xƒeƒbƒv‚Ö
    if move_end?
      update_next
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒAƒjƒŽÀs)
  #--------------------------------------------------------------------------
  def update_action
    con = @action.split(/#/)[1]
    # ‰EŽèE¶Žè‚𕪂¯‚é
    if DUAL_WEAPONS_ANIME.include?(con)
      if !@first_weapon and @second_weapon
        con = con + "_L"
      else
        con = con + "_R"
      end
    end
    # ƒAƒjƒ•ÏX
    self.condition = con
    # ƒ‹[ƒv‚©â€Û‚©
    if !ANIME[@battler_condition][1]
      self.anime_on
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (‰â€œ‹——£ƒAƒjƒ)
  #--------------------------------------------------------------------------
  def update_flying
    # –Ú•W‚̐ݒè
    self.flying_setup
    # ‰â€œ‹——£ƒAƒjƒI—¹
    if @flying_end or @flying_anime == [0,0,false,false]
      self.flying_clear
      update_next
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒAƒjƒ•ÏX)
  #--------------------------------------------------------------------------
  def update_change
    con = @action.split(/#/)[1]
    # ‰EŽèE¶Žè‚𕪂¯‚é
    if DUAL_WEAPONS_ANIME.include?(con)
      if !@first_weapon and @second_weapon
        con = con + "_L"
      else
        con = con + "_R"
      end
    end
    # ƒAƒjƒ•ÏX
    self.condition = con
    # ƒ‹[ƒv‚©â€Û‚©
    if !ANIME[@battler_condition][1]
      self.anime_on
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (s“®ƒAƒjƒ)
  #--------------------------------------------------------------------------
  def update_animation1
    @animation1_on = true
    # s“®ƒAƒjƒ‚ÌŒã‚ɍs“®‚ðŠJŽn‚·‚é
    if $scene.phase4_step == 3
      id = RTAB ? @anime1 : $scene.animation1_id
      animation = $data_animations[id]
      frame_max = animation != nil ? animation.frame_max : 0
      @wait_count2 = frame_max * 2
      return
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (‘ΏۃAƒjƒ)
  #--------------------------------------------------------------------------
  def update_animation2
    @animation2_on = true
    # s“®ƒAƒjƒ‚ÌŒã‚ɍs“®‚ðŠJŽn‚·‚é
    if $scene.phase4_step == 4
      id = RTAB ? @anime2 : $scene.animation2_id
      animation = $data_animations[id]
      frame_max = animation != nil ? animation.frame_max : 0
      @wait_count2 = frame_max * 2
      return
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒEƒGƒCƒg)
  #--------------------------------------------------------------------------
  def update_wait
    @wait_count2 = @action.split(/#/)[1].to_i
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (Žc‘œ•\Ž¦)
  #--------------------------------------------------------------------------
  def update_shadow_on
    @shadow = true
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (Žc‘œÁ‹Ž)
  #--------------------------------------------------------------------------
  def update_shadow_off
    @shadow = false
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (¶‰E”½â€œ])
  #--------------------------------------------------------------------------
  def update_reverse
    @reverse = @reverse ? false : true
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (‘M‚«ƒAƒjƒ)
  #--------------------------------------------------------------------------
  def update_flash
    # ‘M‚«ƒAƒjƒ‚ÌŒã‚ɍs“®‚ðŠJŽn‚·‚é
    if @flash_flag["normal"]
      @wait_count = $scene.flash_duration
      @flash_flag["normal"] = false
      return
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (SE‚̉‰‘t)
  #--------------------------------------------------------------------------
  def update_play_se
    data = @action.split(/#/)[1]
    data = data.split(/,/)
    # SE ‚ð‰‰‘t
    Audio.se_play("Audio/SE/" + data[0], data[1].to_i, data[2].to_i)
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒAƒNƒ^[ƒAƒjƒŒÅ’è)
  #--------------------------------------------------------------------------
  def update_freeze
    con = @action.split(/#/)[1]
    # ‰EŽèE¶Žè‚𕪂¯‚é
    if DUAL_WEAPONS_ANIME.include?(con)
      if !@first_weapon and @second_weapon
        con = con + "_L"
      else
        con = con + "_R"
      end
    end
    # ƒAƒjƒ•ÏX
    self.condition = con
    @pattern = @action.split(/#/)[2].to_i
    @pattern_freeze = true
    @condition_freeze = true
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒAƒNƒ^[ƒAƒjƒŒÅ’è‰ðœ)
  #--------------------------------------------------------------------------
  def update_freeze_lifting
    @pattern_freeze = false
    @condition_freeze = false
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒAƒjƒ[ƒVƒ‡ƒâ€œ‚Ì•\Ž¦)
  #--------------------------------------------------------------------------
  def update_animation_start
    data = @action.split(/#/)[1]
    data = data.split(/,/)
    target = data[0] 
    animation_id = data[1].to_i
    if RTAB
      case target
      when "self"
        @animation.push([animation_id,true])
      when "target"
        for tar in @target
          tar.animation.push([animation_id, true])
        end
      end
    else
      case target
      when "self"
        @animation_id = animation_id
        @animation_hit = true
      when "target"
        for tar in $scene.target_battlers
          tar.animation_id = animation_id
          tar.animation_hit = true
        end
      end
    end
    update_next
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (“®ìI—¹)
  #--------------------------------------------------------------------------
  def update_finish
    # “®ìI—¹
    @battler_action = false
    @step = "setup"
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‰[‚̏ó‘ԁiƒoƒgƒ‰[ƒOƒ‰ƒtƒBƒbƒN‚̃^ƒCƒv)
  #--------------------------------------------------------------------------
  def condition
    return @battler_condition
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‰[‚̏ó‘Ô •ÏXiƒoƒgƒ‰[ƒOƒ‰ƒtƒBƒbƒN‚̃^ƒCƒv)
  #--------------------------------------------------------------------------
  def condition=(condition)
    return if @condition_freeze
    if @battler_condition != condition
      @wait_count = ANIME[condition][2]
      @pattern = 0
    end
    @battler_condition = condition
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  def update
    # ƒEƒFƒCƒg’†‚̏ꍇ
    if @wait_count == 0
      # ƒpƒ^[ƒâ€œXV
      self.char_animation
      @wait_count = ANIME[@battler_condition][2]
    end
    # ƒpƒ^[ƒâ€œXV
    self.char_animation
    # ƒEƒFƒCƒg’†‚̏ꍇ
    if @wait_count2 > 0
      return
    end
 
    # s“®ƒAƒjƒ[ƒVƒ‡ƒâ€œ
    if @battler_action
      method("update_" + @step).call
      return
    end
 
    # ƒf[ƒ^‰Šú‰»
    @animation1_on = false
    @animation2_on = false
    @action = nil
    @battle_actions = []
    @move_wait = 0
    @move_distance = nil
    @flying_wait = 0
    @flying_distance = nil
    @flash = false
 
    # ’ʏíE‘Ò‹@
    return self.condition = NORMAL
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒVƒ‡ƒâ€œ‚̎擾
  #--------------------------------------------------------------------------
  def get_actions
    skill = $data_skills[self.current_action.skill_id]
    item = $data_items[self.current_action.item_id]
    kind = self.current_action.kind
    # “®ìŽæ“¾
    @battle_actions = []
    # ƒXƒLƒ‹
    if skill != nil && kind == 1
      @battle_actions = skill.battle_actions.dup
      @flying_anime = skill.flying_anime
    # ƒAƒCƒeƒ€
    elsif item != nil && kind == 2
      @battle_actions = item.battle_actions.dup
      @flying_anime = item.flying_anime
    # ¶ŽèUŒ‚
    elsif !@first_weapon and @second_weapon and self.is_a?(Game_Actor)
      @battle_actions = self.battle_actions2.dup
      @flying_anime = self.flying_anime2
    # ‰EŽèUŒ‚
    elsif self.current_action.basic == 0 and
      self.is_a?(Game_Actor) and self.current_action.kind == 0
      @battle_actions = self.battle_actions1.dup
      @flying_anime = self.flying_anime1
    # ’ʏíUŒ‚
    elsif self.current_action.basic == 0 and self.current_action.kind == 0
      @battle_actions = self.battle_actions.dup
      @flying_anime = self.flying_anime
    else
      @battle_actions = ["I—¹"]
      @flying_anime = [0,0,false,false]
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒ‹[ƒv‚µ‚È‚¢ƒAƒjƒ‚̃Zƒbƒg
  #--------------------------------------------------------------------------
  def anime_on
    @pattern = 0
    @pattern_log = true
    return
  end
  #--------------------------------------------------------------------------
  # œ ƒpƒ^[ƒâ€œXV
  #--------------------------------------------------------------------------
  def char_animation
    # ƒpƒ^ƒâ€œŒÅ’è‚̏ꍇ‚à‚Ç‚é
    return if @pattern_freeze
    # ƒ‹[ƒv‚µ‚È‚¢ƒAƒjƒ‚̏ꍇ 1234 ‚ÅŽ~‚Ü‚é
    if !ANIME[@battler_condition][1] && @pattern == 3
      return
    end
    # ƒAƒjƒ‚³‚¹‚È‚¢ê‡ 1 ‚ÅŽ~‚Ü‚é
    if ANIME[@battler_condition][4]
      @pattern = 0
      return
    end
    @pattern = (@pattern + 1) % 4
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒjƒƒ^ƒCƒv
  #--------------------------------------------------------------------------
  def anime_type
    return ANIME[@battler_condition] != nil ? ANIME[@battler_condition][0] : 0
  end
end
#==============================================================================
# ¡ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  include Side_view
  #--------------------------------------------------------------------------
  # œ ƒZƒbƒgƒAƒbƒv
  #--------------------------------------------------------------------------
  alias side_view_setup setup
  def setup(actor_id)
    side_view_setup(actor_id)
    start_battle
  end
  #--------------------------------------------------------------------------
  # œ “ñ“•Ší‚ÌIDŽæ“¾@¦ƒGƒ‰[‰ñ”ð—p
  #--------------------------------------------------------------------------
  def weapon2_id
    return @weapon2_id != nil ? @weapon2_id : 0
  end
  #--------------------------------------------------------------------------
  # œ X•ûŒü ƒ|ƒWƒVƒ‡ƒâ€œ Žæ“¾
  #--------------------------------------------------------------------------
  def position
    return $data_classes[@class_id].position
  end
  #--------------------------------------------------------------------------
  # œ Y•ûŒü ƒ|ƒWƒVƒ‡ƒâ€œ Žæ“¾
  #--------------------------------------------------------------------------
  def position2
    return self.index
  end
  #--------------------------------------------------------------------------
  # œ •ŠíƒAƒjƒƒ^ƒCƒv
  #--------------------------------------------------------------------------
  def weapon_anime_type(type = @battler_condition)
    file_name  = weapon_anime_type0(type)
    visible   = weapon_anime_type1(type)
    z         = weapon_anime_type2(type)
    motion    = weapon_anime_type3(type)
    return [file_name,visible,z,motion]
  end
  # •ŠíƒAƒCƒRƒâ€œŽæ“¾
  def weapon_anime_type0(type = @battler_condition)
    type = ANIME[type][5]
    return weapon_anime1 if type == "‰EŽè"
    return weapon_anime2 if type == "¶Žè"
    return nil
  end
  # •\Ž¦E”ñ•\Ž¦‚̎擾
  def weapon_anime_type1(type = @battler_condition)
    return ANIME[type][3]
  end
  # ƒoƒgƒ‰[‚æ‚èã‚É•\Ž¦‚·‚é‚©‚Ç‚¤‚©
  def weapon_anime_type2(type = @battler_condition)
    type = ANIME[type][5]
    return true if type == "¶Žè"
    return false
  end
  # •Ší‚Ì“®ìNoDŽæ“¾
  def weapon_anime_type3(type = @battler_condition)
    type = ANIME[type][5]
    return extend_weapon_anime1 if type == "‰EŽè"
    return extend_weapon_anime2 if type == "¶Žè"
    return 0
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾(ƒJƒƒ‰•â³–³‚µ)
  #--------------------------------------------------------------------------
  def true_x
    return PARTY_X + position * FORMATION_X + @ox
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾(ƒJƒƒ‰•â³–³‚µ)
  #--------------------------------------------------------------------------
  def true_y
    # ƒp[ƒeƒB“à‚Ì•À‚я‡‚©‚ç Y À•W‚ðŒvŽZ‚µ‚Ä•Ô‚·
    if self.index != nil
      y = position2 * FORMATION_Y + PARTY_Y + @oy - @height / 2
      return y
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾
  #--------------------------------------------------------------------------
  def screen_x(true_x = self.true_x)
    return 320 + (true_x - 320) * @real_zoom + @real_x
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾
  #--------------------------------------------------------------------------
  def screen_y(true_y = self.true_y)
    return true_y * @real_zoom + @real_y
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Z À•W‚̎擾
  #--------------------------------------------------------------------------
  def screen_z
    return screen_y + 1000
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾(ˆÚ“®‚È‚Ç‚µ‚Ä‚¢‚È‚¢ê‡)
  #--------------------------------------------------------------------------
  def base_x
    return 320 + (true_x - @ox - 320) * @real_zoom + @real_x
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾
  #--------------------------------------------------------------------------
  def base_y
    return (true_y - @oy) * @real_zoom + @real_y
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Šg‘å—¦‚̎擾
  #--------------------------------------------------------------------------
  def zoom
    return ($scene.zoom_rate[1] - $scene.zoom_rate[0]) *
                          (true_x + @fly) / 480 + $scene.zoom_rate[0]
  end
  #--------------------------------------------------------------------------
  # œ UŒ‚—pAƒoƒgƒ‹‰æ–Ê X À•W‚̎擾
  #--------------------------------------------------------------------------
  def attack_x(z)
    return (320 - true_x) * z * 0.75
  end
  #--------------------------------------------------------------------------
  # œ UŒ‚—pAƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾
  #--------------------------------------------------------------------------
  def attack_y(z)
    return (160 - (true_y + fly / 4) * z + @height * zoom * z / 2) * 0.75
  end
  #--------------------------------------------------------------------------
  # œ ‘M‚«‘Ò‚¿ŽžŠÔ
  #--------------------------------------------------------------------------
  def flash_duration
    return $scene.flash_duration
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def battle_actions1
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.battle_actions : BattleActions::Actions["’ʏíUŒ‚"]
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def battle_actions2
    weapon = $data_weapons[@weapon2_id]
    return weapon != nil ? weapon.battle_actions : BattleActions::Actions["’ʏíUŒ‚"]
  end
  #--------------------------------------------------------------------------
  # œ •ŠíƒAƒjƒ[ƒVƒ‡ƒâ€œ “®‚«•û Žæ“¾
  #--------------------------------------------------------------------------
  def extend_weapon_anime1
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.anime : 0
  end
  #--------------------------------------------------------------------------
  # œ •ŠíƒAƒjƒ[ƒVƒ‡ƒâ€œ “®‚«•û Žæ“¾
  #--------------------------------------------------------------------------
  def extend_weapon_anime2
    weapon = $data_weapons[@weapon2_id]
    return weapon != nil ? weapon.anime : 0
  end
  #--------------------------------------------------------------------------
  # œ •ŠíƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def weapon_anime1
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.icon_name : ""
  end
  #--------------------------------------------------------------------------
  # œ •ŠíƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def weapon_anime2
    weapon = $data_weapons[@weapon2_id]
    return weapon != nil ? weapon.icon_name : ""
  end
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def flying_anime1
    weapon = $data_weapons[@weapon_id]
    return weapon != nil ? weapon.flying_anime : [0,0,false,false]
  end
  #--------------------------------------------------------------------------
  # œ ‰â€œ‹——£ƒAƒjƒ[ƒVƒ‡ƒâ€œŽæ“¾
  #--------------------------------------------------------------------------
  def flying_anime2
    weapon = $data_weapons[@weapon2_id]
    return weapon != nil ? weapon.flying_anime : [0,0,false,false]
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®–Ú•WÀ•W‚ÌŒvŽZ
  #--------------------------------------------------------------------------
  def move_setup
    if RTAB
      targets = @target
    else
      targets = $scene.target_battlers
    end
    case @move_action[0]
    when "self" # Ž©•ª
      @target_x = self.base_x
      @target_y = self.base_y
    when "target_near" # ˆê”ԋ߂­‚̃^[ƒQƒbƒg
      targets.sort!{|a,b| a.screen_x<=>b.screen_x }
      targets.reverse!
      if targets != []
        @target_x = targets[0].screen_x
        @target_y = targets[0].screen_y
      else
        @target_x = self.base_x
        @target_y = self.base_y
      end
    when "target_far" # ˆê”ԉ“‚­‚̃^[ƒQƒbƒg
      targets.sort!{|a,b| a.screen_x<=>b.screen_x }
      if targets != []
        @target_x = targets[0].screen_x
        @target_y = targets[0].screen_y
      else
        @target_x = self.base_x
        @target_y = self.base_y
      end
    when "target" # ƒ^[ƒQƒbƒg’†‰›
      @target_x = 0
      @target_y = 0
      for t in targets
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if targets != []
        @target_x /= targets.size
        @target_y /= targets.size
      end
    when "troop" # "ƒgƒ‹[ƒv’†‰›"
      @target_x = 0
      @target_y = 0
      for t in $game_troop.enemies
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if $game_troop.enemies != []
        @target_x /= $game_troop.enemies.size
        @target_y /= $game_troop.enemies.size
      end
    when "party" # "ƒp[ƒeƒB’†‰›"
      @target_x = 0
      @target_y = 0
      for t in $game_party.actors
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if $game_party.actors != []
        @target_x /= $game_party.actors.size
        @target_y /= $game_party.actors.size
      end
    when "screen" # "‰æ–Ê"
      @target_x = self.base_x
      @target_y = self.base_y
    end
    # •â³
    @target_x += @move_action[1] - self.base_x
    @target_y += @move_action[2] - self.base_y
    # ˆÚ“®–Ú•W‚̍À•W‚ðƒZƒbƒg
    @move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]
    # ‹——£‚ÌŒvŽZ(ƒEƒGƒCƒg‚̐ݒè)
    @move_wait     = (@move_coordinates[2] - @move_coordinates[0]).abs +
                     (@move_coordinates[3] - @move_coordinates[1]).abs
  end
end
#==============================================================================
# ¡ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # œ ƒZƒbƒgƒAƒbƒv
  #--------------------------------------------------------------------------
  alias side_view_initialize initialize
  def initialize(troop_id, member_index)
    side_view_initialize(troop_id, member_index)
    start_battle
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®
  #--------------------------------------------------------------------------
  def move
    # ‹——£‚ÌŒvŽZ
    @move_distance = (@move_coordinates[2] - @move_coordinates[0]).abs +
                     (@move_coordinates[3] - @move_coordinates[1]).abs
    if @move_distance > 0
      return if @ox == @move_coordinates[0] and @oy == @move_coordinates[1]
      array = @move_coordinates
      # ƒWƒƒƒâ€œƒv•â³’l‚ÌŒvŽZ
      n = 100.0 * @move_wait / @move_distance 
      jump = -@move_action[4] * n * (100 - n) / 100.0
      @ox = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @move_wait) / @move_distance.to_f).to_i
      @oy = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @move_wait) / @move_distance.to_f + jump).to_i
      # ƒEƒGƒCƒg
      @move_wait -= @move_action[3]
      @move_wait = [@move_wait,0].max
    end
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®–Ú•WÀ•W‚ÌŒvŽZ
  #--------------------------------------------------------------------------
  def move_setup
    if RTAB
      targets = @target
    else
      targets = $scene.target_battlers
    end
    case @move_action[0]
    when "self" # Ž©•ª
      @target_x = self.base_x
      @target_y = self.base_y
    when "target_near" # ˆê”ԋ߂­‚̃^[ƒQƒbƒg
      targets.sort!{|a,b| a.screen_x<=>b.screen_x }
      if targets != []
        @target_x = targets[0].screen_x
        @target_y = targets[0].screen_y
      else
        @target_x = self.base_x
        @target_y = self.base_y
      end
    when "target_far" # ˆê”ԉ“‚­‚̃^[ƒQƒbƒg
      targets.sort!{|a,b| a.screen_x<=>b.screen_x }
      targets.reverse!
      if targets != []
        @target_x = targets[0].screen_x
        @target_y = targets[0].screen_y
      else
        @target_x = self.base_x
        @target_y = self.base_y
      end
    when "target" # ƒ^[ƒQƒbƒg’†‰›
      @target_x = 0
      @target_y = 0
      for t in targets
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if targets != []
        @target_x /= targets.size
        @target_y /= targets.size
      end
    when  "party" # "ƒgƒ‹[ƒv’†‰›"
      @target_x = 0
      @target_y = 0
      for t in $game_troop.enemies
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if $game_troop.enemies != []
        @target_x /= $game_troop.enemies.size
        @target_y /= $game_troop.enemies.size
      end
    when "troop" # "ƒp[ƒeƒB’†‰›"
      @target_x = 0
      @target_y = 0
      for t in $game_party.actors
        @target_x += t.screen_x
        @target_y += t.screen_y
      end
      if $game_party.actors != []
        @target_x /= $game_party.actors.size
        @target_y /= $game_party.actors.size
      end
    when "screen" # "‰æ–Ê"
      @target_x = self.base_x
      @target_y = self.base_y
    end
    # •â³
    @target_x -= @move_action[1] + self.base_x
    @target_y -= @move_action[2] + self.base_y
    # ˆÚ“®–Ú•W‚̍À•W‚ðƒZƒbƒg
    @move_coordinates = [@target_x.to_i,@target_y.to_i,@move_coordinates[0],@move_coordinates[1]]
    # ‹——£‚ÌŒvŽZ(ƒEƒGƒCƒg‚̐ݒè)
    @move_wait     = (@move_coordinates[2] - @move_coordinates[0]).abs +
                     (@move_coordinates[3] - @move_coordinates[1]).abs
  end
  if RTAB
  alias original_x true_x
  alias original_y true_y
  else
  alias original_x screen_x
  alias original_y screen_y
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾(ƒJƒƒ‰•â³–³‚µ)
  #--------------------------------------------------------------------------
  def true_x
    return original_x + @ox
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾(ƒJƒƒ‰•â³–³‚µ)
  #--------------------------------------------------------------------------
  def true_y
    return original_y - @height / 2 + @oy
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾
  #--------------------------------------------------------------------------
  def screen_x(true_x = self.true_x)
    return true_x * @real_zoom + @real_x 
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾
  #--------------------------------------------------------------------------
  def screen_y(true_y = self.true_y)
    return true_y * @real_zoom + @real_y
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê X À•W‚̎擾(ˆÚ“®‚È‚Ç‚µ‚Ä‚¢‚È‚¢ê‡)
  #--------------------------------------------------------------------------
  def base_x(true_x = self.true_x)
    return (true_x - @ox) * @real_zoom + @real_x
  end
  #--------------------------------------------------------------------------
  # œ ƒoƒgƒ‹‰æ–Ê Y À•W‚̎擾(ˆÚ“®‚È‚Ç‚µ‚Ä‚¢‚È‚¢ê‡)
  #--------------------------------------------------------------------------
  def base_y(true_y = self.true_y)
    return (true_y - @oy) * @real_zoom + @real_y
  end
end
#==============================================================================
# ¡ Game_Party
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒ^[‚ð‰Á‚¦‚é
  #     actor_id : ƒAƒNƒ^[ ID
  #--------------------------------------------------------------------------
  alias side_view_add_actor add_actor
  def add_actor(actor_id)
    # ƒAƒNƒ^[‚ðŽæ“¾
    actor = $game_actors[actor_id]
    # ƒTƒCƒhƒrƒ…[ƒf[ƒ^‚̏‰Šú‰»
    actor.start_battle
    # –ß‚·
    side_view_add_actor(actor_id)
  end
end
#==============================================================================
# ¡ Scene_Battle
#==============================================================================
class Scene_Battle
  include Side_view
  #--------------------------------------------------------------------------
  # œ ŒöŠJƒCƒâ€œƒXƒ^ƒâ€œƒX•Ïâ€
  #--------------------------------------------------------------------------
  attr_reader   :phase            # ƒtƒF[ƒY
  attr_reader   :phase4_step      # ƒtƒF[ƒY‚SƒXƒeƒbƒv
  attr_reader   :active_battler   # ‘ΏۂÌ”z—ñ
  attr_reader   :target_battlers  # ‘ΏۂÌ”z—ñ
  attr_reader   :animation1_id    # s“®ƒAƒjƒID
  attr_reader   :animation2_id    # ‘ΏۃAƒjƒID
  #--------------------------------------------------------------------------
  # œ ƒƒCƒâ€œˆ—
  #--------------------------------------------------------------------------
  alias side_view_main main
  def main
    # ƒoƒgƒ‰[‰Šú‰»
    for battler in $game_party.actors + $game_troop.enemies
      battler.start_battle
    end
    # –ß‚·
    side_view_main
  end
  #--------------------------------------------------------------------------
  # œ ‘M‚«â€»’è
  #--------------------------------------------------------------------------
  def flash?
    return @flash_flag ? true : false
  end  
  #--------------------------------------------------------------------------
  # œ ‘M‚«ƒAƒjƒ‘Ò‚¿ŽžŠÔŽæ“¾
  #--------------------------------------------------------------------------
  def flash_duration
    animation = nil
    if FLASH_ANIME
      animation = $data_animations[FLASH_ANIMATION_ID]
    end
    return animation != nil ? animation.frame_max * 2 + 2 : 0
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒâ€œƒtƒF[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒâ€œŠJŽn)
  #--------------------------------------------------------------------------
  alias side_view_update_phase4_step2 update_phase4_step2
  def update_phase4_step2(*arg)
    battler = convert_battler2(*arg)
    battler.action
    side_view_update_phase4_step2(*arg)
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒâ€œƒtƒF[ƒY ƒXƒeƒbƒv 3 : s“®‘¤ƒAƒjƒ[ƒVƒ‡ƒâ€œ)
  #--------------------------------------------------------------------------
  alias side_view_update_phase4_step3 update_phase4_step3
  def update_phase4_step3(*arg)
    battler = convert_battler2(*arg)
    return if !battler.animation1_on and battler.action? and !battler.flash?
    if battler.flash? and FLASH_ANIME
      battler.flash_flag["normal"] = true
    end
    side_view_update_phase4_step3(*arg)
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV (ƒƒCƒâ€œƒtƒF[ƒY ƒXƒeƒbƒv 4 : ‘Ώۑ¤ƒAƒjƒ[ƒVƒ‡ƒâ€œ)
  #--------------------------------------------------------------------------
  alias side_view_update_phase4_step4 update_phase4_step4
  def update_phase4_step4(*arg)
    battler = convert_battler2(*arg)
    targets = RTAB ? battler.target : @target_battlers
    return if !battler.animation2_on and battler.action?
    side_view_update_phase4_step4(*arg)
    for target in targets
      if RTAB
        value = nil
        if target.damage_sp.include?(battler)
          value = target.damage_sp[battler]
        end
        if target.damage.include?(battler)
          if value == nil or value == "Fallo"
            value = target.damage[battler]
          elsif value.is_a?(Numeric) && value > 0
            value = target.damage[battler] == "Fallo" ? value : target.damage[battler]
          end
        end
      else
        value = target.damage
      end
      if target.is_a?(Game_Actor)
        # ƒ_ƒ[ƒW‚̏ꍇ
        if value.is_a?(Numeric) && value > 0
          # ƒVƒFƒCƒN‚ðŠJŽn
          target.shake = true
        end
      elsif target.is_a?(Game_Enemy)
        # ƒ_ƒ[ƒW‚̏ꍇ
        if value.is_a?(Numeric) && value > 0
          # ƒVƒFƒCƒN‚ðŠJŽn
          target.shake = true
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒvƒŒƒoƒgƒ‹ƒtƒF[ƒYŠJŽn
  #--------------------------------------------------------------------------
  alias start_phase1_correct start_phase1 
  def start_phase1
    # ƒJƒƒ‰‚̐ݒè
    # Œ³Xƒtƒƒâ€œƒgƒrƒ…[Œü‚¯‚̐”’l‚É‚È‚Á‚Ä‚¢‚邽‚ß
    @zoom_rate = [1.0, 1.0]
    start_phase1_correct
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒNƒ^[ƒRƒ}ƒâ€œƒhƒtƒF[ƒYŠJŽn
  #--------------------------------------------------------------------------
  alias start_phase3_correct start_phase3 
  def start_phase3
    battler = convert_battler
    start_phase3_correct
    if RTAB
      # ƒJƒƒ‰‚̐ݒè
      # Œ³Xƒtƒƒâ€œƒgƒrƒ…[Œü‚¯‚̐”’l‚É‚È‚Á‚Ä‚¢‚邽‚ß
      @camera = "command"
      @spriteset.screen_target(0, 0, 1.0)
    end
  end
end
class Spriteset_Battle
  include Side_view
  #--------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
  #--------------------------------------------------------------------------
  alias side_veiw_initialize initialize
  def initialize
    side_veiw_initialize
    # ƒAƒNƒ^[ƒXƒvƒ‰ƒCƒg‚ð‰ð•ú
    for sprite in @actor_sprites
      sprite.dispose
    end
    # ƒAƒNƒ^[ƒXƒvƒ‰ƒCƒg‚ðì¬
    @actor_sprites = []
    for i in 1..Party_max
      @actor_sprites.push(Sprite_Battler.new(@viewport1))
    end
    update
  end
  #--------------------------------------------------------------------------
  # œ ‰æ–ʂ̃XƒNƒ[ƒ‹
  #--------------------------------------------------------------------------
  if method_defined?("screen_scroll")
  alias side_view_screen_scroll screen_scroll
  def screen_scroll
    side_view_screen_scroll
    # ƒAƒNƒ^[‚̈ʒu•â³
    for actor in $game_party.actors
      actor.real_x = @real_x
      actor.real_y = @real_y
      actor.real_zoom = @real_zoom
    end
  end
  end
end
 
class Sprite_Battler < RPG::Sprite
  include Side_view
  #--------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
  #     viewport : ƒrƒ…[ƒ|[ƒg
  #     battler  : ƒoƒgƒ‰[ (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    @weapon = Sprite_Weapon.new(viewport, battler)
    @flying = Sprite_Flying.new(viewport, battler)
    @shadow = []
    @fly = 0
    @fly_direction = 1
    @rand = rand(10)
    @bitmaps = {}
    self.effect_clear
  end
  #--------------------------------------------------------------------------
  # œ ‰ð•ú
  #--------------------------------------------------------------------------
  alias side_view_dispose dispose
  def dispose
    side_view_dispose
    @weapon.dispose if @weapon != nil
    @flying.dispose if @flying != nil
    if @_target_sprite != nil
      @_target_sprite.bitmap.dispose
      @_target_sprite.dispose
      @_target_sprite = nil
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  def update
    super
    # ƒoƒgƒ‰[‚ª nil ‚̏ꍇ
    if @battler == nil
      self.bitmap = nil
      @weapon.bitmap = nil
      loop_animation(nil)
      return
    end
    # ƒoƒgƒ‰[XV
    @battler.update 
    # ƒoƒgƒ‰[ƒAƒjƒ‚̃f[ƒ^Žæ“¾
    @anime_type = @battler.anime_type
    # bitmap ‚ðƒLƒƒƒbƒVƒ…‰»
    path = @anime_type[0].to_s + "#" + @battler.pattern.to_s
    if not @bitmaps.include?(path) or @bitmaps[path].disposed?
      # ƒtƒ@ƒCƒ‹–¼‚©F‘Š‚ªŒ»Ý‚Ì‚à‚̂ƈقȂéê‡
      if @battler.is_a?(Game_Actor) 
        change = (@battler.character_name != @battler_name or @battler.character_hue != @battler_hue)
      elsif @battler.is_a?(Game_Enemy)
        change = (@battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue)
      end
      if change
        # ƒrƒbƒgƒ}ƒbƒv‚ðŽæ“¾AÝ’è
        if @battler.is_a?(Game_Actor)
          @battler_name = @battler.character_name
          @battler_hue = @battler.character_hue
          @bitmap = RPG::Cache.character(@battler_name, @battler_hue)
          @width = @bitmap.width / 4
          @height = @bitmap.height / 4
        else
          @battler_name = @battler.battler_name
          @battler_hue = @battler.battler_hue
          @bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
          @width = @bitmap.width
          @height = @bitmap.height
          @bitmaps["No_Motion"] = @bitmap
        end
        self.ox = @width / 2
        self.oy = @height / 2
        @battler.height = @height
        @flag = true
        # í“¬•s”\‚Ü‚½‚͉B‚êó‘Ô‚È‚ç•s“§–¾â€œx‚ð 0 ‚É‚·‚é
        if @battler.dead? or @battler.hidden
          self.opacity = 0
        end
      end
      if @battler.is_a?(Game_Actor) and (@anime_type[0] != @battler_condition or
         @battler.pattern != @battler_pattern or flag)
        # ƒrƒbƒgƒ}ƒbƒv‚ðŽæ“¾AÝ’è
        @battler_condition = @anime_type[0]
        @battler_pattern = @battler.pattern
        @sx = @battler.pattern * @width
        @sy = @anime_type[0] % 4 * @height
        self.bitmap = Bitmap.new(@width,@height)
        self.bitmap.blt(0,0, @bitmap,Rect.new(@sx, @sy, @width, @height))
        @bitmaps[path] = self.bitmap
        flag = false
      end
    end
    if @battler.is_a?(Game_Actor)
      self.bitmap = @bitmaps[path]
    else
      self.bitmap = @bitmaps["No_Motion"]
    end
    # ”òs
    update_fly
    # ƒVƒFƒCƒN
    update_shake
    # ‰ñ“]
    update_turning
    # ”½â€œ]
    update_reverse    
    # ˆÚ“®
    update_moving
    # ’ljÁƒAƒjƒ
    update_add_anime
    # ƒGƒtƒFƒNƒgŒø‰Ê‚Ì“K—p
    update_effect
    # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ID ‚ªŒ»Ý‚Ì‚à‚̂ƈقȂéê‡
    flag = RTAB ? true : @battler.damage == nil
    if flag and @battler.state_animation_id != @state_animation_id
      @state_animation_id = @battler.state_animation_id
      loop_animation($data_animations[@state_animation_id])
    end
    # ƒVƒFƒCƒN
    if @battler.shake
      self.start_shake(5, 5, 5)
      @battler.shake = false
    end
    # –¾–Å
    if @battler.blink
      blink_on
    else
      blink_off
    end
    # •s‰ÂŽ‹‚̏ꍇ
    unless @battler_visible
      flag = RTAB ? (@battler.damage.size < 2 or @battler.damage_pop.size < 2) :
                    (@battler.damage == nil or @battler.damage_pop)
      # oŒ»
      if not @battler.hidden and not @battler.dead? and flag
        appear
        @battler_visible = true
      end
    end
    if RTAB
    # ƒ_ƒ[ƒW
    for battler in @battler.damage_pop
      if battler[0].class == Array
        if battler[0][1] >= 0
          $scene.skill_se
        else
          $scene.levelup_se
        end
        damage(@battler.damage[battler[0]], false, 2)
      else
        damage(@battler.damage[battler[0]], @battler.critical[battler[0]])
      end
      if @battler.damage_sp.include?(battler[0])
        damage(@battler.damage_sp[battler[0]],
                @battler.critical[battler[0]], 1)
        @battler.damage_sp.delete(battler[0])
      end
      @battler.damage_pop.delete(battler[0])
      @battler.damage.delete(battler[0])
      @battler.critical.delete(battler[0])
    end
    end
    # ‰ÂŽ‹‚̏ꍇ
    if @battler_visible
      # “¦‘–
      if @battler.hidden
        $game_system.se_play($data_system.escape_se)
        escape
        @battler_visible = false
      end
      # ”’ƒtƒ‰ƒbƒVƒ…
      if @battler.white_flash
        whiten
        @battler.white_flash = false
      end
      if RTAB
      # ƒAƒjƒ[ƒVƒ‡ƒâ€œ
      if !@battler.animation.empty?
        for animation in @battler.animation.reverse
          if animation[2]
            animation($data_animations[animation[0]], animation[1], true)
          else
            animation($data_animations[animation[0]], animation[1])
          end
          @battler.animation.delete(animation)
        end
      end
      else
      # ƒAƒjƒ[ƒVƒ‡ƒâ€œ
      if @battler.animation_id != 0
        animation = $data_animations[@battler.animation_id]
        animation(animation, @battler.animation_hit)
        @battler.animation_id = 0
      end
      end
      # ƒ_ƒ[ƒW
      if !RTAB and @battler.damage_pop
        damage(@battler.damage, @battler.critical)
        @battler.damage = nil
        @battler.critical = false
        @battler.damage_pop = false
      end
      flag = RTAB ? (@battler.damage.empty? and $scene.dead_ok?(@battler)) :
                     @battler.damage == nil
      # ƒRƒ‰ƒvƒX
      if flag and @battler.dead?
        if @battler.is_a?(Game_Actor)
          $game_system.se_play($data_system.actor_collapse_se)
        elsif @battler.is_a?(Game_Enemy)
          $game_system.se_play($data_system.enemy_collapse_se)
        end
        collapse
        @battler_visible = false
      end
    end
    # ƒXƒvƒ‰ƒCƒg‚̍À•W‚ðÝ’è
    self.x = @battler.screen_x + @effect_ox
    self.y = @battler.screen_y + @effect_oy
    self.z = @battler.screen_z
    self.zoom_x = @battler.real_zoom
    self.zoom_y = @battler.real_zoom
    # ƒEƒFƒCƒgƒJƒEƒâ€œƒg‚ðŒ¸‚ç‚·
    @battler.wait_count -= 1
    @battler.wait_count2 -= 1
    # ƒAƒjƒ[ƒVƒ‡ƒâ€œ‘Ò‚¿ŽžŠÔŽæ“¾
    @battler.animation_duration = @_animation_duration
    if @battler.is_a?(Game_Actor)
      self.zoom_x *= CHAR_ZOOM
      self.zoom_y *= CHAR_ZOOM
    end
    # ‰â€œ‹——£ƒAƒjƒ
    if @battler.flying_anime != [0,0,false,false] and @flying.nil?
      @flying = Sprite_Flying.new(self.viewport, @battler)
    elsif @battler.flying_anime == [0,0,false,false] and !@flying.nil?
      @flying.dispose
      @flying = nil
    end
    if @flying != nil
      @flying.battler = @battler
      @flying.update
    end
    if @battler.is_a?(Game_Actor)
      # •ŠíƒAƒjƒ
      if @battler.weapon_anime_type1 and @weapon.nil?
        @weapon = Sprite_Weapon.new(self.viewport, @battler)
      elsif !@battler.weapon_anime_type1 and !@weapon.nil?
        @weapon.dispose
        @weapon = nil
      end
      if @weapon != nil
        @weapon.battler = @battler
        @weapon.update
        @weapon.opacity = self.opacity
        @weapon.x = self.x + BLZ_X[@battler.weapon_anime_type3][@battler.pattern]
        @weapon.y = self.y + BLZ_Y[@battler.weapon_anime_type3][@battler.pattern]
        @weapon.angle = BLZ_ANGLE[@battler.weapon_anime_type3][@battler.pattern]
        if self.mirror
          @weapon.angle += @weapon.angle - 180
        end
      end
    end
    # Žc‘œ
    if @battler.shadow
      if Graphics.frame_count % 2 == 0
        shadow = ::Sprite.new(self.viewport)
        shadow.bitmap = self.bitmap.dup
        shadow.x = self.x
        shadow.y = self.y
        shadow.ox = self.ox
        shadow.oy = self.oy
        shadow.mirror = self.mirror
        shadow.angle = self.angle
        shadow.opacity = 160
        shadow.zoom_x = self.zoom_x
        shadow.zoom_y = self.zoom_y
        if @battler.is_a?(Game_Actor)
          shadow.src_rect.set(@sx, @sy, @width, @height)
        else
          shadow.src_rect.set(0, 0, @width, @height)
        end
        @shadow.push([shadow,duration = 10,@battler.true_x + @effect_ox,@battler.true_y + @effect_oy])
      end
    end
    for s in @shadow
      if !s[0].disposed?
        s[0].update
        s[1] -= 1
        if s[1] < 1
          if s[0].bitmap != nil
            s[0].bitmap.dispose
          end
          s[0].dispose
        else
          s[0].x = @battler.screen_x(s[2])
          s[0].y = @battler.screen_y(s[3])
        end
      else
        s = nil
      end
    end
    @shadow.compact!
  end
  #--------------------------------------------------------------------------
  # œ ƒGƒtƒFƒNƒg‚É‚æ‚éÀ•WŒn‚̍XV
  #--------------------------------------------------------------------------
  def update_effect
    # Šp“x‚̏C³
    if @_upside_down
      self.angle = (@_turning + 180) % 360
    else
      self.angle = @_turning
    end
    # X À•W‚̏C³’l
    @effect_ox = @_shake + @_moving[0]
    # Y À•W‚̏C³’l
    @effect_oy = -@fly + @_moving[1]
    if  @_animation == nil or (RTAB and @_animation.empty?)
      self.effect_clear
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒVƒFƒCƒNXV
  #--------------------------------------------------------------------------
  def update_shake
    if @_shake_duration >= 1 or @_shake != 0
      delta = (@_shake_power * @_shake_speed * @_shake_direction) / 10.0
      if @_shake_duration <= 1 and @_shake * (@_shake + delta) < 0
        @_shake = 0
      else
        @_shake += delta
      end
      if @_shake > @_shake_power * 2
        @_shake_direction = -1
      end
      if @_shake < - @_shake_power * 2
        @_shake_direction = 1
      end
      if @_shake_duration >= 1
        @_shake_duration -= 1
      end
    end
  end
  #--------------------------------------------------------------------------
  # œ ”òsXV
  #--------------------------------------------------------------------------
  def update_fly
    if @rand > 0
      @rand -= 1
      return
    end
    if @battler.fly != 0
      if @fly < @battler.fly / 4
        @fly_direction = 1
      elsif @fly > @battler.fly / 2
        @fly_direction = -1
      end
      @fly += 0.5 * @fly_direction
    end
  end
  #--------------------------------------------------------------------------
  # œ ‰ñ“]XV
  #--------------------------------------------------------------------------
  def update_turning
    if @_turning_duration > 0 or @_turning != 0
      @_turning += @_turning_direction * @_turning_speed / 2.0
      # Žc‚è‰ñ“]â€‚ðŒ¸‚ç‚·
      if @_turning_direction == -1
        if @_turning_duration > 0 and @_turning < 0
          @_turning_duration -= 1
        end
      elsif @_turning_direction == 1
        if @_turning_duration > 0 and @_turning >= 360
          @_turning_duration -= 1
        end
      end
      # ˆÈ‰º•â³
      while @_turning < 0
        @_turning += 360
      end
      if @_turning_duration <= 0
        @_turning = 0
      end
      @_turning %= 360
    end
  end
  #--------------------------------------------------------------------------
  # œ ¶‰E”½â€œ]XV
  #--------------------------------------------------------------------------
  def update_reverse
    if @last_reverse != (@_reverse or @battler.reverse)
      self.mirror = (@_reverse or @battler.reverse)
      @last_reverse = (@_reverse or @battler.reverse)
    end
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®XV
  #--------------------------------------------------------------------------
  def update_moving
    @move_distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +
                     (@_move_coordinates[3] - @_move_coordinates[1]).abs
    if @move_distance > 0
      return if @_moving[0] == @_move_coordinates[0] and @_moving[1] == @_move_coordinates[1]
      array = @_move_coordinates
      x = (array[2] + 1.0 * (array[0] - array[2]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i
      y = (array[3] + 1.0 * (array[1] - array[3]) * (@move_distance - @_move_duration) / @move_distance.to_f).to_i
      @_moving = [x, y]
      if @_move_quick_return and @_move_duration == 0
        @_move_coordinates = [0,0,array[0],array[1]]
        @_move_duration = @move_distance
      end
      @_move_duration -= @_move_speed
      @_move_duration = [@_move_duration, 0].max
    end
  end
  #--------------------------------------------------------------------------
  # œ ’ljÁƒAƒjƒXV (RTABŒÀ’è‹@”\)
  #--------------------------------------------------------------------------
  def update_add_anime
    if RTAB
    # ƒAƒjƒ[ƒVƒ‡ƒâ€œ
    if @_add_anime_id != 0
      animation = $data_animations[@_add_anime_id]
      animation(animation, true)
      @_add_anime_id = 0
    end
    end
  end
  #--------------------------------------------------------------------------
  # œ ƒGƒtƒFƒNƒg‰Šú‰»
  #--------------------------------------------------------------------------
  def effect_clear
    @_effect_ox = 0
    @_effect_oy = 0
    @_shake_power = 0
    @_shake_speed = 0
    @_shake_duration = 0
    @_shake_direction = 1
    @_shake = 0
    @_upside_down = false
    @_reverse = false
    @_turning_direction = 1
    @_turning_speed = 0
    @_turning_duration = 0
    @_turning = 0
    @_move_quick_return = true
    @_move_speed = 0
    @_move_coordinates = [0,0,0,0]
    @_move_jump = false
    @_move_duration = 0
    @_moving = [0,0]
    @_add_anime_id = 0
  end
  #--------------------------------------------------------------------------
  # œ ƒVƒFƒCƒN‚ÌŠJŽn
  #     power    : ‹­‚³
  #     speed    : ‘¬‚³
  #     duration : ŽžŠÔ
  #--------------------------------------------------------------------------
  def start_shake(power, speed, duration)
    @_shake_power = power
    @_shake_speed = speed
    @_shake_duration = duration
  end
  #--------------------------------------------------------------------------
  # œ ã‰ºâ€½â€œ]‚ðŠJŽn
  #--------------------------------------------------------------------------
  def start_upside_down
    @_upside_down = @_upside_down ? false : true
  end
  #--------------------------------------------------------------------------
  # œ ¶‰E”½â€œ]‚ðŠJŽn
  #--------------------------------------------------------------------------
  def start_reverse
    @_reverse = @_reverse ? false : true
  end
  #--------------------------------------------------------------------------
  # œ ‰ñ“]‚ðŠJŽn
  #     direction: •ûŒü
  #     speed    : ‘¬‚³
  #     duration : ŽžŠÔ
  #--------------------------------------------------------------------------
  def start_turning(direction, speed, duration)
    @_turning_direction = direction
    @_turning_speed = speed
    @_turning_duration = duration
    @_turning = @_turning_direction == 1 ? 0 : 360
  end
  #--------------------------------------------------------------------------
  # œ ˆÚ“®‚ðŠJŽn
  #     quick_return : –ß‚é‚©‚Ç‚¤‚©
  #     speed        : ‘¬‚³
  #     x            : X À•W
  #     y            : Y À•W
  #--------------------------------------------------------------------------
  def start_moving(quick_return, speed, x, y)
    @_move_quick_return = quick_return == 0 ? false : true
    @_move_speed = speed
    @_move_coordinates = [x,y,@_move_coordinates[0],@_move_coordinates[1]]
    distance = (@_move_coordinates[2] - @_move_coordinates[0]).abs +
               (@_move_coordinates[3] - @_move_coordinates[1]).abs
    @_move_duration = distance
  end
  #--------------------------------------------------------------------------
  # œ ƒAƒjƒ’ljÁ‚ðŠJŽn
  #     id           : ID
  #     hit          : –½’†ƒtƒ‰ƒbƒO
  #--------------------------------------------------------------------------
  def start_add_anime(id)
    @_add_anime_id = id
  end
  #--------------------------------------------------------------------------
  # œ ŠeŽíƒGƒtƒFƒNƒg‚ÌŠJŽn”»’è
  #--------------------------------------------------------------------------
  if !method_defined?("side_view_animation_process_timing")
    alias side_view_animation_process_timing animation_process_timing
  end
  def animation_process_timing(timing, hit)
    side_view_animation_process_timing(timing, hit)
    if (timing.condition == 0) or
       (timing.condition == 1 and hit == true) or
       (timing.condition == 2 and hit == false)
      if timing.se.name =~ SHAKE_FILE
        names = timing.se.name.split(/#/)
        power    = names[1].nil? ? SHAKE_POWER    : names[1].to_i
        speed    = names[2].nil? ? SHAKE_SPEED    : names[2].to_i
        duration = names[3].nil? ? SHAKE_DURATION : names[3].to_i
        # ƒVƒFƒCƒN‚ðŠJŽn
        self.start_shake(power, speed, duration)
      end
      if timing.se.name == UPSIDE_DOWN_FILE
        # ã‰ºâ€½â€œ]‚ðŠJŽn
        self.start_upside_down
      end
      if timing.se.name == REVERSE_FILE
        # ¶‰E”½â€œ]‚ðŠJŽn
        self.start_reverse
      end
      if timing.se.name =~ TURNING_FILE
        names = timing.se.name.split(/#/)
        direction = names[1].nil? ? TURNING_DIRECTION : names[1].to_i
        speed     = names[2].nil? ? TURNING_SPEED     : names[2].to_i
        duration  = names[3].nil? ? TURNING_DURATION  : names[3].to_i
        # ‰ñ“]‚ðŠJŽn
        self.start_turning(direction, speed, duration)
      end
      if timing.se.name =~ MOVE_FILE
        names = timing.se.name.split(/#/)
        quick_return= names[1].nil? ? MOVE_RETURN      : names[1].to_i
        speed       = names[2].nil? ? MOVE_SPEED       : names[2].to_i
        x           = names[3].nil? ? MOVE_COORDINATES[0] : names[3].to_i
        y           = names[3].nil? ? MOVE_COORDINATES[1] : names[4].to_i
        # ˆÚ“®‚ðŠJŽn
        self.start_moving(quick_return, speed, x, y)
      end
      if timing.se.name =~ ADD_ANIME_FILE
        names = timing.se.name.split(/#/)
        id = names[1].nil? ? ADD_ANIME_ID      : names[1].to_i
        # ƒAƒjƒ’ljÁ‚ðŠJŽn
        self.start_add_anime(id)
      end
    end
  end
end
#==============================================================================
# ¡ Sprite_Weapon
#------------------------------------------------------------------------------
# @ƒoƒgƒ‰[•\Ž¦—p‚̃Xƒvƒ‰ƒCƒg‚Å‚·BGame_Battler ƒNƒ‰ƒX‚̃Cƒâ€œƒXƒ^ƒâ€œƒX‚ðŠÄŽ‹‚µA
# ƒXƒvƒ‰ƒCƒg‚̏ó‘Ô‚ðŽ©â€œ®â€œI‚ɕω»‚³‚¹‚Ü‚·B
#==============================================================================
 
class Sprite_Weapon < ::Sprite
  include Side_view
  #--------------------------------------------------------------------------
  # œ ŒöŠJƒCƒâ€œƒXƒ^ƒâ€œƒX•Ïâ€
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # ƒoƒgƒ‰[
  attr_reader   :cw                       # ƒOƒ‰ƒtƒBƒbƒN‚Ì•
  attr_reader   :ch                       # ƒOƒ‰ƒtƒBƒbƒN‚̍‚‚³
  #--------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
  #     viewport : ƒrƒ…[ƒ|[ƒg
  #     battler  : ƒoƒgƒ‰[ (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
  end
  #--------------------------------------------------------------------------
  # œ ‰ð•ú
  #--------------------------------------------------------------------------
  def dispose
    if self.bitmap != nil
      self.bitmap.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  def update
    super
    # ƒoƒgƒ‰[‚ª nil ‚̏ꍇ
    if @battler == nil or !@battler.is_a?(Game_Actor)
      self.bitmap = nil
      return
    end
    # ƒEƒGƒ|ƒâ€œƒAƒjƒ‚̃f[ƒ^Žæ“¾
    @weapon_anime_type = @battler.weapon_anime_type
    # Ý’肪u”ñ•\Ž¦v‚̏ꍇ
    if !@weapon_anime_type[1] or @weapon_anime_type[0].nil?
      self.visible = false
      return
    else
      self.visible = true
    end
    # ƒtƒ@ƒCƒ‹–¼‚ªŒ»Ý‚Ì‚à‚̂ƈقȂéê‡
    if @weapon_anime_type[0] != @weapon_name
      @weapon_name = @weapon_anime_type[0]
      # ƒrƒbƒgƒ}ƒbƒv‚ðŽæ“¾AÝ’è
      self.bitmap = RPG::Cache.icon(@weapon_name)
      @width = bitmap.width
      @height = bitmap.height
      @flag = true
    end
    # Œ»ÝƒAƒjƒƒpƒ^[ƒâ€œ‚ªŒ»Ý‚Ì‚à‚̂ƈقȂéê‡
    if @pattern != @battler.pattern or @flag or @condition != @battler.condition
      @pattern = @battler.pattern
      @condition = @battler.condition
      self.ox = @width
      self.oy = @height
      self.z = battler.screen_z
      self.zoom_x = @battler.real_zoom * CHAR_ZOOM
      self.zoom_y = @battler.real_zoom * CHAR_ZOOM
      self.src_rect.set(0, 0, @width, @height)
      self.opacity = 255
      # ƒoƒgƒ‰[‚æ‚èŽè‘O‚É•\Ž¦
      if @weapon_anime_type[2]
        self.z += 10
      # ƒoƒgƒ‰[‚æ‚艜‚É•\Ž¦
      else
        self.z -= 10
      end
      @flag = false
    end
  end
end
#==============================================================================
# ¡ Sprite_Flying
#------------------------------------------------------------------------------
# @ƒoƒgƒ‰[•\Ž¦—p‚̃Xƒvƒ‰ƒCƒg‚Å‚·BGame_Battler ƒNƒ‰ƒX‚̃Cƒâ€œƒXƒ^ƒâ€œƒX‚ðŠÄŽ‹‚µA
# ƒXƒvƒ‰ƒCƒg‚̏ó‘Ô‚ðŽ©â€œ®â€œI‚ɕω»‚³‚¹‚Ü‚·B
#==============================================================================
 
class Sprite_Flying < RPG::Sprite
  include Side_view
  LATE_COUNT = 20
  #--------------------------------------------------------------------------
  # œ ŒöŠJƒCƒâ€œƒXƒ^ƒâ€œƒX•Ïâ€
  #--------------------------------------------------------------------------
  attr_accessor :battler                  # ƒoƒgƒ‰[
  #--------------------------------------------------------------------------
  # œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
  #     viewport : ƒrƒ…[ƒ|[ƒg
  #     battler  : ƒoƒgƒ‰[ (Game_Battler)
  #--------------------------------------------------------------------------
  def initialize(viewport, battler = nil)
    super(viewport)
    @battler = battler
    @battler_visible = false
    @later = LATE_COUNT
  end
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  def update
    super
    # ƒoƒgƒ‰[‚ª nil ‚̏ꍇ
    if @battler == nil
      self.bitmap = nil
      loop_animation(nil)
      return
    end
    # ‰â€œ‹——£ƒAƒjƒ
    flying_animation = @battler.flying_animation
    flying_start = flying_animation[0]
    flying_end   = flying_animation[1]
    # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ID ‚ªŒ»Ý‚Ì‚à‚̂ƈقȂéê‡
    if @anime_id != @battler.flying_anime[0]
      @anime_id = @battler.flying_anime[0]
      @animation = $data_animations[@anime_id]
    end
    # ƒAƒjƒ[ƒVƒ‡ƒâ€œ ŠJŽn
    if flying_start
      animation(@animation,true)
    elsif flying_end
      # Á‹Ž‚ð’x‚点‚Ä‚Ý‚½‚è‚·‚é
      @later -= 1
      if @later < 0
        animation(nil, true)
        @later = LATE_COUNT
      end
    end
    self.x = @battler.flying_x
    self.y = @battler.flying_y
    self.z = @battler.screen_z + 1000
  end
end
module RPG
  class Skill
    #--------------------------------------------------------------------------
    # œ –‚–@‚©‚Ç‚¤‚©‚Ì”»’f
    #--------------------------------------------------------------------------
    def magic?
      if @atk_f == 0
        return true
      else
        return false
      end
    end
  end
end
 
# ƒAƒ[ƒJ[ƒ\ƒ‹‚̈ʒuC³
 
class Arrow_Actor < Arrow_Base
  include Side_view
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  alias side_view_update update
  def update
    side_view_update
    # ƒXƒvƒ‰ƒCƒg‚̍À•W‚ðÝ’è
    if self.actor != nil && (self.x != self.actor.screen_x + ARROW_OX or self.y != self.actor.screen_y + ARROW_OY)
      self.x = self.actor.screen_x + ARROW_OX
      self.y = self.actor.screen_y + ARROW_OY
    end
  end
end
class Arrow_Enemy < Arrow_Base
  include Side_view
  #--------------------------------------------------------------------------
  # œ ƒtƒŒ[ƒ€XV
  #--------------------------------------------------------------------------
  alias side_view_update update
  def update
    side_view_update
    # ƒXƒvƒ‰ƒCƒg‚̍À•W‚ðÝ’è
    if self.enemy != nil && self.y != self.enemy.screen_y + self.enemy.height/2
      self.x = self.enemy.screen_x
      self.y = self.enemy.screen_y + self.enemy.height/2
    end
  end
end

Utilización

Este script convierte el sistema de batalla frontal del RPG Maker en uno lateral. Los gráficos de los héroes serán los mismos charas, y el arma al atacar será el icono del arma que tengan equipada. Los enemigos, en cambio, siguen siendo estáticos.

ayuda/rgss/biblioteca/batallaraisefield.txt · Última modificación: 2013/07/01 00:37 (editor externo)