Project1

标题: VA整合脚本出现这种问题怎么办 [打印本页]

作者: lanyanzuanshi    时间: 2013-7-7 17:47
标题: VA整合脚本出现这种问题怎么办
弓箭的普通攻击后就这样了……求助!

作者: lanyanzuanshi    时间: 2013-7-7 17:48
脚本……哪位大神能解决帮个忙谢谢!

作者: lanyanzuanshi    时间: 2013-7-7 17:49
  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.     @jump = []
  103.     @curve = []
  104.     @ox = 0
  105.     @oy = 0
  106.     @oy_adjust = 0
  107.     @z_plus = 0
  108.     @move_time = 0
  109.     @angle = 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.     @wait = 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.     @color = []
  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.     @mirror = 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?('横板的完整脚本……)
  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.     return if @set_damage
  821.     for target in targets do display_anime(targets, target, data) end
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   # ● 武器アニメ開始
  825.   #--------------------------------------------------------------------------
  826.   def weapon_anime(anime_data)
  827.     @weapon_end = true
  828.     for i in 9...anime_data.size
  829.       set_effect_data(anime_data[i]) if anime_data[i] != ""
  830.     end
  831.   end
  832.   #--------------------------------------------------------------------------
  833.   # ● アニメ飛ばし開始
  834.   #--------------------------------------------------------------------------
  835.   def move_anime
  836.     @m_a_starter = []
  837.     @m_a_targets = []
  838.     starters = N03.get_targets(@action_data[2], @battler)
  839.     targets = N03.get_targets(@action_data[3], @battler)
  840.     return if starters == [] or targets == []
  841.     single_start = true if starters != nil && @action_data[2] < 0
  842.     single_start = true if @action_data[1][0] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][0], @battler)].position == 3
  843.     starters = [starters[0]] if single_start
  844.     single_end = true if targets != nil && @action_data[3] < 0
  845.     single_end = true if @action_data[1][1] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][1], @battler)].position == 3
  846.     targets = [targets[0]] if single_end
  847.     se_flag = true
  848.     for starter in starters
  849.       for target in targets
  850.         data = @action_data.dup
  851.         data[17] = se_flag
  852.         @effect_data.push(data)
  853.         @m_a_targets.push(target)
  854.         @m_a_starter.push(starter)
  855.         se_flag = false
  856.       end
  857.     end  
  858.   end
  859.   #--------------------------------------------------------------------------
  860.   # ● スプライトセット通信
  861.   #--------------------------------------------------------------------------
  862.   def set_effect_data(data = @action)
  863.     action_data = N03::ACTION[data]
  864.     return if action_data == nil
  865.     @effect_data.push(action_data.dup)
  866.   end
  867.   #--------------------------------------------------------------------------
  868.   # ● 戦闘シーン通信のデータを格納
  869.   #--------------------------------------------------------------------------
  870.   def set_play_data(data = @action_data)
  871.     @play_data = data.dup
  872.   end
  873.   #--------------------------------------------------------------------------
  874.   # ● 戦闘アニメの表示
  875.   #--------------------------------------------------------------------------
  876.   def display_anime(targets, target, data)
  877.     return if !N03.first_of_all_screen_anime(data[1], target, targets)
  878.     target.animation_id         = N03.get_attack_anime_id(data[1], @battler)
  879.     target.animation_mirror     = data[8]
  880.     target.sv.anime_horming     = data[3]
  881.     target.sv.anime_camera_zoom = data[6]
  882.     target.sv.anime_no_mirror   = data[7]
  883.     target.sv.anime_plus_z      = data[9]
  884.   end
  885.   #--------------------------------------------------------------------------
  886.   # ● 戦闘アニメ拡張データの初期化
  887.   #--------------------------------------------------------------------------
  888.   def reset_anime_data
  889.     @anime_no_mirror = false
  890.     @anime_horming = false
  891.     @anime_camera_zoom = false
  892.     @timing_targets = []
  893.     @anime_plus_z = true
  894.   end  
  895.   #--------------------------------------------------------------------------
  896.   # ● カメラワーク
  897.   #--------------------------------------------------------------------------
  898.   def camera
  899.     data = @action_data.dup
  900.     N03.camera(@battler, data)
  901.     @wait = data[4] if data[5]
  902.   end  
  903.   #--------------------------------------------------------------------------
  904.   # ● 画面のシェイク
  905.   #--------------------------------------------------------------------------
  906.   def shake
  907.     data = @action_data.dup
  908.     $sv_camera.shake(data[1], data[2], data[3])
  909.     @wait = data[3] if data[4]
  910.   end
  911.   #--------------------------------------------------------------------------
  912.   # ● 画面色調変更
  913.   #--------------------------------------------------------------------------
  914.   def color_effect
  915.     case @action_data[1]
  916.     when 0,1,2,3,4,5
  917.       targets = N03.get_targets(@action_data[1], @battler)
  918.     when 6
  919.       screen = true
  920.     when 7
  921.       targets = [@battler] + @target_battler
  922.     when 8
  923.       screen = true
  924.       targets = $game_troop.members + $game_party.battle_members - [@battler]
  925.     when 9
  926.       screen = true
  927.       targets = $game_troop.members + $game_party.battle_members - [@battler] - @target_battler
  928.     when 10
  929.       screen = true
  930.       targets = $game_troop.members + $game_party.battle_members
  931.     end
  932.     return if screen == nil && targets == []
  933.     for target in targets do target.sv.color_set = @action_data[2] end if targets
  934.     @wait = @action_data[2][4] if @action_data[3]
  935.     return if !screen
  936.     $sv_camera.color_set[1] = @action_data[2]
  937.     $sv_camera.color_set[2] = @action_data[2]
  938.   end  
  939.   #--------------------------------------------------------------------------
  940.   # ● トランジション
  941.   #--------------------------------------------------------------------------
  942.   def transition
  943.     $sv_camera.perform_transition(@action_data)
  944.   end  
  945.   #--------------------------------------------------------------------------
  946.   # ● ふきだしアニメ表示
  947.   #--------------------------------------------------------------------------
  948.   def balloon_anime
  949.     @balloon_data = @action_data.dup
  950.   end  
  951.   #--------------------------------------------------------------------------
  952.   # ● ピクチャ表示
  953.   #--------------------------------------------------------------------------
  954.   def picture_set
  955.     @picture = true
  956.     set_effect_data
  957.   end
  958.   #--------------------------------------------------------------------------
  959.   # ● ステート操作
  960.   #--------------------------------------------------------------------------
  961.   def state_set
  962.     targets = N03.get_targets(@action_data[1], @battler)
  963.     return if targets == []
  964.     case @action_data[2]
  965.     when 1 ; targets = [targets[rand(targets.size)]]
  966.     when 2 ; targets -= @battler if targets.include?(@battler)
  967.     end
  968.     for target in targets
  969.       for id in @action_data[4]
  970.         target.add_state(id) if @action_data[3] == "+"
  971.         target.remove_state(id) if @action_data[3] == "-"
  972.       end
  973.     end
  974.   end
  975.   #--------------------------------------------------------------------------
  976.   # ● FPS変更
  977.   #--------------------------------------------------------------------------
  978.   def fps
  979.     Graphics.frame_rate = @action_data[1]
  980.     start_action
  981.   end
  982.   #--------------------------------------------------------------------------
  983.   # ● バトラー画像変更の場合
  984.   #--------------------------------------------------------------------------
  985.   def graphics_change
  986.     @graphics_change = true
  987.     return @battler.graphics_change(@action_data[3]) if [email protected]?
  988.     @pre_change_data = [@battler.character_name, @battler.character_index, @battler.face_name, @battler.face_index] if @pre_change_data == nil && !@action_data[1]
  989.     if @action_data[4] == []
  990.       face_name = @battler.face_name
  991.       face_index = @battler.face_index
  992.     else
  993.       face_name = @action_data[4][1]
  994.       face_index = @action_data[4][0]
  995.     end
  996.     @battler.set_graphic(@action_data[3], @action_data[2], face_name, face_index)
  997.   end
  998.   #--------------------------------------------------------------------------
  999.   # ● スキル派生
  1000.   #--------------------------------------------------------------------------
  1001.   def derivating_skill
  1002.     # 未修得スキルは派生不可なら
  1003.     return if !@action_data[1] && [email protected]_learn?($data_skills[@action_data[3]])
  1004.     # コスト不足は派生不可なら
  1005.     return if !@action_data[2] && [email protected]_cost_payable?($data_skills[@action_data[3]])
  1006.     # 派生
  1007.     @derivation_skill_id = @action_data[3]
  1008.     # 以降のアクションをキャンセル
  1009.     @full_action = []
  1010.   end
  1011.   #--------------------------------------------------------------------------
  1012.   # ● BGM/BGS/SE演奏
  1013.   #--------------------------------------------------------------------------
  1014.   def sound
  1015.     pitch = @action_data[2]
  1016.     vol   = @action_data[3]
  1017.     name  = @action_data[4]
  1018.     case @action_data[1]
  1019.     when "se"
  1020.       Audio.se_play("Audio/SE/" + name, vol, pitch)
  1021.     when "bgm"
  1022.       # 名前指定のない場合、現在のBGMを変えないように
  1023.       name = RPG::BGM.last.name if @action_data[4] == ""
  1024.       Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
  1025.     when "bgs"
  1026.       name = RPG::BGS.last.name if @action_data[4] == ""
  1027.       Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
  1028.     end
  1029.   end
  1030.   #--------------------------------------------------------------------------
  1031.   # ● ムービーの再生
  1032.   #--------------------------------------------------------------------------
  1033.   def movie
  1034.     Graphics.play_movie('Movies/' + @action_data[1])
  1035.   end
  1036.   #--------------------------------------------------------------------------
  1037.   # ● ゲームスイッチ操作
  1038.   #--------------------------------------------------------------------------
  1039.   def switches
  1040.     for id in @action_data[1]
  1041.       $game_switches[id] = true if id > 0
  1042.       $sv_camera.switches[id.abs] = true  if id < 0
  1043.     end
  1044.     for id in @action_data[2]
  1045.       $game_switches[id] = false if id > 0
  1046.       $sv_camera.switches[id.abs] = false  if id < 0
  1047.     end
  1048.     $sv_camera.program_check
  1049.   end
  1050.   #--------------------------------------------------------------------------
  1051.   # ● ゲーム変数操作
  1052.   #--------------------------------------------------------------------------
  1053.   def variable
  1054.     # オペランドチェック
  1055.     operand = @action_data[3]
  1056.     operand = $game_variables[@action_data[3].abs] if @action_data[3] < 0
  1057.     # 変数操作で分岐
  1058.     case @action_data[2]
  1059.     when 0 ; $game_variables[@action_data[1]] = operand  # 代入
  1060.     when 1 ; $game_variables[@action_data[1]] += operand # 加算
  1061.     when 2 ; $game_variables[@action_data[1]] -= operand # 減算
  1062.     when 3 ; $game_variables[@action_data[1]] *= operand # 乗算
  1063.     when 4 ; $game_variables[@action_data[1]] /= operand # 除算
  1064.     when 5 ; $game_variables[@action_data[1]] %= operand # 剰余
  1065.     end
  1066.   end  
  1067.   #--------------------------------------------------------------------------
  1068.   # ● 条件分岐 (ゲームスイッチ)
  1069.   #--------------------------------------------------------------------------
  1070.   def nece_1
  1071.     judgment = $game_switches[@action_data[1]] == @action_data[2] if @action_data[1] > 0
  1072.     judgment = $sv_camera.switches[@action_data[1].abs] == @action_data[2] if @action_data[1] < 0
  1073.     action_diverging(judgment, @action_data[3])
  1074.   end  
  1075.   #--------------------------------------------------------------------------
  1076.   # ● 条件分岐 (ゲーム変数)
  1077.   #--------------------------------------------------------------------------
  1078.   def nece_2
  1079.     variable = $game_variables[@action_data[1]]
  1080.     num = @action_data[2]
  1081.     num = $game_variables[@action_data[2].abs] if num < 0
  1082.     case @action_data[3]
  1083.     when 0 ; judgment = variable == num
  1084.     when 1 ; judgment = variable < num
  1085.     when 2 ; judgment = variable > num
  1086.     end  
  1087.     action_diverging(judgment, @action_data[4])
  1088.   end  
  1089.   #--------------------------------------------------------------------------
  1090.   # ● 条件分岐 (ステート)
  1091.   #--------------------------------------------------------------------------
  1092.   def nece_3
  1093.     targets = N03.get_targets(@action_data[1], @battler)
  1094.     return if targets == []
  1095.     member_num = @action_data[4]
  1096.     member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1097.     hit_count = 0
  1098.     miss_count = 0
  1099.     for target in targets
  1100.       hit_count += 1 if target.state?(@action_data[2])
  1101.       miss_count += 1 if !target.state?(@action_data[2])
  1102.     end
  1103.     case @action_data[3]
  1104.     when 0 ; judgment = hit_count >= member_num
  1105.     when 1 ; judgment = miss_count >= member_num
  1106.     end
  1107.     action_diverging(judgment, @action_data[5])
  1108.   end  
  1109.   #--------------------------------------------------------------------------
  1110.   # ● 条件分岐 (スキル)
  1111.   #--------------------------------------------------------------------------
  1112.   def nece_4
  1113.     targets = N03.get_targets(@action_data[1], @battler)
  1114.     return if targets == []
  1115.     member_num = @action_data[4]
  1116.     member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1117.     hit_count = 0
  1118.     miss_count = 0
  1119.     for target in targets
  1120.       hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]])
  1121.       miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]])
  1122.     end
  1123.     case @action_data[3]
  1124.     when 0 ; judgment = hit_count >= member_num
  1125.     when 1 ; judgment = miss_count >= member_num
  1126.     end
  1127.     action_diverging(judgment, @action_data[5])
  1128.   end  
  1129.   #--------------------------------------------------------------------------
  1130.   # ● 条件分岐 (パラメータ)
  1131.   #--------------------------------------------------------------------------
  1132.   def nece_5
  1133.     targets = N03.get_targets(@action_data[1], @battler)
  1134.     return if targets == []
  1135.     member_num = @action_data[5]
  1136.     member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1137.     hit_count = 0
  1138.     for target in targets
  1139.       hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
  1140.     end
  1141.     judgment = hit_count >= member_num
  1142.     action_diverging(judgment, @action_data[6])
  1143.   end  
  1144.   #--------------------------------------------------------------------------
  1145.   # ● 条件分岐 (装備)
  1146.   #--------------------------------------------------------------------------
  1147.   def nece_6
  1148.     targets = N03.get_targets(@action_data[1], @battler)
  1149.     return if targets == []
  1150.     member_num = @action_data[5]
  1151.     member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1152.     hit_count = 0
  1153.     miss_count = 0
  1154.     for target in targets
  1155.       hit_count += 1 if target.comparison_equip([@action_data[2],@action_data[3]])
  1156.       miss_count += 1 if !target.comparison_equip([@action_data[2],@action_data[3]])
  1157.     end
  1158.     case @action_data[4]
  1159.     when 0 ; judgment = hit_count >= member_num
  1160.     when 1 ; judgment = miss_count >= member_num
  1161.     end
  1162.     action_diverging(judgment, @action_data[6])
  1163.   end  
  1164.   #--------------------------------------------------------------------------
  1165.   # ● 条件分岐 (スクリプト)
  1166.   #--------------------------------------------------------------------------
  1167.   def nece_7
  1168.     judgment = eval(@action_data[2])
  1169.     action_diverging(judgment, @action_data[1])
  1170.   end  
  1171.   #--------------------------------------------------------------------------
  1172.   # ● アクション分岐  
  1173.   #--------------------------------------------------------------------------
  1174.   def action_diverging(judgment, kind)
  1175.     result = 0
  1176.     if judgment
  1177.       result = 1 if kind == 1
  1178.       result = 2 if kind == 2
  1179.     else
  1180.       result = 1 if kind == 0
  1181.     end
  1182.     # フルアクション終了
  1183.     return @full_action = []  if result == 2
  1184.     # 次のアクションを除去
  1185.     @full_action.shift if result == 1
  1186.     set_action
  1187.     # 次のアクションを実行
  1188.     @action_data = N03::ACTION[@action]
  1189.     next_action
  1190.   end
  1191.   #--------------------------------------------------------------------------
  1192.   # ● セカンドターゲット操作
  1193.   #--------------------------------------------------------------------------
  1194.   def second_targets_set
  1195.     targets = N03.get_targets(@action_data[1], @battler)
  1196.     for target in targets
  1197.       targets.delete(target) if @action_data[2][1] == 1 && target.index != @action_data[2][0]
  1198.       targets.delete(target) if @action_data[2][1] == 2 && target.index == @action_data[2][0].abs
  1199.       targets.delete(target) if @action_data[3] > 0 && target.id != @action_data[3]
  1200.       targets.delete(target) if @action_data[3] < 0 && target.id == @action_data[3].abs
  1201.       targets.delete(target) if @action_data[4] > 0 && !target.state?(@action_data[4])
  1202.       targets.delete(target) if @action_data[4] < 0 && target.state?(@action_data[4].abs)
  1203.       targets.delete(target) if @action_data[5] > 0 && !target.skill_conditions_met?($data_skills[@action_data[5]])
  1204.       targets.delete(target) if @action_data[5] < 0 && target.skill_conditions_met?($data_skills[@action_data[5].abs])
  1205.       targets.delete(target) if !target.comparison_parameter(@action_data[6])
  1206.       targets.delete(target) if !@action_data[7][1].include?(0) && !target.comparison_equip(@action_data[7])
  1207.     end
  1208.     return @second_targets = [] if targets.size == 0
  1209.     case @action_data[8]
  1210.     when 1 ; targets = [targets[rand(targets.size)]]
  1211.     when 2 ; targets.delete(@battler)
  1212.     end
  1213.     return @second_targets = [] if targets.size == 0
  1214.     @second_targets = targets
  1215.     case @action_data[9]
  1216.     when 0 ; return
  1217.     when 1 ; set_play_data(["second_targets_set"])
  1218.     when 2 ; set_play_data(["targets_set"])
  1219.     end
  1220.     @wait += 1
  1221.   end
  1222.   #--------------------------------------------------------------------------
  1223.   # ● コモンイベント呼び出し
  1224.   #--------------------------------------------------------------------------
  1225.   def call_common_event
  1226.     $game_temp.reserve_common_event(@action_data[1])
  1227.     $sv_camera.event = true
  1228.     @event_fix = @action_data[2]
  1229.   end
  1230.   #--------------------------------------------------------------------------
  1231.   # ● ダメージアニメ
  1232.   #--------------------------------------------------------------------------
  1233.   def damage_anime(delay_time = 12)
  1234.     anime(N03.get_attack_anime_id(-3, @battler), wait = true)
  1235.     action_play
  1236.     @wait -= delay_time
  1237.     @full_action.unshift("eval('@damage_anime_data = []
  1238.     @set_damage = true')")
  1239.   end
  1240.   #--------------------------------------------------------------------------
  1241.   # ● 通常コラプス
  1242.   #--------------------------------------------------------------------------
  1243.   def normal_collapse
  1244.     @collapse = true
  1245.     return
  1246.   end
  1247.   #--------------------------------------------------------------------------
  1248.   # ● 初期位置変更
  1249.   #--------------------------------------------------------------------------
  1250.   def change_base_position
  1251.     @base_x = @x
  1252.     @base_y = @y
  1253.     @base_h = @h
  1254.   end  
  1255.   #--------------------------------------------------------------------------
  1256.   # ● 強制アクション実行
  1257.   #--------------------------------------------------------------------------
  1258.   def force_act
  1259.     target(@full_action.shift)
  1260.   end
  1261.   #--------------------------------------------------------------------------
  1262.   # ● 強制アクション実行 (セカンドターゲット)
  1263.   #--------------------------------------------------------------------------
  1264.   def force_act2
  1265.     target2(@full_action.shift)
  1266.   end
  1267.   #--------------------------------------------------------------------------
  1268.   # ● 個別処理開始
  1269.   #--------------------------------------------------------------------------
  1270.   def individual_start
  1271.     @individual_targets = @target_battler.dup
  1272.     @remain_targets = @target_battler.dup
  1273.     @target_battler = [@individual_targets[0]]
  1274.     # リピート部分のアクションを保持
  1275.     @individual_act = @full_action.dup
  1276.   end
  1277.   #--------------------------------------------------------------------------
  1278.   # ● 個別処理終了
  1279.   #--------------------------------------------------------------------------
  1280.   def individual_end
  1281.     @individual_targets.shift
  1282.     for target in @individual_targets
  1283.       @individual_targets.shift if target.dead?
  1284.     end
  1285.     # ターゲットが残っているなら行動リピート
  1286.     return @target_battler = @remain_targets if @individual_targets.size == 0
  1287.     @full_action = @individual_act.dup
  1288.     @target_battler = [@individual_targets[0]]
  1289.   end
  1290.   #--------------------------------------------------------------------------
  1291.   # ● ループ開始
  1292.   #--------------------------------------------------------------------------
  1293.   def loop_start
  1294.     # ループ部分のアクションを保持
  1295.     @loop_act = @full_action.dup
  1296.   end
  1297.   #--------------------------------------------------------------------------
  1298.   # ● ループ終了
  1299.   #--------------------------------------------------------------------------
  1300.   def loop_end
  1301.     # 行動リピート
  1302.     @full_action = @loop_act.dup if @loop_act != []
  1303.   end
  1304.   #--------------------------------------------------------------------------
  1305.   # ● 次の行動者へ移行
  1306.   #--------------------------------------------------------------------------
  1307.   def next_battler
  1308.     @action_end = true
  1309.     @active = false
  1310.   end
  1311.   #--------------------------------------------------------------------------
  1312.   # ● 画像変更フラグ
  1313.   #--------------------------------------------------------------------------
  1314.   def set_change
  1315.     @change_up = true
  1316.   end
  1317.   #--------------------------------------------------------------------------
  1318.   # ● 戦闘シーン通信
  1319.   #--------------------------------------------------------------------------
  1320.   def play_data
  1321.     data = @play_data
  1322.     @play_data = []
  1323.     return data
  1324.   end
  1325.   #--------------------------------------------------------------------------
  1326.   # ● ショートカットコマンド
  1327.   #--------------------------------------------------------------------------
  1328.   def anime(anime_id, wait = true)
  1329.     @action_data = ["anime",anime_id,1,false,wait,false,true,false]
  1330.   end
  1331.   def anime_me(anime_id, wait = true)
  1332.     @action_data = ["anime",anime_id,0,false,wait,false,true,false]
  1333.   end
  1334.   def se(file, pitch = 100)
  1335.     @action_data = ["sound",  "se", pitch, 100, file]
  1336.   end
  1337.   def target(act)
  1338.     for target in @target_battler do target.sv.force_action = act end
  1339.   end
  1340.   def target2(act)
  1341.     for target in @second_targets do target.sv.force_action = act end
  1342.   end
  1343.   def delay(time)
  1344.     @wait = @battler.index * time
  1345.   end
  1346.   #--------------------------------------------------------------------------
  1347.   # ● バトラーのIDを取得
  1348.   #--------------------------------------------------------------------------
  1349.   def id
  1350.     return @battler.id if @battler.actor?
  1351.     return [email protected]
  1352.   end
  1353.   #--------------------------------------------------------------------------
  1354.   # ● 被クリティカルフラグを取得
  1355.   #--------------------------------------------------------------------------
  1356.   def critical?
  1357.     return @battler.result.critical
  1358.   end
  1359.   #--------------------------------------------------------------------------
  1360.   # ● 被回復フラグを取得
  1361.   #--------------------------------------------------------------------------
  1362.   def recovery?
  1363.     recovery = false
  1364.     recovery = true if @battler.result.hp_damage < 0
  1365.     recovery = true if @battler.result.mp_damage < 0
  1366.     recovery = true if @battler.result.tp_damage < 0
  1367.     return recovery
  1368.   end
  1369.   #--------------------------------------------------------------------------
  1370.   # ● 被スキルIDを取得
  1371.   #--------------------------------------------------------------------------
  1372.   def damage_skill_id
  1373.     return @damage_skill_id
  1374.   end
  1375.   #--------------------------------------------------------------------------
  1376.   # ● 被アイテムIDを取得
  1377.   #--------------------------------------------------------------------------
  1378.   def damage_item_id
  1379.     return @damage_item_id
  1380.   end
  1381.   #--------------------------------------------------------------------------
  1382.   # ● 装備武器を取得
  1383.   #--------------------------------------------------------------------------
  1384.   def weapon_id
  1385.     return 0 if [email protected][0]
  1386.     return @battler.weapons[0].id
  1387.   end
  1388.   #--------------------------------------------------------------------------
  1389.   # ● 装備武器のタイプを取得
  1390.   #--------------------------------------------------------------------------
  1391.   def weapon_type
  1392.     return 0 if [email protected][0]
  1393.     return @battler.weapons[0].wtype_id
  1394.   end
  1395.   #--------------------------------------------------------------------------
  1396.   # ● 盾を装備しているか
  1397.   #--------------------------------------------------------------------------
  1398.   def shield?
  1399.     for armor in @battler.armors do return true if armor != nil && armor.etype_id == 1 end
  1400.     return false
  1401.   end
  1402.   #--------------------------------------------------------------------------
  1403.   # ● ダメージがあるか
  1404.   #--------------------------------------------------------------------------
  1405.   def damage_zero?
  1406.     return @battler.result.hp_damage == 0 && @battler.result.mp_damage == 0 && @battler.result.tp_damage == 0
  1407.   end
  1408.   #--------------------------------------------------------------------------
  1409.   # ● スキルIDを取得
  1410.   #--------------------------------------------------------------------------
  1411.   def skill_id
  1412.     return @counter_id if @counter_id != 0
  1413.     return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1414.     return 0 if @battler.current_action.item.is_a?(RPG::Item)
  1415.     return @battler.current_action.item.id
  1416.   end
  1417.   #--------------------------------------------------------------------------
  1418.   # ● スキルのタイプを取得
  1419.   #--------------------------------------------------------------------------
  1420.   def skill_type
  1421.     return 0 if skill_id == 0
  1422.     return $data_skills[skill_id].stype_id
  1423.   end
  1424.   #--------------------------------------------------------------------------
  1425.   # ● スキル名を取得
  1426.   #--------------------------------------------------------------------------
  1427.   def skill_name
  1428.     return "" if skill_id == 0
  1429.     return $data_skills[skill_id].name
  1430.   end
  1431.   #--------------------------------------------------------------------------
  1432.   # ● アイテムIDを取得
  1433.   #--------------------------------------------------------------------------
  1434.   def item_id
  1435.     return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1436.     return @battler.current_action.item.id
  1437.   end
  1438.   #--------------------------------------------------------------------------
  1439.   # ● 攻撃アクション
  1440.   #--------------------------------------------------------------------------
  1441.   def attack_action(item)
  1442.     return skill_action if item.is_a?(RPG::Skill)
  1443.     return item_action
  1444.   end
  1445.   #--------------------------------------------------------------------------
  1446.   # ● ダメージアクションベース
  1447.   #--------------------------------------------------------------------------
  1448.   def damage_action_base(item)
  1449.     @damage_skill_id = 0
  1450.     @damage_item_id = 0
  1451.     @damage_skill_id = item.id if item.is_a?(RPG::Skill)
  1452.     @damage_item_id = item.id if item.is_a?(RPG::Item)
  1453.   end  
  1454.   #--------------------------------------------------------------------------
  1455.   # ● ダメージアクション
  1456.   #--------------------------------------------------------------------------
  1457.   def damage_action(attacker, item)
  1458.     damage_action_base(item)
  1459.     act = damage(attacker)
  1460.     return if @active
  1461.     start_action(act) if act != nil
  1462.   end
  1463.   #--------------------------------------------------------------------------
  1464.   # ● 回避アクション
  1465.   #--------------------------------------------------------------------------
  1466.   def evasion_action(attacker, item)
  1467.     damage_action_base(item)
  1468.     act = evasion(attacker)
  1469.     return if @active
  1470.     start_action(act) if act != nil
  1471.   end
  1472.   #--------------------------------------------------------------------------
  1473.   # ● ミスアクション
  1474.   #--------------------------------------------------------------------------
  1475.   def miss_action(attacker, item)
  1476.     damage_action_base(item)
  1477.     act = miss(attacker)
  1478.     return if @active
  1479.     start_action(act) if act != nil
  1480.   end
  1481.   #--------------------------------------------------------------------------
  1482.   # ● 閃きスクリプト併用処理
  1483.   #--------------------------------------------------------------------------
  1484.   def flash_action
  1485.     return "閃き"
  1486.   end
  1487.   
  1488. end


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




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