- #============================================================================== 
 
- # ■ 此脚本来自 [url]www.66rpg.com[/url] 
 
- #------------------------------------------------------------------------------ 
 
- #   名称:横版战斗模板 
 
 
- #   版本:v1.7  2012-02-09 
 
- #   使用协议:在保留此脚本相关信息的情况下 
 
- #             可任意使用、修改及修改后发布. 
 
- #             如是修改后发布.请在作者标注那里加上 某某某改 等信息 
 
- #             感谢你来这里谈谈你对这个工程的看法或报告BUG. 
 
- #               [url]http://bbs.66rpg.com/thread-216673-1-1.html[/url] 
 
- #   使用说明: 
 
- #       请来发布帖查看: 
 
- #           [url]http://bbs.66rpg.com/thread-216673-1-1.html[/url] 
 
- #============================================================================== 
 
-   
 
- module Hzhj 
 
-   module HorizontalBattleSystem 
 
-     # 取得参战角色的最大数.如果要改大.需要在下面的坐标设置里增加对应的条目 
 
-     MaxBattleMembers = 5 
 
-   
 
-     ActorsBattlePosition = {} 
 
-     # 设置角色战斗图形的坐标 
 
-     # 等号左边的[]号里面的1 2 3 4 表示角色在队伍里的位置 
 
-     # 等号右边的[]号里面的两个数字分别表示 X坐标 Y坐标 
 
-     # 每次进入战斗的时候都会以这里设置的信息作为初始化位置. 
 
-     # 如果你把上面的 MaxBattleMembers 改大了.比如改成了 5. 
 
-     # 那么你需要在下面新增一行代码设置队伍中第5位置的坐标. 
 
-     # 就像这样 ActorsBattlePosition[5] = [X坐标, Y坐标] 
 
-     ActorsBattlePosition[1] = [378, 228] 
 
-     ActorsBattlePosition[2] = [422, 272] 
 
-     ActorsBattlePosition[3] = [466, 228] 
 
-     ActorsBattlePosition[4] = [510, 272] 
 
-     ActorsBattlePosition[5] = [300, 272] 
 
-   
 
-     # 设置伤害值图形的色相 取值范围 0~360 
 
-     DamageBitmapHue = 0 
 
-     # 伤害值分段显示的标志SE文件名 
 
-     DamageSectionDisplaySEName = "DamageSection" 
 
-   
 
-     # 动画 Z 坐标值默认变化量 
 
-     DefaultAniAddZ = 768 
 
-   
 
-     # 状态动画 Z 坐标值默认变化量 
 
-     DefaultLoopAniAddZ = 20 
 
-   
 
-     # 战斗中角色的面向 
 
-     ActorDirection = 4 
 
-   
 
-     # 真位移的帧数 
 
-     RealMoveDuration = 20 
 
-     # 真位移移动前会计算目标点.会获取攻防双方战斗图大小来进行计算. 
 
-     # 下面2个是对战斗图 width height 进行修正. 
 
-     # 为正则扩大 为负则缩小.单位 像素. 
 
-     # 一般来说不必修改.只有像梦幻群侠传那种战斗图四边有很多透明区域时才修正. 
 
-     RealMoveBmpAddW = 0 
 
-     RealMoveBmpAddH = 0 
 
-   
 
-     # 使用技能、物品的过程默认使用RMVA模式 
 
-     # 在该模式下.本脚本提供的很多功能受限无法使用. 
 
-     DefaultUseRmvaMode = false 
 
-   
 
-     # 默认显示敌人的HP条、MP条、TP条 
 
-     DefaultDisplayEnemyBar = true 
 
-   
 
-     # 一张战斗图中有几个样式(帧、格) 
 
-     DynamicPatternMax = 4 
 
-     # 一张战斗图中的一个样式持续多少帧 
 
-     OnePatternDuration = 15 
 
-   
 
-     # 角色使用战斗死亡图形 
 
-     UseActorDeadGraphic = false 
 
-     # 敌人使用战斗死亡图形 
 
-     UseEnemyDeadGraphic = false 
 
-   
 
-     # 使用挨打图形 
 
-     UseBeatenGraphic = true 
 
-     # 挨打图形维持帧数 
 
-     BeatenGraphicDuration = 30 
 
-   
 
-     # 是否使用角色防御图 只有同时使用了挨打图.此项才有效. 
 
-     UseActorGuardGraphic = true 
 
-     # 是否使用敌人防御图 只有同时使用了挨打图.此项才有效. 
 
-     UseEnemyGuardGraphic = false 
 
-   
 
-     # 角色是否使用挨打SE 
 
-     UseActorWBSE = true 
 
-     # 敌人是否使用挨打SE 
 
-     UseEnemyWBSE = true 
 
-     # 角色是否使用防御SE 
 
-     UseActorGDSE = true 
 
-     # 敌人是否使用防御SE 
 
-     UseEnemyGDSE = false 
 
-   end 
 
- end 
 
-   
 
- class RPG::Actor < RPG::BaseItem 
 
-   def battler_name 
 
-     return @battler_name unless @battler_name.nil? 
 
-     if /@btname\[(.+?)\]/ =~ @note 
 
-       return (@battler_name = $1.clone) 
 
-     else 
 
-       return (@battler_name = "#{@name}_#{@nickname}") 
 
-     end 
 
-   end 
 
-   def battler_hue 
 
-     return @battler_hue unless @battler_hue.nil? 
 
-     if /@bthue\[([0-9]+?)\]/ =~ @note 
 
-       return (@battler_hue = $1.to_i.abs) 
 
-     else 
 
-       return (@battler_hue = 0) 
 
-     end 
 
-   end 
 
-   attr_writer :battler_name 
 
-   attr_writer :battler_hue 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Actor 
 
- #============================================================================== 
 
- class Game_Actor < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 属性(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   attr_writer   :battler_name             # 战斗图形文件名 
 
-   attr_writer   :battler_hue              # 战斗图形色相 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_setup_for_add_actor_battle_graphic setup 
 
-   def setup(actor_id) 
 
-     hzhj_old_setup_for_add_actor_battle_graphic(actor_id) 
 
-     @battler_name = actor.battler_name 
 
-     @battler_hue = actor.battler_hue 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 是否使用活动块(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def use_sprite? 
 
-     return true 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得战斗画面 X 坐标(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def screen_x 
 
-     return ActorsBattlePosition[index + 1][0] 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得战斗画面 Y 坐标(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def screen_y 
 
-     return ActorsBattlePosition[index + 1][1] 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得战斗画面 Z 坐标(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def screen_z 
 
-     return real_screen_y + 100 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Enemy 
 
- #============================================================================== 
 
- class Game_Enemy < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 属性(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   attr_writer   :battler_name             # 战斗图形文件名 
 
-   attr_writer   :battler_hue              # 战斗图形色相 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得战斗画面 Z 坐标(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def screen_z 
 
-     return real_screen_y + 100 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Party 
 
- #============================================================================== 
 
- class Game_Party < Game_Unit 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得参战角色的最大数(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def max_battle_members 
 
-     return MaxBattleMembers 
 
-   end 
 
- end 
 
-   
 
- class RPG::Animation 
 
-   def wait_subject_duration 
 
-     return @wait_subject_duration unless @wait_subject_duration.nil? 
 
-     if /@w\[(\-??\d+?)\]/ =~ @name 
 
-       @wait_subject_duration = $1.to_i 
 
-     else 
 
-       @wait_subject_duration = 0 
 
-     end 
 
-     return @wait_subject_duration 
 
-   end 
 
-   attr_writer :wait_subject_duration 
 
- end 
 
- class RPG::UsableItem < RPG::BaseItem 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   def animation1_id 
 
-     return @animation1_id unless @animation1_id.nil? 
 
-     if /@a1id\[(\d+?)\]/i =~ @note 
 
-       return (@animation1_id = $1.to_i) 
 
-     else 
 
-       return (@animation1_id = 0) 
 
-     end 
 
-   end 
 
-   def wljn 
 
-     return @wljn unless @wljn.nil? 
 
-     if /@wljn/i =~ @note 
 
-       return (@wljn = true) 
 
-     else 
 
-       return (@wljn = false) 
 
-     end 
 
-   end 
 
-   def rmva_mode 
 
-     return @rmva_mode unless @rmva_mode.nil? 
 
-     if /@rmva/i =~ @note 
 
-       return (@rmva_mode = !DefaultUseRmvaMode) 
 
-     else 
 
-       return (@rmva_mode = DefaultUseRmvaMode) 
 
-     end 
 
-   end 
 
-   attr_writer :animation1_id 
 
-   attr_writer :wljn 
 
-   attr_writer :rmva_mode 
 
- end 
 
- class RPG::Weapon < RPG::EquipItem 
 
-   def animation1_id 
 
-     return @animation1_id unless @animation1_id.nil? 
 
-     if /@a1id\[(\d+?)\]/ =~ @note 
 
-       return (@animation1_id = $1.to_i) 
 
-     else 
 
-       return (@animation1_id = 0) 
 
-     end 
 
-   end 
 
-   attr_writer :animation1_id 
 
- end 
 
- class RPG::Enemy < RPG::BaseItem 
 
-   def animation1_id 
 
-     return @animation1_id unless @animation1_id.nil? 
 
-     if /@a1id\[(\d+?)\]/ =~ @note 
 
-       return (@animation1_id = $1.to_i) 
 
-     else 
 
-       return (@animation1_id = 0) 
 
-     end 
 
-   end 
 
-   def animation2_id 
 
-     return @animation2_id unless @animation2_id.nil? 
 
-     if /@a2id\[(\d+?)\]/ =~ @note 
 
-       return (@animation2_id = $1.to_i) 
 
-     else 
 
-       return (@animation2_id = 0) 
 
-     end 
 
-   end 
 
-   def animation3_id 
 
-     return @animation3_id unless @animation3_id.nil? 
 
-     if /@a3id\[(\d+?)\]/ =~ @note 
 
-       return (@animation3_id = $1.to_i) 
 
-     else 
 
-       return (@animation3_id = 0) 
 
-     end 
 
-   end 
 
-   attr_writer :animation1_id 
 
-   attr_writer :animation2_id 
 
-   attr_writer :animation3_id 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Actor 
 
- #============================================================================== 
 
- class Game_Actor < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得普通攻击的行动方动画 ID (新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def animation1_id 
 
-     if dual_wield? 
 
-       return weapons[0].animation1_id if weapons[0] 
 
-       return weapons[1] ? weapons[1].animation1_id : 0 
 
-     else 
 
-       return weapons[0] ? weapons[0].animation1_id : 0 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Enemy 
 
- #============================================================================== 
 
- class Game_Enemy < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得普通攻击的行动方动画 ID (新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def animation1_id 
 
-     return enemy.animation1_id 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得普通攻击的动画 ID (新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def atk_animation_id1 
 
-     return enemy.animation2_id 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得普通攻击的动画 ID (二刀流:武器2)(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def atk_animation_id2 
 
-     return enemy.animation3_id 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Scene_Battle 
 
- #============================================================================== 
 
- class Scene_Battle < Scene_Base 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 使用技能/物品(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def use_item 
 
-     item = @subject.current_action.item 
 
-     @log_window.display_use_item(@subject, item) 
 
-     @subject.use_item(item) 
 
-     refresh_status 
 
-     targets = @subject.current_action.make_targets.compact 
 
-     show_animation(targets, item.animation_id) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示动画(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_animation(targets, animation_id) 
 
-     item = @subject.current_action.item 
 
-     if item.rmva_mode 
 
-       show_rmva_animation(targets, animation_id, item) 
 
-     else 
 
-       show_hzhj_animation(targets, animation_id, item) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● RMVA模式显示动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_rmva_animation(targets, animation_id, item) 
 
-     @subject.damage_section_displayed = false 
 
-     @subject.not_damage_section = true 
 
-     targets.each do |target| 
 
-       target.damage_section_displayed = false 
 
-       target.not_damage_section = true 
 
-     end 
 
-     if animation_id < 0 
 
-       show_attack_animation(targets) 
 
-     else 
 
-       show_rmva_usable_animation(targets, animation_id, item) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● HZHJ模式显示动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_hzhj_animation(targets, animation_id, item) 
 
-     if animation_id < 0 
 
-       show_hzhj_attack_animation(targets, item) 
 
-     else 
 
-       if item.wljn 
 
-         show_wljn_skill_animation(targets, animation_id, item) 
 
-       else 
 
-         show_magic_skill_animation(targets, animation_id, item) 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● HZHJ模式显示攻击动画(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_hzhj_attack_animation(targets, item) 
 
-     ary = [] 
 
-     need_move = false 
 
-     animation1 = $data_animations[@subject.animation1_id] 
 
-     need_move = animation1.need_move if animation1 
 
-     come_back = true 
 
-     targets.each_with_index do |target, i| 
 
-       ary[0] = target 
 
-       item.repeats.times do 
 
-         next if target.dead? && item.damage.type == 1 
 
-         next if @subject.dead? 
 
-         next if !@subject.current_action 
 
-         if need_move && come_back 
 
-           come_back = false 
 
-           @subject.setup_move_info(target, RealMoveDuration, animation1.move_se) 
 
-           wait_for_move 
 
-         end 
 
-         damage_target = hzhj_apply_item_effects(target, item) 
 
-         show_subject_animation(@subject.animation1_id) 
 
-         show_normal_animation(ary, @subject.atk_animation_id1, false) 
 
-         show_normal_animation(ary, @subject.atk_animation_id2, true) 
 
-         @log_window.wait 
 
-         wait_for_animation 
 
-         hzhj_invoke_item(target, item, damage_target) 
 
-       end 
 
-       if need_move 
 
-         if target != targets[i+1] or target.dead? 
 
-           come_back = true 
 
-           @subject.come_back_self_position(RealMoveDuration) 
 
-           wait_for_move 
 
-         else 
 
-           come_back = false 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● HZHJ模式显示物理技能类动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_wljn_skill_animation(targets, animation_id, item) 
 
-     ary = [] 
 
-     need_move = false 
 
-     animation1 = $data_animations[item.animation1_id] 
 
-     need_move = animation1.need_move if animation1 
 
-     come_back = true 
 
-     targets.each_with_index do |target, i| 
 
-       ary[0] = target 
 
-       item.repeats.times do 
 
-         next if target.dead? && item.damage.type == 1 
 
-         next if @subject.dead? 
 
-         next if !@subject.current_action 
 
-         if need_move && come_back 
 
-           come_back = false 
 
-           @subject.setup_move_info(target, RealMoveDuration, animation1.move_se) 
 
-           wait_for_move 
 
-         end 
 
-         damage_target = hzhj_apply_item_effects(target, item) 
 
-         show_subject_animation(item.animation1_id) 
 
-         show_normal_animation(ary, animation_id, false) 
 
-         @log_window.wait 
 
-         wait_for_animation 
 
-         hzhj_invoke_item(target, item, damage_target) 
 
-       end 
 
-       if need_move 
 
-         if target != targets[i+1] or target.dead? 
 
-           come_back = true 
 
-           @subject.come_back_self_position(RealMoveDuration) 
 
-           wait_for_move 
 
-         else 
 
-           come_back = false 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● HZHJ模式显示魔法技能类动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_magic_skill_animation(targets, animation_id, item) 
 
-     ary = [] 
 
-     damage_targets = {} 
 
-     item.repeats.times do 
 
-       next if @subject.dead? 
 
-       next if !@subject.current_action 
 
-       ary.clear 
 
-       damage_targets.clear 
 
-       targets.each do |target| 
 
-         next if target.dead? && item.damage.type == 1 
 
-         ary << target 
 
-         damage_targets[target] = hzhj_apply_item_effects(target, item) 
 
-       end 
 
-       next if ary.empty? 
 
-       show_subject_animation(item.animation1_id) 
 
-       show_normal_animation(ary, animation_id) 
 
-       @log_window.wait 
 
-       wait_for_animation 
 
-       ary.each do |target| 
 
-         hzhj_invoke_item(target, item, damage_targets[target]) 
 
-       end 
 
-       if [9, 10].include?(item.scope) 
 
-         ary.each do |target| 
 
-           if target.alive? 
 
-             target.come_back_self_position(RealMoveDuration) 
 
-           end 
 
-         end 
 
-         wait_for_move 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● RMVA模式显示攻击动画(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_attack_animation(targets) 
 
-     item = @subject.current_action.item 
 
-     show_subject_animation(@subject.animation1_id) 
 
-     show_normal_animation(targets, @subject.atk_animation_id1, false) 
 
-     show_normal_animation(targets, @subject.atk_animation_id2, true) 
 
-     @log_window.wait 
 
-     wait_for_animation 
 
-     targets.each {|target| item.repeats.times { invoke_item(target, item) } } 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● RMVA模式显示技能、物品动画 (新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_rmva_usable_animation(targets, animation_id, item) 
 
-     show_subject_animation(item.animation1_id) 
 
-     show_normal_animation(targets, animation_id) 
 
-     @log_window.wait 
 
-     wait_for_animation 
 
-     targets.each {|target| item.repeats.times { invoke_item(target, item) } } 
 
-     if [9, 10].include?(item.scope) 
 
-       targets.each do |target| 
 
-         if target.alive? 
 
-           target.come_back_self_position(RealMoveDuration) 
 
-         end 
 
-       end 
 
-       wait_for_move 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示行动方动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def show_subject_animation(animation_id, subject = @subject, mirror = false) 
 
-     animation = $data_animations[animation_id] 
 
-     if animation 
 
-       subject.animation_id = animation_id 
 
-       subject.animation_mirror = mirror 
 
-       if animation.wait_subject_duration < 0 
 
-         wait_for_animation 
 
-       elsif animation.wait_subject_duration > 0 
 
-         animation.wait_subject_duration.times{update_for_wait} 
 
-       end 
 
-     end 
 
-   end 
 
- end 
 
-   
 
- class RPG::Animation 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   def ani_z_correction 
 
-     return @ani_z_correction unless @ani_z_correction.nil? 
 
-     if /@az\[(\-??\d+?)\]/ =~ @name 
 
-       return (@ani_z_correction = $1.to_i) 
 
-     else 
 
-       return (@ani_z_correction = DefaultAniAddZ) 
 
-     end 
 
-   end 
 
-   def loop_z_correction 
 
-     return @loop_z_correction unless @loop_z_correction.nil? 
 
-     if /@lz\[(\-??\d+?)\]/ =~ @name 
 
-       return (@loop_z_correction = $1.to_i) 
 
-     else 
 
-       return (@loop_z_correction = DefaultLoopAniAddZ) 
 
-     end 
 
-   end 
 
-   attr_writer :ani_z_correction 
 
-   attr_writer :loop_z_correction 
 
- end 
 
- class RPG::State < RPG::BaseItem 
 
-   def animation_id 
 
-     return @animation_id unless @animation_id.nil? 
 
-     if /@aid\[(\d+?)\]/ =~ @note 
 
-       return (@animation_id = $1.to_i) 
 
-     else 
 
-       return (@animation_id = 0) 
 
-     end 
 
-   end 
 
-   attr_writer :animation_id 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_BattlerBase 
 
- #============================================================================== 
 
- class Game_BattlerBase 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 实例变量(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   attr_reader   :hzhj_add_state_id 
 
-   attr_reader   :hzhj_remove_state_id 
 
-   attr_accessor :need_update_state_animation 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_state_ani_game_battler_base initialize 
 
-   def initialize 
 
-     @hzhj_add_state_id = [] 
 
-     @hzhj_remove_state_id = [] 
 
-     @need_update_state_animation = false 
 
-     @states = [] 
 
-     @state_turns = {} 
 
-     @state_steps = {} 
 
-     hzhj_old_init_for_state_ani_game_battler_base 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 清除状态信息(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_clear_states_for_state_ani_game_battler_base clear_states 
 
-   def clear_states 
 
-     old_states = @states.clone 
 
-     hzhj_old_clear_states_for_state_ani_game_battler_base 
 
-     bingji = old_states | @states 
 
-     return if bingji.empty? 
 
-     set_add_state_id(bingji & @states) 
 
-     set_remove_state_id(bingji & old_states) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 消除状态(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_erase_state_for_state_ani_game_battler_base erase_state 
 
-   def erase_state(state_id) 
 
-     old_states = @states.clone 
 
-     hzhj_old_erase_state_for_state_ani_game_battler_base(state_id) 
 
-     bingji = old_states | @states 
 
-     return if bingji.empty? 
 
-     set_add_state_id(bingji & @states) 
 
-     set_remove_state_id(bingji & old_states) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置增加的状态(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def set_add_state_id(zjdzt) 
 
-     for i in zjdzt 
 
-       if $data_states[i].animation_id > 0 
 
-         if not @hzhj_add_state_id.include?(i) 
 
-           @hzhj_add_state_id.push(i) 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置解除的状态(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def set_remove_state_id(jsdzt) 
 
-     for i in jsdzt 
 
-       if $data_states[i].animation_id > 0 
 
-         if not @hzhj_remove_state_id.include?(i) 
 
-           ani_id = $data_states[i].animation_id 
 
-           not_end_loop_animation = false 
 
-           for state in self.states 
 
-             if state.animation_id == ani_id 
 
-               not_end_loop_animation = true 
 
-               break 
 
-             end 
 
-           end 
 
-           unless not_end_loop_animation 
 
-             @hzhj_remove_state_id.push(i) 
 
-           end 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Battler 
 
- #============================================================================== 
 
- class Game_Battler < Game_BattlerBase 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 附加新的状态(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_add_new_state_for_state_ani_game_battler add_new_state 
 
-   def add_new_state(state_id) 
 
-     old_states = @states.clone 
 
-     hzhj_old_add_new_state_for_state_ani_game_battler(state_id) 
 
-     bingji = old_states | @states 
 
-     return if bingji.empty? 
 
-     set_add_state_id(bingji & @states) 
 
-     set_remove_state_id(bingji & old_states) 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Base 
 
- #============================================================================== 
 
- class Sprite_Base < Sprite 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_state_ani_spr_base initialize 
 
-   def initialize(*args) 
 
-     hzhj_old_init_for_state_ani_spr_base(*args) 
 
-     @hzhj_loop_animations = [] 
 
-     @hzhj_loop_durations = {} 
 
-     @hzhj_loop_sprites = {} 
 
-     @hzhj_loop_bitmap1s = {} 
 
-     @hzhj_loop_bitmap2s = {} 
 
-     @hzhj_loop_ani_oxs = {} 
 
-     @hzhj_loop_ani_oys = {} 
 
-     @flash_nil_duration = 0 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 释放(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_dispose_for_state_ani_spr_base dispose 
 
-   def dispose 
 
-     dispose_loop_animation 
 
-     hzhj_old_dispose_for_state_ani_spr_base 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设定动画的活动块(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_ani_set_spr_for_state_ani_spr_base animation_set_sprites 
 
-   def animation_set_sprites(*args) 
 
-     hzhj_old_ani_set_spr_for_state_ani_spr_base(*args) 
 
-     @ani_sprites.each{|sprite|sprite.z += @animation.ani_z_correction} 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 判断是否有循环动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def loop_animation? 
 
-     return (not @hzhj_loop_animations.empty?) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 开始播放循环动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def start_loop_animation(animation) 
 
-     return if @hzhj_loop_animations.include?(animation) 
 
-     if animation.nil? 
 
-       dispose_loop_animation 
 
-       return 
 
-     end 
 
-     set_animation_rate 
 
-     @hzhj_loop_animations.push(animation) 
 
-     init_loop_animation_duration(animation) 
 
-     load_loop_animation_bitmap(animation) 
 
-     make_loop_animation_sprites(animation) 
 
-     set_loop_animation_origin(animation) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化循环动画播放位置(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def init_loop_animation_duration(animation) 
 
-     @hzhj_loop_durations[animation] = animation.frame_max * @ani_rate + 1 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 读取循环动画图像(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def load_loop_animation_bitmap(animation) 
 
-     animation1_name = animation.animation1_name 
 
-     animation1_hue = animation.animation1_hue 
 
-     animation2_name = animation.animation2_name 
 
-     animation2_hue = animation.animation2_hue 
 
-     bitmap1 = Cache.animation(animation1_name, animation1_hue) 
 
-     bitmap2 = Cache.animation(animation2_name, animation2_hue) 
 
-     if @@_reference_count.include?(bitmap1) 
 
-       @@_reference_count[bitmap1] += 1 
 
-     else 
 
-       @@_reference_count[bitmap1] = 1 
 
-     end 
 
-     if @@_reference_count.include?(bitmap2) 
 
-       @@_reference_count[bitmap2] += 1 
 
-     else 
 
-       @@_reference_count[bitmap2] = 1 
 
-     end 
 
-     @hzhj_loop_bitmap1s[animation] = bitmap1 
 
-     @hzhj_loop_bitmap2s[animation] = bitmap2 
 
-     Graphics.frame_reset 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 生成循环动画活动块(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def make_loop_animation_sprites(animation) 
 
-     sprites = [] 
 
-     if @use_sprite 
 
-       16.times do 
 
-         sprite = ::Sprite.new(viewport) 
 
-         sprite.visible = false 
 
-         sprites.push(sprite) 
 
-       end 
 
-     end 
 
-     @hzhj_loop_sprites[animation] = sprites 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设定循环动画的原点(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def set_loop_animation_origin(animation) 
 
-     if animation.position == 3 
 
-       if viewport == nil 
 
-         ani_ox = Graphics.width / 2 
 
-         ani_oy = Graphics.height / 2 
 
-       else 
 
-         ani_ox = viewport.rect.width / 2 
 
-         ani_oy = viewport.rect.height / 2 
 
-       end 
 
-     else 
 
-       ani_ox = x - ox + width / 2 
 
-       ani_oy = y - oy + height / 2 
 
-       if animation.position == 0 
 
-         ani_oy -= height / 2 
 
-       elsif animation.position == 2 
 
-         ani_oy += height / 2 
 
-       end 
 
-     end 
 
-     @hzhj_loop_ani_oxs[animation] = ani_ox 
 
-     @hzhj_loop_ani_oys[animation] = ani_oy 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 释放所有循环动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def dispose_loop_animation 
 
-     return unless loop_animation? 
 
-     for animation in @hzhj_loop_animations.clone 
 
-       end_loop_animation(animation) 
 
-     end 
 
-     @hzhj_loop_durations.clear 
 
-     @hzhj_loop_sprites.clear 
 
-     @hzhj_loop_bitmap1s.clear 
 
-     @hzhj_loop_bitmap2s.clear 
 
-     @hzhj_loop_ani_oxs.clear 
 
-     @hzhj_loop_ani_oys.clear 
 
-     @hzhj_loop_animations.clear 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 结束某个循环动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def end_loop_animation(animation) 
 
-     return if not @hzhj_loop_animations.include?(animation) 
 
-     bitmap1 = @hzhj_loop_bitmap1s[animation] 
 
-     @@_reference_count[bitmap1] -= 1 
 
-     if @@_reference_count[bitmap1] == 0 
 
-       @@_reference_count.delete(bitmap1) 
 
-       bitmap1.dispose 
 
-     end 
 
-     bitmap2 = @hzhj_loop_bitmap2s[animation] 
 
-     @@_reference_count[bitmap2] -= 1 
 
-     if @@_reference_count[bitmap2] == 0 
 
-       @@_reference_count.delete(bitmap2) 
 
-       bitmap2.dispose 
 
-     end 
 
-     sprites = @hzhj_loop_sprites[animation] 
 
-     for sprite in sprites 
 
-       sprite.dispose 
 
-     end 
 
-     @hzhj_loop_durations.delete(animation) 
 
-     @hzhj_loop_sprites.delete(animation) 
 
-     @hzhj_loop_bitmap1s.delete(animation) 
 
-     @hzhj_loop_bitmap2s.delete(animation) 
 
-     @hzhj_loop_ani_oxs.delete(animation) 
 
-     @hzhj_loop_ani_oys.delete(animation) 
 
-     @hzhj_loop_animations.delete(animation) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_for_state_ani_spr_base update 
 
-   def update 
 
-     hzhj_old_update_for_state_ani_spr_base 
 
-     update_loop_animation 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新循环动画(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def update_loop_animation 
 
-     @flash_nil_duration -= 1 if @flash_nil_duration > 0 
 
-     return unless loop_animation? 
 
-     for animation in @hzhj_loop_animations 
 
-       @hzhj_loop_durations[animation] -= 1 
 
-       duration = @hzhj_loop_durations[animation] 
 
-       if duration % @ani_rate == 0 
 
-         if duration > 0 
 
-           set_loop_animation_origin(animation) 
 
-           frame_index = animation.frame_max 
 
-           frame_index -= (duration + @ani_rate - 1) / @ani_rate 
 
-           args = [] 
 
-           args[0] = @hzhj_loop_sprites[animation] 
 
-           args[1] = @hzhj_loop_bitmap1s[animation] 
 
-           args[2] = @hzhj_loop_bitmap2s[animation] 
 
-           args[3] = @hzhj_loop_ani_oxs[animation] 
 
-           args[4] = @hzhj_loop_ani_oys[animation] 
 
-           args[5] = animation.loop_z_correction 
 
-           args[6] = ((not flash_nil? or animation.to_screen?) and visible) 
 
-           loop_animation_set_sprites(animation.frames[frame_index], args) 
 
-           animation.timings.each do |timing| 
 
-             loop_animation_process_timing(timing) if timing.frame == frame_index 
 
-           end 
 
-         else 
 
-           init_loop_animation_duration(animation) 
 
-           redo 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设定循环动画的活动块(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def loop_animation_set_sprites(frame, args) 
 
-     sprites = args[0] 
 
-     bitmap1 = args[1] 
 
-     bitmap2 = args[2] 
 
-     ani_ox = args[3] 
 
-     ani_oy = args[4] 
 
-     loop_z_correction = args[5] 
 
-     state_visible = args[6] 
 
-     cell_data = frame.cell_data 
 
-     sprites.each_with_index do |sprite, i| 
 
-       next unless sprite 
 
-       pattern = cell_data[i, 0] 
 
-       if !pattern || pattern < 0 
 
-         sprite.visible = false 
 
-         next 
 
-       end 
 
-       sprite.bitmap = pattern < 100 ? bitmap1 : bitmap2 
 
-       sprite.visible = state_visible 
 
-       sprite.src_rect.set(pattern % 5 * 192, 
 
-         pattern % 100 / 5 * 192, 192, 192) 
 
-       sprite.x = ani_ox + cell_data[i, 1] 
 
-       sprite.y = ani_oy + cell_data[i, 2] 
 
-       sprite.angle = cell_data[i, 4] 
 
-       sprite.mirror = (cell_data[i, 5] == 1) 
 
-       if loop_z_correction > 9999 
 
-         sprite.z = loop_z_correction % 10000 + i 
 
-       elsif loop_z_correction < -9999 
 
-         sprite.z = loop_z_correction % -10000 + i 
 
-       else 
 
-         sprite.z = self.z + loop_z_correction + i 
 
-       end 
 
-       sprite.ox = 96 
 
-       sprite.oy = 96 
 
-       sprite.zoom_x = cell_data[i, 3] / 100.0 
 
-       sprite.zoom_y = cell_data[i, 3] / 100.0 
 
-       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 
 
-       sprite.blend_type = cell_data[i, 7] 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 循环动画SE 和闪烁时机的处理(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def loop_animation_process_timing(timing) 
 
-     timing.se.play 
 
-     case timing.flash_scope 
 
-     when 1 
 
-       self.flash(timing.flash_color, timing.flash_duration * @ani_rate) 
 
-     when 2 
 
-       if viewport 
 
-         viewport.flash(timing.flash_color, timing.flash_duration * @ani_rate) 
 
-       end 
 
-     when 3 
 
-       self.flash(nil, timing.flash_duration * @ani_rate) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置闪烁(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_flash_for_state_ani_spr_base flash 
 
-   def flash(*args) 
 
-     if args[0].nil? 
 
-       @flash_nil_duration = args[1] 
 
-     else 
 
-       @flash_nil_duration = 0 
 
-     end 
 
-     hzhj_old_flash_for_state_ani_spr_base(*args) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 判断是否正处于【隐藏目标】(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def flash_nil? 
 
-     return (@flash_nil_duration > 0) 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_state_ani_spr_battler initialize 
 
-   def initialize(*args) 
 
-     hzhj_old_init_for_state_ani_spr_battler(*args) 
 
-     init_battler_add_state_id 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化战斗者要播放状态动画的状态(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def init_battler_add_state_id 
 
-     if @battler.nil? 
 
-       dispose_loop_animation 
 
-     else 
 
-       @battler.hzhj_add_state_id.clear 
 
-       @battler.hzhj_remove_state_id.clear 
 
-       @battler.need_update_state_animation = true 
 
-       for state in @battler.states 
 
-         next if state.nil? 
 
-         next if $data_animations[state.animation_id].nil? 
 
-         @battler.hzhj_add_state_id.push(state.id) 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置战斗者(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_battlerdy_for_state_ani_spr_battler battler= 
 
-   def battler=(value) 
 
-     old_battler = @battler 
 
-     hzhj_old_battlerdy_for_state_ani_spr_battler(value) 
 
-     if old_battler != @battler 
 
-       init_battler_add_state_id 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_for_state_ani_spr_battler update 
 
-   def update 
 
-     hzhj_old_update_for_state_ani_spr_battler 
 
-     if @battler 
 
-       if @battler.need_update_state_animation 
 
-         @battler.need_update_state_animation = false 
 
-         if not @battler.hzhj_add_state_id.empty? 
 
-           for i in @battler.hzhj_add_state_id 
 
-             if @battler.state?(i) 
 
-               ani_id = $data_states[i].animation_id 
 
-               animation = $data_animations[ani_id] 
 
-               start_loop_animation(animation) if not animation.nil? 
 
-             end 
 
-           end 
 
-           @battler.hzhj_add_state_id.clear 
 
-         end 
 
-         if not @battler.hzhj_remove_state_id.empty? 
 
-           for i in @battler.hzhj_remove_state_id 
 
-             if not @battler.state?(i) 
 
-               ani_id = $data_states[i].animation_id 
 
-               animation = $data_animations[ani_id] 
 
-               end_loop_animation(animation) if not animation.nil? 
 
-             end 
 
-           end 
 
-           @battler.hzhj_remove_state_id.clear 
 
-         end 
 
-       end 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Window_BattleLog 
 
- #============================================================================== 
 
- class Window_BattleLog < Window_Selectable 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示状态附加/解除(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_status_for_state_ani_wnd_btlog display_changed_states 
 
-   def display_changed_states(target) 
 
-     target.need_update_state_animation = true 
 
-     hzhj_old_display_status_for_state_ani_wnd_btlog(target) 
 
-   end 
 
- end 
 
-   
 
- #============================================================================== 
 
- # ■ Sprite_Damage (新增类) 
 
- #============================================================================== 
 
- class Sprite_Damage < Sprite 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 获取/生成伤害值源图 
 
-   #-------------------------------------------------------------------------- 
 
-   @@obmp = nil 
 
-   def self.obmp 
 
-     if @@obmp.nil? or @@obmp.disposed? 
 
-       @@obmp = Bitmap.new(180, 256) 
 
-       @@obmp.font.bold = true 
 
-       @@obmp.font.shadow = false 
 
-       @@obmp.font.outline = true 
 
-       @@obmp.font.out_color = Color.new(255, 255, 255, 255) 
 
-       @@obmp.font.size = 32 
 
-       colors = [] 
 
-       colors.push(Color.new(255,   0,   0, 255)) 
 
-       colors.push(Color.new(255, 128, 128, 255)) 
 
-       colors.push(Color.new(  0,   0, 255, 255)) 
 
-       colors.push(Color.new(128, 128, 255, 255)) 
 
-       colors.push(Color.new(  0, 255,   0, 255)) 
 
-       colors.push(Color.new(128, 255, 128, 255)) 
 
-       colors.each_with_index do |color, hi| 
 
-         @@obmp.font.color = color 
 
-         for wi in 0..9 
 
-           @@obmp.draw_text(wi * 18, hi * 32, 18, 32, "#{wi}", 1) 
 
-         end 
 
-       end 
 
-       @@obmp.font.size = 20 
 
-       @@obmp.font.italic = true 
 
-       @@obmp.font.out_color = Color.new(0, 0, 0, 255) 
 
-       @@obmp.font.color = Color.new(255, 255, 255, 255) 
 
-       @@obmp.draw_text( 0, 192, 90, 32, "Critical", 1) 
 
-       @@obmp.draw_text(90, 192, 90, 32, "Miss", 1) 
 
-       @@obmp.draw_text( 0, 224, 90, 32, "Evasion", 1) 
 
-       @@obmp.hue_change(DamageBitmapHue) 
 
-     end 
 
-     return @@obmp 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化 
 
-   #-------------------------------------------------------------------------- 
 
-   def initialize(viewport, args) 
 
-     super(viewport) 
 
-     @type = args[0] 
 
-     @value = args[1] 
 
-     @critical = args[2] 
 
-     self.x = args[4] 
 
-     self.y = args[5] 
 
-     self.z = args[6] + Graphics.height * 5 
 
-     make_move(args[3]) 
 
-     refresh 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 生成移动数据 
 
-   #-------------------------------------------------------------------------- 
 
-   def make_move(battler_obj_class) 
 
-     @move = [] 
 
-     case battler_obj_class 
 
-     when :actor 
 
-       make_move_actor 
 
-     when :enemy 
 
-       make_move_enemy 
 
-     else 
 
-       make_move_default 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 生成移动数据 默认 
 
-   #-------------------------------------------------------------------------- 
 
-   def make_move_default 
 
-     45.times do |n| 
 
-       if n % 3 == 0 
 
-         ady = n < 21 ? -6 : -1 
 
-         opa = n < 21 ? 255 : 255-(n-21)*6 
 
-         @move.push([0, ady, opa]) 
 
-       else 
 
-         @move.push([0, 0, -1]) 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 生成移动数据 角色 
 
-   #-------------------------------------------------------------------------- 
 
-   def make_move_actor 
 
-     make_move_default 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 生成移动数据 敌人 
 
-   #-------------------------------------------------------------------------- 
 
-   def make_move_enemy 
 
-     make_move_default 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描绘 
 
-   #-------------------------------------------------------------------------- 
 
-   def refresh 
 
-     if not self.bitmap.nil? 
 
-       self.bitmap.dispose 
 
-       self.bitmap = nil 
 
-     end 
 
-     begin 
 
-       @obmp = Cache.animation("damage", DamageBitmapHue) 
 
-     rescue Errno::ENOENT 
 
-       @obmp = Sprite_Damage.obmp 
 
-     end 
 
-     @numw = @obmp.width / 10 
 
-     @numh = @obmp.height / 8 
 
-     @strw = @obmp.width / 2 
 
-     case @value 
 
-     when Numeric 
 
-       blt_obmp_numeric 
 
-     when Symbol 
 
-       blt_obmp_text 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 通过源图描绘数字 
 
-   #-------------------------------------------------------------------------- 
 
-   def blt_obmp_numeric 
 
-     nums = @value.to_i.abs.to_s.split("") 
 
-     nbmpw = nums.size * @numw 
 
-     bmph = @numh 
 
-     cbmpw = 0 
 
-     crect = nil 
 
-     dy = 0 
 
-     if @critical 
 
-       cbmpw = @strw 
 
-       bmph *= 2 
 
-       crect = Rect.new(0, @numh * 6, @strw, @numh) 
 
-       dy = @numh 
 
-     end 
 
-     self.bitmap = Bitmap.new([nbmpw, cbmpw, 32].max, [bmph, 32].max) 
 
-     self.ox = bitmap.width / 2 
 
-     self.oy = bmph /2 
 
-     bitmap.blt((bitmap.width - cbmpw) / 2, 0, @obmp, crect) if crect 
 
-     dx = (bitmap.width - nbmpw) / 2 
 
-     ry = 0 
 
-     case @type 
 
-     when :hp 
 
-       ry = @value >= 0 ? 0 : @numh 
 
-     when :mp 
 
-       ry = @value >= 0 ? @numh * 2 : @numh * 3 
 
-     when :tp 
 
-       ry = @value >= 0 ? @numh * 4 : @numh * 5 
 
-     else 
 
-       return 
 
-     end 
 
-     rect = Rect.new(0, ry, @numw, @numh) 
 
-     nums.each_with_index do |str, i| 
 
-       rect.x = str.to_i * @numw 
 
-       bitmap.blt(dx, dy, @obmp, rect) 
 
-       dx += @numw 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 通过源图描绘文字 
 
-   #-------------------------------------------------------------------------- 
 
-   def blt_obmp_text 
 
-     self.bitmap = Bitmap.new([@strw, 32].max, [@numh, 32].max) 
 
-     self.ox = @strw / 2 
 
-     self.oy = @numh / 2 
 
-     rx = ry = 0 
 
-     case @type 
 
-     when :miss 
 
-       rx = @strw 
 
-       ry = @numh * 6 
 
-     when :eva 
 
-       ry = @numh * 7 
 
-     else 
 
-       return 
 
-     end 
 
-     rect = Rect.new(rx, ry, @strw, @numh) 
 
-     bitmap.blt(0, 0, @obmp, rect) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 释放 
 
-   #-------------------------------------------------------------------------- 
 
-   def dispose 
 
-     bitmap.dispose if bitmap 
 
-     super 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 移动中判定 
 
-   #-------------------------------------------------------------------------- 
 
-   def moving? 
 
-     return (not @move.empty?) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新 
 
-   #-------------------------------------------------------------------------- 
 
-   def update 
 
-     super 
 
-     if moving? 
 
-       ary = @move.shift 
 
-       self.x += ary[0] 
 
-       self.y += ary[1] 
 
-       self.opacity = ary[2] if ary[2] >= 0 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_BattlerBase 
 
- #============================================================================== 
 
- class Game_BattlerBase 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 实例变量(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   attr_accessor :hzhj_damage 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_display_damage_game_battler_base initialize 
 
-   def initialize 
 
-     @hzhj_damage = [] 
 
-     hzhj_old_init_for_display_damage_game_battler_base 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Base 
 
- #============================================================================== 
 
- class Sprite_Base < Sprite 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_display_damage_spr_base initialize 
 
-   def initialize(*args) 
 
-     hzhj_old_init_for_display_damage_spr_base(*args) 
 
-     @hzhj_damage_sprites = [] 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 释放(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_dispose_for_display_damage_spr_base dispose 
 
-   def dispose 
 
-     hzhj_old_dispose_for_display_damage_spr_base 
 
-     dispose_damage 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 判断是否有伤害在显示(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def damage? 
 
-     return (not @hzhj_damage_sprites.empty?) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 开始显示伤害(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def start_damage(args) 
 
-     args[4] = x - ox + width / 2 
 
-     args[5] = y - oy + height / 2 
 
-     args[6] = z 
 
-     @hzhj_damage_sprites.push(Sprite_Damage.new(viewport, args)) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 释放所有伤害显示(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def dispose_damage 
 
-     return unless damage? 
 
-     @hzhj_damage_sprites.each{|sprite|sprite.dispose} 
 
-     @hzhj_damage_sprites.clear 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_for_display_damage_spr_base update 
 
-   def update 
 
-     hzhj_old_update_for_display_damage_spr_base 
 
-     update_damage 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新显示伤害(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def update_damage 
 
-     return unless damage? 
 
-     @hzhj_damage_sprites.each_with_index do |sprite, i| 
 
-       if sprite.moving? 
 
-         sprite.update 
 
-       else 
 
-         sprite.dispose 
 
-         @hzhj_damage_sprites[i] = nil 
 
-       end 
 
-     end 
 
-     @hzhj_damage_sprites.delete(nil) 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_for_display_damage_spr_battler update 
 
-   def update 
 
-     hzhj_old_update_for_display_damage_spr_battler 
 
-     if @battler 
 
-       if not @battler.hzhj_damage.empty? 
 
-         unless @battler.damage_section_displayed 
 
-           args = @battler.hzhj_damage.clone 
 
-           args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil) 
 
-           start_damage(args) 
 
-         end 
 
-         @battler.hzhj_damage.clear 
 
-       end 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Window_BattleLog 
 
- #============================================================================== 
 
- class Window_BattleLog < Window_Selectable 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示 MISS (追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_miss_for_display_damage_wnd_btlog display_miss 
 
-   def display_miss(target, item) 
 
-     target.hzhj_damage = [:miss, :miss, false] 
 
-     hzhj_old_display_miss_for_display_damage_wnd_btlog(target, item) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示回避 (追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_evasion_for_display_damage_wnd_btlog display_evasion 
 
-   def display_evasion(target, item) 
 
-     target.hzhj_damage = [:eva, :evasion, false] 
 
-     hzhj_old_display_evasion_for_display_damage_wnd_btlog(target, item) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示 HP 伤害 (追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_hp_damage_for_display_damage_wnd_btlog display_hp_damage 
 
-   def display_hp_damage(target, item) 
 
-     return if target.result.hp_damage == 0 && item && !item.damage.to_hp? 
 
-     value = target.result.hp_damage 
 
-     critical = target.result.critical 
 
-     target.hzhj_damage = [:hp, value, critical] 
 
-     hzhj_old_display_hp_damage_for_display_damage_wnd_btlog(target, item) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示 MP 伤害 (追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_mp_damage_for_display_damage_wnd_btlog display_mp_damage 
 
-   def display_mp_damage(target, item) 
 
-     return if target.dead? || target.result.mp_damage == 0 
 
-     value = target.result.mp_damage 
 
-     critical = target.result.critical 
 
-     target.hzhj_damage = [:mp, value, critical] 
 
-     hzhj_old_display_mp_damage_for_display_damage_wnd_btlog(target, item) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 显示 TP 伤害 (追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_display_tp_damage_for_display_damage_wnd_btlog display_tp_damage 
 
-   def display_tp_damage(target, item) 
 
-     return if target.dead? || target.result.tp_damage == 0 
 
-     value = target.result.tp_damage 
 
-     critical = target.result.critical 
 
-     target.hzhj_damage = [:tp, value, critical] 
 
-     hzhj_old_display_tp_damage_for_display_damage_wnd_btlog(target, item) 
 
-   end 
 
- end 
 
-   
 
- class RPG::Animation 
 
-   def need_move 
 
-     return @need_move unless @need_move.nil? 
 
-     if /@[Rr][Mm]/ =~ @name 
 
-       return (@need_move = true) 
 
-     else 
 
-       return (@need_move = false) 
 
-     end 
 
-   end 
 
-   def move_se 
 
-     return @move_se unless @move_se.nil? 
 
-     @move_se = RPG::SE.new 
 
-     if /@[Ss][Ee]\[(.+?)\]/ =~ @name 
 
-       @move_se.name = $1.clone 
 
-     end 
 
-     return @move_se 
 
-   end 
 
-   attr_writer :need_move 
 
-   attr_writer :move_se 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Battler 
 
- #============================================================================== 
 
- class Game_Battler < Game_BattlerBase 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 属性 
 
-   #-------------------------------------------------------------------------- 
 
-   attr_accessor :add_x                    # X 坐标变化量 
 
-   attr_accessor :add_y                    # Y 坐标变化量 
 
-   attr_accessor :move_speed_x             # 战斗图 X 移动速度 
 
-   attr_accessor :move_speed_y             # 战斗图 Y 移动速度 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_real_move_game_battler initialize 
 
-   def initialize 
 
-     @add_x = 0 
 
-     @add_y = 0 
 
-     @move_speed_x = 0 
 
-     @move_speed_y = 0 
 
-     hzhj_old_init_for_real_move_game_battler 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 真实 X 坐标(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def real_screen_x 
 
-     return screen_x + add_x 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 真实 Y 坐标(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def real_screen_y 
 
-     return screen_y + add_y 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 返回自己的战斗位置(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def come_back_self_position(duration) 
 
-     return if dead? 
 
-     tx = screen_x 
 
-     ty = screen_y 
 
-     addx = tx - real_screen_x 
 
-     addy = ty - real_screen_y 
 
-     return if addx == 0 && addy == 0 
 
-     @add_x = 0 
 
-     @add_y = 0 
 
-     @move_speed_x = [(addx.abs / duration.to_f).ceil, 1].max 
 
-     @move_speed_y = [(addy.abs / duration.to_f).ceil, 1].max 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置移动信息(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def setup_move_info(target_battler, duration, move_se) 
 
-     return if dead? 
 
-     tbmp = Cache.battler(target_battler.battler_name, target_battler.battler_hue) 
 
-     sbmp = Cache.battler(@battler_name, @battler_hue) 
 
-     tbw = tbmp.width / DynamicPatternMax + RealMoveBmpAddW 
 
-     sbw = sbmp.width / DynamicPatternMax + RealMoveBmpAddW 
 
-     tbh = tbmp.height + RealMoveBmpAddH 
 
-     sbh = sbmp.height + RealMoveBmpAddH 
 
-     d = actor? ? ActorDirection : 10 - ActorDirection 
 
-     tx = target_battler.real_screen_x 
 
-     ty = target_battler.real_screen_y 
 
-     case d 
 
-     when 1 
 
-       tx = tx + tbw / 2 + sbw / 2 
 
-       ty = ty - sbh / 2 
 
-     when 2 
 
-       ty = ty - sbh / 2 
 
-     when 3 
 
-       tx = tx - tbw / 2 - sbw / 2 
 
-       ty = ty - sbh / 2 
 
-     when 4 
 
-       tx = tx + tbw / 2 + sbw / 2 
 
-     when 6 
 
-       tx = tx - tbw / 2 - sbw / 2 
 
-     when 7 
 
-       tx = tx + tbw / 2 + sbw / 2 
 
-       ty = ty + sbh / 2 
 
-     when 8 
 
-       ty = ty + sbh / 2 
 
-     when 9 
 
-       tx = tx - tbw / 2 - sbw / 2 
 
-       ty = ty + sbh / 2 
 
-     end 
 
-     addx = tx - real_screen_x 
 
-     addy = ty - real_screen_y 
 
-     return if addx == 0 && addy == 0 
 
-     @add_x = tx - screen_x if addx != 0 
 
-     @add_y = ty - screen_y if addy != 0 
 
-     @move_speed_x = [(addx.abs / duration.to_f).ceil, 1].max 
 
-     @move_speed_y = [(addy.abs / duration.to_f).ceil, 1].max 
 
-     move_se.play 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_real_move_spr_battler initialize 
 
-   def initialize(viewport, battler = nil) 
 
-     hzhj_old_init_for_real_move_spr_battler(viewport, battler) 
 
-     init_position(@battler) if @battler 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置战斗者(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_set_battler_for_real_move_spr_battler battler= 
 
-   def battler=(value) 
 
-     if @battler != value && value 
 
-       init_position(value) 
 
-     end 
 
-     hzhj_old_set_battler_for_real_move_spr_battler(value) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化位置(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def init_position(battler) 
 
-     battler.add_x = 0 
 
-     battler.add_y = 0 
 
-     self.x = battler.real_screen_x 
 
-     self.y = battler.real_screen_y 
 
-     self.z = battler.screen_z 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 移动中判定(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def moving? 
 
-     return false unless @battler 
 
-     (x != @battler.real_screen_x or y != @battler.real_screen_y) && @battler 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 位置的更新(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def update_position 
 
-     if !@battler.dead? 
 
-       if x < @battler.real_screen_x 
 
-         self.x = [x + @battler.move_speed_x, @battler.real_screen_x].min 
 
-       elsif x > @battler.real_screen_x 
 
-         self.x = [x - @battler.move_speed_x, @battler.real_screen_x].max 
 
-       end 
 
-       if y < @battler.real_screen_y 
 
-         self.y = [y + @battler.move_speed_y, @battler.real_screen_y].min 
 
-       elsif y > @battler.real_screen_y 
 
-         self.y = [y - @battler.move_speed_y, @battler.real_screen_y].max 
 
-       end 
 
-       self.z = y + 100 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Spriteset_Battle 
 
- #============================================================================== 
 
- class Spriteset_Battle 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 判定是否移动中(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def moving? 
 
-     battler_sprites.any? {|sprite| sprite.moving? } 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Scene_Battle 
 
- #============================================================================== 
 
- class Scene_Battle < Scene_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 等待战斗图移动的结束(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def wait_for_move 
 
-     update_for_wait 
 
-     update_for_wait while @spriteset.moving? 
 
-   end 
 
- end 
 
-   
 
- class RPG::Troop 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   def display_enemy_bar 
 
-     return @display_enemy_bar unless @display_enemy_bar.nil? 
 
-     if /@ebar/i =~ @name 
 
-       return (@display_enemy_bar = !DefaultDisplayEnemyBar) 
 
-     else 
 
-       return (@display_enemy_bar = DefaultDisplayEnemyBar) 
 
-     end 
 
-   end 
 
-   attr_writer :display_enemy_bar 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Troop 
 
- #============================================================================== 
 
- class Game_Troop < Game_Unit 
 
-   attr_accessor :display_enemy_bar      # 是否显示敌人HP条、MP条、TP条 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_setup_for_display_enemy_bar_game_troop setup 
 
-   def setup(troop_id) 
 
-     hzhj_old_setup_for_display_enemy_bar_game_troop(troop_id) 
 
-     @display_enemy_bar = troop.display_enemy_bar 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Window_BattleEnemy 
 
- #============================================================================== 
 
- class Window_BattleEnemy < Window_Selectable 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得列数 
 
-   #-------------------------------------------------------------------------- 
 
-   def col_max 
 
-     if $game_troop.display_enemy_bar 
 
-       return 1 
 
-     else 
 
-       return 2 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 刷新 
 
-   #-------------------------------------------------------------------------- 
 
-   def refresh 
 
-     create_contents 
 
-     super 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描画项目 
 
-   #-------------------------------------------------------------------------- 
 
-   def draw_item(index) 
 
-     if $game_troop.display_enemy_bar 
 
-       enemy = $game_troop.alive_members[index] 
 
-       draw_basic_area(basic_area_rect(index), enemy) 
 
-       draw_gauge_area(gauge_area_rect(index), enemy) 
 
-     else 
 
-       change_color(normal_color) 
 
-       name = $game_troop.alive_members[index].name 
 
-       draw_text(item_rect_for_text(index), name) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得基本区域的矩形 
 
-   #-------------------------------------------------------------------------- 
 
-   def basic_area_rect(index) 
 
-     rect = item_rect_for_text(index) 
 
-     rect.width -= gauge_area_width + 10 
 
-     rect 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得值槽区域的矩形 
 
-   #-------------------------------------------------------------------------- 
 
-   def gauge_area_rect(index) 
 
-     rect = item_rect_for_text(index) 
 
-     rect.x += rect.width - gauge_area_width 
 
-     rect.width = gauge_area_width 
 
-     rect 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 取得值槽区域的宽度 
 
-   #-------------------------------------------------------------------------- 
 
-   def gauge_area_width 
 
-     return 220 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描画基本区域 
 
-   #-------------------------------------------------------------------------- 
 
-   def draw_basic_area(rect, actor) 
 
-     draw_actor_name(actor, rect.x + 0, rect.y, 100) 
 
-     draw_actor_icons(actor, rect.x + 104, rect.y, rect.width - 104) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描画值槽区域 
 
-   #-------------------------------------------------------------------------- 
 
-   def draw_gauge_area(rect, actor) 
 
-     if $data_system.opt_display_tp 
 
-       draw_gauge_area_with_tp(rect, actor) 
 
-     else 
 
-       draw_gauge_area_without_tp(rect, actor) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描画值槽区域(包括 TP 值) 
 
-   #-------------------------------------------------------------------------- 
 
-   def draw_gauge_area_with_tp(rect, actor) 
 
-     draw_actor_hp(actor, rect.x + 0, rect.y, 72) 
 
-     draw_actor_mp(actor, rect.x + 82, rect.y, 64) 
 
-     draw_actor_tp(actor, rect.x + 156, rect.y, 64) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 描画值槽区域(不包括 TP 值) 
 
-   #-------------------------------------------------------------------------- 
 
-   def draw_gauge_area_without_tp(rect, actor) 
 
-     draw_actor_hp(actor, rect.x + 0, rect.y, 134) 
 
-     draw_actor_mp(actor, rect.x + 144,  rect.y, 76) 
 
-   end 
 
- end 
 
-   
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   include Hzhj::HorizontalBattleSystem 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_dynamic_spr_battler initialize 
 
-   def initialize(viewport, battler = nil) 
 
-     hzhj_old_init_for_dynamic_spr_battler(viewport, battler) 
 
-     @dynamic_duration = 0 
 
-     @dynamic_duration_max = DynamicPatternMax * OnePatternDuration 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 源位图(Source Bitmap)的更新(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def update_bitmap 
 
-     new_bitmap = Cache.battler(@battler.battler_name, @battler.battler_hue) 
 
-     if bitmap != new_bitmap 
 
-       self.bitmap = new_bitmap 
 
-       init_visibility 
 
-       @dynamic_duration = 0 
 
-       @sx = 0 
 
-       @sw = bitmap.width / DynamicPatternMax 
 
-       @sh = bitmap.height 
 
-       self.ox = @sw / 2 
 
-       self.oy = @sh 
 
-       src_rect.set(@sx, 0, @sw, @sh) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 原点的更新(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def update_origin 
 
-     if bitmap 
 
-       @dynamic_duration += 1 
 
-       @dynamic_duration %= @dynamic_duration_max 
 
-       @sx = @dynamic_duration / OnePatternDuration * @sw 
 
-       src_rect.set(@sx, 0, @sw, @sh) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 返回普通设定(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_revert_to_normal_for_dynamic_spr_battler revert_to_normal 
 
-   def revert_to_normal 
 
-     hzhj_old_revert_to_normal_for_dynamic_spr_battler 
 
-     self.ox = @sw / 2 if bitmap 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● BOSS 战败(崩坏)效果的更新(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_boss_col_for_dynamic_spr_battler update_boss_collapse 
 
-   def update_boss_collapse 
 
-     hzhj_old_update_boss_col_for_dynamic_spr_battler 
 
-     self.ox = @sw / 2 + @effect_duration % 2 * 4 - 2 
 
-   end 
 
- end 
 
-   
 
- #============================================================================== 
 
- # ■ Game_Battler 
 
- #============================================================================== 
 
- class Game_Battler < Game_BattlerBase 
 
-   def set_normal_battler_name 
 
-     @battler_name = @battler_name.split(/★/)[0] 
 
-   end 
 
-   def set_beaten_battler_name 
 
-     if guard? 
 
-       if (UseActorGuardGraphic && actor?) or 
 
-          (UseEnemyGuardGraphic && enemy?) 
 
-         set_guard_battler_name 
 
-         return 
 
-       end 
 
-     end 
 
-     @battler_name = @battler_name.split(/★/)[0] + "★1" 
 
-     if UseActorWBSE && actor? 
 
-       Audio.se_play("Audio/SE/AWBSE_#{id}", 100, 100) 
 
-     elsif UseEnemyWBSE && enemy? 
 
-       Audio.se_play("Audio/SE/EWBSE_#{enemy_id}", 100, 100) 
 
-     end 
 
-   end 
 
-   def set_dead_battler_name 
 
-     @battler_name = @battler_name.split(/★/)[0] + "★2" 
 
-   end 
 
-   def set_guard_battler_name 
 
-     @battler_name = @battler_name.split(/★/)[0] + "★3" 
 
-     if UseActorGDSE && actor? 
 
-       Audio.se_play("Audio/SE/AGDSE_#{id}", 100, 100) 
 
-     elsif UseEnemyGDSE && enemy? 
 
-       Audio.se_play("Audio/SE/EGDSE_#{enemy_id}", 100, 100) 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_init_for_dead_spr_battler initialize 
 
-   def initialize(viewport, battler = nil) 
 
-     hzhj_old_init_for_dead_spr_battler(viewport, battler) 
 
-     @dead_graphic_used = false 
 
-     if @battler 
 
-       @battler.set_normal_battler_name 
 
-       if @battler.dead? 
 
-         if (UseActorDeadGraphic && @battler.actor?) or 
 
-            (UseEnemyDeadGraphic && @battler.enemy?) 
 
-           @battler.set_dead_battler_name 
 
-           @dead_graphic_used = true 
 
-         end 
 
-       end 
 
-     end 
 
-     @beaten_duration = -1 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置战斗者(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_set_battler_for_dead_spr_battler battler= 
 
-   def battler=(value) 
 
-     if @battler != value 
 
-       @dead_graphic_used = false 
 
-       if value 
 
-         value.set_normal_battler_name 
 
-         if value.dead? 
 
-           if (UseActorDeadGraphic && value.actor?) or 
 
-              (UseEnemyDeadGraphic && value.enemy?) 
 
-             value.set_dead_battler_name 
 
-             @dead_graphic_used = true 
 
-           end 
 
-         end 
 
-       end 
 
-       @beaten_duration = -1 
 
-     end 
 
-     hzhj_old_set_battler_for_dead_spr_battler(value) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 源位图(Source Bitmap)的更新(重定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_update_bitmap_for_was_beaten_spr_battler update_bitmap 
 
-   def update_bitmap 
 
-     if @beaten_duration > 0 
 
-       @beaten_duration -= 1 
 
-     elsif @beaten_duration == 0 
 
-       @beaten_duration = -1 
 
-       set_bitmap(:normal) 
 
-     end 
 
-     hzhj_old_update_bitmap_for_was_beaten_spr_battler 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 初始化可视状态(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_visibility_for_dead_spr_battler init_visibility 
 
-   def init_visibility 
 
-     hzhj_old_visibility_for_dead_spr_battler 
 
-     if @battler.dead? 
 
-       if (UseActorDeadGraphic && @battler.actor?) or 
 
-          (UseEnemyDeadGraphic && @battler.enemy?) 
 
-         self.opacity = 255 
 
-       end 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 效果开始(追加定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_start_effect_for_dead_spr_battler start_effect 
 
-   def start_effect(effect_type) 
 
-     if effect_type == :appear 
 
-       if @dead_graphic_used 
 
-         set_bitmap(:normal) 
 
-         @effect_type = nil 
 
-         @effect_duration = 0 
 
-         @dead_graphic_used = false 
 
-         @battler_visible = true 
 
-         return 
 
-       end 
 
-     elsif effect_type == :collapse or 
 
-           effect_type == :boss_collapse or 
 
-           effect_type == :instant_collapse 
 
-       if @beaten_duration >= 0 
 
-         @beaten_duration = -1 
 
-         set_bitmap(:normal) 
 
-       end 
 
-       if (UseActorDeadGraphic && @battler.actor?) or 
 
-          (UseEnemyDeadGraphic && @battler.enemy?) 
 
-         set_bitmap(:dead) 
 
-         @effect_type = nil 
 
-         @effect_duration = 0 
 
-         @dead_graphic_used = true 
 
-         @battler_visible = false 
 
-         return 
 
-       end 
 
-     end 
 
-     hzhj_old_start_effect_for_dead_spr_battler(effect_type) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 设置新的位图(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def set_bitmap(sym) 
 
-     case sym 
 
-     when :normal 
 
-       @battler.set_normal_battler_name 
 
-     when :was_beaten 
 
-       @battler.set_beaten_battler_name 
 
-     when :dead 
 
-       @battler.set_dead_battler_name 
 
-     else 
 
-       return 
 
-     end 
 
-     new_bitmap = Cache.battler(@battler.battler_name, @battler.battler_hue) 
 
-     if bitmap != new_bitmap 
 
-       self.bitmap = new_bitmap 
 
-       @dynamic_duration = 0 
 
-       @sx = 0 
 
-       @sw = bitmap.width / DynamicPatternMax 
 
-       @sh = bitmap.height 
 
-       self.ox = @sw / 2 
 
-       self.oy = @sh 
 
-       src_rect.set(@sx, 0, @sw, @sh) 
 
-     end 
 
-     update_origin 
 
-     update_position 
 
-   end 
 
- end 
 
-   
 
- #============================================================================== 
 
- # ■ Scene_Battle 
 
- #============================================================================== 
 
- class Scene_Battle < Scene_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 发动技能/物品(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def hzhj_invoke_item(target, item, damage_target) 
 
-     refresh_status 
 
-     @log_window.display_action_results(damage_target, item) 
 
-     @subject.damage_section_displayed = false 
 
-     @subject.last_target_index = target.index 
 
-     return if target.dead? 
 
-     if rand < target.item_cnt(@subject, item) 
 
-       hzhj_invoke_counter_attack(target, item) 
 
-     elsif rand < target.item_mrf(@subject, item) 
 
-       hzhj_invoke_magic_reflection(target, item) 
 
-     end 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 发动物理反击(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def hzhj_invoke_counter_attack(target, item) 
 
-     @log_window.display_counter(target, item) 
 
-     attack_skill = $data_skills[target.attack_skill_id] 
 
-     @subject.item_apply(target, attack_skill) 
 
-     need_move = false 
 
-     animation1 = $data_animations[target.animation1_id] 
 
-     need_move = animation1.need_move if animation1 
 
-     ary = [@subject] 
 
-     if need_move 
 
-       target.setup_move_info(@subject, RealMoveDuration, animation1.move_se) 
 
-       wait_for_move 
 
-     end 
 
-     @subject.damage_section_displayed = false 
 
-     @subject.not_damage_section = false 
 
-     show_subject_animation(target.animation1_id, target) 
 
-     show_normal_animation(ary, target.atk_animation_id1, false) 
 
-     show_normal_animation(ary, target.atk_animation_id2, true) 
 
-     @log_window.wait 
 
-     wait_for_animation 
 
-     if need_move && target.alive? 
 
-       target.come_back_self_position(RealMoveDuration) 
 
-       wait_for_move 
 
-     end 
 
-     refresh_status 
 
-     @log_window.display_action_results(@subject, attack_skill) 
 
-   end 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 发动魔法反射(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def hzhj_invoke_magic_reflection(target, item) 
 
-     @subject.damage_section_displayed = false 
 
-     @subject.not_damage_section = false 
 
-     @log_window.display_reflection(target, item) 
 
-     @subject.item_apply(@subject, item) 
 
-     refresh_status 
 
-     @log_window.display_action_results(@subject, item) 
 
-   end 
 
- end 
 
-   
 
- #============================================================================== 
 
- # ■ Game_Battler 
 
- #============================================================================== 
 
- class Game_Battler < Game_BattlerBase 
 
-   attr_accessor :damage_section_displayed 
 
-   attr_accessor :not_damage_section 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Actor 
 
- #============================================================================== 
 
- class Game_Actor < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 执行伤害效果 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_per_damage_for_damage_section_game_actor perform_damage_effect 
 
-   def perform_damage_effect 
 
-     unless damage_section_displayed 
 
-       hzhj_old_per_damage_for_damage_section_game_actor 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Game_Enemy 
 
- #============================================================================== 
 
- class Game_Enemy < Game_Battler 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 执行伤害效果 
 
-   #-------------------------------------------------------------------------- 
 
-   alias hzhj_old_per_damage_for_damage_section_game_enemy perform_damage_effect 
 
-   def perform_damage_effect 
 
-     unless damage_section_displayed 
 
-       hzhj_old_per_damage_for_damage_section_game_enemy 
 
-     end 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Sprite_Battler 
 
- #============================================================================== 
 
- class Sprite_Battler < Sprite_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● SE 和闪烁时机的处理 
 
-   #-------------------------------------------------------------------------- 
 
-   def animation_process_timing(timing) 
 
-     if timing.se.name == DamageSectionDisplaySEName 
 
-       hp_value = @battler.result.hp_damage 
 
-       mp_value = @battler.result.mp_damage 
 
-       tp_value = @battler.result.tp_damage 
 
-       value = args = nil 
 
-       was_beaten = false 
 
-       if hp_value != 0 && !@battler.not_damage_section 
 
-         was_beaten = true if hp_value > 0 
 
-         value = hp_value * timing.flash_color.red.to_i / 100 
 
-         critical = @battler.result.critical 
 
-         args = [:hp, value, critical] 
 
-       elsif mp_value != 0 && !@battler.not_damage_section 
 
-         was_beaten = true if mp_value > 0 
 
-         value = mp_value * timing.flash_color.red.to_i / 100 
 
-         critical = @battler.result.critical 
 
-         args = [:mp, value, critical] 
 
-       elsif tp_value != 0 && !@battler.not_damage_section 
 
-         was_beaten = true if tp_value > 0 
 
-         value = tp_value * timing.flash_color.red.to_i / 100 
 
-         critical = @battler.result.critical 
 
-         args = [:tp, value, critical] 
 
-       end 
 
-       if value && args 
 
-         args[3] = @battler.actor? ? :actor : (@battler.enemy? ? :enemy : nil) 
 
-         @battler.damage_section_displayed = true 
 
-         start_damage(args) 
 
-         if UseBeatenGraphic && was_beaten 
 
-           set_bitmap(:was_beaten) 
 
-           @beaten_duration = BeatenGraphicDuration 
 
-         end 
 
-       end 
 
-       return 
 
-     end 
 
-     super(timing) 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ Scene_Battle 
 
- #============================================================================== 
 
- class Scene_Battle < Scene_Base 
 
-   #-------------------------------------------------------------------------- 
 
-   # ● 应用技能/物品效果(新增定义) 
 
-   #-------------------------------------------------------------------------- 
 
-   def hzhj_apply_item_effects(target, item) 
 
-     target.damage_section_displayed = false 
 
-     target.not_damage_section = false 
 
-     target = apply_substitute(target, item) 
 
-     target.damage_section_displayed = false 
 
-     target.not_damage_section = false 
 
-     target.item_apply(@subject, item) 
 
-     return target 
 
-   end 
 
- end 
 
- #============================================================================== 
 
- # ■ 此脚本来自 [url]www.66rpg.com[/url] 
 
- #==============================================================================