Project1

标题: 横版战斗脚本错误问题0.0 [打印本页]

作者: 木讷    时间: 2014-12-31 19:28
标题: 横版战斗脚本错误问题0.0
  1. #==============================================================================
  2. # ■ Sideview
  3. #------------------------------------------------------------------------------
  4. #  サイドビューバトラーを管理するクラスです。
  5. #==============================================================================
  6. class SideView
  7.   #--------------------------------------------------------------------------
  8.   # ● 公開インスタンス変数 
  9.   #--------------------------------------------------------------------------
  10.   attr_accessor   :x                    # 画面X座標
  11.   attr_accessor   :y                    # 画面Y座標
  12.   attr_accessor   :z                    # 画面Z座標
  13.   attr_accessor   :h                    # 高さ座標
  14.   attr_accessor   :j                    # ジャンプ座標
  15.   attr_accessor   :c                    # カーブ座標
  16.   attr_accessor   :ox                   # 横原点
  17.   attr_accessor   :oy                   # 縦原点
  18.   attr_accessor   :oy_adjust            # 縦原点補正
  19.   attr_accessor   :angle                # 回転角度
  20.   attr_accessor   :zoom_x               # 横の拡大率
  21.   attr_accessor   :zoom_y               # 縦の拡大率
  22.   attr_accessor   :pattern_w            # セル横位置(矩形内)
  23.   attr_accessor   :pattern_h            # セル縦位置(矩形内)
  24.   attr_accessor   :sx                   # セル横位置(画像全体)
  25.   attr_accessor   :sy                   # セル縦位置(画像全体)
  26.   attr_accessor   :pattern_type         # セル更新タイプ
  27.   attr_accessor   :pattern_time         # セル更新間隔
  28.   attr_accessor   :graphic_name         # バトラー画像ファイル名
  29.   attr_accessor   :graphic_file_index   # バトラー画像ファイル名インデックス
  30.   attr_accessor   :graphic_index        # バトラー画像インデックス
  31.   attr_accessor   :cw                   # セル横矩形
  32.   attr_accessor   :ch                   # セル縦矩形
  33.   attr_accessor   :shadow_visible       # 影表示
  34.   attr_accessor   :weapon_visible       # 武器表示
  35.   
  36.   attr_accessor   :wait                 # 次の動作待ち時間
  37.   attr_accessor   :weapon_index         # 表示中の武器画像インデックス配列
  38.   attr_accessor   :weapon_end           # 武器アニメ終了フラグ
  39.   attr_accessor   :force_action         # 強制アクション
  40.   attr_accessor   :target_battler       # ターゲットバトラー情報
  41.   attr_accessor   :second_targets       # セカンドターゲット情報
  42.   attr_accessor   :m_a_targets          # アニメ飛ばしターゲット情報
  43.   attr_accessor   :individual_targets   # 個別処理ターゲットバトラー情報
  44.   attr_accessor   :effect_data          # エフェクトデータ
  45.   attr_accessor   :anime_id             # アニメID配列
  46.   attr_accessor   :anime_move_id        # 飛ばしアニメID配列
  47.   attr_accessor   :mirror               # 反転フラグ
  48.   attr_accessor   :opacity              # 透明度
  49.   attr_accessor   :opacity_data         # 透明度操作情報
  50.   attr_accessor   :set_damage           # バトルシーンでのダメージ処理
  51.   attr_accessor   :m_a_data             # アニメ飛ばし情報
  52.   attr_accessor   :m_a_starter          # アニメ飛ばし開始ターゲット情報
  53.   attr_accessor   :action_end           # バトルシーンでの行動終了
  54.   attr_accessor   :damage_anime_data    # ダメージ戦闘アニメのデータ
  55.   attr_accessor   :anime_no_mirror      # 戦闘アニメの反転禁止フラグ
  56.   attr_accessor   :anime_horming        # 戦闘アニメのホーミングフラグ
  57.   attr_accessor   :anime_camera_zoom    # 戦闘アニメがカメラに合わせて拡大縮小するか
  58.   attr_accessor   :anime_plus_z         # 戦闘アニメZ座標補正
  59.   attr_accessor   :derivation_skill_id  # スキル派生ID
  60.   attr_accessor   :immortal             # 不死身フラグ
  61.   attr_accessor   :mirage               # 残像データ
  62.   attr_accessor   :balloon_data         # ふきだしデータ
  63.   attr_accessor   :timing               # 別バトラーからのタイミングデータ
  64.   attr_accessor   :timing_targets       # タイミングデータを渡す別バトラー
  65.   attr_accessor   :color_set            # 色調変更データ
  66.   attr_accessor   :color                # 色調データ
  67.   attr_accessor   :change_up            # 画像変更フラグ
  68.   attr_accessor   :hit                  # 被攻撃回数
  69.   attr_accessor   :add_state            # 何度も付加ステートの表示を防ぐフラグ
  70.   attr_accessor   :counter_id           # カウンター時のスキルID
  71.   attr_accessor   :reflection_id        # 魔法反射時のアニメID
  72.   attr_accessor   :result_damage        # ターン終了時のHP変動データ
  73.   attr_accessor   :active               # 行動権
  74.   attr_accessor   :anime_off            # 戦闘アニメ消去
  75.   attr_accessor   :command_action       # コマンドアクションフラグ
  76.    
  77.   attr_accessor   :base_x               # 初期位置 X座標
  78.   attr_accessor   :base_y               # 初期位置 Y座標
  79.   attr_accessor   :base_h               # 初期位置 高さ座標
  80.   attr_accessor   :max_pattern_w        # セルの横分割数
  81.   attr_accessor   :max_pattern_h        # セルの縦分割数
  82.   
  83.   attr_reader     :collapse             # コラプスフラグ
  84.   attr_reader     :picture              # ピクチャ表示フラグ
  85.   #--------------------------------------------------------------------------
  86.   # ● オブジェクト初期化
  87.   #--------------------------------------------------------------------------
  88.   def initialize(battler)
  89.     [url=home.php?mod=space&uid=133701]@battler[/url] = battler
  90.     reset
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 初期化
  94.   #--------------------------------------------------------------------------
  95.   def reset
  96.     @x = 0
  97.     @y = 0
  98.     @z = 0
  99.     @h = 0
  100.     @j = 0
  101.     @c = 0
  102.     [url=home.php?mod=space&uid=271873]@jump[/url] = []
  103.     @curve = []
  104.     @ox = 0
  105.     @oy = 0
  106.     @oy_adjust = 0
  107.     @z_plus = 0
  108.     @move_time = 0
  109.     [url=home.php?mod=space&uid=124954]@Angle[/url] = 0
  110.     @angle_time = 0
  111.     @zoom_x = 1
  112.     @zoom_y = 1
  113.     @zoom_time = 0
  114.     @pattern_w = 0
  115.     @pattern_h = 0
  116.     @sx = 0
  117.     @sy = 0
  118.     @pattern_type = 0
  119.     @pattern_time = 0
  120.     @pattern_rest_time = 0
  121.     @graphic_name = ""
  122.     @graphic_file_index = ""
  123.     @graphic_index = 0
  124.     @cw = 0
  125.     @ch = 0
  126.     @shadow_visible = false
  127.     @weapon_visible = true
  128.    
  129.     [url=home.php?mod=space&uid=36110]@Wait[/url] = 0
  130.     @weapon_index = []
  131.     @weapon_end = true
  132.     @full_action = []
  133.     @action = []
  134.     @force_action = ""
  135.     @target_battler = []
  136.     @second_targets = []
  137.     @individual_targets = []
  138.     @m_a_targets = []
  139.     @effect_data = []
  140.     @anime_id = []
  141.     @anime_move_id = []
  142.     @opacity = 255
  143.     @opacity_data = []
  144.     @set_damage = false
  145.     @m_a_data = []
  146.     @m_a_starter = []
  147.     @action_end = false
  148.     @damage_anime_data = []
  149.     @anime_no_mirror = false
  150.     @anime_horming = false
  151.     @anime_camera_zoom = false
  152.     @anime_plus_z = true
  153.     @derivation_skill_id = 0
  154.     @immortal = false
  155.     @mirage = []
  156.     @play_data = []
  157.     @balloon_data = []
  158.     @picture = false
  159.     @timing = []
  160.     @timing_targets = []
  161.     @color_set = []
  162.     [url=home.php?mod=space&uid=10453]@color[/url] = []
  163.     @change_up = false
  164.     @non_motion = false
  165.     @graphics_change = false
  166.     @hit = 0
  167.     @add_state = []
  168.     @collapse = false
  169.     @counter_id = 0
  170.     @reflection_id = 0
  171.     @result_damage = [0,0]
  172.     @active = false
  173.     @anime_off = false
  174.     @command_action = false
  175.    
  176.     @base_x = 0
  177.     @base_y = 0
  178.     @base_z = 0
  179.     @base_h = 0
  180.     @max_pattern_w = 0
  181.     @max_pattern_h = 0
  182.     @pattern_kind = 0
  183.     @pattern_count = 0
  184.     @move_time = 0
  185.     [url=home.php?mod=space&uid=111303]@mirror[/url] = false
  186.     @battler.set_graphic(@pre_change_data[0], @pre_change_data[1], @pre_change_data[2], @pre_change_data[3]) if @pre_change_data != nil
  187.     @pre_change_data = nil
  188.   end  
  189.   #--------------------------------------------------------------------------
  190.   # ● セットアップ
  191.   #--------------------------------------------------------------------------
  192.   def setup(bitmap_width, bitmap_height, first_action_flag)
  193.     reset if first_action_flag
  194.     set_data
  195.     set_base_position if !@graphics_change
  196.     set_graphics(bitmap_width, bitmap_height)
  197.     set_target
  198.     setup_graphics_change if @graphics_change
  199.     first_battler_anime_set if first_action_flag
  200.   end  
  201.   #--------------------------------------------------------------------------
  202.   # ● バトラーデータ取得
  203.   #--------------------------------------------------------------------------
  204.   def set_data
  205.     return if @battler == nil
  206.     if @battler.actor?
  207.       @graphic_name = @battler.character_name
  208.       @graphic_index = @battler.character_index
  209.     else
  210.       @graphic_name = @battler.battler_name
  211.       @graphic_index = 0
  212.     end
  213.     @max_pattern_w = max_pattern[0]
  214.     @max_pattern_h = max_pattern[1]
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● ベース座標をセット data = [X軸, Y軸, H軸]  moment_set…瞬間配置
  218.   #--------------------------------------------------------------------------
  219.   def set_base_position(moment_set = true)
  220.     mirroring_reset
  221.     if @battler.actor?
  222.       data = N03::ACTOR_POSITION[@battler.index].dup
  223.       @base_x = data[0] * 100 if !@mirror
  224.       @base_x = (Graphics.width - data[0]) * 100 if @mirror
  225.     else
  226.       data = [@battler.screen_x, @battler.screen_y, 0].dup
  227.       @base_x = data[0] * 100 if !$sv_camera.mirror
  228.       @base_x = (Graphics.width - data[0]) * 100 if $sv_camera.mirror
  229.     end
  230.     @base_y = data[1] * 100
  231.     @base_h = data[2] * 100
  232.     @base_z = @y
  233.     return if !moment_set
  234.     @x = @base_x
  235.     @y = @base_y
  236.     @z = @base_z
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● グラフィックデータ取得
  240.   #--------------------------------------------------------------------------
  241.   def set_graphics(bitmap_width, bitmap_height)
  242.     sign = @graphic_name[/^[\!\$]./]
  243.     if sign && sign.include?('va超级整合的横版战斗脚本使用后战斗时使用技能这个脚本就出现如图这样的情况,求解决)
  244.       @cw = bitmap_width / @max_pattern_w
  245.       @ch = bitmap_height / @max_pattern_h
  246.     elsif @max_pattern_w == 1 && @max_pattern_h == 1
  247.       @cw = bitmap_width
  248.       @ch = bitmap_height
  249.     else
  250.       @cw = bitmap_width / (@max_pattern_w * 4)
  251.       @ch = bitmap_height / (@max_pattern_h * 2)
  252.     end
  253.     @ox = @cw / 2
  254.     @oy = @ch
  255.     @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  256.     @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   # ● ターゲットをセット
  260.   #--------------------------------------------------------------------------
  261.   def set_target(target = nil)
  262.     @target_battler = target
  263.     @target_battler = [@battler] if target == nil
  264.     @second_targets = @target_battler
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 画像変更用のセットアップ
  268.   #--------------------------------------------------------------------------
  269.   def setup_graphics_change
  270.     @graphics_change = false
  271.     @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  272.     @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  273.   end  
  274.   #--------------------------------------------------------------------------
  275.   # ● 戦闘開始時の待機アニメ画像データ取得
  276.   #--------------------------------------------------------------------------
  277.   def first_battler_anime_set
  278.     loop do
  279.       update
  280.       break if @action_data[0] == "motion"
  281.       break if @action_data[0] == "move" && @action_data[8] != ""
  282.       break if @full_action == []
  283.     end
  284.     start_action(first_action) if @battler.movable?
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● アクション開始
  288.   #--------------------------------------------------------------------------
  289.   def start_action(kind = nil)
  290.     return if @event_fix && $game_troop.interpreter.running?
  291.     # ウェイト中の場合キャンセル
  292.     return @wait -= 1 if @wait > 0 && kind == nil
  293.     action_setup if kind != nil
  294.     set_action(kind)
  295.     @action = kind if @action == nil
  296.     # 行動配列が無い場合は行動終了処理へ移行
  297.     action_terminate if @action == nil
  298.     # 次のアクション決定
  299.     @action_data = N03::ACTION[@action]
  300.     next_action
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 行動パラメータの初期化
  304.   #--------------------------------------------------------------------------
  305.   def action_setup
  306.     @event_fix = false
  307.     @set_damage = false
  308.     @action_end = false
  309.     @balloon_data = []
  310.     @loop_act = []
  311.     angle_reset
  312.     zoom_reset
  313.     opacity_reset
  314.     @curve = []
  315.     @c = 0
  316.     convert_jump
  317.   end  
  318.   #--------------------------------------------------------------------------
  319.   # ● 行動終了処理
  320.   #--------------------------------------------------------------------------
  321.   def action_terminate
  322.     @mirage = [] if @mirage_end
  323.     mirroring_reset
  324.     @picture = false
  325.     @individual_targets = []
  326.     action_setup
  327.     # 待機アクションへ移行
  328.     stand_by_action if !@non_motion
  329.     # 戦闘行動のアクティブ権を終了
  330.     next_battler
  331.   end  
  332.   #--------------------------------------------------------------------------
  333.   # ● 新しいアクション内容の決定
  334.   #--------------------------------------------------------------------------
  335.   def set_action(kind = nil)
  336.     full_act = N03::FULLACTION[kind]
  337.     @full_action = full_act.dup if full_act != nil
  338.     @action = @full_action.shift
  339.     # 参照したアクションがフルアクションであれば全体のアクションを統合
  340.     full_act2 = N03::FULLACTION[@action]
  341.     @full_action = full_act2.dup + @full_action if full_act2 != nil
  342.   end
  343.   #--------------------------------------------------------------------------
  344.   # ● 次のアクションへ
  345.   #--------------------------------------------------------------------------
  346.   def next_action
  347.     @wait = 0
  348.     # ショートカット確認
  349.     eval(@action) if @action != nil && @action_data == nil && N03::FULLACTION[@action] == nil
  350.     # ウエイト設定
  351.     @wait = @action.to_i if @wait == 0 && @action_data == nil
  352.     @wait = rand(@wait.abs + 1) if @wait < 0
  353.     # アクション開始
  354.     action_play
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ● 待機アクションへ移行
  358.   #--------------------------------------------------------------------------
  359.   def stand_by_action
  360.     # 通常待機に
  361.     stand_by_act = normal
  362.     # HPが1/4でピンチアクションに
  363.     stand_by_act = pinch if @battler.hp <= @battler.mhp / 4
  364.     # ステートチェック
  365.     stand_by_act = state(@battler.states[0].id) if @battler.states[0] != nil && state(@battler.states[0].id) != nil
  366.     # コマンドチェック
  367.     stand_by_act = command if @command_action && command != nil
  368.     set_action(stand_by_act)
  369.     @action = stand_by_act if @action == nil
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 強制アクション開始
  373.   #--------------------------------------------------------------------------
  374.   def start_force_action
  375.     return if @active
  376.     start_action(@force_action)
  377.     @force_action = ""
  378.   end  
  379.   #--------------------------------------------------------------------------
  380.   # ● アクション追加
  381.   #--------------------------------------------------------------------------
  382.   def add_action(kind)
  383.     @full_action.push(kind)
  384.   end  
  385.   #--------------------------------------------------------------------------
  386.   # ● アクションの挿入
  387.   #--------------------------------------------------------------------------
  388.   def unshift_action(kind)
  389.     @full_action.unshift(kind)
  390.   end  
  391.   #--------------------------------------------------------------------------
  392.   # ● フレーム更新
  393.   #--------------------------------------------------------------------------
  394.   def update
  395.     # アクション開始
  396.     start_action
  397.     # 強制アクション開始
  398.     start_force_action if @force_action != ""
  399.     # アニメパターン更新
  400.     update_pattern
  401.     # 移動更新
  402.     update_move
  403.     # 回転更新
  404.     update_angle if @angle_time != 0
  405.     # 拡大縮小更新
  406.     update_zoom if @zoom_time != 0
  407.     # 透明度更新
  408.     update_opacity if @opacity_data != []
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● アニメパターン更新
  412.   #--------------------------------------------------------------------------
  413.   def update_pattern
  414.     return @pattern_rest_time -= 1 if @pattern_rest_time != 0
  415.     return if @max_pattern_w == 1 && @max_pattern_h == 1
  416.     @pattern_rest_time = @pattern_time
  417.     # 再生開始・終了セル位置を取得
  418.     if @pattern_kind > 0 # 通常再生中
  419.       @pattern_start = 0
  420.       @pattern_end = @max_pattern_w - 1
  421.     elsif @pattern_kind < 0 # 逆転再生中
  422.       @pattern_start = @max_pattern_w - 1
  423.       @pattern_end = 0
  424.     end
  425.     # 片道の再生が終了
  426.     @pattern_count += 1 if @pattern_w == @pattern_end && @pattern_kind != 0
  427.     # ループ処理
  428.     case @pattern_type.abs
  429.     when  1,3 # 片道
  430.       @pattern_kind =  0 if @pattern_count != 0 && @pattern_type ==  1
  431.       @pattern_kind =  0 if @pattern_count != 0 && @pattern_type == -1
  432.       @pattern_kind =  1 if @pattern_count != 0 && @pattern_type ==  3
  433.       @pattern_kind = -1 if @pattern_count != 0 && @pattern_type == -3
  434.       @pattern_w = @pattern_start - @pattern_kind if @pattern_count != 0 && @pattern_type.abs == 3
  435.       @pattern_count = 0
  436.     when  2,4 # 往復
  437.       @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  2
  438.       @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -2
  439.       @pattern_kind =  0 if @pattern_count == 2 && @pattern_type ==  2
  440.       @pattern_kind =  0 if @pattern_count == 2 && @pattern_type == -2
  441.       @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  4
  442.       @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -4
  443.       @pattern_kind =  1 if @pattern_count == 2 && @pattern_type ==  4
  444.       @pattern_kind = -1 if @pattern_count == 2 && @pattern_type == -4
  445.       @pattern_count = 0 if @pattern_count == 2
  446.     end
  447.     # セル更新
  448.     @pattern_w += 1 * @pattern_kind
  449.     @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● 移動の更新
  453.   #--------------------------------------------------------------------------
  454.   def update_move
  455.     @z = @y / 100 + @z_plus
  456.     return if @move_time == 0
  457.     target_position_set if @horming_move
  458.     @x = (@x * (@move_time - 1) + @target_x) / @move_time
  459.     @y = (@y * (@move_time - 1) + @target_y) / @move_time
  460.     @h = (@h * (@move_time - 1) + @target_h) / @move_time if @move_h != nil
  461.     @c += @curve[@move_time - 1] if @curve[@move_time - 1] != nil
  462.     @j += @jump[@move_time - 1] if @jump[@move_time - 1] != nil
  463.     @move_time -= 1
  464.     convert_jump if @move_time == 0
  465.   end
  466.   #--------------------------------------------------------------------------
  467.   # ● 移動目標の更新
  468.   #--------------------------------------------------------------------------
  469.   def target_position_set
  470.     target_position = N03.get_targets_position(@move_targets, @horming_move)
  471.     @target_x = target_position[0] + @move_x
  472.     @target_y = target_position[1] + @move_y
  473.     @target_h = target_position[2] + @move_h if @move_h != nil
  474.   end  
  475.   #--------------------------------------------------------------------------
  476.   # ● 回転更新
  477.   #--------------------------------------------------------------------------
  478.   def update_angle
  479.     @angle += @angling
  480.     @angle_time -= 1
  481.     return if @angle_time != 0
  482.     return angle_reset if @angle_data[4] == 0
  483.     angling(@angle_data) if @angle_data[4] == 2
  484.   end  
  485.   #--------------------------------------------------------------------------
  486.   # ● 拡大縮小更新
  487.   #--------------------------------------------------------------------------
  488.   def update_zoom
  489.     @zoom_x += @zooming_x
  490.     @zoom_y += @zooming_y
  491.     @zoom_time -= 1
  492.     return if @zoom_time != 0
  493.     return zoom_reset if @zoom_data[4] == 0
  494.     zooming(@zoom_data) if @zoom_data[4] == 2
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● 透明度更新
  498.   #--------------------------------------------------------------------------
  499.   def update_opacity
  500.     @opacity += @opacity_data[2]
  501.     @opacity_data[0] -= 1
  502.     return if @opacity_data[0] != 0
  503.     return if !@opacity_data[5]
  504.     @opacity_data[2] *= -1
  505.     @opacity_data[0] = @opacity_data[1]
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # ● アクション実行
  509.   #--------------------------------------------------------------------------
  510.   def action_play
  511.     return if @action_data == nil
  512.     action = @action_data[0]
  513.     # バトラー反転の場合
  514.     return mirroring                    if action == "mirror"
  515.     # 残像の場合
  516.     return mirage_set                   if action == "mirage"
  517.     # 回転の場合  
  518.     return angling                      if action == "angle"
  519.     # 拡大縮小の場合  
  520.     return zooming                      if action == "zoom"
  521.     # 透明度操作の場合  
  522.     return set_opacity                  if action == "opacity"
  523.     # バトラーアニメの場合
  524.     return battler_anime                if action == "motion"
  525.     # 移動の場合
  526.     return move                         if action == "move"
  527.     # 武器アニメの場合
  528.     return weapon_anime([@action_data]) if action == "wp"
  529.     # アニメ飛ばしの場合
  530.     return move_anime                   if action == "m_a"
  531.     # 戦闘シーン通信の場合(コラプス)
  532.     return set_play_data                if action == "collapse" or action == "no_collapse"
  533.     # データベース戦闘アニメ表示の場合  
  534.     return battle_anime                 if action == "anime"
  535.     # カメラワークの場合
  536.     return camera                       if action == "camera"
  537.     # 画面のシェイクの場合
  538.     return shake                        if action == "shake"
  539.     # 画面色調変更の場合
  540.     return color_effect                 if action == "color"
  541.     # トランジションの場合
  542.     return transition                   if action == "ts"
  543.     # ふきだしアニメ表示の場合  
  544.     return balloon_anime                if action == "balloon"
  545.     # ピクチャ表示の場合
  546.     return picture_set                  if action == "pic"
  547.     # ステート操作の場合
  548.     return state_set                    if action == "sta"
  549.     # FPS変更の場合
  550.     return fps                          if action == "fps"
  551.     # バトラー画像変更の場合  
  552.     return graphics_change              if action == "change"
  553.     # スキル派生の場合  
  554.     return derivating_skill             if action == "der"
  555.     # BGM/BGS/SE演奏の場合  
  556.     return sound                        if action == "sound"
  557.     # ムービー再生の場合  
  558.     return movie                        if action == "movie"
  559.     # ゲームスイッチ操作の場合  
  560.     return switches                     if action == "switch"
  561.     # ゲーム変数操作の場合  
  562.     return variable                     if action == "variable"
  563.     # 条件分岐(ゲームスイッチ)の場合
  564.     return nece_1                       if action == "n_1"
  565.     # 条件分岐(ゲーム変数)の場合
  566.     return nece_2                       if action == "n_2"
  567.     # 条件分岐(ステート)の場合
  568.     return nece_3                       if action == "n_3"
  569.     # 条件分岐(スキル)の場合
  570.     return nece_4                       if action == "n_4"
  571.     # 条件分岐(パラメータ)の場合
  572.     return nece_5                       if action == "n_5"
  573.     # 条件分岐(装備)の場合
  574.     return nece_6                       if action == "n_6"
  575.     # 条件分岐(スクリプト)の場合
  576.     return nece_7                       if action == "n_7"
  577.     # セカンドターゲット操作の場合  
  578.     return second_targets_set           if action == "s_t"
  579.     # コモンイベント呼び出しの場合  
  580.     return call_common_event            if action == "common"
  581.     # 戦闘アニメ消去の場合  
  582.     return @anime_off = true            if action == "anime_off"
  583.     # 強制戦闘終了の場合  
  584.     return BattleManager.process_abort  if action == "battle_end"
  585.     # 画面固定の場合  
  586.     return Graphics.freeze              if action == "graphics_freeze"
  587.     # ダメージアニメの場合  
  588.     return damage_anime                 if action == "damage_anime"
  589.     # 武器消去の場合  
  590.     return @weapon_visible = false      if action == "weapon_off"
  591.     # 武器消去解除の場合  
  592.     return @weapon_visible = true       if action == "weapon_on"
  593.     # 待機キャンセルの場合
  594.     return @non_motion = true           if action == "non_motion"
  595.     # 待機キャンセル解除の場合
  596.     return @non_motion = false          if action == "non_motion_cancel"
  597.     # 初期位置変更の場合
  598.     return change_base_position         if action == "change_base_position"
  599.     # 初期位置変更解除の場合
  600.     return set_base_position(false)     if action == "set_base_position"
  601.     # 強制アクションの場合  
  602.     return force_act                    if action == "force_action"
  603.     # 強制アクションの場合 (セカンドターゲット)
  604.     return force_act2                   if action == "force_action2"
  605.     # 個別開始の場合
  606.     return individual_start             if action == "individual_start"
  607.     # 個別終了の場合
  608.     return individual_end               if action == "individual_end"
  609.     # ループ開始の場合
  610.     return loop_start                   if action == "loop_start"
  611.     # ループ終了の場合
  612.     return loop_end                     if action == "loop_end"
  613.     # 自分のみ更新の場合
  614.     return only_action_on               if action == "only_action_on"
  615.     # 自分のみ更新解除の場合
  616.     return only_action_off              if action == "only_action_off"
  617.     # 次の行動者へ移行の場合
  618.     return next_battler                 if action == "next_battler"
  619.     # 画像変更フラグの場合
  620.     return set_change                   if action == "set_change"
  621.     # スクリプト操作の場合   
  622.     return eval(@action_data[0])
  623.   end
  624.   #--------------------------------------------------------------------------
  625.   # ● バトラー反転実行
  626.   #--------------------------------------------------------------------------
  627.   def mirroring
  628.     @mirror = !@mirror
  629.   end  
  630.   #--------------------------------------------------------------------------
  631.   # ● 反転初期化
  632.   #--------------------------------------------------------------------------
  633.   def mirroring_reset
  634.     @mirror = false
  635.     mirroring if [email protected]? && N03::ENEMY_MIRROR
  636.     mirroring if $sv_camera.mirror
  637.   end  
  638.   #--------------------------------------------------------------------------
  639.   # ● 残像実行
  640.   #--------------------------------------------------------------------------
  641.   def mirage_set
  642.     @mirage = @action_data.dup
  643.     @mirage_end = @mirage[3]
  644.     @mirage = [] if @mirage[1] == 0
  645.   end  
  646.   #--------------------------------------------------------------------------
  647.   # ● 回転実行
  648.   #--------------------------------------------------------------------------
  649.   def angling(data = @action_data)
  650.     @angle_data = data.dup
  651.     @oy = @ch / 2
  652.     @oy_adjust = @ch * 50
  653.     @angle_time = data[1]
  654.     start_angle = data[2] * N03.mirror_num(@mirror)
  655.     end_angle = data[3] * N03.mirror_num(@mirror)
  656.     # 時間が0以下なら即座に最終角度へ
  657.     @angle_time = 1 if @angle_time <= 0
  658.     # 回転時間から1フレームあたりの角度を出す
  659.     @angling = (end_angle - start_angle) / @angle_time
  660.     # 割り切れない余りを初期角度に
  661.     @angle = (end_angle - start_angle) % @angle_time + start_angle
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ● 回転初期化
  665.   #--------------------------------------------------------------------------
  666.   def angle_reset
  667.     @oy = @ch
  668.     @angle = @angle_time = @oy_adjust = 0
  669.   end  
  670.   #--------------------------------------------------------------------------
  671.   # ● 拡大縮小実行
  672.   #--------------------------------------------------------------------------
  673.   def zooming(data = @action_data)
  674.     @zoom_data = data.dup
  675.     @zoom_time = data[1]
  676.     start_zoom_x = data[2][0]
  677.     start_zoom_y = data[2][1]
  678.     end_zoom_x = data[3][0]
  679.     end_zoom_y = data[3][1]
  680.     # 時間が0以下なら即座に最終サイズへ
  681.     @zoom_time = 1 if @zoom_time <= 0
  682.     # 拡大縮小時間から1フレームあたりの拡大縮小率を出す
  683.     @zooming_x = (end_zoom_x - start_zoom_x) / @zoom_time
  684.     @zooming_y = (end_zoom_y - start_zoom_y) / @zoom_time
  685.     # 開始サイズに
  686.     @zoom_x = start_zoom_x
  687.     @zoom_y = start_zoom_y
  688.   end  
  689.   #--------------------------------------------------------------------------
  690.   # ● 拡大縮小初期化
  691.   #--------------------------------------------------------------------------
  692.   def zoom_reset
  693.     @zoom_x = @zoom_y = 1
  694.     @zoom_time = 0
  695.   end  
  696.   #--------------------------------------------------------------------------
  697.   # ● バトラー透明度操作
  698.   #--------------------------------------------------------------------------
  699.   def set_opacity
  700.     data = @action_data.dup
  701.     @opacity = data[2]
  702.     opacity_move = (data[3] - data[2])/ data[1]
  703.     @opacity_data = [data[1], data[1], opacity_move, data[4], data[5], data[6]]
  704.     @wait = data[1] if data[7]
  705.     @wait *= 2 if data[6] && data[7]
  706.   end
  707.   #--------------------------------------------------------------------------
  708.   # ● 透明度操作初期化
  709.   #--------------------------------------------------------------------------
  710.   def opacity_reset
  711.     @opacity = 255
  712.     @opacity = 0 if @battler.hidden?
  713.     @opacity_data = []
  714.   end
  715.   #--------------------------------------------------------------------------
  716.   # ● バトラーアニメ実行
  717.   #--------------------------------------------------------------------------
  718.   def battler_anime(anime_data = nil)
  719.     anime_data = @action_data.dup if anime_data == nil
  720.     @graphic_file_index = anime_data[1] if !graphic_fix
  721.     @pattern_h = anime_data[2]
  722.     @pattern_w = anime_data[3]
  723.     @pattern_h = 0 if @max_pattern_w == 1
  724.     @pattern_w = 0 if @max_pattern_h == 1
  725.     @pattern_type = anime_data[4]
  726.     @pattern_time = anime_data[5]
  727.     @pattern_rest_time = anime_data[5]
  728.     @pattern_count = 0
  729.     @pattern_kind = 1
  730.     @pattern_kind = -1 if @pattern_type < 0
  731.     @pattern_kind = 0 if @pattern_type == 0
  732.     @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  733.     @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  734.     @z_plus = anime_data[6]
  735.     @wait = set_anime_wait if anime_data[7]
  736.     @shadow_visible = anime_data[8]
  737.     weapon_anime(anime_data)
  738.   end
  739.   #--------------------------------------------------------------------------
  740.   # ● アニメウエイト計算
  741.   #--------------------------------------------------------------------------
  742.   def set_anime_wait
  743.     if @pattern_type > 0
  744.       pattern_time_a = @max_pattern_w - @pattern_w.abs
  745.     elsif @pattern_type < 0
  746.       pattern_time_a = @pattern_w.abs + 1
  747.     else
  748.       return @pattern_time if @pattern_type == 0
  749.     end
  750.     case @pattern_type
  751.     when 1,-1, 3,-3
  752.       return pattern_time_a * @pattern_time
  753.     when 2,-2, 4,-4
  754.       return pattern_time_a * @pattern_time + (@max_pattern_w - 2) * @pattern_time
  755.     end
  756.   end  
  757.   #--------------------------------------------------------------------------
  758.   # ● 移動実行
  759.   #--------------------------------------------------------------------------
  760.   def move
  761.     @move_targets = N03.get_targets(@action_data[1].abs, @battler)
  762.     return if @move_targets == []
  763.     @move_targets = [@battler] if @action_data[1].abs == 7
  764.     @move_x = @action_data[2] * 100 * N03.mirror_num(@mirror)
  765.     @move_y = @action_data[3] * 100
  766.     @move_h = @action_data[4] * 100 if @action_data[4] != nil
  767.     @move_h = nil if @action_data[4] == nil
  768.     battler_anime(N03::ACTION[@action_data[8]].dup) if N03::ACTION[@action_data[8]] != nil
  769.     @horming_move = true
  770.     @horming_move = false if @action_data[1] < 0 or @action_data[1].abs == 7
  771.     target_position_set
  772.     target_position = [@target_x, @target_y, @target_z]
  773.     distanse_move = @action_data[5] > 0
  774.     @move_time = N03.distanse_calculation(@action_data[5].abs, target_position, [@x, @y, @z], distanse_move)
  775.     @wait = @move_time
  776.     curve
  777.     jump
  778.     @move_time = 1 if @move_time == 0
  779.     @horming_move = false if !@move_targets or @move_targets.include?(@battler)
  780.     update_move if @move_time == 1
  781.   end  
  782.   #--------------------------------------------------------------------------
  783.   # ● カーブ実行
  784.   #--------------------------------------------------------------------------
  785.   def curve
  786.     @c = 0
  787.     return if @action_data[6] == 0
  788.     @curve = N03.parabola([@action_data[6], -@action_data[6]], @move_time, 100, 4)
  789.   end  
  790.   #--------------------------------------------------------------------------
  791.   # ● ジャンプ実行
  792.   #--------------------------------------------------------------------------
  793.   def jump
  794.     convert_jump
  795.     return if @action_data[7] == [0,0]
  796.     @jump = N03.parabola(@action_data[7].dup, @move_time, 100)
  797.   end  
  798.   #--------------------------------------------------------------------------
  799.   # ● J座標(ジャンプ高度)をH座標に変換
  800.   #--------------------------------------------------------------------------
  801.   def convert_jump
  802.     @h += @j
  803.     @j = 0
  804.     @jump = []
  805.   end  
  806.   #--------------------------------------------------------------------------
  807.   # ● データベース戦闘アニメ実行
  808.   #--------------------------------------------------------------------------
  809.   def battle_anime
  810.     data = @action_data.dup
  811.     targets = N03.get_targets(data[2], @battler)
  812.     return if targets == []
  813.     data[8] = !data[8] if @mirror
  814.     @set_damage           = data[5]
  815.     @damage_anime_data[0] = N03.get_attack_anime_id(data[1], @battler)
  816.     @damage_anime_data[1] = data[8]
  817.     @damage_anime_data[2] = data[7]
  818.     @damage_anime_data[3] = data[6]
  819.     @damage_anime_data[4] = data[9]
  820.     @wait = N03.get_anime_time(@damage_anime_data[0]) - 2 if data[4]
  821.     return if @set_damage
  822.     for target in targets do display_anime(targets, target, data) end
  823.   end
  824.   #--------------------------------------------------------------------------
  825.   # ● 武器アニメ開始
  826.   #--------------------------------------------------------------------------
  827.   def weapon_anime(anime_data)
  828.     @weapon_end = true
  829.     for i in 9...anime_data.size
  830.       set_effect_data(anime_data[i]) if anime_data[i] != ""
  831.     end
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ● アニメ飛ばし開始
  835.   #--------------------------------------------------------------------------
  836.   def move_anime
  837.     @m_a_starter = []
  838.     @m_a_targets = []
  839.     starters = N03.get_targets(@action_data[2], @battler)
  840.     targets = N03.get_targets(@action_data[3], @battler)
  841.     return if starters == [] or targets == []
  842.     single_start = true if starters != nil && @action_data[2] < 0
  843.     single_start = true if @action_data[1][0] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][0], @battler)].position == 3
  844.     starters = [starters[0]] if single_start
  845.     single_end = true if targets != nil && @action_data[3] < 0
  846.     single_end = true if @action_data[1][1] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][1], @battler)].position == 3
  847.     targets = [targets[0]] if single_end
  848.     se_flag = true
  849.     for starter in starters
  850.       for target in targets
  851.         data = @action_data.dup
  852.         data[17] = se_flag
  853.         @effect_data.push(data)
  854.         @m_a_targets.push(target)
  855.         @m_a_starter.push(starter)
  856.         se_flag = false
  857.       end
  858.     end  
  859.   end
  860.   #--------------------------------------------------------------------------
  861.   # ● スプライトセット通信
  862.   #--------------------------------------------------------------------------
  863.   def set_effect_data(data = @action)
  864.     action_data = N03::ACTION[data]
  865.     return if action_data == nil
  866.     @effect_data.push(action_data.dup)
  867.   end
  868.   #--------------------------------------------------------------------------
  869.   # ● 戦闘シーン通信のデータを格納
  870.   #--------------------------------------------------------------------------
  871.   def set_play_data(data = @action_data)
  872.     @play_data = data.dup
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ● 戦闘アニメの表示
  876.   #--------------------------------------------------------------------------
  877.   def display_anime(targets, target, data)
  878.     return if !N03.first_of_all_screen_anime(data[1], target, targets)
  879.     target.animation_id         = N03.get_attack_anime_id(data[1], @battler)
  880.     target.animation_mirror     = data[8]
  881.     target.sv.anime_horming     = data[3]
  882.     target.sv.anime_camera_zoom = data[6]
  883.     target.sv.anime_no_mirror   = data[7]
  884.     target.sv.anime_plus_z      = data[9]
  885.   end
  886.   #--------------------------------------------------------------------------
  887.   # ● 戦闘アニメ拡張データの初期化
  888.   #--------------------------------------------------------------------------
  889.   def reset_anime_data
  890.     @anime_no_mirror = false
  891.     @anime_horming = false
  892.     @anime_camera_zoom = false
  893.     @timing_targets = []
  894.     @anime_plus_z = true
  895.   end  
  896.   #--------------------------------------------------------------------------
  897.   # ● カメラワーク
  898.   #--------------------------------------------------------------------------
  899.   def camera
  900.     data = @action_data.dup
  901.     N03.camera(@battler, data)
  902.     @wait = data[4] if data[5]
  903.   end  
  904.   #--------------------------------------------------------------------------
  905.   # ● 画面のシェイク
  906.   #--------------------------------------------------------------------------
  907.   def shake
  908.     data = @action_data.dup
  909.     $sv_camera.shake(data[1], data[2], data[3])
  910.     @wait = data[3] if data[4]
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # ● 画面色調変更
  914.   #--------------------------------------------------------------------------
  915.   def color_effect
  916.     case @action_data[1]
  917.     when 0,1,2,3,4,5
  918.       targets = N03.get_targets(@action_data[1], @battler)
  919.     when 6
  920.       screen = true
  921.     when 7
  922.       targets = [@battler] + @target_battler
  923.     when 8
  924.       screen = true
  925.       targets = $game_troop.members + $game_party.battle_members - [@battler]
  926.     when 9
  927.       screen = true
  928.       targets = $game_troop.members + $game_party.battle_members - [@battler] - @target_battler
  929.     when 10
  930.       screen = true
  931.       targets = $game_troop.members + $game_party.battle_members
  932.     end
  933.     return if screen == nil && targets == []
  934.     for target in targets do target.sv.color_set = @action_data[2] end if targets
  935.     @wait = @action_data[2][4] if @action_data[3]
  936.     return if !screen
  937.     $sv_camera.color_set[1] = @action_data[2]
  938.     $sv_camera.color_set[2] = @action_data[2]
  939.   end  
  940.   #--------------------------------------------------------------------------
  941.   # ● トランジション
  942.   #--------------------------------------------------------------------------
  943.   def transition
  944.     $sv_camera.perform_transition(@action_data)
  945.   end  
  946.   #--------------------------------------------------------------------------
  947.   # ● ふきだしアニメ表示
  948.   #--------------------------------------------------------------------------
  949.   def balloon_anime
  950.     @balloon_data = @action_data.dup
  951.   end  
  952.   #--------------------------------------------------------------------------
  953.   # ● ピクチャ表示
  954.   #--------------------------------------------------------------------------
  955.   def picture_set
  956.     @picture = true
  957.     set_effect_data
  958.   end
  959.   #--------------------------------------------------------------------------
  960.   # ● ステート操作
  961.   #--------------------------------------------------------------------------
  962.   def state_set
  963.     targets = N03.get_targets(@action_data[1], @battler)
  964.     return if targets == []
  965.     case @action_data[2]
  966.     when 1 ; targets = [targets[rand(targets.size)]]
  967.     when 2 ; targets -= @battler if targets.include?(@battler)
  968.     end
  969.     for target in targets
  970.       for id in @action_data[4]
  971.         target.add_state(id) if @action_data[3] == "+"
  972.         target.remove_state(id) if @action_data[3] == "-"
  973.       end
  974.     end
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # ● FPS変更
  978.   #--------------------------------------------------------------------------
  979.   def fps
  980.     Graphics.frame_rate = @action_data[1]
  981.     start_action
  982.   end
  983.   #--------------------------------------------------------------------------
  984.   # ● バトラー画像変更の場合
  985.   #--------------------------------------------------------------------------
  986.   def graphics_change
  987.     @graphics_change = true
  988.     return @battler.graphics_change(@action_data[3]) if [email protected]?
  989.     @pre_change_data = [@battler.character_name, @battler.character_index, @battler.face_name, @battler.face_index] if @pre_change_data == nil && !@action_data[1]
  990.     if @action_data[4] == []
  991.       face_name = @battler.face_name
  992.       face_index = @battler.face_index
  993.     else
  994.       face_name = @action_data[4][1]
  995.       face_index = @action_data[4][0]
  996.     end
  997.     @battler.set_graphic(@action_data[3], @action_data[2], face_name, face_index)
  998.   end
  999.   #--------------------------------------------------------------------------
  1000.   # ● スキル派生
  1001.   #--------------------------------------------------------------------------
  1002.   def derivating_skill
  1003.     # 未修得スキルは派生不可なら
  1004.     return if !@action_data[1] && [email protected]_learn?($data_skills[@action_data[3]])
  1005.     # コスト不足は派生不可なら
  1006.     return if !@action_data[2] && [email protected]_cost_payable?($data_skills[@action_data[3]])
  1007.     # 派生
  1008.     @derivation_skill_id = @action_data[3]
  1009.     # 以降のアクションをキャンセル
  1010.     @full_action = []
  1011.   end
  1012.   #--------------------------------------------------------------------------
  1013.   # ● BGM/BGS/SE演奏
  1014.   #--------------------------------------------------------------------------
  1015.   def sound
  1016.     pitch = @action_data[2]
  1017.     vol   = @action_data[3]
  1018.     name  = @action_data[4]
  1019.     case @action_data[1]
  1020.     when "se"
  1021.       Audio.se_play("Audio/SE/" + name, vol, pitch)
  1022.     when "bgm"
  1023.       # 名前指定のない場合、現在のBGMを変えないように
  1024.       name = RPG::BGM.last.name if @action_data[4] == ""
  1025.       Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
  1026.     when "bgs"
  1027.       name = RPG::BGS.last.name if @action_data[4] == ""
  1028.       Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
  1029.     end
  1030.   end
  1031.   #--------------------------------------------------------------------------
  1032.   # ● ムービーの再生
  1033.   #--------------------------------------------------------------------------
  1034.   def movie
  1035.     Graphics.play_movie('Movies/' + @action_data[1])
  1036.   end
  1037.   #--------------------------------------------------------------------------
  1038.   # ● ゲームスイッチ操作
  1039.   #--------------------------------------------------------------------------
  1040.   def switches
  1041.     for id in @action_data[1]
  1042.       $game_switches[id] = true if id > 0
  1043.       $sv_camera.switches[id.abs] = true  if id < 0
  1044.     end
  1045.     for id in @action_data[2]
  1046.       $game_switches[id] = false if id > 0
  1047.       $sv_camera.switches[id.abs] = false  if id < 0
  1048.     end
  1049.     $sv_camera.program_check
  1050.   end
  1051.   #--------------------------------------------------------------------------
  1052.   # ● ゲーム変数操作
  1053.   #--------------------------------------------------------------------------
  1054.   def variable
  1055.     # オペランドチェック
  1056.     operand = @action_data[3]
  1057.     operand = $game_variables[@action_data[3].abs] if @action_data[3] < 0
  1058.     # 変数操作で分岐
  1059.     case @action_data[2]
  1060.     when 0 ; $game_variables[@action_data[1]] = operand  # 代入
  1061.     when 1 ; $game_variables[@action_data[1]] += operand # 加算
  1062.     when 2 ; $game_variables[@action_data[1]] -= operand # 減算
  1063.     when 3 ; $game_variables[@action_data[1]] *= operand # 乗算
  1064.     when 4 ; $game_variables[@action_data[1]] /= operand # 除算
  1065.     when 5 ; $game_variables[@action_data[1]] %= operand # 剰余
  1066.     end
  1067.   end  
  1068.   #--------------------------------------------------------------------------
  1069.   # ● 条件分岐 (ゲームスイッチ)
  1070.   #--------------------------------------------------------------------------
  1071.   def nece_1
  1072.     judgment = $game_switches[@action_data[1]] == @action_data[2] if @action_data[1] > 0
  1073.     judgment = $sv_camera.switches[@action_data[1].abs] == @action_data[2] if @action_data[1] < 0
  1074.     action_diverging(judgment, @action_data[3])
  1075.   end  
  1076.   #--------------------------------------------------------------------------
  1077.   # ● 条件分岐 (ゲーム変数)
  1078.   #--------------------------------------------------------------------------
  1079.   def nece_2
  1080.     variable = $game_variables[@action_data[1]]
  1081.     num = @action_data[2]
  1082.     num = $game_variables[@action_data[2].abs] if num < 0
  1083.     case @action_data[3]
  1084.     when 0 ; judgment = variable == num
  1085.     when 1 ; judgment = variable < num
  1086.     when 2 ; judgment = variable > num
  1087.     end  
  1088.     action_diverging(judgment, @action_data[4])
  1089.   end  
  1090.   #--------------------------------------------------------------------------
  1091.   # ● 条件分岐 (ステート)
  1092.   #--------------------------------------------------------------------------
  1093.   def nece_3
  1094.     targets = N03.get_targets(@action_data[1], @battler)
  1095.     return if targets == []
  1096.     member_num = @action_data[4]
  1097.     member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1098.     hit_count = 0
  1099.     miss_count = 0
  1100.     for target in targets
  1101.       hit_count += 1 if target.state?(@action_data[2])
  1102.       miss_count += 1 if !target.state?(@action_data[2])
  1103.     end
  1104.     case @action_data[3]
  1105.     when 0 ; judgment = hit_count >= member_num
  1106.     when 1 ; judgment = miss_count >= member_num
  1107.     end
  1108.     action_diverging(judgment, @action_data[5])
  1109.   end  
  1110.   #--------------------------------------------------------------------------
  1111.   # ● 条件分岐 (スキル)
  1112.   #--------------------------------------------------------------------------
  1113.   def nece_4
  1114.     targets = N03.get_targets(@action_data[1], @battler)
  1115.     return if targets == []
  1116.     member_num = @action_data[4]
  1117.     member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1118.     hit_count = 0
  1119.     miss_count = 0
  1120.     for target in targets
  1121.       hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]])
  1122.       miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]])
  1123.     end
  1124.     case @action_data[3]
  1125.     when 0 ; judgment = hit_count >= member_num
  1126.     when 1 ; judgment = miss_count >= member_num
  1127.     end
  1128.     action_diverging(judgment, @action_data[5])
  1129.   end  
  1130.   #--------------------------------------------------------------------------
  1131.   # ● 条件分岐 (パラメータ)
  1132.   #--------------------------------------------------------------------------
  1133.   def nece_5
  1134.     targets = N03.get_targets(@action_data[1], @battler)
  1135.     return if targets == []
  1136.     member_num = @action_data[5]
  1137.     member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1138.     hit_count = 0
  1139.     for target in targets
  1140.       hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
  1141.     end
  1142.     judgment = hit_count >= member_num
  1143.     action_diverging(judgment, @action_data[6])
  1144.   end  
  1145.   #--------------------------------------------------------------------------
  1146.   # ● 条件分岐 (装備)
  1147.   #--------------------------------------------------------------------------
  1148.   def nece_6
  1149.     targets = N03.get_targets(@action_data[1], @battler)
  1150.     return if targets == []
  1151.     member_num = @action_data[5]
  1152.     member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1153.     hit_count = 0
  1154.     miss_count = 0
  1155.     for target in targets
  1156.       hit_count += 1 if target.comparison_equip([@action_data[2],@action_data[3]])
  1157.       miss_count += 1 if !target.comparison_equip([@action_data[2],@action_data[3]])
  1158.     end
  1159.     case @action_data[4]
  1160.     when 0 ; judgment = hit_count >= member_num
  1161.     when 1 ; judgment = miss_count >= member_num
  1162.     end
  1163.     action_diverging(judgment, @action_data[6])
  1164.   end  
  1165.   #--------------------------------------------------------------------------
  1166.   # ● 条件分岐 (スクリプト)
  1167.   #--------------------------------------------------------------------------
  1168.   def nece_7
  1169.     judgment = eval(@action_data[2])
  1170.     action_diverging(judgment, @action_data[1])
  1171.   end  
  1172.   #--------------------------------------------------------------------------
  1173.   # ● アクション分岐  
  1174.   #--------------------------------------------------------------------------
  1175.   def action_diverging(judgment, kind)
  1176.     result = 0
  1177.     if judgment
  1178.       result = 1 if kind == 1
  1179.       result = 2 if kind == 2
  1180.     else
  1181.       result = 1 if kind == 0
  1182.     end
  1183.     # フルアクション終了
  1184.     return @full_action = []  if result == 2
  1185.     # 次のアクションを除去
  1186.     @full_action.shift if result == 1
  1187.     set_action
  1188.     # 次のアクションを実行
  1189.     @action_data = N03::ACTION[@action]
  1190.     next_action
  1191.   end
  1192.   #--------------------------------------------------------------------------
  1193.   # ● セカンドターゲット操作
  1194.   #--------------------------------------------------------------------------
  1195.   def second_targets_set
  1196.     targets = N03.get_targets(@action_data[1], @battler)
  1197.     for target in targets
  1198.       targets.delete(target) if @action_data[2][1] == 1 && target.index != @action_data[2][0]
  1199.       targets.delete(target) if @action_data[2][1] == 2 && target.index == @action_data[2][0].abs
  1200.       targets.delete(target) if @action_data[3] > 0 && target.id != @action_data[3]
  1201.       targets.delete(target) if @action_data[3] < 0 && target.id == @action_data[3].abs
  1202.       targets.delete(target) if @action_data[4] > 0 && !target.state?(@action_data[4])
  1203.       targets.delete(target) if @action_data[4] < 0 && target.state?(@action_data[4].abs)
  1204.       targets.delete(target) if @action_data[5] > 0 && !target.skill_conditions_met?($data_skills[@action_data[5]])
  1205.       targets.delete(target) if @action_data[5] < 0 && target.skill_conditions_met?($data_skills[@action_data[5].abs])
  1206.       targets.delete(target) if !target.comparison_parameter(@action_data[6])
  1207.       targets.delete(target) if !@action_data[7][1].include?(0) && !target.comparison_equip(@action_data[7])
  1208.     end
  1209.     return @second_targets = [] if targets.size == 0
  1210.     case @action_data[8]
  1211.     when 1 ; targets = [targets[rand(targets.size)]]
  1212.     when 2 ; targets.delete(@battler)
  1213.     end
  1214.     return @second_targets = [] if targets.size == 0
  1215.     @second_targets = targets
  1216.     case @action_data[9]
  1217.     when 0 ; return
  1218.     when 1 ; set_play_data(["second_targets_set"])
  1219.     when 2 ; set_play_data(["targets_set"])
  1220.     end
  1221.     @wait += 1
  1222.   end
  1223.   #--------------------------------------------------------------------------
  1224.   # ● コモンイベント呼び出し
  1225.   #--------------------------------------------------------------------------
  1226.   def call_common_event
  1227.     $game_temp.reserve_common_event(@action_data[1])
  1228.     $sv_camera.event = true
  1229.     @event_fix = @action_data[2]
  1230.   end
  1231.   #--------------------------------------------------------------------------
  1232.   # ● ダメージアニメ
  1233.   #--------------------------------------------------------------------------
  1234.   def damage_anime(delay_time = 12)
  1235.     anime(N03.get_attack_anime_id(-3, @battler), wait = true)
  1236.     action_play
  1237.     @wait -= delay_time
  1238.     @full_action.unshift("eval('@damage_anime_data = []
  1239.     @set_damage = true')")
  1240.   end
  1241.   #--------------------------------------------------------------------------
  1242.   # ● 通常コラプス
  1243.   #--------------------------------------------------------------------------
  1244.   def normal_collapse
  1245.     @collapse = true
  1246.     return
  1247.   end
  1248.   #--------------------------------------------------------------------------
  1249.   # ● 初期位置変更
  1250.   #--------------------------------------------------------------------------
  1251.   def change_base_position
  1252.     @base_x = @x
  1253.     @base_y = @y
  1254.     @base_h = @h
  1255.   end  
  1256.   #--------------------------------------------------------------------------
  1257.   # ● 強制アクション実行
  1258.   #--------------------------------------------------------------------------
  1259.   def force_act
  1260.     target(@full_action.shift)
  1261.   end
  1262.   #--------------------------------------------------------------------------
  1263.   # ● 強制アクション実行 (セカンドターゲット)
  1264.   #--------------------------------------------------------------------------
  1265.   def force_act2
  1266.     target2(@full_action.shift)
  1267.   end
  1268.   #--------------------------------------------------------------------------
  1269.   # ● 個別処理開始
  1270.   #--------------------------------------------------------------------------
  1271.   def individual_start
  1272.     @individual_targets = @target_battler.dup
  1273.     @remain_targets = @target_battler.dup
  1274.     @target_battler = [@individual_targets[0]]
  1275.     # リピート部分のアクションを保持
  1276.     @individual_act = @full_action.dup
  1277.   end
  1278.   #--------------------------------------------------------------------------
  1279.   # ● 個別処理終了
  1280.   #--------------------------------------------------------------------------
  1281.   def individual_end
  1282.     @individual_targets.shift
  1283.     for target in @individual_targets
  1284.       @individual_targets.shift if target.dead?
  1285.     end
  1286.     # ターゲットが残っているなら行動リピート
  1287.     return @target_battler = @remain_targets if @individual_targets.size == 0
  1288.     @full_action = @individual_act.dup
  1289.     @target_battler = [@individual_targets[0]]
  1290.   end
  1291.   #--------------------------------------------------------------------------
  1292.   # ● ループ開始
  1293.   #--------------------------------------------------------------------------
  1294.   def loop_start
  1295.     # ループ部分のアクションを保持
  1296.     @loop_act = @full_action.dup
  1297.   end
  1298.   #--------------------------------------------------------------------------
  1299.   # ● ループ終了
  1300.   #--------------------------------------------------------------------------
  1301.   def loop_end
  1302.     # 行動リピート
  1303.     @full_action = @loop_act.dup if @loop_act != []
  1304.   end
  1305.   #--------------------------------------------------------------------------
  1306.   # ● 次の行動者へ移行
  1307.   #--------------------------------------------------------------------------
  1308.   def next_battler
  1309.     @action_end = true
  1310.     @active = false
  1311.   end
  1312.   #--------------------------------------------------------------------------
  1313.   # ● 画像変更フラグ
  1314.   #--------------------------------------------------------------------------
  1315.   def set_change
  1316.     @change_up = true
  1317.   end
  1318.   #--------------------------------------------------------------------------
  1319.   # ● 戦闘シーン通信
  1320.   #--------------------------------------------------------------------------
  1321.   def play_data
  1322.     data = @play_data
  1323.     @play_data = []
  1324.     return data
  1325.   end
  1326.   #--------------------------------------------------------------------------
  1327.   # ● ショートカットコマンド
  1328.   #--------------------------------------------------------------------------
  1329.   def anime(anime_id, wait = true)
  1330.     @action_data = ["anime",anime_id,1,false,wait,false,true,false]
  1331.   end
  1332.   def anime_me(anime_id, wait = true)
  1333.     @action_data = ["anime",anime_id,0,false,wait,false,true,false]
  1334.   end
  1335.   def se(file, pitch = 100)
  1336.     @action_data = ["sound",  "se", pitch, 100, file]
  1337.   end
  1338.   def target(act)
  1339.     for target in @target_battler do target.sv.force_action = act end
  1340.   end
  1341.   def target2(act)
  1342.     for target in @second_targets do target.sv.force_action = act end
  1343.   end
  1344.   def delay(time)
  1345.     @wait = @battler.index * time
  1346.   end
  1347.   #--------------------------------------------------------------------------
  1348.   # ● バトラーのIDを取得
  1349.   #--------------------------------------------------------------------------
  1350.   def id
  1351.     return @battler.id if @battler.actor?
  1352.     return [email protected]
  1353.   end
  1354.   #--------------------------------------------------------------------------
  1355.   # ● 被クリティカルフラグを取得
  1356.   #--------------------------------------------------------------------------
  1357.   def critical?
  1358.     return @battler.result.critical
  1359.   end
  1360.   #--------------------------------------------------------------------------
  1361.   # ● 被回復フラグを取得
  1362.   #--------------------------------------------------------------------------
  1363.   def recovery?
  1364.     recovery = false
  1365.     recovery = true if @battler.result.hp_damage < 0
  1366.     recovery = true if @battler.result.mp_damage < 0
  1367.     recovery = true if @battler.result.tp_damage < 0
  1368.     return recovery
  1369.   end
  1370.   #--------------------------------------------------------------------------
  1371.   # ● 被スキルIDを取得
  1372.   #--------------------------------------------------------------------------
  1373.   def damage_skill_id
  1374.     return @damage_skill_id
  1375.   end
  1376.   #--------------------------------------------------------------------------
  1377.   # ● 被アイテムIDを取得
  1378.   #--------------------------------------------------------------------------
  1379.   def damage_item_id
  1380.     return @damage_item_id
  1381.   end
  1382.   #--------------------------------------------------------------------------
  1383.   # ● 装備武器を取得
  1384.   #--------------------------------------------------------------------------
  1385.   def weapon_id
  1386.     return 0 if [email protected][0]
  1387.     return @battler.weapons[0].id
  1388.   end
  1389.   #--------------------------------------------------------------------------
  1390.   # ● 装備武器のタイプを取得
  1391.   #--------------------------------------------------------------------------
  1392.   def weapon_type
  1393.     return 0 if [email protected][0]
  1394.     return @battler.weapons[0].wtype_id
  1395.   end
  1396.   #--------------------------------------------------------------------------
  1397.   # ● 盾を装備しているか
  1398.   #--------------------------------------------------------------------------
  1399.   def shield?
  1400.     for armor in @battler.armors do return true if armor != nil && armor.etype_id == 1 end
  1401.     return false
  1402.   end
  1403.   #--------------------------------------------------------------------------
  1404.   # ● ダメージがあるか
  1405.   #--------------------------------------------------------------------------
  1406.   def damage_zero?
  1407.     return @battler.result.hp_damage == 0 && @battler.result.mp_damage == 0 && @battler.result.tp_damage == 0
  1408.   end
  1409.   #--------------------------------------------------------------------------
  1410.   # ● スキルIDを取得
  1411.   #--------------------------------------------------------------------------
  1412.   def skill_id
  1413.     return @counter_id if @counter_id != 0
  1414.     return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1415.     return 0 if @battler.current_action.item.is_a?(RPG::Item)
  1416.     return @battler.current_action.item.id
  1417.   end
  1418.   #--------------------------------------------------------------------------
  1419.   # ● スキルのタイプを取得
  1420.   #--------------------------------------------------------------------------
  1421.   def skill_type
  1422.     return 0 if skill_id == 0
  1423.     return $data_skills[skill_id].stype_id
  1424.   end
  1425.   #--------------------------------------------------------------------------
  1426.   # ● スキル名を取得
  1427.   #--------------------------------------------------------------------------
  1428.   def skill_name
  1429.     return "" if skill_id == 0
  1430.     return $data_skills[skill_id].name
  1431.   end
  1432.   #--------------------------------------------------------------------------
  1433.   # ● アイテムIDを取得
  1434.   #--------------------------------------------------------------------------
  1435.   def item_id
  1436.     return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1437.     return @battler.current_action.item.id
  1438.   end
  1439.   #--------------------------------------------------------------------------
  1440.   # ● 攻撃アクション
  1441.   #--------------------------------------------------------------------------
  1442.   def attack_action(item)
  1443.     return skill_action if item.is_a?(RPG::Skill)
  1444.     return item_action
  1445.   end
  1446.   #--------------------------------------------------------------------------
  1447.   # ● ダメージアクションベース
  1448.   #--------------------------------------------------------------------------
  1449.   def damage_action_base(item)
  1450.     @damage_skill_id = 0
  1451.     @damage_item_id = 0
  1452.     @damage_skill_id = item.id if item.is_a?(RPG::Skill)
  1453.     @damage_item_id = item.id if item.is_a?(RPG::Item)
  1454.   end  
  1455.   #--------------------------------------------------------------------------
  1456.   # ● ダメージアクション
  1457.   #--------------------------------------------------------------------------
  1458.   def damage_action(attacker, item)
  1459.     damage_action_base(item)
  1460.     act = damage(attacker)
  1461.     return if @active
  1462.     start_action(act) if act != nil
  1463.   end
  1464.   #--------------------------------------------------------------------------
  1465.   # ● 回避アクション
  1466.   #--------------------------------------------------------------------------
  1467.   def evasion_action(attacker, item)
  1468.     damage_action_base(item)
  1469.     act = evasion(attacker)
  1470.     return if @active
  1471.     start_action(act) if act != nil
  1472.   end
  1473.   #--------------------------------------------------------------------------
  1474.   # ● ミスアクション
  1475.   #--------------------------------------------------------------------------
  1476.   def miss_action(attacker, item)
  1477.     damage_action_base(item)
  1478.     act = miss(attacker)
  1479.     return if @active
  1480.     start_action(act) if act != nil
  1481.   end
  1482.   #--------------------------------------------------------------------------
  1483.   # ● 閃きスクリプト併用処理
  1484.   #--------------------------------------------------------------------------
  1485.   def flash_action
  1486.     return "閃き"
  1487.   end
  1488.   
  1489. end


  1490. #==============================================================================
  1491. # ■ module N03
  1492. #------------------------------------------------------------------------------
  1493. #  サイドビューバトルのモジュールです。
  1494. #==============================================================================
  1495. module N03
  1496.   #--------------------------------------------------------------------------
  1497.   # ● バトラーの敵グループを取得
  1498.   #--------------------------------------------------------------------------
  1499.   def self.get_enemy_unit(battler)
  1500.     return $game_troop if battler.actor?
  1501.     return $game_party
  1502.   end
  1503.   #--------------------------------------------------------------------------
  1504.   # ● バトラーの味方グループを取得
  1505.   #--------------------------------------------------------------------------
  1506.   def self.get_party_unit(battler)
  1507.     return $game_party if battler.actor?
  1508.     return $game_troop
  1509.   end
  1510.   #--------------------------------------------------------------------------
  1511.   # ● 戦闘アニメ時間の取得
  1512.   #--------------------------------------------------------------------------
  1513.   def self.get_anime_time(anime_id)
  1514.     return 0 if anime_id <= 0
  1515.     return $data_animations[anime_id].frame_max * 4
  1516.   end
  1517.   #--------------------------------------------------------------------------
  1518.   # ● 攻撃アニメの取得
  1519.   #--------------------------------------------------------------------------
  1520.   def self.get_attack_anime_id(kind, battler)
  1521.     return $data_skills[battler.sv.counter_id].animation_id if kind == -3 && battler.sv.counter_id != 0
  1522.     case kind
  1523.     when -1 ; anime_id = battler.atk_animation_id1
  1524.     when -2 ; anime_id = battler.atk_animation_id2
  1525.     when -3
  1526.       if battler.current_action != nil
  1527.         anime_id = battler.current_action.item.animation_id if battler.current_action.item != nil
  1528.       end
  1529.     else    ; anime_id = kind
  1530.     end
  1531.     case anime_id
  1532.     when -1 ; anime_id = battler.atk_animation_id1
  1533.     when -2 ; anime_id = battler.atk_animation_id2
  1534.     end
  1535.     return anime_id if anime_id
  1536.     return 0
  1537.   end  
  1538.   #--------------------------------------------------------------------------
  1539.   # ● 戦闘アニメデータをセット
  1540.   #--------------------------------------------------------------------------
  1541.   def self.set_damage_anime_data(targets, target, data)
  1542.     return if !first_of_all_screen_anime(data[0], target, targets)
  1543.     target.animation_id         = data[0]
  1544.     target.animation_mirror     = data[1]
  1545.     target.sv.anime_no_mirror   = data[2]
  1546.     target.sv.anime_camera_zoom = data[3]
  1547.     target.sv.anime_plus_z      = data[4]
  1548.   end   
  1549.   #--------------------------------------------------------------------------
  1550.   # ● ターゲットの取得
  1551.   #--------------------------------------------------------------------------
  1552.   def self.get_targets(kind, battler)
  1553.     case kind.abs
  1554.     when 0 ; return [battler].dup
  1555.     when 1 ; return battler.sv.target_battler.dup
  1556.     when 2 ; return get_enemy_unit(battler).members.dup
  1557.     when 3 ; return get_party_unit(battler).members.dup
  1558.     when 4 ; return $game_troop.members.dup + $game_party.battle_members.dup
  1559.     when 5 ; return battler.sv.second_targets.dup
  1560.     end
  1561.   end  
  1562.   #--------------------------------------------------------------------------
  1563.   # ● ターゲットの座標を取得
  1564.   #--------------------------------------------------------------------------
  1565.   def self.get_targets_position(targets, horming, m_a = nil)
  1566.     return [0,0,0] if targets == nil && !$sv_camera.mirror
  1567.     return [Graphics.width,0,0] if targets == nil && $sv_camera.mirror
  1568.     x = y = h = 0
  1569.     for i in 0...targets.size
  1570.       x += targets[i].sv.base_x if !horming
  1571.       y += targets[i].sv.base_y if !horming
  1572.       h += targets[i].sv.base_h if !horming
  1573.       x += targets[i].sv.x if horming
  1574.       y += targets[i].sv.y if horming
  1575.       h += targets[i].sv.h if horming
  1576.       y -= targets[i].sv.ch * 100 if m_a == 0
  1577.       y -= targets[i].sv.ch * 50 if m_a == 1
  1578.     end
  1579.     return [x / targets.size, y / targets.size, h / targets.size]
  1580.   end
  1581.   #--------------------------------------------------------------------------
  1582.   # ● 速度を時間に変換
  1583.   #--------------------------------------------------------------------------
  1584.   def self.distanse_calculation(time, target_position, self_position, distanse_move)
  1585.     return time if !distanse_move
  1586.     distanse_x = self_position[0] - target_position[0]
  1587.     distanse_x = target_position[0] - self_position[0] if target_position[0] > self_position[0]
  1588.     distanse_y = self_position[1] - target_position[1]
  1589.     distanse_y = target_position[1] - self_position[1] if target_position[1] > self_position[1]
  1590.     if self_position[2] != nil && target_position[2] != nil
  1591.       distanse_h = self_position[2] - target_position[2]
  1592.       distanse_h = target_position[2] - self_position[2] if target_position[2] > self_position[2]
  1593.     else
  1594.       distanse_h = 0
  1595.     end
  1596.     distanse = [distanse_x, distanse_y, distanse_h].max
  1597.     return distanse / (time * 100) + 1
  1598.   end
  1599.   #--------------------------------------------------------------------------
  1600.   # ● 放物線移動計算
  1601.   #--------------------------------------------------------------------------
  1602.   def self.parabola(data, time, size, type = 1)
  1603.     move_data = data
  1604.     move_data[0] *= size
  1605.     move_data[1] *= size
  1606.     move = []
  1607.     move_d = []
  1608.     for i in 0...time / 2
  1609.       move[i] = move_data[0]
  1610.       move_d[i] = move_data[1]
  1611.       move_data[0] = move_data[0] * type / (1 + type)
  1612.       move_data[1] = move_data[1] * type / (1 + type)
  1613.     end
  1614.     move = move + move_d.reverse!
  1615.     move.reverse!
  1616.     adjust = move.inject(0) {|result, item| result + item }
  1617.     move[move.size - 1] += adjust if data[0] == data[1] && adjust != 0
  1618.     move.unshift(0) if time % 2 != 0
  1619.     return move
  1620.   end
  1621.   #--------------------------------------------------------------------------
  1622.   # ● 反転値
  1623.   #--------------------------------------------------------------------------
  1624.   def self.mirror_num(mirror)
  1625.     return 1 if !mirror
  1626.     return -1
  1627.   end  
  1628.   #--------------------------------------------------------------------------
  1629.   # ● カメラワーク
  1630.   #--------------------------------------------------------------------------
  1631.   def self.camera(battler, data)
  1632.     battler = $game_party.battle_members[0] if !battler
  1633.     cx = data[2][0] * 100
  1634.     cy = data[2][1] * 100
  1635.     return $sv_camera.move(cx, cy, data[3], data[4], true) if data[1] == 6
  1636.     targets = self.get_targets(data[1], battler)
  1637.     return if targets == nil or targets == []
  1638.     position = self.get_targets_position(targets, true)
  1639.     $sv_camera.move(position[0], position[1] - position[2], data[3], data[4], false)
  1640.   end
  1641.   #--------------------------------------------------------------------------
  1642.   # ● コラプス禁止
  1643.   #--------------------------------------------------------------------------
  1644.   def self.immortaling
  1645.     # 全員に不死身付与
  1646.     for member in $game_party.battle_members + $game_troop.members
  1647.       # イベント操作等で不死身設定になっていたら解除を無効にするフラグを立てる
  1648.       member.sv.immortal = true if member.state?(N03::IMMORTAL_ID)
  1649.       member.add_state(N03::IMMORTAL_ID)
  1650.     end
  1651.     return true
  1652.   end  
  1653.   #--------------------------------------------------------------------------
  1654.   # ● コラプス許可
  1655.   #--------------------------------------------------------------------------
  1656.   def self.unimmortaling
  1657.     # 全員の不死身化解除(イベント等で不死身設定がされていれば除く)
  1658.     for member in $game_party.battle_members + $game_troop.members
  1659.       next if member.dead?
  1660.       # 不死身ステートが行動中に解除されていた場合、解除無効を解除
  1661.       member.sv.immortal = false if !member.state?(N03::IMMORTAL_ID) && member.sv.immortal
  1662.       next member.sv.immortal = false if member.sv.immortal
  1663.       member.remove_state(N03::IMMORTAL_ID)
  1664.       next if member.hp != 0
  1665.       member.add_state(1)
  1666.       member.perform_collapse_effect
  1667.       member.sv.action_terminate
  1668.     end
  1669.     return false
  1670.   end  
  1671.   #--------------------------------------------------------------------------
  1672.   # ● スキル派生
  1673.   #--------------------------------------------------------------------------
  1674.   def self.derived_skill(battler)
  1675.     battler.force_action(battler.sv.derivation_skill_id, -2)
  1676.     BattleManager.unshift_action_battlers(battler)
  1677.   end
  1678.   #--------------------------------------------------------------------------
  1679.   # ● ダメージの作成
  1680.   #--------------------------------------------------------------------------
  1681.   def self.set_damage(battler, hp_damage, mp_damage)
  1682.     battler.result.hp_damage = hp_damage
  1683.     battler.result.mp_damage = mp_damage
  1684.   end
  1685.   #--------------------------------------------------------------------------
  1686.   # ● ターゲット生死確認
  1687.   #--------------------------------------------------------------------------
  1688.   def self.targets_alive?(targets)
  1689.     return false if targets == []
  1690.     for target in targets do return true if !target.dead? end
  1691.     return false
  1692.   end
  1693.   #--------------------------------------------------------------------------
  1694.   # ● ターゲットをセカンドターゲットへ
  1695.   #--------------------------------------------------------------------------
  1696.   def self.s_targets(battler)
  1697.     battler.sv.target_battler = battler.sv.second_targets
  1698.     return battler.sv.second_targets
  1699.   end  
  1700.   #--------------------------------------------------------------------------
  1701.   # ● セカンドターゲットをターゲットへ
  1702.   #--------------------------------------------------------------------------
  1703.   def self.targets_set(battler)
  1704.     battler.sv.second_targets = battler.current_action.make_targets.compact
  1705.     battler.sv.target_battler = battler.sv.second_targets
  1706.   end  
  1707.   #--------------------------------------------------------------------------
  1708.   # ● 戦闘アニメ実行判定 (対象:画面時は最初のターゲットのみアニメ実行)
  1709.   #--------------------------------------------------------------------------
  1710.   def self.first_of_all_screen_anime(anime_id, target, targets)
  1711.     anime = $data_animations[anime_id]
  1712.     return false if !anime
  1713.     return true if anime.position != 3
  1714.     return false if anime.position == 3 && target != targets[0]
  1715.     targets.delete(target)
  1716.     target.sv.timing_targets = targets
  1717.     return true
  1718.   end
  1719.   #--------------------------------------------------------------------------
  1720.   # ● 戦闘不能付加攻撃か
  1721.   #--------------------------------------------------------------------------
  1722.   def self.dead_attack?(battler, item)
  1723.     for state in battler.atk_states
  1724.       return true if state == battler.death_state_id
  1725.     end
  1726.     for effect in item.effects
  1727.       return true if effect.code == 21 && effect.data_id == battler.death_state_id
  1728.     end
  1729.     return false
  1730.   end  
  1731.    
  1732. end
复制代码
va超级整合的横版战斗脚本使用后战斗时使用技能这个脚本就出现如图这样的情况,求解决

233.jpg (12.39 KB, 下载次数: 22)

错误截图-。-

错误截图-。-

作者: VIPArcher    时间: 2014-12-31 19:45
动画没设置,解决方法把范例里的110多号来着我也不记得了,反正就是那几个待机的动画复制到你的工程
把动画数量设置为999就不会报错了
作者: 木讷    时间: 2014-12-31 19:56
VIPArcher 发表于 2014-12-31 19:45
动画没设置,解决方法把范例里的110多号来着我也不记得了,反正就是那几个待机的动画复制到你的工程
把 ...

已解决谢谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1