- =begin 
- 待机(面向左)    :00    01    02    03      共 4 张。 
- 待机(面向右)    :10    11    12    13      共 4 张。 
- 移动(面向左)    :20    21    22    23      共 4 张。 
- 移动(面向右)    :30    31    32    33      共 4 张。 
- 攻击(面向左)    :40    41    42    43      共 4 张。 
- 攻击(面向右)    :50    51    52    53      共 4 张. 
- 防御(面向左)    :80                              共 1 张. 
- 防御(面向右)    :90                              共 1 张. 
- 挨打(面向左)    :100                            共 1 张. 
- 挨打(面向右)    :110                            共 1 张. 
- 死亡(面向左)    :140  141                    共 2 张. 
- 死亡(面向右)    :150  151                    共 2 张. 
- =end 
- #============================================================================== 
- ############################################################################### 
- #============================================================================== 
- # ★全图片单帧播放实现战斗动态效果★   
- #============================================================================== 
- #  by -> 芯☆淡如水 
- #============================================================================== 
- ############################################################################### 
- #============================================================================== 
- module RPG 
-   module Cache 
-     def self.battler(name, filename, hue) 
-       self.load_bitmap("Graphics/Battlers/"+name+"/", filename, hue) 
-     end 
-   end 
-   class Sprite < ::Sprite 
-     def initialize(viewport = nil) 
-       super(viewport) 
-       @_whiten_duration = 0 
-       @_appear_duration = 0 
-       @_escape_duration = 0 
-       @_collapse_duration = 0 
-       @_damage_duration = 0 
-       @_animation_duration = 0 
-       @_blink = false 
-       @_tip_duration = 0 
-     end 
-     #----------------------------------------------------------- 
-     alias add_dispose_xdrs dispose 
-     def dispose 
-       dispose_tip 
-       dispose_damage 
-       dispose_animation 
-       dispose_loop_animation 
-       super 
-     end 
-     #----------------------------------------------------------- 
-     def tip(txt, type) 
-       dispose_tip 
-       bitmap = Bitmap.new(240, 52) 
-       bitmap.font.name = (["黑体","宋体","Arial Black"]) 
-       bitmap.font.size = 32 
-       bitmap.font.bold = true 
-       if type == 1 
-         bitmap.font.color.set(255, 0, 255) 
-         bitmap.draw_text(+1, 6+1, 220, 50, txt, 1) 
-         bitmap.font.color.set(0, 255, 120)  
-         bitmap.draw_text(0, 6, 220, 50, txt, 1) 
-       else 
-         bitmap.font.color.set(0, 255, 120) 
-         bitmap.draw_text(+1, 6+1, 220, 50, txt, 1) 
-         bitmap.font.color.set(255, 0, 255)  
-         bitmap.draw_text(0, 6, 220, 50, txt, 1) 
-       end 
-       @_tip_sprite = ::Sprite.new(self.viewport) 
-       @_tip_sprite.bitmap = bitmap 
-       @_tip_sprite.opacity = 0 
-       @_tip_sprite.ox = 120 
-       @_tip_sprite.oy = 20 
-       @_tip_sprite.x = self.x 
-       @_tip_sprite.y = self.y - self.oy / 2 
-       @_tip_sprite.z = 3000 
-       @_tip_duration = 60 
-     end 
-     #----------------------------------------------------------- 
-     def dispose_tip 
-       if @_tip_sprite != nil 
-         @_tip_sprite.bitmap.dispose 
-         @_tip_sprite.dispose 
-         @_tip_sprite = nil 
-         @_tip_duration = 0 
-       end 
-     end 
-     def update 
-       super 
-       if @_whiten_duration > 0 
-         @_whiten_duration -= 1 
-         self.color.alpha = 128 - (16 - @_whiten_duration) * 10 
-       end 
-       if @_appear_duration > 0 
-         @_appear_duration -= 1 
-         self.opacity = (16 - @_appear_duration) * 16 
-       end 
-       if @_escape_duration > 0 
-         @_escape_duration -= 1 
-         self.opacity = 256 - (32 - @_escape_duration) * 10 
-       end 
-       if @_collapse_duration > 0 
-         @_collapse_duration -= 1 
-         self.opacity = 256 - (48 - @_collapse_duration) * 6 
-       end 
-       #-------------------------------------------------------- 
-       if @_tip_duration > 0 
-         @_tip_duration -= 1 
-         case @_tip_duration 
-         when 58..59 
-           @_tip_sprite.opacity += 20 
-           @_tip_sprite.y -= 4 
-         when 56..57 
-           @_tip_sprite.opacity += 40 
-           @_tip_sprite.y -= 4 
-         when 54..55 
-           @_tip_sprite.opacity += 40 
-           @_tip_sprite.y -= 3 
-         when 51..53 
-           @_tip_sprite.opacity += 30 
-           @_tip_sprite.y -= 3 
-         when 40..50 
-           @_tip_sprite.y -= 2 
-         end 
-         @_tip_sprite.opacity = 256 - (12 - @_tip_duration) * 32 
-         if @_tip_duration == 0 
-           dispose_tip 
-         end 
-       end 
-       if @_damage_duration > 0 
-         @_damage_duration -= 1 
-         case @_damage_duration 
-         when 38..39 
-           @_damage_sprite.y -= 4 
-         when 36..37 
-           @_damage_sprite.y -= 2 
-         when 34..35 
-           @_damage_sprite.y += 2 
-         when 28..33 
-           @_damage_sprite.y += 4 
-         end 
-         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32 
-         if @_damage_duration == 0 
-           dispose_damage 
-         end 
-       end 
-       if @_animation != nil and (Graphics.frame_count % 2 == 0) 
-         @_animation_duration -= 1 
-         update_animation 
-       end 
-       if @_loop_animation != nil and (Graphics.frame_count % 2 == 0) 
-         update_loop_animation 
-         @_loop_animation_index += 1 
-         @_loop_animation_index %= @_loop_animation.frame_max 
-       end 
-       if @_blink 
-         @_blink_count = (@_blink_count + 1) % 32 
-         if @_blink_count < 16 
-           alpha = (16 - @_blink_count) * 6 
-         else 
-           alpha = (@_blink_count - 16) * 6 
-         end 
-         self.color.set(255, 255, 255, alpha) 
-       end 
-       @@_animations.clear 
-     end 
-   end 
- end 
- #============================================================================== 
- class Game_Temp 
-   #-------------------------------------------------------------------------- 
-   attr_accessor :show_refresh 
-   #-------------------------------------------------------------------------- 
-   alias add_initialize_xdrs initialize 
-   def initialize 
-     add_initialize_xdrs 
-     @show_refresh = false 
-   end 
- end 
- #============================================================================== 
- class Spriteset_Battle 
-   #-------------------------------------------------------------------------- 
-   attr_reader   :viewport1                # 敌人方的显示端口 
-   attr_reader   :viewport2                # 角色方的显示端口 
-   #-------------------------------------------------------------------------- 
-   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 
-     # 生成战斗背景活动块 
-     @battleback_sprite = Sprite.new(@viewport1) 
-     # 生成敌人活动块 
-     @enemy_sprites = [] 
-     for enemy in $game_troop.enemies.reverse 
-       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy)) 
-     end 
-     # 生成敌人活动块 
-     @actor_sprites = [] 
-     @actor_sprites.push(Sprite_Battler.new(@viewport1)) 
-     @actor_sprites.push(Sprite_Battler.new(@viewport1)) 
-     @actor_sprites.push(Sprite_Battler.new(@viewport1)) 
-     @actor_sprites.push(Sprite_Battler.new(@viewport1)) 
-     # 生成天候 
-     @weather = RPG::Weather.new(@viewport1) 
-     # 生成图片活动块 
-     @picture_sprites = [] 
-     for i in 51..100 
-       @picture_sprites.push(Sprite_Picture.new(@viewport3, 
-         $game_screen.pictures[i])) 
-     end 
-     # 生成计时器块 
-     @timer_sprite = Sprite_Timer.new 
-     # 刷新画面 
-     update 
-   end 
-   #-------------------------------------------------------------------------- 
-   def update 
-     # 刷新角色的活动块 (对应角色的替换) 
-     @actor_sprites[0].battler = $game_party.actors[0] 
-     @actor_sprites[1].battler = $game_party.actors[1] 
-     @actor_sprites[2].battler = $game_party.actors[2] 
-     @actor_sprites[3].battler = $game_party.actors[3] 
-     # 战斗背景的文件名与现在情况有差异的情况下 
-     if @battleback_name != $game_temp.battleback_name 
-       @battleback_name = $game_temp.battleback_name 
-       if @battleback_sprite.bitmap != nil 
-         @battleback_sprite.bitmap.dispose 
-       end 
-       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name) 
-       @battleback_sprite.src_rect.set(0, 0, 640, 480) 
-     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 
- class Scene_Battle 
-   #-------------------------------------------------------------------------- 
-   # ● 刷新画面 (主回合) 
-   #-------------------------------------------------------------------------- 
-   def update_phase4 
-     case @phase4_step 
-     when 1 
-       update_phase4_step1 
-     when 2 
-       update_phase4_step2 
-     when 3 
-       update_phase4_step3 
-     when 4 
-       update_phase4_step4 
-     when 5 
-       update_phase4_step5 
-     when 6 
-       update_phase4_step6 
-     when 7 
-       update_phase4_step7 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 刷新画面 (主回合步骤 2 : 开始行动) 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step2 
-     # 如果不是强制行动 
-     unless @active_battler.current_action.forcing 
-       # 限制为 [敌人为普通攻击] 或 [我方为普通攻击] 的情况下 
-       if @active_battler.restriction == 2 or @active_battler.restriction == 3 
-         # 设置行动为攻击 
-         @active_battler.current_action.kind = 0 
-         @active_battler.current_action.basic = 0 
-       end 
-       # 限制为 [不能行动] 的情况下 
-       if @active_battler.restriction == 4 
-         # 清除行动强制对像的战斗者 
-         $game_temp.forcing_battler = nil 
-         # 移至步骤 1 
-         @phase4_step = 1 
-         return 
-       end 
-     end 
-     @active_battler.targets = [] 
-     @set_action = false 
-     # 行动种类分支 
-     case @active_battler.current_action.kind 
-     when 0  # 基本 
-       make_basic_action_result 
-     when 1  # 特技 
-       make_skill_action_result 
-     when 2  # 物品 
-       make_item_action_result 
-     end 
-     # 移至步骤 3 
-     if @phase4_step == 2 
-       @phase4_step = 3 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   def make_basic_action_result 
-     # 攻击的情况下 
-     if @active_battler.current_action.basic == 0 
-       # 设置攻击 ID 
-       @animation1_id = @active_battler.animation1_id 
-       @animation2_id = @active_battler.animation2_id 
-       # 行动方的战斗者是敌人的情况下 
-       if @active_battler.is_a?(Game_Enemy) 
-         if @active_battler.restriction == 3 
-           target = $game_troop.random_target_enemy 
-         elsif @active_battler.restriction == 2 
-           target = $game_party.random_target_actor 
-         else 
-           index = @active_battler.current_action.target_index 
-           target = $game_party.smooth_target_actor(index) 
-         end 
-       end 
-       # 行动方的战斗者是角色的情况下 
-       if @active_battler.is_a?(Game_Actor) 
-         if @active_battler.restriction == 3 
-           target = $game_party.random_target_actor 
-         elsif @active_battler.restriction == 2 
-           target = $game_troop.random_target_enemy 
-         else 
-           index = @active_battler.current_action.target_index 
-           target = $game_troop.smooth_target_enemy(index) 
-         end 
-       end 
-       # 设置对像方的战斗者序列 
-       @active_battler.targets = [target] 
-       # 应用通常攻击效果 
-       for target in @active_battler.targets 
-         target.attack_effect(@active_battler) 
-       end 
-       return 
-     end 
-     # 防御的情况下 
-     if @active_battler.current_action.basic == 1 
-       # 帮助窗口显示"防御" 
-       @help_window.set_text($data_system.words.guard, 1) 
-       @phase4_step = 1 
-       return 
-     end 
-     # 逃跑的情况下 
-     if @active_battler.is_a?(Game_Enemy) and 
-        @active_battler.current_action.basic == 2 
-       #  帮助窗口显示"逃跑" 
-       @help_window.set_text("逃跑", 1) 
-       # 逃跑 
-       @active_battler.escape 
-       return 
-     end 
-     # 什么也不做的情况下 
-     if @active_battler.current_action.basic == 3 
-       # 清除强制行动对像的战斗者 
-       $game_temp.forcing_battler = nil 
-       # 移至步骤 1 
-       @phase4_step = 1 
-       return 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   def set_target_battlers(scope) 
-     # 行动方的战斗者是敌人的情况下 
-     if @active_battler.is_a?(Game_Enemy) 
-       # 效果范围分支 
-       case scope 
-       when 1  # 敌单体 
-         index = @active_battler.current_action.target_index 
-         @active_battler.targets.push($game_party.smooth_target_actor(index)) 
-       when 2  # 敌全体 
-         for actor in $game_party.actors 
-           if actor.exist? 
-             @active_battler.targets.push(actor) 
-           end 
-         end 
-       when 3  # 我方单体 
-         index = @active_battler.current_action.target_index 
-         @active_battler.targets.push($game_troop.smooth_target_enemy(index)) 
-       when 4  # 我方全体 
-         for enemy in $game_troop.enemies 
-           if enemy.exist? 
-             @active_battler.targets.push(enemy) 
-           end 
-         end 
-       when 5  # 我方单体 (HP 0)  
-         index = @active_battler.current_action.target_index 
-         enemy = $game_troop.enemies[index] 
-         if enemy != nil and enemy.hp0? 
-           @active_battler.targets.push(enemy) 
-         end 
-       when 6  # 我方全体 (HP 0)  
-         for enemy in $game_troop.enemies 
-           if enemy != nil and enemy.hp0? 
-             @active_battler.targets.push(enemy) 
-           end 
-         end 
-       when 7  # 使用者 
-         @active_battler.targets.push(@active_battler) 
-       end 
-     else 
-       # 效果范围分支 
-       case scope 
-       when 1  # 敌单体 
-         index = @active_battler.current_action.target_index 
-         @active_battler.targets.push($game_troop.smooth_target_enemy(index)) 
-       when 2  # 敌全体 
-         for enemy in $game_troop.enemies 
-           if enemy.exist? 
-             @active_battler.targets.push(enemy) 
-           end 
-         end 
-       when 3  # 我方单体 
-         index = @active_battler.current_action.target_index 
-         @active_battler.targets.push($game_party.smooth_target_actor(index)) 
-       when 4  # 我方全体 
-         for actor in $game_party.actors 
-           if actor.exist? 
-             @active_battler.targets.push(actor) 
-           end 
-         end 
-       when 5  # 我方单体 (HP 0)  
-         index = @active_battler.current_action.target_index 
-         actor = $game_party.actors[index] 
-         if actor != nil and actor.hp0? 
-           @active_battler.targets.push(actor) 
-         end 
-       when 6  # 我方全体 (HP 0)  
-         for actor in $game_party.actors 
-           if actor != nil and actor.hp0? 
-             @active_battler.targets.push(actor) 
-           end 
-         end 
-       when 7  # 使用者 
-         @active_battler.targets.push(@active_battler) 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 生成特技行动结果 
-   #-------------------------------------------------------------------------- 
-   def make_skill_action_result 
-     # 获取特技 
-     @skill = $data_skills[@active_battler.current_action.skill_id] 
-     # 如果不是强制行动 
-     unless @active_battler.current_action.forcing 
-       # 因为 SP 耗尽而无法使用的情况下 
-       unless @active_battler.skill_can_use?(@skill.id) 
-         # 清除强制行动对像的战斗者 
-         $game_temp.forcing_battler = nil 
-         # 移至步骤 1 
-         @phase4_step = 1 
-         return 
-       end 
-     end 
-     # 消耗 SP 
-     @active_battler.sp -= @skill.sp_cost 
-     # 刷新状态窗口 
-     @active_battler.tip_type = @skill.power > 0 ? 0 : 1 
-     @active_battler.tip_message = @skill.name 
-     # 设置动画 ID 
-     @animation1_id = @skill.animation1_id 
-     @animation2_id = @skill.animation2_id 
-     # 设置公共事件 ID 
-     @common_event_id = @skill.common_event_id 
-     # 设置对像侧战斗者 
-     set_target_battlers(@skill.scope) 
-     # 应用特技效果 
-     for target in @active_battler.targets 
-       target.skill_effect(@active_battler, @skill) 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 生成物品行动结果 
-   #-------------------------------------------------------------------------- 
-   def make_item_action_result 
-     # 获取物品 
-     @item = $data_items[@active_battler.current_action.item_id] 
-     # 因为物品耗尽而无法使用的情况下 
-     unless $game_party.item_can_use?(@item.id) 
-       # 移至步骤 1 
-       @phase4_step = 1 
-       return 
-     end 
-     # 消耗品的情况下 
-     if @item.consumable 
-       # 使用的物品减 1 
-       $game_party.lose_item(@item.id, 1) 
-     end 
-     @active_battler.tip_type = [1,2].include?(@item.scope) ? 0 : 1 
-     @active_battler.tip_message = @item.name 
-     # 设置动画 ID 
-     @animation1_id = @item.animation1_id 
-     @animation2_id = @item.animation2_id 
-     # 设置公共事件 ID 
-     @common_event_id = @item.common_event_id 
-     # 确定对像 
-     index = @active_battler.current_action.target_index 
-     target = $game_party.smooth_target_actor(index) 
-     # 设置对像侧战斗者 
-     set_target_battlers(@item.scope) 
-     # 应用物品效果 
-     for target in @active_battler.targets 
-       target.item_effect(@item) 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 刷新画面 (主回合步骤 3 : 行动方动画) 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step3 
-     unless @set_action 
-       if @active_battler.current_action.kind == 0 
-         @active_battler.moveto_pop = true if @active_battler.current_action.basic == 0 
-       else 
-         @active_battler.tip_pop = true 
-         @active_battler.animation_id = @animation1_id if @animation1_id != 0 
-       end  
-       @set_action = true 
-     end 
-     if @active_battler.current_action.kind == 0 
-       @phase4_step = 4 if @active_battler.atk_pop 
-     elsif @active_battler.current_action.kind == 1 
-       if @animation2_id != 0 
-         for target in @active_battler.targets 
-           target.animation_id = @animation2_id 
-           target.animation_hit = (target.damage != "Miss") 
-         end  
-       end 
-       @phase4_step = 6 
-     else 
-       @phase4_step = 5 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step4 
-     @active_battler.show_refresh = true 
-     @phase4_step = 5 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 刷新画面 (主回合步骤 5 : 对像方动画) 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step5 
-     if @animation2_id != 0 
-       for target in @active_battler.targets 
-         target.animation_id = @animation2_id 
-         target.animation_hit = (target.damage != "Miss") 
-       end  
-     end 
-     @phase4_step = 6 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 刷新画面 (主回合步骤 6 : 显示伤害) 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step6 
-     # 隐藏帮助窗口 
-     @help_window.visible = false 
-     # 刷新状态窗口 
-     for target in @active_battler.targets 
-       if target.damage != nil and target.damage.is_a?(Numeric) 
-         target.show_refresh = true if target.damage != 0 
-         if target.damage > 0 
-           if target.current_action.kind == 0 and  
-            target.current_action.basic == 1 
-             target.guard_pop = true 
-           else 
-             target.ad_pop = true  
-           end 
-         end 
-       end 
-     end  
-     for target in @active_battler.targets 
-       if target.damage != nil  
-         target.damage_pop = true 
-         if target.damage.is_a?(Numeric) and target.dead? 
-           target.dead_pop = true 
-         end  
-       end 
-     end 
-     @status_window.refresh 
-     # 移至步骤 6 
-     @phase4_step = 7 
-   end 
-   #-------------------------------------------------------------------------- 
-   def update_phase4_step7 
-     # 清除强制行动对像的战斗者 
-     $game_temp.forcing_battler = nil 
-     # 公共事件 ID 有效的情况下 
-     if @common_event_id > 0 
-       # 设置事件 
-       common_event = $data_common_events[@common_event_id] 
-       $game_system.battle_interpreter.setup(common_event.list, 0) 
-     end 
-     # 移至步骤 1 
-     @phase4_step = 1 
-   end 
- end 
- #----------------------------------------------------------------------------- 
- class Game_Battler 
-   #--------------------------------------------------------------------------- 
-   attr_accessor :dead_one                 
-   attr_accessor :sp_damage_pop             
-   attr_accessor :sp_damage  
-   attr_accessor :moveto_pop 
-   attr_accessor :moveback_pop 
-   attr_accessor :atk_pop 
-   attr_accessor :int_pop 
-   attr_accessor :dead_pop 
-   attr_accessor :guard_pop 
-   attr_accessor :ad_pop 
-   attr_accessor :atk2_pop 
-   attr_accessor :targets 
-   attr_accessor :show_refresh 
-   attr_accessor :tip_pop 
-   attr_accessor :tip_type 
-   attr_accessor :tip_message 
-   attr_accessor :get_pop 
-   attr_accessor :an2_pop 
-   #-------------------------------------------------------------------------- 
-   def initialize 
-     @battler_name = "" 
-     @battler_hue = 0 
-     @hp = 0 
-     @sp = 0 
-     @states = [] 
-     @states_turn = {} 
-     @maxhp_plus = 0 
-     @maxsp_plus = 0 
-     @str_plus = 0 
-     @dex_plus = 0 
-     @agi_plus = 0 
-     @int_plus = 0 
-     @hidden = false 
-     @immortal = false 
-     @damage_pop = false 
-     @damage = nil 
-     @critical = false 
-     @animation_id = 0 
-     @animation_hit = false 
-     @white_flash = false 
-     @blink = false 
-     @current_action = Game_BattleAction.new 
-     @sp_damage = nil         
-     @dead_one = false 
-     @show_refresh = true 
-     @targets = [] 
-     @tip_pop = false 
-     @get_pop = false 
-     @tip_type = 0 
-     @tip_message = "" 
-     off_pop 
-   end 
-   #--------------------------------------------------------------------------- 
-   def off_pop 
-     @atk_pop = false 
-     @int_pop = false 
-     @dead_pop = false 
-     @guard_pop = false 
-     @ad_pop = false 
-     @moveto_pop = false 
-     @moveback_pop = false 
-     @atk2_pop = false 
-   end 
-   #--------------------------------------------------------------------------- 
-   def moving? 
-     return true if @atk_pop or @atk2_pop or @moveto_pop or @moveback_pop 
-     return false 
-   end 
-   #--------------------------------------------------------------------------- 
- end 
- #=============================================================================== 
- class Sprite_Battler < RPG::Sprite 
-   #-------------------------------------------------------------------------- 
-   def initialize(viewport, battler = nil) 
-     super(viewport) 
-     @battler = battler 
-     if @battler != nil 
-       @set = @battler.is_a?(Game_Enemy) ? 1 : 0 
-     else 
-       @set = 0 
-     end 
-     @battler_name = "00" 
-     @battler_visible = false 
-     @wait_time = @move_time = @atk_time = 0 
-     @int_time = @ad_time = @dead_time = @win_time = 0 
-     @show = Sprite.new(viewport) 
-     @show.bitmap = Bitmap.new(96, 32) 
-     @height = 0   
-     return if @battler.nil? 
-     @show.bitmap.font.color.set(0, 0, 0) 
-     @show.bitmap.fill_rect(0, 0, 62, 6, Color.new(0, 0, 0)) 
-     @show.bitmap.fill_rect(0, 7, 62, 6, Color.new(0, 0, 0)) 
-     w = 60 * @battler.hp / @battler.maxhp 
-     for i in 1..w 
-       @show.bitmap.fill_rect(i, 1, 1, 4, Color.new(255, 0, 255-i*4)) 
-     end 
-     w = 60 * @battler.sp / @battler.maxsp 
-     for i in 1..w 
-       @show.bitmap.fill_rect(i, 8, 1, 4, Color.new(0, 255-i*4, 255)) 
-     end 
-     @show.x = self.x-30 
-     @show.y = self.y - @height - 20 
-     @show.z = 490 
-     @show.visible = @battler_visible 
-   end 
-   #-------------------------------------------------------------------------- 
-   #-------------------------------------------------------------------------- 
-   def dispose 
-     @battler.show_refresh = true if battler != nil 
-     @show.dispose 
-     if self.bitmap != nil 
-       self.bitmap.dispose 
-     end 
-     super 
-   end 
-   #-------------------------------------------------------------------------- 
-   def tuch_range(target) 
-     bp = RPG::Cache.battler(@battler.name, "00", 0) 
-     r1 = bp.width / 2 
-     bp = RPG::Cache.battler(target.name, "01", 0) 
-     r2 = bp.width / 2 
-     return r1 + r2 
-   end 
-   #-------------------------------------------------------------------------- 
-   def update 
-     super 
-     if @battler == nil 
-       self.bitmap = nil 
-       loop_animation(nil) 
-       return 
-     end 
-     @wait_time += 1 
-     @wait_time = 0 if @wait_time >= 39 
-     @battler 
-     name = (0+@set).to_s + (@wait_time / 10).to_s 
-     #---------------------------------------------------------------------- 
-     if @battler.moveto_pop 
-       @move_time += 1 
-       @move_time = 0 if @move_time >= 19 
-       lx = @battler.targets.size == 1 ? @battler.targets[0].screen_x : 320 
-       name = self.x > lx ? "2" : "3" 
-       name += (@move_time / 5).to_s 
-       if @battler.targets.size == 1 
-         target = @battler.targets[0] 
-         if @battler == target 
-           @battler.current_action.kind == 0 ? @battler.atk_pop = true : @battler.atk2_pop = true 
-           @battler.moveto_pop = false 
-           @move_time = 0 
-           return 
-         end 
-         tx = target.screen_x 
-         tx += @battler.screen_x > target.screen_x ? (tuch_range(target)) : -(tuch_range(target)) 
-         ty = target.screen_y 
-       else 
-         tx = 320 
-         ty = 280 
-       end 
-       if self.x == tx and self.y == ty 
-         @battler.current_action.kind == 0 ? @battler.atk_pop = true : @battler.atk2_pop = true 
-         @battler.moveto_pop = false 
-         @move_time = 0 
-         return 
-       end 
-       rx = (self.x - tx).abs 
-       ry = (self.y - ty).abs 
-       lx = [Integer(20.0*rx / (rx+ry)), rx].min 
-       ly = [Integer(20.0*ry / (rx+ry)), ry].min 
-       self.x += self.x > tx ? -lx : (self.x < tx ? lx : 0) 
-       self.y += self.y > ty ? -ly : (self.y < ty ? ly : 0)  
-     end 
-     #--------------------------------------------------------------------- 
-     if @battler.atk_pop 
-       n_time = [@atk_time, 39].min 
-       if @battler.targets.size == 1 
-         nx = self.x > @battler.targets[0].screen_x ? "4" : "5" 
-         name = nx + (n_time / 10).to_s 
-       else 
-         name = (4+@set).to_s + (n_time / 10).to_s 
-       end 
-       @atk_time += 1 
-       if @atk_time >= 39 
-         @atk_time = 0 
-         @battler.atk_pop = false 
-         @battler.moveback_pop = true 
-       end 
-     end 
-     #--------------------------------------------------------------------- 
-     if @battler.atk2_pop 
-       n_time = [@atk_time, 39].min 
-       if @battler.targets.size == 1 
-         nx = self.x > @battler.targets[0].screen_x ? "6" : "7" 
-         name = nx + (n_time / 10).to_s 
-       else 
-         name = (4+@set).to_s + (n_time / 10).to_s 
-       end 
-       @atk_time += 1 
-       if @atk_time >= 49 
-         @atk_time = 0 
-         @battler.atk2_pop = false 
-         @battler.moveback_pop = true 
-       end 
-     end 
-     #---------------------------------------------------------------------- 
-     if @battler.moveback_pop 
-       @move_time += 1 
-       @move_time = 0 if @move_time >= 19 
-       name = self.x > @battler.screen_x ? "2" : "3"  
-       name += (@move_time / 5).to_s 
-       tx = @battler.screen_x 
-       ty = @battler.screen_y 
-       if self.x == tx and self.y == ty 
-         @battler.moveback_pop = false 
-         @move_time = 0 
-         return 
-       end 
-       rx = (self.x - tx).abs 
-       ry = (self.y - ty).abs 
-       lx = [Integer(20.0*rx / (rx+ry)), rx].min 
-       ly = [Integer(20.0*ry / (rx+ry)), ry].min 
-       self.x += self.x > tx ? -lx : (self.x < tx ? lx : 0) 
-       self.y += self.y > ty ? -ly : (self.y < ty ? ly : 0)  
-     end 
-     #---------------------------------------------------------------------- 
-     if @battler.int_pop 
-       if @battler.targets.size == 1 and @battler != @battler.targets[0] 
-         nx = self.x > @battler.targets[0].screen_x ? "12" : "13" 
-         name = nx + (@int_time / 10).to_s 
-       else 
-         name = (12+@set).to_s + (@int_time / 10).to_s 
-       end 
-       @int_time += 1 
-       if @int_time >= 39 
-         @int_time = 0 
-         @battler.int_pop = false 
-       end 
-     end 
-     #---------------------------------------------------------------------- 
-     if @battler.ad_pop 
-       name = (10+@set).to_s + (@ad_time / 40).to_s 
-       @ad_time += 1 
-       if @ad_time >= 39 
-         @ad_time = 0 
-         @battler.ad_pop = false 
-       end 
-     end 
-     #----------------------------------------------------------------------- 
-     if @battler.guard_pop and not @battler.dead? 
-       name = (8+@set).to_s + (@ad_time / 40).to_s 
-       @ad_time += 1 
-       if @ad_time >= 39 
-         @ad_time = 0 
-         @battler.guard_pop = false 
-       end 
-     end 
-     #---------------------------------------------------------------------- 
-     if @battler.dead_pop 
-       name = (14+@set).to_s + (@dead_time / 20).to_s 
-       @dead_time += 1 
-       if @dead_time >= 39 
-         @dead_time = 0 
-         @battler.dead_one = true 
-         @battler.dead_pop = false 
-       end 
-     end 
-     #----------------------------------------------------------------------- 
-     if @battler.dead? and @battler.dead_one 
-       name = (14+@set).to_s + "1" 
-     end 
-     if @battler_name != name 
-       hue = @battler.battler_hue 
-       # 获取、设置位图 
-       @battler_name = name 
-       self.bitmap = RPG::Cache.battler(@battler.name, name, hue) 
-       @width = bitmap.width 
-       @height = bitmap.height 
-       self.ox = @width / 2 
-       self.oy = @height 
-       self.opacity = 0 if @battler.hidden 
-     end 
-     #----------------------------------------------------------------------- 
-     if @battler != nil and @battler.show_refresh 
-       @show.bitmap.clear 
-       @show.bitmap.font.color.set(0, 0, 0) 
-       @show.bitmap.fill_rect(0, 0, 62, 6, Color.new(0, 0, 0)) 
-       @show.bitmap.fill_rect(0, 7, 62, 6, Color.new(0, 0, 0)) 
-       w = 60 * @battler.hp / @battler.maxhp 
-       for i in 1..w 
-         @show.bitmap.fill_rect(i, 1, 1, 4, Color.new(255, 0, (255-i*4))) 
-       end 
-       w = 60 * @battler.sp / @battler.maxsp 
-       for i in 1..w 
-         @show.bitmap.fill_rect(i, 8, 1, 4, Color.new(0, (255-i*4), 255)) 
-       end 
-       @battler.show_refresh = false 
-     end 
-     @show.x = self.x-30 
-     @show.y = self.y - @height - 20 
-     @show.z = 490 
-     if @battler_visible 
-       @show.visible = @battler.dead_one ? false : true 
-     else 
-       @show.visible = @battler_visible 
-     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.blink 
-       blink_on 
-     else 
-       blink_off 
-     end 
-     # 不可见的情况下 
-     unless @battler_visible 
-       # 出现 
-       unless @battler.hidden 
-         appear 
-         @battler_visible = true 
-       end 
-     end 
-     # 可见的情况下 
-     if @battler_visible 
-       # 逃跑 
-       if @battler.hidden 
-         $game_system.se_play($data_system.escape_se) 
-         escape 
-         @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 @battler.tip_pop and @battler.tip_message != "" 
-         tip(@battler.tip_message, @battler.tip_type) 
-         @battler.tip_message = "" 
-         @battler.tip_pop = false 
-       end 
-       if @battler.sp_damage_pop 
-         sp_damage(@battler.sp_damage) 
-         @battler.sp_damage = nil 
-         @battler.sp_damage_pop = false 
-       end 
-     end 
-     unless @battler.moving? 
-       # 设置活动块的坐标 
-       self.x = @battler.screen_x 
-       self.y = @battler.screen_y 
-       self.z = self.y 
-     end 
-     self.z = self.y 
-   end 
- end 
- #============================================================================== 
- class Game_Battler 
-   #-------------------------------------------------------------------------- 
-   def remove_state(state_id, force = false) 
-     # 无法附加本状态的情况下 
-     if state?(state_id) 
-       # 被强制附加的状态、并不是强制解除的情况下 
-       if @states_turn[state_id] == -1 and not force 
-         # 过程结束 
-         return 
-       end 
-       # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合 
-       if @hp == 0 and $data_states[state_id].zero_hp 
-         # 判断是否有另外的 [当作 HP 0 的状态]状态 
-         zero_hp = false 
-         for i in @states 
-           if i != state_id and $data_states[i].zero_hp 
-             zero_hp = true 
-           end 
-         end 
-         # 如果可以解除战斗不能、将 HP 更改为 1 
-         if zero_hp == false 
-           @hp = 1 
-           self.dead_one = false 
-         end 
-       end 
-       # 将状态 ID 从 @states 队列和 @states_turn hash 中删除  
-       @states.delete(state_id) 
-       @states_turn.delete(state_id) 
-     end 
-     # 检查 HP 及 SP 的最大值 
-     @hp = [@hp, self.maxhp].min 
-     @sp = [@sp, self.maxsp].min 
-   end 
- end 
- #============================================================================== 
- class Game_Actor < Game_Battler 
-   #-------------------------------------------------------------------------- 
-   # ● # 调 X 坐标。 
-   #-------------------------------------------------------------------------- 
-   def screen_x 
-     if self.index != nil 
-       case self.index 
-       when 0           
-         return 480 
-       when 1 
-         return 500 
-       when 2 
-         return 520 
-       when 3 
-         return 540 
-       end 
-     else 
-       return 0 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● # 调 Y 坐标。 
-   #-------------------------------------------------------------------------- 
-   def screen_y 
-     if self.index != nil 
-       case self.index 
-       when 0            
-         return 200 
-       when 1 
-         return 240 
-       when 2 
-         return 280 
-       when 3 
-         return 320 
-       end 
-     else 
-       return 0 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 取得战斗画面的 Z 坐标 
-   #-------------------------------------------------------------------------- 
-   def screen_z 
-     if self.index != nil 
-       return screen_y 
-     else 
-       return 0 
-     end 
-   end 
- end 
- ############################################################################### 
- #==============================================================================