查看: 6823|回复: 11

[已经过期] 【此帖作废,请大大删除】新加的复活道具无法使用?

[复制链接]
梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
发表于 2021-1-27 12:02:04 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 未来灬future 于 2021-1-27 22:55 编辑

RT,把游戏加上横版战斗的脚本,增加的道具只能在战斗中复活,菜单中复活不了,很无语,找不到是哪的毛病,但是添加人物技能复活的话就可以在战斗或是平时都可以复活队友
QQ截图20210127115943.jpg
QQ截图20210127120128.jpg
忍一时越想越气,退一步越想越亏~~~
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-1-27 12:40:11 | 显示全部楼层
把游戏加上横版战斗的脚本......找不到是哪的毛病

按你这么说...毛病不就是出自「横版战斗的脚本」么?
回复

使用道具 举报

梦石
0
星屑
2337
在线时间
325 小时
注册时间
2018-7-12
回帖
378
发表于 2021-1-27 13:12:39 | 显示全部楼层
你把横版战斗脚本关掉你再试试
回复

使用道具 举报

梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
 楼主| 发表于 2021-1-27 14:16:27 | 显示全部楼层
横版#==============================================================================
# ■ Sideview Ver100
#------------------------------------------------------------------------------
#  管理角色侧视图战斗设定。
#   汉化by: 圣痕
#==============================================================================
class SideView
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor   :x                    # 画面X坐标
  attr_accessor   :y                    # 画面Y坐标
  attr_accessor   :z                    # 画面Z坐标
  attr_accessor   :h                    # 高度坐标
  attr_accessor   :j                    # 跳跃坐标
  attr_accessor   :c                    # 曲线坐标
  attr_accessor   :ox                   # 横原点
  attr_accessor   :oy                   # 纵原点
  attr_accessor   :oy_adjust            # 縦原点修正
  attr_accessor   :angle                # 旋转角度
  attr_accessor   :zoom_x               # 横扩大率
  attr_accessor   :zoom_y               # 纵扩大率
  attr_accessor   :pattern_w            # 细胞横位置(矩形内)
  attr_accessor   :pattern_h            # 细胞縦位置(矩形内)
  attr_accessor   :sx                   # 细胞横位置(画像全体)
  attr_accessor   :sy                   # 细胞縦位置(画像全体)
  attr_accessor   :pattern_type         # 单元更新类型
  attr_accessor   :pattern_time         # 单元更新间隔
  attr_accessor   :graphic_name         # 角色画像文件名
  attr_accessor   :graphic_file_index   # 角色画像文件名指数
  attr_accessor   :graphic_index        # 角色画像指数
  attr_accessor   :cw                   # 矩形横组件
  attr_accessor   :ch                   # 矩形纵组件
  attr_accessor   :shadow_visible       # 阴影表示
  attr_accessor   :weapon_visible       # 武器表示
  
  attr_accessor   :wait                 # 下一个动作等待时间
  attr_accessor   :weapon_index         # 显示图像的武器排列指数
  attr_accessor   :weapon_end           # 武器动画结束标记
  attr_accessor   :full_action_name
  attr_accessor   :action
  attr_accessor   :action_data
  attr_accessor   :force_action         # 強制动作
  attr_accessor   :target_battler       # 目标角色情報
  attr_accessor   :second_targets       # 第二个目标角色情報
  attr_accessor   :m_a_targets          # 飞行动画目标情報
  attr_accessor   :individual_targets   # 个别处理目标角色情报
  attr_accessor   :effect_data          # 效果数据
  attr_accessor   :anime_id             # 动画ID配列
  attr_accessor   :anime_move_id        # 飞行动画ID配列
  attr_accessor   :mirror               # 反转标志
  attr_accessor   :opacity              # 透明度
  attr_accessor   :opacity_data         # 透明度操作情报
  attr_accessor   :set_damage           # 战斗场景的损伤处理
  attr_accessor   :m_a_data             # 飞行动画情报
  attr_accessor   :m_a_starter          # 飞行动画开始目标情报
  attr_accessor   :action_end           # 行动后结束
  attr_accessor   :damage_anime_data    # 战斗损伤动画的数据
  attr_accessor   :anime_no_mirror      # 战斗动画禁止反转
  attr_accessor   :anime_horming        # 战斗动画归位标志
  attr_accessor   :anime_camera_zoom    # 战斗动画扩大缩小的相机
  attr_accessor   :anime_plus_z         # 战斗动画Z坐标修正
  attr_accessor   :derivation_skill_id  # 技能连发ID
  attr_accessor   :immortal             # 无敌标志
  attr_accessor   :mirage               # 残像数据
  attr_accessor   :balloon_data         # 气球数据
  attr_accessor   :timing               # 从角色不同的时序数据
  attr_accessor   :timing_targets       # 时间数据传递另个角色
  attr_accessor   :color_set            # 色调变更数据
  attr_accessor   :color                # 色调数据
  attr_accessor   :change_up            # 画像变更数据
  attr_accessor   :hit                  # 更加次数
  attr_accessor   :add_state            # 增加状态的显示防止标记
  attr_accessor   :counter_id           # 计数器时的技能ID
  attr_accessor   :reflection_id        # 魔法反射式的动画ID
  attr_accessor   :result_damage        # 回合结束时的HP数据变更
  attr_accessor   :active               # 行动权
  attr_accessor   :anime_off            # 战斗动画删除
  attr_accessor   :command_action       # 行动指令标志
   
  attr_accessor   :base_x               # 初期位置 X坐标
  attr_accessor   :base_y               # 初期位置 Y坐标
  attr_accessor   :base_h               # 初期位置 高度坐标
  attr_accessor   :max_pattern_w        # 单元的横分割数
  attr_accessor   :max_pattern_h        # 单元的纵分割数
  
  attr_reader     :collapse             # 角色战斗不能
  attr_reader     :picture              # 图片显示标记
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(battler)
    @battler = battler
    reset
  end
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def reset
    @x = 0
    @y = 0
    @z = 0
    @h = 0
    @j = 0
    @c = 0
    @jump = []
    @curve = []
    @ox = 0
    @oy = 0
    @oy_adjust = 0
    @z_plus = 0
    @move_time = 0
    @angle = 0
    @angle_time = 0
    @zoom_x = 1
    @zoom_y = 1
    @zoom_time = 0
    @pattern_w = 0
    @pattern_h = 0
    @sx = 0
    @sy = 0
    @pattern_type = 0
    @pattern_time = 0
    @pattern_rest_time = 0
    @graphic_name = ""
    @graphic_file_index = ""
    @graphic_index = 0
    @cw = 0
    @ch = 0
    @shadow_visible = false
    @weapon_visible = true
   
    @wait = 0
    @weapon_index = []
    @weapon_end = true
    @full_action = []
    @full_action_name = ""
    @action = []
    @force_action = ""
    @target_battler = []
    @second_targets = []
    @individual_targets = []
    @m_a_targets = []
    @effect_data = []
    @anime_id = []
    @anime_move_id = []
    @opacity = 255
    @opacity_data = []
    @set_damage = false
    @m_a_data = []
    @m_a_starter = []
    @action_end = false
    @damage_anime_data = []
    @anime_no_mirror = false
    @anime_horming = false
    @anime_camera_zoom = false
    @anime_plus_z = true
    @derivation_skill_id = 0
    @immortal = false
    @mirage = []
    @play_data = []
    @balloon_data = []
    @picture = false
    @timing = []
    @timing_targets = []
    @color_set = []
    @color = []
    @change_up = false
    @non_motion = false
    @graphics_change = false
    @hit = []
    @add_state = []
    @collapse = false
    @counter_id = 0
    @reflection_id = 0
    @result_damage = [0,0]
    @active = false
    @anime_off = false
    @command_action = false
   
    @base_x = 0
    @base_y = 0
    @base_z = 0
    @base_h = 0
    @max_pattern_w = 0
    @max_pattern_h = 0
    @pattern_kind = 0
    @pattern_count = 0
    @move_time = 0
    @mirror = false
    @battler.set_graphic(@pre_change_data[0], @pre_change_data[1], @pre_change_data[2], @pre_change_data[3]) if @pre_change_data != nil
    @pre_change_data = nil
  end  
  #--------------------------------------------------------------------------
  # ● 格局
  #--------------------------------------------------------------------------
  def setup(bitmap_width, bitmap_height, first_action_flag)
    reset if first_action_flag
    set_data
    set_base_position if !@graphics_change
    set_graphics(bitmap_width, bitmap_height)
    set_target
    setup_graphics_change if @graphics_change
    first_battler_anime_set if first_action_flag
  end  
  #--------------------------------------------------------------------------
  # ● 取得角色数据
  #--------------------------------------------------------------------------
  def set_data
    return if @battler == nil
    if @battler.actor?
      @graphic_name = @battler.character_name
      @graphic_index = @battler.character_index
    else
      @graphic_name = @battler.battler_name
      @graphic_index = 0
    end
    @max_pattern_w = max_pattern[0]
    @max_pattern_h = max_pattern[1]
  end
  #--------------------------------------------------------------------------
  # ● 基础坐标设置 data=[X轴, Y轴, H轴]  moment_set…即时配置
  #--------------------------------------------------------------------------
  def set_base_position(moment_set = true)
    mirroring_reset
    if @battler.actor?
      actor_index = 0
      if $game_party.tank?(@battler.id)
        index = $game_party.tank_index(id)
        a_id = $game_party.tank[index].actor
        actor_index = $game_actors[a_id].index
      end
      data = N03::ACTOR_POSITION[@battler.index || actor_index].dup
      @base_x = data[0] * 100 if !@mirror
      @base_x = (Graphics.width - data[0]) * 100 if @mirror
    else
      data = [@battler.screen_x, @battler.screen_y, 0].dup
      @base_x = data[0] * 100 if !$sv_camera.mirror
      @base_x = (Graphics.width - data[0]) * 100 if $sv_camera.mirror
    end
    @base_y = data[1] * 100
    @base_h = data[2] * 100
    @base_z = @y
    return if !moment_set
    @x = @base_x
    @y = @base_y
    @z = @base_z
  end
  #--------------------------------------------------------------------------
  # ● 取得图像数据
  #--------------------------------------------------------------------------
  def set_graphics(bitmap_width, bitmap_height)
    sign = @graphic_name[/^[\!\$]./]
    if sign && sign.include?('$')
      @cw = bitmap_width / @max_pattern_w
      @ch = bitmap_height / @max_pattern_h
    elsif @max_pattern_w == 1 && @max_pattern_h == 1
      @cw = bitmap_width
      @ch = bitmap_height
    else
      @cw = bitmap_width / (@max_pattern_w * 4)
      @ch = bitmap_height / (@max_pattern_h * 2)
    end
    @ox = @cw / 2
    @oy = @ch
    @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
    @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  end
  #--------------------------------------------------------------------------
  # ● 设定目标
  #--------------------------------------------------------------------------
  def set_target(target = nil)
    @target_battler = target
    @target_battler = [@battler] if target == nil
    @second_targets = @target_battler
  end
  #--------------------------------------------------------------------------
  # ● 设置图像的变更
  #--------------------------------------------------------------------------
  def setup_graphics_change
    @graphics_change = false
    @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
    @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  end  
  #--------------------------------------------------------------------------
  # ● 取得战斗开始时的待机动画图像数据
  #--------------------------------------------------------------------------
  def first_battler_anime_set
    loop do
      update
      break if @action_data == nil
      break if @action_data[0] == "motion"
      break if @action_data[0] == "move" && @action_data[8] != ""
      break if @full_action == []
    end
    start_action(first_action) if @battler.movable?
  end
  #--------------------------------------------------------------------------
  # ● 开始动作
  #--------------------------------------------------------------------------
  def start_action(kind = nil)
    return if @event_fix && $game_troop.interpreter.running?
    # 等待中的场合取消
    return @wait -= 1 if @wait > 0 && kind == nil
    action_setup(false) if kind != nil
    set_action(kind)
    @action = kind if @action == nil
    # 动作顺序行动结束处理转变
    action_terminate if @action == nil
    # 决定下一个动作
    @action_data = N03::ACTION[@action]
    next_action
  end
  #--------------------------------------------------------------------------
  # ● 初始化行动参数
  #--------------------------------------------------------------------------
  def action_setup(reset = true)
    @event_fix = false
    @set_damage = false
    @action_end = false
    @balloon_data = []
    @loop_act = []
    angle_reset if reset
    zoom_reset if reset
    opacity_reset if reset
    @curve = []
    @c = 0
    convert_jump
  end  
  #--------------------------------------------------------------------------
  # ● 行动结束的处理
  #--------------------------------------------------------------------------
  def action_terminate
    @mirage = [] if @mirage_end
    mirroring_reset
    @picture = false
    @individual_targets = []
    action_setup if @active
    action_setup(false) if !@active
    # 待机开始行动迁移
    stand_by_action if !@non_motion
    # 战斗行动激活结束权利
    next_battler
  end  
  #--------------------------------------------------------------------------
  # ● 新动作内容的決定
  #--------------------------------------------------------------------------
  def set_action(kind = nil)
    full_act = N03::FULLACTION[kind]
    @full_action = full_act.dup if full_act != nil
    @action = @full_action.shift
    # 参考全部动作如果全部动作统合
    full_act2 = N03::FULLACTION[@action]
    @full_action = full_act2.dup + @full_action if full_act2 != nil
  end
  #--------------------------------------------------------------------------
  # ● 采取下个行动
  #--------------------------------------------------------------------------
  def next_action
    @wait = 0
    # 捷径确认
    eval(@action) if @action != nil && @action_data == nil && N03::FULLACTION[@action] == nil
    # 体能设定
    @wait = @action.to_i if @wait == 0 && @action_data == nil
    @wait = rand(@wait.abs + 1) if @wait < 0
    # 开始动作
    action_play
  end
  #--------------------------------------------------------------------------
  # ● 待机开始动作迁移
  #--------------------------------------------------------------------------
  def stand_by_action
    # 通常待机
    stand_by_act = normal
    # HP的1/4紧要关头行动
    stand_by_act = pinch if @battler.hp <= @battler.mhp / 4
    # 状态检查
    stand_by_act = state(@battler.states[0].id) if @battler.states[0] != nil && state(@battler.states[0].id) != nil
    # 指令检查
    stand_by_act = command if @command_action && command != nil
    set_action(stand_by_act)
    @action = stand_by_act if @action == nil
  end
  #--------------------------------------------------------------------------
  # ● 开始强制动作
  #--------------------------------------------------------------------------
  def start_force_action
    return if @active
    start_action(@force_action)
    @force_action = ""
  end  
  #--------------------------------------------------------------------------
  # ● 追加动作
  #--------------------------------------------------------------------------
  def add_action(kind)
    @full_action.push(kind)
  end  
  #--------------------------------------------------------------------------
  # ● 插入动作
  #--------------------------------------------------------------------------
  def unshift_action(kind)
    @full_action.unshift(kind)
  end  
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    # 开始动作
    start_action
    # 开始强制动作
    start_force_action if @force_action != ""
    # 更新动画模式
    update_pattern
    # 更新移动
    update_move
    # 更新旋转
    update_angle if @angle_time != 0
    # 更新扩大缩小
    update_zoom if @zoom_time != 0
    # 更新透明度
    update_opacity if @opacity_data != []
  end
  #--------------------------------------------------------------------------
  # ● 更新动画模式
  #--------------------------------------------------------------------------
  def update_pattern
    return @pattern_rest_time -= 1 if @pattern_rest_time != 0
    return if @max_pattern_w == 1 && @max_pattern_h == 1
    @pattern_rest_time = @pattern_time
    # 开始播放・取得结束单元位置
    if @pattern_kind > 0 # 通常播放中
      @pattern_start = 0
      @pattern_end = @max_pattern_w - 1
    elsif @pattern_kind < 0 # 逆转播放中
      @pattern_start = @max_pattern_w - 1
      @pattern_end = 0
    end
    # 结束单程的播放
    @pattern_count += 1 if @pattern_w == @pattern_end && @pattern_kind != 0
    # 循环处理
    case @pattern_type.abs
    when  1,3 # 单程
      @pattern_kind =  0 if @pattern_count != 0 && @pattern_type ==  1
      @pattern_kind =  0 if @pattern_count != 0 && @pattern_type == -1
      @pattern_kind =  1 if @pattern_count != 0 && @pattern_type ==  3
      @pattern_kind = -1 if @pattern_count != 0 && @pattern_type == -3
      @pattern_w = @pattern_start - @pattern_kind if @pattern_count != 0 && @pattern_type.abs == 3
      @pattern_count = 0
    when  2,4 # 往返
      @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  2
      @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -2
      @pattern_kind =  0 if @pattern_count == 2 && @pattern_type ==  2
      @pattern_kind =  0 if @pattern_count == 2 && @pattern_type == -2
      @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  4
      @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -4
      @pattern_kind =  1 if @pattern_count == 2 && @pattern_type ==  4
      @pattern_kind = -1 if @pattern_count == 2 && @pattern_type == -4
      @pattern_count = 0 if @pattern_count == 2
    end
    # 更新单元
    @pattern_w += 1 * @pattern_kind
    @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  end
  #--------------------------------------------------------------------------
  # ● 更新移动
  #--------------------------------------------------------------------------
  def update_move
    @z = @y / 100 + @z_plus
    return if @move_time == 0
    target_position_set if @horming_move
    @x = (@x * (@move_time - 1) + @target_x) / @move_time
    @y = (@y * (@move_time - 1) + @target_y) / @move_time
    @h = (@h * (@move_time - 1) + @target_h) / @move_time if @move_h != nil
    @c += @curve[@move_time - 1] if @curve[@move_time - 1] != nil
    @j += @jump[@move_time - 1] if @jump[@move_time - 1] != nil
    @move_time -= 1
    convert_jump if @move_time == 0
  end
  #--------------------------------------------------------------------------
  # ● 更新移动目标
  #--------------------------------------------------------------------------
  def target_position_set
    target_position = N03.get_targets_position(@move_targets, @horming_move)
    @target_x = target_position[0] + @move_x
    @target_y = target_position[1] + @move_y
    @target_h = target_position[2] + @move_h if @move_h != nil
  end  
  #--------------------------------------------------------------------------
  # ● 更新旋转
  #--------------------------------------------------------------------------
  def update_angle
    @angle += @angling
    @angle_time -= 1
    return if @angle_time != 0
    return angle_reset if @angle_data[4] == 0
    angling(@angle_data) if @angle_data[4] == 2
  end  
  #--------------------------------------------------------------------------
  # ● 更新扩大缩小
  #--------------------------------------------------------------------------
  def update_zoom
    @zoom_x += @zooming_x
    @zoom_y += @zooming_y
    @zoom_time -= 1
    return if @zoom_time != 0
    return zoom_reset if @zoom_data[4] == 0
    zooming(@zoom_data) if @zoom_data[4] == 2
  end
  #--------------------------------------------------------------------------
  # ● 更新透明度
  #--------------------------------------------------------------------------
  def update_opacity
    @opacity += @opacity_data[2]
    @opacity_data[0] -= 1
    return if @opacity_data[0] != 0
    return if !@opacity_data[5]
    @opacity_data[2] *= -1
    @opacity_data[0] = @opacity_data[1]
  end
  #--------------------------------------------------------------------------
  # ● 实行动作
  #--------------------------------------------------------------------------
  def action_play
    return if @action_data == nil
    action = @action_data[0]
    # 战斗角色反转的场合
    return mirroring                    if action == "mirror"
    # 残像的场合
    return mirage_set                   if action == "mirage"
    # 回转的场合  
    return angling                      if action == "angle"
    # 扩大缩小的场合
    return zooming                      if action == "zoom"
    # 透明度操作的场合  
    return set_opacity                  if action == "opacity"
    # 战斗角色动画的場合
    return battler_anime                if action == "motion"
    # 移动的場合
    return move                         if action == "move"
    # 武器动画的場合
    return weapon_anime([@action_data]) if action == "wp"
    # 跳过动画的場合
    return move_anime                   if action == "m_a"
    # 战斗场景通讯的场合(战斗不能)
    return set_play_data                if action == "collapse" or action == "no_collapse"
    # 显示战斗数据库的动画的場合  
    return battle_anime                 if action == "anime"
    # 摄影的場合
    return camera                       if action == "camera"
    # 画面摇动的場合
    return shake                        if action == "shake"
    # 画面色调变更的場合
    return color_effect                 if action == "color"
    # 过渡的場合
    return transition                   if action == "ts"
    # 气球动画显示的場合  
    return balloon_anime                if action == "balloon"
    # 图片显示的場合
    return picture_set                  if action == "pic"
    # 状态操作的場合
    return state_set                    if action == "sta"
    # FPS变更的場合
    return fps                          if action == "fps"
    # 战斗角色图像变更的場合  
    return graphics_change              if action == "change"
    # 技能衍生的場合  
    return derivating_skill             if action == "der"
    # BGM/BGS/SE演奏的場合  
    return sound                        if action == "sound"
    # 电影再生的場合  
    return movie                        if action == "movie"
    # 游戏开关操作的場合  
    return switches                     if action == "switch"
    # 变量开关操作的場合  
    return variable                     if action == "variable"
    # 条件分岐(游戏开关)的場合
    return nece_1                       if action == "n_1"
    # 条件分岐(游戏变量)的場合
    return nece_2                       if action == "n_2"
    # 条件分岐(状态)的場合
    return nece_3                       if action == "n_3"
    # 条件分岐(技能)的場合
    return nece_4                       if action == "n_4"
    # 条件分岐(参数)的場合
    return nece_5                       if action == "n_5"
    # 条件分岐(装备)的場合
    return nece_6                       if action == "n_6"
    # 条件分岐(脚本)的場合
    return nece_7                       if action == "n_7"
    # 第二目标操作的場合  
    return second_targets_set           if action == "s_t"
    # 呼叫公共事件的場合  
    return call_common_event            if action == "common"
    # 战斗动画关闭的場合  
    return @anime_off = true            if action == "anime_off"
    # 强制战斗结束的場合  
    return BattleManager.process_abort  if action == "battle_end"
    # 画面固定的場合  
    return Graphics.freeze              if action == "graphics_freeze"
    # 损坏动画的場合  
    return damage_anime                 if action == "damage_anime"
    # 武器不可见的場合  
    return @weapon_visible = false      if action == "weapon_off"
    # 武器可见的場合  
    return @weapon_visible = true       if action == "weapon_on"
    # 等待取消的場合
    return @non_motion = true           if action == "non_motion"
    # 等待取消解除的場合
    return @non_motion = false          if action == "non_motion_cancel"
    # 初期位置变更的場合
    return change_base_position         if action == "change_base_position"
    # 初期位置变更解除的場合
    return set_base_position(false)     if action == "set_base_position"
    # 强制行动的場合  
    return force_act                    if action == "force_action"
    # 强制行动的場合 (第二目标)
    return force_act2                   if action == "force_action2"
    # 个人开始的場合
    return individual_start             if action == "individual_start"
    # 个人结束的場合
    return individual_end               if action == "individual_end"
    # 循环开始的場合
    return loop_start                   if action == "loop_start"
    # 循环结束的場合
    return loop_end                     if action == "loop_end"
    # 只有行动的場合
    return only_action_on               if action == "only_action_on"
    # 只有行动解除的場合
    return only_action_off              if action == "only_action_off"
    # 下个战斗角色的場合
    return next_battler                 if action == "next_battler"
    # 画面变更标记的場合
    return set_change                   if action == "set_change"
    # 脚本操作的場合   
    return eval(@action_data[0])
  end
  #--------------------------------------------------------------------------
  # ● 实行角色反转
  #--------------------------------------------------------------------------
  def mirroring
    @mirror = !@mirror
  end  
  #--------------------------------------------------------------------------
  # ● 初始化反转
  #--------------------------------------------------------------------------
  def mirroring_reset
    @mirror = false
    mirroring if !@battler.actor? && N03::ENEMY_MIRROR
    mirroring if $sv_camera.mirror
  end  
  #--------------------------------------------------------------------------
  # ● 实行残像
  #--------------------------------------------------------------------------
  def mirage_set
    @mirage = @action_data.dup
    @mirage_end = @mirage[3]
    @mirage = [] if @mirage[1] == 0
  end  
  #--------------------------------------------------------------------------
  # ● 实行旋转
  #--------------------------------------------------------------------------
  def angling(data = @action_data)
    @angle_data = data.dup
    @oy = @ch / 2
    @oy_adjust = @ch * 50
    @angle_time = data[1]
    start_angle = data[2] * N03.mirror_num(@mirror)
    end_angle = data[3] * N03.mirror_num(@mirror)
    # 时间要是0以下时立即到最后角度
    @angle_time = 1 if @angle_time <= 0
    # 从旋转时间计算一格相当于的角度
    @angling = (end_angle - start_angle) / @angle_time
    # 不能整除的剩余到初期角度
    @angle = (end_angle - start_angle) % @angle_time + start_angle
  end
  #--------------------------------------------------------------------------
  # ● 初始化旋转
  #--------------------------------------------------------------------------
  def angle_reset
    @oy = @ch
    @angle = @angle_time = @oy_adjust = 0
  end  
  #--------------------------------------------------------------------------
  # ● 实行扩大缩小
  #--------------------------------------------------------------------------
  def zooming(data = @action_data)
    @zoom_data = data.dup
    @zoom_time = data[1]
    start_zoom_x = data[2][0]
    start_zoom_y = data[2][1]
    end_zoom_x = data[3][0]
    end_zoom_y = data[3][1]
    # 时间是0以下时跳过
    @zoom_time = 1 if @zoom_time <= 0
    # 从放大时间中计算一格相当于的放大率
    @zooming_x = (end_zoom_x - start_zoom_x) / @zoom_time
    @zooming_y = (end_zoom_y - start_zoom_y) / @zoom_time
    # 开始的大小
    @zoom_x = start_zoom_x
    @zoom_y = start_zoom_y
  end  
  #--------------------------------------------------------------------------
  # ● 实行扩大缩小
  #--------------------------------------------------------------------------
  def zoom_reset
    @zoom_x = @zoom_y = 1
    @zoom_time = 0
  end  
  #--------------------------------------------------------------------------
  # ● 角色透明度操作
  #--------------------------------------------------------------------------
  def set_opacity
    data = @action_data.dup
    @opacity = data[2]
    opacity_move = (data[3] - data[2])/ data[1]
    @opacity_data = [data[1], data[1], opacity_move, data[4], data[5], data[6]]
    @wait = data[1] if data[7]
    @wait *= 2 if data[6] && data[7]
  end
  #--------------------------------------------------------------------------
  # ● 初始化透明度操作
  #--------------------------------------------------------------------------
  def opacity_reset
    @opacity = 255
    @opacity = 0 if @battler.hidden?
    @opacity_data = []
  end
  #--------------------------------------------------------------------------
  # ● 实行角色动画
  #--------------------------------------------------------------------------
  def battler_anime(anime_data = nil)
    anime_data = @action_data.dup if anime_data == nil
    @graphic_file_index = anime_data[1] if !graphic_fix
    @pattern_h = anime_data[2]
    @pattern_w = anime_data[3]
    @pattern_h = 0 if @max_pattern_w == 1
    @pattern_w = 0 if @max_pattern_h == 1
    @pattern_type = anime_data[4]
    @pattern_time = anime_data[5]
    @pattern_rest_time = anime_data[5]
    @pattern_count = 0
    @pattern_kind = 1
    @pattern_kind = -1 if @pattern_type < 0
    @pattern_kind = 0 if @pattern_type == 0
    @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
    @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
    @z_plus = anime_data[6]
    @wait = set_anime_wait if anime_data[7]
    @shadow_visible = anime_data[8]
    weapon_anime(anime_data)
  end
  #--------------------------------------------------------------------------
  # ● 计算等待动画
  #--------------------------------------------------------------------------
  def set_anime_wait
    if @pattern_type > 0
      pattern_time_a = @max_pattern_w - @pattern_w.abs
    elsif @pattern_type < 0
      pattern_time_a = @pattern_w.abs + 1
    else
      return @pattern_time if @pattern_type == 0
    end
    case @pattern_type
    when 1,-1, 3,-3
      return pattern_time_a * @pattern_time
    when 2,-2, 4,-4
      return pattern_time_a * @pattern_time + (@max_pattern_w - 2) * @pattern_time
    end
  end  
  #--------------------------------------------------------------------------
  # ● 实行移动
  #--------------------------------------------------------------------------
  def move
    @move_targets = N03.get_targets(@action_data[1].abs, @battler)
    return if @move_targets == []
    @move_targets = [@battler] if @action_data[1].abs == 7
    @move_x = @action_data[2] * 100 * N03.mirror_num(@mirror)
    @move_y = @action_data[3] * 100
    @move_h = @action_data[4] * 100 if @action_data[4] != nil
    @move_h = nil if @action_data[4] == nil
    battler_anime(N03::ACTION[@action_data[8]].dup) if N03::ACTION[@action_data[8]] != nil
    @horming_move = true
    @horming_move = false if @action_data[1] < 0 or @action_data[1].abs == 7
    target_position_set
    target_position = [@target_x, @target_y, @target_z]
    distanse_move = @action_data[5] > 0
    @move_time = N03.distanse_calculation(@action_data[5].abs, target_position, [@x, @y, @z], distanse_move)
    @wait = @move_time
    curve
    jump
    @move_time = 1 if @move_time == 0
    @horming_move = false if !@move_targets or @move_targets.include?(@battler)
    update_move if @move_time == 1
  end  
  #--------------------------------------------------------------------------
  # ● 实行曲线
  #--------------------------------------------------------------------------
  def curve
    @c = 0
    return if @action_data[6] == 0
    @curve = N03.parabola([@action_data[6], -@action_data[6]], @move_time, 100, 4)
  end  
  #--------------------------------------------------------------------------
  # ● 实行跳跃
  #--------------------------------------------------------------------------
  def jump
    convert_jump
    return if @action_data[7] == [0,0]
    @jump = N03.parabola(@action_data[7].dup, @move_time, 100)
  end  
  #--------------------------------------------------------------------------
  # ● J坐标(跳跃高度)H坐标变换
  #--------------------------------------------------------------------------
  def convert_jump
    @h += @j
    @j = 0
    @jump = []
  end  
  #--------------------------------------------------------------------------
  # ● 实行数据库战斗动画
  #--------------------------------------------------------------------------
  def battle_anime
    data = @action_data.dup
    targets = N03.get_targets(data[2], @battler)
    return if targets == []
    data[8] = !data[8] if @mirror
    @set_damage           = data[5]
    @damage_anime_data[0] = N03.get_attack_anime_id(data[1], @battler)
    @damage_anime_data[1] = data[8]
    @damage_anime_data[2] = data[7]
    @damage_anime_data[3] = data[6]
    @damage_anime_data[4] = data[9]
    @wait = N03.get_anime_time(@damage_anime_data[0]) - 2 if data[4]
    return if @set_damage
    for target in targets do display_anime(targets, target, data) end
  end
  #--------------------------------------------------------------------------
  # ● 开始武器动画
  #--------------------------------------------------------------------------
  def weapon_anime(anime_data)
    @weapon_end = true
    for i in 9...anime_data.size
      set_effect_data(anime_data) if anime_data != ""
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始飞行动画
  #--------------------------------------------------------------------------
  def move_anime
    @m_a_starter = []
    @m_a_targets = []
    starters = N03.get_targets(@action_data[2], @battler)
    targets = N03.get_targets(@action_data[3], @battler)
    return if starters == [] or targets == []
    single_start = true if starters != nil && @action_data[2] < 0
    single_start = true if @action_data[1][0] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][0], @battler)].position == 3
    starters = [starters[0]] if single_start
    single_end = true if targets != nil && @action_data[3] < 0
    single_end = true if @action_data[1][1] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][1], @battler)].position == 3
    targets = [targets[0]] if single_end
    se_flag = true
    for starter in starters
      for target in targets
        data = @action_data.dup
        data[17] = se_flag
        @effect_data.push(data)
        @m_a_targets.push(target)
        @m_a_starter.push(starter)
        se_flag = false
      end
    end  
  end
  #--------------------------------------------------------------------------
  # ● 效果通讯设置
  #--------------------------------------------------------------------------
  def set_effect_data(data = @action)
    action_data = N03::ACTION[data]
    return if action_data == nil
    @effect_data.push(action_data.dup)
  end
  #--------------------------------------------------------------------------
  # ● 战斗场景通讯的数据储存
  #--------------------------------------------------------------------------
  def set_play_data(data = @action_data)
    @play_data = data.dup
  end
  #--------------------------------------------------------------------------
  # ● 战斗动画显示
  #--------------------------------------------------------------------------
  def display_anime(targets, target, data)
    return if !N03.first_of_all_screen_anime(data[1], target, targets)
    target.animation_id         = N03.get_attack_anime_id(data[1], @battler)
    target.animation_mirror     = data[8]
    target.sv.anime_horming     = data[3]
    target.sv.anime_camera_zoom = data[6]
    target.sv.anime_no_mirror   = data[7]
    target.sv.anime_plus_z      = data[9]
  end
  #--------------------------------------------------------------------------
  # ● 初始化战斗动画扩张数据
  #--------------------------------------------------------------------------
  def reset_anime_data
    @anime_no_mirror = false
    @anime_horming = false
    @anime_camera_zoom = false
    @timing_targets = []
    @anime_plus_z = true
  end  
  #--------------------------------------------------------------------------
  # ● 摄影机
  #--------------------------------------------------------------------------
  def camera
    data = @action_data.dup
    N03.camera(@battler, data)
    @wait = data[4] if data[5]
  end  
  #--------------------------------------------------------------------------
  # ● 画面的摇动
  #--------------------------------------------------------------------------
  def shake
    data = @action_data.dup
    $sv_camera.shake(data[1], data[2], data[3])
    @wait = data[3] if data[4]
  end
  #--------------------------------------------------------------------------
  # ● 画面色调变更
  #--------------------------------------------------------------------------
  def color_effect
    case @action_data[1]
    when 0,1,2,3,4,5
      targets = N03.get_targets(@action_data[1], @battler)
    when 6
      screen = true
    when 7
      targets = [@battler] + @target_battler
    when 8
      screen = true
      targets = $game_troop.members + $game_party.battle_members - [@battler]
    when 9
      screen = true
      targets = $game_troop.members + $game_party.battle_members - [@battler] - @target_battler
    when 10
      screen = true
      targets = $game_troop.members + $game_party.battle_members
    end
    return if screen == nil && targets == []
    for target in targets do target.sv.color_set = @action_data[2] end if targets
    @wait = @action_data[2][4] if @action_data[3]
    return if !screen
    $sv_camera.color_set[1] = @action_data[2]
    $sv_camera.color_set[2] = @action_data[2]
  end  
  #--------------------------------------------------------------------------
  # ● 过渡
  #--------------------------------------------------------------------------
  def transition
    $sv_camera.perform_transition(@action_data)
  end  
  #--------------------------------------------------------------------------
  # ● 气球动画显示
  #--------------------------------------------------------------------------
  def balloon_anime
    @balloon_data = @action_data.dup
  end  
  #--------------------------------------------------------------------------
  # ● 图片显示
  #--------------------------------------------------------------------------
  def picture_set
    @picture = true
    set_effect_data
  end
  #--------------------------------------------------------------------------
  # ● 状态操作
  #--------------------------------------------------------------------------
  def state_set
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    case @action_data[2]
    when 1 ; targets = [targets[rand(targets.size)]]
    when 2 ; targets -= @battler if targets.include?(@battler)
    end
    for target in targets
      for id in @action_data[4]
        target.add_state(id) if @action_data[3] == "+"
        target.remove_state(id) if @action_data[3] == "-"
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● FPS变更
  #--------------------------------------------------------------------------
  def fps
    Graphics.frame_rate = @action_data[1]
    start_action
  end
  #--------------------------------------------------------------------------
  # ● 角色画像变更的場合
  #--------------------------------------------------------------------------
  def graphics_change
    @graphics_change = true
    return @battler.graphics_change(@action_data[3]) if !@battler.actor?
    @pre_change_data = [@battler.character_name, @battler.character_index, @battler.face_name, @battler.face_index] if @pre_change_data == nil && !@action_data[1]
    if @action_data[4] == []
      face_name = @battler.face_name
      face_index = @battler.face_index
    else
      face_name = @action_data[4][1]
      face_index = @action_data[4][0]
    end
    @battler.set_graphic(@action_data[3], @action_data[2], face_name, face_index)
  end
  #--------------------------------------------------------------------------
  # ● 技能连发
  #--------------------------------------------------------------------------
  def derivating_skill
    # 如果让没学的的技能不能连发时
    return if !@action_data[1] && !@battler.skill_learn?($data_skills[@action_data[3]])
    # 如果技能不能连发成本不够时
    return if !@action_data[2] && !@battler.skill_cost_payable?($data_skills[@action_data[3]])
    # 连发
    @derivation_skill_id = @action_data[3]
    # 取消之后的动作
    @full_action = []
  end
  #--------------------------------------------------------------------------
  # ● BGM/BGS/SE演奏
  #--------------------------------------------------------------------------
  def sound
    pitch = @action_data[2]
    vol   = @action_data[3]
    name  = @action_data[4]
    case @action_data[1]
    when "se"
      Audio.se_play("Audio/SE/" + name, vol, pitch)
    when "bgm"
      # 没有指定名字时、不改变现在的BGM
      name = RPG::BGM.last.name if @action_data[4] == ""
      Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
    when "bgs"
      name = RPG::BGS.last.name if @action_data[4] == ""
      Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
    end
  end
  #--------------------------------------------------------------------------
  # ● 电影播放
  #--------------------------------------------------------------------------
  def movie
    Graphics.play_movie('Movies/' + @action_data[1])
  end
  #--------------------------------------------------------------------------
  # ● 游戏开关的操作
  #--------------------------------------------------------------------------
  def switches
    for id in @action_data[1]
      $game_switches[id] = true if id > 0
      $sv_camera.switches[id.abs] = true  if id < 0
    end
    for id in @action_data[2]
      $game_switches[id] = false if id > 0
      $sv_camera.switches[id.abs] = false  if id < 0
    end
    $sv_camera.program_check
  end
  #--------------------------------------------------------------------------
  # ● 游戏变量操作
  #--------------------------------------------------------------------------
  def variable
    # 检查操作
    operand = @action_data[3]
    operand = $game_variables[@action_data[3].abs] if @action_data[3] < 0
    # 变数操作的分歧
    case @action_data[2]
    when 0 ; $game_variables[@action_data[1]] = operand  # 代入
    when 1 ; $game_variables[@action_data[1]] += operand # 加法
    when 2 ; $game_variables[@action_data[1]] -= operand # 减法
    when 3 ; $game_variables[@action_data[1]] *= operand # 乘法
    when 4 ; $game_variables[@action_data[1]] /= operand # 除法
    when 5 ; $game_variables[@action_data[1]] %= operand # 剩余
    end
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (游戏开关)
  #--------------------------------------------------------------------------
  def nece_1
    judgment = $game_switches[@action_data[1]] == @action_data[2] if @action_data[1] > 0
    judgment = $sv_camera.switches[@action_data[1].abs] == @action_data[2] if @action_data[1] < 0
    action_diverging(judgment, @action_data[3])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (游戏变量)
  #--------------------------------------------------------------------------
  def nece_2
    variable = $game_variables[@action_data[1]]
    num = @action_data[2]
    num = $game_variables[@action_data[2].abs] if num < 0
    case @action_data[3]
    when 0 ; judgment = variable == num
    when 1 ; judgment = variable < num
    when 2 ; judgment = variable > num
    end  
    action_diverging(judgment, @action_data[4])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (状态)
  #--------------------------------------------------------------------------
  def nece_3
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[4]
    member_num = targets.size if @action_data[4] == 0 && targets.size > 1
    hit_count = 0
    miss_count = 0
    for target in targets
      hit_count += 1 if target.state?(@action_data[2])
      miss_count += 1 if !target.state?(@action_data[2])
    end
    case @action_data[3]
    when 0 ; judgment = hit_count >= member_num
    when 1 ; judgment = miss_count >= member_num
    end
    action_diverging(judgment, @action_data[5])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (技能)
  #--------------------------------------------------------------------------
  def nece_4
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[4]
    member_num = targets.size if @action_data[4] == 0 && targets.size > 1
    hit_count = 0
    miss_count = 0
    for target in targets
      hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]])
      miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]])
    end
    case @action_data[3]
    when 0 ; judgment = hit_count >= member_num
    when 1 ; judgment = miss_count >= member_num
    end
    action_diverging(judgment, @action_data[5])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (参数)
  #--------------------------------------------------------------------------
  def nece_5
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[5]
    member_num = targets.size if @action_data[5] == 0 && targets.size > 1
    hit_count = 0
    for target in targets
      hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
    end
    judgment = hit_count >= member_num
    action_diverging(judgment, @action_data[6])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (装备)
  #--------------------------------------------------------------------------
  def nece_6
    targets = N03.get_targets(@action_data[1], @battler)
    return if targets == []
    member_num = @action_data[5]
    member_num = targets.size if @action_data[5] == 0 && targets.size > 1
    hit_count = 0
    miss_count = 0
    for target in targets
      hit_count += 1 if target.comparison_equip([@action_data[2],@action_data[3]])
      miss_count += 1 if !target.comparison_equip([@action_data[2],@action_data[3]])
    end
    case @action_data[4]
    when 0 ; judgment = hit_count >= member_num
    when 1 ; judgment = miss_count >= member_num
    end
    action_diverging(judgment, @action_data[6])
  end  
  #--------------------------------------------------------------------------
  # ● 条件分岐 (脚本)
  #--------------------------------------------------------------------------
  def nece_7
    judgment = eval(@action_data[2])
    action_diverging(judgment, @action_data[1])
  end  
  #--------------------------------------------------------------------------
  # ● 动作的分岐  
  #--------------------------------------------------------------------------
  def action_diverging(judgment, kind)
    result = 0
    if judgment
      result = 1 if kind == 1
      result = 2 if kind == 2
    else
      result = 1 if kind == 0
    end
    # 全部动作结束
    return @full_action = []  if result == 2
    # 清楚下一个动作
    @full_action.shift if result == 1
    set_action
    # 实行下一个动作
    @action_data = N03::ACTION[@action]
    next_action
  end
  #--------------------------------------------------------------------------
  # ● 第二个目标的操作
  #--------------------------------------------------------------------------
  def second_targets_set
    targets = N03.get_targets(@action_data[1], @battler)
    for target in targets
      targets.delete(target) if @action_data[2][1] == 1 && target.index != @action_data[2][0]
      targets.delete(target) if @action_data[2][1] == 2 && target.index == @action_data[2][0].abs
      targets.delete(target) if @action_data[3] > 0 && target.id != @action_data[3]
      targets.delete(target) if @action_data[3] < 0 && target.id == @action_data[3].abs
      targets.delete(target) if @action_data[4] > 0 && !target.state?(@action_data[4])
      targets.delete(target) if @action_data[4] < 0 && target.state?(@action_data[4].abs)
      targets.delete(target) if @action_data[5] > 0 && !target.skill_conditions_met?($data_skills[@action_data[5]])
      targets.delete(target) if @action_data[5] < 0 && target.skill_conditions_met?($data_skills[@action_data[5].abs])
      targets.delete(target) if !target.comparison_parameter(@action_data[6])
      targets.delete(target) if !@action_data[7][1].include?(0) && !target.comparison_equip(@action_data[7])
    end
    return @second_targets = [] if targets.size == 0
    case @action_data[8]
    when 1 ; targets = [targets[rand(targets.size)]]
    when 2 ; targets.delete(@battler)
    end
    return @second_targets = [] if targets.size == 0
    @second_targets = targets
    case @action_data[9]
    when 0 ; return
    when 1 ; set_play_data(["second_targets_set"])
    when 2 ; set_play_data(["targets_set"])
    end
    @wait += 1
  end
  #--------------------------------------------------------------------------
  # ● 公共事件的呼叫
  #--------------------------------------------------------------------------
  def call_common_event
    $game_temp.reserve_common_event(@action_data[1])
    $sv_camera.event = true
    @event_fix = @action_data[2]
  end
  #--------------------------------------------------------------------------
  # ● 伤害动画
  #--------------------------------------------------------------------------
  def damage_anime(delay_time = 12)
    anime(N03.get_attack_anime_id(-3, @battler), wait = true)
    action_play
    @wait -= delay_time
    @full_action.unshift("eval('@damage_anime_data = []
    @set_damage = true')")
  end
  #--------------------------------------------------------------------------
  # ● 通常战斗不能
  #--------------------------------------------------------------------------
  def normal_collapse
    @collapse = true
    return
  end
  #--------------------------------------------------------------------------
  # ● 初期位置变更
  #--------------------------------------------------------------------------
  def change_base_position
    @base_x = @x
    @base_y = @y
    @base_h = @h
  end  
  #--------------------------------------------------------------------------
  # ● 实行强制动作
  #--------------------------------------------------------------------------
  def force_act
    target(@full_action.shift)
  end
  #--------------------------------------------------------------------------
  # ● 实行强制动作 (第二个目标)
  #--------------------------------------------------------------------------
  def force_act2
    target2(@full_action.shift)
  end
  #--------------------------------------------------------------------------
  # ● 开始个别处理
  #--------------------------------------------------------------------------
  def individual_start
    @individual_targets = @target_battler.dup
    @remain_targets = @target_battler.dup
    @target_battler = [@individual_targets[0]]
    # 重复部分的动作并保持
    @individual_act = @full_action.dup
  end
  #--------------------------------------------------------------------------
  # ● 结束个别处理
  #--------------------------------------------------------------------------
  def individual_end
    @individual_targets.shift
    for target in @individual_targets
      @individual_targets.shift if target.dead?
    end
    # 目标没有残留时行动完毕
    return @target_battler = @remain_targets if @individual_targets.size == 0
    @full_action = @individual_act.dup
    @target_battler = [@individual_targets[0]]
  end
  #--------------------------------------------------------------------------
  # ● 循环開始
  #--------------------------------------------------------------------------
  def loop_start
    # 重复部分的动作并保持
    @loop_act = @full_action.dup
  end
  #--------------------------------------------------------------------------
  # ● 循环结束
  #--------------------------------------------------------------------------
  def loop_end
    # 动作重复
    @full_action = @loop_act.dup if @loop_act != []
  end
  #--------------------------------------------------------------------------
  # ● 下个动作角色
  #--------------------------------------------------------------------------
  def next_battler
    @action_end = true
    @active = false
  end
  #--------------------------------------------------------------------------
  # ● 图像变更标记
  #--------------------------------------------------------------------------
  def set_change
    @change_up = true
  end
  #--------------------------------------------------------------------------
  # ● 战斗场景通讯
  #--------------------------------------------------------------------------
  def play_data
    data = @play_data
    @play_data = []
    return data
  end
  #--------------------------------------------------------------------------
  # ● 捷径指令
  #--------------------------------------------------------------------------
  def anime(anime_id, wait = true)
    @action_data = ["anime",anime_id,1,false,wait,false,true,false]
  end
  def anime_me(anime_id, wait = true)
    @action_data = ["anime",anime_id,0,false,wait,false,true,false]
  end
  def se(file, pitch = 100)
    @action_data = ["sound",  "se", pitch, 100, file]
  end
  
  def bgm(file, pitch = 100)
    @action_data = ["sound",  "bgm", pitch, 100, file]
  end
  
  def target(act)
    for target in @target_battler do target.sv.force_action = act end
  end
  def target2(act)
    for target in @second_targets do target.sv.force_action = act end
  end
  def delay(time)
    @wait = @battler.index * time
  end
  #--------------------------------------------------------------------------
  # ● 取得角色ID
  #--------------------------------------------------------------------------
  def id
    return @battler.id if @battler.actor?
    return -@battler.id
  end
  #--------------------------------------------------------------------------
  # ● 取得被致命一击
  #--------------------------------------------------------------------------
  def critical?
    return @battler.result.critical
  end
  #--------------------------------------------------------------------------
  # ● 取得被回复标记
  #--------------------------------------------------------------------------
  def recovery?
    recovery = false
    recovery = true if @battler.result.hp_damage < 0
    recovery = true if @battler.result.mp_damage < 0
    recovery = true if @battler.result.tp_damage < 0
    return recovery
  end
  #--------------------------------------------------------------------------
  # ● 取得被损伤技能ID
  #--------------------------------------------------------------------------
  def damage_skill_id
    return @damage_skill_id
  end
  #--------------------------------------------------------------------------
  # ● 取得被损伤物品ID
  #--------------------------------------------------------------------------
  def damage_item_id
    return @damage_item_id
  end
  #--------------------------------------------------------------------------
  # ● 取得装备武器ID
  #--------------------------------------------------------------------------
  def weapon_id
    return 0 if !@battler.weapons[0]
    return @battler.weapons[0].id
  end
  #--------------------------------------------------------------------------
  # ● 取得装备武器的类型
  #--------------------------------------------------------------------------
  def weapon_type
    return 0 if !@battler.weapons[0]
    return @battler.weapons[0].wtype_id
  end
  #--------------------------------------------------------------------------
  # ● 是否装备盾
  #--------------------------------------------------------------------------
  def shield?
    for armor in @battler.armors do return true if armor != nil && armor.etype_id == 1 end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 是否有伤害
  #--------------------------------------------------------------------------
  def damage_zero?
    return @battler.result.hp_damage == 0 && @battler.result.mp_damage == 0 && @battler.result.tp_damage == 0
  end
  #--------------------------------------------------------------------------
  # ● 取得技能ID
  #--------------------------------------------------------------------------
  def skill_id
    return @counter_id if @counter_id != 0
    return 0 if @battler.current_action == nil or @battler.current_action.item == nil
    return 0 if @battler.current_action.item.is_a?(RPG::Item)
    return @battler.current_action.item.id
  end
  #--------------------------------------------------------------------------
  # ● 取得技能的种类
  #--------------------------------------------------------------------------
  def skill_type
    return 0 if skill_id == 0
    return $data_skills[skill_id].stype_id
  end
  #--------------------------------------------------------------------------
  # ● 取得技能名字
  #--------------------------------------------------------------------------
  def skill_name
    return "" if skill_id == 0
    return $data_skills[skill_id].name
  end
  #--------------------------------------------------------------------------
  # ● 取得物品ID
  #--------------------------------------------------------------------------
  def item_id
    return 0 if @battler.current_action == nil or @battler.current_action.item == nil
    return @battler.current_action.item.id
  end
  #--------------------------------------------------------------------------
  # ● 攻击动作
  #--------------------------------------------------------------------------
  def attack_action(item)
    return skill_action if item.is_a?(RPG::Skill)
    return item_action
  end
  #--------------------------------------------------------------------------
  # ● 基础动作伤害
  #--------------------------------------------------------------------------
  def damage_action_base(item)
    @damage_skill_id = 0
    @damage_item_id = 0
    @damage_skill_id = item.id if item.is_a?(RPG::Skill)
    @damage_item_id = item.id if item.is_a?(RPG::Item)
  end  
  #--------------------------------------------------------------------------
  # ● 动作伤害
  #--------------------------------------------------------------------------
  def damage_action(attacker, item)
    damage_action_base(item)
    act = damage(attacker)
    return if @active
    start_action(act) if act != nil
  end
  #--------------------------------------------------------------------------
  # ● 回避动作
  #--------------------------------------------------------------------------
  def evasion_action(attacker, item)
    damage_action_base(item)
    act = evasion(attacker)
    return if @active
    start_action(act) if act != nil
  end
  #--------------------------------------------------------------------------
  # ● 失误动作
  #--------------------------------------------------------------------------
  def miss_action(attacker, item)
    damage_action_base(item)
    act = miss(attacker)
    return if @active
    start_action(act) if act != nil
  end
  #--------------------------------------------------------------------------
  # ● Flash动作同时处理
  #--------------------------------------------------------------------------
  def flash_action
    return "闪光"
  end
  
end


#==============================================================================
# ■ module N03
#------------------------------------------------------------------------------
#  这是一个侧视战斗的模块。
#==============================================================================
module N03
  #--------------------------------------------------------------------------
  # ● 取得敌人角色队伍
  #--------------------------------------------------------------------------
  def self.get_enemy_unit(battler)
    return $game_troop if battler.actor?
    return $game_party
  end
  #--------------------------------------------------------------------------
  # ● 取得我方角色队伍
  #--------------------------------------------------------------------------
  def self.get_party_unit(battler)
    return $game_party if battler.actor?
    return $game_troop
  end
  #--------------------------------------------------------------------------
  # ● 取得战斗动画时间
  #--------------------------------------------------------------------------
  def self.get_anime_time(anime_id)
    return 0 if anime_id <= 0
    return $data_animations[anime_id].frame_max * 4
  end
  #--------------------------------------------------------------------------
  # ● 取得攻击动画
  #--------------------------------------------------------------------------
  def self.get_attack_anime_id(kind, battler)
    return $data_skills[battler.sv.counter_id].animation_id if kind == -3 && battler.sv.counter_id != 0
    case kind
    when -1 ; anime_id = battler.atk_animation_id1
    when -2 ; anime_id = battler.atk_animation_id2
    when -3
      if battler.current_action != nil
        anime_id = battler.current_action.item.animation_id if battler.current_action.item != nil
      end
    else    ; anime_id = kind
    end
    case anime_id
    when -1 ; anime_id = battler.atk_animation_id1
    when -2 ; anime_id = battler.atk_animation_id2
    end
    return anime_id if anime_id
    return 0
  end  
  #--------------------------------------------------------------------------
  # ● 战斗动画数据
  #--------------------------------------------------------------------------
  def self.set_damage_anime_data(targets, target, data)
    return if !first_of_all_screen_anime(data[0], target, targets)
    target.animation_id         = data[0]
    target.animation_mirror     = data[1]
    target.sv.anime_no_mirror   = data[2]
    target.sv.anime_camera_zoom = data[3]
    target.sv.anime_plus_z      = data[4]
  end   
  #--------------------------------------------------------------------------
  # ● 取得目标
  #--------------------------------------------------------------------------
  def self.get_targets(kind, battler)
    case kind.abs
    when 0 ; return [battler].dup
    when 1 ; return battler.sv.target_battler.dup
    when 2 ; return get_enemy_unit(battler).members.dup
    when 3 ; return get_party_unit(battler).members.dup
    when 4 ; return $game_troop.members.dup + $game_party.battle_members.dup
    when 5 ; return battler.sv.second_targets.dup
    end
  end  
  #--------------------------------------------------------------------------
  # ● 目标的坐标取得
  #--------------------------------------------------------------------------
  def self.get_targets_position(targets, horming, m_a = nil)
    return [0,0,0] if targets == nil && !$sv_camera.mirror
    return [Graphics.width,0,0] if targets == nil && $sv_camera.mirror
    x = y = h = 0
    for i in 0...targets.size
      x += targets.sv.base_x if !horming
      y += targets.sv.base_y if !horming
      h += targets.sv.base_h if !horming
      x += targets.sv.x if horming
      y += targets.sv.y if horming
      h += targets.sv.h if horming
      y -= targets.sv.ch * 100 if m_a == 0
      y -= targets.sv.ch * 50 if m_a == 1
    end
    return [x / targets.size, y / targets.size, h / targets.size]
  end
  #--------------------------------------------------------------------------
  # ● 速度转换时间
  #--------------------------------------------------------------------------
  def self.distanse_calculation(time, target_position, self_position, distanse_move)
    return time if !distanse_move
    distanse_x = self_position[0] - target_position[0]
    distanse_x = target_position[0] - self_position[0] if target_position[0] > self_position[0]
    distanse_y = self_position[1] - target_position[1]
    distanse_y = target_position[1] - self_position[1] if target_position[1] > self_position[1]
    if self_position[2] != nil && target_position[2] != nil
      distanse_h = self_position[2] - target_position[2]
      distanse_h = target_position[2] - self_position[2] if target_position[2] > self_position[2]
    else
      distanse_h = 0
    end
    distanse = [distanse_x, distanse_y, distanse_h].max
    return distanse / (time * 100) + 1
  end
  #--------------------------------------------------------------------------
  # ● 计算抛物线移动
  #--------------------------------------------------------------------------
  def self.parabola(data, time, size, type = 1)
    move_data = data
    move_data[0] *= size
    move_data[1] *= size
    move = []
    move_d = []
    for i in 0...time / 2
      move = move_data[0]
      move_d = move_data[1]
      move_data[0] = move_data[0] * type / (1 + type)
      move_data[1] = move_data[1] * type / (1 + type)
    end
    move = move + move_d.reverse!
    move.reverse!
    adjust = move.inject(0) {|result, item| result + item }
    move[move.size - 1] += adjust if data[0] == data[1] && adjust != 0
    move.unshift(0) if time % 2 != 0
    return move
  end
  #--------------------------------------------------------------------------
  # ● 反转数值
  #--------------------------------------------------------------------------
  def self.mirror_num(mirror)
    return 1 if !mirror
    return -1
  end  
  #--------------------------------------------------------------------------
  # ● 摄影机
  #--------------------------------------------------------------------------
  def self.camera(battler, data)
    battler = $game_party.battle_members[0] if !battler
    cx = data[2][0] * 100
    cy = data[2][1] * 100
    return $sv_camera.move(cx, cy, data[3], data[4], true) if data[1] == 6
    targets = self.get_targets(data[1], battler)
    return if targets == nil or targets == []
    position = self.get_targets_position(targets, true)
    $sv_camera.move(position[0], position[1] - position[2], data[3], data[4], false)
  end
  #--------------------------------------------------------------------------
  # ● 禁止战斗不能
  #--------------------------------------------------------------------------
  def self.immortaling
    # 赋予全体不死状态
    for member in $game_party.battle_members + $game_troop.members
      # 事件操作等无敌设定就会解除flag的无效
      member.sv.immortal = true if member.state?(N03::IMMORTAL_ID)
      member.add_state(N03::IMMORTAL_ID)
    end
    return true
  end  
  #--------------------------------------------------------------------------
  # ● 允许战斗不能
  #--------------------------------------------------------------------------
  def self.unimmortaling
    # 解除全体不死状态(如果事件等无敌设定以外)
    for member in $game_party.battle_members + $game_troop.members
      next if member.dead?
      # 不死身状态行动中被解除的场合、从状态中解除无效
      member.sv.immortal = false if !member.state?(N03::IMMORTAL_ID) && member.sv.immortal
      next member.sv.immortal = false if member.sv.immortal
      member.remove_state(N03::IMMORTAL_ID)
      next if member.hp != 0
      member.add_state(1)
      member.perform_collapse_effect
      member.sv.action_terminate
    end
    return false
  end  
  #--------------------------------------------------------------------------
  # ● 技能连发
  #--------------------------------------------------------------------------
  def self.derived_skill(battler)
    battler.force_action(battler.sv.derivation_skill_id, -2)
    BattleManager.unshift_action_battlers(battler)
  end
  #--------------------------------------------------------------------------
  # ● 创建伤害
  #--------------------------------------------------------------------------
  def self.set_damage(battler, hp_damage, mp_damage)
    battler.result.hp_damage = hp_damage
    battler.result.mp_damage = mp_damage
  end
  #--------------------------------------------------------------------------
  # ● 确认目标生死
  #--------------------------------------------------------------------------
  def self.targets_alive?(targets)
    return false if targets == []
    for target in targets do return true if !target.dead? end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 定位到第二个目标
  #--------------------------------------------------------------------------
  def self.s_targets(battler)
    battler.sv.target_battler = battler.sv.second_targets
    return battler.sv.second_targets
  end  
  #--------------------------------------------------------------------------
  # ● 定位目标到第二个目标
  #--------------------------------------------------------------------------
  def self.targets_set(battler)
    battler.sv.second_targets = battler.current_action.make_targets.compact
    battler.sv.target_battler = battler.sv.second_targets
  end  
  #--------------------------------------------------------------------------
  # ● 实行战斗动画判定 (对象:实行第一个目标时的画面的动画)
  #--------------------------------------------------------------------------
  def self.first_of_all_screen_anime(anime_id, target, targets)
    anime = $data_animations[anime_id]
    return false if !anime
    return true if anime.position != 3
    return false if anime.position == 3 && target != targets[0]
    targets.delete(target)
    target.sv.timing_targets = targets
    return true
  end
  #--------------------------------------------------------------------------
  # ● 战斗不能是否附加攻击
  #--------------------------------------------------------------------------
  def self.dead_attack?(battler, item)
    for state in battler.atk_states
      return true if state == battler.death_state_id
    end
    for effect in item.effects
      return true if effect.code == 21 && effect.data_id == battler.death_state_id
    end
    return false
  end
end

#==============================================================================
# ■ Sprite_Weapon
#------------------------------------------------------------------------------
#  这是一个显示武器的脚本。
#==============================================================================
class Sprite_Weapon < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 公开实例变量 
  #--------------------------------------------------------------------------
  attr_reader   :index                       # 武器图像排列的index
  attr_reader   :battler                     # 角色图像
  attr_reader   :move_time                   # 图像达到目标的为止的这段时间
  attr_reader   :through                     # 贯穿标记
  attr_reader   :action_end                  # 武器动作结束的标记
  attr_reader   :action_end_cancel           # 武器动作结束,取消的标记
  attr_reader   :hit_position                # 图像达到目标时的坐标
  attr_accessor :hit_anime_id                # 图像达到目标时的动画ID
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport, index, battler)
    super(viewport)
    @index = index
    @battler = battler
    @position_x = @position_y = 0
    @o = 0
    @real_x = @real_y = 0
    @mirror = @battler.sv.mirror
    reset
    set_action
  end
  #--------------------------------------------------------------------------
  # ● 初始化
  #--------------------------------------------------------------------------
  def reset
    @z_plus = 0
    @weapon_data = []
    @move_data = []
    @move_x = 0
    @move_y = 0
    @orbit = []
    @through = false
    @distanse_move = false
    @weapon_width = 0
    @weapon_height = 0
    @anime_time = 0
    @anime_position = 1
    @move_time = 0
    @hit_anime_id = 0
    @move_anime = true
    @action_end = false
    @action_end_cancel = false
    reset_position
  end  
  #--------------------------------------------------------------------------
  # ● 动作设置
  #--------------------------------------------------------------------------
  def set_action
    return if @battler.sv.effect_data == []
    weapon_anime if @battler.sv.effect_data[0][0] == "wp"
    move_anime if @battler.sv.effect_data[0][0] == "m_a"
    @battler.sv.effect_data.shift
  end
  #--------------------------------------------------------------------------
  # ● 实行武器动画
  #--------------------------------------------------------------------------
  def weapon_anime
    @weapon_data = @battler.sv.effect_data[0].dup
    set_graphics
    set_ox
    set_weapon_move
  end
  #--------------------------------------------------------------------------
  # ● 实行动画移动
  #--------------------------------------------------------------------------
  def move_anime
    @move_data = @battler.sv.effect_data[0].dup
    # 取得目标
    @target_battler = [@battler.sv.m_a_targets.shift]
    @target_battler = N03.get_targets(@move_data[3], @battler) if @move_data[3] < 0
    set_move
    return if @move_data[16] == ""
    weapon_data = N03::ACTION[@move_data[16]]
    return if weapon_data == nil
    @weapon_data = weapon_data.dup
    set_graphics
    set_ox
    set_weapon_move
  end
  #--------------------------------------------------------------------------
  # ● 取得武器图像
  #--------------------------------------------------------------------------  
  def set_graphics
    # 武器不依赖图像设定的情况下
    if @weapon_data[13] != ""
      self.bitmap = Cache.character(@weapon_data[13]).dup
      @weapon_width = self.bitmap.width
      @weapon_height = self.bitmap.height
      return
    end
    # 取得武器
    weapon = @battler.weapons[0]
    # 取得二刀流武器
    if @weapon_data[10]
      weapon = nil
      for armor in @battler.armors do break weapon = armor if armor.is_a?(RPG::Armor) && armor.etype_id == 1 end
      weapon = @battler.weapons[1] if !weapon
    end  
    # 如果没有武器将取消处理
    return if weapon == nil
    # 指数取得
    file_index = @weapon_data[12]
    # 如果使用图标
    if @weapon_data[1] == 0
      icon_index = weapon.icon_index
      self.bitmap = Cache.system("Iconset" + file_index).dup
      self.src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      @weapon_width = @weapon_height = 24
    # 独自图像指定
    else
      file_name = @battler.sv.weapon_graphic(weapon.id, weapon.wtype_id) if weapon.is_a?(RPG::Weapon)
      file_name = @battler.sv.shield_graphic(weapon.id, weapon.atype_id) if weapon.is_a?(RPG::Armor)
      self.bitmap = Cache.character(file_name + file_index).dup
      @weapon_width = self.bitmap.width
      @weapon_height = self.bitmap.height
      return if @weapon_data[1] == 1
      # 2003规范的武器动画
      @weapon_width /= @battler.sv.max_pattern[0]
    end
  end
  #--------------------------------------------------------------------------
  # ● 取得图像的原点
  #--------------------------------------------------------------------------  
  def set_ox
    # 反转时设置为相反
    if @mirror
      case @weapon_data[6]
      when 1 ; @weapon_data[6] = 2 # 左上→右上角
      when 2 ; @weapon_data[6] = 1 # 右上→左上角
      when 3 ; @weapon_data[6] = 4 # 左下→右下角
      when 4 ; @weapon_data[6] = 3 # 右下→左下角
      end
    end
    # 原点的設定
    case @weapon_data[6]
    when 0 # 中心
      self.ox = @weapon_width / 2
      self.oy = @weapon_height / 2
    when 1 # 左上
      self.ox = 0
      self.oy = 0
    when 2 # 右上
      self.ox = @weapon_width
      self.oy = 0
    when 3 # 左下
      self.ox = 0
      self.oy = @weapon_height
    when 4 # 右下
      self.ox = @weapon_width
      self.oy = @weapon_height
    when 5 # 同角色位置
      self.ox = @weapon_width / 2
      self.oy = @weapon_height
    end
  end  
  #--------------------------------------------------------------------------
  # ● 取得角色的坐标
  #--------------------------------------------------------------------------  
  def set_battler_position
    @position_x = @battler.sv.x + @weapon_data[3][0] * N03.mirror_num(@mirror) * 100
    @position_y = (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.c - @battler.sv.oy_adjust) + @weapon_data[3][1] * 100
    reset_position
  end
  #--------------------------------------------------------------------------
  # ● 初始化坐标
  #--------------------------------------------------------------------------  
  def reset_position
    @real_x = @position_x / 100
    @real_y = @position_y / 100
    @real_zoom_x = 1
    @real_zoom_y = 1
  end
  #--------------------------------------------------------------------------
  # ● 战斗动画显示
  #--------------------------------------------------------------------------  
  def set_animation(anime_id)
    return if $data_animations[anime_id] == nil
    @anime_position = $data_animations[anime_id].position
    @horming = true
    @horming = false if @anime_position == 3
    @anime_camera_zoom = true
    @anime_no_mirror = false
    start_animation($data_animations[anime_id], @mirror)
    timings = $data_animations[anime_id].timings
  end
  #--------------------------------------------------------------------------
  # ● 实行打击时的战斗动画
  #--------------------------------------------------------------------------  
  def set_hit_animation(position_data, hit_anime_id, target)
    return if $data_animations[hit_anime_id] == nil
    @real_x = position_data[0]
    @real_y = position_data[1]
    @position_x = position_data[0] * 100
    @position_y = position_data[1] * 100
    self.z = position_data[2]
    @z_plus = 1000
    @action_end = false
    @horming = true
    set_animation(hit_anime_id)
    @anime_time = $data_animations[hit_anime_id].frame_max * 4
    @timing_targets = [target]
    @move_time = @hit_anime_id = 0
    @weapon_data = []
  end
  #--------------------------------------------------------------------------
  # ● 角色时间追加
  #--------------------------------------------------------------------------  
  def timing_battler_set(target)
    @timing_targets.push(target)
  end
  #--------------------------------------------------------------------------
  # ● 取得武器的移动
  #--------------------------------------------------------------------------  
  def set_weapon_move
    # 取得开始位置
    set_battler_position if @move_time == 0
    @z_plus = 50 if @z_plus == 0 && @weapon_data[9]
    self.z = @battler.sv.z + @z_plus
    # 反转处理
    @mirror = !@mirror if @weapon_data[7]
    self.mirror = @mirror
    # 更新模式设置
    set_pattern
    @max_pattern = 2 if @max_pattern == 1
    # 计算武器移动
    @weapon_move_data = []
    @weapon_angle_data = []
    @weapon_zoom_data = []
    num = N03.mirror_num(@mirror)
    for i in 0...@max_pattern
      move_data_x = @weapon_data[2][0] * num * 100 * i / (@max_pattern - 1)
      move_data_y = @weapon_data[2][1] * 100 * i / (@max_pattern - 1)
      move_angle = @weapon_data[4] * num + (@weapon_data[5] * num - @weapon_data[4] * num) * i / (@max_pattern - 1)
      move_zoom_x = 1 + (@weapon_data[8][0] - 1) * i / (@max_pattern - 1)
      move_zoom_y = 1 + (@weapon_data[8][1] - 1) * i / (@max_pattern - 1)
      @weapon_move_data.push([move_data_x, move_data_y])
      @weapon_angle_data.push(move_angle)
      @weapon_zoom_data.push([move_zoom_x, move_zoom_y])
    end
  end  
  #--------------------------------------------------------------------------
  # ● 更新模式
  #--------------------------------------------------------------------------
  def set_pattern
    if @weapon_data[11] == -1
      return @max_pattern = @battler.sv.max_pattern[0] if @battler.sv.pattern_type != 0
      @count = @battler.sv.pattern_time
      @max_count = @battler.sv.pattern_time
      @max_pattern = @battler.sv.max_pattern[0]
      @repeat = false
    else
      @count = @weapon_data[11][0]
      @max_count = @weapon_data[11][0]
      @max_pattern = @weapon_data[11][1]
      @repeat = @weapon_data[11][2]
    end
    @pattern = 0
  end
  #--------------------------------------------------------------------------
  # ● 实行移动
  #--------------------------------------------------------------------------
  def set_move
    # 取得战斗动画
    set_animation(@move_data[1][0]) if $data_animations[@move_data[1][0]] != nil && $data_animations[@move_data[1][0]].position != 3
    @anime_camera_zoom = @move_data[13]
    @loop = @move_data[14]
    @loop = false if @move_data[1][0] == 0
    @anime_no_mirror = @move_data[15]
    @se_flag = @move_data[17]
    # 取得开始位置
    start_position
    @z_plus = 1000 if @move_data[9]
    # 目标角色图像的动画的反映SE和时机设定
    @timing_targets = @target_battler
    # 计算坐标
    @move_x = @move_data[5][0] * 100 * N03.mirror_num(@mirror)
    @move_y = @move_data[5][1] * 100
    # 计算时间或速度
    @distanse_move = true if @move_data[6] > 0
    @move_time = @move_data[6].abs
    # 时间为0的时、如果被描写成动画显示时间
    if @move_time == 0
      @move_time = $data_animations[@move_data[1][0]].frame_max * 4 if $data_animations[@move_data[1][0]]
      @move_time = 1 if !$data_animations[@move_data[1][0]]
      @distanse_move = false
    end
    # 贯穿类型的场合
    @through = true if @move_data[7] == 1
    @auto_through_flag = false
    @auto_through_flag = true if @move_data[7] == 0
    # 计算目标坐标
    if @target_battler == nil
      @target_x = @move_x * 100
      @target_x = (Graphics.width - @move_x) * 100 if @mirror
      @target_y = @move_y * 100
    else
      move_data_set
    end
    # 计算目标达到的时间
    @move_time = distanse_calculation(@move_time, @target_x, @target_y)
    # 计算圆形轨道
    orbit
    # 角色的体能设定
    @battler.sv.wait = @move_time - 1 if @move_data[10][0]
    @move_horming = @move_data[12]
  end  
  #--------------------------------------------------------------------------
  # ● 速度转换时间
  #--------------------------------------------------------------------------
  def distanse_calculation(time, target_x, target_y)
    return time if !@distanse_move
    distanse_x = @position_x - @target_x
    distanse_x = @target_x - @position_x if @target_x > @position_x
    distanse_y = @position_y - @target_y
    distanse_y = @target_y - @position_y if @target_y > @position_y
    distanse = [distanse_x, distanse_y].max
    return distanse / (time * 100) + 1
  end
  #--------------------------------------------------------------------------
  # ● 更新移动目标
  #--------------------------------------------------------------------------
  def move_data_set
    return if @target_battler == nil
    position = N03.get_targets_position(@target_battler, true, @anime_position)
    @target_x = position[0] + @move_x
    @target_y = position[1] - position[2] + @move_y
  end
  #--------------------------------------------------------------------------
  # ● 计算开始位置
  #--------------------------------------------------------------------------
  def start_position
    starter = [@battler.sv.m_a_starter.shift]
    starter = N03.get_targets(@move_data[2], @battler) if @move_data[2] < 0
    position = [0, 0]
    position = N03.get_targets_position(starter, true, @anime_position) if starter != nil
    @position_x = position[0] + @move_data[4][0] * 100
    @position_y = position[1] + position[2] + @move_data[4][1] * 100
    skill_action = @battler.sv.skill_action
    if @battler.is_a?(Game_Actor) && $game_party.tank?(@battler.id) &&
      RPGBOY::SV_CANNON_ANIME_REVISE.include?(skill_action) &&
      !RPGBOY::TANK_COORDINATE_REVISE[@battler.id].nil? &&
      !RPGBOY::TANK_COORDINATE_REVISE[@battler.id][@battler.action_armor.etype_id].nil?
        new_position = RPGBOY::TANK_COORDINATE_REVISE[@battler.id][@battler.action_armor.etype_id]
        @position_x = position[0] + new_position[0] * 100
        @position_y = position[1] + position[2] + new_position[1] * 100
    end
    @position_z = @position_y
  end  
  #--------------------------------------------------------------------------
  # ● 计算原型轨道
  #--------------------------------------------------------------------------
  def orbit
    orbit_data = @move_data[8].dup
    orbit_data[0] *= 100
    orbit_data[1] *= 100
    orbit_d = []
    for i in 0...@move_time / 2
      @orbit = orbit_data[0]
      orbit_data[0] /= 2
      orbit_d = orbit_data[1]
      orbit_data[1] /= 2
    end
    @orbit = @orbit + orbit_d.reverse!
    @orbit.reverse!
  end  
  #--------------------------------------------------------------------------
  # ● 更新框架
  #--------------------------------------------------------------------------
  def update
    update_hit_anime if @anime_time != 0
    update_move if @move_time != 0
    update_weapon_move if @weapon_data != []
    update_position
    update_color
    self.visible = @battler.sv.weapon_visible
    super
  end
  #--------------------------------------------------------------------------
  # ● 打击时的战斗动画
  #--------------------------------------------------------------------------
  def update_hit_anime
    @anime_time -= 1
    @action_end = true if @anime_time == 0
  end
  #--------------------------------------------------------------------------
  # ● 更新移动
  #--------------------------------------------------------------------------
  def update_move
    move_data_set if @move_horming && !@hit_position
    through_set(@move_time, @target_x, @target_y) if @move_time == 1 && !@hit_position
    @o += @orbit[@move_time - 1] if @orbit[@move_time - 1] != nil
    @position_x = (@position_x * (@move_time - 1) + @target_x) / @move_time
    @position_y = (@position_y * (@move_time - 1) + @target_y) / @move_time + @o
    reset_position
    set_animation(@move_data[1][0]) if @loop && !animation?
    @move_time -= 1
    return if @move_time != 0
    @action_end = true if !@action_end_cancel
  end
  #--------------------------------------------------------------------------
  # ● 更新武器的移动
  #--------------------------------------------------------------------------
  def update_weapon_move
    pattern = update_pattern
    set_battler_position if @move_time == 0 && !@action_end_cancel
    @real_x = @position_x / 100 + @weapon_move_data[pattern][0] / 100
    @real_y = @position_y / 100 + @weapon_move_data[pattern][1] / 100
    @real_zoom_x = @weapon_zoom_data[pattern][0]
    @real_zoom_y = @weapon_zoom_data[pattern][1]
    self.angle = @weapon_angle_data[pattern]
    self.src_rect.set(@weapon_width * pattern, 0, @weapon_width, @weapon_height) if @weapon_data[1] == 2
  end
  #--------------------------------------------------------------------------
  # ● 更新模式
  #--------------------------------------------------------------------------
  def update_pattern
    return @battler.sv.pattern_w if @count == nil
    @count -= 1
    return @pattern if @count != 0
    @count = @max_count
    @pattern += 1
    if !@repeat && @pattern == @max_pattern
      @pattern = @max_pattern - 1
    elsif @pattern == @max_pattern
      @pattern = 0
    end
    return @pattern
  end
  #--------------------------------------------------------------------------
  # ● 更新坐标
  #--------------------------------------------------------------------------
  def update_position
    self.x = (@real_x - $sv_camera.x) * $sv_camera.convert / 1000
    self.y = (@real_y - $sv_camera.y) * $sv_camera.convert / 1000
    self.x += $sv_camera.sx / 100 unless @battler.sv.h != 0 && @weapon_data != []
    self.y += $sv_camera.sy / 100 unless @battler.sv.h != 0 && @weapon_data != []
    self.z = @battler.sv.z + @z_plus - 10
    self.zoom_x = @real_zoom_x * $sv_camera.zoom
    self.zoom_y = @real_zoom_y * $sv_camera.zoom
    self.opacity = @battler.sv.opacity if @battler.sv.opacity_data[4]
  end
  #--------------------------------------------------------------------------
  # ● 贯穿的处理
  #--------------------------------------------------------------------------
  def through_set(time, target_x, target_y)
    @hit_anime_id = N03.get_attack_anime_id(@move_data[1][1], @battler)
    @battler.sv.wait = N03.get_anime_time(@hit_anime_id) if @move_data[10][1]
    moving_x = (target_x / 100 - @position_x / 100) / time
    moving_y = (target_y / 100 - @position_y / 100) / time
    goal_x = $sv_camera.max_left - 100 if moving_x < 0
    goal_x = Graphics.width + $sv_camera.max_right + 100 if moving_x > 0
    goal_y = $sv_camera.max_top - 100 if moving_y < 0
    goal_y = Graphics.height + $sv_camera.max_bottom + 100 if moving_y > 0
    if goal_x == nil &&  goal_y == nil
      time = 0
      reset_position
    else
      time = move_calculation(moving_x, moving_y, goal_x, goal_y)
    end
    target_x = @position_x + moving_x * time * 100
    target_y = @position_y + moving_y * time * 100
    @pre_data = [time, target_x, target_y]
    @battler.sv.m_a_data.push([@move_data[11], @target_battler, @index, @auto_through_flag, []])
    @action_end_cancel = true
    @hit_position = [@real_x, @real_y, self.z]
  end  
  #--------------------------------------------------------------------------
  # ● 达到时间预算
  #--------------------------------------------------------------------------
  def move_calculation(moving_x, moving_y, goal_x, goal_y)
    move_x = @position_x / 100
    move_y = @position_y / 100
    time = 0
    loop do
      move_x += moving_x
      move_y += moving_y
      time += 1
      return time if moving_x < 0 && move_x < goal_x
      return time if moving_x > 0 && move_x > goal_x
      return time if moving_y < 0 && move_y < goal_y
      return time if moving_y > 0 && move_y > goal_y
    end
  end   
  #--------------------------------------------------------------------------
  # ● 错误时从处理消失转换成贯穿处理
  #--------------------------------------------------------------------------
  def through_change
    @action_end_cancel = false
    @through = true
    @move_time = @pre_data[0]
    @target_x = @pre_data[1]
    @target_y = @pre_data[2]
    @pre_data = nil
  end  
  #--------------------------------------------------------------------------
  # ● SE 闪光灯和处理的时间
  #--------------------------------------------------------------------------
  def animation_process_timing(timing)
    return if !@timing_targets
    se_flag = true
    se_flag = @se_flag if @se_flag != nil
    for target in @timing_targets
      target.sv.timing.push([se_flag, timing.dup])
      se_flag = false if @animation.position == 3
    end  
  end
  #--------------------------------------------------------------------------
  # ● 更新色调
  #--------------------------------------------------------------------------
  def update_color
    return if @battler.sv.color == []
    self.color.set(@battler.sv.color[0], @battler.sv.color[1], @battler.sv.color[2], @battler.sv.color[3])
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    super
    self.bitmap.dispose if self.bitmap != nil
  end
end

#==============================================================================
# ■ Sprite_Battle_Picture
#------------------------------------------------------------------------------
#  这是一个画面的图象显示。
#==============================================================================
class Sprite_Battle_Picture < Sprite
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_accessor   :action_end           # 结束标记
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport = nil)
    super(viewport)
    @action_end = false
    self.ox = 0
  end
  #--------------------------------------------------------------------------
  # ● 集合
  #--------------------------------------------------------------------------
  def set(battler)
    @battler = battler
    @data = @battler.sv.effect_data.shift
    @time = @data[4]
    @mirror = $sv_camera.mirror
    @mirror = false if !@data[8]
    self.opacity = @data[6][0]
    @s_x = @data[2][0] if @data[2] != []
    @s_x = Graphics.width - @data[2][0]  if @data[2] != [] && @mirror
    @s_y = @data[2][1] if @data[2] != []
    @e_x = @data[3][0] if @data[3] != []
    @e_x = Graphics.width - @data[3][0] if @data[3] != [] && @mirror
    @e_y = @data[3][1] if @data[3] != []
    @s_x = self.x if @data[2] == []
    @s_y = self.y if @data[2] == []
    @e_x = self.x if @data[3] == []
    @e_y = self.y if @data[3] == []
    self.x = @s_x
    self.y = @s_y
    return @action_end = true if @time == 0
    @move_x = (@e_x * 1.0 - @s_x) / @time
    @move_y = (@e_y * 1.0 - @s_y) / @time
    self.z = @data[5]
    return set_plane(battler) if @data[7] != []
    self.bitmap = Cache.picture(@data[9]) if !bitmap or @data[9] != ""
    return @action_end = true if !bitmap
    self.mirror = @mirror
    self.ox = self.bitmap.width if @mirror
  end
  #--------------------------------------------------------------------------
  # ● 过渡平面
  #--------------------------------------------------------------------------
  def set_plane(battler)
    @viewport = Viewport.new(@data[2][0],@data[2][1],@data[7][0],@data[7][1]) if !@viewport
    viewport = @viewport
    @plane = Plane.new(viewport) if !@plane
    @plane.bitmap = Cache.picture(@data[9]) if !@plane.bitmap or @data[9] != ""
    return @action_end = true if !@plane.bitmap
    @plane.ox = @data[7][0]
    @plane.oy = @data[7][1]
    @plane.opacity = @data[6][0]
    @move_x = @remain_move[0] if @data[2] == @data[3]
    @move_y = @remain_move[1] if @data[2] == @data[3]
    @remain_move = [@move_x, @move_y]
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    @action_end = true if !@battler.sv.picture
    return if @time == 0
    return if @action_end
    @time -= 1
    return plane_update if @plane
    super
    self.x += @move_x
    self.y += @move_y
    self.opacity += @data[6][1]
    return if @time != 1
    self.x = @e_x
    self.y = @e_y
    @time = 0
  end
  #--------------------------------------------------------------------------
  # ● 更新平面
  #--------------------------------------------------------------------------
  def plane_update
    @plane.ox += @move_x
    @plane.oy += @move_y
    @plane.opacity += @data[6][1]
    @time = @data[4] if @time == 0
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    bitmap.dispose if bitmap
    @plane.dispose if @plane
    @viewport.dispose if @viewport
    super
  end
end

#==============================================================================
# ■ Sprite_Back_Picture
#------------------------------------------------------------------------------
#  这是一个精灵的一段画面。
#==============================================================================
class Sprite_Back_Picture < Plane
  #--------------------------------------------------------------------------
  # ● 公开实例变量 
  #--------------------------------------------------------------------------
  attr_accessor   :action_end           # 结束标记
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport = nil, index)
    super(viewport)
    @index = index
    @real_x = 0
    @real_y = 0
    @real_opacity = 0
    @move_x = 0
    @move_y = 0
    @move_opacity = 0
    @time = 0
    @switche = 0
    @action_end = false
  end
  #--------------------------------------------------------------------------
  # ● 格局
  #--------------------------------------------------------------------------
  def setup(data)
    self.bitmap = Cache.picture(data[9])
    self.z = data[6]
    @switche = data[1]
    mirror = $sv_camera.mirror
    mirror = false if !data[8]
    @move_x = data[3][0]
    @move_x *= -1 if mirror
    @move_y = data[3][1]
    @time = data[4]
    @time = -1 if @time == 0
    @real_opacity = (data[5][0] + 1) * 100
    @move_opacity = data[5][1]
    @start_opacity = data[5][0]
    @shake_ok = data[7]
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    update_picture if @time != 0
    self.ox = $sv_camera.x - @real_x
    self.oy = $sv_camera.y - @real_y
    if @shake_ok
      self.ox -= $sv_camera.sx / 100
      self.oy -= $sv_camera.sy / 100
    end
    self.ox *= $sv_camera.zoom
    self.oy *= $sv_camera.zoom
    self.zoom_x = @zoom_x * $sv_camera.zoom
    self.zoom_y = @zoom_y * $sv_camera.zoom
    self.opacity = @real_opacity / 100
    @move_opacity *= -1 if self.opacity == 255 or self.opacity <= @start_opacity
    @switche
    @action_end = true if @switche > 0 && !$game_switches[@switche]
    @action_end = true if @switche < 0 && !$sv_camera.switches[@switche.abs]
  end
  #--------------------------------------------------------------------------
  # ● 更新图片
  #--------------------------------------------------------------------------
  def update_picture
    @real_x += @move_x / 100
    @real_y += @move_y / 100
    @real_x = 0 if @real_x >= self.bitmap.width or @real_x <= -self.bitmap.width
    @real_y = 0 if @real_y >= self.bitmap.height or @real_y <= -self.bitmap.height
    @zoom_x = 1
    @zoom_y = 1
    @real_opacity += @move_opacity
    @time -= 1
    @time = -1 if @time < -100
  end
end

#==============================================================================
# ■ Sprite_Back_Picture
#------------------------------------------------------------------------------
#  这是一个精灵的伤害显示。
#==============================================================================
class Sprite_Damage < Sprite
  #--------------------------------------------------------------------------
  # ● 公开实例变量 
  #--------------------------------------------------------------------------
  attr_reader   :action_end                  # POP结束标记
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport = nil, battler)
    super(viewport)
    @battler = battler
    @time = 0
    return @action_end = true if !@battler
    @direction = -1
    @direction *= -1 if @battler.actor?
    @direction *= -1 if $sv_camera.mirror
    set_state
    set_damage
    update
  end
  #--------------------------------------------------------------------------
  # ● 显示状态
  #--------------------------------------------------------------------------
  def set_state
    return if !N03::STATE_POP
    states = @battler.result.added_state_objects
    states.delete($data_states[@battler.death_state_id]) if @battler.result.hp_damage != 0
    return if states == []
    return if @battler.sv.add_state == @battler.result.added_state_objects
    @battler.sv.add_state = states.dup
    @st = []
    @st_base = []
    for i in 0...states.size
      @st = Sprite.new
      bitmap_state(@st, states)
      @st_base = []
      @st_base[0] = @direction * (-20 + 5 * i) + @battler.sv.x / 100
      @st_base[1] = -40 - @state_height * i + (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.oy_adjust)/ 100
      @st.z = 1000 + i
      @st.opacity = 0
    end
    @time = @pop_time = 80
  end   
  #--------------------------------------------------------------------------
  # ● 状态图像
  #--------------------------------------------------------------------------
  def bitmap_state(state, state_object)
    name = state_object.name
    state.bitmap = Cache.system("Iconset").dup
    state.src_rect.set(state_object.icon_index % 16 * 24, state_object.icon_index / 16 * 24, 24, 24)
    @state_height = 24
  end
  #--------------------------------------------------------------------------
  # ● 显示打击伤害
  #--------------------------------------------------------------------------
  def hit_count
    for i in 0...@battler.sv.hit.size
      if @battler.sv.hit == nil
        @hit = i
        return @battler.sv.hit = @hit
      end
    end
    @hit = @battler.sv.hit.size
    @battler.sv.hit.push(@hit)
  end  
  #--------------------------------------------------------------------------
  # ● 显示伤害
  #--------------------------------------------------------------------------
  def set_damage
    return @action_end = true if !N03::DAMAGE_POP
    damage = @battler.result.hp_damage if @battler.result.hp_damage != 0
    damage = @battler.result.hp_drain  if @battler.result.hp_drain  != 0
    damage = @battler.result.mp_damage if @battler.result.mp_damage != 0
    damage = @battler.result.mp_drain  if @battler.result.mp_drain  != 0
    damage = @battler.result.tp_damage if @battler.result.tp_damage != 0
    if !damage or damage == 0
      @action_end = true if @st == nil
      return # 状态POP考虑设置@action_end不返回
    end
    hit_count
    # @hit = @battler.sv.hit
    # @battler.sv.hit += 1 if damage != 0
    if damage > 0
      file = @battler.result.critical ? N03::CRITICAL_DAMAGE_PLUS : N03::DAMAGE_PLUS
    end
    file = N03::DAMAGE_MINUS if damage < 0
    add_file = N03::DAMAGE_MP if @battler.result.mp_damage != 0
    add_file = N03::DAMAGE_TP if @battler.result.tp_damage != 0
    adjust_x = N03::DAMAGE_ADJUST
    @num = []
    @num_base = []
    damage = damage.abs
    max_num = damage.to_s.size
    max_num += 1 if add_file != nil
    for i in 0...max_num
      @num = Sprite.new
      if add_file != nil && i == max_num - 1
        @num.bitmap = Cache.system(add_file)
        cw = (damage % (10 * 10 ** i))/(10 ** i)
        sw = 0 if sw == nil
      else
        @num.bitmap = Cache.system(file)
        cw = (damage % (10 * 10 ** i))/(10 ** i)
        sw = @num.bitmap.width / 10
        @num.src_rect.set(cw * sw, 0, sw, @num.bitmap.height)
      end
      @num_base = []
      @num_base[0] = (sw + adjust_x) * i * -1 + (@battler.sv.x / 100)
      @num_base[1] =  -(@num.bitmap.height / 3) - i * 2 - @hit * 2 + (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.oy_adjust)/ 100
      @num_base[0] -= @num.bitmap.width / 2 - adjust_x if add_file != nil && i == max_num - 1
      @num.z = 1000 + i + @hit * 10
    end
    @time = @pop_time = 80
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    return if @time == 0
    for i in 0...@st.size do update_state_move(@st, i) end if @st != nil
    for i in 0...@num.size do update_num_move(@num, i) end if @num != nil
    @time -= 1
    @action_end = true if @time == 0
  end
  #--------------------------------------------------------------------------
  # ● 更新状态图像
  #--------------------------------------------------------------------------
  def update_state_move(state, index)
    min = @pop_time - index * 2
    case @time
    when min-15..min
      @st_base[index][0] += @direction
      state.opacity += 25
    when min-80..min-50
      @st_base[index][0] += @direction
      state.opacity -= 25
    end
    state.x = (@st_base[index][0] - $sv_camera.x) * $sv_camera.zoom
    state.y = (@st_base[index][1] - $sv_camera.y) * $sv_camera.zoom
  end
  #--------------------------------------------------------------------------
  # ● 更新数值
  #--------------------------------------------------------------------------
  def update_num_move(num, index)
    min = @pop_time - index * 2
    case @time
    when min-1..min
      @num_base[index][0] += @direction * @hit
      @num_base[index][1] -= 5 + @hit * 2
    when min-3..min-2
      @num_base[index][0] += @direction * @hit
      @num_base[index][1] -= 4 + @hit * 2
    when min-6..min-4
      @num_base[index][0] += @direction
      @num_base[index][1] -= 3 + @hit * 2
    when min-14..min-7
      @num_base[index][0] += @direction
      @num_base[index][1] += 2
    when min-17..min-15
      @num_base[index][1] -= 2 + @hit * 2
    when min-23..min-18
      @num_base[index][1] += 1
    when min-27..min-24
      @num_base[index][1] -= 1
    when min-30..min-28
      @num_base[index][1] += 1
    when min-33..min-31
      @num_base[index][1] -= 1
    when min-36..min-34
      @num_base[index][1] += 1
    end
    num.x = (@num_base[index][0] - $sv_camera.x) * $sv_camera.zoom
    num.y = (@num_base[index][1] - $sv_camera.y) * $sv_camera.zoom
    num.opacity = 256 - (12 - @time) * 32
    num.visible = false if @time == 0
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    @battler.sv.hit[@hit] = nil if @hit
    bitmap.dispose if bitmap
    for i in 0...@num.size do @num.dispose end if @num != nil
    for i in 0...@st.size do @st.dispose end if @st != nil
    super
  end
end

#==============================================================================
# ■ Window_Skill_name
#------------------------------------------------------------------------------
#  这是一个显示技能名字的窗口。
#==============================================================================
class Window_Skill_name < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(text)
    super(0, 0, Graphics.width, line_height + standard_padding * 2)
    draw_text(4, 0, Graphics.width - 64, line_height,text, 1)
  end
end

#==============================================================================
# ■ Spriteset_Sideview
#------------------------------------------------------------------------------
#  处理战斗画面的精灵的类。本类在横版战斗类的內定使用。
#==============================================================================
class Spriteset_Sideview
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport)
    @viewport = viewport
    @weapons = []
    @pictures = []
    @back_pic = []
    @damage = []
    $sv_camera.setup
    N03.camera(nil, N03::BATTLE_CAMERA["顺序开始前"].dup)
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    update_battler_data
    update_damage
    update_pictures
    update_back_pic
    update_weapons
  end  
  #--------------------------------------------------------------------------
  # ● 更新角色数据
  #--------------------------------------------------------------------------
  def update_battler_data
    for battler in $game_party.battle_members + $game_troop.members
      weapon_end(battler) if battler.sv.weapon_end
      next if battler.sv.effect_data == []
      for effect_data in battler.sv.effect_data do set_effects(battler, effect_data) end
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新伤害图像
  #--------------------------------------------------------------------------
  def update_damage
    for i in 0...@damage.size
      next if @damage == nil
      @damage.update if @damage != nil
      next if !@damage.action_end
      @damage.dispose
      @damage = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新图片动作
  #--------------------------------------------------------------------------
  def update_pictures
    for i in 0...@pictures.size
      next if @pictures == nil
      @pictures.update if @pictures != nil
      next if !@pictures.action_end
      @pictures.dispose
      @pictures = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新期间图片
  #--------------------------------------------------------------------------
  def update_back_pic
    set_back_pic if $sv_camera.program_picture != []
    for i in 0...@back_pic.size
      next if @back_pic == nil
      @back_pic.update if @back_pic != nil
      next if !@back_pic.action_end
      @back_pic.dispose
      @back_pic = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新武器动作
  #--------------------------------------------------------------------------
  def update_weapons
    for i in 0...@weapons.size
      next if @weapons == nil
      @weapons.update if @weapons != nil
      next if !@weapons.action_end
      @weapons.dispose
      @weapons = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 实行伤害
  #--------------------------------------------------------------------------
  def set_damage_pop(target)
    for i in 0...@damage.size
      next if @damage != nil
      return @damage = Sprite_Damage.new(@viewport, target)
    end
    @damage.push(Sprite_Damage.new(@viewport, target))
  end
  #--------------------------------------------------------------------------
  # ● 实行期间图片
  #--------------------------------------------------------------------------
  def set_back_pic
    for data in $sv_camera.program_picture
      if @back_pic[data[2]] != nil
        @back_pic[data[2]].dispose
        @back_pic[data[2]] = nil
      end
      @back_pic[data[2]] = Sprite_Back_Picture.new(@viewport, data[2])
      @back_pic[data[2]].setup(data)
    end
    $sv_camera.program_picture = []
  end
  #--------------------------------------------------------------------------
  # ● 开始效果
  #--------------------------------------------------------------------------
  def set_effects(battler, effect_data)
    case effect_data[0]
    when "pic" ; set_pictures(battler, effect_data)
    when  "wp" ; set_weapons(battler,  true)
    when "m_a" ; set_weapons(battler, false)
    end
  end
  #--------------------------------------------------------------------------
  # ● 实行图片动作
  #--------------------------------------------------------------------------
  def set_pictures(battler, effect_data)
    @pictures[effect_data[1]] = Sprite_Battle_Picture.new if @pictures[effect_data[1]] == nil
    @pictures[effect_data[1]].set(battler)
  end
  #--------------------------------------------------------------------------
  # ● 实行武器动作
  #--------------------------------------------------------------------------
  def set_weapons(battler, weapon_flag, test = true)
    for i in 0...@weapons.size
      next if @weapons != nil
      @weapons = Sprite_Weapon.new(@viewport, i, battler)
      battler.sv.weapon_index.push(i) if weapon_flag
      return i
    end
    @weapons.push(Sprite_Weapon.new(@viewport, @weapons.size, battler))
    battler.sv.weapon_index.push(@weapons.size - 1) if weapon_flag
    return @weapons.size - 1
  end
  #--------------------------------------------------------------------------
  # ● 角色的武器动作结束
  #--------------------------------------------------------------------------
  def weapon_end(battler)
    battler.sv.weapon_end = false
    for index in battler.sv.weapon_index
      weapon_index = battler.sv.weapon_index.shift
      @weapons[weapon_index].dispose if @weapons[weapon_index] != nil
      @weapons[weapon_index] = nil
    end
    battler.sv.weapon_index.compact!
  end  
  #--------------------------------------------------------------------------
  # ● 实行打击時的战斗动画
  #--------------------------------------------------------------------------
  def set_hit_animation(battler, weapon_index, hit_targets, miss)
    weapon = @weapons[weapon_index]
    for target in hit_targets
      next @weapons[@hit_index].timing_battler_set(target) if @hit_index != nil
      @hit_index = set_weapons(battler, false, false)
      @weapons[@hit_index].set_hit_animation(weapon.hit_position, weapon.hit_anime_id, target)
    end
    @hit_index = nil
    if !weapon.through && !miss
      @weapons[weapon_index].dispose
      @weapons[weapon_index] = nil
    else
      @weapons[weapon_index].through_change
    end
  end
  #--------------------------------------------------------------------------
  # ● 初始化侧视图数据
  #--------------------------------------------------------------------------
  def reset_sideview
    $sv_camera.reset
    for member in $game_troop.members + $game_party.battle_members do member.sv.reset end
  end  
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    dispose_effects(@weapons)
    dispose_effects(@pictures)
    dispose_effects(@back_pic)
    dispose_effects(@damage)
    reset_sideview
  end
  #--------------------------------------------------------------------------
  # ● 释放图像效果
  #--------------------------------------------------------------------------
  def dispose_effects(effects)
    for i in 0...effects.size
      effects.dispose if effects != nil
      effects = nil
    end
  end
end


#==============================================================================
# ■ Sprite_Battle_Back
#------------------------------------------------------------------------------
#  战斗背景用的精灵。
#==============================================================================
class Sprite_Battle_Back < Plane
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize(viewport = nil, index, battleback_name)
    super(viewport)
    @index = index
    if @index == 1
      data = N03::FLOOR1_DATA[battleback_name]
      data = N03::FLOOR1_DATA["全Battlebacks1"] if data == nil
    elsif @index == 2
      data = N03::FLOOR2_DATA[battleback_name]
      data = N03::FLOOR2_DATA["全Battlebacks2"] if data == nil
    end   
    data = data.dup
    @adjust_position = data[0]
    @zoom_x = data[1][0] / 100.0
    @zoom_y = data[1][1] / 100.0
    @shake_on = data[2]
    $game_switches[data[3]] = true if data[3] > 0
    $sv_camera.switches[data[3].abs] = true if data[3] < 0
    reset_scroll
    reset_back_data(battleback_name)
  end
  #--------------------------------------------------------------------------
  # ● 初始化背景滚动
  #--------------------------------------------------------------------------
  def reset_scroll
    @scroll_x = 0
    @scroll_y = 0
    @move_x = 0
    @move_y = 0
  end
  #--------------------------------------------------------------------------
  # ● 初始化背景数据
  #--------------------------------------------------------------------------
  def reset_back_data(battleback_name)
    @back_data = []
    @active_data = ["scroll",0, @move_x, @move_y, false, battleback_name,""]
    start_back_data(@active_data)
  end  
  #--------------------------------------------------------------------------
  # ● 背景图像的设置
  #--------------------------------------------------------------------------
  def set_graphics(new_bitmap)
    self.bitmap = new_bitmap
    @base_x = (self.bitmap.width * @zoom_x - Graphics.width) / 2 + @adjust_position[0]
    @base_y = (self.bitmap.height * @zoom_y - Graphics.height) / 2 + @adjust_position[1]
    # 限制坐标取得
    max_top =  0
    max_bottom = self.bitmap.height * @zoom_y - Graphics.height
    max_left = 0
    max_right = self.bitmap.width * @zoom_x - Graphics.width
    exist = true
    exist = false if self.bitmap.height == 32 && self.bitmap.width == 32
    $sv_camera.setting(@index, [max_top, max_bottom, max_left, max_right, @base_x, @base_y,exist])
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    return if !bitmap
    update_back_data
    update_scroll unless @move_x == 0 && @move_y == 0
    update_color
    update_position
    update_back_adjust if @bt_back != nil
    create_back_adjust if @bt_back == nil && !@active_data[10] && @scroll_x == 0 && @scroll_y == 0
  end
  #--------------------------------------------------------------------------
  # ● 更新背景数据
  #--------------------------------------------------------------------------
  def update_back_data
    delete = true if @active_data[1] > 0 && !$game_switches[@active_data[1]]
    delete = true if @active_data[1] < 0 && !$sv_camera.switches[@active_data[1].abs]
    return if !delete
    for i in 0...@back_data.size
      @back_data = nil if @back_data[1] > 0 && !$game_switches[@back_data[1]]
      @back_data = nil if @back_data[1] < 0 && !$sv_camera.switches[@back_data[1].abs]
    end
    @back_data.compact!
    next_back_data
  end
  #--------------------------------------------------------------------------
  # ● 下一个背景资料设置
  #--------------------------------------------------------------------------
  def next_back_data
    @back_data.delete(@active_data[11]) if @active_data[11] != nil
    @back_data.push(@active_data[11]) if @active_data[11] != nil
    @active_data = nil
    data = @back_data.pop
    @back_data = [@active_data] if @back_data.size == 0
    start_back_data(data)
  end  
  #--------------------------------------------------------------------------
  # ● 实行背景数据
  #--------------------------------------------------------------------------
  def start_back_data(data)
    return if back_data_remain(data)
    bt_back_dispose
    pre_active_data = @active_data
    @active_data[8] = [@back_name, @move_x, @move_y, @scroll_x, @scroll_y] if @active_data != nil
    @back_data.push(@active_data)     if @active_data != nil
    @active_data = data.dup
    @active_data[5] = @back_name      if @active_data[5] == ""
    @active_data[9] = set_back_adjust if @active_data[9] == nil
    back_data_scroll_on               if @active_data[8] == nil && @active_data[9][0] == false
    set_remain_back_data              if @active_data[8] != nil
    create_back(@active_data[5])      if @active_data[9][0] == false
    create_back_adjust                if @active_data[10]
    @active_data[11] = pre_active_data if pre_active_data && @active_data[7] == false
  end  
  #--------------------------------------------------------------------------
  # ● 背景数据的保持
  #--------------------------------------------------------------------------
  def back_data_remain(data)
    remain = false
    remain = true if data[6] != "" && @active_data != nil && @active_data[9] != nil && @active_data[9][0] != false
    remain = true if @active_data != nil && @active_data[7] == false
    return remain if !remain
    @remain = true
    @back_data.push(data)
    return remain
  end  
  #--------------------------------------------------------------------------
  # ● 背景变更修正数据
  #--------------------------------------------------------------------------
  def set_back_adjust
    bt_adjust = []
    sign = -1
    if @active_data[6] == ""
      reset_scroll if @active_data[3][0] == 0 &&  @active_data[3][1] == 0
      bt_adjust = [false,false,0,0]
      return bt_adjust
    elsif @move_x != 0 or @active_data[3][0] != 0
      sign = 1 if @move_x < 0
      bt_adjust[0] = [self.bitmap.width * @zoom_x * sign, 0]
      bt_adjust[1] = [self.bitmap.width * @zoom_x * sign * 2, 0]
    elsif @move_y != 0 or @active_data[3][1] != 0
      sign = 1 if @move_y < 0
      bt_adjust[0] = [0, self.bitmap.height * @zoom_y * sign]
      bt_adjust[1] = [0, self.bitmap.height * @zoom_y * sign * 2]
    else
      reset_scroll if @active_data[3][0] == 0 &&  @active_data[3][1] == 0
      bt_adjust = [false,false,0,0]
      return bt_adjust
    end
    bt_adjust[2] = [bt_adjust[0][0], bt_adjust[0][1]]
    return bt_adjust
  end
  #--------------------------------------------------------------------------
  # ● 实行背景滚动数据
  #--------------------------------------------------------------------------
  def back_data_scroll_on
    mirror = $sv_camera.mirror
    mirror = false if !@active_data[4]
    @move_x = @active_data[3][0]
    @move_x *= -1 if mirror
    @move_y = @active_data[3][1]
  end
  #--------------------------------------------------------------------------
  # ● 实行保持背景数据
  #--------------------------------------------------------------------------
  def set_remain_back_data
    return back_data_scroll_on if @move_x != 0 or @move_y != 0
    create_back(@active_data[8][0])
    @move_x    = @active_data[8][1]
    @move_y    = @active_data[8][2]
    @scroll_x  = @active_data[8][3]
    @scroll_y  = @active_data[8][4]
  end  
  #--------------------------------------------------------------------------
  # ● 创建背景图像
  #--------------------------------------------------------------------------
  def create_back(back_name)
    return if back_name == @back_name or back_name == ""
    self.bitmap = Cache.battleback1(back_name) if @index == 1
    self.bitmap = Cache.battleback2(back_name) if @index == 2
    @back_name = back_name
  end  
  #--------------------------------------------------------------------------
  # ● 创建背景变更修正图像
  #--------------------------------------------------------------------------
  def create_back_adjust
    return if @active_data[9][0] == false
    @active_data[10] = true
    mirror = $sv_camera.mirror
    mirror = false if !@active_data[4]
    @bt_back = []
    @bt_back[0] = Sprite.new(viewport)
    @bt_back[0].bitmap = Cache.battleback1(@active_data[6]) if @index == 1
    @bt_back[0].bitmap = Cache.battleback2(@active_data[6]) if @index == 2
    @bt_back[0].mirror = mirror
    @bt_back[1] = Sprite.new(viewport)
    @bt_back[1].bitmap = Cache.battleback1(@active_data[5]) if @index == 1
    @bt_back[1].bitmap = Cache.battleback2(@active_data[5]) if @index == 2
    @bt_back[1].mirror = mirror
  end
  #--------------------------------------------------------------------------
  # ● 更新背景滚动
  #--------------------------------------------------------------------------
  def update_scroll
    @scroll_x += @move_x
    @scroll_y += @move_y
    @scroll_x = 0 if @scroll_x / 100 >= self.bitmap.width * @zoom_x or @scroll_x / 100 <= -self.bitmap.width * @zoom_x
    @scroll_y = 0 if @scroll_y / 100 >= self.bitmap.height * @zoom_y or @scroll_y / 100 <= -self.bitmap.height * @zoom_y
  end
  #--------------------------------------------------------------------------
  # ● 更新色调变更
  #--------------------------------------------------------------------------
  def update_color
    color_set if $sv_camera.color_set[@index] != nil
    return if @color_data == nil
    @color_data[4] -= 1
    if @color_data[4] == 0 && @color_data[5] != 0
      @color_data[4] = @color_data[5]
      @color_data[5] = 0
      @color_data[6] = [0,0,0,0]
    elsif @color_data[4] == 0
      @remain_color_data = @color_data
      return @color_data = nil
    end  
    for i in 0..3
      @color_data = (@color_data * (@color_data[4] - 1) + @color_data[6]) / @color_data[4]
    end  
    self.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3])
  end
  #--------------------------------------------------------------------------
  # ● 更新坐标
  #--------------------------------------------------------------------------
  def update_position
    self.ox = $sv_camera.x + @base_x - @scroll_x / 100
    self.oy = $sv_camera.y + @base_y - @scroll_y / 100
    self.ox -= $sv_camera.sx / 100 if @shake_on
    self.oy -= $sv_camera.sy / 100 if @shake_on
    self.zoom_x = @zoom_x * $sv_camera.zoom
    self.zoom_y = @zoom_y * $sv_camera.zoom
    self.ox *= $sv_camera.zoom
    self.oy *= $sv_camera.zoom
    self.z = @index * 10
  end
  #--------------------------------------------------------------------------
  # ● 更新背景变更修正图像
  #--------------------------------------------------------------------------
  def update_back_adjust
    @active_data[9][0][0] = 0 if @scroll_x == 0
    @active_data[9][0][1] = 0 if @scroll_y == 0
    @active_data[9][1][0] -= @active_data[9][2][0] if @scroll_x == 0
    @active_data[9][1][1] -= @active_data[9][2][1] if @scroll_y == 0
    for i in 0...@bt_back.size
      @bt_back.x = -self.ox + @active_data[9][0] * $sv_camera.zoom
      @bt_back.y = -self.oy + @active_data[9][1] * $sv_camera.zoom
      @bt_back.zoom_x = self.zoom_x
      @bt_back.zoom_y = self.zoom_y
      @bt_back.z = self.z + 1
      @bt_back.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
    end
    back_data_scroll_on if @active_data[9][0][0] == 0 && @active_data[9][0][1] == 0
    return unless @active_data[9][1][0] == 0 && @active_data[9][1][1] == 0
    bt_back_dispose
    create_back(@active_data[5])
    @active_data[9][0] = false
    next_back_data if @remain && @back_data.size != 1
    @remain = false
  end
  #--------------------------------------------------------------------------
  # ● 色调变更
  #--------------------------------------------------------------------------
  def color_set
    set = $sv_camera.color_set[@index]
    $sv_camera.color_set[@index] = nil
    set[4] = 1 if set[4] == 0
    @remain_color_data = [0,0,0,0] if @remain_color_data == nil
    @color_data = @remain_color_data
    @color_data[4] = set[4]
    @color_data[5] = set[5]
    @color_data[6] = set
  end
  #--------------------------------------------------------------------------
  # ● 背景变更修正的释放
  #--------------------------------------------------------------------------
  def bt_back_dispose
    for i in 0...@bt_back.size do @bt_back.dispose end if @bt_back != nil
    @bt_back = nil
  end  
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    bitmap.dispose if bitmap
    bt_back_dispose
    super
  end
end  
  
#==============================================================================
# ■ Battle_Camera
#------------------------------------------------------------------------------
#  这是一个类来处理相机和战斗的计划。
#==============================================================================
class Battle_Camera
  #--------------------------------------------------------------------------
  # ● 公开实例的变量
  #--------------------------------------------------------------------------
  attr_reader   :sx                 # 摇动X坐标
  attr_reader   :sy                 # 摇动Y坐标
  attr_reader   :max_top            # 上限界坐标
  attr_reader   :max_bottom         # 下限界坐标
  attr_reader   :max_left           # 左限界坐标
  attr_reader   :max_right          # 右限界坐标
  attr_accessor :switches           # 侧视图专用开关
  attr_accessor :color_set          # 色调变更数据
  attr_accessor :wait               # 战斗场景的强制体能
  attr_accessor :win_wait           # 战斗胜利前的体能
  attr_accessor :mirror             # 画面反转标记
  attr_accessor :program_scroll     # 战斗程序 背景的自动滚动
  attr_accessor :program_picture    # 战斗程序 期间图片
  attr_accessor :event              # 公共事件呼叫
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  def initialize
    @switches = []
    @max_data = []
    @color_set = []
    @wait = 0
    @win_wait = false
    @mirror = false
    @event = false
    setup
  end
  #--------------------------------------------------------------------------
  # ● 相机X坐标
  #--------------------------------------------------------------------------
  def x
    return @x / 100
  end
  #--------------------------------------------------------------------------
  # ● 相机Y坐标
  #--------------------------------------------------------------------------
  def y
    return @y / 100
  end
  #--------------------------------------------------------------------------
  # ● 变焦率
  #--------------------------------------------------------------------------
  def zoom
    return @zoom * 0.001
  end
  #--------------------------------------------------------------------------
  # ● 变焦虑的坐标变换
  #--------------------------------------------------------------------------
  def convert
    return @zoom
  end
  #--------------------------------------------------------------------------
  # ● 相机设置
  #--------------------------------------------------------------------------
  def setup
    @x = 0
    @y = 0
    @sx = 0
    @sy = 0
    @zoom = 1000
    @time = 0
    @shake_time = 0
    program_setup
  end
  #--------------------------------------------------------------------------
  # ● 初始化相机
  #--------------------------------------------------------------------------
  def reset
    @switches = []
    @max_data = []
    @color_set = []
    @wait = 0
    @win_wait = false
    @mirror = false
    program_setup(false)
  end  
  #--------------------------------------------------------------------------
  # ● 战斗安装程序
  #--------------------------------------------------------------------------
  def program_setup(check = true)
    @played_program  = []
    @program_switch  = []
    @program_sound   = []
    @program_scroll  = []
    @program_se      = []
    @program_shake   = []
    @program_color   = []
    @program_picture = []
    @program_base = N03::BATTLE_PROGRAM.values.dup
    program_check if check
  end  
  #--------------------------------------------------------------------------
  # ● 战斗的检测程序
  #--------------------------------------------------------------------------
  def program_check
    for data in @program_base
      if program_start?(data) && !@played_program.include?(data)
        @played_program.push(data.dup)
        @program_scroll.push(data.dup)  if data[0] == "scroll"
        @program_picture.push(data.dup) if data[0] == "kpic"
        start_sound(data.dup)           if data[0] == "sound"
        start_program_switch(data.dup)  if data[0] == "switch"
        start_program_se(data.dup)      if data[0] == "keep_se"
        start_program_shake(data.dup)   if data[0] == "keep_sk"
        start_program_color(data.dup)   if data[0] == "keep_c"
      else
        @played_program.delete(data)  if !program_start?(data)
        @program_scroll.delete(data)  if data[0] == "scroll"
        @program_picture.delete(data) if data[0] == "kpic"
        @program_switch.delete(data)  if data[0] == "switch"
        @program_sound.delete(data)   if data[0] == "sound"
        @program_se.delete(data)      if data[0] == "keep_se"
        @program_shake.delete(data)   if data[0] == "keep_sk"
        @program_color.delete(data)   if data[0] == "keep_c"
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 战斗程序开始
  #--------------------------------------------------------------------------
  def program_start?(data)
    start = false
    start = true if $game_switches[data[1].abs] && data[1] > 0
    start = true if @switches[data[1].abs] && data[1] < 0
    return start
  end  
  #--------------------------------------------------------------------------
  # ● 战斗程序 开关操作开始
  #--------------------------------------------------------------------------
  def start_program_switch(data)
    data[4] = data[4] + rand(data[5] + 1)
    data[4] = 1 if data[4] <= 0
    @program_switch.push(data)
  end
  #--------------------------------------------------------------------------
  # ● 更新开关操作
  #--------------------------------------------------------------------------
  def update_program_switch
    for data in @program_switch
      data[4] -= 1
      next @program_switch.delete(data) if data[1] > 0 && !$game_switches[data[1]]
      next @program_switch.delete(data) if data[1] < 0 && !@switches[data[1].abs]
      next if data[4] != 0
      for id in data[2]
        $game_switches[id] = true if id > 0
        @switches[id.abs] = true  if id < 0
      end
      for id in data[3]
        $game_switches[id] = false if id > 0
        @switches[id.abs] = false  if id < 0
      end
      @program_switch.delete(data)
      program_check
    end  
  end
  #--------------------------------------------------------------------------
  # ● 战斗程序 BGM/BGS的开始
  #--------------------------------------------------------------------------
  def start_sound(data)
    @program_sound.push(data)
    name = data[5]
    case data[2]
    when "se"
      Audio.se_play("Audio/SE/" + name, data[4], data[3])
    when "bgm"
      name = RPG::BGM.last.name if data[5] == ""
      Audio.bgm_play("Audio/BGM/" + name, data[4], data[3])
    when "bgs"
      name = RPG::BGS.last.name if data[5] == ""
      Audio.bgs_play("Audio/BGS/" + name, data[4], data[3])
    end
  end
  #--------------------------------------------------------------------------
  # ● 战斗程序 期间SE的开始
  #--------------------------------------------------------------------------
  def start_program_se(data)
    data[3] = [data[2], data[3]]
    data[2] = data[3][0] + rand(data[3][1] + 1)
    @program_se.push(data)
    Audio.se_play("Audio/SE/" + data[7], data[5], data[4]) if data[6]
  end
  #--------------------------------------------------------------------------
  # ● 更新期间SE
  #--------------------------------------------------------------------------
  def update_program_se
    for data in @program_se
      data[2] -= 1
      next @program_se.delete(data) if data[1] > 0 && !$game_switches[data[1]]
      next @program_se.delete(data) if data[1] < 0 && !@switches[data[1].abs]
      next if data[2] != 0
      Audio.se_play("Audio/SE/" + data[7], data[5], data[4])
      data[2] = data[3][0] + rand(data[3][1] + 1)
    end  
  end
  #--------------------------------------------------------------------------
  # ● 战斗程序 开始期间摇动
  #--------------------------------------------------------------------------
  def start_program_shake(data)
    data[3] = [data[2], data[3]]
    data[2] = data[3][0] + rand(data[3][1] + 1)
    @program_shake.push(data)
    shake(data[4], data[5], data[6]) if data[7]
  end
  #--------------------------------------------------------------------------
  # ● 更新期间摇动
  #--------------------------------------------------------------------------
  def update_program_shake
    for data in @program_shake
      data[2] -= 1
      next @program_shake.delete(data) if data[1] > 0 && !$game_switches[data[1]]
      next @program_shake.delete(data) if data[1] < 0 && !@switches[data[1].abs]
      next if data[2] != 0
      shake(data[4], data[5], data[6])
      data[2] = data[3][0] + rand(data[3][1] + 1)
    end  
  end
  #--------------------------------------------------------------------------
  # ● 战斗程序 开始期间色调变更
  #--------------------------------------------------------------------------
  def start_program_color(data)
    data[3] = [data[2], data[3]]
    data[2] = data[3][0] + rand(data[3][1] + 1)
    data[7] = true if data[4] == 0 or data[4] == 4
    case data[4]
    when 1   ;data[4] = $game_troop.members
    when 2   ;data[4] = $game_party.battle_members
    when 3,4 ;data[4] = $game_troop.members + $game_party.battle_members
    else ;data[4] = []
    end
    @program_color.push(data)
    return if !data[6]
    for target in data[4] do target.sv.color_set = data[5] end if data[4] != []
    @color_set[1] = data[5] if data[7]
    @color_set[2] = data[5] if data[7]
  end
  #--------------------------------------------------------------------------
  # ● 更新期间色调变更
  #--------------------------------------------------------------------------
  def update_program_color
    for data in @program_color
      data[2] -= 1
      next @program_color.delete(data) if data[1] > 0 && !$game_switches[data[1]]
      next @program_color.delete(data) if data[1] < 0 && !@switches[data[1].abs]
      next if data[2] != 0
      for target in data[4] do target.sv.color_set = data[5] end if data[4] != []
      @color_set[1] = data[5] if data[7]
      @color_set[2] = data[5] if data[7]
      data[2] = data[3][0] + rand(data[3][1] + 1)
    end
  end
  #--------------------------------------------------------------------------
  # ● 实行过渡
  #--------------------------------------------------------------------------
  def perform_transition(data)
    Graphics.transition(data[2], "Graphics/Pictures/" + data[3], data[1])
  end  
  #--------------------------------------------------------------------------
  # ● 取得背景相机的限制值  data=[max_top, max_bottom, max_left, max_right]
  #--------------------------------------------------------------------------
  def setting(index, data)
    @max_data[index - 1] = data
    return if index != 2
    setup
    # 相机的中心坐标
    @center_x     = (Graphics.width / 2 + N03::CAMERA_POSITION[0]) * 100
    @center_y     = (Graphics.height / 2 + N03::CAMERA_POSITION[1]) * 100
    # 上下左右的移动限制距离
    @max_top    = [@max_data[0][5], @max_data[1][5]].min * -1
    @max_bottom = [@max_data[0][1], @max_data[1][1]].min + @max_top
    @max_left   = [@max_data[0][4], @max_data[1][4]].min  * -1
    @max_right  = [@max_data[0][3], @max_data[1][3]].min + @max_left
    exist_data = @max_data[0] if !@max_data[1][6]
    exist_data = @max_data[1] if !@max_data[0][6]
    @max_top    = exist_data[5] * -1        if exist_data != nil
    @max_bottom = exist_data[1] + @max_top  if exist_data != nil
    @max_left   = exist_data[4] * -1        if exist_data != nil
    @max_right  = exist_data[3] + @max_left if exist_data != nil
    @max_top = @max_bottom = @max_left = @max_right = 0 if !@max_data[1][6] && !@max_data[0][6]
    @max_width    = @max_right - @max_left + Graphics.width
    @max_height   = @max_bottom - @max_top + Graphics.height
    # 扩大缩小限制值
    max_zoom_x    = 100 * Graphics.width / @max_width
    max_zoom_y    = 100 * Graphics.height / @max_height
    @max_zoom_out = [max_zoom_x, max_zoom_y].max
  end
  #--------------------------------------------------------------------------
  # ● 相机移动
  #--------------------------------------------------------------------------
  def move(target_x, target_y, zoom, time, screen = true)
    # 调整战斗背景以上尺寸的变焦来减少
    @target_zoom = [zoom * 0.01, @max_zoom_out * 0.01].max
    target_x *= -1 if screen && @mirror
    # 变焦分钟的中心坐标修正
    if screen && @target_zoom != 1
      target_x = target_x + @center_x
      target_y = target_y + @center_y
    end
    adjust_x = @center_x * (@target_zoom - 1) / (@target_zoom ** 2 - @target_zoom)
    adjust_y = @center_y * (@target_zoom - 1) / (@target_zoom ** 2 - @target_zoom)
    adjust_x = 0 if adjust_x.nan?
    adjust_y = 0 if adjust_y.nan?
    adjust_x = @center_x if !screen && adjust_x == 0
    adjust_y = @center_y if !screen && adjust_y == 0
    @target_x = target_x - adjust_x.to_i
    @target_y = target_y - adjust_y.to_i
    @target_zoom = (@target_zoom * 1000).to_i
    @zoom = @zoom.to_i
    limit_test
    # 马上实行当时间是0的场合
    return @time = time.abs if time != 0
    @time = 1
    update
  end
  #--------------------------------------------------------------------------
  # ● 计算限制的坐标
  #--------------------------------------------------------------------------
  def limit_test
    new_width = @max_width * @target_zoom / 1000
    new_height = @max_height * @target_zoom / 1000
    new_max_right = @max_right - (@max_width - new_width)
    new_max_bottom = @max_bottom - (@max_height - new_height)
    # 画面移动目标限制的场合、限制坐标设置
    if @target_x < @max_left * 100
      @target_x = @max_left * 100
    end
    if @target_x > new_max_right * 100
      @target_x = new_max_right * 100
    end
    if @target_y < @max_top * 100
      @target_y = @max_top * 100
    end
    if @target_y > new_max_bottom * 100
      @target_y = new_max_bottom * 100
    end
  end
  #--------------------------------------------------------------------------
  # ● 画面的摇动
  #--------------------------------------------------------------------------
  def shake(power, speed, time)
    @shake_x = power[0] * 100
    @shake_y = power[1] * 100
    @power_time_base = @power_time = speed
    @shake_time = time
    update_shake
  end
  #--------------------------------------------------------------------------
  # ● 更新摇动
  #--------------------------------------------------------------------------
  def update_shake
    @sx = (@sx * (@power_time - 1) + @shake_x) / @power_time
    @sy = (@sy * (@power_time - 1) + @shake_y) / @power_time
    @power_time -= 1
    @shake_time -= 1
    return @sx = @sy = 0 if @shake_time == 0
    return if @power_time != 0
    @power_time = @power_time_base
    @shake_x = @shake_x * -4 / 5
    @shake_y = @shake_y * -4 / 5
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  def update
    update_shake if @shake_time != 0
    update_program
    return if @time == 0
    @x = (@x * (@time - 1) + @target_x) / @time
    @y = (@y * (@time - 1) + @target_y) / @time
    @zoom = (@zoom * (@time - 1) + @target_zoom) / @time
    @time -= 1
  end
  #--------------------------------------------------------------------------
  # ● 更新程序
  #--------------------------------------------------------------------------
  def update_program
    update_program_switch if @program_switch != []
    update_program_se     if @program_se != []
    update_program_shake  if @program_shake != []
    update_program_color  if @program_color != []
  end
end

#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
#  它是一类用于执行该过程的战斗画面。
#==============================================================================
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 更新帧数(基本)
  #--------------------------------------------------------------------------
  alias update_basic_scene_battle_n03 update_basic
  def update_basic
    update_basic_scene_battle_n03
    $sv_camera.update
    $sv_camera.wait = N03::TURN_END_WAIT + 1 if $sv_camera.win_wait
    camera_wait
  end
  #--------------------------------------------------------------------------
  # ● 相机体能
  #--------------------------------------------------------------------------
  def camera_wait
    process_event if $sv_camera.event
    $sv_camera.event = false if $sv_camera.event
    while $sv_camera.wait != 0
      Graphics.update
      Input.update
      update_all_windows
      $game_timer.update
      $game_troop.update
      $sv_camera.update
      @spriteset.update
      update_info_viewport
      update_message_open
      $sv_camera.wait -= 1 if $sv_camera.wait > 0
      $sv_camera.wait = 1 if $sv_camera.wait == 0 && @spriteset.effect?
      BattleManager.victory if $sv_camera.win_wait && $sv_camera.wait == 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 相机体能集
  #--------------------------------------------------------------------------
  def set_camera_wait(time)
    $sv_camera.wait = time
    camera_wait
  end  
  #--------------------------------------------------------------------------
  # ● 实行等待直到效果结束 ★再定义
  #--------------------------------------------------------------------------
  def wait_for_effect
  end
  #--------------------------------------------------------------------------
  # ● 开始回合
  #--------------------------------------------------------------------------
  alias turn_start_scene_battle_n03 turn_start
  def turn_start
    turn_start_scene_battle_n03
    N03.camera(nil, N03::BATTLE_CAMERA["顺序开始后"].dup)
  end
  #--------------------------------------------------------------------------
  # ● 回合结束
  #--------------------------------------------------------------------------
  alias turn_end_scene_battle_n03 turn_end
  def turn_end
    turn_end_scene_battle_n03
    for member in $game_troop.members + $game_party.members
      N03.set_damage(member, member.sv.result_damage[0],member.sv.result_damage[1])
      member.sv.result_damage = [0,0]
      @spriteset.set_damage_pop(member) if member.result.hp_damage != 0 or member.result.mp_damage != 0
    end
    set_camera_wait(N03::TURN_END_WAIT)
    N03.camera(nil, N03::BATTLE_CAMERA["顺序开始前"].dup) if $game_party.inputable?
    @log_window.clear
  end
  #--------------------------------------------------------------------------
  # ● 技能/使用物品 ★再定义
  #--------------------------------------------------------------------------
  def use_item
    item_base = @subject.current_action.item
    if item_base.is_a?(RPG::Skill) && @subject.is_a?(Game_Actor) && $game_party.tank?(@subject.id)
      item = Marshal.load(Marshal.dump(item_base))
      in_tank_actor_id = nil
      $game_party.tank.each do |tank|
        next if tank.nil?
        in_tank_actor_id = tank.actor if $game_party.tank_id[tank.id] == @subject.id
      end
      if !in_tank_actor_id.nil?
        drive = $game_actors[in_tank_actor_id].param(4)
        value = (drive.to_f / RPGBOY::ATK_UP_BY_DRIVE) + 1.00
        item.damage.formula.gsub!(/(\d+)/){"#{$1.to_i * value}"}
      end
    else
      item = item_base
    end
    display_item(item)
    @subject.use_item(item)
    refresh_status
    @targets = @subject.current_action.make_targets.compact
    # 取消将对象转向自己
    #if @targets.size == 0 && @subject.is_a?(Game_Actor) &&
    #  item.is_a?(RPG::Skill) && !RPGBOY::SKILL_IDS_OF_NULL_TARGET_RETURN.include?(item.id)
    #  @targets = [@subject]
    #end
    set_substitute(item)
    for time in item.repeats.times do play_sideview(@targets, item) end
    end_reaction(item)
    display_end_item
  end
  #--------------------------------------------------------------------------
  # ● 技能/显示物品名
  #--------------------------------------------------------------------------
  def display_item(item)
    return @log_window.display_use_item(@subject, item) if N03::BATTLE_LOG
    @log_window.off
    @skill_name_window = Window_Skill_name.new(item.name) unless N03::NO_DISPLAY_SKILL_ID.include?(item.id) && item.is_a?(RPG::Skill)
  end  
  #--------------------------------------------------------------------------
  # ● 技能/显示物品名结束
  #--------------------------------------------------------------------------
  def display_end_item
    @skill_name_window.dispose if @skill_name_window != nil
    @skill_name_window = nil
    set_camera_wait(N03::ACTION_END_WAIT) if @subject.sv.derivation_skill_id == 0
    @log_window.clear if N03::BATTLE_LOG
  end  
  #--------------------------------------------------------------------------
  # ● 反击/魔法反射/代替处理
  #--------------------------------------------------------------------------
  def end_reaction(item)
    end_substitute if @substitute != nil
    set_reflection(item) if @reflection_data != nil
    set_counter_attack if @counter_attacker != nil
  end  
  #--------------------------------------------------------------------------
  # ● 发动反击 ★再定义
  #--------------------------------------------------------------------------
  def invoke_counter_attack(target, item)
    return if @subject.sv.counter_id != 0
    @counter_attacker = [] if @counter_attacker == nil
    return apply_item_effects(apply_substitute(target, item), item) if !target.movable?
    @log_window.add_text(sprintf(Vocab::CounterAttack, target.name)) if N03::BATTLE_LOG
    target.sv.counter_id = target.sv.counter_skill_id
    @counter_attacker.push(target)
  end
  #--------------------------------------------------------------------------
  # ● 发动魔法反射 ★再定义
  #--------------------------------------------------------------------------
  def invoke_magic_reflection(target, item)
    return if @subject.sv.reflection_id != 0
    @log_window.add_text(sprintf(Vocab::MagicReflection, target.name)) if N03::BATTLE_LOG
    target.sv.reflection_id = target.sv.reflection_anime_id
  end
  #--------------------------------------------------------------------------
  # ● 代替应用 ★再定义
  #--------------------------------------------------------------------------
  def apply_substitute(target, item)
    return target if @substitute == nil
    return target if !check_substitute(target, item)
    return @substitute
  end
  #--------------------------------------------------------------------------
  # ● 代替设置
  #--------------------------------------------------------------------------
  def set_substitute(item)
    @substitute = N03.get_enemy_unit(@subject).substitute_battler
    return if @substitute == nil
    s_targets = []
    for i in 0...@targets.size
      next if @targets == @substitute
      next if !check_substitute(@targets, item)
      @log_window.add_text(sprintf(Vocab::Substitute, @substitute.name, @targets.name))
      @targets.sv.start_action(@targets.sv.substitute_receiver_start_action)
      s_targets.push(@targets)
      @targets = @substitute
    end
    return @substitute = nil if s_targets == []
    @substitute.sv.set_target(s_targets)
    @substitute.sv.start_action(@substitute.sv.substitute_start_action)
  end  
  #--------------------------------------------------------------------------
  # ● 结束代替
  #--------------------------------------------------------------------------
  def end_substitute
    for member in @substitute.sv.target_battler
      member.sv.start_action(member.sv.substitute_receiver_end_action)
    end  
    @substitute.sv.start_action(@substitute.sv.substitute_end_action)
    @substitute = nil
  end
  #--------------------------------------------------------------------------
  # ● 反击
  #--------------------------------------------------------------------------
  def set_counter_attack
    pre_subject = @subject
    for attacker in @counter_attacker
      @subject = attacker
      item = $data_skills[attacker.sv.counter_skill_id]
      play_sideview([pre_subject], item)
    end
    # 实行同一个计数器者を考虑到计数器ID的初始化动作后
    for attacker in @counter_attacker do attacker.sv.counter_id = 0 end
    @subject = pre_subject
    @counter_attacker = nil
  end
  #--------------------------------------------------------------------------
  # ● 魔法反射
  #--------------------------------------------------------------------------
  def set_reflection(item)
    @log_window.back_to(1)
    for data in @reflection_data
      @subject.sv.damage_action(@subject, item)
      N03.set_damage_anime_data([@subject], @subject, data)
      apply_item_effects(@subject, item)
      @spriteset.set_damage_pop(@subject)
    end
    set_camera_wait(N03.get_anime_time(@reflection_data[0][0]))
    @reflection_data = nil
  end
  #--------------------------------------------------------------------------
  # ● 实行侧视图动作
  #--------------------------------------------------------------------------
  def play_sideview(targets, item)
    @subject.sv.set_target(targets)
    return if @subject.sv.attack_action(item) == nil
    return if !@subject.movable?
    return if item.scope != 9 && item.scope != 10 && !N03.targets_alive?(targets)
    @subject.sv.start_action(@subject.sv.attack_action(item))
    @subject.sv.unshift_action(@subject.sv.flash_action) if @subject.flash_flg
    @subject.sv.active = true
    @subject.sv.command_action = false
    loop do
      update_basic
      data = @subject.sv.play_data
      @targets = N03.s_targets(@subject) if data[0] == "second_targets_set"
      N03.targets_set(@subject)          if data[0] == "targets_set"
      @immortal = N03.immortaling        if data[0] == "no_collapse" && !N03.dead_attack?(@subject, item)
      @immortal = N03.unimmortaling      if data[0] == "collapse"
      next set_move_anime(item)          if @subject.sv.m_a_data != []
      set_damage(item)                   if @subject.sv.set_damage
      break N03.derived_skill(@subject)  if @subject.sv.derivation_skill_id != 0
      break                              if @subject.sv.action_end or @subject.hidden?
    end
    @immortal = N03.unimmortaling        if @immortal
  end
  #--------------------------------------------------------------------------
  # ● 实行伤害
  #--------------------------------------------------------------------------
  def set_damage(item)
    targets = @targets
    targets = [@subject.sv.individual_targets[0]] if @subject.sv.individual_targets.size != 0
    for target in targets do damage_anime(targets.dup, target, item) end
    @subject.sv.set_damage = false
    @subject.sv.damage_anime_data = []
  end
  #--------------------------------------------------------------------------
  # ● 战斗动画伤害处理
  #--------------------------------------------------------------------------
  def damage_anime(targets, target, item)
    @log_window.back_to(1) if @log_window.line_number == 5
    return if item.scope != 9 && item.scope != 10 && target.dead?
    @miss = false
    invoke_item(target,item)
    if target.result.missed
      target.sv.miss_action(@subject, item)
      return @miss = true
    elsif target.result.evaded or target.sv.counter_id != 0
      target.sv.evasion_action(@subject, item)
      return @miss = true
    elsif target.sv.reflection_id != 0
      N03.set_damage_anime_data(targets, target, [target.sv.reflection_id, false, false, true])
      target.sv.reflection_id = 0
      @reflection_data = [] if @reflection_data == nil
      return @reflection_data.push([N03.get_attack_anime_id(-3, @subject), false, false, true])
    end
    target.sv.damage_action(@subject, item)
    N03.set_damage(@subject, -target.result.hp_drain, -target.result.mp_drain) if target != @subject
    @spriteset.set_damage_pop(target)
    @spriteset.set_damage_pop(@subject) if target != @subject && @subject.result.hp_damage != 0 or @subject.result.mp_damage != 0
    N03.set_damage_anime_data(targets, target, @subject.sv.damage_anime_data) if @subject.sv.damage_anime_data != []
  end
  #--------------------------------------------------------------------------
  # ● 飞行动画处理
  #--------------------------------------------------------------------------
  def set_move_anime(item)
    for data in @subject.sv.m_a_data
      @subject.sv.damage_anime_data = data[4]
      hit_targets = []
      for target in data[1]
        damage_anime(data[1], target, item) if data[0]
        hit_targets.push(target) if !@miss
      end
      @miss = false if !data[3]
      @spriteset.set_hit_animation(@subject, data[2], hit_targets, @miss)
    end
    @subject.sv.set_damage = false
    @subject.sv.m_a_data = []
  end
end

#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
#  这是一个模块管理游戏和数据库对象。
#==============================================================================
module DataManager
  #--------------------------------------------------------------------------
  # ● 创建各种游戏物件 ★再定义
  #--------------------------------------------------------------------------
  def self.create_game_objects
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_timer         = Game_Timer.new
    $game_message       = Game_Message.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    $sv_camera          = Battle_Camera.new
  end
end

#==============================================================================
# ■ BattleManager
#------------------------------------------------------------------------------
#  这是一个模块管理战斗进行。
#==============================================================================
module BattleManager
  #--------------------------------------------------------------------------
  # ● 遇敌时时处理 ★再定义
  #--------------------------------------------------------------------------
  def self.on_encounter
    @preemptive = (rand < rate_preemptive)
    @surprise = (rand < rate_surprise && !@preemptive)
    $sv_camera.mirror = @surprise if N03::BACK_ATTACK
  end
  #--------------------------------------------------------------------------
  # ● 胜利的处理 ★再定义
  #--------------------------------------------------------------------------
  def self.process_victory
    $sv_camera.win_wait = true
  end  
  #--------------------------------------------------------------------------
  # ● 胜利
  #--------------------------------------------------------------------------
  def self.victory
    $sv_camera.win_wait = false
    N03.camera(nil, N03::BATTLE_CAMERA["战斗结束时"].dup)
    for member in $game_party.members do member.sv.start_action(member.sv.win) if member.movable? end
    play_battle_end_me
    replay_bgm_and_bgs
    $game_message.add(sprintf(Vocab::Victory, $game_party.name))
    display_exp
    gain_gold
    gain_drop_items
    gain_exp
    SceneManager.return
    battle_end(0)
    return true
  end
  #--------------------------------------------------------------------------
  # ● 逃走的处理 ★再定义
  #--------------------------------------------------------------------------
  def self.process_escape
    $game_message.add(sprintf(Vocab::EscapeStart, $game_party.name))
    success = @preemptive ? true : (rand < @escape_ratio)
    Sound.play_escape
    if success
      process_abort
      for member in $game_party.members do member.sv.start_action(member.sv.escape) if member.movable? end
    else
      @escape_ratio += 0.1
      $game_message.add('\.' + Vocab::EscapeFailure)
      $game_party.clear_actions
      for member in $game_party.members do member.sv.start_action(member.sv.escape_ng) if member.movable? end
    end
    wait_for_message
    return success
  end
  #--------------------------------------------------------------------------
  # ● 输入下个命令 ★再定义
  #--------------------------------------------------------------------------
  def self.next_command
    begin
      if !actor || !actor.next_command
        $game_party.battle_members[@actor_index].sv.command_action = true unless $game_party.tank?($game_party.battle_members[@actor_index].id)
        @actor_index += 1
        if @actor_index >= $game_party.members.size
          for member in $game_party.battle_members.reverse
            break member.sv.start_action(member.sv.command_a) if member.inputable?
          end
          return false
        end
      end
    end until actor.inputable?
    actor.sv.start_action(actor.sv.command_b) if actor != nil && actor.inputable?
    if pre_actor
      pre_actor.sv.start_action(pre_actor.sv.command_a) if pre_actor != nil && pre_actor.inputable?
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 输入上个命令 ★再定义
  #--------------------------------------------------------------------------
  def self.prior_command
    begin
      if !actor || !actor.prior_command
        $game_party.battle_members[@actor_index].sv.command_action = false
        @actor_index -= 1
        if @actor_index < 0
          for member in $game_party.battle_members
            break member.sv.start_action(member.sv.command_a) if member.inputable?
          end
          return false
        end
      end
    end until actor.inputable?
    actor.make_actions if actor.inputable?
    actor.sv.start_action(actor.sv.command_b) if actor.inputable?
    after_actor.sv.start_action(after_actor.sv.command_a) if after_actor != nil && after_actor.inputable?
    return true
  end
  #--------------------------------------------------------------------------
  # ● 取得上个角色输入的命令
  #--------------------------------------------------------------------------
  def self.pre_actor
    return if @actor_index == 0
    $game_party.members[@actor_index - 1]
  end
  #--------------------------------------------------------------------------
  # ● 取得输入命令后的角色
  #--------------------------------------------------------------------------
  def self.after_actor
    $game_party.members[@actor_index + 1]
  end
  #--------------------------------------------------------------------------
  # ● 战斗行动作角色前追加
  #--------------------------------------------------------------------------
  def self.unshift_action_battlers(battler)
    @action_battlers.unshift(battler)
  end
end  

#==============================================================================
# ■ Game_Battler
#------------------------------------------------------------------------------
#  处理战斗者的类、它是一个类追加角色的方法。
#==============================================================================
class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_reader   :sv                     # 侧视图数据
  attr_accessor :flash_flg              # 闪光标志
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  alias initialize_game_battler_n03 initialize
  def initialize
    initialize_game_battler_n03
    @sv = SideView.new(self)
  end
  #--------------------------------------------------------------------------
  # ● 删除当前的战斗动作
  #--------------------------------------------------------------------------
  alias remove_current_action_game_battler_n03 remove_current_action
  def remove_current_action
    return @sv.derivation_skill_id = 0 if @sv.derivation_skill_id != 0
    remove_current_action_game_battler_n03
  end
  #--------------------------------------------------------------------------
  # ● 回合结束处理
  #--------------------------------------------------------------------------
  alias on_turn_end_game_battler_n03 on_turn_end
  def on_turn_end
    on_turn_end_game_battler_n03
    @sv.add_state = []
    @sv.result_damage = [@result.hp_damage, @result.mp_damage]
  end
  #--------------------------------------------------------------------------
  # ● 比较参数条件 data=[种别, 数值, 判别]
  #--------------------------------------------------------------------------
  def comparison_parameter(data)
    return true if data[0][0] == 0
    kind = data[0]
    num = data[1]
    select = data[2]
    case kind
    when  1 ; par = level
    when  2 ; par = mhp
    when  3 ; par = mmp
    when  4 ; par = hp
    when  5 ; par = mp
    when  6 ; par = tp
    when  7 ; par = atk
    when  8 ; par = self.def
    when  9 ; par = mat
    when 10 ; par = mdf
    when 11 ; par = agi
    when 12 ; par = luk
    end
    if num < 0
      case kind
      when  4 ; num = mhp * num / 100
      when  5 ; num = mmp * num / 100
      when  6 ; num = max_tp * num / 100
      end
      num = num.abs
    end  
    case select
    when  0 ; return par == num
    when  1 ; return par < num
    when  2 ; return par > num
    end
  end
  #--------------------------------------------------------------------------
  # ● 比较装备条件 data=[装备种别, 类型ID]
  #--------------------------------------------------------------------------
  def comparison_equip(data)
    kind = data[0]
    items = weapons if kind == 0
    items = armors  if kind == 1
    for item in items
      for id in data[1]
        return true if id > 0 && item.is_a?(RPG::Weapon) && item == $data_weapons[id.abs]
        return true if id > 0 && item.is_a?(RPG::Armor) && item == $data_armors[id.abs]
        return true if id < 0 && item.is_a?(RPG::Weapon) && item.wtype_id == id.abs
        return true if id < 0 && item.is_a?(RPG::Armor) && item.stype_id == id.abs
      end
    end
    return false
  end
  
end  
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  这是一个类来处理与主角。
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_reader :actor_id                    # 主角ID
  #--------------------------------------------------------------------------
  # ● ID
  #--------------------------------------------------------------------------
  def id
    return @actor_id
  end
  #--------------------------------------------------------------------------
  # ● 是否使用精灵 ★再定义
  #--------------------------------------------------------------------------
  def use_sprite?
    return true
  end
  #--------------------------------------------------------------------------
  # ● 实行伤害效果 ★再定义
  #--------------------------------------------------------------------------
  def perform_damage_effect
    return if !N03::ACTOR_DAMAGE
    $game_troop.screen.start_shake(5, 5, 10)
    @sprite_effect_type = :blink
    Sound.play_actor_damage
  end
  
end

#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  它是一个类来处理敌人的角色。
#==============================================================================
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_reader :enemy_id                    # 敌人ID
  #--------------------------------------------------------------------------
  # ● ID
  #--------------------------------------------------------------------------
  def id
    return @enemy_id
  end
  #--------------------------------------------------------------------------
  # ● 等级
  #--------------------------------------------------------------------------
  def level
    return @sv.level
  end
  #--------------------------------------------------------------------------
  # ● 实行伤害效果 ★再定义
  #--------------------------------------------------------------------------
  def perform_damage_effect
    return if !N03::ENEMY_DAMAGE
    @sprite_effect_type = :blink
    Sound.play_enemy_damage
  end
  #--------------------------------------------------------------------------
  # ● 武器
  #--------------------------------------------------------------------------
  def weapons
    weapon1 = $data_weapons[@sv.enemy_weapon1_id]
    weapon2 = $data_weapons[@sv.enemy_weapon2_id]
    return [weapon1, weapon2]
  end
  #--------------------------------------------------------------------------
  # ● 防具
  #--------------------------------------------------------------------------
  def armors
    return [$data_armors[@sv.enemy_shield_id]]
  end
  #--------------------------------------------------------------------------
  # ● 二刀流的判定
  #--------------------------------------------------------------------------
  def dual_wield?
    return $data_weapons[@sv.enemy_weapon2_id] != nil
  end
  #--------------------------------------------------------------------------
  # ● 角色图像变更
  #--------------------------------------------------------------------------
  def graphics_change(battler_name)
    @battler_name = battler_name
  end
  #--------------------------------------------------------------------------
  # ● 取得通常攻击的动画ID
  #--------------------------------------------------------------------------
  def atk_animation_id1
    return weapons[0].animation_id if weapons[0]
    return weapons[1] ? 0 : 1
  end
  #--------------------------------------------------------------------------
  # ● 取得通常攻击的动画ID (二刀流:武器2)
  #--------------------------------------------------------------------------
  def atk_animation_id2
    return weapons[1] ? weapons[1].animation_id : 0
  end
end

#==============================================================================
# ■ Sprite_Base
#------------------------------------------------------------------------------
#  这是显示你添加处理精灵之类的。
#==============================================================================
class Sprite_Base < Sprite
  #--------------------------------------------------------------------------
  # ● 更新动画的坐标 (有归位)
  #--------------------------------------------------------------------------
  def update_animation_position_horming
    return if @action_end_cancel
    ani_ox_set if @horming
    camera_zoom = $sv_camera.zoom
    camera_zoom = 1 if @move_anime
    kind = 1
    kind = -1 if @ani_mirror && !@anime_no_mirror
    cell_data = @animation.frames[@animation.frame_max - (@ani_duration + @ani_rate - 1) / @ani_rate].cell_data
    for i in 0..15
      @ani_sprites.x = (@ani_ox + cell_data[i, 1] * kind - $sv_camera.x) * camera_zoom if @ani_sprites != nil && cell_data[i, 1] != nil
      @ani_sprites.y = (@ani_oy + cell_data[i, 2] - $sv_camera.y) * camera_zoom if @ani_sprites != nil && cell_data[i, 2] != nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 动画原始的坐标设置
  #--------------------------------------------------------------------------
  def ani_ox_set
    if !SceneManager.scene_is?(Scene_Battle)
      @real_x = x
      @real_y = y
    end
    @ani_ox = @real_x - ox + width / 2
    @ani_oy = @real_y - oy + height / 2
    @ani_oy -= height / 2 if @animation.position == 0
    @ani_oy += height / 2 if @animation.position == 2
  end
  #--------------------------------------------------------------------------
  # ● 更新动画
  #--------------------------------------------------------------------------
  alias update_animation_sprite_base_n03 update_animation
  def update_animation
    update_animation_position_horming if animation? && SceneManager.scene_is?(Scene_Battle) && @animation.position != 3
    update_animation_sprite_base_n03
  end
  #--------------------------------------------------------------------------
  # ● 动画的原点设定 ★再定义
  #--------------------------------------------------------------------------
  def set_animation_origin
    return ani_ox_set 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
  end
  #--------------------------------------------------------------------------
  # ● 动画精灵的设定 ★再定义
  #--------------------------------------------------------------------------
  def animation_set_sprites(frame)
    camera_zoom = 1
    camera_zoom = $sv_camera.zoom if @anime_camera_zoom && @animation.position != 3 && SceneManager.scene_is?(Scene_Battle)
    camera_x = $sv_camera.x
    camera_y = $sv_camera.y
    camera_x = camera_y = 0 if @animation.position == 3 or !SceneManager.scene_is?(Scene_Battle)
    plus_z = 5
    plus_z = 1000 if @animation.position == 3
    plus_z = -17 if @plus_z != nil && @plus_z == false
    plus_z = -self.z + 10 if @plus_z != nil && @plus_z == false && @animation.position == 3
    cell_data = frame.cell_data
    @ani_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 ? @ani_bitmap1 : @ani_bitmap2
      sprite.visible = true
      sprite.src_rect.set(pattern % 5 * 192,
        pattern % 100 / 5 * 192, 192, 192)
      if @ani_mirror && !@anime_no_mirror
        sprite.x = (@ani_ox - cell_data[i, 1] - camera_x) * camera_zoom
        sprite.y = (@ani_oy + cell_data[i, 2] - camera_y) * camera_zoom
        sprite.angle = (360 - cell_data[i, 4])
        sprite.mirror = (cell_data[i, 5] == 0)
      else
        sprite.x = (@ani_ox + cell_data[i, 1] - camera_x) * camera_zoom
        sprite.y = (@ani_oy + cell_data[i, 2] - camera_y) * camera_zoom
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
      end
      sprite.z = self.z + plus_z + i
      sprite.ox = 96
      sprite.oy = 96
      sprite.zoom_x = cell_data[i, 3] * camera_zoom / 100.0
      sprite.zoom_y = cell_data[i, 3] * camera_zoom/ 100.0
      sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
      sprite.blend_type = cell_data[i, 7]
    end
  end
  #--------------------------------------------------------------------------
  # ● 精灵标志
  #--------------------------------------------------------------------------
  def set(battler, horming, camera_zoom, no_mirror)
    @battler = battler
    @next = true
    self.bitmap = Bitmap.new(@battler.sv.cw, @battler.sv.ch)
    self.ox = bitmap.width / 2
    self.oy = bitmap.height
    @horming = horming
    @anime_camera_zoom = camera_zoom
    @anime_no_mirror = no_mirror
    @battler.sv.reset_anime_data
  end  
  #--------------------------------------------------------------------------
  # ● 精灵坐标集
  #--------------------------------------------------------------------------
  def set_position(z, zoom_x, zoom_y, real_x, real_y)
    self.z = z
    self.zoom_x = zoom_x
    self.zoom_y = zoom_y
    @real_x = real_x
    @real_y = real_y
  end
  #--------------------------------------------------------------------------
  # ● 其他精灵的定时处理
  #--------------------------------------------------------------------------
  def other_process_timing(timing)
    se_flag = true
    se_flag = @se_flag if @se_flag != nil
    @battler.sv.timing.push([se_flag, timing.dup])
  end
  #--------------------------------------------------------------------------
  # ● 其他角色的定时处理
  #--------------------------------------------------------------------------
  def target_battler_process_timing(timing)
    for target in @timing_targets
      target.sv.timing.push([false, timing.dup])
    end  
  end
  #--------------------------------------------------------------------------
  # ● SE 闪光的定时处理
  #--------------------------------------------------------------------------
  alias animation_process_timing_sprite_base_n03 animation_process_timing
  def animation_process_timing(timing)
    target_battler_process_timing(timing) if @timing_targets && @timing_targets != []
    return other_process_timing(timing) if @next != nil
    animation_process_timing_sprite_base_n03(timing)
  end
  #--------------------------------------------------------------------------
  # ● 释放动画
  #--------------------------------------------------------------------------
  alias dispose_animation_sprite_base_n03 dispose_animation
  def dispose_animation
    dispose_animation_sprite_base_n03
  end
end


#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  这是显示精灵角色的。
#==============================================================================
class Sprite_Battler < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 公开实例变量
  #--------------------------------------------------------------------------
  attr_accessor   :removing             # 队伍脱离
  #--------------------------------------------------------------------------
  # ● 初始化物件
  #--------------------------------------------------------------------------
  alias initialize_sprite_battler_n03 initialize
  def initialize(viewport, battler = nil)
    initialize_sprite_battler_n03(viewport, battler)
    @real_x = @real_y = 0
    update_bitmap if @battler != nil
  end
  #--------------------------------------------------------------------------
  # ● 开始动画 ★再定义
  #--------------------------------------------------------------------------
  def start_animation(animation, mirror = false)
    return next_animation(animation, mirror) if animation?
    @animation = animation
    if @animation
      @horming = @battler.sv.anime_horming
      @anime_camera_zoom = @battler.sv.anime_camera_zoom
      @anime_no_mirror = @battler.sv.anime_no_mirror
      @timing_targets = @battler.sv.timing_targets
      @plus_z = @battler.sv.anime_plus_z
      @battler.sv.reset_anime_data
      @ani_mirror = mirror
      set_animation_rate
      @ani_duration = @animation.frame_max * @ani_rate + 1
      load_animation_bitmap
      make_animation_sprites
      set_animation_origin
    end
  end
  #--------------------------------------------------------------------------
  # ● 开始下一个动画
  #--------------------------------------------------------------------------
  def next_animation(animation, mirror)
    @next_anime = [] if @next_anime == nil
    @next_anime.push(Sprite_Base.new(viewport))
    @next_anime[@next_anime.size - 1].set(battler, @battler.sv.anime_horming, @battler.sv.anime_camera_zoom, @battler.sv.anime_no_mirror)
    @next_anime[@next_anime.size - 1].set_position(self.z, self.zoom_x, self.zoom_y, @real_x, @real_y)
    @next_anime[@next_anime.size - 1].start_animation(animation, mirror)
  end
  #--------------------------------------------------------------------------
  # ● 创建影图行
  #--------------------------------------------------------------------------
  def create_shadow
    reset_shadow
    return if @battler.sv.shadow == false
    @shadow = Sprite.new(viewport) if @shadow == nil
    @shadow.bitmap = Cache.character(@battler.sv.shadow)
    @shadow.ox = @shadow.bitmap.width / 2
    @shadow.oy = @shadow.bitmap.height / 2
  end
  #--------------------------------------------------------------------------
  # ● 初始化影图形
  #--------------------------------------------------------------------------
  def reset_shadow
    return if @shadow == nil
    @shadow.dispose
    @shadow = nil
  end  
  #--------------------------------------------------------------------------
  # ● 更新传输位图 ★再定义
  #--------------------------------------------------------------------------
  def update_bitmap
    update_bitmap_enemy if !@battler.actor?
    update_bitmap_actor if @battler.actor?
    update_src_rect if @battler != nil
    update_color if @battler != nil
  end
  #--------------------------------------------------------------------------
  # ● 传输位图:敌人
  #--------------------------------------------------------------------------
  def update_bitmap_enemy
    if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue or @battler.hp != @battler_hp
      @battler_name = @battler.battler_name
      @battler_hue = @battler.battler_hue
      @battler_hp = @battler.hp
      @battler_graphic_file_index = @battler.sv.graphic_file_index
      @graphic_mirror_flag = @battler.sv.graphic_mirror_flag
      self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index, @battler_hue)
      if @battler.hp < @battler.mhp / 2
        self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index + " - 副本", @battler_hue)
      end
      @battler.sv.setup(self.bitmap.width, self.bitmap.height, @battler_id != @battler.id)
      create_shadow
      init_visibility
      @battler_id = @battler.id
    end
  end
  #--------------------------------------------------------------------------
  # ● 传输位图:主角
  #--------------------------------------------------------------------------
  def update_bitmap_actor
    if @battler.character_name != @battler_name or @battler.character_index != @battler_index
      @battler_name = @battler.character_name
      @battler_index = @battler.character_index
      @battler_graphic_file_index = @battler.sv.graphic_file_index
      @graphic_mirror_flag = @battler.sv.graphic_mirror_flag
      self.bitmap = Cache.character(@battler_name + @battler_graphic_file_index)
      @battler.sv.setup(self.bitmap.width, self.bitmap.height, @battler_id != @battler.id)
      create_shadow
      init_visibility
      @battler_id = @battler.id
    end
  end
  #--------------------------------------------------------------------------
  # ● 初始化可见状态 ★再定义
  #--------------------------------------------------------------------------
  def init_visibility
    @battler_visible = @battler.alive?
    @battler_visible = true if @battler.sv.state(1) != "敌人战斗不能"
    @battler_visible = false if @battler.hidden?
    @battler.sv.opacity = 0 unless @battler_visible
    self.opacity = 0 unless @battler_visible
    self.opacity = 255 if @battler_visible
    @battler.sv.weapon_visible = @battler_visible
  end
  #--------------------------------------------------------------------------
  # ● 更新传输矩形
  #--------------------------------------------------------------------------
  def update_src_rect
    return if @battler.sv.collapse
    if @battler_graphic_file_index != @battler.sv.graphic_file_index or @battler.hp != @battler_hp
      @battler_graphic_file_index = @battler.sv.graphic_file_index
      @battler_hp = @battler.hp
      self.bitmap = Cache.character(@battler_name + @battler_graphic_file_index) if @battler.actor?
      self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index, @battler_hue) if !@battler.actor?
      if !@battler.actor? && @battler.hp < @battler.mhp / 2
        self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index + " - 副本", @battler_hue)
      end
      @battler.sv.set_graphics(self.bitmap.width, self.bitmap.height)
    end
    anime_off if @battler.sv.anime_off
    self.src_rect.set(@battler.sv.sx, @battler.sv.sy, @battler.sv.cw, @battler.sv.ch)
    self.opacity = @battler.sv.opacity if @battler_visible
    set_process_timing(@battler.sv.timing) if @battler && @battler.sv.timing != []
  end
  #--------------------------------------------------------------------------
  # ● 更新位置 ★再定义
  #--------------------------------------------------------------------------
  def update_position
    @real_x = @battler.sv.x / 100
    @real_y = (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.c - @battler.sv.oy_adjust)/ 100
    self.x = @real_x - $sv_camera.x
    self.y = @real_y - $sv_camera.y
    self.z = @battler.sv.z - @battler.sv.c / 100
    if @battler.sv.h <= 0
      self.x += $sv_camera.sx / 100
      self.y += $sv_camera.sy / 100
    end  
    self.x *= $sv_camera.zoom
    self.y *= $sv_camera.zoom
  end
  #--------------------------------------------------------------------------
  # ● 更新原点 ★再定义
  #--------------------------------------------------------------------------
  def update_origin
    return if !bitmap or @battler.sv.collapse
    self.ox = @battler.sv.ox
    self.oy = @battler.sv.oy
    self.angle = @battler.sv.angle
    self.zoom_x = @battler.sv.zoom_x * $sv_camera.zoom
    self.zoom_y = @battler.sv.zoom_y * $sv_camera.zoom
    self.mirror = @battler.sv.mirror if !@graphic_mirror_flag
    self.mirror = !@battler.sv.mirror if @graphic_mirror_flag
  end
  #--------------------------------------------------------------------------
  # ● 更新影图像
  #--------------------------------------------------------------------------
  def update_shadow
    @shadow.visible = @battler.sv.shadow_visible
    @shadow.opacity = @battler.sv.opacity if @battler.sv.opacity_data[3]
    @shadow.opacity = self.opacity if !@battler.sv.opacity_data[3]
    @shadow.x = @real_x - $sv_camera.x
    @shadow.y = (@battler.sv.y - @battler.sv.c)/ 100 - $sv_camera.y
    @shadow.z = @battler.sv.z - 10
    @shadow.zoom_x = $sv_camera.zoom
    @shadow.zoom_y = $sv_camera.zoom
    @shadow.x += $sv_camera.sx / 100
    @shadow.y += $sv_camera.sy / 100
    @shadow.x *= $sv_camera.zoom
    @shadow.y *= $sv_camera.zoom
    @shadow.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  end
  #--------------------------------------------------------------------------
  # ● 更新气球
  #--------------------------------------------------------------------------
  def update_balloon
    if @battler.sv.balloon_data == [] && @balloon
      @balloon_data = []
      @balloon.dispose
      return @balloon = nil
    elsif @battler.sv.balloon_data != [] && @battler.sv.balloon_data != @balloon_data
      @balloon_data = @battler.sv.balloon_data
      @balloon = Sprite.new(self.viewport)
      @balloon.bitmap = Cache.system("Balloon")
      @balloon.zoom_x = @balloon_data[3]
      @balloon.zoom_y = @balloon_data[3]
      @balloon.ox = 32 if @battler.sv.mirror
      @balloon.oy = 16
      @balloon_count = 0
    end
    return if !@balloon
    @balloon.opacity = self.opacity
    @balloon.x = self.x
    @balloon.y = self.y - @battler.sv.ch * $sv_camera.zoom
    @balloon.z = self.z + 20
    @balloon.src_rect.set(32 + @balloon_count / @balloon_data[2] * 32, @balloon_data[1] * 32, 32, 32) if @balloon_count % @balloon_data[2] == 0
    @balloon.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
    @balloon_count += 1
    @balloon_count = 0 if @balloon_count == @balloon_data[2] * 7
  end
  #--------------------------------------------------------------------------
  # ● 更新色调变更
  #--------------------------------------------------------------------------
  def update_color
    color_set if @battler.sv.color_set != []
    return if @color_data == nil
    @color_data[4] -= 1
    if @color_data[4] == 0 && @color_data[5] != 0
      @color_data[4] = @color_data[5]
      @color_data[5] = 0
      @color_data[6] = [0,0,0,0]
    elsif @color_data[4] == 0
      @remain_color_data = @color_data
      @battler.sv.color = @color_data.dup
      return @color_data = nil
    end  
    for i in 0..3
      @color_data = (@color_data * (@color_data[4] - 1) + @color_data[6]) / @color_data[4]
    end  
    @battler.sv.color = @color_data.dup
    self.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3])
  end
  #--------------------------------------------------------------------------
  # ● 更新残像
  #--------------------------------------------------------------------------
  def update_mirage
    if @battler.sv.mirage == [] && @mirages
      @mirage_data = []
      for mirage in @mirages do mirage.dispose end
      return @mirages = nil
    elsif @battler.sv.mirage != [] && @battler.sv.mirage != @mirage_data
      @mirage_data = @battler.sv.mirage
      @mirages = []
      for i in 0...@mirage_data[1] do @mirages = Sprite.new(self.viewport) end
      @mirage_count = 0
    end
    return if !@mirages
    @mirage_count += 1
    @mirage_count = 0 if @mirage_count == @mirage_data[2] * @mirages.size
    for i in 0...@mirages.size
      mirage_body(@mirages, @mirage_data[4]) if @mirage_count == 1 + i * @mirage_data[2]
    end
  end
  #--------------------------------------------------------------------------
  # ● 残像本体
  #--------------------------------------------------------------------------
  def mirage_body(body, opacity)
    body.bitmap = self.bitmap.dup
    body.x = self.x
    body.y = self.y
    body.ox = self.ox
    body.oy = self.oy
    body.z = self.z - 20
    body.mirror = self.mirror
    body.angle = self.angle
    body.opacity = opacity * self.opacity / 255
    body.zoom_x = self.zoom_x
    body.zoom_y = self.zoom_y   
    body.src_rect.set(@battler.sv.sx, @battler.sv.sy, @battler.sv.cw, @battler.sv.ch)
    body.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  end   
  #--------------------------------------------------------------------------
  # ● 更新下一个动画
  #--------------------------------------------------------------------------
  def update_next_anime
    return if !@next_anime
    for anime in @next_anime
      anime.update
      anime.set_position(self.z, self.zoom_x, self.zoom_y, @real_x, @real_y) if @horming
      anime.dispose if !anime.animation?
      @next_anime.delete(anime) if !anime.animation?
    end  
  end
  #--------------------------------------------------------------------------
  # ● 更新帧数
  #--------------------------------------------------------------------------
  alias update_sprite_battler_n03 update
  def update
    @battler.sv.update if @battler
    update_sprite_battler_n03
    update_next_anime
    update_shadow  if @battler && @shadow
    update_mirage  if @battler
    update_balloon if @battler
    #p [@battler != nil,@removing,@battler.sv.change_up] if @battler# && @removing && @battler.sv.change_up
    update_remove if @battler && @removing && @battler.sv.change_up
  end
  #--------------------------------------------------------------------------
  # ● 战斗动画消除
  #--------------------------------------------------------------------------
  def anime_off
    @battler.sv.anime_off = false
    dispose_animation
    for anime in @next_anime do anime.dispose_animation end if @next_anime
  end
  #--------------------------------------------------------------------------
  # ● 角色替换
  #--------------------------------------------------------------------------
  def remove
    @battler.sv.start_action(@battler.sv.remove_action)
    $sv_camera.wait = 40
    @battler.sv.add_action("eval('set_change')")
    @removing = true
  end
  #--------------------------------------------------------------------------
  # ● 更新角色替换
  #--------------------------------------------------------------------------
  def update_remove
    @battler.sv.change_up = false
    @removing = false
    @battler = nil
  end  
  #--------------------------------------------------------------------------
  # ● 加入角色
  #--------------------------------------------------------------------------
  def join(join_battler)
    $sv_camera.wait = 30
    @battler = join_battler
    @battler_name = @battler.character_name
    @battler_index = @battler.character_index
    @battler_graphic_file_index = @battler.sv.graphic_file_index
    self.bitmap = Cache.character(@battler_name)
    @battler.sv.setup(self.bitmap.width, self.bitmap.height, true)
    create_shadow
    init_visibility
  end
  #--------------------------------------------------------------------------
  # ● 通常的设定返回 ★再定义
  #--------------------------------------------------------------------------
  def revert_to_normal
    self.blend_type = 0
    self.opacity = 255
  end
  #--------------------------------------------------------------------------
  # ● 更新战斗不能效果
  #--------------------------------------------------------------------------
  alias update_collapse_sprite_battler_n03 update_collapse
  def update_collapse
    return if @battler.sv.state(1) != "敌人战斗不能"
    update_collapse_sprite_battler_n03
    @battler.sv.weapon_visible = false
  end
  #--------------------------------------------------------------------------
  # ● 更新Boss战斗不能效果 ★再定义
  #--------------------------------------------------------------------------
  def update_boss_collapse
    @effect_duration = @battler.sv.ch if @effect_duration >= @battler.sv.ch
    alpha = @effect_duration * 120 / @battler.sv.ch
    self.ox = @battler.sv.cw / 2 + @effect_duration % 2 * 4 - 2
    self.blend_type = 1
    self.color.set(255, 255, 255, 255 - alpha)
    self.opacity = alpha
    self.src_rect.y -= 1
    Sound.play_boss_collapse2 if @effect_duration % 20 == 19
  end
  #--------------------------------------------------------------------------
  # ● 另个精灵的定时处理
  #--------------------------------------------------------------------------
  def set_process_timing(timing_data)
    for data in timing_data
      set_timing(data[0],data[1])
    end
    @battler.sv.timing = []
  end
  #--------------------------------------------------------------------------
  # ● 定时的处理
  #--------------------------------------------------------------------------
  def set_timing(se_flag, data)
    @ani_rate = 4
    data.se.play if se_flag
    case data.flash_scope
    when 1 ;self.flash(data.flash_color, data.flash_duration * @ani_rate)
    when 2 ;viewport.flash(data.flash_color, data.flash_duration * @ani_rate) if viewport
    when 3 ;self.flash(nil, data.flash_duration * @ani_rate)
    end
  end
  #--------------------------------------------------------------------------
  # ● 色调变更
  #--------------------------------------------------------------------------
  def color_set
    set = @battler.sv.color_set
    @battler.sv.color_set= []
    set[4] = 1 if set[4] == 0
    @remain_color_data = [0,0,0,0] if @remain_color_data == nil
    @color_data = @remain_color_data
    @color_data[4] = set[4]
    @color_data[5] = set[5]
    @color_data[6] = set
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias dispose_sprite_battler_n03 dispose
  def dispose
    dispose_sprite_battler_n03
    @shadow.dispose if @shadow != nil
    @balloon.dispose if @balloon != nil
    for mirage in @mirages do mirage.dispose end if @mirages != nil
    for anime in @next_anime do anime.dispose end if @next_anime
  end
end


#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
#  这是一个类结合了精灵的战斗画面。
#==============================================================================
class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ● 战斗背景(地)创建精灵 ★再定义
  #--------------------------------------------------------------------------
  def create_battleback1
    @back1_sprite = Sprite_Battle_Back.new(@viewport1, 1, battleback1_name)
    @back1_sprite.set_graphics(battleback1_bitmap) if battleback1_name != nil
    @back1_sprite.z = 0
  end
  #--------------------------------------------------------------------------
  # ● 战斗背景(壁)创建精灵 ★再定义
  #--------------------------------------------------------------------------
  def create_battleback2
    @back2_sprite = Sprite_Battle_Back.new(@viewport1, 2, battleback2_name)
    @back2_sprite.set_graphics(battleback2_bitmap) if battleback2_name != nil
    @back2_sprite.z = 1
  end
  #--------------------------------------------------------------------------
  # ● 创建角色精灵 ★再定义
  #--------------------------------------------------------------------------
  def create_actors
    @actor_sprites = []
    for i in 0...$game_party.max_battle_members
      @actor_sprites = Sprite_Battler.new(@viewport1, $game_party.members)
    end
    @effect_sprites = Spriteset_Sideview.new(@viewport1)
  end
  #--------------------------------------------------------------------------
  # ● 更新角色精灵 ★再定义
  #--------------------------------------------------------------------------
  def update_actors
    @actor_sprites.each_with_index do |sprite, i|
      sprite_join($game_party.members, sprite) if sprite.battler == nil && sprite.battler != $game_party.members
      sprite.remove if sprite.battler != nil && !sprite.removing && sprite.battler != $game_party.members
      sprite.update
    end
    @effect_sprites.update
    update_program
  end
  #--------------------------------------------------------------------------
  # ● 加入精灵成员
  #--------------------------------------------------------------------------
  def sprite_join(member, sprite)
    for sp in @actor_sprites
      sp.update_remove if member == sp.battler && !sp.battler.sv.change_up
    end
    sprite.join(member)
  end
  #--------------------------------------------------------------------------
  # ● 更新战斗程序
  #--------------------------------------------------------------------------
  def update_program
    return if $sv_camera.program_scroll == []
    for data in  $sv_camera.program_scroll
      @back1_sprite.start_back_data(data) if data[2] == 1
      @back2_sprite.start_back_data(data) if data[2] == 2
    end
    $sv_camera.program_scroll = []
  end
  #--------------------------------------------------------------------------
  # ● 实行打击时的战斗动画
  #--------------------------------------------------------------------------
  def set_hit_animation(battler, weapon_index, hit_targets, miss)
    @effect_sprites.set_hit_animation(battler, weapon_index, hit_targets, miss)
  end
  #--------------------------------------------------------------------------
  # ● 伤害POP
  #--------------------------------------------------------------------------
  def set_damage_pop(target)
    @effect_sprites.set_damage_pop(target)
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  alias dispose_spriteset_battle_n03 dispose
  def dispose
    dispose_spriteset_battle_n03
    @effect_sprites.dispose
  end
end

#==============================================================================
# ■ Window_BattleLog
#------------------------------------------------------------------------------
#  进行战斗的实况显示窗口。
#==============================================================================
class Window_BattleLog < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 等待 ★再定义
  #--------------------------------------------------------------------------
  def wait
  end
  #--------------------------------------------------------------------------
  # ● 等待和清除 ★再定义
  #--------------------------------------------------------------------------
  def wait_and_clear
    $sv_camera.wait = 10
  end
  #--------------------------------------------------------------------------
  # ● 显示动作结果 ★再定义
  #--------------------------------------------------------------------------
  def display_action_results(target, item)
    if target.result.used
      last_line_number = line_number
      display_critical(target, item)
      display_damage(target, item)
      display_affected_status(target, item)
      display_failure(target, item)
    end
    off if !N03::BATTLE_LOG
  end
  #--------------------------------------------------------------------------
  # ● 隐藏窗口
  #--------------------------------------------------------------------------
  def off
    @back_sprite.visible = self.visible = false
  end
end
#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  这是一个事件命令的解释器。
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 开关的操作
  #--------------------------------------------------------------------------
  alias command_121_game_interpreter_n03 command_121
  def command_121
    command_121_game_interpreter_n03
    $sv_camera.program_check
  end
end

SideViewバトラー設定
#==============================================================================
# ■ SideView 战斗者设定 Ver100
#------------------------------------------------------------------------------
#   将动作设定中制成的动作与战斗者绑定。
#   进行战斗者相关的设定
#==============================================================================
class SideView
  #--------------------------------------------------------------------------
  # ● 战斗者动画的横/纵元件数 = [左右, 上下]。无动画为 [1, 1]
  #--------------------------------------------------------------------------
  def max_pattern
    # 根据战斗者 id 分歧
    case id
    when  1 # 1 号角色
      return [ 3, 4]
    when -399,-398 #
      return [ 3, 4]
    when -80 #
      return [ 4, 4]
    when -115 #
      return [ 6, 4]
    when -125 #
      return [ 5, 4]
#小七新增
    when -151
      return [ 4, 4]
    when -154
      return [ 3, 4]
    when -155 #
      return [ 6, 4]
    when -156 #
      return [ 6, 4]
    when -157 #
      return [ 6, 4]
    when -159 #
      return [ 3, 4]
    when -160
      return [ 3, 4]
    when -163
      return [ 3, 4]
    when -165
      return [ 11, 4]
    when -167
      return [ 12, 4]
    when -169
      return [ 28, 4]
    when -171
      return [ 12, 4]
    when -173
      return [ 12, 4]
    when -177 #
      return [ 6, 4]
    when -179 #
      return [ 6, 4]

      
    else # 上面的 ID 之外的统一设定
      return [ 3, 4] if id > 0 # 所有角色(ID 为正)
      return [ 1, 1] if id < 0 # 所有敌人(ID 为负)
    end
    # 之后的设定中,有根据 id 来分歧的话,请参考上面的描述。
  end
  #--------------------------------------------------------------------------
  # ● 影子的图片文件名  图像请放入 Characters 文件夹中。 false 为没有影子。
  #--------------------------------------------------------------------------
  def shadow
    return "shadow01" if id > 0 # 所有角色
    return false      if id < 0 # 所有敌人
  end
  #--------------------------------------------------------------------------
  # ● 战斗者图像翻转设定 初始状态时战斗者图像是否翻转。
  #--------------------------------------------------------------------------
#  def graphic_mirror_flag
#    return false if id > 0 # 所有角色
#    return true  if id < 0 # 所有敌人
#  end
  #--------------------------------------------------------------------------
  # ● 战斗者图像固定 战斗者动画设定的索引一定为 "" 的话设为 true
  #--------------------------------------------------------------------------
#  def graphic_fix
#    return false if id > 0 # 所有角色
#    return true  if id < 0 # 所有敌人
#    return false  if id < 0 # 所有敌人
#end
  #--------------------------------------------------------------------------
  # ● 角色图像反转设定 初期角色状态图像,如果反转就true
  #--------------------------------------------------------------------------
  def graphic_mirror_flag
    return false if id > 0 # 全体主角
    return false if id == -400
    return false if id == -399
    return false if id == -398
    return true  if id < 0 # 全体敌人

  end
  #--------------------------------------------------------------------------
  # ● 角色图像固定参照 角色动画设定的指数如果始终参考""就true
  #--------------------------------------------------------------------------
  def graphic_fix
    return false if id > 0 # 全体主角
#    return false if id == -2 #把2号敌人给修改成行走图了
    return true if id < 0 # 全体敌人
  end

  #--------------------------------------------------------------------------
  # ● 通常待机
  #--------------------------------------------------------------------------
  def normal
    return "通常战车待機"   if $game_party.tank?(id)
    return "通常待機"   if !$game_party.tank?(id)# 除了战车的角色
    return "待機固定WT" if id < 0 # 所有敌人
    # 不一定要设置成全动作,只有动作也是可以的。
  end
  #--------------------------------------------------------------------------
  # ● 危机待机  HP 在 1/4 以下时的待机动作
  #--------------------------------------------------------------------------
  def pinch
    return "战车ピンチ待機"   if $game_party.tank?(id)# 战车角色
    return "ピンチ待機"   if !$game_party.tank?(id)# 除了战车的角色
  end
  #--------------------------------------------------------------------------
  # ● 状态动作  多个状态重复时,显示优先度高的状态优先显示。
  #--------------------------------------------------------------------------
  def state(state_id)
    # 根据状态 ID 分歧
    case state_id
    when 1
      return "戦闘不能"     if id > 0 # 所有角色
      return "敌人战斗不能"   if id < 0 # 所有敌人
    when 2
      return "毒待機" if !$game_party.tank?(id)
      return "战车毒待機" if $game_party.tank?(id)
    when 6
      return "睡眠待機"
    when 3,4,5,7,8,75
      return "汎用状態異常待機"
    when 9
      return "防御待機" if !$game_party.tank?(id)
      return "战车防御待機" if $game_party.tank?(id)
    when 81
      return "超级防御待機"
    when 0
      return "オオカミ変身"
    end
  end
  #--------------------------------------------------------------------------
  # ● 输入命令后的动作
  #--------------------------------------------------------------------------
  def command
    # 根据选择的技能 ID 分歧
    case skill_id
    when 2
      return "コマンド後防御"
    end
    # 根据选择的技能类型指定
    case skill_type
    when 1 # 特技
      return "战车コマンド後特技" if $game_party.tank?(id)# 战车角色
      return "コマンド後特技" if !$game_party.tank?(id) # 所有角色
    when 2 # 魔法
      return "战车コマンド後魔法" if $game_party.tank?(id)# 战车角色
      return "コマンド後魔法" if !$game_party.tank?(id)# 所有角色
    end
  end
  #--------------------------------------------------------------------------
  # ● 战斗开始动作
  #--------------------------------------------------------------------------
  def first_action
    return "戦闘開始战车味方" if $game_party.tank?(id)# 战车角色
    return "戦闘開始味方" if !$game_party.tank?(id) # 所有角色
    return "待機固定WT"   if id < 0 # 所有敌人
  end
  #--------------------------------------------------------------------------
  # ● 胜利动作
  #--------------------------------------------------------------------------
  def win
    return "战斗胜利"
=begin   
    case id
    when  2,7,10 # 2号、7号、10号角色
      return "勝利ポーズバク転"
    else # 除此之外
      return "勝利ポーズ振り"
    end
=end   
  end
  #--------------------------------------------------------------------------
  # ● 战斗退场动作  队伍成员变动时执行的退场动作
  #--------------------------------------------------------------------------
  def remove_action
    return "战车味方退場" if $game_party.tank?(id)# 战车角色
    return "味方退場" if !$game_party.tank?(id) # 非战车角色
  end
  #--------------------------------------------------------------------------
  # ● 逃跑动作
  #--------------------------------------------------------------------------
  def escape
    return "战车逃走" if $game_party.tank?(id)# 战车角色
    return "逃走" if !$game_party.tank?(id) # 非战车角色
    return "敵逃走" if id < 0 # 所有敌人
  end
  #--------------------------------------------------------------------------
  # ● 逃跑失败动作
  #--------------------------------------------------------------------------
  def escape_ng
    return "战车逃走失敗" if $game_party.tank?(id)# 战车角色
    return "逃走失敗" if !$game_party.tank?(id) # 非战车角色
  end
    #--------------------------------------------------------------------------
  # ● 逃跑动作2
  #--------------------------------------------------------------------------
#  def escape_a
#    return "战车逃走" if $game_party.tank?(id)# 战车角色
#    return "逃走" if !$game_party.tank?(id) # 非战车角色
#    return "敵逃走" if id < 0 # 所有敌人
#  end
  #--------------------------------------------------------------------------
  # ● 逃跑失败动作2
  #--------------------------------------------------------------------------
#  def escape_a_ng
#    return "战车逃走失敗" if $game_party.tank?(id)# 战车角色
#    return "逃走失敗" if !$game_party.tank?(id) # 非战车角色
#  end
  #--------------------------------------------------------------------------
  # ● 开始输入命令动作
  #--------------------------------------------------------------------------
  def command_b
    return "战车コマンド入力" if $game_party.tank?(id)# 战车角色
    return "コマンド入力" if !$game_party.tank?(id) # 非战车角色
  end
  #--------------------------------------------------------------------------
  # ● 输入命令结束动作
  #--------------------------------------------------------------------------
  def command_a
    return "战车コマンド入力終了" if $game_party.tank?(id)# 战车角色
    return "コマンド入力終了" if !$game_party.tank?(id)# 非战车角色
  end
  #--------------------------------------------------------------------------
  # ● 受伤动作
  #--------------------------------------------------------------------------
  def damage(attacker)
    # 致命一击时
    if critical?
      return "被ダメージ大" if !$game_party.tank?(id)
      return "战车被ダメージ大" if $game_party.tank?(id)
    # 回复时
    elsif recovery?
      # 只有 return 表示没有动作
      return
    end
    # 根据技能 ID 分歧
    case damage_skill_id
    when 1 # 1 号技能
      return "被ダメージ" if !$game_party.tank?(id)
      return "战车被ダメージ" if $game_party.tank?(id)
    when 136 # 特定的技能不需要损伤动画时,在此以 return 表示
      return
    end
    # 根据道具 ID 指定(回复的动作已经指定完毕)
    case damage_item_id
    when 1 # 1 号道具
      return
    else
      # 除了上述道具之外
      if damage_item_id != 0
        return
      end
    end
    # 受伤为 0 时(强化、弱化魔法/防御/敌人逃跑等)
    if damage_zero?
      return
    end
    # 不符合上述设定时
    return "被ダメージ" if !$game_party.tank?(id)
    return "战车被ダメージ" if $game_party.tank?(id)
  end
  #--------------------------------------------------------------------------
  # ● 闪避动作  可以做出和受伤动作类似的分歧
  #--------------------------------------------------------------------------
  def evasion(attacker)
    return "盾ガード" if shield? # 装备了盾
    return "回避"    if !$game_party.tank?(id)
    return "战车回避" if $game_party.tank?(id)
  end
  #--------------------------------------------------------------------------
  # ● 对方攻击未命中的动作
  # ● 相手の攻撃ミス時の動作  可以做出和受伤动作类似的分歧
  #--------------------------------------------------------------------------
  def miss(attacker)
    return "盾ガード" if shield? # 装备了盾
    return "回避"    if !$game_party.tank?(id)
    return "战车回避" if $game_party.tank?(id)
  end
  #--------------------------------------------------------------------------
  # ● 武器动作  普通攻击的动作由装备的武器指定。
  #             敌人可以通过下方的敌人武器设定来拥有武器。
  #--------------------------------------------------------------------------
  def weapon_action
    # 根据武器 ID 指定
    case weapon_id
    when 0 # 0 号武器(空手)
      return "通常攻撃"
    when 488,701 # 1 号武器
      return "激光枪攻击"
    when 2
      return "弹弓攻击"
    when 124
      return "等离子核聚变弹弓攻击"
    when 126
      return "狰狞怨攻击"
    when 3
      return "弩攻击"
    when 4
      return "手枪攻击"
    when 7
      return "回旋镖"
    when 9,10
      return "长枪攻击"
    when 6
      return "火枪攻击"
    when 11
      return "火焰枪攻击"
    when 16,17
      return "火焰炮攻击"
    when 12,18,19
      return "排炮攻击"
    when 13
      return "激光手枪攻击"
    when 15
      return "声纳枪攻击"
    when 20,97
      return "音波枪攻击"
    when 24,25
      return "火箭炮攻击"
    when 23,103
      return "迫击炮攻击"
    when 26
      return "激光炮A攻击"
    when 27
      return "激光炮B攻击"
    when 28
      return "激光炮C攻击"
    when 29,99
      return "激光炮D攻击"
    when 70,71,73,706
      return "全体手枪攻击"
    when 8,14,21,22
      return  "钢刀攻击"
    when 5
      return  "战斧攻击"
#小七新增---     
    when 100
      return "测试红狼攻击"
    when 98
      return "毁灭激光炮攻击"
    when 125
      return "制空激光炮攻击"
    when 74
      return "测试聚能攻击"
    when 75
      return  "硫酸炮攻击"
    when 79,82,83
      return   "连击凤凰攻击"
      
    end
    # 根据武器类型指定
    case weapon_type
    when 1 # 武器类型为 1
      return "斬り攻撃"
    when 4,5,7,8,9 # 同时指定多个类型
      return "斬り攻撃"
    when 2
      return "拳攻撃"
    when 3
      return "手枪攻撃"
    when 6
      return "弓攻撃"
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 敌人的右手武器  敌人也可以指定装备武器的 ID
  #--------------------------------------------------------------------------
  def enemy_weapon1_id
    case id
    when -1 # 1 号敌人(通过敌人 ID 的相反数进行分歧)
      return 10 # 指定武器 ID。0 为空手。
    else
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # ● 敌人的右手武器   敌人也可以设定第二把武器 ID
  #--------------------------------------------------------------------------
  def enemy_weapon2_id
    return 0
  end
  #--------------------------------------------------------------------------
  # ● 敌人的盾  敌人也可以指定盾的 ID。优先级比左手武器高。
  #--------------------------------------------------------------------------
  def enemy_shield_id
    return 0
  end
  #--------------------------------------------------------------------------
  # ● 指定武器图像
  #--------------------------------------------------------------------------
  # 武器动作的类型设定中选择 [1:独立图像] [2:2003规格] 时
  # 对应的图片在此设定。
  # return "001-Weapon01" ←填入对应的武器图片名。
  #                         武器图片请放入 Characters 文件夹
  # 不想显示特定的武器时,请准备并设定为一张空白图片
  def weapon_graphic(weapon_id, weapon_type)
    # 根据武器 ID 指定
    case weapon_id
    when 1 # 1 号武器的图片文件名
      return ""
    end
    # 根据武器类型指定
    case weapon_type
    when 6 # 类型为 6 的武器的图片文件名
      return "bow01"
    when 3
      return "gun01"
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定盾的图片
  #--------------------------------------------------------------------------
  # 武器动作的类型设定中选择 [1:独立图像] [2:2003规格] ,
  # 并且在武器动作的反手设定中选择了 true 的时候,盾的图片在这里设定。
  #
  # return "001-Shield01" ←填入对应的盾的图片名。
  #                         盾的图片请放入 Characters 文件夹
  def shield_graphic(weapon_id, shield_type)
    # 根据防具 ID 指定
    case shield_id
    when 41 # 41号防具(小圆盾)的图片文件名
      return ""
    end
    # 根据防具类型指定
    case shield_type
    when 5 # 类型为 5 (小型盾)的盾的图片文件名
      return ""
    end
  end

  #--------------------------------------------------------------------------
  # ● 技能动作
  #--------------------------------------------------------------------------
  def skill_action
    # 根据技能 ID 指定
    case skill_id
    when 1 ,733,771# 1 号技能为普通攻击,因此执行武器的动作
      return weapon_action
    when 2 # 2 号技能为防御
      return "防御"
    when 3,4,5,911,918# 3/4/5 号技能为连续攻击
      return weapon_action
    when 6 # 6 号技能为敌人逃跑
      return escape
#    when 7 # 7 号技能为观望
#      return escape_a
   
    when 999
      return "様子見"
    when 128
      return "撞击"
    when 131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,945,946,947
      return "主炮攻击"
    when 203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251
      return "加农炮攻击"
    when 253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284
      return "火花炮攻击"
    when 286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311
      return "远程炮攻击"
    when 348,349,350,351,352,353
      return "武魂炮攻击"
    when 313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,335,336,337,372,373,374,953,954,955
      return "主炮爆射炮攻击"
    when 997
      return "S-E01"
    when 201,354,355,356
      return "萌萌主炮攻击"
    when 552,553
      return "毁灭爆射炮攻击"
    when 555..569
      return "杰克爆射炮攻击"
    when 595,596,597,949,950,951,969,970,971
      return "火花炮攻击"#双子炮
      
    #以下SE
    when 601,602,603,604
      return "SE导弹攻击"
    when 605,606,607,608
      return "SE导弹群攻击"
    when 609,610
      return "SE弹炮攻击"
    when 613,614,615,616,723,835
      return "SE拉卡攻击"
    when 617,618,619,620,710
      return "SE巨炮攻击"
    when 621,622,623,624
      return "SE台风攻击"
    when 625,626,627,628
      return "SE托卢攻击"
    when 645,646,647,648
      return "SE激光炮C攻击"
    when 649,650,651,652
      return "SE音波攻击"
    when 653,362,363,364
      return "SE音波群攻击"
    when 510,511,512,513,629,630,631,632,516,517,518
      return "SE火焰攻击"
    when 637,638,639,640,641,642,643,644
      return "SE火焰攻击1"
    when 633,634,635,636
      return "SE汽弹攻击"
    when 724
      return "S-E01"   
    when 725
      return "S-E02"
    when 726
      return "S-E03"
    when 727
      return "S-E04"
    when 728
      return "S-E05"

   #以下副炮
    when 401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,417,418,419,420,421,422,423,424,425,426,427,428,429,391,392,393,957,958,959,965,966,967
      return "副炮攻击"
    when 431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,708,834,961,962,963
      return "范围副炮攻击"
    when 453,454,455,456
      return "激光副炮攻击"
    when 472,473,474,475
      return "范围激光副炮攻击"
    when 486,487,488,489,657,658,659,660,776,384,385,387,388,389
      return "电气副炮攻击"
    when 499,500,501,502,656,358,359,360
      return "范围电气副炮攻击"
    when 545,546
      return "毁灭风暴攻击"
      
    when 998
      return "怪物激光枪攻击"
#以下怪物技能
    when 822
      return "守护者1攻击"
    when 700
      return "火焰枪G攻击"
    when 701
      return "副炮单G攻击"
    when 702
      return "仿生蜗牛G攻击"
    when 703,833
      return "加农炮G攻击"
    when 738
      return "指挥车G攻击"
    when 705
      return "火焰炮G攻击"
    when 767
      return "波特火焰炮G攻击"
    when 709
      return "巨型炮S-E攻击"
    when 712
      return "机械蚓G攻击"
    when 713
      return "步枪鸟G攻击"
    when 714
      return "酸蚁G攻击"
    when 715
      return "坦克G攻击"
    when 716
      return "暗堡G攻击"
    when 717
      return "章鱼坦克G攻击"
    when 718
      return "怪物弓攻击"
    when 720
      return "战狗G攻击"
    when 721
      return "导弹蛙G攻击"
    when 729
      return "毒气01"
    when 732
      return "激光虫G攻击"
    when 731
      return "毒气弹01G攻击"
    when 730
      return "声纳蛇G攻击"
    when 734,752
      return "激光蚓G攻击"
    when 735
      return "车载炮G攻击"
    when 736
      return "声纳炮G攻击"
    when 737
      return "声纳炮G1攻击"
    when 722
      return "机械蟹G攻击"
    when 739
      return "象G攻击"
    when 740
      return "无坐力炮副炮G攻击"
    when 741
      return "无坐力炮激光G攻击"
    when 742
      return "无坐力炮SEG攻击"
    when 743
      return "毒蜂G攻击"
    when 744
      return "沙漠虎G攻击"
    when 746
      return "霸王花转头G攻击"
    when 748
      return "霸王花咬攻击"
    when 749
      return "甲壳虫战车G攻击"
    when 750
      return "蜈蚣汽弹G攻击"
    when 751
      return "群撞击"
    when 704
      return "自爆G"
    when 753
      return "AT坦克G攻击"
    when 754
      return "AT坦克2G攻击"
    when 755
      return "沙漠虎激光G攻击"
    when 757
      return "沙漠之舟G攻击"
    when 758
      return "沙漠之舟1G攻击"
    when 759
      return "沙漠之舟2G攻击"
    when 760
      return "沙漠之舟3G攻击"
    when 761
      return "沙漠之舟副炮G攻击"
    when 762
      return "沙漠之舟激光1G攻击"
    when 763
      return "沙漠之舟激光2G攻击"
    when 764
      return "沙漠之舟火焰G攻击"
    when 765
      return "反坦克兵G攻击"
    when 766
      return "离子坦克G攻击"
    when 777
      return "离子坦克2G攻击"
    when 768
      return "弗兰克开枪G攻击"
    when 769
      return "弗兰克榴弹G攻击"
    when 770
      return "弗兰克声纳炮G攻击"
    when 772
      return "乐狂开枪G攻击"
    when 773
      return "乐狂吉他G攻击"
    when 774
      return "乐狂口哨G攻击"
    when 775
      return "乐狂导弹G攻击"
    when 778
      return "防御机器激光G攻击"
    when 779
      return "防御机器开枪1G攻击"
    when 780
      return "防御机器开枪2G攻击"
    when 781
      return "防御机器主炮G攻击"
    when 782
      return "防御机器SE攻击"
    when 783
      return "防御机器离子攻击"
    when 784
      return "帕鲁开枪G攻击"
    when 785
      return "帕鲁主炮G攻击"
    when 786
      return "帕鲁SEG攻击"
    when 787
      return "电脑墙开枪1G攻击"
    when 788
      return "电脑墙开枪2G攻击"
    when 789
      return "电脑墙开枪3G攻击"
    when 790
      return "电脑墙开枪4G攻击"
    when 791
      return "电脑墙开枪5G攻击"
    when 792
      return "电脑墙开枪6G攻击"
    when 793
      return "象2G攻击"
    when 794
      return "电脑墙低音波G攻击"
    when 795
      return "电脑墙高音波1G攻击"
    when 796
      return "电脑墙高音波2G攻击"
    when 797
      return "电脑墙开枪7G攻击"
    when 798
      return "电脑墙开枪8G攻击"
    when 799
      return "电脑墙开炮1G攻击"
    when 800
      return "电脑墙开炮2G攻击"
    when 801
      return "电脑墙开炮3G攻击"
    when 802
      return "电脑墙开炮4G攻击"
    when 803
      return "电脑墙开炮5G攻击"
    when 804
      return "电脑墙激光G攻击"
    when 805
      return "机器人激光G攻击"
    when 806
      return "机器人离子G攻击"
    when 807
      return "诺亚1G攻击"
    when 808,839
      return "诺亚2G攻击"
    when 843
      return "诺亚激光单体攻击"
    when 844
      return "诺亚激光单体攻击2"
    when 845
      return "诺亚机枪全体攻击"
    when 846
      return "诺亚机枪全体攻击2"
    when 847
      return "诺亚离子炮攻击2"
    when 829
      return "天空流浪犬机枪全体攻击"
    when 828
      return "天空流浪犬回旋"
    when 827,826,825
      return "天空流浪犬导弹攻击"
    when 854
      return "警备激光攻击"
    when 855,856
      return "警备单体激光攻击"
    when 664
      return "boss喷火攻击"
    when 663
      return "古战车激光攻击"
   
      #以上怪物技能
    when 129
      return "武器投げ"
    when 130
      return "5回攻撃"
    when 131
      return "カットイン攻撃"
    when 132
      return "ムービー攻撃"
    when 133
      return "オオカミ変身"
    when 125,866
      return "咬り攻撃"
    when 706
      return "爪攻击"
    when 124
      return "暗転攻撃"
    when 691
      return "冲击"
    when 136
      return "空中攻撃"
      
      




#小七新增  when=技能id  return=弹道全动作名  不等于动作名!  
  when 0
      return "测试主炮攻击"
  when 821
      return "测试副炮攻击"
  when 0
      return "蓄力打击"
  when 914
      return "盾牌防御"
  when 908
      return "台风手刀攻撃"
  when 913
      return "爆裂拳攻撃"
  when 819
      return "EX装甲装填装置"
  when 820
      return "纳米装置"
  when 811,812,821
      return "战控雷达装置"
  when 934
      return "轨道脉冲炮攻击"
  when 935
      return "超级轨道脉冲炮攻击"
  when 936,937
      return "战车冲撞攻击"
  when 366,367,368,376,377,378
      return "绝对真理"
  when 548,549
      return "毁灭内爆弹"
  when 532,533,534
      return "天空流浪犬导弹攻击"
  when 503,504,505,536,537,538,539,528,529,530,541,542,543
      return "普通双子炮攻击"
  when 575,576,577,587,588,589
      return "雷射激光副炮攻击"
  when 579,580,581,583,584,585,395,396,397,977,978,979
      return  "水母速射炮攻击"
  when 591,592,593
      return "激钢镭射攻击"
  when 380,381,382,938
      return "激钢钻头攻击"
  when 939
      return "激钢蓝钻头攻击"
  when 973,974,975,981,982,983
      return "一发逆转神话攻击"
  when 985,986,987,989,990,991
      return "沙漠地狱火攻击"
  when 993,994,995
      return "炸裂中子弹攻击"
  when 997
      return "碎蜂导弹攻击"

      

#小七新增 怪物技能
  when 822
      return"守护者1攻击"
  when 687
      return"出租战车a截击攻击"
  when 689
      return"出租战车a主炮攻击"
  when 688
      return"出租战车a副炮攻击"
  when 830
      return"毒蜘蛛王攻击a"
  when 831
      return"水怪喷火攻击a"
  when 832,667,668
      return"蜈蚣毒气弹01G攻击"
  when 836
      return"军舰雷龙SE攻击"
  when 837,838
      return"军舰雷龙主炮a攻击"
  when 840
      return"诺亚SE音波群攻击"
  when 841
      return"诺亚SE音波群攻击2"
  when 842
      return"诺亚SE音波单体攻击"
  when 848
      return"诺亚激光板全体攻击"
  when 520,521,522,524,525,526,117,118,119,120,121,122
      return"雷龙爆射炮攻击"
  when 824
      return"雷龙一动不动"
  when 858
      return"阿拉莫·杰克冲撞"
  when 859
      return"杰克全体导弹攻击"
  when 860
      return"杰克瞄准导弹攻击"
  when 861
      return"杰克瞄准二次导弹攻击"
  when 862
      return"杰克激光攻击"
  when 863
      return"杰克全体风暴攻击"
  when 864
      return"杰克单体风暴攻击"
  when 867,868,869
      return"亚当蚁酸攻击"
   when 871
      return   "凤凰回旋"
   when 872,873,874
      return  "凤凰麻痹电击攻击"
  when 875
      return  "凤凰咆哮攻击"
  when 876
      return  "凤凰音波群攻击"
  when 877,878
      return  "凤凰音波多重攻击"
  when 879
      return  "浴火凤凰攻击"
  when 881
      return  "火星水母速射炮a攻击"
  when 882
      return  "火星水母速射炮b攻击"
  when 883
      return  "火星水母速射炮c攻击"
  when 884
      return  "火星水母速射炮d攻击"
  when 885
      return  "火星水母激光a攻击"
  when 886
      return  "火星水母激光b攻击"   
  when 887
      return  "火星水母激光c攻击"  
  when 888
      return  "火星水母激光d攻击"
  when 889
      return   "火星水母音波a攻击"
  when 890
      return   "火星水母音波b攻击"
  when 891
      return   "火星水母音波c攻击"
  when 892
      return   "火星水母音波d攻击"
  when 893
      return   "火星水母离子a攻击"
  when 894
      return   "火星水母离子b攻击"
  when 895
      return   "火星水母离子c攻击"      
  when 896
      return   "火星水母离子d攻击"   
  when 897
      return   "火星水母速射炮连击a攻击"
  when 898
      return   "火星水母速射炮连击b攻击"      
  when 686
      return   "火星水母速射炮连击c攻击"  
  when 685
      return   "火星水母速射炮连击d攻击"
  when 684   
      return   "火星水母速射炮全射攻击"
  when 683
      return    "火星水母激光全射攻击"
  when 682
      return    "火星水母离子全射攻击"
  when 681
      return    "火星水母音波全射攻击"
  when 680,679,678,677
      return    "天道机甲加农炮攻击"
  when 676
      return    "天道机甲音波群攻击"
  when 675,674
      return    "天道机甲音波攻击"
  when 673,672
      return    "天道机甲激光攻击"
  when 671
      return     "天道机甲冰攻击"
  when 670
      return "伪装迷彩开启"
  when 669
      return "伪装迷彩关闭"
  when 666
      return "蜈蚣王群撞击"
  when 665
      return "怪物逃跑"
  when 662
      return "古战车速射炮攻击"
  when 661
      return "古战车激光攻击"
      
      
      end
    # 通过技能名指定(推荐,数据库中修改了技能ID也没有关系)
    case skill_name
    when "背景変更サンプル"
      return "背景変更攻撃"
    when "ピクチャ攻撃サンプル"
      return "ピクチャ攻撃"
    when "古炮"
      return "古炮攻击"
    end
    # 通过技能类型指定
    case skill_type
    when 1 # 特技
      return "汎用スキル"
    when 2 # 魔法
      return "汎用魔法"
    end
    # 除此之外
    return "汎用スキル"
   
  end
  #--------------------------------------------------------------------------
  # ● 道具动作
  #--------------------------------------------------------------------------
  def item_action
    case item_id # 通过道具 ID 指定
    when 1
      return "アイテム使用"
    when 2,3,4,5,6,56,108,110,111,112,113,114
      return "药使用"
    when 12,189,190,191
      return "兴奋剂"
    when 13
      return "外道兴奋剂"
    when 7,10,11
      return "状态恢复"
    when 14
      return "烟雾"
#攻击
    when 20
      return "手雷"
    when 21
      return "导弹"
    when 22
      return "榴弹"
    when 23
      return "迫击炮攻击"
    when 24
      return "弹弓攻击2"
    when 25
      return "药液"
    when 26
      return "火瓶"
    when 27
      return "酸瓶"
    when 193
      return  "杰克瞄准"
#    else  
#      return "アイテム使用"
#    else
#      return "药使用"
#    else
#      return "外道兴奋剂"
    end
  end
  #--------------------------------------------------------------------------
  # ● 反击技能 ID  指定反击使用的技能 ID
  #--------------------------------------------------------------------------
  # ※数据库中设定的攻击次数无效
  def counter_skill_id
    return 1
  end
  #--------------------------------------------------------------------------
  # ● 魔法反射动画 ID  指定魔法反射时的动画 ID
  #--------------------------------------------------------------------------
  def reflection_anime_id
    return 118
  end
  #--------------------------------------------------------------------------
  # ● 替身开始动作
  #--------------------------------------------------------------------------
  def substitute_start_action
    return "身代わり開始"
  end
  #--------------------------------------------------------------------------
  # ● 替身结束动作
  #--------------------------------------------------------------------------
  def substitute_end_action
    return "身代わり終了"
  end
  #--------------------------------------------------------------------------
  # ● 被替身者的动作开始
  #--------------------------------------------------------------------------
  def substitute_receiver_start_action
    return "被身代わり開始"
  end
  #--------------------------------------------------------------------------
  # ● 被替身者的动作结束
  #--------------------------------------------------------------------------
  def substitute_receiver_end_action
    return "被身代わり終了"
  end
  #--------------------------------------------------------------------------
  # ● 敌人等级  用在条件分歧中,不会反映在属性里
  #--------------------------------------------------------------------------
  def level
    case id
    when -1 # 1 号敌人
      return 0
    end
    return 0
  end

end
SideViewアクション設定
#==============================================================================
# ■ SideView 动作設定 Ver100
#------------------------------------------------------------------------------
#  SideView 战斗总体设置、生成动作
#==============================================================================
module N03
#--------------------------------------------------------------------------
# ● 全体设定
#--------------------------------------------------------------------------
  a = 50 ; b = -30 ; c = 50  
  # 角色初始位置y=上下    第一位             第二位           第三位            第四位
  #                    X轴 Y轴 H轴       X轴 Y轴 H轴     X轴 Y轴 H轴  X轴    Y轴 H轴
  #[[440+a,210+b, 0],[470+a,280+b, 0],[500+a,350+b, 0],[415+a,200+b, 0],
  ACTOR_POSITION   = [[400+a,200+b, 0],[430+a,250+b, 0],[470+a,300+b, 0],[500+a,360+b, 0],[475+a,350+b, 0]]
  BUS_POSITION     = [[400+c,190+b, 0],[430+c,255+b, 0],[470+c,320+b, 0],[500+c,385+b, 0],[475+c,350+b, 0]]
  # 行动结束时的等待时间(单位:帧)
  ACTION_END_WAIT = 60
  # 回合结束时的等待时间(单位:帧)
  TURN_END_WAIT = 60
  # 被敌人偷袭时,角色是否左右翻转。是:true;不是:false(下同)
  BACK_ATTACK = false
  # 队友受到伤害时,是否使用默认效果。
  ACTOR_DAMAGE = false
  # 敌方受到伤害时,是否使用默认效果。
  ENEMY_DAMAGE = false
  # 敌方战斗者的 X 坐标、计算旋转、战斗动画是否自动翻转。
  ENEMY_MIRROR = true
  # 用于禁止消失效果处理的,数据库中不死之身的状态 ID
  IMMORTAL_ID = 10

  # 是否显示战斗日志
  # 填入 false 时,会在画面上方显示技能名的窗口
  BATTLE_LOG = true
  # 技能名窗口打开时,将不需要表示的技能 ID 填入数组
  NO_DISPLAY_SKILL_ID = [1,2,6,7]
  # 是否弹出伤害数字
  DAMAGE_POP = true
  # 是否弹出附加状态
  STATE_POP = true
  # 伤害数字图片的文件名(参考System文件夹)
  DAMAGE_PLUS = "damage_num+"
  # 暴击伤害数字图片的文件名(参考System文件夹)
  CRITICAL_DAMAGE_PLUS = "damage_num++"
  # 回复数字图片的文件名(参考System文件夹)
  DAMAGE_MINUS = "damage_num-"
  # MP 伤害数字图片的文件名(参考System文件夹)
  DAMAGE_MP = "damage_mp"
  # TP 伤害数字图片的文件名(参考System文件夹)
  DAMAGE_TP = "damage_tp"
  # 调整伤害数字之间的文字间距
  DAMAGE_ADJUST = -4

  # 调整战斗镜头的焦点 [X轴, Y轴]
  CAMERA_POSITION = [0, 0]

#--------------------------------------------------------------------------
# ● 设置战斗背景 设定背景的坐标调整和放大率
#--------------------------------------------------------------------------
  # 地板背景文件名...设定的地板背景图像文件名。
  #                 "全Battlebacks1"为未设定的Battlebacks1图像的默认值。
  # 墙壁背景文件名...设定的墙壁背景图像文件名。
  #                 "全Battlebacks2"为未设定的Battlebacks2图像的默认值。
  # 坐标调整...[X轴, Y轴]
  # 放大率...[横向, 纵向]
  # 允许震动...在震动动作中是否允许晃动。
  # 触发开关...开始战斗时自动打开的游戏开关 ID。设为负数则打开 SideView 专用开关。
  #           在想要集中管理背景和战斗程序的时候使用。
  #           不需要操作开关的话设为 0

   FLOOR1_DATA = {
# 地板背景文件名                 坐标调整      放大率    允许震动  触发开关
  "Sea_ex01"              => [ [   0, 120], [ 150, 150], false,   -1],
  "全Battlebacks1"        => [ [   0, 120], [ 150, 150],  true,    0],

  }
   FLOOR2_DATA = {
# 墙壁背景文件名                 坐标调整      放大率    允许震动  触发开关
  "Ship_ex"               => [ [   0, 120], [ 150, 150],  true,    0],
  "全Battlebacks2"        => [ [   0, 120], [ 150, 150],  true,    0],


}

#==============================================================================
# ■ 动作
#------------------------------------------------------------------------------
#   战斗者在战斗中的一次行动。组合起来成为全动作
#==============================================================================
# 这里的动作名和全动作名请不要重复。
  ACTION = {

#--------------------------------------------------------------------------
# ● 战斗动画設定
#--------------------------------------------------------------------------
  # 默认的行走套图是一个图片文件中设定了多名角色。
  # 使用行走套图的时候,追加图像请与角色的图像设定对应。
  # 角色与图像一一对应(文件名有 $ 前缀)时没有这个问题。

  # 索引...使用的战斗者图像文件后缀的索引名。
  #        SideView 的战斗者若为己方角色,会以角色行走图的文件名为准。
  #        带上索引后则会以 角色行走图文件名+索引名 的图像文件为准。
  #        例) Actor1 战斗者执行索引为"_1"的动画时,使用的文件名为 Actor1_1
  #        使用行走套图的时候,动画的索引名会为 ""
  #        角色的图像放进 Characters 文件夹,敌人的图像放进 Battlers 文件夹。
  #
  # 纵元...图像文件元件的纵向位置。从上往下分别为 0~3。数量上没有限制。
  #          元件数的设定在战斗者设定中。
  # 横元...动画开始播放的图像文件元件的横向位置。从左往右分别为 0~3。
  #          动画从这一元件开始从左向右播放。元件数量没有限制。
  # 模式... 0:元件固定 1:单向 2:反复 3:单向循环 4:反复循环
  # 速度...动画的更新速度。数字越小,更新越快。
  # Z轴...画面越前方数值越大。通常情况会显示在画面下方。
  # 等待...是否动画播放到最后再展开下一个行动。
  # 影子...是否显示影子的图像
  # 武器...如果要显示武器,天上武器的动作名,否则填入""。
  #        武器可以同时添加任意多个。添加的部分填在数组的后方。

  # 动作名(待机系)      判别      索引   纵元 横元  模式 速度  Z轴  等待 影子 武器
  "归零刷新"        => ["motion",   "",    0,   0,   4,    1,  0,  false, true, "" ],
  "战车刷新"        => ["motion", "_1",    0,   0,   4,    1,  0,  false, false, "" ],  
  "待機"            => ["motion",   "",    1,   0,   4,   12,   0, true, true, "" ],
  "战车待機"        => ["motion",   "_1",  1,   0,   4,   12,   0, false, false, "" ],
  "待機固定WT"      => ["motion",   "",    1,   1,   0,   12,   0, true, true, "" ],
  "战车待機固定WT"  => ["motion",   "_1",  1,   1,   0,   12,   0, true, false, "" ],
  "待機固定"        => ["motion",   "",    1,   1,   0,   12,   0, false, true, "" ],
  "战车待機固定"    => ["motion",   "_1",  1,   1,   0,   12,   0, false, true, "" ],
  "倒れ"            => ["motion",   "_1",  0,   0,   0,   12,   0, true,false, "" ],
  "右向き"          => ["motion",   "",    2,   0,   4,   12,   0, true, true, "" ],
  "盾牌待機固定"    => ["motion",   "",    1,   1,   0,   12,   0, false, true, "盾牌" ],

  # 动作名(移动系)      判别      索引   纵元 横元  模式 速度  Z轴  等待 影子 武器
  "左向き移動"      => ["motion",   "",    1,   0,   4,    6,  10, true, true, "" ],
  "右向き移動"      => ["motion",   "",    2,   0,   4,    6,  10, true, true, "" ],
  "左向战车き移動"  => ["motion",   "_1",  1,   0,   4,    6,  10, true, false, "" ],
  "右向战车き移動"  => ["motion",   "_1",  2,   0,   4,    6,  10, true, false, "" ],
  "战车移动冲撞"    => ["motion",   "_1",  1,   0,   4,    20,  10, true, false, "" ],
  # 动作名(静止系)      判别      索引   纵元 横元  模式 速度  Z轴  等待 影子 武器
  "武器掲げ"         => ["motion",   "",    1,   0,   1,    2, 200,false, true, "掲げ" ],#掲げ

  # 动作名(攻击系)      判别      索引   纵元 横元  模式 速度  Z轴  等待 影子 武器
  "武器振りR"       => ["motion",   "",    1,   0,   1,    2, 200,false, true, "縦振り"],
  "武器振りL"       => ["motion",   "",    1,   0,   1,    2, 200,false, true, "縦振りL"],
  "武器振りLR"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "縦振り","縦振りL"],
  "盾防御"          => ["motion",   "",    1,   0,   1,    2, 200,false, true, "盾"],
  "武器拳突き"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "拳突き" ],
  "武器突き"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "突き" ],
  "弓撃ち"          => ["motion",   "",    1,   0,   1,    2, 200,false, true, "弓"],
  "弹弓待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "弹弓"],
  "等离子核聚变弹弓待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "等离子核聚变弹弓"],
  "弩待机"          => ["motion",   "",    1,   0,   1,    2, 200,false, true, "弩"],
  "手枪待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "手枪"],
  "长枪待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "长枪"],
  "火焰枪待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "火焰枪"],
  "排炮待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "排炮"],
  "来福枪待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "激光手枪"],
  "声纳枪待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "音波枪1"],
  "音波枪待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "音波枪2"],
  "火箭炮待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "火箭炮"],
  "激光枪待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "激光枪"],
  "激光炮待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "激光炮"],
  "狰狞怨待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "狰狞怨"],
  "制空激光炮待机"      => ["motion",   "",    1,   0,   1,    2, 200,false, true, "制空激光炮"],
  "铳撃ち"          => ["motion",   "",    1,   0,   1,    2, 200,false, true, "铳"],
  "盾牌待机1"       => ["motion",   "",    1,   0,   1,    2, 200,false, true, "盾牌"],
  "钢刀待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "钢刀"],
  "战斧待机"        => ["motion",   "",    1,   0,   1,    2, 200,false, true, "战斧"],
#--------------------------------------------------------------------------
# ● 战斗者的移动 敌人的 X 方向移动会自动反向计算
#--------------------------------------------------------------------------
  # 目标...移动至目标坐标的参照对象。数值为正则参照现在位置,数值为负则参照初始位置([0=自身]无法设定为负,因此用 -7 表示)
  #       [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # X轴...对象看到的X坐标
  # Y轴...对象看到的Y坐标
  # H轴...对象看到的H坐标(从地面算起的高度)。设置为 nil 则无视 H轴,只在 XY 方向移动。
  # 速度...每帧移动的像素数。负数表示指定时间,即移动完成耗费的总帧数。
  # 曲线...设为正数则向上,负数则向下弯曲。
  # 跳跃...跳跃的抛物线轨道。[从开始跳跃至顶点的轨道, 从顶点开始直到落地的轨道]
  # 动画...在移动中使用的战斗者动画的动作名。

  # 动作名(系统系)         判别  目标 X轴  Y轴  H轴 速度 曲线    跳跃     动画
  "戦闘前の味方配置"     => ["move",-7, 180,   0,   0,  0,   0, [  0,  0], "左向き移動"],
  "戦闘前の战车味方配置" => ["move",-7, 180,   0,   0,  0,   0, [  0,  0], "左向战车き移動"],
  "退場"                => ["move",-7, 180,   0,   0,  7,   0, [  0,  0], "右向き移動"],
  "退場2"                => ["move",1, -240,   0,   0,  7,   0, [  0,  0], "右向き移動"],
  "战车退場"            => ["move",-7, 180,   0,   0,  7,   0, [  0,  0], "右向战车き移動"],
  "逃走途中"            => ["move",-7,  80,   0,   0,  7,   0, [  0,  0], "右向き移動"],
  "战车逃走途中"        => ["move",-7,  80,   0,   0,  7,   0, [  0,  0], "右向战车き移動"],
  "コマンド入力移動"    => ["move",-7, -20,   0, nil,-10,   0, [  0,  0], "左向き移動"],
  "战车コマンド入力移動"    => ["move",-7, -20,   0, nil,-10,   0, [  0,  0], "左向战车き移動"],
  "ダメージのけぞり"    => ["move", 0,  20,   0, nil,-10,   0, [  0,  0], ""],
  "ダメージのけぞり大"  => ["move", 0,  60,   0, nil,-10,   0, [  0,  0], ""],

  # 动作名(重置系)         判别  目标 X轴  Y轴  H轴 速度 曲线    跳跃     动画
  "座標リセット早"      => ["move",-7,   0,   0,   0,-10,   0, [  0,  0], "右向き移動"],
  "战车座標リセット早"  => ["move",-7,   0,   0,   0,-10,   0, [  0,  0], "左向战车き移動"],
  "座標リセット"        => ["move",-7,   0,   0,   0,-20,   0, [  0,  0], "右向き移動"],
  "战车座標リセット"    => ["move",-7,   0,   0,   0,-20,   0, [  0,  0], "右向战车き移動"],
  "座標リセットカーブ"  => ["move",-7,   0,   0,   0,-20,  -2, [  0,  0], "右向き移動"],
  "座標リセット左向き"  => ["move",-7,   0,   0,   0,-20,   0, [  0,  0], "左向き移動"],
  "战车座標リセット左向き"  => ["move",-7,   0,   0,   0,-20,   0, [  0,  0], "左向战车き移動"],

  # 动作名(自身系)         判别  目标 X轴  Y轴  H轴 速度 曲线    跳跃     动画
  "一歩前移動"          => ["move", 0, -20,   0,   0,-10,   0, [  0,  0], "左向き移動"],
  "战车一歩前移動"      => ["move", 0, -20,   0,   0,-10,   0, [  0,  0], "左向战车き移動"],
  "战车一歩前冲撞"      => ["move", 0, -20,   0,   0, 20,   0, [  0,  0], "战车移动冲撞"],
  "一歩後移動"          => ["move", 0,  20,   0,   0,-10,   0, [  0,  0], "左向き移動"],
  "战车一歩後移動"      => ["move", 0,  20,   0,   0,-10,   0, [  0,  0], "左向战车き移動"],
  "战车闪避"            => ["move", 0,  60,   0,   0, 20,   0, [  0,  0], "左向战车き移動"],
  "一歩前ジャンプ"      => ["move", 0, -30,   0,   0,-10,   0, [ 20,-20], "左向き移動"],
  "一歩後ジャンプ"      => ["move", 0,  30,   0,   0,-10,   0, [ 20,-20], "左向き移動"],
  "战车一歩前ジャンプ"  => ["move", 0, -30,   0,   0,-10,   0, [ 20,-20], "左向战车き移動"],
  "战车对准目标"        => ["move", 1, 300,   0,   0,-20,   0, [  0,  0], "左向战车き移動"],
  "战车一歩後ジャンプ"  => ["move", 0,  30,   0,   0,-10,   0, [ 20,-20], "左向战车き移動"],
  "勝利ジャンプ"        => ["move", 0,  10,   0,   0,-25,   0, [ 30,-30], "待機固定"],
  "勝利ジャンプ武器"    => ["move", 0,   0,   0,   0,-15,   0, [ 20,  0], "武器掲げ"],
  "勝利ジャンプ着地"    => ["move",-7,   0,   0,   0,-10,   0, [  0,  0], "武器振りR"],
  "縦揺れ01"            => ["move", 0,   0,   0,  20, -2,   0, [  0,  0], ""],
  "縦揺れ02"            => ["move", 0,   0,   0, -20, -2,   0, [  0,  0], ""],

  # 动作名(目标系)         判别  目标 X轴  Y轴  H轴 速度 曲线    跳跃     动画
  "敵前移動"            => ["move", 1,  30,   0,   0,-20,   0, [  0,  0], "左向き移動"],
  "敵後移動"            => ["move", 1, -60,   0,   0,-20,   0, [  0,  0], "左向き移動"],
  "敵中移動早"          => ["move", 1,   0,   0,   0,-10,   0, [  0,  0], "左向き移動"],
  "叩き付け前ジャンプ"  => ["move",-1,   0,   0, 100,-20,   0, [ 40,-20], "武器掲げ"],
  "叩き付け"            => ["move",-1,   0,   0,   0,-10,   0, [  0,  0], "武器振りR"],
  "敵前移動2"            => ["move", 1,  30,   0,  0,5,     0, [  0,  0], "左向き移動"],
  "敵前跳动"            => ["move", 5,    0,   0,  0,-50,  25, [ 0, 0], "左向き移動"],
  
#--------------------------------------------------------------------------
# ● 武器动作 战斗者动画以及武器・投掷动画中使用的动作
#--------------------------------------------------------------------------
  # 类型...[0...使用图标]
  #        [1...使用独立图像(图像名设置位于战斗者设定的武器项目。参照目标为 Characters 文件夹)]
  #        [2...动画元件(※2003规格。动画的元件数与战斗者相同。图像名设置位于战斗者设定的武器项目。参照目标为 Characters 文件夹)]
  # 移动...图片移动的距离。[X轴, Y轴]
  # 调整...图片微调的初始坐标。[X轴, Y轴]
  # 始度...动作前的角度。按照逆时针计算,0~360° 。 填入负数则为顺时针。
  # 终度...动作后的角度
  # 原点...图像的原点。[0...中心] [1...左上] [2...右上] [3...左下] [4...右下] [5...和战斗者相同(图像的下半部分)]
  # 翻转...图像是否翻转
  # 放大...[X轴放大率, Y轴放大率]。接受小数。
  # Z轴...图像是否显示在角色前方
  # 反手...盾图像,或者二刀流时显示左手武器。
  #        不使用图标时,盾的图像会按照战斗者设定的盾的项目来实行。
  #
  # 更新...设为-1则与战斗者动画同步更新。要特殊设置,设定为[更新时间间隔, 更新图案数目, 是否循环]
  #
  # 索引...本来会武器图像依据装备的武器(盾)上设定的图像文件名。
  #        在此加上索引后,则会依据 图像文件名+索引名 的图像。
  #        适用于同一武器有多种模式的图像的场合。
  #        例)"縦振り"的索引为"" => 图像文件名为"IconSet"
  #        例)"縦振り2"的索引为"_1" => 图像文件名为"IconSet_1"
  #        如果使用图标,则文件夹为 System 文件夹;如果使用独立画像或动画元件,则文件夹为 Characters 文件夹。
  #
  # 图像...想要无视武器和盾设定的图像文件和索引名,直接指定武器图像时,
  #        在这里填入图像文件名。图像放入 Characters 文件夹。

  # 动作名        判别 类型  移动     调整    始度  终度 原点  翻转   拡大    Z轴   反手   更新   索引    图像
  "縦振り"    => ["wp", 0,[  6, 0],[ -4,-10], -45,  45,  4, false, [1,1], false, false,   -1,   "",    ""],
  "盾"        => ["wp", 0,[  0, 0],[ 12,  0],   0,   0,  4, false, [1,1],  true,  true,   -1,   "",    ""],
  "縦振りL"   => ["wp", 0,[  6, 0],[  0, -8],-135,  45,  4, false, [1,1],  true,  true,   -1,   "",    ""],
  "拳突き"    => ["wp", 0,[-20, 0],[  5,  5], -45, -45,  4, false, [1,1], false, false,   -1,   "",    ""],
  "突き"      => ["wp", 0,[-25, 0],[ 25,-10],  45,  45,  4, false, [1,1], false, false,   -1,   "",    ""],
  "掲げ"      => ["wp", 0,[  6,-4],[ -4,-10],  90, -45,  4, false, [1,1], false, false,   -1,   "",    ""],

  # 2003规格      判别 类型  移动     调整    始度  终度 原点  翻转   拡大    Z轴   反手   更新   索引    图像
  "弓"        => ["wp", 2,[  0, 0],[  0,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    ""],
  "弹弓"      => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗弹弓"],
  "等离子核聚变弹弓"      => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗等离子核聚变弹弓"],
  "弩"        => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗弩"],
  "手枪"      => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗手枪"],
  "长枪"      => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗长枪"],
  "火焰枪"    => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗火焰枪"],
  "排炮"      => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗排炮"],
  "激光手枪"  => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗激光手枪"],
  "音波枪1"  => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗音波枪1"],
  "音波枪2"  => ["wp", 1,[  0, 0],[  -17,  -7],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗音波枪2"],
  "火箭炮"   => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗火箭炮"],
  "激光枪"   => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗激光枪"],
  "激光炮"   => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗激光炮"],
  "狰狞怨"   => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗狰狞怨"],
  "制空激光炮"   => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗制空激光炮"],
  "铳"        => ["wp", 2,[  0, 0],[  0,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    ""],
  "盾牌"     => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",    "战斗盾牌"],
  "钢刀"     => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",   "战斗钢刀"],
  "战斧"     => ["wp", 1,[  0, 0],[  -5,  0],   0,   0,  5, false, [1,1],  true, false,   -1,   "",   "战斗战斧"],
  # 投掷武器用    判别 类型  移动     调整    始度  终度 原点  翻转   拡大    Z轴   反手      更新       索引    图像
  "矢"        => ["wp", 0,[  0, 0],[  0,  0],   0,  45,  0, false, [2,2],  true, false,[2,6,false],   "",    "arrow01"],
  "回転"      => ["wp", 0,[  0, 0],[  0,  0],   0, 360,  0, false, [1,1],  true, false,[1,8, true],   "",    ""],
  "弹"        => ["wp", 0,[  0, 0],[  0,  0],   0,  45,  0, false, [1,1],  true, false,[2,6,false],   "",    "bullet01"],
#--------------------------------------------------------------------------
# ● 投掷武器・道具 能使武器和战斗动画移动。用于飞行道具中。
#--------------------------------------------------------------------------
  # ID...数据库中的动画ID。[要移动的动画 ID,打击时的动画 ID] 0 为不显示动画,-1 为显示武器动画。
  # 始...动画开始移动的位置。设为负数,则即使有多个目标,也只显示一个动画。
  #     [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # 末... 画。
  #     [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # 始调整...微调开始移动的坐标。[X轴, Y轴]。敌人的X轴会自动反向计算。
  # 末调整...微调结束移动的坐标。[X轴, Y轴]。敌人的X轴会自动反向计算。
  # 速度...每帧在X轴上移动的像素数。设为负数则按照时间设定,速度会根据距离而改变。
  # 类型...移动后的处理。[0=消失(未命中时自动变为穿透)] [1=穿透] [2=消失(未命中时也会消失)]
  # 轨道...移动的轨道。[从开始直至顶点的轨道, 从顶点开始直到落地的轨道]
  # Z轴...动画和武器是否显示在角色前方。
  # 等待...是否直到该动作结束后才转到下一个动作。[要移动的动画是否等待, 命中时的动画是否等待]
  # 伤害...是否在目标到达时计算伤害。
  # 追踪...是否对移动的目标追踪。
  # 镜头...动画是否会随着镜头缩放而放大缩小。
  # 循环...移动动画结束时,是否回到动画开始。
  # 禁止翻转...禁止在任何情况下翻转动画。
  # 武器...填入武器的动作名。不需要的话填入""
  
  #弹道使用办法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  
  #装备弹道设定 弹道【动作名】绑定发射弹道动画的【id】
  #之后下个脚本 装备技能的【id】绑定【动作名】
  #之后数据库装备备注绑定对应的技能id【技能[a]】a=对应动画的id
  #武器伤害设定在技能伤害里
  
  
  
  #动作名=用于绑定技能id + 弹道动作名
  #ID[a.b]  a=发射动画的id  - b=打击【爆炸】的动画id
                        
# 动作名               判别     ID     始 末  始调整   末调整  速度 类型  轨道    Z轴       等待        伤害    追踪   镜头   循环 禁止翻转  武器
  "空弹道"         => ["m_a",[ 0, 0] ,-1, -1, [ 0, 0], [ 0, 0], 50,  2, [ 0, 0], true, [ false, false], false,  true,  true, false, false,  ""],
  "矢発射WT"       => ["m_a",[ 0,-1], 0, 1, [ 0, 0], [ 0, 0], 10,  2, [-3,-3], true, [ true, true],  true,  true,  true, false, false,  "矢"],
  "矢発射"         => ["m_a",[ 0,-1], 0, 1, [ 0, 0], [ 0, 0], 10,  2, [-3,-3], true, [false,false],  true,  true,  true, false, false,  "矢"],
  "水鉄砲発射"     => ["m_a",[69,69], 0, 1, [ 0, 0], [ 0, 0], 10,  0, [ 0, 0], true, [ true, true],  true,  true,  true,  true, false,  ""],
  "武器投げ開始"   => ["m_a",[ 0,-1], 0, 1, [ 4,-6], [ 0, 0], 10,  2, [-3,-3], true, [ true,false],  true,  true,  true, false, false,  "回転"],
  "武器投げ戻し"   => ["m_a",[ 0, 0], 1, 0, [ 0, 0], [ 4,-6], 10,  0, [ 3, 3], true, [ true,false],  false,  true,  true, false, false,  "回転"],
  "主炮弹道"       => ["m_a",[112,2] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "加农炮弹道"     => ["m_a",[112,128] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "火花炮弹道"     => ["m_a",[112,2] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "远程炮弹道"     => ["m_a",[112,2] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "武魂炮弹道"     => ["m_a",[130,129] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "主炮爆射炮弹道" => ["m_a",[143,133] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "萌萌主炮弹道"   => ["m_a",[222,223] ,0, 1, [ 0, 0], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
#"S-E01弹道"      => ["m_a",[151,134] ,0, 1, [ 0, 0], [ 0, 0], 7,  0, [-3,3], true, [ true, true], true,  true,  true, false, false,  ""],
  "古炮弹道"       => ["m_a",[113,2] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "副炮弹道"       => ["m_a",[0,92] ,0, 1, [ 0, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "范围副炮弹道"   => ["m_a",[0,92] ,0, 2, [ 0, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "怪物激光枪弹道" => ["m_a",[114,115] ,0, 1, [ 0, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "弹道"           => ["m_a",[0,113] ,-1, -1, [ 0, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   false,  true,  true, false, false,  ""],
#以下为战车SE弹道
  "SE导弹弹道"       => ["m_a",[183,133] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE导弹弹道群"     => ["m_a",[183,133] ,0, 2, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE炮弹弹道"       => ["m_a",[184,2] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE炮弹弹道1"      => ["m_a",[184,128] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE炮弹弹道2"     => ["m_a",[185,133] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE巨炮弹道"       => ["m_a",[113,133] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE托卢弹道"       => ["m_a",[185,194] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, false], false,  true,  true, false, false,  ""],
  "SE台风弹道"       => ["m_a",[170,168] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE台风弹道1"      => ["m_a",[170,129] ,0, 2, [ 0, 0], [ 0, 0], 5,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE群体弹道"       => ["m_a",[0,0] ,0, 2, [ 0, 0], [ 0, 0], 30,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "SE火焰弹道"       => ["m_a",[156,157] ,0, 2, [ -20, 0], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE火焰弹道1"       => ["m_a",[180,195] ,0, 2, [ -20, 0], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "SE火焰弹道2"       => ["m_a",[198,195] ,0, 2, [ 20, -20], [ 0, 0], 5,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
#以下为战车副炮弹道
  "激光弹道"       => ["m_a",[164,115] ,0, 1, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "范围激光弹道"   => ["m_a",[164,115] ,0, 2, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "电气弹道"       => ["m_a",[181,182] ,0, 1, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "范围电气弹道"   => ["m_a",[181,182] ,0, 2, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "毁灭风暴弹道"   => ["m_a",[396,397] ,0, 2, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  #以下人类武器弹道
  "弹弓弹道"       => ["m_a",[146,147] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "弹弓弹道2"       => ["m_a",[146,147] ,0, 1, [ 0, 0], [ 0, 0], 7,  0, [-2,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "等离子核聚变弹弓弹道"       => ["m_a",[146,147] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "等离子核聚变弹弓弹道2"       => ["m_a",[146,147] ,0, 1, [ 0, 0], [ 0, 0], 7,  0, [-2,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "弩弹道"         => ["m_a",[148,147] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "手枪开枪弹道"   => ["m_a",[0,149] ,0, 0, [ 0, 0], [ 0, 0], 0,  0, [0,0], true, [ false, false], false,  true,  true, false, false,  ""],
  "手枪弹道"       => ["m_a",[150,151] ,0, 1, [ -20, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "回旋镖弹道1"    => ["m_a",[154,147] ,0, 1, [ -20, 0], [ 0, 0], 10,  2, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "回旋镖弹道2"    => ["m_a",[154,0] ,1, 0, [ 0, 0], [ 0, 0], 10,  2, [3,0], true, [ true, true], false,  true,  true, false, false,  ""],
  "长枪开枪弹道"   => ["m_a",[0,155] ,0, 0, [ 0, 0], [ 0, 0], 0,  0, [0,0], true, [ false, false], false,  true,  true, false, false,  ""],
  "长枪弹道"       => ["m_a",[150,151] ,0, 2, [ -20, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "火枪弹道"       => ["m_a",[152,153] ,0, 1, [ -20, 0], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "火焰枪弹道"     => ["m_a",[156,157] ,0, 1, [ -20, 0], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "火焰炮弹道"     => ["m_a",[156,157] ,0, 2, [ -20, 0], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "排炮弹道"       => ["m_a",[158,159] ,0, 2, [ -20, 3], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "激光手枪弹道"   => ["m_a",[114,115] ,0, 1, [ -20, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "声纳枪弹道"     => ["m_a",[160,0] ,0, 1, [ -20, 0], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "无动画弹道"     => ["m_a",[0,0] ,0, 1, [ 0, 0], [ 0, 0], 30,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "音波枪弹道"     => ["m_a",[161,0] ,0, 2, [ -20, 0], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "音波枪2弹道"     => ["m_a",[161,0] ,0, 1, [ -20, 0], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "无动画群体弹道" => ["m_a",[0,0] ,0, 2, [ 0, 0], [ 0, 0], 100,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "无动画单体弹道" => ["m_a",[0,0] ,0, 1, [ 0, 0], [ 0, 0], 30,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "火箭炮弹道"     => ["m_a",[162,133] ,0, 1, [ -30, 6], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "迫击炮弹道"     => ["m_a",[163,133] ,0, 2, [ -30, 3], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "激光炮A弹道"    => ["m_a",[164,129] ,0, 1, [ -30, 6], [ 0, 0], 10,  0, [0,0], true, [ true,  true],  true,  true,  true, false, false,  ""],
  "激光炮B弹道"    => ["m_a",[165,0] ,0, 1, [ -30, 6], [ 0, 0], 10,  1, [0,0], true, [ true,  true],  false,  true,  true, false, false,  ""],
  "激光炮B2弹道"   => ["m_a",[0,129] ,0, 2, [ -30, 6], [ 0, 0], 50,  1, [0,0], true, [ true,  true],  true,  true,  true, false, false,  ""],
  "激光炮C弹道"    => ["m_a",[166,129] ,0, 2, [ -30, 6], [ 0, 0], 10,  0, [0,0], true, [ true,  true],   true,  true,  true, false, false,  ""],
  "激光炮D弹道"    => ["m_a",[167,129] ,0, 1, [ -30, 6], [ 0, 0], 13,  0, [0,0], true, [ false,  true],  true,  true,  true, false, false,  ""],
  "狰狞怨弹道"     => ["m_a",[267,129] ,0, 1, [ -30, 6], [ 0, 0], 13,  0, [0,0], true, [ false,  true],  true,  true,  true, false, false,  ""],
  "铳発射WT"       => ["m_a",[ 0,-1], 0, 1, [ 0, 0], [ 0, 0], 20,  2, [ 0, 0], true, [ true, true],  true,  true,  true, false, false,  "弹"],
  "全体枪击"       => ["m_a",[ 0,-1], 0, 2, [ 0, 0], [ 0, 0], 20,  2, [ 0, 0], true, [ true, true],  true,  true,  true, false, false,  "弹"],
  "毁灭激光炮弹道"    => ["m_a",[246,0] ,0, 1, [ -30, 6], [ 0, 0], 10,  1, [0,0], true, [ true,  true],  false,  true,  true, false, false,  ""],
  "毁灭激光炮爆炸弹道"  => ["m_a",[0,247] ,0, 2, [ -30, 6], [ 0, 0], 40,  1, [0,0], true, [ true,  true],  true,  true,  true, false, false,  ""],
  "制空激光炮弹道"    => ["m_a",[246,0] ,0, 1, [ -30, 6], [ 0, 0], 10,  1, [0,0], true, [ true,  true],  false,  true,  true, false, false,  ""],
  "制空激光炮爆炸弹道"  => ["m_a",[0,247] ,0, 2, [ -30, 6], [ 0, 0], 40,  1, [0,0], true, [ true,  true],  true,  true,  true, false, false,  ""],
  "农酸炮弹道"     => ["m_a",[201,202] ,0, 1, [ -30, 6], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  #以下人类道具弹道
  "手雷弹道"       => ["m_a",[171,134] ,0, 1, [ 0, 0], [ 0, 0], 8,  0, [-4,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "导弹弹道"       => ["m_a",[142,141] ,0, 1, [ -32, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "榴弹弹道"     => ["m_a",[174,175] ,0, 1, [ -32, 0], [ 0, 0], 8,  0, [-3,0], true, [ true, true], false,  true,  true, false, false,  ""],
  "火瓶弹道"       => ["m_a",[176,153] ,0, 1, [ -32, 0], [ 0, 0], 8,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "酸瓶弹道"       => ["m_a",[177,157] ,0, 1, [ -32, 0], [ 0, 0], 8,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "药液弹道"       => ["m_a",[178,50] ,0, 1, [ -32, 0], [ 0, 0], 8,  0, [-4,0], true, [ true, true], true,  true,  true, false, false,  ""],
#以下怪物技能
  "火焰枪弹道"     => ["m_a",[156,157] ,0, 1, [ 10, -15], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "怪物副炮小弹道" => ["m_a",[0,302] ,-1, -1, [ 0, 0], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "加农炮G弹道"     => ["m_a",[305,2] ,0, 1, [ 0, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "火焰炮G弹道"     => ["m_a",[156,157] ,0, 1, [ 30, 17], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "波特火焰炮G弹道"     => ["m_a",[322,323] ,0, 1, [ 25, 20], [ 0, 0], 10,  0, [0,0], true, [ false, false], false,  true,  true, false, false,  ""],
  "波特火焰炮2G弹道"     => ["m_a",[322,323] ,0, 1, [ 25, 20], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "巨型炮S-E弹道"   => ["m_a",[162,133] ,0, 1, [ -50, 50], [ 0, 0], 7,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "酸蚁弹道"        => ["m_a",[201,202] ,0, 1, [ 10, -15], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "章鱼炮G弹道"     => ["m_a",[305,2] ,0, 1, [ 64, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "战狗G弹道"     => ["m_a",[305,2] ,0, 1, [ 10, -30], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "S-E01弹道"      => ["m_a",[143,134] ,0, 1, [ 0, 0], [ 0, 0], 8,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "S-E02弹道"      => ["m_a",[143,134] ,0, 2, [ 0, 0], [ 0, 0], 8,  0, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "S-E03弹道"      => ["m_a",[0,161] ,0, 0, [ 0, 0], [ 0, 0], 7,  0, [0,0], true, [ false, false], false,  true,  true, false, false,  ""],
  "S-E03+1弹道"    => ["m_a",[151,134] ,0, 1, [ 0, -80], [ 0, 0], 12,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "S-E04弹道"      => ["m_a",[162,133] ,0, 1, [ -50, 50], [ 0, 0], 7,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "S-E05弹道"      => ["m_a",[162,133] ,0, 1, [ -25, 17], [ 0, 0], 7,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "毒气01弹道"      => ["m_a",[204,207] ,0, 1, [ 0, 0], [ 0, 0], 7,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "毒气弹01弹道"      => ["m_a",[210,207] ,0, 1, [ 48, -10], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "怪物弓弹道"      => ["m_a",[311,2] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "声纳蛇弹道"     => ["m_a",[160,0] ,0, 1, [ 0, -25], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "激光蚓弹道"   => ["m_a",[114,115] ,0, 1, [ 20, -20], [ 0, 0], 17,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "车载炮弹道"      => ["m_a",[184,128] ,0, 1, [ 20, -15], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "音波炮G弹道"     => ["m_a",[161,0] ,0, 2, [ 20, -15], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "音波炮G1弹道"     => ["m_a",[212,0] ,0, 2, [ 20, -15], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "机械蟹S-E弹道"      => ["m_a",[184,134] ,0, 1, [ 0, 0], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "象G弹道"       => ["m_a",[216,214] ,0, 1, [ 50, -18], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "象2G弹道"       => ["m_a",[216,214] ,0, 2, [ 0, -91], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "无坐力炮激光弹道"   => ["m_a",[114,115] ,0, 1, [ 10, 5], [ 0, 0], 12,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "无坐力炮SE弹道"       => ["m_a",[183,133] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "毒蜂弹道"   => ["m_a",[114,115] ,0, 1, [ 20, 20], [ 0, 0], 20,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "沙漠虎主炮G弹道"     => ["m_a",[169,133] ,0, 1, [ 64, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "霸王花转头弹道"       => ["m_a",[320,321] ,0, 1, [ 0, -50], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "甲壳虫战车弹道"       => ["m_a",[322,323] ,0, 1, [ 0, 0], [ 0, 0], 10,  0, [-3,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "SE火焰弹道3"       => ["m_a",[324,195] ,0, 2, [ 30, -15], [ 0, 0], 5,  0, [-2,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "无动画弹道2"     => ["m_a",[0,134] ,0, 1, [ 0, 0], [ 0, 0], 30,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "AT坦克G弹道"     => ["m_a",[169,133] ,0, 1, [ 55, -10], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "AT坦克2G弹道"     => ["m_a",[169,133] ,0, 1, [ 64, -10], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠虎激光G弹道"   => ["m_a",[0,219] ,0, 0, [ 0, 0], [ -5, -20], 1,  1, [0,0], true, [ true, false], false,  true,  true, false, false,  ""],
  "沙漠虎激光G弹道01" => ["m_a",[ 0, 327] ,0, 2, [ 0, 0], [ 0, 0], 32,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠之舟G弹道1"     => ["m_a",[169,168] ,0, 1, [ 85, -20], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠之舟G弹道2"     => ["m_a",[169,168] ,0, 1, [ 100, -18], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠之舟G弹道3"     => ["m_a",[169,168] ,0, 1, [ 120, 15], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠之舟G弹道B"     => ["m_a",[333,129] ,0, 1, [ 92, -40], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "沙漠之舟激光弹道1"   => ["m_a",[335,334] ,0, 1, [ 25, -50], [ 0, 0], 17,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "沙漠之舟激光弹道2"   => ["m_a",[335,334] ,0, 1, [ 100, 40], [ 0, 0], 17,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "沙漠之舟火焰弹道"    => ["m_a",[322,323] ,0, 1, [ 10, 5], [ 0, 0], 7,  0, [-5,0], true, [ true, false], true,  true,  true, false, false,  ""],
  "反坦克兵弹道"       => ["m_a",[183,133] ,0, 1, [ 20, -20], [ 0, 0], 5,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "离子坦克弹道"       => ["m_a",[337,182] ,0, 1, [ 30, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "弗兰克榴弹弹道"     => ["m_a",[339,134] ,0, 1, [ -5, -35], [ 0, 0], 11,  0, [-5,5], true, [ true, false], true,  true,  true, false, false,  ""],
  "弗兰克音波G弹道"     => ["m_a",[161,0] ,0, 1, [ 28, 12], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "乐狂导弹弹道"      => ["m_a",[344,207] ,0, 1, [ -40, -28], [ 0, 0], 5,  0, [-4,5], true, [ true, true], true,  true,  true, false, false,  ""],
  "离子坦克2弹道"       => ["m_a",[337,182] ,0, 2, [ 0, 0], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "防御机器激光弹道"   => ["m_a",[114,115] ,0, 1, [ 15, -60], [ 0, 0], 12,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "防御机器主炮G弹道"     => ["m_a",[349,133] ,0, 1, [ 64, 3], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "防御机器SE弹道"     => ["m_a",[185,133] ,0, 1, [ 75, -15], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "离子坦克3弹道"       => ["m_a",[337,182] ,0, 1, [ 10, 4], [ 0, 0], 7,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "帕鲁主炮弹道"       => ["m_a",[225,224] ,0, 1, [ 35, -7], [ 0, 0], 13,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "帕鲁SEG弹道"     => ["m_a",[226,133] ,0, 2, [ 0, -50], [ 0, 0], 4,  0, [-3,6], true, [ true, true], true,  true,  true, false, false,  ""],
  "电脑墙G1弹道"     => ["m_a",[212,0] ,0, 2, [ -15, 55], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "电脑墙G2弹道"     => ["m_a",[212,0] ,0, 2, [ 55, 50], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "电脑墙G3弹道"     => ["m_a",[212,0] ,0, 2, [ 100, 50], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "电脑墙G4弹道"     => ["m_a",[333,129] ,0, 1, [ 92, -40], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "电脑墙G5弹道"     => ["m_a",[112,128] ,0, 1, [ 30, -25], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "电脑墙G6弹道"     => ["m_a",[112,128] ,0, 1, [ -28, -18], [ 0, 0], 12,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "电脑墙G7弹道"     => ["m_a",[369,133] ,0, 1, [ 95, 25], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "电脑墙G8弹道"     => ["m_a",[369,133] ,0, 1, [ 0, 60], [ 0, 0], 10,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "机器人激光弹道"   => ["m_a",[335,334] ,0, 1, [ 0, -10], [ 0, 0], 13,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
  "机器人离子弹道"   => ["m_a",[372,182] ,0, 1, [ 37, 35], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "诺亚G弹道"     => ["m_a",[376,0] ,0, 1, [ 20,60], [ 0, 0], 8,  0, [0,0], true, [ false, false], false,  true,  true, false, false,  ""],
  "诺亚G2弹道"     => ["m_a",[376,129] ,0, 1,[ 20,60], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "瞄准弹道"       => ["m_a",[0,408] ,0, 1, [ 0, 0], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "爆炸弹道"       => ["m_a",[0,411] ,0, 1, [ 0, 0], [ -30, 0], 50,  1, [0,0], true, [ true,  true],  true,  true,  true, false, false,  ""],
  "杰克激光弹道"   => ["m_a",[0,413] ,0, 0, [ 0, 0], [ -56, -120], 1,  1, [0,0], true, [ true, false], false,  true,  true, false, false,  ""],
  "杰克风暴弹道"   => ["m_a",[414,415] ,0, 2, [ 56, -120], [0,0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "杰克单体风暴弹道"   => ["m_a",[414,415] ,0, 1, [ 56, -120], [0,0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "亚当蚁酸弹道"       => ["m_a",[201,202] ,0, 1, [ 48, 0], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "凤凰麻痹电击弹道"   => ["m_a",[396,405] ,0, 2, [ 8, 88], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "凤凰音波弹道"     => ["m_a",[161,0] ,0, 2, [ 25, -45], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "凤凰音波单弹道"     => ["m_a",[161,0] ,0, 1, [ 25, -45], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "连击凤凰弹道"     => ["m_a",[156,157] ,0, 1, [ -20, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "天道机甲加农炮弹道" => ["m_a",[112,128] ,0, 1, [ 55, 4], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  "天道机甲音波群弹道"     => ["m_a",[161,0] ,0, 2, [ -4, -38], [ 0, 0], 10,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "天道机甲音波弹道"   => ["m_a",[160,0] ,    0, 1, [ -4,-38], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
  "天道机甲激光弹道"   => ["m_a",[379,115],   0, 1, [-39,-4], [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
  "天道机甲se冰弹道"       => ["m_a",[216,214] ,0, 1, [14, -1], [ 0, 0], 8,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
  # ID...数据库中的动画ID。[要移动的动画 ID,打击时的动画 ID] 0 为不显示动画,-1 为显示武器动画。
  # 始...动画开始移动的位置。设为负数,则即使有多个目标,也只显示一个动画。
  #     [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # 末... 画。
  #     [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # 始调整...微调开始移动的坐标。[X轴, Y轴]。敌人的X轴会自动反向计算。
  # 末调整...微调结束移动的坐标。[X轴, Y轴]。敌人的X轴会自动反向计算。
  # 速度...每帧在X轴上移动的像素数。设为负数则按照时间设定,速度会根据距离而改变。
  # 类型...移动后的处理。[0=消失(未命中时自动变为穿透)] [1=穿透] [2=消失(未命中时也会消失)]
  # 轨道...移动的轨道。[从开始直至顶点的轨道, 从顶点开始直到落地的轨道]
  # Z轴...动画和武器是否显示在角色前方。
  # 等待...是否直到该动作结束后才转到下一个动作。[要移动的动画是否等待, 命中时的动画是否等待]
  # 伤害...是否在目标到达时计算伤害。
  # 追踪...是否对移动的目标追踪。
  # 镜头...动画是否会随着镜头缩放而放大缩小。
  # 循环...移动动画结束时,是否回到动画开始。
  # 禁止翻转...禁止在任何情况下翻转动画。
  # 武器...填入武器的动作名。不需要的话填入""
  # true=是 false=否
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
#● 小七新增弹道如下
# 动作名                   判别     ID      始 末   始调整     末调整  速度 类型 轨道    Z轴      等待      伤害    追踪    镜头  循环 禁止翻转  武器  
"测试主炮弹道"        => ["m_a",[112,404]   ,0, 1, [ 0, 0],   [ 0, 0], 20,  0, [0,0], true, [true ,true],  true,  true,  true, false, false,  ""],   
"测试副炮弹道"        => ["m_a",[181,182]   ,0, 2, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],  
"测试红狼弹道"        => ["m_a",[112,128]   ,0, 2, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],  
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  
#● 特性装置技能
"EX装甲装填装置"      => ["m_a",[0,253]     ,1, 1, [ 0, 0],   [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"纳米装置"            => ["m_a",[0,238]     ,0, 1, [ 0, 0],   [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, true,  true,   ""],
"战控雷达装置"        => ["m_a",[0,254]     ,0, 1, [ 0, 0],   [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"人类-台风手刀"       => ["m_a",[0,256]     ,0, 1, [ 0, 0],   [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"人类-爆裂拳"         => ["m_a",[0,261]     ,0, 1, [ 0, 0],   [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"战车冲撞单体弹道"    => ["m_a",[0,437]      ,0, 1, [ 0, 0],  [ 0, 0], 30,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],



"绝对真理弹道"        => ["m_a",[243,0],    0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ false, false],true, true,  true, false, false,  ""],
"绝对真理弹道2"       => ["m_a",[243,129],  0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"雷龙爆射炮弹道"      => ["m_a",[333,129]   ,0, 1, [ 76, -42],[ 0, 0], 30,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"普通双子炮弹道"      => ["m_a",[143,129] ,0, 1, [ 0, 0], [ 0, 0], 30,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"毁灭内爆弹弹道"      => ["m_a",[399,0],    0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ false, false],true, true,  true, false, false,  ""],
"毁灭内爆弹弹道2"     => ["m_a",[399,400],  0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"毁灭爆射炮弹道"      => ["m_a",[333,400]   ,0, 1, [ 76, -42],[ 0, 0], 30,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"测试武器弹道"        => ["m_a",[403,404]   ,0, 1, [ -30, 6],   [ 0, 0], 0,  0, [0,0], true, [true ,true],  true,  true,  true, false, false,  ""],   
"雷射激光弹道"        => ["m_a",[379,115],   0, 2, [0,0], [ 0, 0], 20,  0, [0,0], true, [ true ,true],  true,  true,  true, false, false,  ""],
"水母速射炮弹道"      => ["m_a",[110,400]   ,0, 1, [ 0,0],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"激钢镭射弹道"        => ["m_a",[426,427] ,0, 1, [ -30, 0], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"激钢钻头弹道"        => ["m_a",[428,429] ,0, 1, [ 0, 0], [ 0, 0], 12,  1, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"一发逆转神话弹道"    => ["m_a",[430,431] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, false], false,  true,  true, false, false,  ""],
"炸裂中子弹弹道"      => ["m_a",[430,433] ,0, 1, [ 0, 0], [ 0, 0], 5,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"碎蜂导弹弹道"        => ["m_a",[435,400] ,0, 1, [ 0, 0], [ 0, 0], 60,  0, [0,0], true, [ false, false], true,  true,  true, false, false,  ""],
"激钢蓝钻头弹道"      => ["m_a",[432,429] ,0, 1, [ 0, 0], [ 0, 0], 12,  1, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],

#怪物技能弹道  
"守护者弹道"          => ["m_a",[401,400]   ,0, 1, [ 80, -8], [ 0, 0], 15,  0, [0,0], true, [ true, true], true,   true,  true, false, false,  ""],
"出租战车a主炮弹道"   => ["m_a",[143,133]   ,0, 1, [ 40,-20], [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"出租战车a截击弹道"   => ["m_a",[161,0]     ,0, 2, [ 0, -24], [ 0, 0], 10,  1, [0,0], true, [ false, false],false, true,  true, false, false,  ""],  
"出租战车a副炮弹道"   => ["m_a",[181,182]   ,0, 2, [45,-5],   [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"毒蜘蛛王毒弹道"      => ["m_a",[201,202]   ,0, 2, [31, -2],  [ 0, 0], 6,   0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],                  
"水怪喷火弹道"        => ["m_a",[156,157]   ,0, 1, [ 40,-20], [ 0, 0], 13,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"军舰雷龙se弹道"      => ["m_a",[322,323]   ,0, 1, [ -14, 10],[ 0, 0], 10,  0, [-3,0],true, [ true, false], true,  true,  true, false, false,  ""],
"军舰雷龙主炮a弹道"   => ["m_a",[333,129]   ,0, 1, [ 76, -42],[ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"诺亚音波枪弹道"      => ["m_a",[377,0]     ,0, 2, [ 72,115], [ 0, 0], 10,  1, [0,0], true, [ false, false],false, true,  true, false, false,  ""],
"诺亚音波枪弹道2"     => ["m_a",[377,0],     0, 2, [-64,115], [ 0, 0], 10,  1, [0,0], true, [ false, false],false, true,  true, false, false,  ""],
"诺亚音波枪单体弹道"  => ["m_a",[377,0],     0, 1, [ 72,115], [ 0, 0], 10,  1, [0,0], true, [ false, false],true,  true,  true, false, false,  ""],
"诺亚激光弹道"        => ["m_a",[379,115],  0, 1,  [96,-48],  [ 0, 0], 12,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"诺亚激光弹道2"       => ["m_a",[379,115],  0, 1,  [96,45],   [ 0, 0], 12,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"诺亚离子弹道"        => ["m_a",[384,0],    0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ false, false],false, true,  true, false, false,  ""],
"诺亚离子弹道2"       => ["m_a",[384,129],  0, 1,  [ 20,-62], [ 0, 0], 8,   0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"诺亚激光板弹道"      => ["m_a",[385,0],    0, 1,  [ 0, 0],   [ 0, 0], 10,  1, [0,0], true, [ true,  true], false, false, true, false, false,  ""],
"诺亚激光板弹道2"     => ["m_a",[0,129],    0, 2,  [ -30, 6], [ 0, 0], 50,  1, [0,0], true, [ true,  true], true,  true,  true, false, false,  ""],
"天空流浪犬回旋弹道1" => ["m_a",[392,147]  ,0, 1,  [ 40, 20], [ 40,20], 10,  2, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
"天空流浪犬回旋弹道2" => ["m_a",[392,0]    ,1, 0,  [ 0, 0],   [ 0, 0], 10,  2, [3,0], true, [ true, true], false,  true,  true, false, false,  ""],
"天空流浪犬导弹弹道"  => ["m_a",[391,133]   ,0, 1, [ 0,2], [ 0, 0], 15,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"警备激光弹道"       => ["m_a",[0,394] ,0, 0, [ 0, 0], [ -15, 0], 1,  1, [0,0], true, [ true, false], false,  true,  true, false, false,  ""],
"警备激光弹道01"     => ["m_a",[ 0, 327] ,0, 2, [ 0, 0], [ 0, 0], 32,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"警备单体激光弹道"   => ["m_a",[335,334] ,0, 1, [ -15,0], [ 0, 0], 17,  0, [0,0], true, [ true, true],   true,  true,  true, false, false,  ""],
"冲撞弹道1" => ["m_a",[407,247]  ,0, 1,  [ 40, 20], [ 40,20], 10,  2, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
"冲撞弹道2" => ["m_a",[407,0]    ,1, 0,  [ 0, 0],   [ 0, 0], 10,  2, [3,0], true, [ true, true], false,  true,  true, false, false,  ""],

"凤凰回旋弹道1" => ["m_a",[417,147]  ,0, 1,  [ 40, 20], [ 40,20], 10,  2, [-3,0], true, [ true, true], true,  true,  true, false, false,  ""],
"凤凰回旋弹道2" => ["m_a",[417,0]    ,1, 0,  [ 0, 0],   [ 0, 0], 10,  2, [3,0], true, [ true, true], false,  true,  true, false, false,  ""],

"火星水母速射炮弹道a" => ["m_a",[110,400]   ,0, 1, [ 15,-50],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母速射炮弹道b" => ["m_a",[110,400]   ,0, 1, [ 8, -42],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母速射炮弹道c" => ["m_a",[110,400]   ,0, 1, [ 50, 14],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母速射炮弹道d" => ["m_a",[110,400]   ,0, 1, [ 47, 28],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母激光弹道a"   => ["m_a",[379,115],   0, 1, [15,-50], [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母激光弹道b"   => ["m_a",[379,115],   0, 1, [8,-42],  [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母激光弹道c"   => ["m_a",[379,115],   0, 1, [50,14],  [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母激光弹道d"   => ["m_a",[379,115],   0, 1, [47,28],  [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"火星水母音波弹道a"   => ["m_a",[160,0] ,    0, 1, [ 15,-50], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"火星水母音波弹道b"   => ["m_a",[160,0] ,    0, 1, [ 8, -42], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"火星水母音波弹道c"   => ["m_a",[160,0] ,    0, 1, [ 50, 14], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"火星水母音波弹道d"   => ["m_a",[160,0] ,    0, 1, [ 47, 28], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"火星水母离子弹道a"   => ["m_a",[372,182] ,0, 1,   [ 15,-50], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"火星水母离子弹道b"   => ["m_a",[372,182] ,0, 1,   [ 8,-42], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"火星水母离子弹道c"   => ["m_a",[372,182] ,0, 1,   [ 50,14], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"火星水母离子弹道d"   => ["m_a",[372,182] ,0, 1,   [ 47,28], [ 0, 0], 6,  0, [0,0], true, [ true, true], true,  true,  true, false, false,  ""],
"齐射火星水母速射炮弹道a" => ["m_a",[110,400]   ,0, 1, [ 15,-50],[ 0, 0], 20,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母速射炮弹道b" => ["m_a",[110,400]   ,0, 1, [ 8, -42],[ 0, 0], 20,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母速射炮弹道c" => ["m_a",[110,400]   ,0, 1, [ 50, 14],[ 0, 0], 20,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母速射炮弹道d" => ["m_a",[110,400]   ,0, 1, [ 47, 28],[ 0, 0], 20,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母激光弹道a"   => ["m_a",[379,115],   0, 1, [15,-50], [ 0, 0], 15,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母激光弹道b"   => ["m_a",[379,115],   0, 1, [8,-42],  [ 0, 0], 15,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母激光弹道c"   => ["m_a",[379,115],   0, 1, [50,14],  [ 0, 0], 15,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母激光弹道d"   => ["m_a",[379,115],   0, 1, [47,28],  [ 0, 0], 15,  0, [0,0], true, [ false, false],  true,  true,  true, false, false,  ""],
"齐射火星水母音波弹道a"   => ["m_a",[160,0] ,    0, 1, [ 15,-50], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"齐射火星水母音波弹道b"   => ["m_a",[160,0] ,    0, 1, [ 8, -42], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"齐射火星水母音波弹道c"   => ["m_a",[160,0] ,    0, 1, [ 50, 14], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"齐射火星水母音波弹道d"   => ["m_a",[160,0] ,    0, 1, [ 47, 28], [ 0, 0], 8,  1, [0,0], true, [ false, false],   false,  true,  true, false, false,  ""],
"齐射火星水母离子弹道a"   => ["m_a",[372,182] ,0, 1,   [ 15,-50], [ 0, 0], 6,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"齐射火星水母离子弹道b"   => ["m_a",[372,182] ,0, 1,   [ 8,-42], [ 0, 0], 6,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"齐射火星水母离子弹道c"   => ["m_a",[372,182] ,0, 1,   [ 50,14], [ 0, 0], 6,  0, [0,0], true, [ true, false], true,  true,  true, false, false,  ""],
"齐射火星水母离子弹道d"   => ["m_a",[372,182] ,0, 1,   [ 47,28], [ 0, 0], 6,  0, [0,0], true, [true, false], true,  true,  true, false, false,  ""],
"古战车速射炮弹道"        => ["m_a",[110,400]   ,0, 1, [ 120,-16],[ 0, 0], 40,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],
"古战车激光弹道"          => ["m_a",[379,115],   0, 1, [40,-28], [ 0, 0], 15,  0, [0,0], true, [ true, true],  true,  true,  true, false, false,  ""],

#--------------------------------------------------------------------------
# ● 战斗动画 显示数据库中的战斗动画
#--------------------------------------------------------------------------
  # ID...动画ID。-1 为武器设定的动画,-2 为二刀流另一只手的武器动画
  #              -3 为技能设定的动画
  # 对象...[0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 追踪...动画是否会追踪对象坐标的移动。
  # 等待...是否等待到动画结束。
  # 伤害...是否应用伤害计算
  # 镜头...是否随着镜头缩放而放大缩小。
  # 禁止翻转...禁止在任何情况下翻转动画。
  # 翻转...翻转动画。
  # Z轴...动画是否显示在角色前方。

  # 动作名(伤害系)          判别     ID 对象  追踪   等待   伤害    镜头 禁止翻转  翻转    Z轴
  "対象アニメ武器"      => ["anime",  -1,  1, false, false,  true,  true, false,  false,  true],
  "対象アニメ武器WT"    => ["anime",  -1,  1, false,  true,  true,  true, false,  false,  true],
  "対象アニメ武器LWT"   => ["anime",  -2,  1, false,  true,  true,  true, false,  false,  true],
  "対象アニメ"          => ["anime",  -3,  1, false, false,  true,  true, false,  false,  true],
  "対象アニメWT"        => ["anime",  -3,  1, false,  true,  true,  true, false,  false,  true],


  # 动作名(自身系)          判别     ID 对象  追踪   等待   伤害    镜头 禁止翻转  翻转    Z轴
  "魔法詠唱中"          => ["anime", 113,  0,  true,  true, false,  true, false,  false,  true],
  "特技待機中"          => ["anime", 0,  0,  true,  true, false,  true, false,  false,  true],
  "魔法発動アニメ"      => ["anime", 115,  0, false,  true, false,  true, false,  false, false],
  "特技発動アニメ"      => ["anime", 116,  0, false,  true, false,  true, false,  false, false],
  "普通副炮"            => ["anime", 112,  1, false,  false, true,  true, false,  false, true],
  "咬"                 => ["anime",  111,  1, false,  true,  true,  true, false,  false,  true],
  "咬2"                 => ["anime",  111,  1, true,  false,  true,  true, false,  false,  true],
  "爪K"                 => ["anime",  173,  1, false,  true,  true,  true, false,  false,  true],
  "生物炮k"            => ["anime", 301,  0, false,  false, false,  true, false,  false, true],
  "仿生蜗牛k"           => ["anime", 303,  0, false,  false, false,  true, false,  false, true],
  "加农炮k"            => ["anime", 304,  0, false,  false, false,  true, false,  false, true],
  "机械蚓k"           => ["anime", 306,  0, false,  false, false,  true, false,  false, true],
  "步枪鸟k"            => ["anime", 307,  0, false,  true, false,  true, false,  false, true],
  "坦克k"            => ["anime", 308,  0, false,  false, false,  true, false,  false, true],
  "暗堡k"            => ["anime", 309,  0, false,  true, false,  true, false,  false, true],
  "章鱼坦克k"            => ["anime", 310,  0, false,  false, false,  true, false,  false, true],
  "战狗k"            => ["anime", 312,  0, false,  false, false,  true, false,  false, true],
  "章鱼炮k"            => ["anime", 315,  0, false,  false, false,  true, false,  false, true],
  "指挥车k"            => ["anime", 316,  0, false,  false, false,  true, false,  false, true],
  "机械蟹k"            => ["anime", 313,  0, false,  false, false,  true, false,  false, true],
  "无坐力炮k"            => ["anime", 317,  0, false,  false, false,  true, false,  false, true],
  "沙漠虎k"            => ["anime", 318,  0, false,  false, false,  true, false,  false, true],
  "AT坦克k"            => ["anime", 325,  0, false,  false, false,  true, false,  false, true],
  "AT坦克2k"            => ["anime", 326,  0, false,  false, false,  true, false,  false, true],
  "沙漠之舟k"            => ["anime", 328,  0, false,  false, false,  true, false,  false, true],
  "沙漠之舟1k"            => ["anime", 329,  0, false,  false, false,  true, false,  false, true],
  "沙漠之舟2k"            => ["anime", 330,  0, false,  false, false,  true, false,  false, true],
  "沙漠之舟3k"            => ["anime", 331,  0, false,  false, false,  true, false,  false, true],
  "沙漠之舟副炮k"            => ["anime", 332,  0, false,  false, false,  true, false,  false, true],
  "弗兰克开枪k"            => ["anime", 338,  0, false,  false, false,  true, false,  false, true],
  "乐狂开枪k"            => ["anime", 340,  0, false,  false, false,  true, false,  false, true],
  "乐狂吉他k"            => ["anime", 341,  0, false,  false, false,  true, false,  false, true],
  "乐狂吉他2k"            => ["anime", 342,  2, false,  true, true,  true, false,  false, true],
  "乐狂口哨k"            => ["anime", 343,  0, false,  true, false,  true, false,  false, true],
  "防御机器开枪1k"            => ["anime", 346,  0, false,  false, false,  true, false,  false, true],
  "防御机器开枪2k"            => ["anime", 347,  0, false,  false, false,  true, false,  false, true],
  "防御机器主炮k"            => ["anime", 348,  0, false,  false, false,  true, false,  false, true],
  "帕鲁开枪k"            => ["anime", 350,  0, false,  false, false,  true, false,  false, true],
  "帕鲁主炮k"            => ["anime", 352,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪1k"          => ["anime", 353,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪2k"          => ["anime", 354,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪3k"          => ["anime", 355,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪4k"          => ["anime", 356,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪5k"          => ["anime", 357,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪6k"          => ["anime", 358,  0, false,  false, false,  true, false,  false, true],
  "电脑墙低音波k"          => ["anime", 359,  0, false,  false, false,  true, false,  false, true],
  "电脑墙高音波k"          => ["anime", 360,  0, false,  true, false,  true, false,  false, true],
  "电脑墙开枪7k"          => ["anime", 361,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开枪8k"          => ["anime", 362,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开炮1k"          => ["anime", 363,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开炮2k"          => ["anime", 364,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开炮3k"          => ["anime", 365,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开炮4k"          => ["anime", 366,  0, false,  false, false,  true, false,  false, true],
  "电脑墙开炮5k"          => ["anime", 367,  0, false,  false, false,  true, false,  false, true],
  "电脑墙激光k"           => ["anime", 368,  0, false,  false, false,  true, false,  false, true],
  "机器人离子k"           => ["anime", 371,  0, false,  true,  false,  true, false,  false, true],
  "诺亚1k"           => ["anime", 373,  0, false,  true,  false,  true, false,  false, true],
  "诺亚2k"           => ["anime", 374,  0, false,  true,  false,  true, false,  false, true],
  "诺亚3k"           => ["anime", 375,  0, false,  false,  false,  true, false,  false, true],
  
  "诺亚离子炮"           => ["anime", 382,  0, false,  true,  false,  true, false,  false, true],
  "诺亚离子炮后"         => ["anime", 383,  0, false,  false,  false,  true, false,  false, true],
  "诺亚副炮1"            => ["anime", 380,  0, false,  false, false,  true, false,  false, true],
  "诺亚副炮2"            => ["anime", 381,  0, false,  false, false,  true, false,  false, true],
  "诺亚激光板炮"         => ["anime", 390,  2, false,  true,  false,  true, false,  false, true],
  "天空流浪犬全体副炮"    => ["anime", 390,  0, false,  false, false,  true, false,  false, true],

  "出租战车A1k"          => ["anime", 330,  0, false,  false, false,  true, false,  false, true],
  "杰克全体导弹"         => ["anime", 409,  0, false,  false, false,  true, false,  false, true],
  "杰克瞄准"             => ["anime", 408,  1, false,  true,  false,  true, false,  false, true],
  "瞄准导弹"             => ["anime", 410,  1, false,  true,  false,  true, false,  false, true],
  "瞄准单体导弹"         => ["anime", 412,  0, false,  true,  false,  true, false,  false, true],
  "凤凰咆哮"             => ["anime", 418,  0, false,  true,  false,  true, false,  false, true],
  "浴火凤凰"             => ["anime", 419,  0, false,  true,  false,  true, false,  false, true],
  "boss喷火"             => ["anime", 440,  0, false,  true,  false,  true, false,  false, true],
  "古战车扫描激光蓄力"   => ["anime", 441,  0, false,  true,  false,  true, false,  false, true],
  "古战车扫描激光"       => ["anime", 442,  0, false,  true,  false,  true, false,  false, true],
  
  "台风手刀"             => ["anime", 256,  1, false,  false,  false,  true, false,  false, true],
  "轨道脉冲炮"           => ["anime", 420,  0, false,  true,  false,  true, false,  false, true],
  "超级轨道脉冲炮"       => ["anime", 421,  0, false,  true,  false,  true, false,  false, true],
  # 动作名(自身系物品)          判别     ID 对象  追踪   等待   伤害    镜头 禁止翻转  翻转    Z轴
  "药W"                => ["anime", 37,  0, false,  true, true,  true, false,  false, true],
  "兴奋剂W"            => ["anime", 116,  0, false,  true, true,  true, false,  false, true],
  "外道兴奋剂W"        => ["anime", 81,  0, false,  true, true,  true, false,  false, true],
  "状态恢复W"          => ["anime", 40,  0, false,  true, true,  true, false,  false, true],
  "烟雾W"              => ["anime", 172,  0, false,  true, true,  true, false,  false, true],

#--------------------------------------------------------------------------
# ● 镜头动作 执行画面的缩放和卷动
#--------------------------------------------------------------------------
  # 对象...移动和缩放的对象
  #       [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标] [6=画面]
  # 调整坐标...微调镜头坐标的最终地点 [X轴(正值为向右), Y轴(正值为向下)]
  # 时间...镜头动作所需的时间
  # 缩放...镜头的缩放率(%)。100表示无缩放。
  # 等待...是否等待镜头动作结束。

  # 动作名             判别     对象   调整坐标   缩放  时间  等待
  "カメラリセット"=> ["camera",   6, [   0,   0], 100,  40, false],
  "ズームイン"    => ["camera",   6, [   0, 100], 120,  40, false],
  "ズームアウト"  => ["camera",   6, [   0,   0],  80,  40, false],
  "战斗胜利"      => ["camera",   6, [   0,   0],  80,  180, true],
#--------------------------------------------------------------------------
# ● 画面的震动 震动画面。空中坐标(H坐标在0以上)的战斗者不会震动。
#--------------------------------------------------------------------------
  # 方向...震动的方向 [横, 纵]。数值越大,振幅越大。
  # 速度...震动的速度。数值越小,震动越快。
  # 时间...震动的持续时间。振幅会随着时间逐渐减小。
  # 等待...是否等待震动结束。

  # 动作名              判别       方向  速度   时间   等待
  "シェイク小"     => ["shake", [  0, 4],  2,    16, false],
  "シェイク中"     => ["shake", [  0, 6],  3,    30, false],
  "シェイク大"     => ["shake", [  0,12],  3,    40, false],

#--------------------------------------------------------------------------
# ● 更改画面色调 更改背景和战斗者的色调
#--------------------------------------------------------------------------
  # 对象...更改色调的对象
  #       [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  #       [6=背景] [7=自身+目标] [8=自身以外] [9=自身+目标以外] [10=全体]
  # 色调等级...[ R, G, B, alpha(颜色的强度), 更改时间, ※返回]
  #             ※返回....更改结束之后返回原色调所需时间。不反回的话填入 0
  # 等待...是否等待至画面色调更改结束

  # 更改名                        判别    对象     R,   G,   B, alpha 时间 返回  等待
  "色調初期化"               => ["color",  10, [   0,   0,   0,   0,  30,   0], false],
  "ピンチ色調"               => ["color",   0, [ 255,  50,  50, 100,  40,  40], false],
  "毒色調"                   => ["color",   0, [ 170,  50, 255, 170,  30,  30], false],
  "汎用状態異常色調"         => ["color",   0, [ 255, 255,  50, 170,  40,  40], false],
  "背景のみ暗転"             => ["color",   6, [   0,   0,   0, 255,  30,   0], false],
  "自分とターゲット以外暗転" => ["color",   9, [   0,   0,   0, 255,  30,   0], false],

#--------------------------------------------------------------------------
# ● 渐变 画面固定后执行的渐变
#--------------------------------------------------------------------------
  # 执行前请先执行动作"画面固定"固定住画面。

  # 边界...边界的模糊程度。数值越大越模糊。
  # 时间...渐变花费的事件。渐变过程中游戏的画面会固定住。
  # 渐变文件名...渐变用图像。请将图像放入 Pictures 文件夹。

  # 动作名              判别   边界  时间  渐变文件名
  "サークル"         => ["ts",  40,   60,  "circle"],

#--------------------------------------------------------------------------
# ● 残影 战斗者的移动留下残影
#--------------------------------------------------------------------------
  # 数...残影的个数。0 为消除正在显示的残影。数目过多会增加负荷。
  # 间隔...残影显示的间隔。数值越小,间隔越窄。单位为 1 帧。
  # 处理...残影的善后处理。true 表示全动作完成时消失,false表示始终显示。
  # 透明度...残影的透明度。

  # 动作名              判别     数 间隔   处理  透明度
  "残像ON"        => ["mirage",  4,   3,  true,  160],
  "残像OFF"       => ["mirage",  0,   0,  true,    0],

#--------------------------------------------------------------------------
# ● 旋转战斗者 旋转战斗者的图像
#--------------------------------------------------------------------------
  # 旋转的战斗者在全动作结束之后,旋转效果会被重置。
  # 旋转中的画像传送原点为画像中心。和翻转不同,不会体现在武器动作中。
  #
  # 时间...旋转耗费的事件。0 表示立刻旋转完成。
  # 始度...开始旋转时的角度。指定 0~360° 。正为逆时针,负为顺时针。
  # 终度...旋转结束时的角度。指定 0~360° 。和上一条一样,敌人会按照相反方向计算。
  # 种类...旋转结束后的处理。[0...旋转重置] [1...保持结束时的角度] [2...训话]

  # 动作名             判别    时间  始度  终度  种类
  "右1回転"        => ["angle",  12,    0, -360,   0],
  "左1回転"        => ["angle",  12,    0,  360,   0],

#--------------------------------------------------------------------------
# ● 缩放战斗者 缩放战斗者的图像
#--------------------------------------------------------------------------
  # 缩放的战斗者在全动作结束之后,缩放效果会被重置。
  # 和翻转不同,不会体现在武器动作中。
  #
  # 时间...缩放所花费的时间。
  # 开始大小...缩放开始时的大小。请输入小数。[X轴(横向), Y轴(纵向)]
  # 结束大小...缩放结束时的大小。请输入小数。[X轴(横向), Y轴(纵向)]
  # 类型...缩放结束后的处理。[0...缩放重置] [1...保持结束时的大小] [2...循环]

  # 动作名             判别    时间   开始大小      结束大小  种类
  "横縮み"         => ["zoom",  12,  [1.0, 1.0],  [0.5, 1.0],  0],
  "縦縮み"         => ["zoom",  12,  [1.0, 1.0],  [1.0, 0.5],  0],

#--------------------------------------------------------------------------
# ● 战斗者透明度操作 更改战斗者图像的透明度
#--------------------------------------------------------------------------
  # 更改过透明度的战斗者在全动作结束之后,透明度操作会被重置。
  #
  # 时间...更改透明度所耗费的时间。
  # 开始...开始更改时的透明度。0 为完全消失的状态,255 为完全不透明的状态
  # 结束...结束更改时的透明度。
  # 影...影子是否同样更改透明度。
  # 武器...武器是否同样更改透明度。
  # 循环...透明度更改结束后,操作是否自动回滚。
  # 等待...是否等到操作结束后再执行下一个动作。

  # 动作名                判别      时间  开始  结束   影    武器   循环   等待
  "逃走透明"         => ["opacity",   30,  255,   0,  true,  true, false, false],
  "透明化"           => ["opacity",   60,  255,   0,  true,  true, false, false],
  "透明化WT"         => ["opacity",   60,  255,   0,  true,  true, false,  true],
  "透明化解除"       => ["opacity",   60,    0, 255,  true,  true, false, false],
  "透明化解除WT"     => ["opacity",   60,    0, 255,  true,  true, false,  true],
  "立即透明化"       => ["opacity",   1 ,  255,   0,  true,  true, false, false],
  "伪装迷彩透明化"   => ["opacity",   60,  155,  0,  true,  true, false, false],
  "伪装迷彩透明化消失"=> ["opacity",  60,  0,  155,  true,  true, false, false],
  #--------------------------------------------------------------------------
# ● fuki 动画 显示事件中弹出的图标
#--------------------------------------------------------------------------
  # 种类...用 0~9 指定fuki的种类(纵位置)
  # 速度...更新速度。元件会从第二格开始播放。
  # 大小...fuki的大小

  # fuki 动画名         判别      种类 速度  大小
  "状態異常/汎用"   => ["balloon",   6,  10,  0.6],
  "状態異常/ピンチ" => ["balloon",   5,  10,  0.6],
  "状態異常/睡眠"   => ["balloon",   9,  10,  0.6],

#--------------------------------------------------------------------------
# ● 显示图片 用于大招显示立绘等
#--------------------------------------------------------------------------
  # ID...使用的图片 ID。用于管理图片的 ID。不限制显示图片的数量。
  #      在全动作结束后会自动消除(释放 Bitmap)。
  # 开始坐标...移动开始的位置。以图片左上方为原点。[X轴, Y轴]
  #            如果已经存在图片,设为 [] 会以该位置作为开始坐标。
  # 结束坐标...移动结束的位置。若与开始位置相同,则图片只会显示不会移动。
  #            使用平面的场合,把开始和结束设为 [] 则保持移动速度。
  # 时间...移动时间。设为 0 表示消除图片。
  # Z轴...图片的Z坐标。设为 100 以上则显示在窗口前方。
  # 透明度...设定透明度。[开始时的透明度,每帧透明度的增加值]
  # 使用平面...使用平面类(图片平铺)时的矩形。[X轴, Y轴]
  #            不使用平面则设为 []
  # BA翻转...被偷袭时是否图像翻转、X坐标反向移动。
  #          使用平面时,设为 true 也不会翻转,仅仅会反向移动 X 坐标。
  # 图片文件名...Pictures 文件夹内的文件名。

  # 动作名              判别   ID    开始坐标     结束坐标    时间 Z轴   透明度    使用平面  偷袭翻转 图片文件名
  "カットインA1"    => ["pic",  0, [-300,   8], [ 100,   8],  30, 90, [  0, 10],        [],  true, "Actor4-1"],
  "カットインA2"    => ["pic",  0, [-300,   8], [ 100,   8],  30, 90, [  0, 10],        [],  true, "Actor4-2"],
  "カットインA3"    => ["pic",  0, [-300,   8], [ 100,   8],  30, 90, [  0, 10],        [],  true, "Actor5-2"],
  "カットインA4"    => ["pic",  0, [-300,   8], [ 100,   8],  30, 90, [  0, 10],        [],  true, "Actor5-3"],
  "カットイン終"    => ["pic",  0,          [], [ 600,   8],  30, 90, [255,  0],        [],  true, ""],
  "カットイン背景始"=> ["pic",  1, [   0,   8], [ 100,   8],  10, 80, [  0, 10], [544,288],  true, "cutin_back"],
  "カットイン背景終"=> ["pic",  1,          [],          [],  10, 80, [255, -7], [544,288],  true, ""],
  "白フェードイン"  => ["pic",  0, [   0,   0], [   0,   0],  50,500, [  0,  6],        [], false, "white"],
  "白フェードアウト"=> ["pic",  0, [   0,   0], [   0,   0],  50,500, [255, -6],        [], false, "white"],

#--------------------------------------------------------------------------
# ● 状态操作
#--------------------------------------------------------------------------
  # 对象...[0=自分] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 扩展...在上述设定的基础上扩展 [0=无扩展] [1=随机一人] [2=自身除外]
  # 操作...附加状态为"+",解除状态为"-"
  # 状态ID...将操作的状态ID全部填入数组。

  # 附加状态名           判别  对象 扩展 操作 状态ID
  "不能战斗"         => ["sta",  0,   0, "+",  [1]],

#--------------------------------------------------------------------------
# ● 更改FPS(游戏整体速度) 用于动作的细节检查
#--------------------------------------------------------------------------
  # 游戏速度...默认为 60 ,数值越低,速度越慢。

  # 动作名           判别  游戏速度
  "スロー再生"   => ["fps",  15],
  "通常再生"     => ["fps",  60],

#--------------------------------------------------------------------------
# ● 更改战斗者图像 将战斗者的图像更改为新的文件
#--------------------------------------------------------------------------
  # 保持...己方角色是否在战斗后保持图像的更改。
  # 索引...己方角色使用行走图的哪个矩形。
  #        [0][1][2][3]
  #        [4][5][6][7]
  # 文件名...要更改至的图片文件名。角色的文件在 Characters 文件夹,
  #          敌人在 Battlers 文件夹。
  # 脸图...己方角色战斗后是否更改脸图。
  #        更改则填入[脸图索引, 文件名],不更改则填入 []

  # 角色名                 判别     保持    索引      文件名       脸图
  "オオカミに変身"    => ["change", false,    6,    "Animal", [0, "Actor4"]],

#--------------------------------------------------------------------------
# ● 技能派生 中断动作,派生引发新的技能
#--------------------------------------------------------------------------
  # 习得...没有学会派生的技能时是否执行。
  # 代价条件...不足以支付派生技能的代价时是否执行。
  # 技能ID...派生技能的ID

  # 动作名               判别    习得  代价条件 技能ID
  "多段攻撃に派生"   => ["der",  true,  false,   130],

#--------------------------------------------------------------------------
# ● 播放声音  播放 BGM/BGS/SE
#--------------------------------------------------------------------------
  # 类别...音效为"se",BGM为"bgm",BGS为"bgs"
  # 音调...音调。可以指定为 50~150 之间的数值。默认为 100。
  # 音量...音量。可以指定为 50~150 之间的数值。默认为 100。
  # 文件名...要播放的文件名。设为""表示修改其他设定但不更改 BGM、BGS。

  # 动作名             判别      类别  音调 音量  文件名
  "Bow1"          => ["sound",  "se", 100,  100, "Bow1"],
  "Gun1"          => ["sound",  "se", 100,  100, "Gun1"],
  "005-SE-激光"   => ["sound",  "se", 100,  100, "005-SE-激光"],
  "0x2E-Electronic" => ["sound",  "se", 100,  100, "0x2E-Electronic"],
  "死亡音效"          => ["sound",  "se", 100,  100, "Collapse1"],

#--------------------------------------------------------------------------
# ● 播放影像  播放ogv格式的影像
#--------------------------------------------------------------------------
  # 文件名...要播放的影像文件名。 影像在 Movies 文件夹。

  # 动作名                  判别     文件名
  "死亡フラグムービー" => ["movie", "sample1"],

#--------------------------------------------------------------------------
# ● 游戏开关(SideView专用开关)的操作
#--------------------------------------------------------------------------
  # ID 为正表示操作游戏开关,为负表示操作 Sideview 专用开关
  #
  # ON...把要打开的开关 ID 全部填入数组
  # OFF...把要关闭的开关 ID 全部填入数组
  #
  # 动作名                判别      ON     OFF
  "スイッチNo1/ON"  => ["switch",  [ 1],   []],
  "背景を宇宙に変更"=> ["switch",  [-4],   []],
  "背景宇宙を解除"  => ["switch",    [],   [-4]],
  "魔方陣ON"        => ["switch",  [-5],   []],
  "魔方陣OFF"       => ["switch",    [],   [-5]],

#--------------------------------------------------------------------------
# ● 游戏变量的操作
#--------------------------------------------------------------------------
  # ID...操作游戏变量的 ID
  # 操作...[0=赋值] [1=加法] [2=减法] [3=乘法] [4=除法] [5=剩余]
  # 运算数...用来进行计算的数值。设为负数的话,会以该数绝对值所对应的变量进行计算。
  #
  # 动作名      判别               ID    操作  运算数
  "変数No1/+1"     => ["variable",   1,     1,     1],

#--------------------------------------------------------------------------
# ● 条件分歧(游戏开关) 设定条件,使动作发生分歧。
#--------------------------------------------------------------------------
  # 开关ID...对应开关的 ID。负数则使用 SideView 专用开关。
  # 条件...打开为 true,关闭为 false
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                   判别  开关ID  条件  分歧
  "スイッチNo1=ONで実行" => ["n_1",   1,   true,   0],

#--------------------------------------------------------------------------
# ● 条件分歧 (游戏变量)
#--------------------------------------------------------------------------
  # 变量ID...对应变量的 ID
  # 数值...填入作为条件的数值。设为负数的话,会以该数绝对值所对应的变量为准。
  # 条件...变量比条件数值...[0=相等] [1=小] [2=大]
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                   判别  变量ID  数值  条件  分歧
  "変数No1=1で実行"      => ["n_2",   1,    1,    0,    0],

#--------------------------------------------------------------------------
# ● 条件分歧 (状态)
#--------------------------------------------------------------------------
  # 对象...检查条件的对象 [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 状态ID...使用几号状态作为条件。
  # 条件...[0=拥有状态] [1=没有状态]
  # 人数...满足以上条件所需人数。条件的对象为多人时,0 表示所有人。
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                   判别   对象 状态ID 条件   人数  分歧
  "死亡確認"             => ["n_3",   1,    1,    0,     1,   1],

#--------------------------------------------------------------------------
# ● 条件分歧 (技能)
#--------------------------------------------------------------------------
  # 对象...检查条件的对象 [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 技能ID...使用几号技能作为条件。
  # 条件...[0=可以使用] [1=不能使用]
  # 人数...满足以上条件所需人数。条件的对象为多人时,0 表示所有人。
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                   判别  对象 技能ID  条件  人数  分歧
  "強撃使用可限定"       => ["n_4",  0,   80,    0,    1,   0],

#--------------------------------------------------------------------------
# ● 条件分歧 (属性)
#--------------------------------------------------------------------------
  # 对象...检查条件的对象 [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 类别...以哪一项属性作为条件。
  #       [1=Lv] [2=最大HP] [3=最大MP] [4=HP] [5=MP] [6=TP] [7=攻击力]
  #       [8=防御力] [9=魔法攻击] [10=魔法防御] [11=敏捷值] [12=幸运值]
  # 数值...填入作为条件的数值。设为负数的话,表示占对应属性最大值的百分比(仅限HP/MP/TP)
  # 条件...属性和条件数值相比...[0=相等] [1=小] [2=大]
  # 人数...满足以上条件所需人数。条件的对象为多人时,0 表示所有人。
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                   判别  对象  类别  数值  条件  人数  分歧
  "HP50%以上で実行"      => ["n_5",  0,    4,  -50,    2,    1,   0],

#--------------------------------------------------------------------------
# ● 条件分歧 (装备)
#--------------------------------------------------------------------------
  # 对象...检查条件的对象 [0=自身] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  # 种类...作为条件的装备种类 [0=武器] [1=防具]
  # 装备ID...对应种类的装备ID。将ID全部填入数组[]中。
  #          负数表示武器(防具)的种类、
  # 条件...[0=装备中] [1=未装备]
  # 人数...满足以上条件所需人数。条件的对象为多人时,0 表示所有人。
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  #
  # 动作名                  判别  对象   种类     ID    条件 人数  分歧
  "ハンドアクス限定"     => ["n_6",  0,    0,    [1],    0,    1,   0],
  "拳限定"               => ["n_6",  0,    0,   [-2],    0,    1,   0],
  "拳除外"               => ["n_6",  0,    0,   [-2],    0,    1,   1],
  "弓限定"               => ["n_6",  0,    0,   [-6],    0,    1,   0],
  "弓除外"               => ["n_6",  0,    0,   [-6],    0,    1,   1],
  "拳弓除外"             => ["n_6",  0,    0,[-2,-6],    0,    1,   1],

#--------------------------------------------------------------------------
# ● 条件分歧 (脚本) 
#--------------------------------------------------------------------------
  # 分歧...满足条件时的分歧处理。不满足的情况则按照相反方式处理。
  #       [0=执行下一动作] [1=取消下一动作] [2=全动作结束]
  # 脚本...填入返回值为 true 或 false 的脚本
  #
  # 动作名                   判别   分歧   脚本
  "50%の確率で実行"      => ["n_7",   0,  "rand(100) < 50"],
  "アクター限定"         => ["n_7",   0,  "@battler.actor?"],
  "アクターID1限定"      => ["n_7",   0,  "@battler.actor? && @battler.actor_id == 1"],
  "アクターID2限定"      => ["n_7",   0,  "@battler.actor? && @battler.actor_id == 2"],
  "アクターID6限定"      => ["n_7",   0,  "@battler.actor? && @battler.actor_id == 6"],
  "アクターID7限定"      => ["n_7",   0,  "@battler.actor? && @battler.actor_id == 7"],
  "エネミー限定"         => ["n_7",   0,  "!@battler.actor?"],
  "エネミー中止"         => ["n_7",   2,  "!@battler.actor?"],
  "二刀流限定"           => ["n_7",   0,  "@battler.dual_wield?"],

#--------------------------------------------------------------------------
# ● 第二目标操作
#--------------------------------------------------------------------------
  # 第二目标是指,与通常的目标相独立的另一目标的信息。
  # 没有操作时,第二目标会设为与通常目标相同。
  #
  # 对象...[0=自分] [1=目标] [2=敌方全体] [3=己方全体] [4=双方全体] [5=第二目标]
  #
  # INDEX...在队伍中的位置(队伍顺序)检索对象 INDEX = [索引, 判别]
  #         索引...队伍中索引值
  #         判别...数值条件 [0=不检索] [1=将该索引设为对象] [2=排除该索引]
  #
  # ID...通过角色(敌人)ID来检索对象。0 表示不检索。
  #      若为负值,则该数的绝对值将会作为排除条件。
  #
  # 状态...以对象当前拥有的状态 ID 作为检索条件。0 表示不检索。
  #        若为负值,则表示检索条件为对象不拥有该状态。
  #
  # 技能...以对象可以使用的技能 ID 作为检索条件。0 表示不检索。
  #        若为负值,则表示检索条件为对象不可使用该技能。
  #
  # 属性...以对象的属性为条件进行检索 属性 = [类别, 数值, 判别]
  #        类别...[1=Lv] [2=最大HP] [3=最大MP] [4=HP] [5=MP] [6=TP] [7=攻击力]
  #               [8=防御力] [9=魔法攻击] [10=魔法防御] [11=敏捷值] [12=幸运值]
  #        数值...填入作为条件的数值。设为负数的话,表示占对应属性最大值的百分比(仅限HP/MP/TP)
  #        判别...属性和条件数值相比...[0=相等] [1=小] [2=大]
  #
  # 装备...以对象的装备进行检索。仅限己方角色。装备 = [种类, ID]
  #       种类...[0=武器] [1=防具]
  #       ID...对应种类的装备ID。将ID全部填入数组[]中。
  #            负数表示武器(防具)的种类、
  #
  # 扩展...在上述设定的基础上扩展 [0=无扩展] [1=随机一人] [2=自身除外]
  # 操作...[0=无操作] [1=将通常目标变更为第二目标] [初始化第二目标/通常目标]

  # 动作名               判别  对象  INDEX  ID  状态 技能   属性        装备   扩展 操作
  "自分以外己方全体員"=> ["s_t", 3, [ 0, 0], 0,  0,   0, [ 0, 0, 0], [ 0,[0]],  2,   0],
  "全域化"           => ["s_t", 4, [ 0, 0], 0, -1,   0, [ 0, 0, 0], [ 0,[0]],  0,   1],

#--------------------------------------------------------------------------
# ● 呼叫公共事件
#--------------------------------------------------------------------------
  # ID...公共事件ID
  # 等待...在公共事件执行时是否停止动作。
  #
  # 动作名                判别    ID    等待
  "コモンNo1"       => ["common",  1,  true],

#--------------------------------------------------------------------------
# ● 脚本操作
#--------------------------------------------------------------------------
  # 执行脚本。把要用 eval 执行的脚本填入范例的 p = 1 处。
  #
  # 脚本名
  "テストスクリプト" => ["p = 1 "],

#--------------------------------------------------------------------------
# ● 其他 无需设定项目即可加入全动作
#--------------------------------------------------------------------------
  # 戦闘アニメ消去...消除显示中的战斗动画(投掷动画不会消除)
  # 強制戦闘終了...强制终止战斗。
  # 画面固定...固定游戏画面。在渐变前加入。
  # ダメージアニメ...播放技能动画,在动画即将结束时弹出伤害。
  # 反転...翻转图像和武器动画。再次翻转或全动作结束后解除翻转。
  # 武器消去...消除正在显示的武器图像。
  # 武器消去解除...显示已经消除的武器图像。
  # 敵コラプス...执行消失效果。主要在敌方无法战斗时使用。
  # コラプス禁止...对象的HP为 0 时禁止死亡效果。可用于连续攻击开始之类的地方。
  # コラプス禁止解除...解除コラプス禁止。可用于连续攻击结束之类的地方。即使不用这一条,行动结束时也会允许消失效果。
  # 待機キャンセル...暂停待机动作。可用于战斗事件之类的地方。
  # 待機キャンセル解除...解除待機キャンセル,进行待机动作。
  # 初期位置変更...将原来的坐标(初始位置)变更为现在的坐标。
  # 初期位置変更解除...恢复初期位置変更改变的坐标。
  # 強制...强制下次行动的目标(反作用)
  # 強制2...强制下次行动的第二目标(反作用)
  # 次の行動者へ...视为战斗行动结束,立刻开始下一角色的行动。
  # 個別開始...单独处理多个目标的攻击时,重复行动开始的记号。
  # 個別終了...单独处理多个目标的攻击时,重复行动结束的记号。
  # ループ開始...不断重复"ループ開始"与"ループ終了"之间的行动。
  # ループ終了...不断重复"ループ開始"与"ループ終了"之间的行动。

  # 动作名                  判别
  "戦闘アニメ消去"    => ["anime_off"],
  "強制戦闘終了"      => ["battle_end"],
  "画面固定"          => ["graphics_freeze"],
  "ダメージアニメ"    => ["damage_anime"],
  "反転"              => ["mirror"],
  "武器消去"          => ["weapon_off"],
  "武器消去解除"      => ["weapon_on"],
  "敌人战斗不能"        => ["normal_collapse"],
  "コラプス禁止"      => ["no_collapse"],
  "コラプス禁止解除"  => ["collapse"],
  "待機キャンセル"    => ["non_motion"],
  "待機キャンセル解除"=> ["non_motion_cancel"],
  "初期位置変更"      => ["change_base_position"],
  "初期位置変更解除"  => ["set_base_position"],
  "強制"              => ["force_action"],
  "強制2"             => ["force_action2"],
  "次の行動者へ"      => ["next_battler"],
  "個別開始"          => ["individual_start"],
  "個別終了"          => ["individual_end"],
  "ループ開始"        => ["loop_start"],
  "ループ終了"        => ["loop_end"],

#--------------------------------------------------------------------------
# ● 等待 到下个行动前的等待时间
#--------------------------------------------------------------------------
  # 当动作名只有数字时,该数字即为等待的时间。
  #(例) "20"...等待 20 帧进入下一动作。
  #
  # 数值为负表示等待时间为 0~绝对值 之间的一个随机数。
  #(例) "-20"...随机等待 0~20 帧。

#--------------------------------------------------------------------------
# ● 快捷指令
#--------------------------------------------------------------------------
  # 一般来说,把动作名写入全动作数组才可以完成行动的制作。
  # 其实也可以不设定动作,直接以描述指令,可以减少作业量。
  # 频繁使用快捷方式可以减少记录的动作数量,因此推荐使用。
  #
  # [战斗动画]
  # (例) "anime(20)" ... 在目标上执行数据库中 20 号的动画(有等待)
  # (例) "anime(20,false)" ...在目标上执行数据库中 20 号的动画(无等待)
  # (例) "anime_me(20)" ...自身执行数据库中 20 号的动画(有等待)
  # (例) "anime_me(20,false)" ...自身执行数据库中 20 号的动画(无等待)
  #
  # [等待 按索引延迟] ※ 根据角色在队伍中的索引,给等待加上延迟。
  # (例) "delay(12)"...1号队员等待 0 帧 2号队员等待12帧 3号队员等待24帧...
  #
  # [音效(SE)]
  # (例) "se('Bow1')" ...播放文件名名为Bow1的SE。
  # (例) "se('Bow1',50)" ...音量设为 50,播放文件名名为Bow1的SE。
  #
  # [强制目标动画(全动画)]
  # (例) "target('ダメージのけぞり')" ...强制目标执行"ダメージのけぞり"动作
  # (例) "target2('被ダメージ')" ...强制第二目标执行"被ダメージ"动作

  }
#==============================================================================
# ■ 全动作
#------------------------------------------------------------------------------
#   将动作组合起来,从左到右顺次执行。
#   全动作中可以加入全动作,可以方便动作的元件化、条件分歧后放入全动作等方面。
#==============================================================================
  FULLACTION = {

  # 待机系
  "通常待機"        => ["待機"],
  "通常战车待機"    => ["战车待機"],
  "通常待機固定"    => ["待機固定WT"],
  "ピンチ待機"      => ["状態異常/ピンチ","ピンチ色調","待機","待機"],
  "战车ピンチ待機"  => ["状態異常/ピンチ","ピンチ色調","战车待機","战车待機"],
  "防御待機"        => ["待機固定WT"],
  "战车防御待機"    => ["战车待機固定WT"],
  "毒待機"          => ["状態異常/汎用","毒色調","待機","待機","エネミー限定","80"],
  "战车毒待機"      => ["状態異常/汎用","毒色調","战车待機","战车待機","エネミー限定","80"],
  "超级防御待機"    => ["盾牌待機固定"],
  #"睡眠待機"        => ["状態異常/睡眠","エネミー限定","40","エネミー中止","倒れ","倒れ"],
  "睡眠待機"        => ["状態異常/睡眠","汎用状態異常色調","待機","待機","エネミー限定","80"],
  "汎用状態異常待機"=> ["状態異常/汎用","汎用状態異常色調","待機","待機","エネミー限定","80"],
  "様子見"          => ["待機","60"],
  "戦闘不能"        => ["倒れ"],

  # 系统系
  "戦闘開始味方"     => ["戦闘前の味方配置","delay(4)","座標リセット左向き"],
  "戦闘開始战车味方" => ["戦闘前の战车味方配置","delay(4)","归零刷新","战车刷新","战车座標リセット左向き"],
  "味方退場"        => ["退場"],
  "战车味方退場"    => ["战车退場"],
  "逃走"            => ["対象アニメ","カメラリセット","delay(4)","退場"],
  "战车逃走"        => ["対象アニメ","カメラリセット","delay(4)","战车退場"],
  "敵逃走"          => ["対象アニメ","逃走透明","退場"],
  "逃走失敗"        => ["カメラリセット","delay(4)","逃走途中","一歩後移動","座標リセット左向き"],
  "战车逃走失敗"    => ["カメラリセット","delay(4)","战车逃走途中","战车一歩後移動","战车座標リセット左向き"],
  "コマンド入力"    => ["戦闘アニメ消去","コマンド入力移動"],
  "战车コマンド入力" => ["戦闘アニメ消去","战车コマンド入力移動"],
  "コマンド入力終了"=> ["座標リセット早"],
  "战车コマンド入力終了"=> ["战车座標リセット早"],
  "コマンド後防御"  => ["待機固定WT"],
  "コマンド後魔法"  => ["待機固定","魔法詠唱中"],
  "コマンド後特技"  => ["待機固定","特技待機中"],#"待機固定"
  "战车コマンド後魔法" => ["战车待機固定","魔法詠唱中"],
  "战车コマンド後特技" => ["战车待機固定","特技待機中"],
  "防御"            => ["対象アニメ","待機固定WT"],
  "战车防御"        => ["対象アニメ","战车待機固定WT"],
  "回避"            => ["アクター限定","右1回転","10","座標リセット左向き"],
  "战车回避"        => ["10","战车座標リセット左向き"],
  "盾ガード"        => ["se('Evasion2')","盾防御","60"],
  "身代わり開始"    => ["敵中移動早","初期位置変更"],
  "身代わり終了"    => ["初期位置変更解除","座標リセット左向き"],
  "被身代わり開始"  => ["一歩後移動","一歩後移動","待機固定WT"],
  "被身代わり終了"  => ["座標リセット左向き"],
  "勝利ポーズ振り"  => ["戦闘アニメ消去","勝利ジャンプ武器","勝利ジャンプ着地","120"],
  "勝利ポーズバク転"=> ["戦闘アニメ消去","右1回転","勝利ジャンプ","拳限定","武器拳突き","拳除外","武器振りR","120"],
  "閃き"            => ["anime_me(119)","20"],

  # 反作用系
  "被ダメージ"      => ["ダメージのけぞり","座標リセット左向き"],
  "战车被ダメージ"  => ["ダメージのけぞり","战车座標リセット左向き"],
  "被ダメージ大"    => ["シェイク中","ダメージのけぞり大","座標リセット左向き"],
  "战车被ダメージ大" => ["シェイク中","ダメージのけぞり大","战车座標リセット左向き"],
  "縦揺れ"          => ["縦揺れ01","縦揺れ02","縦揺れ01","縦揺れ02","縦揺れ01","縦揺れ02"],

  # 快捷方式系(给其它全动作中调用)
  "斬り"            => ["武器振りR","対象アニメ武器","10"],
  "拳"              => ["武器拳突き","対象アニメ武器","10"],
  "弓"              => ["Bow1","弓撃ち","矢発射","9"],
  "攻撃"            => ["拳限定","拳","弓限定","弓","拳弓除外","斬り"],
  "通常攻撃始め"    => ["敵前移動","コラプス禁止","個別開始","二刀流限定","二刀左"],
  "通常攻撃始め2"    => ["コラプス禁止","個別開始","二刀流限定","二刀左"],

  "通常攻撃終わり"  => ["死亡確認","対象アニメ武器WT","個別終了","コラプス禁止解除","次の行動者へ","座標リセットカーブ"],
  "二刀左"          => ["武器振りL","対象アニメ武器LWT"],
  "特技発動"        => ["一歩前移動","特技発動アニメ"],
  "魔法発動"        => ["一歩前移動","武器掲げ","魔法発動アニメ"],
  "カットイン"      => ["カットイン背景始","カットイン分歧","70","カットイン終","カットイン背景終","20"],
  "カットイン分歧"  => ["アクターID1限定","カットインA1","アクターID2限定","カットインA2","アクターID6限定","カットインA3","アクターID7限定","カットインA4"],
  "死亡フラグ動画"  => ["白フェードイン","50","死亡フラグムービー","白フェードアウト","50"],
  "背景を宇宙に"    => ["ズームアウト","se('Blind',70)","背景のみ暗転","自分以外己方全体員","強制2","透明化","透明化","40","背景を宇宙に変更","色調初期化"],
  "背景宇宙解除"    => ["カメラリセット","背景のみ暗転","target2('透明化解除WT')","透明化解除","40","背景宇宙を解除","色調初期化"],
  "魔方陣表示"      => ["se('Blind',70)","画面固定","魔方陣ON","サークル"],
  "魔方陣消去"      => ["40","画面固定","魔方陣OFF","サークル"],

  # 普通攻击系
  "通常攻撃"        => ["通常攻撃始め","待機固定","通常攻撃終わり"],
  "斬り攻撃"        => ["通常攻撃始め","死亡確認","武器振りR","通常攻撃終わり"],
  "咬り攻撃"        => ["通常攻撃始め","死亡確認","咬","個別終了","コラプス禁止解除","次の行動者へ","座標リセットカーブ"],
  "拳攻撃"          => ["通常攻撃始め","武器拳突き","通常攻撃終わり"],
  "突き攻撃"        => ["通常攻撃始め","武器突き","通常攻撃終わり"],
  "弓攻撃"          => ["一歩前移動","コラプス禁止","個別開始","Bow1","弓撃ち",
                        "矢発射WT","個別終了","コラプス禁止解除","座標リセット"],
  "爪攻击"        => ["通常攻撃始め","死亡確認","爪K","個別終了","コラプス禁止解除","次の行動者へ","座標リセットカーブ"],

  "主炮攻击"      => ["個別開始","主炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "加农炮攻击"      => ["個別開始","加农炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "火花炮攻击"      => ["個別開始","火花炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "远程炮攻击"      => ["個別開始","远程炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "武魂炮攻击"       => ["個別開始","武魂炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "主炮爆射炮攻击"      => ["個別開始","主炮爆射炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "萌萌主炮攻击"      => ["個別開始","萌萌主炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

  "测试主炮攻击"      => ["個別開始","测试主炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "测试副炮攻击"      => ["個別開始","测试副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],   
"普通双子炮攻击"      => ["個別開始","普通双子炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"毁灭爆射炮攻击"   => ["個別開始","毁灭爆射炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],  
"杰克爆射炮攻击"   => ["個別開始","毁灭爆射炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"测试红狼攻击"      => ["個別開始","测试红狼弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],   
"水母速射炮攻击" => ["個別開始","水母速射炮弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"激钢钻头攻击"   => ["個別開始","激钢钻头弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"激钢蓝钻头攻击" => ["個別開始","激钢蓝钻头弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

#  "S-E01"        => ["個別開始","S-E01弹道","個別終了",
#                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "古炮攻击"      => ["战车一歩前移動","個別開始","古炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "撞击"          => ["通常攻撃始め","待機固定","シェイク大","ダメージアニメ","80","座標リセット"],
  "手枪攻撃"      => ["一歩前移動","コラプス禁止","個別開始","Gun1","铳撃ち",
                      "铳発射WT","個別終了","コラプス禁止解除","座標リセット"],
  "全体手枪攻击"  => ["一歩前移動","コラプス禁止","個別開始","Gun1","铳撃ち",
                      "全体枪击","個別終了","コラプス禁止解除","座標リセット"],                    
  "激光枪攻击"      => ["一歩前移動","コラプス禁止","個別開始","激光枪待机","激光弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],                 

  #以下SE
  "SE导弹攻击"      => ["個別開始","SE导弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE导弹群攻击"      => ["個別開始","SE导弹弹道群","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE弹炮攻击"      => ["個別開始","SE炮弹弹道1","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE拉卡攻击"      => ["個別開始","SE炮弹弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE巨炮攻击"      => ["個別開始","SE巨炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE台风攻击"        => ["個別開始","SE台风弹道1","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE托卢攻击"      => ["個別開始","空弹道","SE托卢弹道","SE群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE激光炮C攻击"      => ["個別開始","空弹道","10","005-SE-激光","激光炮C弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE音波攻击"      => ["個別開始","空弹道","10","音波枪2弹道","5","音波枪2弹道","5","音波枪2弹道","30","无动画弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE音波群攻击"      => ["個別開始","空弹道","10","音波枪弹道","5","音波枪弹道","5","音波枪弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE火焰攻击"      => ["個別開始","SE火焰弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE火焰攻击1"      => ["個別開始","SE火焰弹道1","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "SE汽弹攻击"      => ["個別開始","SE火焰弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "S-E01"           => ["個別開始","S-E01弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "S-E02"           => ["個別開始","S-E02弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "S-E03"           => ["個別開始","空弹道","S-E03弹道","個別終了","50","個別開始","S-E03+1弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "S-E04"           => ["個別開始","S-E04弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "S-E05"           => ["個別開始","S-E05弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "毒气01"           => ["個別開始","毒气01弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "绝对真理"         => ["個別開始","绝对真理弹道","1","绝对真理弹道","1","绝对真理弹道","1","绝对真理弹道2","10","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "毁灭内爆弹"       => ["個別開始","毁灭内爆弹弹道","1","毁灭内爆弹弹道","1","毁灭内爆弹弹道","1","毁灭内爆弹弹道2","10","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
"一发逆转神话攻击"    => ["個別開始","空弹道","一发逆转神话弹道","SE群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                  
"炸裂中子弹攻击"      => ["個別開始","炸裂中子弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"碎蜂导弹攻击"      => ["個別開始","碎蜂导弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],            
                        #以下副炮
  "范围激光副炮攻击"      => ["個別開始","范围激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "激光副炮攻击"          => ["個別開始","激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "范围电气副炮攻击"      => ["個別開始","范围电气弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "毁灭风暴攻击"      => ["個別開始","毁灭风暴弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电气副炮攻击"          => ["個別開始","电气弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "雷射激光副炮攻击"      => ["個別開始","雷射激光弹道","5","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "激钢镭射攻击"          => ["個別開始","激钢镭射弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠地狱火攻击"        => ["個別開始","死亡確認","沙漠之舟火焰弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  #以下人类武器
  "弹弓攻击"        => ["一歩前移動","コラプス禁止","個別開始","弹弓待机","弹弓弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "等离子核聚变弹弓攻击"        => ["一歩前移動","コラプス禁止","個別開始","等离子核聚变弹弓待机","等离子核聚变弹弓弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "弩攻击"          => ["一歩前移動","コラプス禁止","個別開始","弩待机","弩弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "手枪攻击"        => ["一歩前移動","コラプス禁止","個別開始","手枪待机","空弹道","10","手枪开枪弹道","手枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "回旋镖"          => ["一歩前移動","コラプス禁止","個別開始","回旋镖弹道1","回旋镖弹道2","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "长枪攻击"        => ["一歩前移動","コラプス禁止","個別開始","长枪待机","空弹道","10","长枪开枪弹道","长枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "火枪攻击"        => ["一歩前移動","コラプス禁止","個別開始","手枪待机","空弹道","10","手枪开枪弹道","火枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "火焰枪攻击"      => ["一歩前移動","コラプス禁止","個別開始","火焰枪待机","火焰枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "火焰炮攻击"      => ["一歩前移動","コラプス禁止","個別開始","火焰枪待机","火焰炮弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "排炮攻击"        => ["一歩前移動","コラプス禁止","個別開始","排炮待机","空弹道","10","排炮弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "激光手枪攻击"    => ["一歩前移動","コラプス禁止","個別開始","来福枪待机","空弹道","10","激光手枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "声纳枪攻击"      => ["一歩前移動","コラプス禁止","個別開始","声纳枪待机","空弹道","10","声纳枪弹道","5","声纳枪弹道","5","声纳枪弹道","30","无动画弹道","40","コラプス禁止解除","次の行動者へ","座標リセット"],
  "音波枪攻击"      => ["一歩前移動","コラプス禁止","個別開始","音波枪待机","空弹道","10","音波枪弹道","5","音波枪弹道","5","音波枪弹道","30","无动画群体弹道","40","コラプス禁止解除","次の行動者へ","座標リセット"],
  "火箭炮攻击"      => ["一歩前移動","コラプス禁止","個別開始","火箭炮待机","空弹道","10","火箭炮弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "迫击炮攻击"      => ["死亡確認","一歩前移動","死亡確認","コラプス禁止","死亡確認","個別開始","死亡確認","火箭炮待机","死亡確認","空弹道","10","死亡確認","迫击炮弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "激光炮A攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","空弹道","10","激光炮A弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "激光炮B攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","空弹道","10","激光炮B弹道","激光炮B2弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "激光炮C攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","死亡確認","空弹道","10","005-SE-激光","激光炮C弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "激光炮D攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","空弹道","10","激光炮D弹道","5","激光炮D弹道","5","激光炮D弹道","30","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "狰狞怨攻击"      => ["一歩前移動","コラプス禁止","個別開始","狰狞怨待机","空弹道","2","狰狞怨弹道","2","狰狞怨弹道","2","狰狞怨弹道","2","狰狞怨弹道","30","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "硫酸炮攻击"      => ["一歩前移動","コラプス禁止","個別開始","火箭炮待机","空弹道","10","农酸炮弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "钢刀攻击"        => ["通常攻撃始め","死亡確認","钢刀待机","通常攻撃終わり"],
  "战斧攻击"        => ["通常攻撃始め","死亡確認","战斧待机","通常攻撃終わり"],  
  
  "怪物激光枪"      => ["战车一歩前移動","個別開始","怪物激光枪弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  
  "测试聚能攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","空弹道","10","测试武器弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  
  "副炮攻击"        => ["個別開始","副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "范围副炮攻击"     => ["個別開始","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],         
  "毁灭激光炮攻击"     => ["一歩前移動","コラプス禁止","個別開始","激光炮待机","空弹道","10","毁灭激光炮弹道","毁灭激光炮爆炸弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "制空激光炮攻击"     => ["一歩前移動","コラプス禁止","個別開始","制空激光炮待机","空弹道","10","制空激光炮弹道","制空激光炮爆炸弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "连击凤凰攻击"      => ["一歩前移動","コラプス禁止","個別開始","火焰枪待机","连击凤凰弹道","5","连击凤凰弹道","5","连击凤凰弹道","5","连击凤凰弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "蓄力打击"          => ["個別開始","特技発動アニメ","個別終了"],
  #以下怪物技能
  "火焰枪G攻击"      => ["一歩前移動","コラプス禁止","個別開始","火焰枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "副炮单G攻击"        => ["生物炮k","個別開始","怪物副炮小弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "指挥车G攻击"     => ["指挥车k","個別開始","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],         
  "仿生蜗牛G攻击"   => ["仿生蜗牛k","個別開始","弹弓弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "加农炮G攻击"      => ["加农炮k","個別開始","加农炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "火焰炮G攻击"      => ["個別開始","火焰炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "波特火焰炮G攻击"      => ["個別開始","波特火焰炮G弹道","4","波特火焰炮G弹道","4","波特火焰炮G弹道","4","波特火焰炮2G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

  "巨型炮S-E攻击"           => ["個別開始","巨型炮S-E弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "机械蚓G攻击"   => ["机械蚓k","個別開始","弹弓弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "步枪鸟G攻击"     => ["步枪鸟k","個別開始","怪物副炮小弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "酸蚁G攻击"      => ["一歩前移動","コラプス禁止","個別開始","酸蚁弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "坦克G攻击"      => ["坦克k","個別開始","加农炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "暗堡G攻击"        => ["暗堡k","個別開始","怪物副炮小弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "章鱼坦克G攻击"      => ["章鱼坦克k","個別開始","章鱼炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "怪物弓攻击"      => ["個別開始","怪物弓弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "战狗G攻击"      => ["战狗k","個別開始","战狗G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "导弹蛙G攻击"           => ["個別開始","S-E02弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "激光虫G攻击"     => ["一歩前移動","コラプス禁止","個別開始","空弹道","10","激光手枪弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "毒气弹01G攻击"           => ["章鱼炮k","個別開始","毒气弹01弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "声纳蛇G攻击"      => ["個別開始","空弹道","10","声纳蛇弹道","5","声纳蛇弹道","5","声纳蛇弹道","30","无动画弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "激光蚓G攻击"           => ["個別開始","激光蚓弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "车载炮G攻击"      => ["個別開始","车载炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "声纳炮G攻击"      => ["個別開始","空弹道","10","音波炮G弹道","5","音波炮G弹道","5","音波炮G弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "声纳炮G1攻击"      => ["個別開始","空弹道","10","音波炮G1弹道","5","音波炮G1弹道","5","音波炮G1弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "机械蟹G攻击"        => ["机械蟹k","個別開始","怪物副炮小弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "机械蟹SEG攻击"           => ["個別開始","机械蟹SE弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "象G攻击"           => ["個別開始","象G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "象2G攻击"           => ["個別開始","象2G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

  "无坐力炮激光G攻击"           => ["個別開始","无坐力炮激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "无坐力炮副炮G攻击"           => ["无坐力炮k","個別開始","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "无坐力炮SEG攻击"           => ["個別開始","无坐力炮SE弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "毒蜂G攻击"           => ["個別開始","毒蜂弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠虎G攻击"      => ["沙漠虎k","個別開始","沙漠虎主炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "霸王花转头G攻击"      => ["個別開始","霸王花转头弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "霸王花咬攻击"        => ["通常攻撃始め","死亡確認","咬2","個別終了","コラプス禁止解除","次の行動者へ","座標リセットカーブ"],
  "甲壳虫战车G攻击"      => ["個別開始","甲壳虫战车弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "蜈蚣汽弹G攻击"      => ["個別開始","死亡確認","SE火焰弹道3","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "群撞击"          => ["通常攻撃始め2","待機固定","シェイク大","ダメージアニメ","80","座標リセット"],
  "蜈蚣王群撞击"    => ["個別開始","待機固定","无动画群体弹道","シェイク大","ダメージアニメ","80","座標リセット"],
  "自爆G"      => ["個別開始","敵前移動2","10","无动画弹道2","10","死亡音效","不能战斗","透明化WT","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "AT坦克G攻击"      => ["AT坦克k","個別開始","AT坦克G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "AT坦克2G攻击"      => ["AT坦克2k","個別開始","AT坦克2G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠虎激光G攻击"  => ["個別開始","空弹道","沙漠虎激光G弹道","25","沙漠虎激光G弹道01","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟G攻击"      => ["沙漠之舟k","個別開始","沙漠之舟G弹道B","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟1G攻击"      => ["沙漠之舟1k","個別開始","沙漠之舟G弹道1","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟2G攻击"      => ["沙漠之舟2k","個別開始","沙漠之舟G弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟3G攻击"      => ["沙漠之舟3k","個別開始","沙漠之舟G弹道3","死亡確認","沙漠之舟3k","死亡確認","沙漠之舟G弹道3","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟副炮G攻击"     => ["沙漠之舟副炮k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟激光1G攻击"           => ["個別開始","沙漠之舟激光弹道1","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟激光2G攻击"           => ["個別開始","沙漠之舟激光弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "沙漠之舟火焰G攻击"      => ["個別開始","死亡確認","沙漠之舟火焰弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "反坦克兵G攻击"      => ["個別開始","反坦克兵弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "离子坦克G攻击"      => ["個別開始","离子坦克弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "离子坦克2G攻击"      => ["個別開始","离子坦克2弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
  "弗兰克开枪G攻击"     => ["弗兰克开枪k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "弗兰克榴弹G攻击"      => ["個別開始","弗兰克榴弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "弗兰克声纳炮G攻击"      => ["個別開始","空弹道","10","弗兰克音波G弹道","5","弗兰克音波G弹道","5","弗兰克音波G弹道","30","无动画弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "乐狂开枪G攻击"     => ["乐狂开枪k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "乐狂吉他G攻击"     => ["乐狂吉他k","個別開始","死亡確認","乐狂吉他2k","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "乐狂口哨G攻击"     => ["乐狂口哨k","個別開始","无动画弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "乐狂导弹G攻击"     => ["個別開始","死亡確認","乐狂导弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器激光G攻击" => ["個別開始","防御机器激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器开枪1G攻击"     => ["防御机器开枪1k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器开枪2G攻击"     => ["防御机器开枪2k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器主炮G攻击"      => ["防御机器主炮k","個別開始","防御机器主炮G弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器SE攻击"      => ["個別開始","防御机器SE弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "防御机器离子攻击"      => ["個別開始","离子坦克3弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "帕鲁开枪G攻击"     => ["帕鲁开枪k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "帕鲁主炮G攻击"      => ["帕鲁主炮k","個別開始","帕鲁主炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "帕鲁SEG攻击"      => ["個別開始","帕鲁SEG弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪1G攻击"     => ["电脑墙开枪1k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪2G攻击"     => ["电脑墙开枪2k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪3G攻击"     => ["电脑墙开枪3k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪4G攻击"     => ["电脑墙开枪4k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪5G攻击"     => ["电脑墙开枪5k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪6G攻击"     => ["电脑墙开枪6k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙低音波G攻击"     => ["电脑墙低音波k","個別開始","死亡確認","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙高音波1G攻击"      => ["电脑墙高音波k","個別開始","空弹道","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙高音波2G攻击"      => ["個別開始","空弹道","10","电脑墙G1弹道","1","电脑墙G2弹道","1","电脑墙G3弹道","5","电脑墙G1弹道","1","电脑墙G2弹道","1","电脑墙G3弹道","5","电脑墙G1弹道","1","电脑墙G2弹道","1",
                         "电脑墙G3弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪7G攻击"     => ["电脑墙开枪7k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开枪8G攻击"     => ["电脑墙开枪8k","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开炮1G攻击"      => ["电脑墙开炮1k","個別開始","电脑墙G4弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开炮2G攻击"      => ["电脑墙开炮2k","個別開始","电脑墙G5弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开炮3G攻击"      => ["电脑墙开炮3k","個別開始","电脑墙G6弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙激光G攻击"     => ["2","电脑墙激光k","個別開始","死亡確認","20","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开炮4G攻击"      => ["电脑墙开炮4k","個別開始","电脑墙G7弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "电脑墙开炮5G攻击"      => ["电脑墙开炮5k","個別開始","电脑墙G8弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "机器人激光G攻击"           => ["個別開始","机器人激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "机器人离子G攻击"      => ["机器人离子k","個別開始","机器人离子弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "诺亚1G攻击"      => ["诺亚1k","個別開始","机器人激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "诺亚2G攻击"      => ["诺亚2k","诺亚3k","個別開始","诺亚G弹道","1","诺亚G弹道","1","诺亚G弹道","1","诺亚G2弹道","10","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
  "诺亚离子炮攻击2"  => ["诺亚离子炮","诺亚离子炮后","個別開始","诺亚离子弹道","1","诺亚离子弹道","1","诺亚离子弹道","1","诺亚离子弹道2","10","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

                        #小七新增---------------------------------------------------------------------------------                    
"守护者1攻击"       => ["個別開始","守护者弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"出租战车a截击攻击"  => ["個別開始","空弹道","10","出租战车a截击弹道","5","出租战车a截击弹道","5","出租战车a截击弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"出租战车a主炮攻击" => ["個別開始","出租战车a主炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"出租战车a副炮攻击"  => ["個別開始","出租战车a副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],   
"毒蜘蛛王攻击a"    => ["一歩前移動","コラプス禁止","個別開始","毒蜘蛛王毒弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
"水怪喷火攻击a"      => ["個別開始","水怪喷火弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"蜈蚣毒气弹01G攻击"           => ["章鱼炮k","個別開始","毒气弹01弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"军舰雷龙SE攻击"      => ["個別開始","军舰雷龙se弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"军舰雷龙主炮a攻击"   => ["沙漠之舟k","個別開始","军舰雷龙主炮a弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚SE音波群攻击"      => ["個別開始","空弹道","10","诺亚音波枪弹道","5","诺亚音波枪弹道","5","诺亚音波枪弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
"诺亚SE音波群攻击2"      => ["個別開始","空弹道","10","诺亚音波枪弹道2","5","诺亚音波枪弹道2","5","诺亚音波枪弹道2","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],  
"诺亚SE音波单体攻击"     => ["個別開始","空弹道","10","诺亚音波枪单体弹道","5","诺亚音波枪单体弹道","5","诺亚音波枪单体弹道","30","无动画单体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚激光单体攻击"           => ["個別開始","诺亚激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚激光单体攻击2"           => ["個別開始","诺亚激光弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚机枪全体攻击"     => ["诺亚副炮1","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚机枪全体攻击2"     => ["诺亚副炮2","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"诺亚激光板全体攻击"     => ["コラプス禁止","空弹道","10","诺亚激光板弹道","诺亚激光板弹道2",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"天空流浪犬机枪全体攻击"     => ["天空流浪犬全体副炮","個別開始","死亡確認","范围副炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"天空流浪犬回旋"        => ["コラプス禁止","個別開始","天空流浪犬回旋弹道1","天空流浪犬回旋弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"天空流浪犬导弹攻击"      => ["個別開始","天空流浪犬导弹弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"警备激光攻击"         => ["個別開始","空弹道","警备激光弹道","25","警备激光弹道01","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"警备单体激光攻击"      => ["個別開始","警备单体激光弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"雷龙爆射炮攻击"   => ["個別開始","雷龙爆射炮弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"雷龙一动不动"     => [ "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                    
                        
"阿拉莫·杰克冲撞2"  => ["個別開始","敵前移動2","无动画弹道2","10","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],  
"阿拉莫·杰克冲撞"    => ["個別開始","自分とターゲット以外暗転","敵前跳动","毁灭激光炮爆炸弹道","15",
                        "残像ON","対象アニメ","色調初期化","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"阿拉莫·杰克冲撞3"   => ["コラプス禁止","個別開始","立即透明化","冲撞弹道1","冲撞弹道2","透明化解除","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"杰克全体导弹攻击"      => ["個別開始","杰克全体导弹","250","无动画群体弹道","10","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
                        
"杰克瞄准导弹攻击"      => ["個別開始","杰克瞄准","瞄准单体导弹","瞄准导弹","爆炸弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"杰克瞄准二次导弹攻击"     => ["個別開始","杰克瞄准","瞄准单体导弹","4","瞄准单体导弹","瞄准导弹","爆炸弹道","1","瞄准导弹","爆炸弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                        # 技能系
"杰克激光攻击"           => ["個別開始","空弹道","杰克激光弹道","25","沙漠虎激光G弹道01","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],  
"杰克全体风暴攻击"      => ["個別開始","杰克风暴弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                        
"杰克单体风暴攻击"      => ["個別開始","杰克单体风暴弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ",],
"亚当蚁酸攻击"      => ["一歩前移動","コラプス禁止","個別開始","亚当蚁酸弹道", "個別終了","一歩後移動",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                        
"凤凰回旋"        => ["コラプス禁止","個別開始","凤凰回旋弹道1","凤凰回旋弹道2","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"凤凰麻痹电击攻击"      => ["個別開始","凤凰麻痹电击弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"凤凰咆哮攻击"       => ["個別開始","凤凰咆哮","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                        
"凤凰音波群攻击"      => ["個別開始","空弹道","10","凤凰音波弹道","5","凤凰音波弹道","5","凤凰音波弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                                             
"凤凰音波多重攻击"      => ["個別開始","空弹道","10","凤凰音波单弹道","5","凤凰音波单弹道","5","凤凰音波单弹道","30","无动画弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"浴火凤凰攻击"      => ["個別開始","浴火凤凰","无动画单体弹道", "個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                                                                     
"火星水母速射炮a攻击" => ["個別開始","火星水母速射炮弹道a","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮b攻击" => ["個別開始","火星水母速射炮弹道b","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮c攻击" => ["個別開始","火星水母速射炮弹道c","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮d攻击" => ["個別開始","火星水母速射炮弹道d","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母激光a攻击" => ["個別開始","火星水母激光弹道a","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母激光b攻击" => ["個別開始","火星水母激光弹道b","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母激光c攻击" => ["個別開始","火星水母激光弹道c","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母激光d攻击" => ["個別開始","火星水母激光弹道d","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母音波a攻击" => ["個別開始","空弹道","10","火星水母音波弹道a","5","火星水母音波弹道a","5","火星水母音波弹道a","30","无动画弹道","40","個別終了",
  "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"火星水母音波b攻击" => ["個別開始","空弹道","10","火星水母音波弹道b","5","火星水母音波弹道b","5","火星水母音波弹道b","30","无动画弹道","40","個別終了",
  "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"火星水母音波c攻击" => ["個別開始","空弹道","10","火星水母音波弹道c","5","火星水母音波弹道c","5","火星水母音波弹道c","30","无动画弹道","40","個別終了",
  "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"火星水母音波d攻击" => ["個別開始","空弹道","10","火星水母音波弹道d","5","火星水母音波弹道d","5","火星水母音波弹道d","30","无动画弹道","40","個別終了",
  "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"火星水母离子a攻击" => ["個別開始","火星水母离子弹道a","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母离子b攻击" => ["個別開始","火星水母离子弹道b","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母离子c攻击" => ["個別開始","火星水母离子弹道c","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母离子d攻击" => ["個別開始","火星水母离子弹道d","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮连击a攻击" => ["個別開始","火星水母速射炮弹道a","5","火星水母速射炮弹道a","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮连击b攻击" => ["個別開始","火星水母速射炮弹道b","5","火星水母速射炮弹道b","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮连击c攻击" => ["個別開始","火星水母速射炮弹道c","5","火星水母速射炮弹道c","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮连击d攻击" => ["個別開始","火星水母速射炮弹道d","5","火星水母速射炮弹道d","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母速射炮全射攻击" => ["個別開始","齐射火星水母速射炮弹道a","5","齐射火星水母速射炮弹道b","5","齐射火星水母速射炮弹道c","5","齐射火星水母速射炮弹道d","5","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母激光全射攻击" => ["個別開始","齐射火星水母激光弹道a","5","齐射火星水母激光弹道b","5","齐射火星水母激光弹道c","5","齐射火星水母激光弹道d","5","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母音波全射攻击" => ["個別開始","空弹道","10","齐射火星水母音波弹道a","齐射火星水母音波弹道b","齐射火星水母音波弹道c","齐射火星水母音波弹道d","无动画弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"火星水母离子全射攻击" => ["個別開始","齐射火星水母离子弹道a" ,"5","齐射火星水母离子弹道b" ,"5","齐射火星水母离子弹道c" ,"5","齐射火星水母离子弹道d" ,"5","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"天道机甲加农炮攻击"   => ["個別開始","天道机甲加农炮弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],  
"天道机甲音波群攻击"      => ["個別開始","空弹道","10","天道机甲音波群弹道","5","天道机甲音波群弹道","5","天道机甲音波群弹道","30","无动画群体弹道","40","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                                             
"天道机甲音波攻击" => ["個別開始","空弹道","10","天道机甲音波弹道","5","天道机甲音波弹道","5","天道机甲音波弹道","30","无动画弹道","40","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],     
"天道机甲激光攻击" => ["個別開始","天道机甲激光弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"天道机甲冰攻击" => ["個別開始","天道机甲se冰弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"伪装迷彩开启"   => ["個別開始","无动画单体弹道","伪装迷彩透明化","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"伪装迷彩关闭"   => ["個別開始","无动画单体弹道","伪装迷彩透明化消失","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"怪物逃跑"       => ["個別開始","一歩後移動","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"boss喷火攻击"   => ["個別開始","boss喷火","无动画群体弹道", "個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                                                                     
"古战车激光攻击" => ["個別開始","古战车扫描激光蓄力","古战车扫描激光","无动画群体弹道", "個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                                                                     
"古战车速射炮攻击" => ["個別開始","古战车速射炮弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],
"古战车激光攻击"   => ["個別開始","古战车激光弹道","個別終了","コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],

#---------------------------------------------------------------------------------------------------------------------
#技能系
                        "汎用スキル"      => ["特技発動","武器振りR","ダメージアニメ","座標リセット"],
  "汎用魔法"        => ["魔法発動","武器振りR","ダメージアニメ","座標リセット"],

  "水鉄砲"          => ["特技発動","武器振りR","水鉄砲発射","座標リセット"],
  "武器投げ"        => ["特技発動","Bow1","武器振りR","6","待機固定","武器投げ開始","武器投げ戻し","座標リセット"],
  "カットイン攻撃"  => ["特技発動","カットイン","攻撃","座標リセット"],
  "ムービー攻撃"    => ["特技発動","待機固定","死亡フラグ動画","通常攻撃始め","武器振りR","通常攻撃終わり"],
  "オオカミ変身"    => ["特技発動","anime(110,false)","オオカミに変身","待機固定","120","座標リセット"],
  "5回攻撃"         => ["特技発動","コラプス禁止","弓除外","敵前移動","攻撃","攻撃","攻撃","攻撃","攻撃","コラプス禁止解除","座標リセット"],
  "スキル派生"      => ["武器投げ","多段攻撃に派生","斬り攻撃"],
  "背景変更攻撃"    => ["魔法発動","武器振りR","背景を宇宙に","ダメージアニメ","背景宇宙解除","座標リセット"],
  "ピクチャ攻撃"    => ["魔法発動","魔方陣表示","武器振りR","anime(80,false)","60","シェイク大","対象アニメ","魔方陣消去","座標リセット"],
  "暗転攻撃"        => ["特技発動","自分とターゲット以外暗転","se('Laser',150)",
                        "残像ON","敵前移動","anime(35,false)","敵後移動","対象アニメ",
                        "武器振りR","20","色調初期化","座標リセット","残像OFF"],
  "空中攻撃"        => ["特技発動","Bow1","一歩前ジャンプ","叩き付け前ジャンプ",
                        "待機固定","左1回転","10","anime(117,false)","叩き付け",
                        "対象アニメ","シェイク中","強制","縦揺れ","20",
                        "一歩後ジャンプ","座標リセット"],
  "冲击"          => ["特技発動","自分とターゲット以外暗転","se('Laser',150)",
                        "残像ON","敵前移動","anime(35,false)","敵後移動","対象アニメ",
                        "武器振りR","色調初期化","退場2","残像OFF"],

  "台风手刀攻撃"     => ["個別開始","敵前移動2","人类-台风手刀","20","无动画单体弹道","20","无动画单体弹道","20","无动画单体弹道","20","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "爆裂拳攻撃"       => ["個別開始","敵前移動2","人类-爆裂拳","20","无动画单体弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],

  "盾牌防御"           => ["対象アニメ","盾牌待机1"],
  "轨道脉冲炮攻击"      => ["個別開始","轨道脉冲炮","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],   
  "超级轨道脉冲炮攻击"   => ["個別開始","超级轨道脉冲炮","无动画群体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],   

  "战车冲撞攻击"       => ["個別開始","战车一歩前冲撞","战车冲撞单体弹道","個別終了",
                        "コラプス禁止解除","次の行動者へ","战车座標リセット左向き"],                       
                        
                        # 道具系
  "アイテム使用"     => ["敵前移動","待機固定","対象アニメWT","座標リセット左向き"],
  "药使用"          => ["一歩前移動","コラプス禁止","個別開始","药W","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "兴奋剂"          => ["一歩前移動","コラプス禁止","個別開始","兴奋剂W","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "外道兴奋剂"      => ["一歩前移動","コラプス禁止","個別開始","外道兴奋剂W","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "状态恢复"        => ["一歩前移動","コラプス禁止","個別開始","状态恢复W","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "烟雾"            => ["一歩前移動","コラプス禁止","個別開始","烟雾W","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "手雷"            => ["一歩前移動","コラプス禁止","個別開始","手雷弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "导弹"            => ["一歩前移動","コラプス禁止","個別開始","导弹弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "榴弹"            => ["一歩前移動","コラプス禁止","個別開始","榴弹弹道","无动画群体弹道","空弹道","40","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "弹弓攻击2"       => ["一歩前移動","コラプス禁止","個別開始","弹弓弹道2","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "等离子核聚变弹弓攻击2"       => ["一歩前移動","コラプス禁止","個別開始","等离子核聚变弹弓弹道2","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "药液"            => ["一歩前移動","コラプス禁止","個別開始","药液弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "火瓶"            => ["一歩前移動","コラプス禁止","個別開始","火瓶弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
  "酸瓶"            => ["一歩前移動","コラプス禁止","個別開始","酸瓶弹道","個別終了","コラプス禁止解除","次の行動者へ","座標リセット"],
}



#==============================================================================
# ■ 战斗程序
#------------------------------------------------------------------------------
#   对战斗场景的演出进行时间管理
#   通过游戏开关、SideView专用开关进行控制
#==============================================================================
  BATTLE_PROGRAM = {

#--------------------------------------------------------------------------
# ● 开关控制  通过开关的时间操作来控制演出
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。设为负数则使用 SideView 专用开关。
  #        开关关闭后,执行中的程序将会终止。
  #        SideView 专用开关在战斗结束后会初始化(全部关闭)
  #        若要在事件中操作 SideView 专用开关,
  #        请执行事件脚本 $sv_camera.switches[1] = true
  #        (1 为操作的开关 ID,打开则设为 true,关闭则设为 false)
  #
  # ON...打开的开关ID。设为负数则使用 SideView 专用开关。
  #      将 ID 全部填入数组中。
  #      例...[1,2,-5] 打开游戏开关 1、2 以及 SideView 专用开关 5
  #
  # OFF...关闭的开关ID。设为负数则使用 SideView 专用开关。
  #       不需要操作时填入 []
  #
  # 时间...执行上述开关操作所需要的时间(单位为帧)
  #        若设为 100,从程序开始 100 帧后执行开关操作
  #        [参考值] 30秒...1800 1分钟...3600 5分钟...18000 10分钟...36000 1小时...216000
  #
  # 随机范围...加进时间的随机值的范围,单位为帧
  #            比如时间300,随机范围300的话,最终的时间将会是 300~600 帧。

  # 程序名                判别     开关    ON       OFF   時間  随机范围
  "背景を砦に"       => ["switch",  -1,   [-2],      [],  1200,     0],
  "背景を海に"       => ["switch",  -2,   [-3],      [],  2400,     0],

#--------------------------------------------------------------------------
# ● 播放 SE/BGM/BGS
#--------------------------------------------------------------------------
  #
  # 开关...作为执行程序的信号的游戏开关ID。设为负数则使用 SideView 专用开关。
  #
  # 类别...音效为"se",BGM为"bgm",BGS为"bgs"
  # 音调...音调。可以指定为 50~150 之间的数值。默认为 100。
  # 音量...音量。可以指定为 50~150 之间的数值。默认为 100。
  # 文件名...要播放的文件名。设为""表示修改其他设定但不更改 BGM、BGS。

  # 程序名                判别   开关  类别   音调  音量 文件名
  "潮騒"            => ["sound",  -1, "bgs",  100,  80, "Sea"],

#--------------------------------------------------------------------------、
# ● 背景的控制 执行更改图片、自动卷动
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。
  # No....所操作的背景的序号。1为地板背景,2为墙壁背景(远景)
  #
  # 卷动速度...背景移动的速度。[X轴, Y轴]
  #            单位为每 100 帧移动的像素数。
  #            要高速移动,请使用 1000 的数量级。
  #
  # BA翻转...被偷袭时背景的X坐标卷动是否反向。图像不会翻转。
  #
  # 图像...如果想要更改背景图,就填入文件名,否则填入 ""
  #        地板背景在 Battlebacks1 文件夹,墙壁背景在 Battlebacks2 文件夹。
  #        更改后的背景设定会继承更改前的设定。
  #
  # 中间图...为了使卷动背景时,背景的更改变得更加自然,所需要的中间图的文件名。
  #          如果卷动过程中背景发生了更改,会在卷动结束后再更改。
  #
  # 插入...显示此背景时是否允许其他背景控制的插入。
  #        允许则填 true(中间图显示时,只有没有卷动的背景可以插入)
  #        不允许则填 false(保留其他的背景控制,直到该背景结束时再进行更改)

  # 程序                 判别   开关  No.   卷动速度    BA翻转   图像        中间图        插入
  "遠景右移動"      => ["scroll", -1,  1, [  40,    0],  true,  "",                 "",  true],
  "海背景3に変更"   => ["scroll", -2,  1, [ 120,    0],  true,  "Sea_ex03", "Sea_ex02",  true],
  "海背景4に変更"   => ["scroll", -3,  1, [  40,    0],  true,  "Sea_ex01", "Sea_ex04",  true],
  "宇宙に変更1"     => ["scroll", -4,  1, [   0,    0],  true,  "DarkSpace",        "", false],
  "宇宙に変更2"     => ["scroll", -4,  2, [   0,    0],  true,  "DarkSpace",        "", false],

#--------------------------------------------------------------------------
# ● 周期图像 周期性地操作瓷砖状的图片。比如风和巨大魔法阵。
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。
  # No....操作的图片编号。显示图片的数量没有限制。
  # 移动速度...每 100 帧图片移动的速度。[X轴, Y轴]。0 表示与背景卷动同步。
  # 时限...该程序执行的时限。单位为帧。设为 0 表示不断循环。
  #
  # 透明操作...图片的透明度操作。[开始透明度, 每 100 帧增加的透明度]
  #            透明度达到 255 时会回到开始的透明度,再重复这样的过程。
  # Z轴...图片的 Z 坐标。设为 100 以上则显示在窗口前方。
  # 允许震动...是否允许与震动动作的震动联动。
  # BA翻转...被偷袭时图片的X坐标卷动是否反向。图像不会翻转。
  # 文件名...图片的文件名。文件在 Pictures 文件夹里。

  # ファイル名...ピクチャのファイル名。Picturesフォルダを参照します
  # 程序名             判别   开关  No.   移动速度     时限    透明操作   Z轴    允许震动 BA翻转 文件名
  "風"            => ["kpic", -1,  0, [  500,    0],    0, [ 255,   0],  90,   false,  true, "back_wind"],
  "魔方陣"        => ["kpic", -5,  1, [    0,    0],    0, [ 255,   0],  90,    true,  true, "magic_square01"],

#--------------------------------------------------------------------------
# ● 周期 SE  周期性地响起音效。比如雷鸣、波涛的声音。
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。
  # 周期...响起音效的周期。单位为帧。以此为间隔,音效会定期响起。
  # 随机范围...加在周期里的随机范围。单位为帧。
  #
  # 音调...音调。可以指定为 50~150 之间的数值。默认为 100。
  # 音量...音量。可以指定为 50~150 之间的数值。默认为 100。
  # 开始执行...程序执行之后,是否不等待一个周期直接响起音效。
  # 文件名...播放的文件名。

  # 程序名               判别     开关 周期  随机范围 音调 音量 开始执行   文件名
  "カモメ"         => ["keep_se", -1,  400,    100,  150,  60,  false,  "Crow"],
  "カモメ2"        => ["keep_se", -1,  300,    200,  140,  45,   true,  "Crow"],

#--------------------------------------------------------------------------
# ● 周期震动  周期性地震动画面
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。开关打开时效果开始。
  # 周期...画面震动的周期。单位为帧。
  # 随机范围...加在周期里的随机范围。单位为帧。
  #
  # 方向...震动的方向 [横, 纵]。数值越大,振幅越大。
  # 速度...震动的速度。数值越小,震动越快。
  # 时间...震动的持续时间。震幅会随着时间逐渐减小、
  # 开始执行...程序执行之后,是否不等待一个周期直接开始震动。

  # 程序名                判别    开关 周期 随机范围   方向  速度  时间 开始执行
  "船の揺れ"       => ["keep_sk", -1,  130,    0,  [  0, 4], 80,  120,  true],

#--------------------------------------------------------------------------
# ● 周期更改色调  周期性地更改画面的色调
#--------------------------------------------------------------------------
  # 开关...作为执行程序的信号的游戏开关ID。开关打开时效果开始。
  # 周期...更改色调的周期。单位为帧。
  # 随机范围...加在周期里的随机范围。单位为帧
  #
  # 对象...更改色调的对象 [0=背景] [1=敌方全体] [2=己方全体] [3=双方全体] [4=全部]
  # 色调...[ R, G, B, alpha(颜色强度), 更改时间, ※返回]
  #        ※返回...更改完成后回到原来的颜色所需要的时间。不还原的话填入 0。
  # 开始执行...程序执行之后,是否不等待一个周期直接更改色调。

  # 程序名                判别   开关   周期 随机范围 对象    R,   G,   B,  alpha 时间 返回  开始执行
  "雷光"            => ["keep_c",  0,  300,  100,     4,  [ 255, 255, 255, 255,   8,   8],  true],
  "エマージェンシー" => ["keep_c",  0,  150,    0,     4,  [ 255,   0,   0, 100,  40,  40],  true],

}
#==============================================================================
# ■ 镜头设定
#------------------------------------------------------------------------------
#   除了动作外,其他战斗场景的各个点上均有镜头。
#   由于动作名会移动镜头,请不要改变名字。
#==============================================================================
  BATTLE_CAMERA = {
#--------------------------------------------------------------------------
# ● 镜头镜头  进行画面的缩放、卷动
#--------------------------------------------------------------------------
  # 对象...移动、缩放的对象 [2=敌方全体] [3=己方全体] [4=双方全体] [6=画面]
  # 调整坐标...微调镜头坐标的最终地点 [X轴(正数为右), Y轴(正数为下)]
  # 时间...镜头动作所需时间
  # 缩放...镜头的缩放率(%)。100 表示无缩放。

  # 动作名              判别     对象   调整坐标   缩放 时间
  "顺序开始前"   => ["camera",   6, [  0,   0],  100, 1],
  "顺序开始后"   => ["camera",   6, [  0,   0],  100, 1],
  "战斗结束时"     => ["camera",   6, [  0,   0],  100, 50],

}
end
VXAce_SP1
#==============================================================================
# ■ VXAce_SP1
#------------------------------------------------------------------------------
#  プリセットスクリプトの不具合を修正します。ユーザー定義のスクリプト素材は、
# 原則としてこのセクションより下に配置してください。
#==============================================================================

#------------------------------------------------------------------------------
# 【修正内容】
#------------------------------------------------------------------------------
# ●イベントコマンド[ステートの変更]にて、同じステートの付加と解除を同時に実
#   行した際、二回目以降の付加が失敗する不具合を修正しました。
# ●イベントコマンド[アニメーションの表示]にて、表示中のアニメーションがマッ
#   プのスクロールに同期しない不具合を修正しました。
# ●自動戦闘の行動が正常に選択されない不具合を修正しました。
# ●装備できなくなった装備品が外れたことにより、さらに別の装備品が装備できなく
#   なったとき、その装備品が増殖してしまう不具合を修正しました。
# ●イベントコマンド[ピクチャの消去]を実行した後に余分な負荷がかかる不具合を
#   修正しました。
# ●移動ルートのオプション[移動できない場合は飛ばす]にチェックを入れた状態で
#   トリガー[プレイヤーから接触]のイベントに接触すると、イベントが実行中であ
#   っても起動予約がされてしまう不具合を修正しました。
# ●魔法反射されたスキルに対してステート有効度が反映されない不具合を修正しまし
#  た。
# ●フォントのデフォルト設定にて太字または斜体を有効にしていても、ステータス画
#   面を切り替えたとき等に無効な状態に戻ってしまう不具合を修正しました。
#------------------------------------------------------------------------------
class Game_Battler
  attr_accessor :magic_reflection
  #--------------------------------------------------------------------------
  # ● 敵対関係の判定
  #--------------------------------------------------------------------------
  alias vxace_sp1_opposite? opposite?
  def opposite?(battler)
    vxace_sp1_opposite?(battler) || battler.magic_reflection
  end
end
#------------------------------------------------------------------------------
class Game_Actor
  #--------------------------------------------------------------------------
  # ● 装備できない装備品を外す
  #     item_gain : 外した装備品をパーティに戻す
  #--------------------------------------------------------------------------
  alias vxace_sp1_release_unequippable_items release_unequippable_items
  def release_unequippable_items(item_gain = true)
    loop do
      last_equips = equips.dup
      vxace_sp1_release_unequippable_items(item_gain)
      return if equips == last_equips
    end
  end
  #--------------------------------------------------------------------------
  # ● 自動戦闘時の戦闘行動を作成
  #--------------------------------------------------------------------------
  def make_auto_battle_actions
    @actions.size.times do |i|
      @actions = make_action_list.max_by {|action| action.value }
    end
  end
end
#------------------------------------------------------------------------------
class Game_Player
  #--------------------------------------------------------------------------
  # ● マップイベントの起動
  #     triggers : トリガーの配列
  #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  #--------------------------------------------------------------------------
  alias vxace_sp1_start_map_event start_map_event
  def start_map_event(x, y, triggers, normal)
    return if $game_map.interpreter.running?
    vxace_sp1_start_map_event(x, y, triggers, normal)
  end
end
#------------------------------------------------------------------------------
class Game_Picture
  #--------------------------------------------------------------------------
  # ● ピクチャの消去
  #--------------------------------------------------------------------------
  alias vxace_sp1_erase erase
  def erase
    vxace_sp1_erase
    @origin = 0
  end
end
#------------------------------------------------------------------------------
class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● ステートの変更
  #--------------------------------------------------------------------------
  alias vxace_sp1_command_313 command_313
  def command_313
    vxace_sp1_command_313
    $game_party.clear_results
  end
end
#------------------------------------------------------------------------------
class Sprite_Character
  #--------------------------------------------------------------------------
  # ● 位置の更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_position update_position
  def update_position
    move_animation(@character.screen_x - x, @character.screen_y - y)
    vxace_sp1_update_position
  end
  #--------------------------------------------------------------------------
  # ● アニメーションの移動
  #--------------------------------------------------------------------------
  def move_animation(dx, dy)
    if @animation && @animation.position != 3
      @ani_ox += dx
      @ani_oy += dy
      @ani_sprites.each do |sprite|
        sprite.x += dx
        sprite.y += dy
      end
    end
  end
end
#------------------------------------------------------------------------------
class Sprite_Picture
  #--------------------------------------------------------------------------
  # ● 転送元ビットマップの更新
  #--------------------------------------------------------------------------
  alias vxace_sp1_update_bitmap update_bitmap
  def update_bitmap
    if @picture.name.empty?
      self.bitmap = nil
    else
      vxace_sp1_update_bitmap
    end
  end
end
#------------------------------------------------------------------------------
class Window_Base
  #--------------------------------------------------------------------------
  # ● フォント設定のリセット
  #--------------------------------------------------------------------------
  alias vxace_sp1_reset_font_settings reset_font_settings
  def reset_font_settings
    vxace_sp1_reset_font_settings
    contents.font.bold = Font.default_bold
    contents.font.italic = Font.default_italic
  end
end
#------------------------------------------------------------------------------
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 魔法反射の発動
  #--------------------------------------------------------------------------
  alias vxace_sp1_invoke_magic_reflection invoke_magic_reflection
  def invoke_magic_reflection(target, item)
    @subject.magic_reflection = true
    vxace_sp1_invoke_magic_reflection(target, item)
    @subject.magic_reflection = false
  end
end
忍一时越想越气,退一步越想越亏~~~
回复

使用道具 举报

梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
 楼主| 发表于 2021-1-27 14:18:12 | 显示全部楼层
狼姬 发表于 2021-1-27 13:12
你把横版战斗脚本关掉你再试试

emmm  我在别的范例工程中复制的脚本,不会关
忍一时越想越气,退一步越想越亏~~~
回复

使用道具 举报

梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
 楼主| 发表于 2021-1-27 14:19:14 | 显示全部楼层
alexncf125 发表于 2021-1-27 12:40
按你这么说...毛病不就是出自「横版战斗的脚本」么?

呃,不太懂脚本这个,我在下面回复出来了四个脚本,不知道是哪个,您能帮我看下吗大佬
忍一时越想越气,退一步越想越亏~~~
回复

使用道具 举报

梦石
0
星屑
2337
在线时间
325 小时
注册时间
2018-7-12
回帖
378
发表于 2021-1-27 15:04:01 | 显示全部楼层
未来灬future 发表于 2021-1-27 14:18
emmm  我在别的范例工程中复制的脚本,不会关

新建工程,测试相同的道具,如果能生效就是脚本的问题。
回复

使用道具 举报

梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
 楼主| 发表于 2021-1-27 15:20:30 | 显示全部楼层
狼姬 发表于 2021-1-27 15:04
新建工程,测试相同的道具,如果能生效就是脚本的问题。

确定了,是脚本问题,不加横版那些就没事
忍一时越想越气,退一步越想越亏~~~
回复

使用道具 举报

梦石
0
星屑
817
在线时间
85 小时
注册时间
2012-2-26
回帖
58
发表于 2021-1-27 15:21:46 | 显示全部楼层
你这个Sideview明显改了。估计是不小心弄坏了哪里?

先看看状态里,无法战斗 是不是只有一个……
附加的无法战斗 状态如果和道具解除的状态不是一个……就没用了。
我也用了Sideview,没出你的问题
菜单里用hp会回到1
回复

使用道具 举报

梦石
0
星屑
1239
在线时间
98 小时
注册时间
2020-12-11
回帖
80
 楼主| 发表于 2021-1-27 16:38:38 | 显示全部楼层
老子降临 发表于 2021-1-27 15:21
你这个Sideview明显改了。估计是不小心弄坏了哪里?

先看看状态里,无法战斗 是不是只有一个……

呃  看不懂脚本的小白  不行我就不用了 把这个道具删除了  大不了把所有人物都加上复活技能
忍一时越想越气,退一步越想越亏~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部