设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 707|回复: 1
打印 上一主题 下一主题

[已经过期] Sideview脚本的简单问题

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2015-9-13 16:21:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 负零 于 2015-9-13 16:22 编辑

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.                 # ● 脚本操作
  3.                 #--------------------------------------------------------------------------
  4.                 # 执行脚本。把要用 eval 执行的脚本填入范例的 p = 1 处。
  5.                 #
  6.                 # 脚本名
  7.                 "黑·魔·导_发动" => ["@battler.mp -= 1 && @targets.hp-=10000"],

如上,请问我方是@battler.mp -= 1(可以执行),但目标-10000的hp这段怎么写?,实在找不到了。
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Sideview Ver100
  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.         attr_accessor   :wait                 # 次の動作待ち時間
  36.         attr_accessor   :weapon_index         # 表示中の武器画像インデックス配列
  37.         attr_accessor   :weapon_end           # 武器アニメ終了フラグ
  38.         attr_accessor   :force_action         # 強制アクション
  39.         attr_accessor   :target_battler       # ターゲットバトラー情報
  40.         attr_accessor   :second_targets       # セカンドターゲット情報
  41.         attr_accessor   :m_a_targets          # アニメ飛ばしターゲット情報
  42.         attr_accessor   :individual_targets   # 個別処理ターゲットバトラー情報
  43.         attr_accessor   :effect_data          # エフェクトデータ
  44.         attr_accessor   :anime_id             # アニメID配列
  45.         attr_accessor   :anime_move_id        # 飛ばしアニメID配列
  46.         attr_accessor   :mirror               # 反転フラグ
  47.         attr_accessor   :opacity              # 透明度
  48.         attr_accessor   :opacity_data         # 透明度操作情報
  49.         attr_accessor   :set_damage           # バトルシーンでのダメージ処理
  50.         attr_accessor   :m_a_data             # アニメ飛ばし情報
  51.         attr_accessor   :m_a_starter          # アニメ飛ばし開始ターゲット情報
  52.         attr_accessor   :action_end           # バトルシーンでの行動終了
  53.         attr_accessor   :damage_anime_data    # ダメージ戦闘アニメのデータ
  54.         attr_accessor   :anime_no_mirror      # 戦闘アニメの反転禁止フラグ
  55.         attr_accessor   :anime_horming        # 戦闘アニメのホーミングフラグ
  56.         attr_accessor   :anime_camera_zoom    # 戦闘アニメがカメラに合わせて拡大縮小するか
  57.         attr_accessor   :anime_plus_z         # 戦闘アニメZ座標補正
  58.         attr_accessor   :derivation_skill_id  # スキル派生ID
  59.         attr_accessor   :immortal             # 不死身フラグ
  60.         attr_accessor   :mirage               # 残像データ
  61.         attr_accessor   :balloon_data         # ふきだしデータ
  62.         attr_accessor   :timing               # 別バトラーからのタイミングデータ
  63.         attr_accessor   :timing_targets       # タイミングデータを渡す別バトラー
  64.         attr_accessor   :color_set            # 色調変更データ
  65.         attr_accessor   :color                # 色調データ
  66.         attr_accessor   :change_up            # 画像変更フラグ
  67.         attr_accessor   :hit                  # 被攻撃回数
  68.         attr_accessor   :add_state            # 何度も付加ステートの表示を防ぐフラグ
  69.         attr_accessor   :counter_id           # カウンター時のスキルID
  70.         attr_accessor   :reflection_id        # 魔法反射時のアニメID
  71.         attr_accessor   :result_damage        # ターン終了時のHP変動データ
  72.         attr_accessor   :active               # 行動権
  73.         attr_accessor   :anime_off            # 戦闘アニメ消去
  74.         attr_accessor   :command_action       # コマンドアクションフラグ
  75.         attr_accessor   :base_x               # 初期位置 X座標
  76.         attr_accessor   :base_y               # 初期位置 Y座標
  77.         attr_accessor   :base_h               # 初期位置 高さ座標
  78.         attr_accessor   :max_pattern_w        # セルの横分割数
  79.         attr_accessor   :max_pattern_h        # セルの縦分割数
  80.         attr_reader     :collapse             # コラプスフラグ
  81.         attr_reader     :picture              # ピクチャ表示フラグ
  82.         #--------------------------------------------------------------------------
  83.         # ● オブジェクト初期化
  84.         #--------------------------------------------------------------------------
  85.         def initialize(battler)
  86.                 @battler = battler
  87.                 reset
  88.         end
  89.         #--------------------------------------------------------------------------
  90.         # ● 初期化
  91.         #--------------------------------------------------------------------------
  92.         def reset
  93.                 @x = 0
  94.                 @y = 0
  95.                 @z = 0
  96.                 @h = 0
  97.                 @j = 0
  98.                 @c = 0
  99.                 @jump = []
  100.                 @curve = []
  101.                 @ox = 0
  102.                 @oy = 0
  103.                 @oy_adjust = 0
  104.                 @z_plus = 0
  105.                 @move_time = 0
  106.                 @angle = 0
  107.                 @angle_time = 0
  108.                 @zoom_x = 1
  109.                 @zoom_y = 1
  110.                 @zoom_time = 0
  111.                 @pattern_w = 0
  112.                 @pattern_h = 0
  113.                 @sx = 0
  114.                 @sy = 0
  115.                 @pattern_type = 0
  116.                 @pattern_time = 0
  117.                 @pattern_rest_time = 0
  118.                 @graphic_name = ""
  119.                 @graphic_file_index = ""
  120.                 @graphic_index = 0
  121.                 @cw = 0
  122.                 @ch = 0
  123.                 @shadow_visible = false
  124.                 @weapon_visible = true
  125.                 @wait = 0
  126.                 @weapon_index = []
  127.                 @weapon_end = true
  128.                 @full_action = []
  129.                 @action = []
  130.                 @force_action = ""
  131.                 @target_battler = []
  132.                 @second_targets = []
  133.                 @individual_targets = []
  134.                 @m_a_targets = []
  135.                 @effect_data = []
  136.                 @anime_id = []
  137.                 @anime_move_id = []
  138.                 @opacity = 255
  139.                 @opacity_data = []
  140.                 @set_damage = false
  141.                 @m_a_data = []
  142.                 @m_a_starter = []
  143.                 @action_end = false
  144.                 @damage_anime_data = []
  145.                 @anime_no_mirror = false
  146.                 @anime_horming = false
  147.                 @anime_camera_zoom = false
  148.                 @anime_plus_z = true
  149.                 @derivation_skill_id = 0
  150.                 @immortal = false
  151.                 @mirage = []
  152.                 @play_data = []
  153.                 @balloon_data = []
  154.                 @picture = false
  155.                 @timing = []
  156.                 @timing_targets = []
  157.                 @color_set = []
  158.                 @color = []
  159.                 @change_up = false
  160.                 @non_motion = false
  161.                 @graphics_change = false
  162.                 @hit = []
  163.                 @add_state = []
  164.                 @collapse = false
  165.                 @counter_id = 0
  166.                 @reflection_id = 0
  167.                 @result_damage = [0,0]
  168.                 @active = false
  169.                 @anime_off = false
  170.                 @command_action = false
  171.                 @base_x = 0
  172.                 @base_y = 0
  173.                 @base_z = 0
  174.                 @base_h = 0
  175.                 @max_pattern_w = 0
  176.                 @max_pattern_h = 0
  177.                 @pattern_kind = 0
  178.                 @pattern_count = 0
  179.                 @move_time = 0
  180.                 @mirror = false
  181.                 @battler.set_graphic(@pre_change_data[0], @pre_change_data[1], @pre_change_data[2], @pre_change_data[3]) if @pre_change_data != nil
  182.                 @pre_change_data = nil
  183.         end  
  184.         #--------------------------------------------------------------------------
  185.         # ● セットアップ
  186.         #--------------------------------------------------------------------------
  187.         def setup(bitmap_width, bitmap_height, first_action_flag)
  188.                 reset if first_action_flag
  189.                 set_data
  190.                 set_base_position if !@graphics_change
  191.                 set_graphics(bitmap_width, bitmap_height)
  192.                 set_target
  193.                 setup_graphics_change if @graphics_change
  194.                 first_battler_anime_set if first_action_flag
  195.         end  
  196.         #--------------------------------------------------------------------------
  197.         # ● バトラーデータ取得
  198.         #--------------------------------------------------------------------------
  199.         def set_data
  200.                 return if @battler == nil
  201.                 if @battler.actor?
  202.                         @graphic_name = @battler.character_name
  203.                         @graphic_index = @battler.character_index
  204.                 else
  205.                         @graphic_name = @battler.battler_name
  206.                         @graphic_index = 0
  207.                 end
  208.                 @max_pattern_w = max_pattern[0]
  209.                 @max_pattern_h = max_pattern[1]
  210.         end
  211.         #--------------------------------------------------------------------------
  212.         # ● ベース座標をセット data = [X軸, Y軸, H軸]  moment_set…瞬間配置
  213.         #--------------------------------------------------------------------------
  214.         def set_base_position(moment_set = true)
  215.                 mirroring_reset
  216.                 if @battler.actor?
  217.                         data = N03::ACTOR_POSITION[@battler.index].dup
  218.                         @base_x = data[0] * 100 if !@mirror
  219.                         @base_x = (Graphics.width - data[0]) * 100 if @mirror
  220.                 else
  221.                         data = [@battler.screen_x, @battler.screen_y, 0].dup
  222.                         @base_x = data[0] * 100 if !$sv_camera.mirror
  223.                         @base_x = (Graphics.width - data[0]) * 100 if $sv_camera.mirror
  224.                 end
  225.                 @base_y = data[1] * 100
  226.                 @base_h = data[2] * 100
  227.                 @base_z = @y
  228.                 return if !moment_set
  229.                 @x = @base_x
  230.                 @y = @base_y
  231.                 @z = @base_z
  232.         end
  233.         #--------------------------------------------------------------------------
  234.         # ● グラフィックデータ取得
  235.         #--------------------------------------------------------------------------
  236.         def set_graphics(bitmap_width, bitmap_height)
  237.                 sign = @graphic_name[/^[\!\$]./]
  238.                 if sign && sign.include?('$')
  239.                         @cw = bitmap_width / @max_pattern_w
  240.                         @ch = bitmap_height / @max_pattern_h
  241.                 elsif @max_pattern_w == 1 && @max_pattern_h == 1
  242.                         @cw = bitmap_width
  243.                         @ch = bitmap_height
  244.                 else
  245.                         @cw = bitmap_width / (@max_pattern_w * 4)
  246.                         @ch = bitmap_height / (@max_pattern_h * 2)
  247.                 end
  248.                 @ox = @cw / 2
  249.                 @oy = @ch
  250.                 @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  251.                 @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  252.         end
  253.         #--------------------------------------------------------------------------
  254.         # ● ターゲットをセット
  255.         #--------------------------------------------------------------------------
  256.         def set_target(target = nil)
  257.                 @target_battler = target
  258.                 @target_battler = [@battler] if target == nil
  259.                 @second_targets = @target_battler
  260.         end
  261.         #--------------------------------------------------------------------------
  262.         # ● 画像変更用のセットアップ
  263.         #--------------------------------------------------------------------------
  264.         def setup_graphics_change
  265.                 @graphics_change = false
  266.                 @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  267.                 @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  268.         end  
  269.         #--------------------------------------------------------------------------
  270.         # ● 戦闘開始時の待機アニメ画像データ取得
  271.         #--------------------------------------------------------------------------
  272.         def first_battler_anime_set
  273.                 loop do
  274.                         update
  275.                         break if @action_data == nil
  276.                         break if @action_data[0] == "motion"
  277.                         break if @action_data[0] == "move" && @action_data[8] != ""
  278.                         break if @full_action == []
  279.                 end
  280.                 start_action(first_action) if @battler.movable?
  281.         end
  282.         #--------------------------------------------------------------------------
  283.         # ● アクション開始
  284.         #--------------------------------------------------------------------------
  285.         def start_action(kind = nil)
  286.                 return if @event_fix && $game_troop.interpreter.running?
  287.                 # ウェイト中の場合キャンセル
  288.                 return @wait -= 1 if @wait > 0 && kind == nil
  289.                 action_setup(false) if kind != nil
  290.                 set_action(kind)
  291.                 @action = kind if @action == nil
  292.                 # 行動配列が無い場合は行動終了処理へ移行
  293.                 action_terminate if @action == nil
  294.                 # 次のアクション決定
  295.                 @action_data = N03::ACTION[@action]
  296.                 next_action
  297.         end
  298.         #--------------------------------------------------------------------------
  299.         # ● 行動パラメータの初期化
  300.         #--------------------------------------------------------------------------
  301.         def action_setup(reset = true)
  302.                 @event_fix = false
  303.                 @set_damage = false
  304.                 @action_end = false
  305.                 @balloon_data = []
  306.                 @loop_act = []
  307.                 angle_reset if reset
  308.                 zoom_reset if reset
  309.                 opacity_reset if reset
  310.                 @curve = []
  311.                 @c = 0
  312.                 convert_jump
  313.         end  
  314.         #--------------------------------------------------------------------------
  315.         # ● 行動終了処理
  316.         #--------------------------------------------------------------------------
  317.         def action_terminate
  318.                 @mirage = [] if @mirage_end
  319.                 mirroring_reset
  320.                 @picture = false
  321.                 @individual_targets = []
  322.                 action_setup if @active
  323.                 action_setup(false) if !@active
  324.                 # 待機アクションへ移行
  325.                 stand_by_action if !@non_motion
  326.                 # 戦闘行動のアクティブ権を終了
  327.                 next_battler
  328.         end  
  329.         #--------------------------------------------------------------------------
  330.         # ● 新しいアクション内容の決定
  331.         #--------------------------------------------------------------------------
  332.         def set_action(kind = nil)
  333.                 full_act = N03::FULLACTION[kind]
  334.                 @full_action = full_act.dup if full_act != nil
  335.                 @action = @full_action.shift
  336.                 # 参照したアクションがフルアクションであれば全体のアクションを統合
  337.                 full_act2 = N03::FULLACTION[@action]
  338.                 @full_action = full_act2.dup + @full_action if full_act2 != nil
  339.         end
  340.         #--------------------------------------------------------------------------
  341.         # ● 次のアクションへ
  342.         #--------------------------------------------------------------------------
  343.         def next_action
  344.                 @wait = 0
  345.                 # ショートカット確認
  346.                 eval(@action) if @action != nil && @action_data == nil && N03::FULLACTION[@action] == nil
  347.                 # ウエイト設定
  348.                 @wait = @action.to_i if @wait == 0 && @action_data == nil
  349.                 @wait = rand(@wait.abs + 1) if @wait < 0
  350.                 # アクション開始
  351.                 action_play
  352.         end
  353.         #--------------------------------------------------------------------------
  354.         # ● 待機アクションへ移行
  355.         #--------------------------------------------------------------------------
  356.         def stand_by_action
  357.                 # 通常待機に
  358.                 stand_by_act = normal
  359.                 # HPが1/4でピンチアクションに
  360.                 stand_by_act = pinch if @battler.hp <= @battler.mhp / 4
  361.                 # ステートチェック
  362.                 stand_by_act = state(@battler.states[0].id) if @battler.states[0] != nil && state(@battler.states[0].id) != nil
  363.                 # コマンドチェック
  364.                 stand_by_act = command if @command_action && command != nil
  365.                 set_action(stand_by_act)
  366.                 @action = stand_by_act if @action == nil
  367.         end
  368.         #--------------------------------------------------------------------------
  369.         # ● 強制アクション開始
  370.         #--------------------------------------------------------------------------
  371.         def start_force_action
  372.                 return if @active
  373.                 start_action(@force_action)
  374.                 @force_action = ""
  375.         end  
  376.         #--------------------------------------------------------------------------
  377.         # ● アクション追加
  378.         #--------------------------------------------------------------------------
  379.         def add_action(kind)
  380.                 @full_action.push(kind)
  381.         end  
  382.         #--------------------------------------------------------------------------
  383.         # ● アクションの挿入
  384.         #--------------------------------------------------------------------------
  385.         def unshift_action(kind)
  386.                 @full_action.unshift(kind)
  387.         end  
  388.         #--------------------------------------------------------------------------
  389.         # ● フレーム更新
  390.         #--------------------------------------------------------------------------
  391.         def update
  392.                 # アクション開始
  393.                 start_action
  394.                 # 強制アクション開始
  395.                 start_force_action if @force_action != ""
  396.                 # アニメパターン更新
  397.                 update_pattern
  398.                 # 移動更新
  399.                 update_move
  400.                 # 回転更新
  401.                 update_angle if @angle_time != 0
  402.                 # 拡大縮小更新
  403.                 update_zoom if @zoom_time != 0
  404.                 # 透明度更新
  405.                 update_opacity if @opacity_data != []
  406.         end
  407.         #--------------------------------------------------------------------------
  408.         # ● アニメパターン更新
  409.         #--------------------------------------------------------------------------
  410.         def update_pattern
  411.                 return @pattern_rest_time -= 1 if @pattern_rest_time != 0
  412.                 return if @max_pattern_w == 1 && @max_pattern_h == 1
  413.                 @pattern_rest_time = @pattern_time
  414.                 # 再生開始・終了セル位置を取得
  415.                 if @pattern_kind > 0 # 通常再生中
  416.                         @pattern_start = 0
  417.                         @pattern_end = @max_pattern_w - 1
  418.                 elsif @pattern_kind < 0 # 逆転再生中
  419.                         @pattern_start = @max_pattern_w - 1
  420.                         @pattern_end = 0
  421.                 end
  422.                 # 片道の再生が終了
  423.                 @pattern_count += 1 if @pattern_w == @pattern_end && @pattern_kind != 0
  424.                 # ループ処理
  425.                 case @pattern_type.abs
  426.                 when  1,3 # 片道
  427.                         @pattern_kind =  0 if @pattern_count != 0 && @pattern_type ==  1
  428.                         @pattern_kind =  0 if @pattern_count != 0 && @pattern_type == -1
  429.                         @pattern_kind =  1 if @pattern_count != 0 && @pattern_type ==  3
  430.                         @pattern_kind = -1 if @pattern_count != 0 && @pattern_type == -3
  431.                         @pattern_w = @pattern_start - @pattern_kind if @pattern_count != 0 && @pattern_type.abs == 3
  432.                         @pattern_count = 0
  433.                 when  2,4 # 往復
  434.                         @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  2
  435.                         @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -2
  436.                         @pattern_kind =  0 if @pattern_count == 2 && @pattern_type ==  2
  437.                         @pattern_kind =  0 if @pattern_count == 2 && @pattern_type == -2
  438.                         @pattern_kind = -1 if @pattern_count == 1 && @pattern_type ==  4
  439.                         @pattern_kind =  1 if @pattern_count == 1 && @pattern_type == -4
  440.                         @pattern_kind =  1 if @pattern_count == 2 && @pattern_type ==  4
  441.                         @pattern_kind = -1 if @pattern_count == 2 && @pattern_type == -4
  442.                         @pattern_count = 0 if @pattern_count == 2
  443.                 end
  444.                 # セル更新
  445.                 @pattern_w += 1 * @pattern_kind
  446.                 @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  447.         end
  448.         #--------------------------------------------------------------------------
  449.         # ● 移動の更新
  450.         #--------------------------------------------------------------------------
  451.         def update_move
  452.                 @z = @y / 100 + @z_plus
  453.                 return if @move_time == 0
  454.                 target_position_set if @horming_move
  455.                 @x = (@x * (@move_time - 1) + @target_x) / @move_time
  456.                 @y = (@y * (@move_time - 1) + @target_y) / @move_time
  457.                 @h = (@h * (@move_time - 1) + @target_h) / @move_time if @move_h != nil
  458.                 @c += @curve[@move_time - 1] if @curve[@move_time - 1] != nil
  459.                 @j += @jump[@move_time - 1] if @jump[@move_time - 1] != nil
  460.                 @move_time -= 1
  461.                 convert_jump if @move_time == 0
  462.         end
  463.         #--------------------------------------------------------------------------
  464.         # ● 移動目標の更新
  465.         #--------------------------------------------------------------------------
  466.         def target_position_set
  467.                 target_position = N03.get_targets_position(@move_targets, @horming_move)
  468.                 @target_x = target_position[0] + @move_x
  469.                 @target_y = target_position[1] + @move_y
  470.                 @target_h = target_position[2] + @move_h if @move_h != nil
  471.         end  
  472.         #--------------------------------------------------------------------------
  473.         # ● 回転更新
  474.         #--------------------------------------------------------------------------
  475.         def update_angle
  476.                 @angle += @angling
  477.                 @angle_time -= 1
  478.                 return if @angle_time != 0
  479.                 return angle_reset if @angle_data[4] == 0
  480.                 angling(@angle_data) if @angle_data[4] == 2
  481.         end  
  482.         #--------------------------------------------------------------------------
  483.         # ● 拡大縮小更新
  484.         #--------------------------------------------------------------------------
  485.         def update_zoom
  486.                 @zoom_x += @zooming_x
  487.                 @zoom_y += @zooming_y
  488.                 @zoom_time -= 1
  489.                 return if @zoom_time != 0
  490.                 return zoom_reset if @zoom_data[4] == 0
  491.                 zooming(@zoom_data) if @zoom_data[4] == 2
  492.         end
  493.         #--------------------------------------------------------------------------
  494.         # ● 透明度更新
  495.         #--------------------------------------------------------------------------
  496.         def update_opacity
  497.                 @opacity += @opacity_data[2]
  498.                 @opacity_data[0] -= 1
  499.                 return if @opacity_data[0] != 0
  500.                 return if !@opacity_data[5]
  501.                 @opacity_data[2] *= -1
  502.                 @opacity_data[0] = @opacity_data[1]
  503.         end
  504.         #--------------------------------------------------------------------------
  505.         # ● アクション実行
  506.         #--------------------------------------------------------------------------
  507.         def action_play
  508.                 return if @action_data == nil
  509.                 action = @action_data[0]
  510.                 # バトラー反転の場合
  511.                 return mirroring                    if action == "mirror"
  512.                 # 残像の場合
  513.                 return mirage_set                   if action == "mirage"
  514.                 # 回転の場合  
  515.                 return angling                      if action == "angle"
  516.                 # 拡大縮小の場合  
  517.                 return zooming                      if action == "zoom"
  518.                 # 透明度操作の場合  
  519.                 return set_opacity                  if action == "opacity"
  520.                 # バトラーアニメの場合
  521.                 return battler_anime                if action == "motion"
  522.                 # 移動の場合
  523.                 return move                         if action == "move"
  524.                 # 武器アニメの場合
  525.                 return weapon_anime([@action_data]) if action == "wp"
  526.                 # アニメ飛ばしの場合
  527.                 return move_anime                   if action == "m_a"
  528.                 # 戦闘シーン通信の場合(コラプス)
  529.                 return set_play_data                if action == "collapse" or action == "no_collapse"
  530.                 # データベース戦闘アニメ表示の場合  
  531.                 return battle_anime                 if action == "anime"
  532.                 # カメラワークの場合
  533.                 return camera                       if action == "camera"
  534.                 # 画面のシェイクの場合
  535.                 return shake                        if action == "shake"
  536.                 # 画面色調変更の場合
  537.                 return color_effect                 if action == "color"
  538.                 # トランジションの場合
  539.                 return transition                   if action == "ts"
  540.                 # ふきだしアニメ表示の場合  
  541.                 return balloon_anime                if action == "balloon"
  542.                 # ピクチャ表示の場合
  543.                 return picture_set                  if action == "pic"
  544.                 # ステート操作の場合
  545.                 return state_set                    if action == "sta"
  546.                 # FPS変更の場合
  547.                 return fps                          if action == "fps"
  548.                 # バトラー画像変更の場合  
  549.                 return graphics_change              if action == "change"
  550.                 # スキル派生の場合  
  551.                 return derivating_skill             if action == "der"
  552.                 # BGM/BGS/SE演奏の場合  
  553.                 return sound                        if action == "sound"
  554.                 # ムービー再生の場合  
  555.                 return movie                        if action == "movie"
  556.                 # ゲームスイッチ操作の場合  
  557.                 return switches                     if action == "switch"
  558.                 # ゲーム変数操作の場合  
  559.                 return variable                     if action == "variable"
  560.                 # 条件分岐(ゲームスイッチ)の場合
  561.                 return nece_1                       if action == "n_1"
  562.                 # 条件分岐(ゲーム変数)の場合
  563.                 return nece_2                       if action == "n_2"
  564.                 # 条件分岐(ステート)の場合
  565.                 return nece_3                       if action == "n_3"
  566.                 # 条件分岐(スキル)の場合
  567.                 return nece_4                       if action == "n_4"
  568.                 # 条件分岐(パラメータ)の場合
  569.                 return nece_5                       if action == "n_5"
  570.                 # 条件分岐(装備)の場合
  571.                 return nece_6                       if action == "n_6"
  572.                 # 条件分岐(スクリプト)の場合
  573.                 return nece_7                       if action == "n_7"
  574.                 # セカンドターゲット操作の場合  
  575.                 return second_targets_set           if action == "s_t"
  576.                 # コモンイベント呼び出しの場合  
  577.                 return call_common_event            if action == "common"
  578.                 # 戦闘アニメ消去の場合  
  579.                 return @anime_off = true            if action == "anime_off"
  580.                 # 強制戦闘終了の場合  
  581.                 return BattleManager.process_abort  if action == "battle_end"
  582.                 # 画面固定の場合  
  583.                 return Graphics.freeze              if action == "graphics_freeze"
  584.                 # ダメージアニメの場合  
  585.                 return damage_anime                 if action == "damage_anime"
  586.                 # 武器消去の場合  
  587.                 return @weapon_visible = false      if action == "weapon_off"
  588.                 # 武器消去解除の場合  
  589.                 return @weapon_visible = true       if action == "weapon_on"
  590.                 # 待機キャンセルの場合
  591.                 return @non_motion = true           if action == "non_motion"
  592.                 # 待機キャンセル解除の場合
  593.                 return @non_motion = false          if action == "non_motion_cancel"
  594.                 # 初期位置変更の場合
  595.                 return change_base_position         if action == "change_base_position"
  596.                 # 初期位置変更解除の場合
  597.                 return set_base_position(false)     if action == "set_base_position"
  598.                 # 強制アクションの場合  
  599.                 return force_act                    if action == "force_action"
  600.                 # 強制アクションの場合 (セカンドターゲット)
  601.                 return force_act2                   if action == "force_action2"
  602.                 # 個別開始の場合
  603.                 return individual_start             if action == "individual_start"
  604.                 # 個別終了の場合
  605.                 return individual_end               if action == "individual_end"
  606.                 # ループ開始の場合
  607.                 return loop_start                   if action == "loop_start"
  608.                 # ループ終了の場合
  609.                 return loop_end                     if action == "loop_end"
  610.                 # 自分のみ更新の場合
  611.                 return only_action_on               if action == "only_action_on"
  612.                 # 自分のみ更新解除の場合
  613.                 return only_action_off              if action == "only_action_off"
  614.                 # 次の行動者へ移行の場合
  615.                 return next_battler                 if action == "next_battler"
  616.                 # 画像変更フラグの場合
  617.                 return set_change                   if action == "set_change"
  618.                 # スクリプト操作の場合   
  619.                 return eval(@action_data[0])
  620.         end
  621.         #--------------------------------------------------------------------------
  622.         # ● バトラー反転実行
  623.         #--------------------------------------------------------------------------
  624.         def mirroring
  625.                 @mirror = !@mirror
  626.         end  
  627.         #--------------------------------------------------------------------------
  628.         # ● 反転初期化
  629.         #--------------------------------------------------------------------------
  630.         def mirroring_reset
  631.                 @mirror = false
  632.                 mirroring if !@battler.actor? && N03::ENEMY_MIRROR
  633.                 mirroring if $sv_camera.mirror
  634.         end  
  635.         #--------------------------------------------------------------------------
  636.         # ● 残像実行
  637.         #--------------------------------------------------------------------------
  638.         def mirage_set
  639.                 @mirage = @action_data.dup
  640.                 @mirage_end = @mirage[3]
  641.                 @mirage = [] if @mirage[1] == 0
  642.         end  
  643.         #--------------------------------------------------------------------------
  644.         # ● 回転実行
  645.         #--------------------------------------------------------------------------
  646.         def angling(data = @action_data)
  647.                 @angle_data = data.dup
  648.                 @oy = @ch / 2
  649.                 @oy_adjust = @ch * 50
  650.                 @angle_time = data[1]
  651.                 start_angle = data[2] * N03.mirror_num(@mirror)
  652.                 end_angle = data[3] * N03.mirror_num(@mirror)
  653.                 # 時間が0以下なら即座に最終角度へ
  654.                 @angle_time = 1 if @angle_time <= 0
  655.                 # 回転時間から1フレームあたりの角度を出す
  656.                 @angling = (end_angle - start_angle) / @angle_time
  657.                 # 割り切れない余りを初期角度に
  658.                 @angle = (end_angle - start_angle) % @angle_time + start_angle
  659.         end
  660.         #--------------------------------------------------------------------------
  661.         # ● 回転初期化
  662.         #--------------------------------------------------------------------------
  663.         def angle_reset
  664.                 @oy = @ch
  665.                 @angle = @angle_time = @oy_adjust = 0
  666.         end  
  667.         #--------------------------------------------------------------------------
  668.         # ● 拡大縮小実行
  669.         #--------------------------------------------------------------------------
  670.         def zooming(data = @action_data)
  671.                 @zoom_data = data.dup
  672.                 @zoom_time = data[1]
  673.                 start_zoom_x = data[2][0]
  674.                 start_zoom_y = data[2][1]
  675.                 end_zoom_x = data[3][0]
  676.                 end_zoom_y = data[3][1]
  677.                 # 時間が0以下なら即座に最終サイズへ
  678.                 @zoom_time = 1 if @zoom_time <= 0
  679.                 # 拡大縮小時間から1フレームあたりの拡大縮小率を出す
  680.                 @zooming_x = (end_zoom_x - start_zoom_x) / @zoom_time
  681.                 @zooming_y = (end_zoom_y - start_zoom_y) / @zoom_time
  682.                 # 開始サイズに
  683.                 @zoom_x = start_zoom_x
  684.                 @zoom_y = start_zoom_y
  685.         end  
  686.         #--------------------------------------------------------------------------
  687.         # ● 拡大縮小初期化
  688.         #--------------------------------------------------------------------------
  689.         def zoom_reset
  690.                 @zoom_x = @zoom_y = 1
  691.                 @zoom_time = 0
  692.         end  
  693.         #--------------------------------------------------------------------------
  694.         # ● バトラー透明度操作
  695.         #--------------------------------------------------------------------------
  696.         def set_opacity
  697.                 data = @action_data.dup
  698.                 @opacity = data[2]
  699.                 opacity_move = (data[3] - data[2])/ data[1]
  700.                 @opacity_data = [data[1], data[1], opacity_move, data[4], data[5], data[6]]
  701.                 @wait = data[1] if data[7]
  702.                 @wait *= 2 if data[6] && data[7]
  703.         end
  704.         #--------------------------------------------------------------------------
  705.         # ● 透明度操作初期化
  706.         #--------------------------------------------------------------------------
  707.         def opacity_reset
  708.                 @opacity = 255
  709.                 @opacity = 0 if @battler.hidden?
  710.                 @opacity_data = []
  711.         end
  712.         #--------------------------------------------------------------------------
  713.         # ● バトラーアニメ実行
  714.         #--------------------------------------------------------------------------
  715.         def battler_anime(anime_data = nil)
  716.                 anime_data = @action_data.dup if anime_data == nil
  717.                 @graphic_file_index = anime_data[1] if !graphic_fix
  718.                 @pattern_h = anime_data[2]
  719.                 @pattern_w = anime_data[3]
  720.                 @pattern_h = 0 if @max_pattern_w == 1
  721.                 @pattern_w = 0 if @max_pattern_h == 1
  722.                 @pattern_type = anime_data[4]
  723.                 @pattern_time = anime_data[5]
  724.                 @pattern_rest_time = anime_data[5]
  725.                 @pattern_count = 0
  726.                 @pattern_kind = 1
  727.                 @pattern_kind = -1 if @pattern_type < 0
  728.                 @pattern_kind = 0 if @pattern_type == 0
  729.                 @sx = (@graphic_index % 4 * @max_pattern_w + @pattern_w) * @cw
  730.                 @sy = (@graphic_index / 4 * @max_pattern_h + @pattern_h) * @ch
  731.                 @z_plus = anime_data[6]
  732.                 @wait = set_anime_wait if anime_data[7]
  733.                 @shadow_visible = anime_data[8]
  734.                 weapon_anime(anime_data)
  735.         end
  736.         #--------------------------------------------------------------------------
  737.         # ● アニメウエイト計算
  738.         #--------------------------------------------------------------------------
  739.         def set_anime_wait
  740.                 if @pattern_type > 0
  741.                         pattern_time_a = @max_pattern_w - @pattern_w.abs
  742.                 elsif @pattern_type < 0
  743.                         pattern_time_a = @pattern_w.abs + 1
  744.                 else
  745.                         return @pattern_time if @pattern_type == 0
  746.                 end
  747.                 case @pattern_type
  748.                 when 1,-1, 3,-3
  749.                         return pattern_time_a * @pattern_time
  750.                 when 2,-2, 4,-4
  751.                         return pattern_time_a * @pattern_time + (@max_pattern_w - 2) * @pattern_time
  752.                 end
  753.         end  
  754.         #--------------------------------------------------------------------------
  755.         # ● 移動実行
  756.         #--------------------------------------------------------------------------
  757.         def move
  758.                 @move_targets = N03.get_targets(@action_data[1].abs, @battler)
  759.                 return if @move_targets == []
  760.                 @move_targets = [@battler] if @action_data[1].abs == 7
  761.                 @move_x = @action_data[2] * 100 * N03.mirror_num(@mirror)
  762.                 @move_y = @action_data[3] * 100
  763.                 @move_h = @action_data[4] * 100 if @action_data[4] != nil
  764.                 @move_h = nil if @action_data[4] == nil
  765.                 battler_anime(N03::ACTION[@action_data[8]].dup) if N03::ACTION[@action_data[8]] != nil
  766.                 @horming_move = true
  767.                 @horming_move = false if @action_data[1] < 0 or @action_data[1].abs == 7
  768.                 target_position_set
  769.                 target_position = [@target_x, @target_y, @target_z]
  770.                 distanse_move = @action_data[5] > 0
  771.                 @move_time = N03.distanse_calculation(@action_data[5].abs, target_position, [@x, @y, @z], distanse_move)
  772.                 @wait = @move_time
  773.                 curve
  774.                 jump
  775.                 @move_time = 1 if @move_time == 0
  776.                 @horming_move = false if !@move_targets or @move_targets.include?(@battler)
  777.                 update_move if @move_time == 1
  778.         end  
  779.         #--------------------------------------------------------------------------
  780.         # ● カーブ実行
  781.         #--------------------------------------------------------------------------
  782.         def curve
  783.                 @c = 0
  784.                 return if @action_data[6] == 0
  785.                 @curve = N03.parabola([@action_data[6], -@action_data[6]], @move_time, 100, 4)
  786.         end  
  787.         #--------------------------------------------------------------------------
  788.         # ● ジャンプ実行
  789.         #--------------------------------------------------------------------------
  790.         def jump
  791.                 convert_jump
  792.                 return if @action_data[7] == [0,0]
  793.                 @jump = N03.parabola(@action_data[7].dup, @move_time, 100)
  794.         end  
  795.         #--------------------------------------------------------------------------
  796.         # ● J座標(ジャンプ高度)をH座標に変換
  797.         #--------------------------------------------------------------------------
  798.         def convert_jump
  799.                 @h += @j
  800.                 @j = 0
  801.                 @jump = []
  802.         end  
  803.         #--------------------------------------------------------------------------
  804.         # ● データベース戦闘アニメ実行
  805.         #--------------------------------------------------------------------------
  806.         def battle_anime
  807.                 data = @action_data.dup
  808.                 targets = N03.get_targets(data[2], @battler)
  809.                 return if targets == []
  810.                 data[8] = !data[8] if @mirror
  811.                 @set_damage           = data[5]
  812.                 @damage_anime_data[0] = N03.get_attack_anime_id(data[1], @battler)
  813.                 @damage_anime_data[1] = data[8]
  814.                 @damage_anime_data[2] = data[7]
  815.                 @damage_anime_data[3] = data[6]
  816.                 @damage_anime_data[4] = data[9]
  817.                 @wait = N03.get_anime_time(@damage_anime_data[0]) - 2 if data[4]
  818.                 return if @set_damage
  819.                 for target in targets do display_anime(targets, target, data) end
  820.                 end
  821.                 #--------------------------------------------------------------------------
  822.                 # ● 武器アニメ開始
  823.                 #--------------------------------------------------------------------------
  824.                 def weapon_anime(anime_data)
  825.                         @weapon_end = true
  826.                         for i in 9...anime_data.size
  827.                                 set_effect_data(anime_data[i]) if anime_data[i] != ""
  828.                         end
  829.                 end
  830.                 #--------------------------------------------------------------------------
  831.                 # ● アニメ飛ばし開始
  832.                 #--------------------------------------------------------------------------
  833.                 def move_anime
  834.                         @m_a_starter = []
  835.                         @m_a_targets = []
  836.                         starters = N03.get_targets(@action_data[2], @battler)
  837.                         targets = N03.get_targets(@action_data[3], @battler)
  838.                         return if starters == [] or targets == []
  839.                         single_start = true if starters != nil && @action_data[2] < 0
  840.                         single_start = true if @action_data[1][0] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][0], @battler)].position == 3
  841.                         starters = [starters[0]] if single_start
  842.                         single_end = true if targets != nil && @action_data[3] < 0
  843.                         single_end = true if @action_data[1][1] != 0 && $data_animations[N03.get_attack_anime_id(@action_data[1][1], @battler)].position == 3
  844.                         targets = [targets[0]] if single_end
  845.                         se_flag = true
  846.                         for starter in starters
  847.                                 for target in targets
  848.                                         data = @action_data.dup
  849.                                         data[17] = se_flag
  850.                                         @effect_data.push(data)
  851.                                         @m_a_targets.push(target)
  852.                                         @m_a_starter.push(starter)
  853.                                         se_flag = false
  854.                                 end
  855.                         end  
  856.                 end
  857.                 #--------------------------------------------------------------------------
  858.                 # ● スプライトセット通信
  859.                 #--------------------------------------------------------------------------
  860.                 def set_effect_data(data = @action)
  861.                         action_data = N03::ACTION[data]
  862.                         return if action_data == nil
  863.                         @effect_data.push(action_data.dup)
  864.                 end
  865.                 #--------------------------------------------------------------------------
  866.                 # ● 戦闘シーン通信のデータを格納
  867.                 #--------------------------------------------------------------------------
  868.                 def set_play_data(data = @action_data)
  869.                         @play_data = data.dup
  870.                 end
  871.                 #--------------------------------------------------------------------------
  872.                 # ● 戦闘アニメの表示
  873.                 #--------------------------------------------------------------------------
  874.                 def display_anime(targets, target, data)
  875.                         return if !N03.first_of_all_screen_anime(data[1], target, targets)
  876.                         target.animation_id         = N03.get_attack_anime_id(data[1], @battler)
  877.                         target.animation_mirror     = data[8]
  878.                         target.sv.anime_horming     = data[3]
  879.                         target.sv.anime_camera_zoom = data[6]
  880.                         target.sv.anime_no_mirror   = data[7]
  881.                         target.sv.anime_plus_z      = data[9]
  882.                 end
  883.                 #--------------------------------------------------------------------------
  884.                 # ● 戦闘アニメ拡張データの初期化
  885.                 #--------------------------------------------------------------------------
  886.                 def reset_anime_data
  887.                         @anime_no_mirror = false
  888.                         @anime_horming = false
  889.                         @anime_camera_zoom = false
  890.                         @timing_targets = []
  891.                         @anime_plus_z = true
  892.                 end  
  893.                 #--------------------------------------------------------------------------
  894.                 # ● カメラワーク
  895.                 #--------------------------------------------------------------------------
  896.                 def camera
  897.                         data = @action_data.dup
  898.                         N03.camera(@battler, data)
  899.                         @wait = data[4] if data[5]
  900.                 end  
  901.                 #--------------------------------------------------------------------------
  902.                 # ● 画面のシェイク
  903.                 #--------------------------------------------------------------------------
  904.                 def shake
  905.                         data = @action_data.dup
  906.                         $sv_camera.shake(data[1], data[2], data[3])
  907.                         @wait = data[3] if data[4]
  908.                 end
  909.                 #--------------------------------------------------------------------------
  910.                 # ● 画面色調変更
  911.                 #--------------------------------------------------------------------------
  912.                 def color_effect
  913.                         case @action_data[1]
  914.                         when 0,1,2,3,4,5
  915.                                 targets = N03.get_targets(@action_data[1], @battler)
  916.                         when 6
  917.                                 screen = true
  918.                         when 7
  919.                                 targets = [@battler] + @target_battler
  920.                         when 8
  921.                                 screen = true
  922.                                 targets = $game_troop.members + $game_party.battle_members - [@battler]
  923.                         when 9
  924.                                 screen = true
  925.                                 targets = $game_troop.members + $game_party.battle_members - [@battler] - @target_battler
  926.                         when 10
  927.                                 screen = true
  928.                                 targets = $game_troop.members + $game_party.battle_members
  929.                         end
  930.                         return if screen == nil && targets == []
  931.                         for target in targets do target.sv.color_set = @action_data[2] end if targets
  932.                                 @wait = @action_data[2][4] if @action_data[3]
  933.                                 return if !screen
  934.                                 $sv_camera.color_set[1] = @action_data[2]
  935.                                 $sv_camera.color_set[2] = @action_data[2]
  936.                         end  
  937.                         #--------------------------------------------------------------------------
  938.                         # ● トランジション
  939.                         #--------------------------------------------------------------------------
  940.                         def transition
  941.                                 $sv_camera.perform_transition(@action_data)
  942.                         end  
  943.                         #--------------------------------------------------------------------------
  944.                         # ● ふきだしアニメ表示
  945.                         #--------------------------------------------------------------------------
  946.                         def balloon_anime
  947.                                 @balloon_data = @action_data.dup
  948.                         end  
  949.                         #--------------------------------------------------------------------------
  950.                         # ● ピクチャ表示
  951.                         #--------------------------------------------------------------------------
  952.                         def picture_set
  953.                                 @picture = true
  954.                                 set_effect_data
  955.                         end
  956.                         #--------------------------------------------------------------------------
  957.                         # ● ステート操作
  958.                         #--------------------------------------------------------------------------
  959.                         def state_set
  960.                                 targets = N03.get_targets(@action_data[1], @battler)
  961.                                 return if targets == []
  962.                                 case @action_data[2]
  963.                                 when 1 ; targets = [targets[rand(targets.size)]]
  964.                                 when 2 ; targets -= @battler if targets.include?(@battler)
  965.                                 end
  966.                                 for target in targets
  967.                                         for id in @action_data[4]
  968.                                                 target.add_state(id) if @action_data[3] == "+"
  969.                                                 target.remove_state(id) if @action_data[3] == "-"
  970.                                         end
  971.                                 end
  972.                         end
  973.                         #--------------------------------------------------------------------------
  974.                         # ● FPS変更
  975.                         #--------------------------------------------------------------------------
  976.                         def fps
  977.                                 Graphics.frame_rate = @action_data[1]
  978.                                 start_action
  979.                         end
  980.                         #--------------------------------------------------------------------------
  981.                         # ● バトラー画像変更の場合
  982.                         #--------------------------------------------------------------------------
  983.                         def graphics_change
  984.                                 @graphics_change = true
  985.                                 return @battler.graphics_change(@action_data[3]) if !@battler.actor?
  986.                                 @pre_change_data = [@battler.character_name, @battler.character_index, @battler.face_name, @battler.face_index] if @pre_change_data == nil && !@action_data[1]
  987.                                 if @action_data[4] == []
  988.                                         face_name = @battler.face_name
  989.                                         face_index = @battler.face_index
  990.                                 else
  991.                                         face_name = @action_data[4][1]
  992.                                         face_index = @action_data[4][0]
  993.                                 end
  994.                                 @battler.set_graphic(@action_data[3], @action_data[2], face_name, face_index)
  995.                         end
  996.                         #--------------------------------------------------------------------------
  997.                         # ● スキル派生
  998.                         #--------------------------------------------------------------------------
  999.                         def derivating_skill
  1000.                                 # 未修得スキルは派生不可なら
  1001.                                 return if !@action_data[1] && !@battler.skill_learn?($data_skills[@action_data[3]])
  1002.                                 # コスト不足は派生不可なら
  1003.                                 return if !@action_data[2] && !@battler.skill_cost_payable?($data_skills[@action_data[3]])
  1004.                                 # 派生
  1005.                                 @derivation_skill_id = @action_data[3]
  1006.                                 # 以降のアクションをキャンセル
  1007.                                 @full_action = []
  1008.                         end
  1009.                         #--------------------------------------------------------------------------
  1010.                         # ● BGM/BGS/SE演奏
  1011.                         #--------------------------------------------------------------------------
  1012.                         def sound
  1013.                                 pitch = @action_data[2]
  1014.                                 vol   = @action_data[3]
  1015.                                 name  = @action_data[4]
  1016.                                 case @action_data[1]
  1017.                                 when "se"
  1018.                                         Audio.se_play("Audio/SE/" + name, vol, pitch)
  1019.                                 when "bgm"
  1020.                                         # 名前指定のない場合、現在のBGMを変えないように
  1021.                                         name = RPG::BGM.last.name if @action_data[4] == ""
  1022.                                         Audio.bgm_play("Audio/BGM/" + name, vol, pitch)
  1023.                                 when "bgs"
  1024.                                         name = RPG::BGS.last.name if @action_data[4] == ""
  1025.                                         Audio.bgs_play("Audio/BGS/" + name, vol, pitch)
  1026.                                 end
  1027.                         end
  1028.                         #--------------------------------------------------------------------------
  1029.                         # ● ムービーの再生
  1030.                         #--------------------------------------------------------------------------
  1031.                         def movie
  1032.                                 Graphics.play_movie('Movies/' + @action_data[1])
  1033.                         end
  1034.                         #--------------------------------------------------------------------------
  1035.                         # ● ゲームスイッチ操作
  1036.                         #--------------------------------------------------------------------------
  1037.                         def switches
  1038.                                 for id in @action_data[1]
  1039.                                         $game_switches[id] = true if id > 0
  1040.                                         $sv_camera.switches[id.abs] = true  if id < 0
  1041.                                 end
  1042.                                 for id in @action_data[2]
  1043.                                         $game_switches[id] = false if id > 0
  1044.                                         $sv_camera.switches[id.abs] = false  if id < 0
  1045.                                 end
  1046.                                 $sv_camera.program_check
  1047.                         end
  1048.                         #--------------------------------------------------------------------------
  1049.                         # ● ゲーム変数操作
  1050.                         #--------------------------------------------------------------------------
  1051.                         def variable
  1052.                                 # オペランドチェック
  1053.                                 operand = @action_data[3]
  1054.                                 operand = $game_variables[@action_data[3].abs] if @action_data[3] < 0
  1055.                                 # 変数操作で分岐
  1056.                                 case @action_data[2]
  1057.                                 when 0 ; $game_variables[@action_data[1]] = operand  # 代入
  1058.                                 when 1 ; $game_variables[@action_data[1]] += operand # 加算
  1059.                                 when 2 ; $game_variables[@action_data[1]] -= operand # 減算
  1060.                                 when 3 ; $game_variables[@action_data[1]] *= operand # 乗算
  1061.                                 when 4 ; $game_variables[@action_data[1]] /= operand # 除算
  1062.                                 when 5 ; $game_variables[@action_data[1]] %= operand # 剰余
  1063.                                 end
  1064.                         end  
  1065.                         #--------------------------------------------------------------------------
  1066.                         # ● 条件分岐 (ゲームスイッチ)
  1067.                         #--------------------------------------------------------------------------
  1068.                         def nece_1
  1069.                                 judgment = $game_switches[@action_data[1]] == @action_data[2] if @action_data[1] > 0
  1070.                                 judgment = $sv_camera.switches[@action_data[1].abs] == @action_data[2] if @action_data[1] < 0
  1071.                                 action_diverging(judgment, @action_data[3])
  1072.                         end  
  1073.                         #--------------------------------------------------------------------------
  1074.                         # ● 条件分岐 (ゲーム変数)
  1075.                         #--------------------------------------------------------------------------
  1076.                         def nece_2
  1077.                                 variable = $game_variables[@action_data[1]]
  1078.                                 num = @action_data[2]
  1079.                                 num = $game_variables[@action_data[2].abs] if num < 0
  1080.                                 case @action_data[3]
  1081.                                 when 0 ; judgment = variable == num
  1082.                                 when 1 ; judgment = variable < num
  1083.                                 when 2 ; judgment = variable > num
  1084.                                 end  
  1085.                                 action_diverging(judgment, @action_data[4])
  1086.                         end  
  1087.                         #--------------------------------------------------------------------------
  1088.                         # ● 条件分岐 (ステート)
  1089.                         #--------------------------------------------------------------------------
  1090.                         def nece_3
  1091.                                 targets = N03.get_targets(@action_data[1], @battler)
  1092.                                 return if targets == []
  1093.                                 member_num = @action_data[4]
  1094.                                 member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1095.                                 hit_count = 0
  1096.                                 miss_count = 0
  1097.                                 for target in targets
  1098.                                         hit_count += 1 if target.state?(@action_data[2])
  1099.                                         miss_count += 1 if !target.state?(@action_data[2])
  1100.                                 end
  1101.                                 case @action_data[3]
  1102.                                 when 0 ; judgment = hit_count >= member_num
  1103.                                 when 1 ; judgment = miss_count >= member_num
  1104.                                 end
  1105.                                 action_diverging(judgment, @action_data[5])
  1106.                         end  
  1107.                         #--------------------------------------------------------------------------
  1108.                         # ● 条件分岐 (スキル)
  1109.                         #--------------------------------------------------------------------------
  1110.                         def nece_4
  1111.                                 targets = N03.get_targets(@action_data[1], @battler)
  1112.                                 return if targets == []
  1113.                                 member_num = @action_data[4]
  1114.                                 member_num = targets.size if @action_data[4] == 0 && targets.size > 1
  1115.                                 hit_count = 0
  1116.                                 miss_count = 0
  1117.                                 for target in targets
  1118.                                         hit_count += 1 if target.skills.include?($data_skills[@action_data[2]]) #&& target.skill_conditions_met?($data_skills[@action_data[2]])
  1119.                                         miss_count += 1 if !target.skills.include?($data_skills[@action_data[2]]) #or !target.skill_conditions_met?($data_skills[@action_data[2]])
  1120.                                 end
  1121.                                 case @action_data[3]
  1122.                                 when 0 ; judgment = hit_count >= member_num
  1123.                                 when 1 ; judgment = miss_count >= member_num
  1124.                                 end
  1125.                                 action_diverging(judgment, @action_data[5])
  1126.                         end  
  1127.                         #--------------------------------------------------------------------------
  1128.                         # ● 条件分岐 (パラメータ)
  1129.                         #--------------------------------------------------------------------------
  1130.                         def nece_5
  1131.                                 targets = N03.get_targets(@action_data[1], @battler)
  1132.                                 return if targets == []
  1133.                                 member_num = @action_data[5]
  1134.                                 member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1135.                                 hit_count = 0
  1136.                                 for target in targets
  1137.                                         hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
  1138.                                 end
  1139.                                 judgment = hit_count >= member_num
  1140.                                 action_diverging(judgment, @action_data[6])
  1141.                         end  
  1142.                         #--------------------------------------------------------------------------
  1143.                         # ● 条件分岐 (装備)
  1144.                         #--------------------------------------------------------------------------
  1145.                         def nece_6
  1146.                                 targets = N03.get_targets(@action_data[1], @battler)
  1147.                                 return if targets == []
  1148.                                 member_num = @action_data[5]
  1149.                                 member_num = targets.size if @action_data[5] == 0 && targets.size > 1
  1150.                                 hit_count = 0
  1151.                                 miss_count = 0
  1152.                                 for target in targets
  1153.                                         hit_count += 1 if target.comparison_equip([@action_data[2],@action_data[3]])
  1154.                                         miss_count += 1 if !target.comparison_equip([@action_data[2],@action_data[3]])
  1155.                                 end
  1156.                                 case @action_data[4]
  1157.                                 when 0 ; judgment = hit_count >= member_num
  1158.                                 when 1 ; judgment = miss_count >= member_num
  1159.                                 end
  1160.                                 action_diverging(judgment, @action_data[6])
  1161.                         end  
  1162.                         #--------------------------------------------------------------------------
  1163.                         # ● 条件分岐 (スクリプト)
  1164.                         #--------------------------------------------------------------------------
  1165.                         def nece_7
  1166.                                 judgment = eval(@action_data[2])
  1167.                                 action_diverging(judgment, @action_data[1])
  1168.                         end  
  1169.                         #--------------------------------------------------------------------------
  1170.                         # ● アクション分岐  
  1171.                         #--------------------------------------------------------------------------
  1172.                         def action_diverging(judgment, kind)
  1173.                                 result = 0
  1174.                                 if judgment
  1175.                                         result = 1 if kind == 1
  1176.                                         result = 2 if kind == 2
  1177.                                 else
  1178.                                         result = 1 if kind == 0
  1179.                                 end
  1180.                                 # フルアクション終了
  1181.                                 return @full_action = []  if result == 2
  1182.                                 # 次のアクションを除去
  1183.                                 @full_action.shift if result == 1
  1184.                                 set_action
  1185.                                 # 次のアクションを実行
  1186.                                 @action_data = N03::ACTION[@action]
  1187.                                 next_action
  1188.                         end
  1189.                         #--------------------------------------------------------------------------
  1190.                         # ● セカンドターゲット操作
  1191.                         #--------------------------------------------------------------------------
  1192.                         def second_targets_set
  1193.                                 targets = N03.get_targets(@action_data[1], @battler)
  1194.                                 for target in targets
  1195.                                         targets.delete(target) if @action_data[2][1] == 1 && target.index != @action_data[2][0]
  1196.                                         targets.delete(target) if @action_data[2][1] == 2 && target.index == @action_data[2][0].abs
  1197.                                         targets.delete(target) if @action_data[3] > 0 && target.id != @action_data[3]
  1198.                                         targets.delete(target) if @action_data[3] < 0 && target.id == @action_data[3].abs
  1199.                                         targets.delete(target) if @action_data[4] > 0 && !target.state?(@action_data[4])
  1200.                                         targets.delete(target) if @action_data[4] < 0 && target.state?(@action_data[4].abs)
  1201.                                         targets.delete(target) if @action_data[5] > 0 && !target.skill_conditions_met?($data_skills[@action_data[5]])
  1202.                                         targets.delete(target) if @action_data[5] < 0 && target.skill_conditions_met?($data_skills[@action_data[5].abs])
  1203.                                         targets.delete(target) if !target.comparison_parameter(@action_data[6])
  1204.                                         targets.delete(target) if !@action_data[7][1].include?(0) && !target.comparison_equip(@action_data[7])
  1205.                                 end
  1206.                                 return @second_targets = [] if targets.size == 0
  1207.                                 case @action_data[8]
  1208.                                 when 1 ; targets = [targets[rand(targets.size)]]
  1209.                                 when 2 ; targets.delete(@battler)
  1210.                                 end
  1211.                                 return @second_targets = [] if targets.size == 0
  1212.                                 @second_targets = targets
  1213.                                 case @action_data[9]
  1214.                                 when 0 ; return
  1215.                                 when 1 ; set_play_data(["second_targets_set"])
  1216.                                 when 2 ; set_play_data(["targets_set"])
  1217.                                 end
  1218.                                 @wait += 1
  1219.                         end
  1220.                         #--------------------------------------------------------------------------
  1221.                         # ● コモンイベント呼び出し
  1222.                         #--------------------------------------------------------------------------
  1223.                         def call_common_event
  1224.                                 $game_temp.reserve_common_event(@action_data[1])
  1225.                                 $sv_camera.event = true
  1226.                                 @event_fix = @action_data[2]
  1227.                         end
  1228.                         #--------------------------------------------------------------------------
  1229.                         # ● ダメージアニメ
  1230.                         #--------------------------------------------------------------------------
  1231.                         def damage_anime(delay_time = 12)
  1232.                                 anime(N03.get_attack_anime_id(-3, @battler), wait = true)
  1233.                                 action_play
  1234.                                 @wait -= delay_time
  1235.                                 @full_action.unshift("eval('@damage_anime_data = []
  1236.     @set_damage = true')")
  1237.                         end
  1238.                         #--------------------------------------------------------------------------
  1239.                         # ● 通常コラプス
  1240.                         #--------------------------------------------------------------------------
  1241.                         def normal_collapse
  1242.                                 @collapse = true
  1243.                                 return
  1244.                         end
  1245.                         #--------------------------------------------------------------------------
  1246.                         # ● 初期位置変更
  1247.                         #--------------------------------------------------------------------------
  1248.                         def change_base_position
  1249.                                 @base_x = @x
  1250.                                 @base_y = @y
  1251.                                 @base_h = @h
  1252.                         end  
  1253.                         #--------------------------------------------------------------------------
  1254.                         # ● 強制アクション実行
  1255.                         #--------------------------------------------------------------------------
  1256.                         def force_act
  1257.                                 target(@full_action.shift)
  1258.                         end
  1259.                         #--------------------------------------------------------------------------
  1260.                         # ● 強制アクション実行 (セカンドターゲット)
  1261.                         #--------------------------------------------------------------------------
  1262.                         def force_act2
  1263.                                 target2(@full_action.shift)
  1264.                         end
  1265.                         #--------------------------------------------------------------------------
  1266.                         # ● 個別処理開始
  1267.                         #--------------------------------------------------------------------------
  1268.                         def individual_start
  1269.                                 @individual_targets = @target_battler.dup
  1270.                                 @remain_targets = @target_battler.dup
  1271.                                 @target_battler = [@individual_targets[0]]
  1272.                                 # リピート部分のアクションを保持
  1273.                                 @individual_act = @full_action.dup
  1274.                         end
  1275.                         #--------------------------------------------------------------------------
  1276.                         # ● 個別処理終了
  1277.                         #--------------------------------------------------------------------------
  1278.                         def individual_end
  1279.                                 @individual_targets.shift
  1280.                                 for target in @individual_targets
  1281.                                         @individual_targets.shift if target.dead?
  1282.                                 end
  1283.                                 # ターゲットが残っているなら行動リピート
  1284.                                 return @target_battler = @remain_targets if @individual_targets.size == 0
  1285.                                 @full_action = @individual_act.dup
  1286.                                 @target_battler = [@individual_targets[0]]
  1287.                         end
  1288.                         #--------------------------------------------------------------------------
  1289.                         # ● ループ開始
  1290.                         #--------------------------------------------------------------------------
  1291.                         def loop_start
  1292.                                 # ループ部分のアクションを保持
  1293.                                 @loop_act = @full_action.dup
  1294.                         end
  1295.                         #--------------------------------------------------------------------------
  1296.                         # ● ループ終了
  1297.                         #--------------------------------------------------------------------------
  1298.                         def loop_end
  1299.                                 # 行動リピート
  1300.                                 @full_action = @loop_act.dup if @loop_act != []
  1301.                         end
  1302.                         #--------------------------------------------------------------------------
  1303.                         # ● 次の行動者へ移行
  1304.                         #--------------------------------------------------------------------------
  1305.                         def next_battler
  1306.                                 @action_end = true
  1307.                                 @active = false
  1308.                         end
  1309.                         #--------------------------------------------------------------------------
  1310.                         # ● 画像変更フラグ
  1311.                         #--------------------------------------------------------------------------
  1312.                         def set_change
  1313.                                 @change_up = true
  1314.                         end
  1315.                         #--------------------------------------------------------------------------
  1316.                         # ● 戦闘シーン通信
  1317.                         #--------------------------------------------------------------------------
  1318.                         def play_data
  1319.                                 data = @play_data
  1320.                                 @play_data = []
  1321.                                 return data
  1322.                         end
  1323.                         #--------------------------------------------------------------------------
  1324.                         # ● ショートカットコマンド
  1325.                         #--------------------------------------------------------------------------
  1326.                         def anime(anime_id, wait = true)
  1327.                                 @action_data = ["anime",anime_id,1,false,wait,false,true,false]
  1328.                         end
  1329.                         def anime_me(anime_id, wait = true)
  1330.                                 @action_data = ["anime",anime_id,0,false,wait,false,true,false]
  1331.                         end
  1332.                         def se(file, pitch = 100)
  1333.                                 @action_data = ["sound",  "se", pitch, 100, file]
  1334.                         end
  1335.                         def target(act)
  1336.                                 for target in @target_battler do target.sv.force_action = act end
  1337.                                 end
  1338.                                 def target2(act)
  1339.                                         for target in @second_targets do target.sv.force_action = act end
  1340.                                         end
  1341.                                         def delay(time)
  1342.                                                 @wait = @battler.index * time
  1343.                                         end
  1344.                                         #--------------------------------------------------------------------------
  1345.                                         # ● バトラーのIDを取得
  1346.                                         #--------------------------------------------------------------------------
  1347.                                         def id
  1348.                                                 return @battler.id if @battler.actor?
  1349.                                                 return [email]-@battler.id[/email]
  1350.                                         end
  1351.                                         #--------------------------------------------------------------------------
  1352.                                         # ● 被クリティカルフラグを取得
  1353.                                         #--------------------------------------------------------------------------
  1354.                                         def critical?
  1355.                                                 return @battler.result.critical
  1356.                                         end
  1357.                                         #--------------------------------------------------------------------------
  1358.                                         # ● 被回復フラグを取得
  1359.                                         #--------------------------------------------------------------------------
  1360.                                         def recovery?
  1361.                                                 recovery = false
  1362.                                                 recovery = true if @battler.result.hp_damage < 0
  1363.                                                 recovery = true if @battler.result.mp_damage < 0
  1364.                                                 recovery = true if @battler.result.tp_damage < 0
  1365.                                                 return recovery
  1366.                                         end
  1367.                                         #--------------------------------------------------------------------------
  1368.                                         # ● 被スキルIDを取得
  1369.                                         #--------------------------------------------------------------------------
  1370.                                         def damage_skill_id
  1371.                                                 return @damage_skill_id
  1372.                                         end
  1373.                                         #--------------------------------------------------------------------------
  1374.                                         # ● 被アイテムIDを取得
  1375.                                         #--------------------------------------------------------------------------
  1376.                                         def damage_item_id
  1377.                                                 return @damage_item_id
  1378.                                         end
  1379.                                         #--------------------------------------------------------------------------
  1380.                                         # ● 装備武器を取得
  1381.                                         #--------------------------------------------------------------------------
  1382.                                         def weapon_id
  1383.                                                 return 0 if !@battler.weapons[0]
  1384.                                                 return @battler.weapons[0].id
  1385.                                         end
  1386.                                         #--------------------------------------------------------------------------
  1387.                                         # ● 装備武器のタイプを取得
  1388.                                         #--------------------------------------------------------------------------
  1389.                                         def weapon_type
  1390.                                                 return 0 if !@battler.weapons[0]
  1391.                                                 return @battler.weapons[0].wtype_id
  1392.                                         end
  1393.                                         #--------------------------------------------------------------------------
  1394.                                         # ● 盾を装備しているか
  1395.                                         #--------------------------------------------------------------------------
  1396.                                         def shield?
  1397.                                                 for armor in @battler.armors do return true if armor != nil && armor.etype_id == 1 end
  1398.                                                         return false
  1399.                                                 end
  1400.                                                 #--------------------------------------------------------------------------
  1401.                                                 # ● ダメージがあるか
  1402.                                                 #--------------------------------------------------------------------------
  1403.                                                 def damage_zero?
  1404.                                                         return @battler.result.hp_damage == 0 && @battler.result.mp_damage == 0 && @battler.result.tp_damage == 0
  1405.                                                 end
  1406.                                                 #--------------------------------------------------------------------------
  1407.                                                 # ● スキルIDを取得
  1408.                                                 #--------------------------------------------------------------------------
  1409.                                                 def skill_id
  1410.                                                         return @counter_id if @counter_id != 0
  1411.                                                         return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1412.                                                         return 0 if @battler.current_action.item.is_a?(RPG::Item)
  1413.                                                         return @battler.current_action.item.id
  1414.                                                 end
  1415.                                                 #--------------------------------------------------------------------------
  1416.                                                 # ● スキルのタイプを取得
  1417.                                                 #--------------------------------------------------------------------------
  1418.                                                 def skill_type
  1419.                                                         return 0 if skill_id == 0
  1420.                                                         return $data_skills[skill_id].stype_id
  1421.                                                 end
  1422.                                                 #--------------------------------------------------------------------------
  1423.                                                 # ● スキル名を取得
  1424.                                                 #--------------------------------------------------------------------------
  1425.                                                 def skill_name
  1426.                                                         return "" if skill_id == 0
  1427.                                                         return $data_skills[skill_id].name
  1428.                                                 end
  1429.                                                 #--------------------------------------------------------------------------
  1430.                                                 # ● アイテムIDを取得
  1431.                                                 #--------------------------------------------------------------------------
  1432.                                                 def item_id
  1433.                                                         return 0 if @battler.current_action == nil or @battler.current_action.item == nil
  1434.                                                         return @battler.current_action.item.id
  1435.                                                 end
  1436.                                                 #--------------------------------------------------------------------------
  1437.                                                 # ● 攻撃アクション
  1438.                                                 #--------------------------------------------------------------------------
  1439.                                                 def attack_action(item)
  1440.                                                         return skill_action if item.is_a?(RPG::Skill)
  1441.                                                         return item_action
  1442.                                                 end
  1443.                                                 #--------------------------------------------------------------------------
  1444.                                                 # ● ダメージアクションベース
  1445.                                                 #--------------------------------------------------------------------------
  1446.                                                 def damage_action_base(item)
  1447.                                                         @damage_skill_id = 0
  1448.                                                         @damage_item_id = 0
  1449.                                                         @damage_skill_id = item.id if item.is_a?(RPG::Skill)
  1450.                                                         @damage_item_id = item.id if item.is_a?(RPG::Item)
  1451.                                                 end  
  1452.                                                 #--------------------------------------------------------------------------
  1453.                                                 # ● ダメージアクション
  1454.                                                 #--------------------------------------------------------------------------
  1455.                                                 def damage_action(attacker, item)
  1456.                                                         damage_action_base(item)
  1457.                                                         act = damage(attacker)
  1458.                                                         return if @active
  1459.                                                         start_action(act) if act != nil
  1460.                                                 end
  1461.                                                 #--------------------------------------------------------------------------
  1462.                                                 # ● 回避アクション
  1463.                                                 #--------------------------------------------------------------------------
  1464.                                                 def evasion_action(attacker, item)
  1465.                                                         damage_action_base(item)
  1466.                                                         act = evasion(attacker)
  1467.                                                         return if @active
  1468.                                                         start_action(act) if act != nil
  1469.                                                 end
  1470.                                                 #--------------------------------------------------------------------------
  1471.                                                 # ● ミスアクション
  1472.                                                 #--------------------------------------------------------------------------
  1473.                                                 def miss_action(attacker, item)
  1474.                                                         damage_action_base(item)
  1475.                                                         act = miss(attacker)
  1476.                                                         return if @active
  1477.                                                         start_action(act) if act != nil
  1478.                                                 end
  1479.                                                 #--------------------------------------------------------------------------
  1480.                                                 # ● 閃きスクリプト併用処理
  1481.                                                 #--------------------------------------------------------------------------
  1482.                                                 def flash_action
  1483.                                                         return "閃き"
  1484.                                                 end
  1485.                                         end
  1486.                                         #==============================================================================
  1487.                                         # ■ module N03
  1488.                                         #------------------------------------------------------------------------------
  1489.                                         #  サイドビューバトルのモジュールです。
  1490.                                         #==============================================================================
  1491.                                         module N03
  1492.                                                 #--------------------------------------------------------------------------
  1493.                                                 # ● バトラーの敵グループを取得
  1494.                                                 #--------------------------------------------------------------------------
  1495.                                                 def self.get_enemy_unit(battler)
  1496.                                                         return $game_troop if battler.actor?
  1497.                                                         return $game_party
  1498.                                                 end
  1499.                                                 #--------------------------------------------------------------------------
  1500.                                                 # ● バトラーの味方グループを取得
  1501.                                                 #--------------------------------------------------------------------------
  1502.                                                 def self.get_party_unit(battler)
  1503.                                                         return $game_party if battler.actor?
  1504.                                                         return $game_troop
  1505.                                                 end
  1506.                                                 #--------------------------------------------------------------------------
  1507.                                                 # ● 戦闘アニメ時間の取得
  1508.                                                 #--------------------------------------------------------------------------
  1509.                                                 def self.get_anime_time(anime_id)
  1510.                                                         return 0 if anime_id <= 0
  1511.                                                         return $data_animations[anime_id].frame_max * 4
  1512.                                                 end
  1513.                                                 #--------------------------------------------------------------------------
  1514.                                                 # ● 攻撃アニメの取得
  1515.                                                 #--------------------------------------------------------------------------
  1516.                                                 def self.get_attack_anime_id(kind, battler)
  1517.                                                         return $data_skills[battler.sv.counter_id].animation_id if kind == -3 && battler.sv.counter_id != 0
  1518.                                                         case kind
  1519.                                                         when -1 ; anime_id = battler.atk_animation_id1
  1520.                                                         when -2 ; anime_id = battler.atk_animation_id2
  1521.                                                         when -3
  1522.                                                                 if battler.current_action != nil
  1523.                                                                         anime_id = battler.current_action.item.animation_id if battler.current_action.item != nil
  1524.                                                                 end
  1525.                                                         else    ; anime_id = kind
  1526.                                                         end
  1527.                                                         case anime_id
  1528.                                                         when -1 ; anime_id = battler.atk_animation_id1
  1529.                                                         when -2 ; anime_id = battler.atk_animation_id2
  1530.                                                         end
  1531.                                                         return anime_id if anime_id
  1532.                                                         return 0
  1533.                                                 end  
  1534.                                                 #--------------------------------------------------------------------------
  1535.                                                 # ● 戦闘アニメデータをセット
  1536.                                                 #--------------------------------------------------------------------------
  1537.                                                 def self.set_damage_anime_data(targets, target, data)
  1538.                                                         return if !first_of_all_screen_anime(data[0], target, targets)
  1539.                                                         target.animation_id         = data[0]
  1540.                                                         target.animation_mirror     = data[1]
  1541.                                                         target.sv.anime_no_mirror   = data[2]
  1542.                                                         target.sv.anime_camera_zoom = data[3]
  1543.                                                         target.sv.anime_plus_z      = data[4]
  1544.                                                 end   
  1545.                                                 #--------------------------------------------------------------------------
  1546.                                                 # ● ターゲットの取得
  1547.                                                 #--------------------------------------------------------------------------
  1548.                                                 def self.get_targets(kind, battler)
  1549.                                                         case kind.abs
  1550.                                                         when 0 ; return [battler].dup
  1551.                                                         when 1 ; return battler.sv.target_battler.dup
  1552.                                                         when 2 ; return get_enemy_unit(battler).members.dup
  1553.                                                         when 3 ; return get_party_unit(battler).members.dup
  1554.                                                         when 4 ; return $game_troop.members.dup + $game_party.battle_members.dup
  1555.                                                         when 5 ; return battler.sv.second_targets.dup
  1556.                                                         end
  1557.                                                 end  
  1558.                                                 #--------------------------------------------------------------------------
  1559.                                                 # ● ターゲットの座標を取得
  1560.                                                 #--------------------------------------------------------------------------
  1561.                                                 def self.get_targets_position(targets, horming, m_a = nil)
  1562.                                                         return [0,0,0] if targets == nil && !$sv_camera.mirror
  1563.                                                         return [Graphics.width,0,0] if targets == nil && $sv_camera.mirror
  1564.                                                         x = y = h = 0
  1565.                                                         for i in 0...targets.size
  1566.                                                                 x += targets[i].sv.base_x if !horming
  1567.                                                                 y += targets[i].sv.base_y if !horming
  1568.                                                                 h += targets[i].sv.base_h if !horming
  1569.                                                                 x += targets[i].sv.x if horming
  1570.                                                                 y += targets[i].sv.y if horming
  1571.                                                                 h += targets[i].sv.h if horming
  1572.                                                                 y -= targets[i].sv.ch * 100 if m_a == 0
  1573.                                                                 y -= targets[i].sv.ch * 50 if m_a == 1
  1574.                                                         end
  1575.                                                         return [x / targets.size, y / targets.size, h / targets.size]
  1576.                                                 end
  1577.                                                 #--------------------------------------------------------------------------
  1578.                                                 # ● 速度を時間に変換
  1579.                                                 #--------------------------------------------------------------------------
  1580.                                                 def self.distanse_calculation(time, target_position, self_position, distanse_move)
  1581.                                                         return time if !distanse_move
  1582.                                                         distanse_x = self_position[0] - target_position[0]
  1583.                                                         distanse_x = target_position[0] - self_position[0] if target_position[0] > self_position[0]
  1584.                                                         distanse_y = self_position[1] - target_position[1]
  1585.                                                         distanse_y = target_position[1] - self_position[1] if target_position[1] > self_position[1]
  1586.                                                         if self_position[2] != nil && target_position[2] != nil
  1587.                                                                 distanse_h = self_position[2] - target_position[2]
  1588.                                                                 distanse_h = target_position[2] - self_position[2] if target_position[2] > self_position[2]
  1589.                                                         else
  1590.                                                                 distanse_h = 0
  1591.                                                         end
  1592.                                                         distanse = [distanse_x, distanse_y, distanse_h].max
  1593.                                                         return distanse / (time * 100) + 1
  1594.                                                 end
  1595.                                                 #--------------------------------------------------------------------------
  1596.                                                 # ● 放物線移動計算
  1597.                                                 #--------------------------------------------------------------------------
  1598.                                                 def self.parabola(data, time, size, type = 1)
  1599.                                                         move_data = data
  1600.                                                         move_data[0] *= size
  1601.                                                         move_data[1] *= size
  1602.                                                         move = []
  1603.                                                         move_d = []
  1604.                                                         for i in 0...time / 2
  1605.                                                                 move[i] = move_data[0]
  1606.                                                                 move_d[i] = move_data[1]
  1607.                                                                 move_data[0] = move_data[0] * type / (1 + type)
  1608.                                                                 move_data[1] = move_data[1] * type / (1 + type)
  1609.                                                         end
  1610.                                                         move = move + move_d.reverse!
  1611.                                                         move.reverse!
  1612.                                                         adjust = move.inject(0) {|result, item| result + item }
  1613.                                                         move[move.size - 1] += adjust if data[0] == data[1] && adjust != 0
  1614.                                                         move.unshift(0) if time % 2 != 0
  1615.                                                         return move
  1616.                                                 end
  1617.                                                 #--------------------------------------------------------------------------
  1618.                                                 # ● 反転値
  1619.                                                 #--------------------------------------------------------------------------
  1620.                                                 def self.mirror_num(mirror)
  1621.                                                         return 1 if !mirror
  1622.                                                         return -1
  1623.                                                 end  
  1624.                                                 #--------------------------------------------------------------------------
  1625.                                                 # ● カメラワーク
  1626.                                                 #--------------------------------------------------------------------------
  1627.                                                 def self.camera(battler, data)
  1628.                                                         battler = $game_party.battle_members[0] if !battler
  1629.                                                         cx = data[2][0] * 100
  1630.                                                         cy = data[2][1] * 100
  1631.                                                         return $sv_camera.move(cx, cy, data[3], data[4], true) if data[1] == 6
  1632.                                                         targets = self.get_targets(data[1], battler)
  1633.                                                         return if targets == nil or targets == []
  1634.                                                         position = self.get_targets_position(targets, true)
  1635.                                                         $sv_camera.move(position[0], position[1] - position[2], data[3], data[4], false)
  1636.                                                 end
  1637.                                                 #--------------------------------------------------------------------------
  1638.                                                 # ● コラプス禁止
  1639.                                                 #--------------------------------------------------------------------------
  1640.                                                 def self.immortaling
  1641.                                                         # 全員に不死身付与
  1642.                                                         for member in $game_party.battle_members + $game_troop.members
  1643.                                                                 # イベント操作等で不死身設定になっていたら解除を無効にするフラグを立てる
  1644.                                                                 member.sv.immortal = true if member.state?(N03::IMMORTAL_ID)
  1645.                                                                 member.add_state(N03::IMMORTAL_ID)
  1646.                                                         end
  1647.                                                         return true
  1648.                                                 end  
  1649.                                                 #--------------------------------------------------------------------------
  1650.                                                 # ● コラプス許可
  1651.                                                 #--------------------------------------------------------------------------
  1652.                                                 def self.unimmortaling
  1653.                                                         # 全員の不死身化解除(イベント等で不死身設定がされていれば除く)
  1654.                                                         for member in $game_party.battle_members + $game_troop.members
  1655.                                                                 next if member.dead?
  1656.                                                                 # 不死身ステートが行動中に解除されていた場合、解除無効を解除
  1657.                                                                 member.sv.immortal = false if !member.state?(N03::IMMORTAL_ID) && member.sv.immortal
  1658.                                                                 next member.sv.immortal = false if member.sv.immortal
  1659.                                                                 member.remove_state(N03::IMMORTAL_ID)
  1660.                                                                 next if member.hp != 0
  1661.                                                                 member.add_state(1)
  1662.                                                                 member.perform_collapse_effect
  1663.                                                                 member.sv.action_terminate
  1664.                                                         end
  1665.                                                         return false
  1666.                                                 end  
  1667.                                                 #--------------------------------------------------------------------------
  1668.                                                 # ● スキル派生
  1669.                                                 #--------------------------------------------------------------------------
  1670.                                                 def self.derived_skill(battler)
  1671.                                                         battler.force_action(battler.sv.derivation_skill_id, -2)
  1672.                                                         BattleManager.unshift_action_battlers(battler)
  1673.                                                 end
  1674.                                                 #--------------------------------------------------------------------------
  1675.                                                 # ● ダメージの作成
  1676.                                                 #--------------------------------------------------------------------------
  1677.                                                 def self.set_damage(battler, hp_damage, mp_damage)
  1678.                                                         battler.result.hp_damage = hp_damage
  1679.                                                         battler.result.mp_damage = mp_damage
  1680.                                                 end
  1681.                                                 #--------------------------------------------------------------------------
  1682.                                                 # ● ターゲット生死確認
  1683.                                                 #--------------------------------------------------------------------------
  1684.                                                 def self.targets_alive?(targets)
  1685.                                                         return false if targets == []
  1686.                                                         for target in targets do return true if !target.dead? end
  1687.                                                                 return false
  1688.                                                         end
  1689.                                                         #--------------------------------------------------------------------------
  1690.                                                         # ● ターゲットをセカンドターゲットへ
  1691.                                                         #--------------------------------------------------------------------------
  1692.                                                         def self.s_targets(battler)
  1693.                                                                 battler.sv.target_battler = battler.sv.second_targets
  1694.                                                                 return battler.sv.second_targets
  1695.                                                         end  
  1696.                                                         #--------------------------------------------------------------------------
  1697.                                                         # ● セカンドターゲットをターゲットへ
  1698.                                                         #--------------------------------------------------------------------------
  1699.                                                         def self.targets_set(battler)
  1700.                                                                 battler.sv.second_targets = battler.current_action.make_targets.compact
  1701.                                                                 battler.sv.target_battler = battler.sv.second_targets
  1702.                                                         end  
  1703.                                                         #--------------------------------------------------------------------------
  1704.                                                         # ● 戦闘アニメ実行判定 (対象:画面時は最初のターゲットのみアニメ実行)
  1705.                                                         #--------------------------------------------------------------------------
  1706.                                                         def self.first_of_all_screen_anime(anime_id, target, targets)
  1707.                                                                 anime = $data_animations[anime_id]
  1708.                                                                 return false if !anime
  1709.                                                                 return true if anime.position != 3
  1710.                                                                 return false if anime.position == 3 && target != targets[0]
  1711.                                                                 targets.delete(target)
  1712.                                                                 target.sv.timing_targets = targets
  1713.                                                                 return true
  1714.                                                         end
  1715.                                                         #--------------------------------------------------------------------------
  1716.                                                         # ● 戦闘不能付加攻撃か
  1717.                                                         #--------------------------------------------------------------------------
  1718.                                                         def self.dead_attack?(battler, item)
  1719.                                                                 for state in battler.atk_states
  1720.                                                                         return true if state == battler.death_state_id
  1721.                                                                 end
  1722.                                                                 for effect in item.effects
  1723.                                                                         return true if effect.code == 21 && effect.data_id == battler.death_state_id
  1724.                                                                 end
  1725.                                                                 return false
  1726.                                                         end
  1727.                                                 end
  1728.                                                 #==============================================================================
  1729.                                                 # ■ Sprite_Weapon
  1730.                                                 #------------------------------------------------------------------------------
  1731.                                                 #  ウエポン表示用のスプライトです。
  1732.                                                 #==============================================================================
  1733.                                                 class Sprite_Weapon < Sprite_Base
  1734.                                                         #--------------------------------------------------------------------------
  1735.                                                         # ● 公開インスタンス変数 
  1736.                                                         #--------------------------------------------------------------------------
  1737.                                                         attr_reader   :index                       # ウエポン画像配列のインデックス
  1738.                                                         attr_reader   :battler                     # 画像が参照しているバトラー
  1739.                                                         attr_reader   :move_time                   # 画像が目標に到達するまでの時間
  1740.                                                         attr_reader   :through                     # 貫通フラグ
  1741.                                                         attr_reader   :action_end                  # 武器アクション終了フラグ
  1742.                                                         attr_reader   :action_end_cancel                  # 武器アクション終了フラグ
  1743.                                                         attr_reader   :hit_position                # 画像が目標に到達した時の座標
  1744.                                                         attr_accessor :hit_anime_id                # 画像が目標に到達した時のアニメID
  1745.                                                         #--------------------------------------------------------------------------
  1746.                                                         # ● オブジェクト初期化
  1747.                                                         #--------------------------------------------------------------------------
  1748.                                                         def initialize(viewport, index, battler)
  1749.                                                                 super(viewport)
  1750.                                                                 @index = index
  1751.                                                                 @battler = battler
  1752.                                                                 @position_x = @position_y = 0
  1753.                                                                 @o = 0
  1754.                                                                 @real_x = @real_y = 0
  1755.                                                                 @mirror = @battler.sv.mirror
  1756.                                                                 reset
  1757.                                                                 set_action
  1758.                                                         end
  1759.                                                         #--------------------------------------------------------------------------
  1760.                                                         # ● 初期化
  1761.                                                         #--------------------------------------------------------------------------
  1762.                                                         def reset
  1763.                                                                 @z_plus = 0
  1764.                                                                 @weapon_data = []
  1765.                                                                 @move_data = []
  1766.                                                                 @move_x = 0
  1767.                                                                 @move_y = 0
  1768.                                                                 @orbit = []
  1769.                                                                 @through = false
  1770.                                                                 @distanse_move = false
  1771.                                                                 @weapon_width = 0
  1772.                                                                 @weapon_height = 0
  1773.                                                                 @anime_time = 0
  1774.                                                                 @anime_position = 1
  1775.                                                                 @move_time = 0
  1776.                                                                 @hit_anime_id = 0
  1777.                                                                 @move_anime = true
  1778.                                                                 @action_end = false
  1779.                                                                 @action_end_cancel = false
  1780.                                                                 reset_position
  1781.                                                         end  
  1782.                                                         #--------------------------------------------------------------------------
  1783.                                                         # ● アクションをセット
  1784.                                                         #--------------------------------------------------------------------------
  1785.                                                         def set_action
  1786.                                                                 return if @battler.sv.effect_data == []
  1787.                                                                 weapon_anime if @battler.sv.effect_data[0][0] == "wp"
  1788.                                                                 move_anime if @battler.sv.effect_data[0][0] == "m_a"
  1789.                                                                 @battler.sv.effect_data.shift
  1790.                                                         end
  1791.                                                         #--------------------------------------------------------------------------
  1792.                                                         # ● 武器アニメ実行
  1793.                                                         #--------------------------------------------------------------------------
  1794.                                                         def weapon_anime
  1795.                                                                 @weapon_data = @battler.sv.effect_data[0].dup
  1796.                                                                 set_graphics
  1797.                                                                 set_ox
  1798.                                                                 set_weapon_move
  1799.                                                         end
  1800.                                                         #--------------------------------------------------------------------------
  1801.                                                         # ● アニメ移動実行
  1802.                                                         #--------------------------------------------------------------------------
  1803.                                                         def move_anime
  1804.                                                                 @move_data = @battler.sv.effect_data[0].dup
  1805.                                                                 # ターゲットを取得
  1806.                                                                 @target_battler = [@battler.sv.m_a_targets.shift]
  1807.                                                                 @target_battler = N03.get_targets(@move_data[3], @battler) if @move_data[3] < 0
  1808.                                                                 set_move
  1809.                                                                 return if @move_data[16] == ""
  1810.                                                                 weapon_data = N03::ACTION[@move_data[16]]
  1811.                                                                 return if weapon_data == nil
  1812.                                                                 @weapon_data = weapon_data.dup
  1813.                                                                 set_graphics
  1814.                                                                 set_ox
  1815.                                                                 set_weapon_move
  1816.                                                         end
  1817.                                                         #--------------------------------------------------------------------------
  1818.                                                         # ● 武器画像を取得
  1819.                                                         #--------------------------------------------------------------------------  
  1820.                                                         def set_graphics
  1821.                                                                 # 武器に依存しない画像設定がある場合
  1822.                                                                 if @weapon_data[13] != ""
  1823.                                                                         self.bitmap = Cache.character(@weapon_data[13]).dup
  1824.                                                                         @weapon_width = self.bitmap.width
  1825.                                                                         @weapon_height = self.bitmap.height
  1826.                                                                         return
  1827.                                                                 end
  1828.                                                                 # 武器を取得
  1829.                                                                 weapon = @battler.weapons[0]
  1830.                                                                 # 逆手装備を取得
  1831.                                                                 if @weapon_data[10]
  1832.                                                                         weapon = nil
  1833.                                                                         for armor in @battler.armors do break weapon = armor if armor.is_a?(RPG::Armor) && armor.etype_id == 1 end
  1834.                                                                                 weapon = @battler.weapons[1] if !weapon
  1835.                                                                         end  
  1836.                                                                         # 武器がなければ処理をキャンセル
  1837.                                                                         return if weapon == nil
  1838.                                                                         # インデックスを取得
  1839.                                                                         file_index = @weapon_data[12]
  1840.                                                                         # アイコンを利用するなら
  1841.                                                                         if @weapon_data[1] == 0
  1842.                                                                                 icon_index = weapon.icon_index
  1843.                                                                                 self.bitmap = Cache.system("Iconset" + file_index).dup
  1844.                                                                                 self.src_rect.set(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  1845.                                                                                 @weapon_width = @weapon_height = 24
  1846.                                                                                 # 独自画像指定
  1847.                                                                         else
  1848.                                                                                 file_name = @battler.sv.weapon_graphic(weapon.id, weapon.wtype_id) if weapon.is_a?(RPG::Weapon)
  1849.                                                                                 file_name = @battler.sv.shield_graphic(weapon.id, weapon.atype_id) if weapon.is_a?(RPG::Armor)
  1850.                                                                                 self.bitmap = Cache.character(file_name + file_index).dup
  1851.                                                                                 @weapon_width = self.bitmap.width
  1852.                                                                                 @weapon_height = self.bitmap.height
  1853.                                                                                 return if @weapon_data[1] == 1
  1854.                                                                                 # 2003仕様の武器アニメ
  1855.                                                                                 @weapon_width /= @battler.sv.max_pattern[0]
  1856.                                                                         end
  1857.                                                                 end
  1858.                                                                 #--------------------------------------------------------------------------
  1859.                                                                 # ● 画像の原点を取得
  1860.                                                                 #--------------------------------------------------------------------------  
  1861.                                                                 def set_ox
  1862.                                                                         # 反転時は設定を逆に
  1863.                                                                         if @mirror
  1864.                                                                                 case @weapon_data[6]
  1865.                                                                                 when 1 ; @weapon_data[6] = 2 # 左上→右上に
  1866.                                                                                 when 2 ; @weapon_data[6] = 1 # 右上→左上に
  1867.                                                                                 when 3 ; @weapon_data[6] = 4 # 左下→右下に
  1868.                                                                                 when 4 ; @weapon_data[6] = 3 # 右下→左下に
  1869.                                                                                 end
  1870.                                                                         end
  1871.                                                                         # 原点を設定
  1872.                                                                         case @weapon_data[6]
  1873.                                                                         when 0 # 中心
  1874.                                                                                 self.ox = @weapon_width / 2
  1875.                                                                                 self.oy = @weapon_height / 2
  1876.                                                                         when 1 # 左上
  1877.                                                                                 self.ox = 0
  1878.                                                                                 self.oy = 0
  1879.                                                                         when 2 # 右上
  1880.                                                                                 self.ox = @weapon_width
  1881.                                                                                 self.oy = 0
  1882.                                                                         when 3 # 左下
  1883.                                                                                 self.ox = 0
  1884.                                                                                 self.oy = @weapon_height
  1885.                                                                         when 4 # 右下
  1886.                                                                                 self.ox = @weapon_width
  1887.                                                                                 self.oy = @weapon_height
  1888.                                                                         when 5 # バトラーと同じ
  1889.                                                                                 self.ox = @weapon_width / 2
  1890.                                                                                 self.oy = @weapon_height
  1891.                                                                         end
  1892.                                                                 end  
  1893.                                                                 #--------------------------------------------------------------------------
  1894.                                                                 # ● バトラーの座標を取得
  1895.                                                                 #--------------------------------------------------------------------------  
  1896.                                                                 def set_battler_position
  1897.                                                                         @position_x = @battler.sv.x + @weapon_data[3][0] * N03.mirror_num(@mirror) * 100
  1898.                                                                         @position_y = (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.c - @battler.sv.oy_adjust) + @weapon_data[3][1] * 100
  1899.                                                                         reset_position
  1900.                                                                 end
  1901.                                                                 #--------------------------------------------------------------------------
  1902.                                                                 # ● 座標を初期化
  1903.                                                                 #--------------------------------------------------------------------------  
  1904.                                                                 def reset_position
  1905.                                                                         @real_x = @position_x / 100
  1906.                                                                         @real_y = @position_y / 100
  1907.                                                                         @real_zoom_x = 1
  1908.                                                                         @real_zoom_y = 1
  1909.                                                                 end
  1910.                                                                 #--------------------------------------------------------------------------
  1911.                                                                 # ● 戦闘アニメを表示
  1912.                                                                 #--------------------------------------------------------------------------  
  1913.                                                                 def set_animation(anime_id)
  1914.                                                                         return if $data_animations[anime_id] == nil
  1915.                                                                         @anime_position = $data_animations[anime_id].position
  1916.                                                                         @horming = true
  1917.                                                                         @horming = false if @anime_position == 3
  1918.                                                                         @anime_camera_zoom = true
  1919.                                                                         @anime_no_mirror = false
  1920.                                                                         start_animation($data_animations[anime_id], @mirror)
  1921.                                                                         timings = $data_animations[anime_id].timings
  1922.                                                                 end
  1923.                                                                 #--------------------------------------------------------------------------
  1924.                                                                 # ● ヒット時の戦闘アニメ実行
  1925.                                                                 #--------------------------------------------------------------------------  
  1926.                                                                 def set_hit_animation(position_data, hit_anime_id, target)
  1927.                                                                         return if $data_animations[hit_anime_id] == nil
  1928.                                                                         @real_x = position_data[0]
  1929.                                                                         @real_y = position_data[1]
  1930.                                                                         @position_x = position_data[0] * 100
  1931.                                                                         @position_y = position_data[1] * 100
  1932.                                                                         self.z = position_data[2]
  1933.                                                                         @z_plus = 1000
  1934.                                                                         @action_end = false
  1935.                                                                         @horming = true
  1936.                                                                         set_animation(hit_anime_id)
  1937.                                                                         @anime_time = $data_animations[hit_anime_id].frame_max * 4
  1938.                                                                         @timing_targets = [target]
  1939.                                                                         @move_time = @hit_anime_id = 0
  1940.                                                                         @weapon_data = []
  1941.                                                                 end
  1942.                                                                 #--------------------------------------------------------------------------
  1943.                                                                 # ● タイミングバトラー追加
  1944.                                                                 #--------------------------------------------------------------------------  
  1945.                                                                 def timing_battler_set(target)
  1946.                                                                         @timing_targets.push(target)
  1947.                                                                 end
  1948.                                                                 #--------------------------------------------------------------------------
  1949.                                                                 # ● 武器の動きを取得
  1950.                                                                 #--------------------------------------------------------------------------  
  1951.                                                                 def set_weapon_move
  1952.                                                                         # 開始位置を取得
  1953.                                                                         set_battler_position if @move_time == 0
  1954.                                                                         @z_plus = 50 if @z_plus == 0 && @weapon_data[9]
  1955.                                                                         self.z = @battler.sv.z + @z_plus
  1956.                                                                         # 反転処理
  1957.                                                                         @mirror = !@mirror if @weapon_data[7]
  1958.                                                                         self.mirror = @mirror
  1959.                                                                         # 更新パターンをセット
  1960.                                                                         set_pattern
  1961.                                                                         @max_pattern = 2 if @max_pattern == 1
  1962.                                                                         # 動きを計算
  1963.                                                                         @weapon_move_data = []
  1964.                                                                         @weapon_angle_data = []
  1965.                                                                         @weapon_zoom_data = []
  1966.                                                                         num = N03.mirror_num(@mirror)
  1967.                                                                         for i in 0...@max_pattern
  1968.                                                                                 move_data_x = @weapon_data[2][0] * num * 100 * i / (@max_pattern - 1)
  1969.                                                                                 move_data_y = @weapon_data[2][1] * 100 * i / (@max_pattern - 1)
  1970.                                                                                 move_angle = @weapon_data[4] * num + (@weapon_data[5] * num - @weapon_data[4] * num) * i / (@max_pattern - 1)
  1971.                                                                                 move_zoom_x = 1 + (@weapon_data[8][0] - 1) * i / (@max_pattern - 1)
  1972.                                                                                 move_zoom_y = 1 + (@weapon_data[8][1] - 1) * i / (@max_pattern - 1)
  1973.                                                                                 @weapon_move_data.push([move_data_x, move_data_y])
  1974.                                                                                 @weapon_angle_data.push(move_angle)
  1975.                                                                                 @weapon_zoom_data.push([move_zoom_x, move_zoom_y])
  1976.                                                                         end
  1977.                                                                 end  
  1978.                                                                 #--------------------------------------------------------------------------
  1979.                                                                 # ● 更新パターン
  1980.                                                                 #--------------------------------------------------------------------------
  1981.                                                                 def set_pattern
  1982.                                                                         if @weapon_data[11] == -1
  1983.                                                                                 return @max_pattern = @battler.sv.max_pattern[0] if @battler.sv.pattern_type != 0
  1984.                                                                                 @count = @battler.sv.pattern_time
  1985.                                                                                 @max_count = @battler.sv.pattern_time
  1986.                                                                                 @max_pattern = @battler.sv.max_pattern[0]
  1987.                                                                                 @repeat = false
  1988.                                                                         else
  1989.                                                                                 @count = @weapon_data[11][0]
  1990.                                                                                 @max_count = @weapon_data[11][0]
  1991.                                                                                 @max_pattern = @weapon_data[11][1]
  1992.                                                                                 @repeat = @weapon_data[11][2]
  1993.                                                                         end
  1994.                                                                         @pattern = 0
  1995.                                                                 end
  1996.                                                                 #--------------------------------------------------------------------------
  1997.                                                                 # ● 移動実行
  1998.                                                                 #--------------------------------------------------------------------------
  1999.                                                                 def set_move
  2000.                                                                         # 戦闘アニメを取得
  2001.                                                                         set_animation(@move_data[1][0]) if $data_animations[@move_data[1][0]] != nil && $data_animations[@move_data[1][0]].position != 3
  2002.                                                                         @anime_camera_zoom = @move_data[13]
  2003.                                                                         @loop = @move_data[14]
  2004.                                                                         @loop = false if @move_data[1][0] == 0
  2005.                                                                         @anime_no_mirror = @move_data[15]
  2006.                                                                         @se_flag = @move_data[17]
  2007.                                                                         # 開始位置を取得
  2008.                                                                         start_position
  2009.                                                                         @z_plus = 1000 if @move_data[9]
  2010.                                                                         # ターゲットバトラー画像にこのアニメのSEとタイミング設定を反映させる
  2011.                                                                         @timing_targets = @target_battler
  2012.                                                                         # 座標計算
  2013.                                                                         @move_x = @move_data[5][0] * 100 * N03.mirror_num(@mirror)
  2014.                                                                         @move_y = @move_data[5][1] * 100
  2015.                                                                         # 時間計算か速度計算か
  2016.                                                                         @distanse_move = true if @move_data[6] > 0
  2017.                                                                         @move_time = @move_data[6].abs
  2018.                                                                         # 時間0の場合、アニメが設定されていればアニメ表示時間に合わせる
  2019.                                                                         if @move_time == 0
  2020.                                                                                 @move_time = $data_animations[@move_data[1][0]].frame_max * 4 if $data_animations[@move_data[1][0]]
  2021.                                                                                 @move_time = 1 if !$data_animations[@move_data[1][0]]
  2022.                                                                                 @distanse_move = false
  2023.                                                                         end
  2024.                                                                         # 貫通タイプの場合
  2025.                                                                         @through = true if @move_data[7] == 1
  2026.                                                                         @auto_through_flag = false
  2027.                                                                         @auto_through_flag = true if @move_data[7] == 0
  2028.                                                                         # ターゲット座標計算
  2029.                                                                         if @target_battler == nil
  2030.                                                                                 @target_x = @move_x * 100
  2031.                                                                                 @target_x = (Graphics.width - @move_x) * 100 if @mirror
  2032.                                                                                 @target_y = @move_y * 100
  2033.                                                                         else
  2034.                                                                                 move_data_set
  2035.                                                                         end
  2036.                                                                         # ターゲットに到達するまでの時間を計算
  2037.                                                                         @move_time = distanse_calculation(@move_time, @target_x, @target_y)
  2038.                                                                         # 円軌道計算
  2039.                                                                         orbit
  2040.                                                                         # バトラーのウエイト設定
  2041.                                                                         @battler.sv.wait = @move_time - 1 if @move_data[10][0]
  2042.                                                                         @move_horming = @move_data[12]
  2043.                                                                 end  
  2044.                                                                 #--------------------------------------------------------------------------
  2045.                                                                 # ● 速度を時間に変換
  2046.                                                                 #--------------------------------------------------------------------------
  2047.                                                                 def distanse_calculation(time, target_x, target_y)
  2048.                                                                         return time if !@distanse_move
  2049.                                                                         distanse_x = @position_x - @target_x
  2050.                                                                         distanse_x = @target_x - @position_x if @target_x > @position_x
  2051.                                                                         distanse_y = @position_y - @target_y
  2052.                                                                         distanse_y = @target_y - @position_y if @target_y > @position_y
  2053.                                                                         distanse = [distanse_x, distanse_y].max
  2054.                                                                         return distanse / (time * 100) + 1
  2055.                                                                 end
  2056.                                                                 #--------------------------------------------------------------------------
  2057.                                                                 # ● 移動目標の更新
  2058.                                                                 #--------------------------------------------------------------------------
  2059.                                                                 def move_data_set
  2060.                                                                         return if @target_battler == nil
  2061.                                                                         position = N03.get_targets_position(@target_battler, true, @anime_position)
  2062.                                                                         @target_x = position[0] + @move_x
  2063.                                                                         @target_y = position[1] - position[2] + @move_y
  2064.                                                                 end
  2065.                                                                 #--------------------------------------------------------------------------
  2066.                                                                 # ● 開始位置を計算
  2067.                                                                 #--------------------------------------------------------------------------
  2068.                                                                 def start_position
  2069.                                                                         starter = [@battler.sv.m_a_starter.shift]
  2070.                                                                         starter = N03.get_targets(@move_data[2], @battler) if @move_data[2] < 0
  2071.                                                                         position = [0, 0]
  2072.                                                                         position = N03.get_targets_position(starter, true, @anime_position) if starter != nil
  2073.                                                                         @position_x = position[0] + @move_data[4][0] * 100
  2074.                                                                         @position_y = position[1] + position[2] + @move_data[4][1] * 100
  2075.                                                                         @position_z = @position_y
  2076.                                                                 end  
  2077.                                                                 #--------------------------------------------------------------------------
  2078.                                                                 # ● 円軌道計算
  2079.                                                                 #--------------------------------------------------------------------------
  2080.                                                                 def orbit
  2081.                                                                         orbit_data = @move_data[8].dup
  2082.                                                                         orbit_data[0] *= 100
  2083.                                                                         orbit_data[1] *= 100
  2084.                                                                         orbit_d = []
  2085.                                                                         for i in 0...@move_time / 2
  2086.                                                                                 @orbit[i] = orbit_data[0]
  2087.                                                                                 orbit_data[0] /= 2
  2088.                                                                                 orbit_d[i] = orbit_data[1]
  2089.                                                                                 orbit_data[1] /= 2
  2090.                                                                         end
  2091.                                                                         @orbit = @orbit + orbit_d.reverse!
  2092.                                                                         @orbit.reverse!
  2093.                                                                 end  
  2094.                                                                 #--------------------------------------------------------------------------
  2095.                                                                 # ● フレーム更新
  2096.                                                                 #--------------------------------------------------------------------------
  2097.                                                                 def update
  2098.                                                                         update_hit_anime if @anime_time != 0
  2099.                                                                         update_move if @move_time != 0
  2100.                                                                         update_weapon_move if @weapon_data != []
  2101.                                                                         update_position
  2102.                                                                         update_color
  2103.                                                                         self.visible = @battler.sv.weapon_visible
  2104.                                                                         super
  2105.                                                                 end
  2106.                                                                 #--------------------------------------------------------------------------
  2107.                                                                 # ● ヒット時の戦闘アニメ
  2108.                                                                 #--------------------------------------------------------------------------
  2109.                                                                 def update_hit_anime
  2110.                                                                         @anime_time -= 1
  2111.                                                                         @action_end = true if @anime_time == 0
  2112.                                                                 end
  2113.                                                                 #--------------------------------------------------------------------------
  2114.                                                                 # ● 移動の更新
  2115.                                                                 #--------------------------------------------------------------------------
  2116.                                                                 def update_move
  2117.                                                                         move_data_set if @move_horming && !@hit_position
  2118.                                                                         through_set(@move_time, @target_x, @target_y) if @move_time == 1 && !@hit_position
  2119.                                                                         @o += @orbit[@move_time - 1] if @orbit[@move_time - 1] != nil
  2120.                                                                         @position_x = (@position_x * (@move_time - 1) + @target_x) / @move_time
  2121.                                                                         @position_y = (@position_y * (@move_time - 1) + @target_y) / @move_time + @o
  2122.                                                                         reset_position
  2123.                                                                         set_animation(@move_data[1][0]) if @loop && !animation?
  2124.                                                                         @move_time -= 1
  2125.                                                                         return if @move_time != 0
  2126.                                                                         @action_end = true if !@action_end_cancel
  2127.                                                                 end
  2128.                                                                 #--------------------------------------------------------------------------
  2129.                                                                 # ● 武器の動きを更新
  2130.                                                                 #--------------------------------------------------------------------------
  2131.                                                                 def update_weapon_move
  2132.                                                                         pattern = update_pattern
  2133.                                                                         set_battler_position if @move_time == 0 && !@action_end_cancel
  2134.                                                                         @real_x = @position_x / 100 + @weapon_move_data[pattern][0] / 100
  2135.                                                                         @real_y = @position_y / 100 + @weapon_move_data[pattern][1] / 100
  2136.                                                                         @real_zoom_x = @weapon_zoom_data[pattern][0]
  2137.                                                                         @real_zoom_y = @weapon_zoom_data[pattern][1]
  2138.                                                                         self.angle = @weapon_angle_data[pattern]
  2139.                                                                         self.src_rect.set(@weapon_width * pattern, 0, @weapon_width, @weapon_height) if @weapon_data[1] == 2
  2140.                                                                 end
  2141.                                                                 #--------------------------------------------------------------------------
  2142.                                                                 # ● パターンを更新
  2143.                                                                 #--------------------------------------------------------------------------
  2144.                                                                 def update_pattern
  2145.                                                                         return @battler.sv.pattern_w if @count == nil
  2146.                                                                         @count -= 1
  2147.                                                                         return @pattern if @count != 0
  2148.                                                                         @count = @max_count
  2149.                                                                         @pattern += 1
  2150.                                                                         if !@repeat && @pattern == @max_pattern
  2151.                                                                                 @pattern = @max_pattern - 1
  2152.                                                                         elsif @pattern == @max_pattern
  2153.                                                                                 @pattern = 0
  2154.                                                                         end
  2155.                                                                         return @pattern
  2156.                                                                 end
  2157.                                                                 #--------------------------------------------------------------------------
  2158.                                                                 # ● 座標を更新
  2159.                                                                 #--------------------------------------------------------------------------
  2160.                                                                 def update_position
  2161.                                                                         self.x = (@real_x - $sv_camera.x) * $sv_camera.convert / 1000
  2162.                                                                         self.y = (@real_y - $sv_camera.y) * $sv_camera.convert / 1000
  2163.                                                                         self.x += $sv_camera.sx / 100 unless @battler.sv.h != 0 && @weapon_data != []
  2164.                                                                         self.y += $sv_camera.sy / 100 unless @battler.sv.h != 0 && @weapon_data != []
  2165.                                                                         self.z = @battler.sv.z + @z_plus - 10
  2166.                                                                         self.zoom_x = @real_zoom_x * $sv_camera.zoom
  2167.                                                                         self.zoom_y = @real_zoom_y * $sv_camera.zoom
  2168.                                                                         self.opacity = @battler.sv.opacity if @battler.sv.opacity_data[4]
  2169.                                                                 end
  2170.                                                                 #--------------------------------------------------------------------------
  2171.                                                                 # ● 貫通の処理
  2172.                                                                 #--------------------------------------------------------------------------
  2173.                                                                 def through_set(time, target_x, target_y)
  2174.                                                                         @hit_anime_id = N03.get_attack_anime_id(@move_data[1][1], @battler)
  2175.                                                                         @battler.sv.wait = N03.get_anime_time(@hit_anime_id) if @move_data[10][1]
  2176.                                                                         moving_x = (target_x / 100 - @position_x / 100) / time
  2177.                                                                         moving_y = (target_y / 100 - @position_y / 100) / time
  2178.                                                                         goal_x = $sv_camera.max_left - 100 if moving_x < 0
  2179.                                                                         goal_x = Graphics.width + $sv_camera.max_right + 100 if moving_x > 0
  2180.                                                                         goal_y = $sv_camera.max_top - 100 if moving_y < 0
  2181.                                                                         goal_y = Graphics.height + $sv_camera.max_bottom + 100 if moving_y > 0
  2182.                                                                         if goal_x == nil &&  goal_y == nil
  2183.                                                                                 time = 0
  2184.                                                                                 reset_position
  2185.                                                                         else
  2186.                                                                                 time = move_calculation(moving_x, moving_y, goal_x, goal_y)
  2187.                                                                         end
  2188.                                                                         target_x = @position_x + moving_x * time * 100
  2189.                                                                         target_y = @position_y + moving_y * time * 100
  2190.                                                                         @pre_data = [time, target_x, target_y]
  2191.                                                                         @battler.sv.m_a_data.push([@move_data[11], @target_battler, @index, @auto_through_flag, []])
  2192.                                                                         @action_end_cancel = true
  2193.                                                                         @hit_position = [@real_x, @real_y, self.z]
  2194.                                                                 end  
  2195.                                                                 #--------------------------------------------------------------------------
  2196.                                                                 # ● 到達時間試算
  2197.                                                                 #--------------------------------------------------------------------------
  2198.                                                                 def move_calculation(moving_x, moving_y, goal_x, goal_y)
  2199.                                                                         move_x = @position_x / 100
  2200.                                                                         move_y = @position_y / 100
  2201.                                                                         time = 0
  2202.                                                                         loop do
  2203.                                                                                 move_x += moving_x
  2204.                                                                                 move_y += moving_y
  2205.                                                                                 time += 1
  2206.                                                                                 return time if moving_x < 0 && move_x < goal_x
  2207.                                                                                 return time if moving_x > 0 && move_x > goal_x
  2208.                                                                                 return time if moving_y < 0 && move_y < goal_y
  2209.                                                                                 return time if moving_y > 0 && move_y > goal_y
  2210.                                                                         end
  2211.                                                                 end   
  2212.                                                                 #--------------------------------------------------------------------------
  2213.                                                                 # ● ミス時に消える処理から貫通処理に変換
  2214.                                                                 #--------------------------------------------------------------------------
  2215.                                                                 def through_change
  2216.                                                                         @action_end_cancel = false
  2217.                                                                         @through = true
  2218.                                                                         @move_time = @pre_data[0]
  2219.                                                                         @target_x = @pre_data[1]
  2220.                                                                         @target_y = @pre_data[2]
  2221.                                                                         @pre_data = nil
  2222.                                                                 end  
  2223.                                                                 #--------------------------------------------------------------------------
  2224.                                                                 # ● SE とフラッシュのタイミング処理
  2225.                                                                 #--------------------------------------------------------------------------
  2226.                                                                 def animation_process_timing(timing)
  2227.                                                                         return if !@timing_targets
  2228.                                                                         se_flag = true
  2229.                                                                         se_flag = @se_flag if @se_flag != nil
  2230.                                                                         for target in @timing_targets
  2231.                                                                                 target.sv.timing.push([se_flag, timing.dup])
  2232.                                                                                 se_flag = false if @animation.position == 3
  2233.                                                                         end  
  2234.                                                                 end
  2235.                                                                 #--------------------------------------------------------------------------
  2236.                                                                 # ● 色調の更新
  2237.                                                                 #--------------------------------------------------------------------------
  2238.                                                                 def update_color
  2239.                                                                         return if @battler.sv.color == []
  2240.                                                                         self.color.set(@battler.sv.color[0], @battler.sv.color[1], @battler.sv.color[2], @battler.sv.color[3])
  2241.                                                                 end
  2242.                                                                 #--------------------------------------------------------------------------
  2243.                                                                 # ● 解放
  2244.                                                                 #--------------------------------------------------------------------------
  2245.                                                                 def dispose
  2246.                                                                         super
  2247.                                                                         self.bitmap.dispose if self.bitmap != nil
  2248.                                                                 end
  2249.                                                         end
  2250.                                                         #==============================================================================
  2251.                                                         # ■ Sprite_Battle_Picture
  2252.                                                         #------------------------------------------------------------------------------
  2253.                                                         #  ピクチャ表示用のスプライトです。
  2254.                                                         #==============================================================================
  2255.                                                         class Sprite_Battle_Picture < Sprite
  2256.                                                                 #--------------------------------------------------------------------------
  2257.                                                                 # ● 公開インスタンス変数 
  2258.                                                                 #--------------------------------------------------------------------------
  2259.                                                                 attr_accessor   :action_end           # 終了フラグ
  2260.                                                                 #--------------------------------------------------------------------------
  2261.                                                                 # ● オブジェクト初期化
  2262.                                                                 #--------------------------------------------------------------------------
  2263.                                                                 def initialize(viewport = nil)
  2264.                                                                         super(viewport)
  2265.                                                                         @action_end = false
  2266.                                                                         self.ox = 0
  2267.                                                                 end
  2268.                                                                 #--------------------------------------------------------------------------
  2269.                                                                 # ● セット
  2270.                                                                 #--------------------------------------------------------------------------
  2271.                                                                 def set(battler)
  2272.                                                                         @battler = battler
  2273.                                                                         @data = @battler.sv.effect_data.shift
  2274.                                                                         @time = @data[4]
  2275.                                                                         @mirror = $sv_camera.mirror
  2276.                                                                         @mirror = false if !@data[8]
  2277.                                                                         self.opacity = @data[6][0]
  2278.                                                                         @s_x = @data[2][0] if @data[2] != []
  2279.                                                                         @s_x = Graphics.width - @data[2][0]  if @data[2] != [] && @mirror
  2280.                                                                         @s_y = @data[2][1] if @data[2] != []
  2281.                                                                         @e_x = @data[3][0] if @data[3] != []
  2282.                                                                         @e_x = Graphics.width - @data[3][0] if @data[3] != [] && @mirror
  2283.                                                                         @e_y = @data[3][1] if @data[3] != []
  2284.                                                                         @s_x = self.x if @data[2] == []
  2285.                                                                         @s_y = self.y if @data[2] == []
  2286.                                                                         @e_x = self.x if @data[3] == []
  2287.                                                                         @e_y = self.y if @data[3] == []
  2288.                                                                         self.x = @s_x
  2289.                                                                         self.y = @s_y
  2290.                                                                         return @action_end = true if @time == 0
  2291.                                                                         @move_x = (@e_x * 1.0 - @s_x) / @time
  2292.                                                                         @move_y = (@e_y * 1.0 - @s_y) / @time
  2293.                                                                         self.z = @data[5]
  2294.                                                                         return set_plane(battler) if @data[7] != []
  2295.                                                                         self.bitmap = Cache.picture(@data[9]) if !bitmap or @data[9] != ""
  2296.                                                                         return @action_end = true if !bitmap
  2297.                                                                         self.mirror = @mirror
  2298.                                                                         self.ox = self.bitmap.width if @mirror
  2299.                                                                 end
  2300.                                                                 #--------------------------------------------------------------------------
  2301.                                                                 # ● プレーン移行
  2302.                                                                 #--------------------------------------------------------------------------
  2303.                                                                 def set_plane(battler)
  2304.                                                                         @viewport = Viewport.new(@data[2][0],@data[2][1],@data[7][0],@data[7][1]) if !@viewport
  2305.                                                                         viewport = @viewport
  2306.                                                                         @plane = Plane.new(viewport) if !@plane
  2307.                                                                         @plane.bitmap = Cache.picture(@data[9]) if !@plane.bitmap or @data[9] != ""
  2308.                                                                         return @action_end = true if !@plane.bitmap
  2309.                                                                         @plane.ox = @data[7][0]
  2310.                                                                         @plane.oy = @data[7][1]
  2311.                                                                         @plane.opacity = @data[6][0]
  2312.                                                                         @move_x = @remain_move[0] if @data[2] == @data[3]
  2313.                                                                         @move_y = @remain_move[1] if @data[2] == @data[3]
  2314.                                                                         @remain_move = [@move_x, @move_y]
  2315.                                                                 end
  2316.                                                                 #--------------------------------------------------------------------------
  2317.                                                                 # ● フレーム更新
  2318.                                                                 #--------------------------------------------------------------------------
  2319.                                                                 def update
  2320.                                                                         @action_end = true if !@battler.sv.picture
  2321.                                                                         return if @time == 0
  2322.                                                                         return if @action_end
  2323.                                                                         @time -= 1
  2324.                                                                         return plane_update if @plane
  2325.                                                                         super
  2326.                                                                         self.x += @move_x
  2327.                                                                         self.y += @move_y
  2328.                                                                         self.opacity += @data[6][1]
  2329.                                                                         return if @time != 1
  2330.                                                                         self.x = @e_x
  2331.                                                                         self.y = @e_y
  2332.                                                                         @time = 0
  2333.                                                                 end
  2334.                                                                 #--------------------------------------------------------------------------
  2335.                                                                 # ● フレーム更新
  2336.                                                                 #--------------------------------------------------------------------------
  2337.                                                                 def plane_update
  2338.                                                                         @plane.ox += @move_x
  2339.                                                                         @plane.oy += @move_y
  2340.                                                                         @plane.opacity += @data[6][1]
  2341.                                                                         @time = @data[4] if @time == 0
  2342.                                                                 end
  2343.                                                                 #--------------------------------------------------------------------------
  2344.                                                                 # ● 解放
  2345.                                                                 #--------------------------------------------------------------------------
  2346.                                                                 def dispose
  2347.                                                                         bitmap.dispose if bitmap
  2348.                                                                         @plane.dispose if @plane
  2349.                                                                         @viewport.dispose if @viewport
  2350.                                                                         super
  2351.                                                                 end
  2352.                                                         end
  2353.                                                         #==============================================================================
  2354.                                                         # ■ Sprite_Back_Picture
  2355.                                                         #------------------------------------------------------------------------------
  2356.                                                         #  周期ピクチャ用のスプライトです。
  2357.                                                         #==============================================================================
  2358.                                                         class Sprite_Back_Picture < Plane
  2359.                                                                 #--------------------------------------------------------------------------
  2360.                                                                 # ● 公開インスタンス変数 
  2361.                                                                 #--------------------------------------------------------------------------
  2362.                                                                 attr_accessor   :action_end           # 終了フラグ
  2363.                                                                 #--------------------------------------------------------------------------
  2364.                                                                 # ● オブジェクト初期化
  2365.                                                                 #--------------------------------------------------------------------------
  2366.                                                                 def initialize(viewport = nil, index)
  2367.                                                                         super(viewport)
  2368.                                                                         @index = index
  2369.                                                                         @real_x = 0
  2370.                                                                         @real_y = 0
  2371.                                                                         @real_opacity = 0
  2372.                                                                         @move_x = 0
  2373.                                                                         @move_y = 0
  2374.                                                                         @move_opacity = 0
  2375.                                                                         @time = 0
  2376.                                                                         @switche = 0
  2377.                                                                         @action_end = false
  2378.                                                                 end
  2379.                                                                 #--------------------------------------------------------------------------
  2380.                                                                 # ● セットアップ
  2381.                                                                 #--------------------------------------------------------------------------
  2382.                                                                 def setup(data)
  2383.                                                                         self.bitmap = Cache.picture(data[9])
  2384.                                                                         self.z = data[6]
  2385.                                                                         @switche = data[1]
  2386.                                                                         mirror = $sv_camera.mirror
  2387.                                                                         mirror = false if !data[8]
  2388.                                                                         @move_x = data[3][0]
  2389.                                                                         @move_x *= -1 if mirror
  2390.                                                                         @move_y = data[3][1]
  2391.                                                                         @time = data[4]
  2392.                                                                         @time = -1 if @time == 0
  2393.                                                                         @real_opacity = (data[5][0] + 1) * 100
  2394.                                                                         @move_opacity = data[5][1]
  2395.                                                                         @start_opacity = data[5][0]
  2396.                                                                         @shake_ok = data[7]
  2397.                                                                 end
  2398.                                                                 #--------------------------------------------------------------------------
  2399.                                                                 # ● フレーム更新
  2400.                                                                 #--------------------------------------------------------------------------
  2401.                                                                 def update
  2402.                                                                         update_picture if @time != 0
  2403.                                                                         self.ox = $sv_camera.x - @real_x
  2404.                                                                         self.oy = $sv_camera.y - @real_y
  2405.                                                                         if @shake_ok
  2406.                                                                                 self.ox -= $sv_camera.sx / 100
  2407.                                                                                 self.oy -= $sv_camera.sy / 100
  2408.                                                                         end
  2409.                                                                         self.ox *= $sv_camera.zoom
  2410.                                                                         self.oy *= $sv_camera.zoom
  2411.                                                                         self.zoom_x = @zoom_x * $sv_camera.zoom
  2412.                                                                         self.zoom_y = @zoom_y * $sv_camera.zoom
  2413.                                                                         self.opacity = @real_opacity / 100
  2414.                                                                         @move_opacity *= -1 if self.opacity == 255 or self.opacity <= @start_opacity
  2415.                                                                         @switche
  2416.                                                                         @action_end = true if @switche > 0 && !$game_switches[@switche]
  2417.                                                                         @action_end = true if @switche < 0 && !$sv_camera.switches[@switche.abs]
  2418.                                                                 end
  2419.                                                                 #--------------------------------------------------------------------------
  2420.                                                                 # ● ピクチャの更新
  2421.                                                                 #--------------------------------------------------------------------------
  2422.                                                                 def update_picture
  2423.                                                                         @real_x += @move_x / 100
  2424.                                                                         @real_y += @move_y / 100
  2425.                                                                         @real_x = 0 if @real_x >= self.bitmap.width or @real_x <= -self.bitmap.width
  2426.                                                                         @real_y = 0 if @real_y >= self.bitmap.height or @real_y <= -self.bitmap.height
  2427.                                                                         @zoom_x = 1
  2428.                                                                         @zoom_y = 1
  2429.                                                                         @real_opacity += @move_opacity
  2430.                                                                         @time -= 1
  2431.                                                                         @time = -1 if @time < -100
  2432.                                                                 end
  2433.                                                         end
  2434.                                                         #==============================================================================
  2435.                                                         # ■ Sprite_Back_Picture
  2436.                                                         #------------------------------------------------------------------------------
  2437.                                                         #  ダメージ表示のスプライトです。
  2438.                                                         #==============================================================================
  2439.                                                         class Sprite_Damage < Sprite
  2440.                                                                 #--------------------------------------------------------------------------
  2441.                                                                 # ● 公開インスタンス変数 
  2442.                                                                 #--------------------------------------------------------------------------
  2443.                                                                 attr_reader   :action_end                  # POP終了フラグ
  2444.                                                                 #--------------------------------------------------------------------------
  2445.                                                                 # ● オブジェクト初期化
  2446.                                                                 #--------------------------------------------------------------------------
  2447.                                                                 def initialize(viewport = nil, battler)
  2448.                                                                         super(viewport)
  2449.                                                                         @battler = battler
  2450.                                                                         @time = 0
  2451.                                                                         return @action_end = true if !@battler
  2452.                                                                         @direction = -1
  2453.                                                                         @direction *= -1 if @battler.actor?
  2454.                                                                         @direction *= -1 if $sv_camera.mirror
  2455.                                                                         set_state
  2456.                                                                         set_damage
  2457.                                                                         update
  2458.                                                                 end
  2459.                                                                 #--------------------------------------------------------------------------
  2460.                                                                 # ● ステート表示
  2461.                                                                 #--------------------------------------------------------------------------
  2462.                                                                 def set_state
  2463.                                                                         return if !N03::STATE_POP
  2464.                                                                         states = @battler.result.added_state_objects
  2465.                                                                         states.delete($data_states[@battler.death_state_id]) if @battler.result.hp_damage != 0
  2466.                                                                         return if states == []
  2467.                                                                         return if @battler.sv.add_state == @battler.result.added_state_objects
  2468.                                                                         @battler.sv.add_state = states.dup
  2469.                                                                         @st = []
  2470.                                                                         @st_base = []
  2471.                                                                         for i in 0...states.size
  2472.                                                                                 @st[i] = Sprite.new
  2473.                                                                                 bitmap_state(@st[i], states[i])
  2474.                                                                                 @st_base[i] = []
  2475.                                                                                 @st_base[i][0] = @direction * (-20 + 5 * i) + @battler.sv.x / 100
  2476.                                                                                 @st_base[i][1] = -40 - @state_height * i + (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.oy_adjust)/ 100
  2477.                                                                                 @st[i].z = 1000 + i
  2478.                                                                                 @st[i].opacity = 0
  2479.                                                                         end
  2480.                                                                         @time = @pop_time = 80
  2481.                                                                 end   
  2482.                                                                 #--------------------------------------------------------------------------
  2483.                                                                 # ● ステート画像
  2484.                                                                 #--------------------------------------------------------------------------
  2485.                                                                 def bitmap_state(state, state_object)
  2486.                                                                         name = state_object.name
  2487.                                                                         state.bitmap = Cache.system("Iconset").dup
  2488.                                                                         state.src_rect.set(state_object.icon_index % 16 * 24, state_object.icon_index / 16 * 24, 24, 24)
  2489.                                                                         @state_height = 24
  2490.                                                                 end
  2491.                                                                 #--------------------------------------------------------------------------
  2492.                                                                 # ● ダメージ表示
  2493.                                                                 #--------------------------------------------------------------------------
  2494.                                                                 def hit_count
  2495.                                                                         for i in [email]0...@battler.sv.hit.size[/email]
  2496.                                                                                 if @battler.sv.hit[i] == nil
  2497.                                                                                         @hit = i
  2498.                                                                                         return @battler.sv.hit[i] = @hit
  2499.                                                                                 end
  2500.                                                                         end
  2501.                                                                         @hit = @battler.sv.hit.size
  2502.                                                                         @battler.sv.hit.push(@hit)
  2503.                                                                 end  
  2504.                                                                 #--------------------------------------------------------------------------
  2505.                                                                 # ● ダメージ表示
  2506.                                                                 #--------------------------------------------------------------------------
  2507.                                                                 def set_damage
  2508.                                                                         return @action_end = true if !N03::DAMAGE_POP
  2509.                                                                         damage = @battler.result.hp_damage if @battler.result.hp_damage != 0
  2510.                                                                         damage = @battler.result.hp_drain  if @battler.result.hp_drain  != 0
  2511.                                                                         damage = @battler.result.mp_damage if @battler.result.mp_damage != 0
  2512.                                                                         damage = @battler.result.mp_drain  if @battler.result.mp_drain  != 0
  2513.                                                                         damage = @battler.result.tp_damage if @battler.result.tp_damage != 0
  2514.                                                                         if !damage or damage == 0
  2515.                                                                                 @action_end = true if @st == nil
  2516.                                                                                 return # ステートだけPOPする設定を考慮して@action_endは返さない
  2517.                                                                         end
  2518.                                                                         hit_count
  2519.                                                                         #@hit = @battler.sv.hit
  2520.                                                                         #@battler.sv.hit += 1 if damage != 0
  2521.                                                                         file = N03::DAMAGE_PLUS if damage > 0
  2522.                                                                         file = N03::DAMAGE_MINUS if damage < 0
  2523.                                                                         add_file = N03::DAMAGE_MP if @battler.result.mp_damage != 0
  2524.                                                                         add_file = N03::DAMAGE_TP if @battler.result.tp_damage != 0
  2525.                                                                         adjust_x = N03::DAMAGE_ADJUST
  2526.                                                                         @num = []
  2527.                                                                         @num_base = []
  2528.                                                                         damage = damage.abs
  2529.                                                                         max_num = damage.to_s.size
  2530.                                                                         max_num += 1 if add_file != nil
  2531.                                                                         for i in 0...max_num
  2532.                                                                                 @num[i] = Sprite.new
  2533.                                                                                 if add_file != nil && i == max_num - 1
  2534.                                                                                         @num[i].bitmap = Cache.system(add_file)
  2535.                                                                                         cw = (damage % (10 * 10 ** i))/(10 ** i)
  2536.                                                                                         sw = 0 if sw == nil
  2537.                                                                                 else
  2538.                                                                                         @num[i].bitmap = Cache.system(file)
  2539.                                                                                         cw = (damage % (10 * 10 ** i))/(10 ** i)
  2540.                                                                                         sw = @num[i].bitmap.width / 10
  2541.                                                                                         @num[i].src_rect.set(cw * sw, 0, sw, @num[i].bitmap.height)
  2542.                                                                                 end
  2543.                                                                                 @num_base[i] = []
  2544.                                                                                 @num_base[i][0] = (sw + adjust_x) * i * -1 + (@battler.sv.x / 100)
  2545.                                                                                 @num_base[i][1] =  -(@num[i].bitmap.height / 3) - i * 2 - @hit * 2 + (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.oy_adjust)/ 100
  2546.                                                                                 @num_base[i][0] -= @num[i].bitmap.width / 2 - adjust_x if add_file != nil && i == max_num - 1
  2547.                                                                                 @num[i].z = 1000 + i + @hit * 10
  2548.                                                                         end
  2549.                                                                         @time = @pop_time = 80
  2550.                                                                 end
  2551.                                                                 #--------------------------------------------------------------------------
  2552.                                                                 # ● フレーム更新
  2553.                                                                 #--------------------------------------------------------------------------
  2554.                                                                 def update
  2555.                                                                         return if @time == 0
  2556.                                                                         for i in [email]0...@st.size[/email] do update_state_move(@st[i], i) end if @st != nil
  2557.                                                                                 for i in [email]0...@num.size[/email] do update_num_move(@num[i], i) end if @num != nil
  2558.                                                                                         @time -= 1
  2559.                                                                                         @action_end = true if @time == 0
  2560.                                                                                 end
  2561.                                                                                 #--------------------------------------------------------------------------
  2562.                                                                                 # ● ステート画像の更新
  2563.                                                                                 #--------------------------------------------------------------------------
  2564.                                                                                 def update_state_move(state, index)
  2565.                                                                                         min = @pop_time - index * 2
  2566.                                                                                         case @time
  2567.                                                                                         when min-15..min
  2568.                                                                                                 @st_base[index][0] += @direction
  2569.                                                                                                 state.opacity += 25
  2570.                                                                                         when min-80..min-50
  2571.                                                                                                 @st_base[index][0] += @direction
  2572.                                                                                                 state.opacity -= 25
  2573.                                                                                         end
  2574.                                                                                         state.x = (@st_base[index][0] - $sv_camera.x) * $sv_camera.zoom
  2575.                                                                                         state.y = (@st_base[index][1] - $sv_camera.y) * $sv_camera.zoom
  2576.                                                                                 end
  2577.                                                                                 #--------------------------------------------------------------------------
  2578.                                                                                 # ● 数値の更新
  2579.                                                                                 #--------------------------------------------------------------------------
  2580.                                                                                 def update_num_move(num, index)
  2581.                                                                                         min = @pop_time - index * 2
  2582.                                                                                         case @time
  2583.                                                                                         when min-1..min
  2584.                                                                                                 @num_base[index][0] += @direction * @hit
  2585.                                                                                                 @num_base[index][1] -= 5 + @hit * 2
  2586.                                                                                         when min-3..min-2
  2587.                                                                                                 @num_base[index][0] += @direction * @hit
  2588.                                                                                                 @num_base[index][1] -= 4 + @hit * 2
  2589.                                                                                         when min-6..min-4
  2590.                                                                                                 @num_base[index][0] += @direction
  2591.                                                                                                 @num_base[index][1] -= 3 + @hit * 2
  2592.                                                                                         when min-14..min-7
  2593.                                                                                                 @num_base[index][0] += @direction
  2594.                                                                                                 @num_base[index][1] += 2
  2595.                                                                                         when min-17..min-15
  2596.                                                                                                 @num_base[index][1] -= 2 + @hit * 2
  2597.                                                                                         when min-23..min-18
  2598.                                                                                                 @num_base[index][1] += 1
  2599.                                                                                         when min-27..min-24
  2600.                                                                                                 @num_base[index][1] -= 1
  2601.                                                                                         when min-30..min-28
  2602.                                                                                                 @num_base[index][1] += 1
  2603.                                                                                         when min-33..min-31
  2604.                                                                                                 @num_base[index][1] -= 1
  2605.                                                                                         when min-36..min-34
  2606.                                                                                                 @num_base[index][1] += 1
  2607.                                                                                         end
  2608.                                                                                         num.x = (@num_base[index][0] - $sv_camera.x) * $sv_camera.zoom
  2609.                                                                                         num.y = (@num_base[index][1] - $sv_camera.y) * $sv_camera.zoom
  2610.                                                                                         num.opacity = 256 - (12 - @time) * 32
  2611.                                                                                         num.visible = false if @time == 0
  2612.                                                                                 end
  2613.                                                                                 #--------------------------------------------------------------------------
  2614.                                                                                 # ● 解放
  2615.                                                                                 #--------------------------------------------------------------------------
  2616.                                                                                 def dispose
  2617.                                                                                         @battler.sv.hit[@hit] = nil if @hit
  2618.                                                                                         bitmap.dispose if bitmap
  2619.                                                                                         for i in [email]0...@num.size[/email] do @num[i].dispose end if @num != nil
  2620.                                                                                                 for i in [email]0...@st.size[/email] do @st[i].dispose end if @st != nil
  2621.                                                                                                         super
  2622.                                                                                                 end
  2623.                                                                                         end
  2624.                                                                                         #==============================================================================
  2625.                                                                                         # ■ Window_Skill_name
  2626.                                                                                         #------------------------------------------------------------------------------
  2627.                                                                                         #  スキル名を表示するウィンドウです。
  2628.                                                                                         #==============================================================================
  2629.                                                                                         class Window_Skill_name < Window_Base
  2630.                                                                                                 #--------------------------------------------------------------------------
  2631.                                                                                                 # ● オブジェクト初期化
  2632.                                                                                                 #--------------------------------------------------------------------------
  2633.                                                                                                 def initialize(text)
  2634.                                                                                                         super(0, 0, Graphics.width, line_height + standard_padding * 2)
  2635.                                                                                                         draw_text(4, 0, Graphics.width - 64, line_height,text, 1)
  2636.                                                                                                 end
  2637.                                                                                         end
  2638.                                                                                         #==============================================================================
  2639.                                                                                         # ■ Spriteset_Sideview
  2640.                                                                                         #------------------------------------------------------------------------------
  2641.                                                                                         #  サイドビュー独自のスプライトをまとめたクラスです。
  2642.                                                                                         #==============================================================================
  2643.                                                                                         class Spriteset_Sideview
  2644.                                                                                                 #--------------------------------------------------------------------------
  2645.                                                                                                 # ● オブジェクト初期化
  2646.                                                                                                 #--------------------------------------------------------------------------
  2647.                                                                                                 def initialize(viewport)
  2648.                                                                                                         @viewport = viewport
  2649.                                                                                                         @weapons = []
  2650.                                                                                                         @pictures = []
  2651.                                                                                                         @back_pic = []
  2652.                                                                                                         @damage = []
  2653.                                                                                                         $sv_camera.setup
  2654.                                                                                                         N03.camera(nil, N03::BATTLE_CAMERA["ターン開始前"].dup)
  2655.                                                                                                 end
  2656.                                                                                                 #--------------------------------------------------------------------------
  2657.                                                                                                 # ● フレーム更新
  2658.                                                                                                 #--------------------------------------------------------------------------
  2659.                                                                                                 def update
  2660.                                                                                                         update_battler_data
  2661.                                                                                                         update_damage
  2662.                                                                                                         update_pictures
  2663.                                                                                                         update_back_pic
  2664.                                                                                                         update_weapons
  2665.                                                                                                 end  
  2666.                                                                                                 #--------------------------------------------------------------------------
  2667.                                                                                                 # ● バトラーデータの更新
  2668.                                                                                                 #--------------------------------------------------------------------------
  2669.                                                                                                 def update_battler_data
  2670.                                                                                                         for battler in $game_party.battle_members + $game_troop.members
  2671.                                                                                                                 weapon_end(battler) if battler.sv.weapon_end
  2672.                                                                                                                 next if battler.sv.effect_data == []
  2673.                                                                                                                 for effect_data in battler.sv.effect_data do set_effects(battler, effect_data) end
  2674.                                                                                                                 end
  2675.                                                                                                         end
  2676.                                                                                                         #--------------------------------------------------------------------------
  2677.                                                                                                         # ● ダメージ画像の更新
  2678.                                                                                                         #--------------------------------------------------------------------------
  2679.                                                                                                         def update_damage
  2680.                                                                                                                 for i in [email]0...@damage.size[/email]
  2681.                                                                                                                         next if @damage[i] == nil
  2682.                                                                                                                         @damage[i].update if @damage[i] != nil
  2683.                                                                                                                         next if !@damage[i].action_end
  2684.                                                                                                                         @damage[i].dispose
  2685.                                                                                                                         @damage[i] = nil
  2686.                                                                                                                 end
  2687.                                                                                                         end
  2688.                                                                                                         #--------------------------------------------------------------------------
  2689.                                                                                                         # ● ピクチャアクションの更新
  2690.                                                                                                         #--------------------------------------------------------------------------
  2691.                                                                                                         def update_pictures
  2692.                                                                                                                 for i in [email]0...@pictures.size[/email]
  2693.                                                                                                                         next if @pictures[i] == nil
  2694.                                                                                                                         @pictures[i].update if @pictures[i] != nil
  2695.                                                                                                                         next if !@pictures[i].action_end
  2696.                                                                                                                         @pictures[i].dispose
  2697.                                                                                                                         @pictures[i] = nil
  2698.                                                                                                                 end
  2699.                                                                                                         end
  2700.                                                                                                         #--------------------------------------------------------------------------
  2701.                                                                                                         # ● 周期ピクチャの更新
  2702.                                                                                                         #--------------------------------------------------------------------------
  2703.                                                                                                         def update_back_pic
  2704.                                                                                                                 set_back_pic if $sv_camera.program_picture != []
  2705.                                                                                                                 for i in [email]0...@back_pic.size[/email]
  2706.                                                                                                                         next if @back_pic[i] == nil
  2707.                                                                                                                         @back_pic[i].update if @back_pic[i] != nil
  2708.                                                                                                                         next if !@back_pic[i].action_end
  2709.                                                                                                                         @back_pic[i].dispose
  2710.                                                                                                                         @back_pic[i] = nil
  2711.                                                                                                                 end
  2712.                                                                                                         end
  2713.                                                                                                         #--------------------------------------------------------------------------
  2714.                                                                                                         # ● 武器アクションの更新
  2715.                                                                                                         #--------------------------------------------------------------------------
  2716.                                                                                                         def update_weapons
  2717.                                                                                                                 for i in [email]0...@weapons.size[/email]
  2718.                                                                                                                         next if @weapons[i] == nil
  2719.                                                                                                                         @weapons[i].update if @weapons[i] != nil
  2720.                                                                                                                         next if !@weapons[i].action_end
  2721.                                                                                                                         @weapons[i].dispose
  2722.                                                                                                                         @weapons[i] = nil
  2723.                                                                                                                 end
  2724.                                                                                                         end
  2725.                                                                                                         #--------------------------------------------------------------------------
  2726.                                                                                                         # ● ダメージ実行
  2727.                                                                                                         #--------------------------------------------------------------------------
  2728.                                                                                                         def set_damage_pop(target)
  2729.                                                                                                                 for i in [email]0...@damage.size[/email]
  2730.                                                                                                                         next if @damage[i] != nil
  2731.                                                                                                                         return @damage[i] = Sprite_Damage.new(@viewport, target)
  2732.                                                                                                                 end
  2733.                                                                                                                 @damage.push(Sprite_Damage.new(@viewport, target))
  2734.                                                                                                         end
  2735.                                                                                                         #--------------------------------------------------------------------------
  2736.                                                                                                         # ● 周期ピクチャ実行
  2737.                                                                                                         #--------------------------------------------------------------------------
  2738.                                                                                                         def set_back_pic
  2739.                                                                                                                 for data in $sv_camera.program_picture
  2740.                                                                                                                         if @back_pic[data[2]] != nil
  2741.                                                                                                                                 @back_pic[data[2]].dispose
  2742.                                                                                                                                 @back_pic[data[2]] = nil
  2743.                                                                                                                         end
  2744.                                                                                                                         @back_pic[data[2]] = Sprite_Back_Picture.new(@viewport, data[2])
  2745.                                                                                                                         @back_pic[data[2]].setup(data)
  2746.                                                                                                                 end
  2747.                                                                                                                 $sv_camera.program_picture = []
  2748.                                                                                                         end
  2749.                                                                                                         #--------------------------------------------------------------------------
  2750.                                                                                                         # ● エフェクト開始
  2751.                                                                                                         #--------------------------------------------------------------------------
  2752.                                                                                                         def set_effects(battler, effect_data)
  2753.                                                                                                                 case effect_data[0]
  2754.                                                                                                                 when "pic" ; set_pictures(battler, effect_data)
  2755.                                                                                                                 when  "wp" ; set_weapons(battler,  true)
  2756.                                                                                                                 when "m_a" ; set_weapons(battler, false)
  2757.                                                                                                                 end
  2758.                                                                                                         end
  2759.                                                                                                         #--------------------------------------------------------------------------
  2760.                                                                                                         # ● ピクチャアクション実行
  2761.                                                                                                         #--------------------------------------------------------------------------
  2762.                                                                                                         def set_pictures(battler, effect_data)
  2763.                                                                                                                 @pictures[effect_data[1]] = Sprite_Battle_Picture.new if @pictures[effect_data[1]] == nil
  2764.                                                                                                                 @pictures[effect_data[1]].set(battler)
  2765.                                                                                                         end
  2766.                                                                                                         #--------------------------------------------------------------------------
  2767.                                                                                                         # ● 武器アクション実行
  2768.                                                                                                         #--------------------------------------------------------------------------
  2769.                                                                                                         def set_weapons(battler, weapon_flag, test = true)
  2770.                                                                                                                 for i in [email]0...@weapons.size[/email]
  2771.                                                                                                                         next if @weapons[i] != nil
  2772.                                                                                                                         @weapons[i] = Sprite_Weapon.new(@viewport, i, battler)
  2773.                                                                                                                         battler.sv.weapon_index.push(i) if weapon_flag
  2774.                                                                                                                         return i
  2775.                                                                                                                 end
  2776.                                                                                                                 @weapons.push(Sprite_Weapon.new(@viewport, @weapons.size, battler))
  2777.                                                                                                                 battler.sv.weapon_index.push(@weapons.size - 1) if weapon_flag
  2778.                                                                                                                 return @weapons.size - 1
  2779.                                                                                                         end
  2780.                                                                                                         #--------------------------------------------------------------------------
  2781.                                                                                                         # ● バトラーの武器アクション終了
  2782.                                                                                                         #--------------------------------------------------------------------------
  2783.                                                                                                         def weapon_end(battler)
  2784.                                                                                                                 battler.sv.weapon_end = false
  2785.                                                                                                                 for index in battler.sv.weapon_index
  2786.                                                                                                                         weapon_index = battler.sv.weapon_index.shift
  2787.                                                                                                                         @weapons[weapon_index].dispose if @weapons[weapon_index] != nil
  2788.                                                                                                                         @weapons[weapon_index] = nil
  2789.                                                                                                                 end
  2790.                                                                                                                 battler.sv.weapon_index.compact!
  2791.                                                                                                         end  
  2792.                                                                                                         #--------------------------------------------------------------------------
  2793.                                                                                                         # ● ヒット時の戦闘アニメ実行
  2794.                                                                                                         #--------------------------------------------------------------------------
  2795.                                                                                                         def set_hit_animation(battler, weapon_index, hit_targets, miss)
  2796.                                                                                                                 weapon = @weapons[weapon_index]
  2797.                                                                                                                 for target in hit_targets
  2798.                                                                                                                         next @weapons[@hit_index].timing_battler_set(target) if @hit_index != nil
  2799.                                                                                                                         @hit_index = set_weapons(battler, false, false)
  2800.                                                                                                                         @weapons[@hit_index].set_hit_animation(weapon.hit_position, weapon.hit_anime_id, target)
  2801.                                                                                                                 end
  2802.                                                                                                                 @hit_index = nil
  2803.                                                                                                                 if !weapon.through && !miss
  2804.                                                                                                                         @weapons[weapon_index].dispose
  2805.                                                                                                                         @weapons[weapon_index] = nil
  2806.                                                                                                                 else
  2807.                                                                                                                         @weapons[weapon_index].through_change
  2808.                                                                                                                 end
  2809.                                                                                                         end
  2810.                                                                                                         #--------------------------------------------------------------------------
  2811.                                                                                                         # ● サイドビューデータの初期化
  2812.                                                                                                         #--------------------------------------------------------------------------
  2813.                                                                                                         def reset_sideview
  2814.                                                                                                                 $sv_camera.reset
  2815.                                                                                                                 for member in $game_troop.members + $game_party.battle_members do member.sv.reset end
  2816.                                                                                                                 end  
  2817.                                                                                                                 #--------------------------------------------------------------------------
  2818.                                                                                                                 # ● 解放
  2819.                                                                                                                 #--------------------------------------------------------------------------
  2820.                                                                                                                 def dispose
  2821.                                                                                                                         dispose_effects(@weapons)
  2822.                                                                                                                         dispose_effects(@pictures)
  2823.                                                                                                                         dispose_effects(@back_pic)
  2824.                                                                                                                         dispose_effects(@damage)
  2825.                                                                                                                         reset_sideview
  2826.                                                                                                                 end
  2827.                                                                                                                 #--------------------------------------------------------------------------
  2828.                                                                                                                 # ● エフェクト画像の解放
  2829.                                                                                                                 #--------------------------------------------------------------------------
  2830.                                                                                                                 def dispose_effects(effects)
  2831.                                                                                                                         for i in 0...effects.size
  2832.                                                                                                                                 effects[i].dispose if effects[i] != nil
  2833.                                                                                                                                 effects[i] = nil
  2834.                                                                                                                         end
  2835.                                                                                                                 end
  2836.                                                                                                         end
  2837.                                                                                                         #==============================================================================
  2838.                                                                                                         # ■ Sprite_Battle_Back
  2839.                                                                                                         #------------------------------------------------------------------------------
  2840.                                                                                                         #  戦闘背景用のスプライトです。
  2841.                                                                                                         #==============================================================================
  2842.                                                                                                         class Sprite_Battle_Back < Plane
  2843.                                                                                                                 #--------------------------------------------------------------------------
  2844.                                                                                                                 # ● オブジェクト初期化
  2845.                                                                                                                 #--------------------------------------------------------------------------
  2846.                                                                                                                 def initialize(viewport = nil, index, battleback_name)
  2847.                                                                                                                         super(viewport)
  2848.                                                                                                                         @index = index
  2849.                                                                                                                         if @index == 1
  2850.                                                                                                                                 data = N03::FLOOR1_DATA[battleback_name]
  2851.                                                                                                                                 data = N03::FLOOR1_DATA["全Battlebacks1"] if data == nil
  2852.                                                                                                                         elsif @index == 2
  2853.                                                                                                                                 data = N03::FLOOR2_DATA[battleback_name]
  2854.                                                                                                                                 data = N03::FLOOR2_DATA["全Battlebacks2"] if data == nil
  2855.                                                                                                                         end   
  2856.                                                                                                                         data = data.dup
  2857.                                                                                                                         @adjust_position = data[0]
  2858.                                                                                                                         @zoom_x = data[1][0] / 100.0
  2859.                                                                                                                         @zoom_y = data[1][1] / 100.0
  2860.                                                                                                                         @shake_on = data[2]
  2861.                                                                                                                         $game_switches[data[3]] = true if data[3] > 0
  2862.                                                                                                                         $sv_camera.switches[data[3].abs] = true if data[3] < 0
  2863.                                                                                                                         reset_scroll
  2864.                                                                                                                         reset_back_data(battleback_name)
  2865.                                                                                                                 end
  2866.                                                                                                                 #--------------------------------------------------------------------------
  2867.                                                                                                                 # ● 背景スクロールを初期化
  2868.                                                                                                                 #--------------------------------------------------------------------------
  2869.                                                                                                                 def reset_scroll
  2870.                                                                                                                         @scroll_x = 0
  2871.                                                                                                                         @scroll_y = 0
  2872.                                                                                                                         @move_x = 0
  2873.                                                                                                                         @move_y = 0
  2874.                                                                                                                 end
  2875.                                                                                                                 #--------------------------------------------------------------------------
  2876.                                                                                                                 # ● 背景データを初期化
  2877.                                                                                                                 #--------------------------------------------------------------------------
  2878.                                                                                                                 def reset_back_data(battleback_name)
  2879.                                                                                                                         @back_data = []
  2880.                                                                                                                         @active_data = ["scroll",0, @move_x, @move_y, false, battleback_name,""]
  2881.                                                                                                                         start_back_data(@active_data)
  2882.                                                                                                                 end  
  2883.                                                                                                                 #--------------------------------------------------------------------------
  2884.                                                                                                                 # ● 背景画像のセッティング
  2885.                                                                                                                 #--------------------------------------------------------------------------
  2886.                                                                                                                 def set_graphics(new_bitmap)
  2887.                                                                                                                         self.bitmap = new_bitmap
  2888.                                                                                                                         @base_x = (self.bitmap.width * @zoom_x - Graphics.width) / 2 + @adjust_position[0]
  2889.                                                                                                                         @base_y = (self.bitmap.height * @zoom_y - Graphics.height) / 2 + @adjust_position[1]
  2890.                                                                                                                         # 限界座標を取得
  2891.                                                                                                                         max_top =  0
  2892.                                                                                                                         max_bottom = self.bitmap.height * @zoom_y - Graphics.height
  2893.                                                                                                                         max_left = 0
  2894.                                                                                                                         max_right = self.bitmap.width * @zoom_x - Graphics.width
  2895.                                                                                                                         exist = true
  2896.                                                                                                                         exist = false if self.bitmap.height == 32 && self.bitmap.width == 32
  2897.                                                                                                                         $sv_camera.setting(@index, [max_top, max_bottom, max_left, max_right, @base_x, @base_y,exist])
  2898.                                                                                                                 end
  2899.                                                                                                                 #--------------------------------------------------------------------------
  2900.                                                                                                                 # ● フレーム更新
  2901.                                                                                                                 #--------------------------------------------------------------------------
  2902.                                                                                                                 def update
  2903.                                                                                                                         return if !bitmap
  2904.                                                                                                                         update_back_data
  2905.                                                                                                                         update_scroll unless @move_x == 0 && @move_y == 0
  2906.                                                                                                                         update_color
  2907.                                                                                                                         update_position
  2908.                                                                                                                         update_back_adjust if @bt_back != nil
  2909.                                                                                                                         create_back_adjust if @bt_back == nil && !@active_data[10] && @scroll_x == 0 && @scroll_y == 0
  2910.                                                                                                                 end
  2911.                                                                                                                 #--------------------------------------------------------------------------
  2912.                                                                                                                 # ● 背景データを更新
  2913.                                                                                                                 #--------------------------------------------------------------------------
  2914.                                                                                                                 def update_back_data
  2915.                                                                                                                         delete = true if @active_data[1] > 0 && !$game_switches[@active_data[1]]
  2916.                                                                                                                         delete = true if @active_data[1] < 0 && !$sv_camera.switches[@active_data[1].abs]
  2917.                                                                                                                         return if !delete
  2918.                                                                                                                         for i in [email]0...@back_data.size[/email]
  2919.                                                                                                                                 @back_data[i] = nil if @back_data[i][1] > 0 && !$game_switches[@back_data[i][1]]
  2920.                                                                                                                                 @back_data[i] = nil if @back_data[i][1] < 0 && !$sv_camera.switches[@back_data[i][1].abs]
  2921.                                                                                                                         end
  2922.                                                                                                                         @back_data.compact!
  2923.                                                                                                                         next_back_data
  2924.                                                                                                                 end
  2925.                                                                                                                 #--------------------------------------------------------------------------
  2926.                                                                                                                 # ● 次の背景データをセット
  2927.                                                                                                                 #--------------------------------------------------------------------------
  2928.                                                                                                                 def next_back_data
  2929.                                                                                                                         @back_data.delete(@active_data[11]) if @active_data[11] != nil
  2930.                                                                                                                         @back_data.push(@active_data[11]) if @active_data[11] != nil
  2931.                                                                                                                         @active_data = nil
  2932.                                                                                                                         data = @back_data.pop
  2933.                                                                                                                         @back_data = [@active_data] if @back_data.size == 0
  2934.                                                                                                                         start_back_data(data)
  2935.                                                                                                                 end  
  2936.                                                                                                                 #--------------------------------------------------------------------------
  2937.                                                                                                                 # ● 背景データを実行
  2938.                                                                                                                 #--------------------------------------------------------------------------
  2939.                                                                                                                 def start_back_data(data)
  2940.                                                                                                                         return if back_data_remain(data)
  2941.                                                                                                                         bt_back_dispose
  2942.                                                                                                                         pre_active_data = @active_data
  2943.                                                                                                                         @active_data[8] = [@back_name, @move_x, @move_y, @scroll_x, @scroll_y] if @active_data != nil
  2944.                                                                                                                         @back_data.push(@active_data)     if @active_data != nil
  2945.                                                                                                                         @active_data = data.dup
  2946.                                                                                                                         @active_data[5] = @back_name      if @active_data[5] == ""
  2947.                                                                                                                         @active_data[9] = set_back_adjust if @active_data[9] == nil
  2948.                                                                                                                         back_data_scroll_on               if @active_data[8] == nil && @active_data[9][0] == false
  2949.                                                                                                                         set_remain_back_data              if @active_data[8] != nil
  2950.                                                                                                                         create_back(@active_data[5])      if @active_data[9][0] == false
  2951.                                                                                                                         create_back_adjust                if @active_data[10]
  2952.                                                                                                                         @active_data[11] = pre_active_data if pre_active_data && @active_data[7] == false
  2953.                                                                                                                 end  
  2954.                                                                                                                 #--------------------------------------------------------------------------
  2955.                                                                                                                 # ● 背景データの保留
  2956.                                                                                                                 #--------------------------------------------------------------------------
  2957.                                                                                                                 def back_data_remain(data)
  2958.                                                                                                                         remain = false
  2959.                                                                                                                         remain = true if data[6] != "" && @active_data != nil && @active_data[9] != nil && @active_data[9][0] != false
  2960.                                                                                                                         remain = true if @active_data != nil && @active_data[7] == false
  2961.                                                                                                                         return remain if !remain
  2962.                                                                                                                         @remain = true
  2963.                                                                                                                         @back_data.push(data)
  2964.                                                                                                                         return remain
  2965.                                                                                                                 end  
  2966.                                                                                                                 #--------------------------------------------------------------------------
  2967.                                                                                                                 # ● 背景変更補正データをセット
  2968.                                                                                                                 #--------------------------------------------------------------------------
  2969.                                                                                                                 def set_back_adjust
  2970.                                                                                                                         bt_adjust = []
  2971.                                                                                                                         sign = -1
  2972.                                                                                                                         if @active_data[6] == ""
  2973.                                                                                                                                 reset_scroll if @active_data[3][0] == 0 &&  @active_data[3][1] == 0
  2974.                                                                                                                                 bt_adjust = [false,false,0,0]
  2975.                                                                                                                                 return bt_adjust
  2976.                                                                                                                         elsif @move_x != 0 or @active_data[3][0] != 0
  2977.                                                                                                                                 sign = 1 if @move_x < 0
  2978.                                                                                                                                 bt_adjust[0] = [self.bitmap.width * @zoom_x * sign, 0]
  2979.                                                                                                                                 bt_adjust[1] = [self.bitmap.width * @zoom_x * sign * 2, 0]
  2980.                                                                                                                         elsif @move_y != 0 or @active_data[3][1] != 0
  2981.                                                                                                                                 sign = 1 if @move_y < 0
  2982.                                                                                                                                 bt_adjust[0] = [0, self.bitmap.height * @zoom_y * sign]
  2983.                                                                                                                                 bt_adjust[1] = [0, self.bitmap.height * @zoom_y * sign * 2]
  2984.                                                                                                                         else
  2985.                                                                                                                                 reset_scroll if @active_data[3][0] == 0 &&  @active_data[3][1] == 0
  2986.                                                                                                                                 bt_adjust = [false,false,0,0]
  2987.                                                                                                                                 return bt_adjust
  2988.                                                                                                                         end
  2989.                                                                                                                         bt_adjust[2] = [bt_adjust[0][0], bt_adjust[0][1]]
  2990.                                                                                                                         return bt_adjust
  2991.                                                                                                                 end
  2992.                                                                                                                 #--------------------------------------------------------------------------
  2993.                                                                                                                 # ● 背景スクロールデータを実行
  2994.                                                                                                                 #--------------------------------------------------------------------------
  2995.                                                                                                                 def back_data_scroll_on
  2996.                                                                                                                         mirror = $sv_camera.mirror
  2997.                                                                                                                         mirror = false if !@active_data[4]
  2998.                                                                                                                         @move_x = @active_data[3][0]
  2999.                                                                                                                         @move_x *= -1 if mirror
  3000.                                                                                                                         @move_y = @active_data[3][1]
  3001.                                                                                                                 end
  3002.                                                                                                                 #--------------------------------------------------------------------------
  3003.                                                                                                                 # ● 保持している背景データを実行
  3004.                                                                                                                 #--------------------------------------------------------------------------
  3005.                                                                                                                 def set_remain_back_data
  3006.                                                                                                                         return back_data_scroll_on if @move_x != 0 or @move_y != 0
  3007.                                                                                                                         create_back(@active_data[8][0])
  3008.                                                                                                                         @move_x    = @active_data[8][1]
  3009.                                                                                                                         @move_y    = @active_data[8][2]
  3010.                                                                                                                         @scroll_x  = @active_data[8][3]
  3011.                                                                                                                         @scroll_y  = @active_data[8][4]
  3012.                                                                                                                 end  
  3013.                                                                                                                 #--------------------------------------------------------------------------
  3014.                                                                                                                 # ● 背景画像の作成
  3015.                                                                                                                 #--------------------------------------------------------------------------
  3016.                                                                                                                 def create_back(back_name)
  3017.                                                                                                                         return if back_name == @back_name or back_name == ""
  3018.                                                                                                                         self.bitmap = Cache.battleback1(back_name) if @index == 1
  3019.                                                                                                                         self.bitmap = Cache.battleback2(back_name) if @index == 2
  3020.                                                                                                                         @back_name = back_name
  3021.                                                                                                                 end  
  3022.                                                                                                                 #--------------------------------------------------------------------------
  3023.                                                                                                                 # ● 背景変更補正画像の作成
  3024.                                                                                                                 #--------------------------------------------------------------------------
  3025.                                                                                                                 def create_back_adjust
  3026.                                                                                                                         return if @active_data[9][0] == false
  3027.                                                                                                                         @active_data[10] = true
  3028.                                                                                                                         mirror = $sv_camera.mirror
  3029.                                                                                                                         mirror = false if !@active_data[4]
  3030.                                                                                                                         @bt_back = []
  3031.                                                                                                                         @bt_back[0] = Sprite.new(viewport)
  3032.                                                                                                                         @bt_back[0].bitmap = Cache.battleback1(@active_data[6]) if @index == 1
  3033.                                                                                                                         @bt_back[0].bitmap = Cache.battleback2(@active_data[6]) if @index == 2
  3034.                                                                                                                         @bt_back[0].mirror = mirror
  3035.                                                                                                                         @bt_back[1] = Sprite.new(viewport)
  3036.                                                                                                                         @bt_back[1].bitmap = Cache.battleback1(@active_data[5]) if @index == 1
  3037.                                                                                                                         @bt_back[1].bitmap = Cache.battleback2(@active_data[5]) if @index == 2
  3038.                                                                                                                         @bt_back[1].mirror = mirror
  3039.                                                                                                                 end
  3040.                                                                                                                 #--------------------------------------------------------------------------
  3041.                                                                                                                 # ● 背景スクロールの更新
  3042.                                                                                                                 #--------------------------------------------------------------------------
  3043.                                                                                                                 def update_scroll
  3044.                                                                                                                         @scroll_x += @move_x
  3045.                                                                                                                         @scroll_y += @move_y
  3046.                                                                                                                         @scroll_x = 0 if @scroll_x / 100 >= self.bitmap.width * @zoom_x or @scroll_x / 100 <= -self.bitmap.width * @zoom_x
  3047.                                                                                                                         @scroll_y = 0 if @scroll_y / 100 >= self.bitmap.height * @zoom_y or @scroll_y / 100 <= -self.bitmap.height * @zoom_y
  3048.                                                                                                                 end
  3049.                                                                                                                 #--------------------------------------------------------------------------
  3050.                                                                                                                 # ● 色調変更の更新
  3051.                                                                                                                 #--------------------------------------------------------------------------
  3052.                                                                                                                 def update_color
  3053.                                                                                                                         color_set if $sv_camera.color_set[@index] != nil
  3054.                                                                                                                         return if @color_data == nil
  3055.                                                                                                                         @color_data[4] -= 1
  3056.                                                                                                                         if @color_data[4] == 0 && @color_data[5] != 0
  3057.                                                                                                                                 @color_data[4] = @color_data[5]
  3058.                                                                                                                                 @color_data[5] = 0
  3059.                                                                                                                                 @color_data[6] = [0,0,0,0]
  3060.                                                                                                                         elsif @color_data[4] == 0
  3061.                                                                                                                                 @remain_color_data = @color_data
  3062.                                                                                                                                 return @color_data = nil
  3063.                                                                                                                         end  
  3064.                                                                                                                         for i in 0..3
  3065.                                                                                                                                 @color_data[i] = (@color_data[i] * (@color_data[4] - 1) + @color_data[6][i]) / @color_data[4]
  3066.                                                                                                                         end  
  3067.                                                                                                                         self.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3])
  3068.                                                                                                                 end
  3069.                                                                                                                 #--------------------------------------------------------------------------
  3070.                                                                                                                 # ● 座標の更新
  3071.                                                                                                                 #--------------------------------------------------------------------------
  3072.                                                                                                                 def update_position
  3073.                                                                                                                         self.ox = $sv_camera.x + @base_x - @scroll_x / 100
  3074.                                                                                                                         self.oy = $sv_camera.y + @base_y - @scroll_y / 100
  3075.                                                                                                                         self.ox -= $sv_camera.sx / 100 if @shake_on
  3076.                                                                                                                         self.oy -= $sv_camera.sy / 100 if @shake_on
  3077.                                                                                                                         self.zoom_x = @zoom_x * $sv_camera.zoom
  3078.                                                                                                                         self.zoom_y = @zoom_y * $sv_camera.zoom
  3079.                                                                                                                         self.ox *= $sv_camera.zoom
  3080.                                                                                                                         self.oy *= $sv_camera.zoom
  3081.                                                                                                                         self.z = @index * 10
  3082.                                                                                                                 end
  3083.                                                                                                                 #--------------------------------------------------------------------------
  3084.                                                                                                                 # ● 背景変更補正画像を更新
  3085.                                                                                                                 #--------------------------------------------------------------------------
  3086.                                                                                                                 def update_back_adjust
  3087.                                                                                                                         @active_data[9][0][0] = 0 if @scroll_x == 0
  3088.                                                                                                                         @active_data[9][0][1] = 0 if @scroll_y == 0
  3089.                                                                                                                         @active_data[9][1][0] -= @active_data[9][2][0] if @scroll_x == 0
  3090.                                                                                                                         @active_data[9][1][1] -= @active_data[9][2][1] if @scroll_y == 0
  3091.                                                                                                                         for i in [email]0...@bt_back.size[/email]
  3092.                                                                                                                                 @bt_back[i].x = -self.ox + @active_data[9][i][0] * $sv_camera.zoom
  3093.                                                                                                                                 @bt_back[i].y = -self.oy + @active_data[9][i][1] * $sv_camera.zoom
  3094.                                                                                                                                 @bt_back[i].zoom_x = self.zoom_x
  3095.                                                                                                                                 @bt_back[i].zoom_y = self.zoom_y
  3096.                                                                                                                                 @bt_back[i].z = self.z + 1
  3097.                                                                                                                                 @bt_back[i].color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  3098.                                                                                                                         end
  3099.                                                                                                                         back_data_scroll_on if @active_data[9][0][0] == 0 && @active_data[9][0][1] == 0
  3100.                                                                                                                         return unless @active_data[9][1][0] == 0 && @active_data[9][1][1] == 0
  3101.                                                                                                                         bt_back_dispose
  3102.                                                                                                                         create_back(@active_data[5])
  3103.                                                                                                                         @active_data[9][0] = false
  3104.                                                                                                                         next_back_data if @remain && @back_data.size != 1
  3105.                                                                                                                         @remain = false
  3106.                                                                                                                 end
  3107.                                                                                                                 #--------------------------------------------------------------------------
  3108.                                                                                                                 # ● 色調変更
  3109.                                                                                                                 #--------------------------------------------------------------------------
  3110.                                                                                                                 def color_set
  3111.                                                                                                                         set = $sv_camera.color_set[@index]
  3112.                                                                                                                         $sv_camera.color_set[@index] = nil
  3113.                                                                                                                         set[4] = 1 if set[4] == 0
  3114.                                                                                                                         @remain_color_data = [0,0,0,0] if @remain_color_data == nil
  3115.                                                                                                                         @color_data = @remain_color_data
  3116.                                                                                                                         @color_data[4] = set[4]
  3117.                                                                                                                         @color_data[5] = set[5]
  3118.                                                                                                                         @color_data[6] = set
  3119.                                                                                                                 end
  3120.                                                                                                                 #--------------------------------------------------------------------------
  3121.                                                                                                                 # ● 背景変更補正画像の解放
  3122.                                                                                                                 #--------------------------------------------------------------------------
  3123.                                                                                                                 def bt_back_dispose
  3124.                                                                                                                         for i in [email]0...@bt_back.size[/email] do @bt_back[i].dispose end if @bt_back != nil
  3125.                                                                                                                                 @bt_back = nil
  3126.                                                                                                                         end  
  3127.                                                                                                                         #--------------------------------------------------------------------------
  3128.                                                                                                                         # ● 解放
  3129.                                                                                                                         #--------------------------------------------------------------------------
  3130.                                                                                                                         def dispose
  3131.                                                                                                                                 bitmap.dispose if bitmap
  3132.                                                                                                                                 bt_back_dispose
  3133.                                                                                                                                 super
  3134.                                                                                                                         end
  3135.                                                                                                                 end  
  3136.                                                                                                                 #==============================================================================
  3137.                                                                                                                 # ■ Battle_Camera
  3138.                                                                                                                 #------------------------------------------------------------------------------
  3139.                                                                                                                 #  戦闘カメラやバトルプログラムを扱うクラスです。
  3140.                                                                                                                 #==============================================================================
  3141.                                                                                                                 class Battle_Camera
  3142.                                                                                                                         #--------------------------------------------------------------------------
  3143.                                                                                                                         # ● 公開インスタンス変数 
  3144.                                                                                                                         #--------------------------------------------------------------------------
  3145.                                                                                                                         attr_reader   :sx                 # シェイクX座標
  3146.                                                                                                                         attr_reader   :sy                 # シェイクY座標
  3147.                                                                                                                         attr_reader   :max_top            # 上限界座標
  3148.                                                                                                                         attr_reader   :max_bottom         # 下限界座標
  3149.                                                                                                                         attr_reader   :max_left           # 左限界座標
  3150.                                                                                                                         attr_reader   :max_right          # 右限界座標
  3151.                                                                                                                         attr_accessor :switches           # サイドビュー専用スイッチ
  3152.                                                                                                                         attr_accessor :color_set          # 色調変更データ
  3153.                                                                                                                         attr_accessor :wait               # 戦闘シーンの強制ウエイト
  3154.                                                                                                                         attr_accessor :win_wait           # 戦闘勝利前のウエイト
  3155.                                                                                                                         attr_accessor :mirror             # 画面反転フラグ
  3156.                                                                                                                         attr_accessor :program_scroll     # バトルプログラム 背景の自動スクロール
  3157.                                                                                                                         attr_accessor :program_picture    # バトルプログラム 周期ピクチャ
  3158.                                                                                                                         attr_accessor :event              # コモンイベント呼び出し
  3159.                                                                                                                         #--------------------------------------------------------------------------
  3160.                                                                                                                         # ● オブジェクト初期化
  3161.                                                                                                                         #--------------------------------------------------------------------------
  3162.                                                                                                                         def initialize
  3163.                                                                                                                                 @switches = []
  3164.                                                                                                                                 @max_data = []
  3165.                                                                                                                                 @color_set = []
  3166.                                                                                                                                 @wait = 0
  3167.                                                                                                                                 @win_wait = false
  3168.                                                                                                                                 @mirror = false
  3169.                                                                                                                                 @event = false
  3170.                                                                                                                                 setup
  3171.                                                                                                                         end
  3172.                                                                                                                         #--------------------------------------------------------------------------
  3173.                                                                                                                         # ● カメラX座標
  3174.                                                                                                                         #--------------------------------------------------------------------------
  3175.                                                                                                                         def x
  3176.                                                                                                                                 return @x / 100
  3177.                                                                                                                         end
  3178.                                                                                                                         #--------------------------------------------------------------------------
  3179.                                                                                                                         # ● カメラY座標
  3180.                                                                                                                         #--------------------------------------------------------------------------
  3181.                                                                                                                         def y
  3182.                                                                                                                                 return @y / 100
  3183.                                                                                                                         end
  3184.                                                                                                                         #--------------------------------------------------------------------------
  3185.                                                                                                                         # ● ズーム率
  3186.                                                                                                                         #--------------------------------------------------------------------------
  3187.                                                                                                                         def zoom
  3188.                                                                                                                                 return @zoom * 0.001
  3189.                                                                                                                         end
  3190.                                                                                                                         #--------------------------------------------------------------------------
  3191.                                                                                                                         # ● ズーム率による座標変換
  3192.                                                                                                                         #--------------------------------------------------------------------------
  3193.                                                                                                                         def convert
  3194.                                                                                                                                 return @zoom
  3195.                                                                                                                         end
  3196.                                                                                                                         #--------------------------------------------------------------------------
  3197.                                                                                                                         # ● カメラセットアップ
  3198.                                                                                                                         #--------------------------------------------------------------------------
  3199.                                                                                                                         def setup
  3200.                                                                                                                                 @x = 0
  3201.                                                                                                                                 @y = 0
  3202.                                                                                                                                 @sx = 0
  3203.                                                                                                                                 @sy = 0
  3204.                                                                                                                                 @zoom = 1000
  3205.                                                                                                                                 @time = 0
  3206.                                                                                                                                 @shake_time = 0
  3207.                                                                                                                                 program_setup
  3208.                                                                                                                         end
  3209.                                                                                                                         #--------------------------------------------------------------------------
  3210.                                                                                                                         # ● カメラ初期化
  3211.                                                                                                                         #--------------------------------------------------------------------------
  3212.                                                                                                                         def reset
  3213.                                                                                                                                 @switches = []
  3214.                                                                                                                                 @max_data = []
  3215.                                                                                                                                 @color_set = []
  3216.                                                                                                                                 @wait = 0
  3217.                                                                                                                                 @win_wait = false
  3218.                                                                                                                                 @mirror = false
  3219.                                                                                                                                 program_setup(false)
  3220.                                                                                                                         end  
  3221.                                                                                                                         #--------------------------------------------------------------------------
  3222.                                                                                                                         # ● バトルプログラムのセットアップ
  3223.                                                                                                                         #--------------------------------------------------------------------------
  3224.                                                                                                                         def program_setup(check = true)
  3225.                                                                                                                                 @played_program  = []
  3226.                                                                                                                                 @program_switch  = []
  3227.                                                                                                                                 @program_sound   = []
  3228.                                                                                                                                 @program_scroll  = []
  3229.                                                                                                                                 @program_se      = []
  3230.                                                                                                                                 @program_shake   = []
  3231.                                                                                                                                 @program_color   = []
  3232.                                                                                                                                 @program_picture = []
  3233.                                                                                                                                 @program_base = N03::BATTLE_PROGRAM.values.dup
  3234.                                                                                                                                 program_check if check
  3235.                                                                                                                         end  
  3236.                                                                                                                         #--------------------------------------------------------------------------
  3237.                                                                                                                         # ● バトルプログラムのチェック
  3238.                                                                                                                         #--------------------------------------------------------------------------
  3239.                                                                                                                         def program_check
  3240.                                                                                                                                 for data in @program_base
  3241.                                                                                                                                         if program_start?(data) && !@played_program.include?(data)
  3242.                                                                                                                                                 @played_program.push(data.dup)
  3243.                                                                                                                                                 @program_scroll.push(data.dup)  if data[0] == "scroll"
  3244.                                                                                                                                                 @program_picture.push(data.dup) if data[0] == "kpic"
  3245.                                                                                                                                                 start_sound(data.dup)           if data[0] == "sound"
  3246.                                                                                                                                                 start_program_switch(data.dup)  if data[0] == "switch"
  3247.                                                                                                                                                 start_program_se(data.dup)      if data[0] == "keep_se"
  3248.                                                                                                                                                 start_program_shake(data.dup)   if data[0] == "keep_sk"
  3249.                                                                                                                                                 start_program_color(data.dup)   if data[0] == "keep_c"
  3250.                                                                                                                                         else
  3251.                                                                                                                                                 @played_program.delete(data)  if !program_start?(data)
  3252.                                                                                                                                                 @program_scroll.delete(data)  if data[0] == "scroll"
  3253.                                                                                                                                                 @program_picture.delete(data) if data[0] == "kpic"
  3254.                                                                                                                                                 @program_switch.delete(data)  if data[0] == "switch"
  3255.                                                                                                                                                 @program_sound.delete(data)   if data[0] == "sound"
  3256.                                                                                                                                                 @program_se.delete(data)      if data[0] == "keep_se"
  3257.                                                                                                                                                 @program_shake.delete(data)   if data[0] == "keep_sk"
  3258.                                                                                                                                                 @program_color.delete(data)   if data[0] == "keep_c"
  3259.                                                                                                                                         end
  3260.                                                                                                                                 end
  3261.                                                                                                                         end
  3262.                                                                                                                         #--------------------------------------------------------------------------
  3263.                                                                                                                         # ● バトルプログラムの開始
  3264.                                                                                                                         #--------------------------------------------------------------------------
  3265.                                                                                                                         def program_start?(data)
  3266.                                                                                                                                 start = false
  3267.                                                                                                                                 start = true if $game_switches[data[1].abs] && data[1] > 0
  3268.                                                                                                                                 start = true if @switches[data[1].abs] && data[1] < 0
  3269.                                                                                                                                 return start
  3270.                                                                                                                         end  
  3271.                                                                                                                         #--------------------------------------------------------------------------
  3272.                                                                                                                         # ● バトルプログラム スイッチ操作の開始
  3273.                                                                                                                         #--------------------------------------------------------------------------
  3274.                                                                                                                         def start_program_switch(data)
  3275.                                                                                                                                 data[4] = data[4] + rand(data[5] + 1)
  3276.                                                                                                                                 data[4] = 1 if data[4] <= 0
  3277.                                                                                                                                 @program_switch.push(data)
  3278.                                                                                                                         end
  3279.                                                                                                                         #--------------------------------------------------------------------------
  3280.                                                                                                                         # ● スイッチ操作の更新
  3281.                                                                                                                         #--------------------------------------------------------------------------
  3282.                                                                                                                         def update_program_switch
  3283.                                                                                                                                 for data in @program_switch
  3284.                                                                                                                                         data[4] -= 1
  3285.                                                                                                                                         next @program_switch.delete(data) if data[1] > 0 && !$game_switches[data[1]]
  3286.                                                                                                                                         next @program_switch.delete(data) if data[1] < 0 && !@switches[data[1].abs]
  3287.                                                                                                                                         next if data[4] != 0
  3288.                                                                                                                                         for id in data[2]
  3289.                                                                                                                                                 $game_switches[id] = true if id > 0
  3290.                                                                                                                                                 @switches[id.abs] = true  if id < 0
  3291.                                                                                                                                         end
  3292.                                                                                                                                         for id in data[3]
  3293.                                                                                                                                                 $game_switches[id] = false if id > 0
  3294.                                                                                                                                                 @switches[id.abs] = false  if id < 0
  3295.                                                                                                                                         end
  3296.                                                                                                                                         @program_switch.delete(data)
  3297.                                                                                                                                         program_check
  3298.                                                                                                                                 end  
  3299.                                                                                                                         end
  3300.                                                                                                                         #--------------------------------------------------------------------------
  3301.                                                                                                                         # ● バトルプログラム BGM/BGSの開始
  3302.                                                                                                                         #--------------------------------------------------------------------------
  3303.                                                                                                                         def start_sound(data)
  3304.                                                                                                                                 @program_sound.push(data)
  3305.                                                                                                                                 name = data[5]
  3306.                                                                                                                                 case data[2]
  3307.                                                                                                                                 when "se"
  3308.                                                                                                                                         Audio.se_play("Audio/SE/" + name, data[4], data[3])
  3309.                                                                                                                                 when "bgm"
  3310.                                                                                                                                         name = RPG::BGM.last.name if data[5] == ""
  3311.                                                                                                                                         Audio.bgm_play("Audio/BGM/" + name, data[4], data[3])
  3312.                                                                                                                                 when "bgs"
  3313.                                                                                                                                         name = RPG::BGS.last.name if data[5] == ""
  3314.                                                                                                                                         Audio.bgs_play("Audio/BGS/" + name, data[4], data[3])
  3315.                                                                                                                                 end
  3316.                                                                                                                         end
  3317.                                                                                                                         #--------------------------------------------------------------------------
  3318.                                                                                                                         # ● バトルプログラム 周期SEの開始
  3319.                                                                                                                         #--------------------------------------------------------------------------
  3320.                                                                                                                         def start_program_se(data)
  3321.                                                                                                                                 data[3] = [data[2], data[3]]
  3322.                                                                                                                                 data[2] = data[3][0] + rand(data[3][1] + 1)
  3323.                                                                                                                                 @program_se.push(data)
  3324.                                                                                                                                 Audio.se_play("Audio/SE/" + data[7], data[5], data[4]) if data[6]
  3325.                                                                                                                         end
  3326.                                                                                                                         #--------------------------------------------------------------------------
  3327.                                                                                                                         # ● 周期SEの更新
  3328.                                                                                                                         #--------------------------------------------------------------------------
  3329.                                                                                                                         def update_program_se
  3330.                                                                                                                                 for data in @program_se
  3331.                                                                                                                                         data[2] -= 1
  3332.                                                                                                                                         next @program_se.delete(data) if data[1] > 0 && !$game_switches[data[1]]
  3333.                                                                                                                                         next @program_se.delete(data) if data[1] < 0 && !@switches[data[1].abs]
  3334.                                                                                                                                         next if data[2] != 0
  3335.                                                                                                                                         Audio.se_play("Audio/SE/" + data[7], data[5], data[4])
  3336.                                                                                                                                         data[2] = data[3][0] + rand(data[3][1] + 1)
  3337.                                                                                                                                 end  
  3338.                                                                                                                         end
  3339.                                                                                                                         #--------------------------------------------------------------------------
  3340.                                                                                                                         # ● バトルプログラム 周期シェイクの開始
  3341.                                                                                                                         #--------------------------------------------------------------------------
  3342.                                                                                                                         def start_program_shake(data)
  3343.                                                                                                                                 data[3] = [data[2], data[3]]
  3344.                                                                                                                                 data[2] = data[3][0] + rand(data[3][1] + 1)
  3345.                                                                                                                                 @program_shake.push(data)
  3346.                                                                                                                                 shake(data[4], data[5], data[6]) if data[7]
  3347.                                                                                                                         end
  3348.                                                                                                                         #--------------------------------------------------------------------------
  3349.                                                                                                                         # ● 周期シェイクの更新
  3350.                                                                                                                         #--------------------------------------------------------------------------
  3351.                                                                                                                         def update_program_shake
  3352.                                                                                                                                 for data in @program_shake
  3353.                                                                                                                                         data[2] -= 1
  3354.                                                                                                                                         next @program_shake.delete(data) if data[1] > 0 && !$game_switches[data[1]]
  3355.                                                                                                                                         next @program_shake.delete(data) if data[1] < 0 && !@switches[data[1].abs]
  3356.                                                                                                                                         next if data[2] != 0
  3357.                                                                                                                                         shake(data[4], data[5], data[6])
  3358.                                                                                                                                         data[2] = data[3][0] + rand(data[3][1] + 1)
  3359.                                                                                                                                 end  
  3360.                                                                                                                         end
  3361.                                                                                                                         #--------------------------------------------------------------------------
  3362.                                                                                                                         # ● バトルプログラム 周期色調変更の開始
  3363.                                                                                                                         #--------------------------------------------------------------------------
  3364.                                                                                                                         def start_program_color(data)
  3365.                                                                                                                                 data[3] = [data[2], data[3]]
  3366.                                                                                                                                 data[2] = data[3][0] + rand(data[3][1] + 1)
  3367.                                                                                                                                 data[7] = true if data[4] == 0 or data[4] == 4
  3368.                                                                                                                                 case data[4]
  3369.                                                                                                                                 when 1   ;data[4] = $game_troop.members
  3370.                                                                                                                                 when 2   ;data[4] = $game_party.battle_members
  3371.                                                                                                                                 when 3,4 ;data[4] = $game_troop.members + $game_party.battle_members
  3372.                                                                                                                                 else ;data[4] = []
  3373.                                                                                                                                 end
  3374.                                                                                                                                 @program_color.push(data)
  3375.                                                                                                                                 return if !data[6]
  3376.                                                                                                                                 for target in data[4] do target.sv.color_set = data[5] end if data[4] != []
  3377.                                                                                                                                         @color_set[1] = data[5] if data[7]
  3378.                                                                                                                                         @color_set[2] = data[5] if data[7]
  3379.                                                                                                                                 end
  3380.                                                                                                                                 #--------------------------------------------------------------------------
  3381.                                                                                                                                 # ● 周期色調変更の更新
  3382.                                                                                                                                 #--------------------------------------------------------------------------
  3383.                                                                                                                                 def update_program_color
  3384.                                                                                                                                         for data in @program_color
  3385.                                                                                                                                                 data[2] -= 1
  3386.                                                                                                                                                 next @program_color.delete(data) if data[1] > 0 && !$game_switches[data[1]]
  3387.                                                                                                                                                 next @program_color.delete(data) if data[1] < 0 && !@switches[data[1].abs]
  3388.                                                                                                                                                 next if data[2] != 0
  3389.                                                                                                                                                 for target in data[4] do target.sv.color_set = data[5] end if data[4] != []
  3390.                                                                                                                                                         @color_set[1] = data[5] if data[7]
  3391.                                                                                                                                                         @color_set[2] = data[5] if data[7]
  3392.                                                                                                                                                         data[2] = data[3][0] + rand(data[3][1] + 1)
  3393.                                                                                                                                                 end
  3394.                                                                                                                                         end
  3395.                                                                                                                                         #--------------------------------------------------------------------------
  3396.                                                                                                                                         # ● トランジション実行
  3397.                                                                                                                                         #--------------------------------------------------------------------------
  3398.                                                                                                                                         def perform_transition(data)
  3399.                                                                                                                                                 Graphics.transition(data[2], "Graphics/Pictures/" + data[3], data[1])
  3400.                                                                                                                                         end  
  3401.                                                                                                                                         #--------------------------------------------------------------------------
  3402.                                                                                                                                         # ● 背景からカメラの限界値を取得  data = [max_top, max_bottom, max_left, max_right]
  3403.                                                                                                                                         #--------------------------------------------------------------------------
  3404.                                                                                                                                         def setting(index, data)
  3405.                                                                                                                                                 @max_data[index - 1] = data
  3406.                                                                                                                                                 return if index != 2
  3407.                                                                                                                                                 setup
  3408.                                                                                                                                                 # カメラの中心座標
  3409.                                                                                                                                                 @center_x     = (Graphics.width / 2 + N03::CAMERA_POSITION[0]) * 100
  3410.                                                                                                                                                 @center_y     = (Graphics.height / 2 + N03::CAMERA_POSITION[1]) * 100
  3411.                                                                                                                                                 # 上下左右の移動限界距離
  3412.                                                                                                                                                 @max_top    = [@max_data[0][5], @max_data[1][5]].min * -1
  3413.                                                                                                                                                 @max_bottom = [@max_data[0][1], @max_data[1][1]].min + @max_top
  3414.                                                                                                                                                 @max_left   = [@max_data[0][4], @max_data[1][4]].min  * -1
  3415.                                                                                                                                                 @max_right  = [@max_data[0][3], @max_data[1][3]].min + @max_left
  3416.                                                                                                                                                 exist_data = @max_data[0] if !@max_data[1][6]
  3417.                                                                                                                                                 exist_data = @max_data[1] if !@max_data[0][6]
  3418.                                                                                                                                                 @max_top    = exist_data[5] * -1        if exist_data != nil
  3419.                                                                                                                                                 @max_bottom = exist_data[1] + @max_top  if exist_data != nil
  3420.                                                                                                                                                 @max_left   = exist_data[4] * -1        if exist_data != nil
  3421.                                                                                                                                                 @max_right  = exist_data[3] + @max_left if exist_data != nil
  3422.                                                                                                                                                 @max_top = @max_bottom = @max_left = @max_right = 0 if !@max_data[1][6] && !@max_data[0][6]
  3423.                                                                                                                                                 @max_width    = @max_right - @max_left + Graphics.width
  3424.                                                                                                                                                 @max_height   = @max_bottom - @max_top + Graphics.height
  3425.                                                                                                                                                 # ズームアウト限界値
  3426.                                                                                                                                                 max_zoom_x    = 100 * Graphics.width / @max_width
  3427.                                                                                                                                                 max_zoom_y    = 100 * Graphics.height / @max_height
  3428.                                                                                                                                                 @max_zoom_out = [max_zoom_x, max_zoom_y].max
  3429.                                                                                                                                         end
  3430.                                                                                                                                         #--------------------------------------------------------------------------
  3431.                                                                                                                                         # ● カメラ移動
  3432.                                                                                                                                         #--------------------------------------------------------------------------
  3433.                                                                                                                                         def move(target_x, target_y, zoom, time, screen = true)
  3434.                                                                                                                                                 # 戦闘背景以上のサイズまでズームアウトしないよう調整
  3435.                                                                                                                                                 @target_zoom = [zoom * 0.01, @max_zoom_out * 0.01].max
  3436.                                                                                                                                                 target_x *= -1 if screen && @mirror
  3437.                                                                                                                                                 # ズーム分の中心座標補正
  3438.                                                                                                                                                 if screen && @target_zoom != 1
  3439.                                                                                                                                                         target_x = target_x + @center_x
  3440.                                                                                                                                                         target_y = target_y + @center_y
  3441.                                                                                                                                                 end
  3442.                                                                                                                                                 adjust_x = @center_x * (@target_zoom - 1) / (@target_zoom ** 2 - @target_zoom)
  3443.                                                                                                                                                 adjust_y = @center_y * (@target_zoom - 1) / (@target_zoom ** 2 - @target_zoom)
  3444.                                                                                                                                                 adjust_x = 0 if adjust_x.nan?
  3445.                                                                                                                                                 adjust_y = 0 if adjust_y.nan?
  3446.                                                                                                                                                 adjust_x = @center_x if !screen && adjust_x == 0
  3447.                                                                                                                                                 adjust_y = @center_y if !screen && adjust_y == 0
  3448.                                                                                                                                                 @target_x = target_x - adjust_x.to_i
  3449.                                                                                                                                                 @target_y = target_y - adjust_y.to_i
  3450.                                                                                                                                                 @target_zoom = (@target_zoom * 1000).to_i
  3451.                                                                                                                                                 @zoom = @zoom.to_i
  3452.                                                                                                                                                 limit_test
  3453.                                                                                                                                                 # 時間0の場合は即実行
  3454.                                                                                                                                                 return @time = time.abs if time != 0
  3455.                                                                                                                                                 @time = 1
  3456.                                                                                                                                                 update
  3457.                                                                                                                                         end
  3458.                                                                                                                                         #--------------------------------------------------------------------------
  3459.                                                                                                                                         # ● 限界座標の試算
  3460.                                                                                                                                         #--------------------------------------------------------------------------
  3461.                                                                                                                                         def limit_test
  3462.                                                                                                                                                 new_width = @max_width * @target_zoom / 1000
  3463.                                                                                                                                                 new_height = @max_height * @target_zoom / 1000
  3464.                                                                                                                                                 new_max_right = @max_right - (@max_width - new_width)
  3465.                                                                                                                                                 new_max_bottom = @max_bottom - (@max_height - new_height)
  3466.                                                                                                                                                 # 画面の移動先が限界の場合、限界座標をセット
  3467.                                                                                                                                                 if @target_x < @max_left * 100
  3468.                                                                                                                                                         @target_x = @max_left * 100
  3469.                                                                                                                                                 end
  3470.                                                                                                                                                 if @target_x > new_max_right * 100
  3471.                                                                                                                                                         @target_x = new_max_right * 100
  3472.                                                                                                                                                 end
  3473.                                                                                                                                                 if @target_y < @max_top * 100
  3474.                                                                                                                                                         @target_y = @max_top * 100
  3475.                                                                                                                                                 end
  3476.                                                                                                                                                 if @target_y > new_max_bottom * 100
  3477.                                                                                                                                                         @target_y = new_max_bottom * 100
  3478.                                                                                                                                                 end
  3479.                                                                                                                                         end
  3480.                                                                                                                                         #--------------------------------------------------------------------------
  3481.                                                                                                                                         # ● 画面のシェイク
  3482.                                                                                                                                         #--------------------------------------------------------------------------
  3483.                                                                                                                                         def shake(power, speed, time)
  3484.                                                                                                                                                 @shake_x = power[0] * 100
  3485.                                                                                                                                                 @shake_y = power[1] * 100
  3486.                                                                                                                                                 @power_time_base = @power_time = speed
  3487.                                                                                                                                                 @shake_time = time
  3488.                                                                                                                                                 update_shake
  3489.                                                                                                                                         end
  3490.                                                                                                                                         #--------------------------------------------------------------------------
  3491.                                                                                                                                         # ● シェイクの更新
  3492.                                                                                                                                         #--------------------------------------------------------------------------
  3493.                                                                                                                                         def update_shake
  3494.                                                                                                                                                 @sx = (@sx * (@power_time - 1) + @shake_x) / @power_time
  3495.                                                                                                                                                 @sy = (@sy * (@power_time - 1) + @shake_y) / @power_time
  3496.                                                                                                                                                 @power_time -= 1
  3497.                                                                                                                                                 @shake_time -= 1
  3498.                                                                                                                                                 return @sx = @sy = 0 if @shake_time == 0
  3499.                                                                                                                                                 return if @power_time != 0
  3500.                                                                                                                                                 @power_time = @power_time_base
  3501.                                                                                                                                                 @shake_x = @shake_x * -4 / 5
  3502.                                                                                                                                                 @shake_y = @shake_y * -4 / 5
  3503.                                                                                                                                         end
  3504.                                                                                                                                         #--------------------------------------------------------------------------
  3505.                                                                                                                                         # ● フレーム更新
  3506.                                                                                                                                         #--------------------------------------------------------------------------
  3507.                                                                                                                                         def update
  3508.                                                                                                                                                 update_shake if @shake_time != 0
  3509.                                                                                                                                                 update_program
  3510.                                                                                                                                                 return if @time == 0
  3511.                                                                                                                                                 @x = (@x * (@time - 1) + @target_x) / @time
  3512.                                                                                                                                                 @y = (@y * (@time - 1) + @target_y) / @time
  3513.                                                                                                                                                 @zoom = (@zoom * (@time - 1) + @target_zoom) / @time
  3514.                                                                                                                                                 @time -= 1
  3515.                                                                                                                                         end
  3516.                                                                                                                                         #--------------------------------------------------------------------------
  3517.                                                                                                                                         # ● フレーム更新
  3518.                                                                                                                                         #--------------------------------------------------------------------------
  3519.                                                                                                                                         def update_program
  3520.                                                                                                                                                 update_program_switch if @program_switch != []
  3521.                                                                                                                                                 update_program_se     if @program_se != []
  3522.                                                                                                                                                 update_program_shake  if @program_shake != []
  3523.                                                                                                                                                 update_program_color  if @program_color != []
  3524.                                                                                                                                         end
  3525.                                                                                                                                 end
  3526.                                                                                                                                 #==============================================================================
  3527.                                                                                                                                 # ■ Scene_Battle
  3528.                                                                                                                                 #------------------------------------------------------------------------------
  3529.                                                                                                                                 #  バトル画面の処理を行うクラスです。
  3530.                                                                                                                                 #==============================================================================
  3531.                                                                                                                                 class Scene_Battle < Scene_Base
  3532.                                                                                                                                         #--------------------------------------------------------------------------
  3533.                                                                                                                                         # ● フレーム更新(基本)
  3534.                                                                                                                                         #--------------------------------------------------------------------------
  3535.                                                                                                                                         alias update_basic_scene_battle_n03 update_basic
  3536.                                                                                                                                         def update_basic
  3537.                                                                                                                                                 update_basic_scene_battle_n03
  3538.                                                                                                                                                 $sv_camera.update
  3539.                                                                                                                                                 $sv_camera.wait = N03::TURN_END_WAIT + 1 if $sv_camera.win_wait
  3540.                                                                                                                                                 camera_wait
  3541.                                                                                                                                         end
  3542.                                                                                                                                         #--------------------------------------------------------------------------
  3543.                                                                                                                                         # ● カメラウェイト
  3544.                                                                                                                                         #--------------------------------------------------------------------------
  3545.                                                                                                                                         def camera_wait
  3546.                                                                                                                                                 process_event if $sv_camera.event
  3547.                                                                                                                                                 $sv_camera.event = false if $sv_camera.event
  3548.                                                                                                                                                 while $sv_camera.wait != 0
  3549.                                                                                                                                                         Graphics.update
  3550.                                                                                                                                                         Input.update
  3551.                                                                                                                                                         update_all_windows
  3552.                                                                                                                                                         $game_timer.update
  3553.                                                                                                                                                         $game_troop.update
  3554.                                                                                                                                                         $sv_camera.update
  3555.                                                                                                                                                         @spriteset.update
  3556.                                                                                                                                                         update_info_viewport
  3557.                                                                                                                                                         update_message_open
  3558.                                                                                                                                                         $sv_camera.wait -= 1 if $sv_camera.wait > 0
  3559.                                                                                                                                                         $sv_camera.wait = 1 if $sv_camera.wait == 0 && @spriteset.effect?
  3560.                                                                                                                                                         BattleManager.victory if $sv_camera.win_wait && $sv_camera.wait == 0
  3561.                                                                                                                                                 end
  3562.                                                                                                                                         end
  3563.                                                                                                                                         #--------------------------------------------------------------------------
  3564.                                                                                                                                         # ● カメラウェイトのセット
  3565.                                                                                                                                         #--------------------------------------------------------------------------
  3566.                                                                                                                                         def set_camera_wait(time)
  3567.                                                                                                                                                 $sv_camera.wait = time
  3568.                                                                                                                                                 camera_wait
  3569.                                                                                                                                         end  
  3570.                                                                                                                                         #--------------------------------------------------------------------------
  3571.                                                                                                                                         # ● エフェクト実行が終わるまでウェイト ★再定義
  3572.                                                                                                                                         #--------------------------------------------------------------------------
  3573.                                                                                                                                         def wait_for_effect
  3574.                                                                                                                                         end
  3575.                                                                                                                                         #--------------------------------------------------------------------------
  3576.                                                                                                                                         # ● ターン開始
  3577.                                                                                                                                         #--------------------------------------------------------------------------
  3578.                                                                                                                                         alias turn_start_scene_battle_n03 turn_start
  3579.                                                                                                                                         def turn_start
  3580.                                                                                                                                                 turn_start_scene_battle_n03
  3581.                                                                                                                                                 N03.camera(nil, N03::BATTLE_CAMERA["ターン開始後"].dup)
  3582.                                                                                                                                         end
  3583.                                                                                                                                         #--------------------------------------------------------------------------
  3584.                                                                                                                                         # ● ターン終了
  3585.                                                                                                                                         #--------------------------------------------------------------------------
  3586.                                                                                                                                         alias turn_end_scene_battle_n03 turn_end
  3587.                                                                                                                                         def turn_end
  3588.                                                                                                                                                 turn_end_scene_battle_n03
  3589.                                                                                                                                                 for member in $game_troop.members + $game_party.members
  3590.                                                                                                                                                         N03.set_damage(member, member.sv.result_damage[0],member.sv.result_damage[1])
  3591.                                                                                                                                                         member.sv.result_damage = [0,0]
  3592.                                                                                                                                                         @spriteset.set_damage_pop(member) if member.result.hp_damage != 0 or member.result.mp_damage != 0
  3593.                                                                                                                                                 end
  3594.                                                                                                                                                 set_camera_wait(N03::TURN_END_WAIT)
  3595.                                                                                                                                                 N03.camera(nil, N03::BATTLE_CAMERA["ターン開始前"].dup) if $game_party.inputable?
  3596.                                                                                                                                                 @log_window.clear
  3597.                                                                                                                                         end
  3598.                                                                                                                                         #--------------------------------------------------------------------------
  3599.                                                                                                                                         # ● スキル/アイテムの使用 ★再定義
  3600.                                                                                                                                         #--------------------------------------------------------------------------
  3601.                                                                                                                                         def use_item
  3602.                                                                                                                                                 item = @subject.current_action.item
  3603.                                                                                                                                                 display_item(item)
  3604.                                                                                                                                                 @subject.use_item(item)
  3605.                                                                                                                                                 refresh_status
  3606.                                                                                                                                                 @targets = @subject.current_action.make_targets.compact
  3607.                                                                                                                                                 @targets = [@subject] if @targets.size == 0
  3608.                                                                                                                                                 set_substitute(item)
  3609.                                                                                                                                                 for time in item.repeats.times do play_sideview(@targets, item) end
  3610.                                                                                                                                                         end_reaction(item)
  3611.                                                                                                                                                         display_end_item
  3612.                                                                                                                                                 end
  3613.                                                                                                                                                 #--------------------------------------------------------------------------
  3614.                                                                                                                                                 # ● スキル/アイテム名の表示
  3615.                                                                                                                                                 #--------------------------------------------------------------------------
  3616.                                                                                                                                                 def display_item(item)
  3617.                                                                                                                                                         return @log_window.display_use_item(@subject, item) if N03::BATTLE_LOG
  3618.                                                                                                                                                         @log_window.off
  3619.                                                                                                                                                         @skill_name_window = Window_Skill_name.new(item.name) unless N03::NO_DISPLAY_SKILL_ID.include?(item.id) && item.is_a?(RPG::Skill)
  3620.                                                                                                                                                 end  
  3621.                                                                                                                                                 #--------------------------------------------------------------------------
  3622.                                                                                                                                                 # ● スキル/アイテム名の表示終了
  3623.                                                                                                                                                 #--------------------------------------------------------------------------
  3624.                                                                                                                                                 def display_end_item
  3625.                                                                                                                                                         @skill_name_window.dispose if @skill_name_window != nil
  3626.                                                                                                                                                         @skill_name_window = nil
  3627.                                                                                                                                                         set_camera_wait(N03::ACTION_END_WAIT) if @subject.sv.derivation_skill_id == 0
  3628.                                                                                                                                                         @log_window.clear if N03::BATTLE_LOG
  3629.                                                                                                                                                 end  
  3630.                                                                                                                                                 #--------------------------------------------------------------------------
  3631.                                                                                                                                                 # ● 反撃/魔法反射/身代わり処理
  3632.                                                                                                                                                 #--------------------------------------------------------------------------
  3633.                                                                                                                                                 def end_reaction(item)
  3634.                                                                                                                                                         end_substitute if @substitute != nil
  3635.                                                                                                                                                         set_reflection(item) if @reflection_data != nil
  3636.                                                                                                                                                         set_counter_attack if @counter_attacker != nil
  3637.                                                                                                                                                 end  
  3638.                                                                                                                                                 #--------------------------------------------------------------------------
  3639.                                                                                                                                                 # ● 反撃の発動 ★再定義
  3640.                                                                                                                                                 #--------------------------------------------------------------------------
  3641.                                                                                                                                                 def invoke_counter_attack(target, item)
  3642.                                                                                                                                                         return if @subject.sv.counter_id != 0
  3643.                                                                                                                                                         @counter_attacker = [] if @counter_attacker == nil
  3644.                                                                                                                                                         return apply_item_effects(apply_substitute(target, item), item) if !target.movable?
  3645.                                                                                                                                                         @log_window.add_text(sprintf(Vocab::CounterAttack, target.name)) if N03::BATTLE_LOG
  3646.                                                                                                                                                         target.sv.counter_id = target.sv.counter_skill_id
  3647.                                                                                                                                                         @counter_attacker.push(target)
  3648.                                                                                                                                                 end
  3649.                                                                                                                                                 #--------------------------------------------------------------------------
  3650.                                                                                                                                                 # ● 魔法反射の発動 ★再定義
  3651.                                                                                                                                                 #--------------------------------------------------------------------------
  3652.                                                                                                                                                 def invoke_magic_reflection(target, item)
  3653.                                                                                                                                                         return if @subject.sv.reflection_id != 0
  3654.                                                                                                                                                         @log_window.add_text(sprintf(Vocab::MagicReflection, target.name)) if N03::BATTLE_LOG
  3655.                                                                                                                                                         target.sv.reflection_id = target.sv.reflection_anime_id
  3656.                                                                                                                                                 end
  3657.                                                                                                                                                 #--------------------------------------------------------------------------
  3658.                                                                                                                                                 # ● 身代わりの適用 ★再定義
  3659.                                                                                                                                                 #--------------------------------------------------------------------------
  3660.                                                                                                                                                 def apply_substitute(target, item)
  3661.                                                                                                                                                         return target if @substitute == nil
  3662.                                                                                                                                                         return target if !check_substitute(target, item)
  3663.                                                                                                                                                         return @substitute
  3664.                                                                                                                                                 end
  3665.                                                                                                                                                 #--------------------------------------------------------------------------
  3666.                                                                                                                                                 # ● 身代わりセット
  3667.                                                                                                                                                 #--------------------------------------------------------------------------
  3668.                                                                                                                                                 def set_substitute(item)
  3669.                                                                                                                                                         @substitute = N03.get_enemy_unit(@subject).substitute_battler
  3670.                                                                                                                                                         return if @substitute == nil
  3671.                                                                                                                                                         s_targets = []
  3672.                                                                                                                                                         for i in [email]0...@targets.size[/email]
  3673.                                                                                                                                                                 next if @targets[i] == @substitute
  3674.                                                                                                                                                                 next if !check_substitute(@targets[i], item)
  3675.                                                                                                                                                                 @log_window.add_text(sprintf(Vocab::Substitute, @substitute.name, @targets[i].name))
  3676.                                                                                                                                                                 @targets[i].sv.start_action(@targets[i].sv.substitute_receiver_start_action)
  3677.                                                                                                                                                                 s_targets.push(@targets[i])
  3678.                                                                                                                                                                 @targets[i] = @substitute
  3679.                                                                                                                                                         end
  3680.                                                                                                                                                         return @substitute = nil if s_targets == []
  3681.                                                                                                                                                         @substitute.sv.set_target(s_targets)
  3682.                                                                                                                                                         @substitute.sv.start_action(@substitute.sv.substitute_start_action)
  3683.                                                                                                                                                 end  
  3684.                                                                                                                                                 #--------------------------------------------------------------------------
  3685.                                                                                                                                                 # ● 身代わり終了
  3686.                                                                                                                                                 #--------------------------------------------------------------------------
  3687.                                                                                                                                                 def end_substitute
  3688.                                                                                                                                                         for member in @substitute.sv.target_battler
  3689.                                                                                                                                                                 member.sv.start_action(member.sv.substitute_receiver_end_action)
  3690.                                                                                                                                                         end  
  3691.                                                                                                                                                         @substitute.sv.start_action(@substitute.sv.substitute_end_action)
  3692.                                                                                                                                                         @substitute = nil
  3693.                                                                                                                                                 end
  3694.                                                                                                                                                 #--------------------------------------------------------------------------
  3695.                                                                                                                                                 # ● 反撃
  3696.                                                                                                                                                 #--------------------------------------------------------------------------
  3697.                                                                                                                                                 def set_counter_attack
  3698.                                                                                                                                                         pre_subject = @subject
  3699.                                                                                                                                                         for attacker in @counter_attacker
  3700.                                                                                                                                                                 @subject = attacker
  3701.                                                                                                                                                                 item = $data_skills[attacker.sv.counter_skill_id]
  3702.                                                                                                                                                                 play_sideview([pre_subject], item)
  3703.                                                                                                                                                         end
  3704.                                                                                                                                                         # 同一カウンター者を考慮してカウンターIDの初期化はアクション後に実行
  3705.                                                                                                                                                         for attacker in @counter_attacker do attacker.sv.counter_id = 0 end
  3706.                                                                                                                                                                 @subject = pre_subject
  3707.                                                                                                                                                                 @counter_attacker = nil
  3708.                                                                                                                                                         end
  3709.                                                                                                                                                         #--------------------------------------------------------------------------
  3710.                                                                                                                                                         # ● 魔法反射
  3711.                                                                                                                                                         #--------------------------------------------------------------------------
  3712.                                                                                                                                                         def set_reflection(item)
  3713.                                                                                                                                                                 @log_window.back_to(1)
  3714.                                                                                                                                                                 for data in @reflection_data
  3715.                                                                                                                                                                         @subject.sv.damage_action(@subject, item)
  3716.                                                                                                                                                                         N03.set_damage_anime_data([@subject], @subject, data)
  3717.                                                                                                                                                                         apply_item_effects(@subject, item)
  3718.                                                                                                                                                                         @spriteset.set_damage_pop(@subject)
  3719.                                                                                                                                                                 end
  3720.                                                                                                                                                                 set_camera_wait(N03.get_anime_time(@reflection_data[0][0]))
  3721.                                                                                                                                                                 @reflection_data = nil
  3722.                                                                                                                                                         end
  3723.                                                                                                                                                         #--------------------------------------------------------------------------
  3724.                                                                                                                                                         # ● サイドビューアクション実行
  3725.                                                                                                                                                         #--------------------------------------------------------------------------
  3726.                                                                                                                                                         def play_sideview(targets, item)
  3727.                                                                                                                                                                 @subject.sv.set_target(targets)
  3728.                                                                                                                                                                 return if @subject.sv.attack_action(item) == nil
  3729.                                                                                                                                                                 return if !@subject.movable?
  3730.                                                                                                                                                                 return if item.scope != 9 && item.scope != 10 && !N03.targets_alive?(targets)
  3731.                                                                                                                                                                 @subject.sv.start_action(@subject.sv.attack_action(item))
  3732.                                                                                                                                                                 @subject.sv.unshift_action(@subject.sv.flash_action) if @subject.flash_flg
  3733.                                                                                                                                                                 @subject.sv.active = true
  3734.                                                                                                                                                                 @subject.sv.command_action = false
  3735.                                                                                                                                                                 loop do
  3736.                                                                                                                                                                         update_basic
  3737.                                                                                                                                                                         data = @subject.sv.play_data
  3738.                                                                                                                                                                         @targets = N03.s_targets(@subject) if data[0] == "second_targets_set"
  3739.                                                                                                                                                                         N03.targets_set(@subject)          if data[0] == "targets_set"
  3740.                                                                                                                                                                         @immortal = N03.immortaling        if data[0] == "no_collapse" && !N03.dead_attack?(@subject, item)
  3741.                                                                                                                                                                         @immortal = N03.unimmortaling      if data[0] == "collapse"
  3742.                                                                                                                                                                         next set_move_anime(item)          if @subject.sv.m_a_data != []
  3743.                                                                                                                                                                         set_damage(item)                   if @subject.sv.set_damage
  3744.                                                                                                                                                                         break N03.derived_skill(@subject)  if @subject.sv.derivation_skill_id != 0
  3745.                                                                                                                                                                         break                              if @subject.sv.action_end or @subject.hidden?
  3746.                                                                                                                                                                 end
  3747.                                                                                                                                                                 @immortal = N03.unimmortaling        if @immortal
  3748.                                                                                                                                                         end
  3749.                                                                                                                                                         #--------------------------------------------------------------------------
  3750.                                                                                                                                                         # ● ダメージの実行
  3751.                                                                                                                                                         #--------------------------------------------------------------------------
  3752.                                                                                                                                                         def set_damage(item)
  3753.                                                                                                                                                                 targets = @targets
  3754.                                                                                                                                                                 targets = [@subject.sv.individual_targets[0]] if @subject.sv.individual_targets.size != 0
  3755.                                                                                                                                                                 for target in targets do damage_anime(targets.dup, target, item) end
  3756.                                                                                                                                                                         @subject.sv.set_damage = false
  3757.                                                                                                                                                                         @subject.sv.damage_anime_data = []
  3758.                                                                                                                                                                 end
  3759.                                                                                                                                                                 #--------------------------------------------------------------------------
  3760.                                                                                                                                                                 # ● ダメージ戦闘アニメ処理
  3761.                                                                                                                                                                 #--------------------------------------------------------------------------
  3762.                                                                                                                                                                 def damage_anime(targets, target, item)
  3763.                                                                                                                                                                         @log_window.back_to(1) if @log_window.line_number == 5
  3764.                                                                                                                                                                         return if item.scope != 9 && item.scope != 10 && target.dead?
  3765.                                                                                                                                                                         @miss = false
  3766.                                                                                                                                                                         invoke_item(target,item)
  3767.                                                                                                                                                                         if target.result.missed
  3768.                                                                                                                                                                                 target.sv.miss_action(@subject, item)
  3769.                                                                                                                                                                                 return @miss = true
  3770.                                                                                                                                                                         elsif target.result.evaded or target.sv.counter_id != 0
  3771.                                                                                                                                                                                 target.sv.evasion_action(@subject, item)
  3772.                                                                                                                                                                                 return @miss = true
  3773.                                                                                                                                                                         elsif target.sv.reflection_id != 0
  3774.                                                                                                                                                                                 N03.set_damage_anime_data(targets, target, [target.sv.reflection_id, false, false, true])
  3775.                                                                                                                                                                                 target.sv.reflection_id = 0
  3776.                                                                                                                                                                                 @reflection_data = [] if @reflection_data == nil
  3777.                                                                                                                                                                                 return @reflection_data.push([N03.get_attack_anime_id(-3, @subject), false, false, true])
  3778.                                                                                                                                                                         end
  3779.                                                                                                                                                                         target.sv.damage_action(@subject, item)
  3780.                                                                                                                                                                         N03.set_damage(@subject, -target.result.hp_drain, -target.result.mp_drain) if target != @subject
  3781.                                                                                                                                                                         @spriteset.set_damage_pop(target)
  3782.                                                                                                                                                                         @spriteset.set_damage_pop(@subject) if target != @subject && @subject.result.hp_damage != 0 or @subject.result.mp_damage != 0
  3783.                                                                                                                                                                         N03.set_damage_anime_data(targets, target, @subject.sv.damage_anime_data) if @subject.sv.damage_anime_data != []
  3784.                                                                                                                                                                 end
  3785.                                                                                                                                                                 #--------------------------------------------------------------------------
  3786.                                                                                                                                                                 # ● 飛ばしアニメ処理
  3787.                                                                                                                                                                 #--------------------------------------------------------------------------
  3788.                                                                                                                                                                 def set_move_anime(item)
  3789.                                                                                                                                                                         for data in @subject.sv.m_a_data
  3790.                                                                                                                                                                                 @subject.sv.damage_anime_data = data[4]
  3791.                                                                                                                                                                                 hit_targets = []
  3792.                                                                                                                                                                                 for target in data[1]
  3793.                                                                                                                                                                                         damage_anime(data[1], target, item) if data[0]
  3794.                                                                                                                                                                                         hit_targets.push(target) if !@miss
  3795.                                                                                                                                                                                 end
  3796.                                                                                                                                                                                 @miss = false if !data[3]
  3797.                                                                                                                                                                                 @spriteset.set_hit_animation(@subject, data[2], hit_targets, @miss)
  3798.                                                                                                                                                                         end
  3799.                                                                                                                                                                         @subject.sv.set_damage = false
  3800.                                                                                                                                                                         @subject.sv.m_a_data = []
  3801.                                                                                                                                                                 end
  3802.                                                                                                                                                         end
  3803.                                                                                                                                                         #==============================================================================
  3804.                                                                                                                                                         # ■ DataManager
  3805.                                                                                                                                                         #------------------------------------------------------------------------------
  3806.                                                                                                                                                         #  データベースとゲームオブジェクトを管理するモジュールです。
  3807.                                                                                                                                                         #==============================================================================
  3808.                                                                                                                                                         module DataManager
  3809.                                                                                                                                                                 #--------------------------------------------------------------------------
  3810.                                                                                                                                                                 # ● 各種ゲームオブジェクトの作成 ★再定義
  3811.                                                                                                                                                                 #--------------------------------------------------------------------------
  3812.                                                                                                                                                                 def self.create_game_objects
  3813.                                                                                                                                                                         $game_temp          = Game_Temp.new
  3814.                                                                                                                                                                         $game_system        = Game_System.new
  3815.                                                                                                                                                                         $game_timer         = Game_Timer.new
  3816.                                                                                                                                                                         $game_message       = Game_Message.new
  3817.                                                                                                                                                                         $game_switches      = Game_Switches.new
  3818.                                                                                                                                                                         $game_variables     = Game_Variables.new
  3819.                                                                                                                                                                         $game_self_switches = Game_SelfSwitches.new
  3820.                                                                                                                                                                         $game_actors        = Game_Actors.new
  3821.                                                                                                                                                                         $game_party         = Game_Party.new
  3822.                                                                                                                                                                         $game_troop         = Game_Troop.new
  3823.                                                                                                                                                                         $game_map           = Game_Map.new
  3824.                                                                                                                                                                         $game_player        = Game_Player.new
  3825.                                                                                                                                                                         $sv_camera          = Battle_Camera.new
  3826.                                                                                                                                                                 end
  3827.                                                                                                                                                         end
  3828.                                                                                                                                                         #==============================================================================
  3829.                                                                                                                                                         # ■ BattleManager
  3830.                                                                                                                                                         #------------------------------------------------------------------------------
  3831.                                                                                                                                                         #  戦闘の進行を管理するモジュールです。
  3832.                                                                                                                                                         #==============================================================================
  3833.                                                                                                                                                         module BattleManager
  3834.                                                                                                                                                                 #--------------------------------------------------------------------------
  3835.                                                                                                                                                                 # ● エンカウント時の処理 ★再定義
  3836.                                                                                                                                                                 #--------------------------------------------------------------------------
  3837.                                                                                                                                                                 def self.on_encounter
  3838.                                                                                                                                                                         @preemptive = (rand < rate_preemptive)
  3839.                                                                                                                                                                         @surprise = (rand < rate_surprise && !@preemptive)
  3840.                                                                                                                                                                         $sv_camera.mirror = @surprise if N03::BACK_ATTACK
  3841.                                                                                                                                                                 end
  3842.                                                                                                                                                                 #--------------------------------------------------------------------------
  3843.                                                                                                                                                                 # ● 勝利の処理 ★再定義
  3844.                                                                                                                                                                 #--------------------------------------------------------------------------
  3845.                                                                                                                                                                 def self.process_victory
  3846.                                                                                                                                                                         $sv_camera.win_wait = true
  3847.                                                                                                                                                                 end  
  3848.                                                                                                                                                                 #--------------------------------------------------------------------------
  3849.                                                                                                                                                                 # ● 勝利
  3850.                                                                                                                                                                 #--------------------------------------------------------------------------
  3851.                                                                                                                                                                 def self.victory
  3852.                                                                                                                                                                         $sv_camera.win_wait = false
  3853.                                                                                                                                                                         N03.camera(nil, N03::BATTLE_CAMERA["戦闘終了時"].dup)
  3854.                                                                                                                                                                         for member in $game_party.members do member.sv.start_action(member.sv.win) if member.movable? end
  3855.                                                                                                                                                                                 play_battle_end_me
  3856.                                                                                                                                                                                 replay_bgm_and_bgs
  3857.                                                                                                                                                                                 $game_message.add(sprintf(Vocab::Victory, $game_party.name))
  3858.                                                                                                                                                                                 display_exp
  3859.                                                                                                                                                                                 gain_gold
  3860.                                                                                                                                                                                 gain_drop_items
  3861.                                                                                                                                                                                 gain_exp
  3862.                                                                                                                                                                                 SceneManager.return
  3863.                                                                                                                                                                                 battle_end(0)
  3864.                                                                                                                                                                                 return true
  3865.                                                                                                                                                                         end
  3866.                                                                                                                                                                         #--------------------------------------------------------------------------
  3867.                                                                                                                                                                         # ● 逃走の処理 ★再定義
  3868.                                                                                                                                                                         #--------------------------------------------------------------------------
  3869.                                                                                                                                                                         def self.process_escape
  3870.                                                                                                                                                                                 $game_message.add(sprintf(Vocab::EscapeStart, $game_party.name))
  3871.                                                                                                                                                                                 success = @preemptive ? true : (rand < @escape_ratio)
  3872.                                                                                                                                                                                 Sound.play_escape
  3873.                                                                                                                                                                                 if success
  3874.                                                                                                                                                                                         process_abort
  3875.                                                                                                                                                                                         for member in $game_party.members do member.sv.start_action(member.sv.escape) if member.movable? end
  3876.                                                                                                                                                                                         else
  3877.                                                                                                                                                                                                 @escape_ratio += 0.1
  3878.                                                                                                                                                                                                 $game_message.add('\.' + Vocab::EscapeFailure)
  3879.                                                                                                                                                                                                 $game_party.clear_actions
  3880.                                                                                                                                                                                                 for member in $game_party.members do member.sv.start_action(member.sv.escape_ng) if member.movable? end
  3881.                                                                                                                                                                                                 end
  3882.                                                                                                                                                                                                 wait_for_message
  3883.                                                                                                                                                                                                 return success
  3884.                                                                                                                                                                                         end
  3885.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3886.                                                                                                                                                                                         # ● 次のコマンド入力へ ★再定義
  3887.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3888.                                                                                                                                                                                         def self.next_command
  3889.                                                                                                                                                                                                 begin
  3890.                                                                                                                                                                                                         if !actor || !actor.next_command
  3891.                                                                                                                                                                                                                 $game_party.battle_members[@actor_index].sv.command_action = true
  3892.                                                                                                                                                                                                                 @actor_index += 1
  3893.                                                                                                                                                                                                                 if @actor_index >= $game_party.members.size
  3894.                                                                                                                                                                                                                         for member in $game_party.battle_members.reverse
  3895.                                                                                                                                                                                                                                 break member.sv.start_action(member.sv.command_a) if member.inputable?
  3896.                                                                                                                                                                                                                         end
  3897.                                                                                                                                                                                                                         return false
  3898.                                                                                                                                                                                                                 end
  3899.                                                                                                                                                                                                         end
  3900.                                                                                                                                                                                                 end until actor.inputable?
  3901.                                                                                                                                                                                                 actor.sv.start_action(actor.sv.command_b) if actor != nil && actor.inputable?
  3902.                                                                                                                                                                                                 if pre_actor
  3903.                                                                                                                                                                                                         pre_actor.sv.start_action(pre_actor.sv.command_a) if pre_actor != nil && pre_actor.inputable?
  3904.                                                                                                                                                                                                 end
  3905.                                                                                                                                                                                                 return true
  3906.                                                                                                                                                                                         end
  3907.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3908.                                                                                                                                                                                         # ● 前のコマンド入力へ ★再定義
  3909.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3910.                                                                                                                                                                                         def self.prior_command
  3911.                                                                                                                                                                                                 begin
  3912.                                                                                                                                                                                                         if !actor || !actor.prior_command
  3913.                                                                                                                                                                                                                 $game_party.battle_members[@actor_index].sv.command_action = false
  3914.                                                                                                                                                                                                                 @actor_index -= 1
  3915.                                                                                                                                                                                                                 if @actor_index < 0
  3916.                                                                                                                                                                                                                         for member in $game_party.battle_members
  3917.                                                                                                                                                                                                                                 break member.sv.start_action(member.sv.command_a) if member.inputable?
  3918.                                                                                                                                                                                                                         end
  3919.                                                                                                                                                                                                                         return false
  3920.                                                                                                                                                                                                                 end
  3921.                                                                                                                                                                                                         end
  3922.                                                                                                                                                                                                 end until actor.inputable?
  3923.                                                                                                                                                                                                 actor.make_actions if actor.inputable?
  3924.                                                                                                                                                                                                 actor.sv.start_action(actor.sv.command_b) if actor.inputable?
  3925.                                                                                                                                                                                                 after_actor.sv.start_action(after_actor.sv.command_a) if after_actor != nil && after_actor.inputable?
  3926.                                                                                                                                                                                                 return true
  3927.                                                                                                                                                                                         end
  3928.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3929.                                                                                                                                                                                         # ● コマンド入力前のアクターを取得
  3930.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3931.                                                                                                                                                                                         def self.pre_actor
  3932.                                                                                                                                                                                                 return if @actor_index == 0
  3933.                                                                                                                                                                                                 $game_party.members[@actor_index - 1]
  3934.                                                                                                                                                                                         end
  3935.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3936.                                                                                                                                                                                         # ● コマンド入力後のアクターを取得
  3937.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3938.                                                                                                                                                                                         def self.after_actor
  3939.                                                                                                                                                                                                 $game_party.members[@actor_index + 1]
  3940.                                                                                                                                                                                         end
  3941.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3942.                                                                                                                                                                                         # ● 戦闘行動者を前に追加
  3943.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3944.                                                                                                                                                                                         def self.unshift_action_battlers(battler)
  3945.                                                                                                                                                                                                 @action_battlers.unshift(battler)
  3946.                                                                                                                                                                                         end
  3947.                                                                                                                                                                                 end  
  3948.                                                                                                                                                                                 #==============================================================================
  3949.                                                                                                                                                                                 # ■ Game_Battler
  3950.                                                                                                                                                                                 #------------------------------------------------------------------------------
  3951.                                                                                                                                                                                 #  スプライトや行動に関するメソッドを追加したバトラーのクラスです。
  3952.                                                                                                                                                                                 #==============================================================================
  3953.                                                                                                                                                                                 class Game_Battler < Game_BattlerBase
  3954.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3955.                                                                                                                                                                                         # ● 公開インスタンス変数
  3956.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3957.                                                                                                                                                                                         attr_reader   :sv                     # サイドビューデータ
  3958.                                                                                                                                                                                         attr_accessor :flash_flg              # 閃きフラグ
  3959.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3960.                                                                                                                                                                                         # ● オブジェクト初期化
  3961.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3962.                                                                                                                                                                                         alias initialize_game_battler_n03 initialize
  3963.                                                                                                                                                                                         def initialize
  3964.                                                                                                                                                                                                 initialize_game_battler_n03
  3965.                                                                                                                                                                                                 @sv = SideView.new(self)
  3966.                                                                                                                                                                                         end
  3967.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3968.                                                                                                                                                                                         # ● 現在の戦闘行動を除去
  3969.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3970.                                                                                                                                                                                         alias remove_current_action_game_battler_n03 remove_current_action
  3971.                                                                                                                                                                                         def remove_current_action
  3972.                                                                                                                                                                                                 return @sv.derivation_skill_id = 0 if @sv.derivation_skill_id != 0
  3973.                                                                                                                                                                                                 remove_current_action_game_battler_n03
  3974.                                                                                                                                                                                         end
  3975.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3976.                                                                                                                                                                                         # ● ターン終了処理
  3977.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3978.                                                                                                                                                                                         alias on_turn_end_game_battler_n03 on_turn_end
  3979.                                                                                                                                                                                         def on_turn_end
  3980.                                                                                                                                                                                                 on_turn_end_game_battler_n03
  3981.                                                                                                                                                                                                 @sv.add_state = []
  3982.                                                                                                                                                                                                 @sv.result_damage = [@result.hp_damage, @result.mp_damage]
  3983.                                                                                                                                                                                         end
  3984.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3985.                                                                                                                                                                                         # ● パラメータ条件比較 data = [種別, 数値, 判別]
  3986.                                                                                                                                                                                         #--------------------------------------------------------------------------
  3987.                                                                                                                                                                                         def comparison_parameter(data)
  3988.                                                                                                                                                                                                 return true if data[0][0] == 0
  3989.                                                                                                                                                                                                 kind = data[0]
  3990.                                                                                                                                                                                                 num = data[1]
  3991.                                                                                                                                                                                                 select = data[2]
  3992.                                                                                                                                                                                                 case kind
  3993.                                                                                                                                                                                                 when  1 ; par = level
  3994.                                                                                                                                                                                                 when  2 ; par = mhp
  3995.                                                                                                                                                                                                 when  3 ; par = mmp
  3996.                                                                                                                                                                                                 when  4 ; par = hp
  3997.                                                                                                                                                                                                 when  5 ; par = mp
  3998.                                                                                                                                                                                                 when  6 ; par = tp
  3999.                                                                                                                                                                                                 when  7 ; par = atk
  4000.                                                                                                                                                                                                 when  8 ; par = self.def
  4001.                                                                                                                                                                                                 when  9 ; par = mat
  4002.                                                                                                                                                                                                 when 10 ; par = mdf
  4003.                                                                                                                                                                                                 when 11 ; par = agi
  4004.                                                                                                                                                                                                 when 12 ; par = luk
  4005.                                                                                                                                                                                                 end
  4006.                                                                                                                                                                                                 if num < 0
  4007.                                                                                                                                                                                                         case kind
  4008.                                                                                                                                                                                                         when  4 ; num = mhp * num / 100
  4009.                                                                                                                                                                                                         when  5 ; num = mmp * num / 100
  4010.                                                                                                                                                                                                         when  6 ; num = max_tp * num / 100
  4011.                                                                                                                                                                                                         end
  4012.                                                                                                                                                                                                         num = num.abs
  4013.                                                                                                                                                                                                 end  
  4014.                                                                                                                                                                                                 case select
  4015.                                                                                                                                                                                                 when  0 ; return par == num
  4016.                                                                                                                                                                                                 when  1 ; return par < num
  4017.                                                                                                                                                                                                 when  2 ; return par > num
  4018.                                                                                                                                                                                                 end
  4019.                                                                                                                                                                                         end
  4020.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4021.                                                                                                                                                                                         # ● 装備条件比較 data = [装備種別, タイプID]
  4022.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4023.                                                                                                                                                                                         def comparison_equip(data)
  4024.                                                                                                                                                                                                 kind = data[0]
  4025.                                                                                                                                                                                                 items = weapons if kind == 0
  4026.                                                                                                                                                                                                 items = armors  if kind == 1
  4027.                                                                                                                                                                                                 for item in items
  4028.                                                                                                                                                                                                         for id in data[1]
  4029.                                                                                                                                                                                                                 return true if id > 0 && item.is_a?(RPG::Weapon) && item == $data_weapons[id.abs]
  4030.                                                                                                                                                                                                                 return true if id > 0 && item.is_a?(RPG::Armor) && item == $data_armors[id.abs]
  4031.                                                                                                                                                                                                                 return true if id < 0 && item.is_a?(RPG::Weapon) && item.wtype_id == id.abs
  4032.                                                                                                                                                                                                                 return true if id < 0 && item.is_a?(RPG::Armor) && item.stype_id == id.abs
  4033.                                                                                                                                                                                                         end
  4034.                                                                                                                                                                                                 end
  4035.                                                                                                                                                                                                 return false
  4036.                                                                                                                                                                                         end
  4037.                                                                                                                                                                                 end  
  4038.                                                                                                                                                                                 #==============================================================================
  4039.                                                                                                                                                                                 # ■ Game_Actor
  4040.                                                                                                                                                                                 #------------------------------------------------------------------------------
  4041.                                                                                                                                                                                 #  アクターを扱うクラスです。
  4042.                                                                                                                                                                                 #==============================================================================
  4043.                                                                                                                                                                                 class Game_Actor < Game_Battler
  4044.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4045.                                                                                                                                                                                         # ● 公開インスタンス変数
  4046.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4047.                                                                                                                                                                                         attr_reader :actor_id                    # ID
  4048.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4049.                                                                                                                                                                                         # ● ID
  4050.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4051.                                                                                                                                                                                         def id
  4052.                                                                                                                                                                                                 return @actor_id
  4053.                                                                                                                                                                                         end
  4054.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4055.                                                                                                                                                                                         # ● スプライトを使うか? ★再定義
  4056.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4057.                                                                                                                                                                                         def use_sprite?
  4058.                                                                                                                                                                                                 return true
  4059.                                                                                                                                                                                         end
  4060.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4061.                                                                                                                                                                                         # ● ダメージ効果の実行 ★再定義
  4062.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4063.                                                                                                                                                                                         def perform_damage_effect
  4064.                                                                                                                                                                                                 return if !N03::ACTOR_DAMAGE
  4065.                                                                                                                                                                                                 $game_troop.screen.start_shake(5, 5, 10)
  4066.                                                                                                                                                                                                 @sprite_effect_type = :blink
  4067.                                                                                                                                                                                                 Sound.play_actor_damage
  4068.                                                                                                                                                                                         end
  4069.                                                                                                                                                                                 end
  4070.                                                                                                                                                                                 #==============================================================================
  4071.                                                                                                                                                                                 # ■ Game_Enemy
  4072.                                                                                                                                                                                 #------------------------------------------------------------------------------
  4073.                                                                                                                                                                                 #  敵キャラを扱うクラスです。
  4074.                                                                                                                                                                                 #==============================================================================
  4075.                                                                                                                                                                                 class Game_Enemy < Game_Battler
  4076.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4077.                                                                                                                                                                                         # ● 公開インスタンス変数
  4078.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4079.                                                                                                                                                                                         attr_reader :enemy_id                    # ID
  4080.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4081.                                                                                                                                                                                         # ● ID
  4082.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4083.                                                                                                                                                                                         def id
  4084.                                                                                                                                                                                                 return @enemy_id
  4085.                                                                                                                                                                                         end
  4086.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4087.                                                                                                                                                                                         # ● レベル
  4088.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4089.                                                                                                                                                                                         def level
  4090.                                                                                                                                                                                                 return @sv.level
  4091.                                                                                                                                                                                         end
  4092.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4093.                                                                                                                                                                                         # ● ダメージ効果の実行 ★再定義
  4094.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4095.                                                                                                                                                                                         def perform_damage_effect
  4096.                                                                                                                                                                                                 return if !N03::ENEMY_DAMAGE
  4097.                                                                                                                                                                                                 @sprite_effect_type = :blink
  4098.                                                                                                                                                                                                 Sound.play_enemy_damage
  4099.                                                                                                                                                                                         end
  4100.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4101.                                                                                                                                                                                         # ● 武器
  4102.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4103.                                                                                                                                                                                         def weapons
  4104.                                                                                                                                                                                                 weapon1 = $data_weapons[@sv.enemy_weapon1_id]
  4105.                                                                                                                                                                                                 weapon2 = $data_weapons[@sv.enemy_weapon2_id]
  4106.                                                                                                                                                                                                 return [weapon1, weapon2]
  4107.                                                                                                                                                                                         end
  4108.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4109.                                                                                                                                                                                         # ● 防具
  4110.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4111.                                                                                                                                                                                         def armors
  4112.                                                                                                                                                                                                 return [$data_armors[@sv.enemy_shield_id]]
  4113.                                                                                                                                                                                         end
  4114.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4115.                                                                                                                                                                                         # ● 二刀流の判定
  4116.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4117.                                                                                                                                                                                         def dual_wield?
  4118.                                                                                                                                                                                                 return $data_weapons[@sv.enemy_weapon2_id] != nil
  4119.                                                                                                                                                                                         end
  4120.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4121.                                                                                                                                                                                         # ● バトラー画像変更
  4122.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4123.                                                                                                                                                                                         def graphics_change(battler_name)
  4124.                                                                                                                                                                                                 @battler_name = battler_name
  4125.                                                                                                                                                                                         end
  4126.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4127.                                                                                                                                                                                         # ● 通常攻撃 アニメーション ID の取得
  4128.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4129.                                                                                                                                                                                         def atk_animation_id1
  4130.                                                                                                                                                                                                 return weapons[0].animation_id if weapons[0]
  4131.                                                                                                                                                                                                 return weapons[1] ? 0 : 1
  4132.                                                                                                                                                                                         end
  4133.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4134.                                                                                                                                                                                         # ● 通常攻撃 アニメーション ID の取得(二刀流:武器2)
  4135.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4136.                                                                                                                                                                                         def atk_animation_id2
  4137.                                                                                                                                                                                                 return weapons[1] ? weapons[1].animation_id : 0
  4138.                                                                                                                                                                                         end
  4139.                                                                                                                                                                                 end
  4140.                                                                                                                                                                                 #==============================================================================
  4141.                                                                                                                                                                                 # ■ Sprite_Base
  4142.                                                                                                                                                                                 #------------------------------------------------------------------------------
  4143.                                                                                                                                                                                 #  アニメーションの表示処理を追加したスプライトのクラスです。
  4144.                                                                                                                                                                                 #==============================================================================
  4145.                                                                                                                                                                                 class Sprite_Base < Sprite
  4146.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4147.                                                                                                                                                                                         # ● アニメーションの座標更新 (ホーミングあり)
  4148.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4149.                                                                                                                                                                                         def update_animation_position_horming
  4150.                                                                                                                                                                                                 return if @action_end_cancel
  4151.                                                                                                                                                                                                 ani_ox_set if @horming
  4152.                                                                                                                                                                                                 camera_zoom = $sv_camera.zoom
  4153.                                                                                                                                                                                                 camera_zoom = 1 if @move_anime
  4154.                                                                                                                                                                                                 kind = 1
  4155.                                                                                                                                                                                                 kind = -1 if @ani_mirror && !@anime_no_mirror
  4156.                                                                                                                                                                                                 cell_data = @animation.frames[@animation.frame_max - (@ani_duration + @ani_rate - 1) / @ani_rate].cell_data
  4157.                                                                                                                                                                                                 for i in 0..15
  4158.                                                                                                                                                                                                         @ani_sprites[i].x = (@ani_ox + cell_data[i, 1] * kind - $sv_camera.x) * camera_zoom if @ani_sprites[i] != nil && cell_data[i, 1] != nil
  4159.                                                                                                                                                                                                         @ani_sprites[i].y = (@ani_oy + cell_data[i, 2] - $sv_camera.y) * camera_zoom if @ani_sprites[i] != nil && cell_data[i, 2] != nil
  4160.                                                                                                                                                                                                 end
  4161.                                                                                                                                                                                         end
  4162.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4163.                                                                                                                                                                                         # ● アニメーション元の座標をセット
  4164.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4165.                                                                                                                                                                                         def ani_ox_set
  4166.                                                                                                                                                                                                 if !SceneManager.scene_is?(Scene_Battle)
  4167.                                                                                                                                                                                                         @real_x = x
  4168.                                                                                                                                                                                                         @real_y = y
  4169.                                                                                                                                                                                                 end
  4170.                                                                                                                                                                                                 @ani_ox = @real_x - ox + width / 2
  4171.                                                                                                                                                                                                 @ani_oy = @real_y - oy + height / 2
  4172.                                                                                                                                                                                                 @ani_oy -= height / 2 if @animation.position == 0
  4173.                                                                                                                                                                                                 @ani_oy += height / 2 if @animation.position == 2
  4174.                                                                                                                                                                                         end
  4175.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4176.                                                                                                                                                                                         # ● アニメーションの更新
  4177.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4178.                                                                                                                                                                                         alias update_animation_sprite_base_n03 update_animation
  4179.                                                                                                                                                                                         def update_animation
  4180.                                                                                                                                                                                                 update_animation_position_horming if animation? && SceneManager.scene_is?(Scene_Battle) && @animation.position != 3
  4181.                                                                                                                                                                                                 update_animation_sprite_base_n03
  4182.                                                                                                                                                                                         end
  4183.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4184.                                                                                                                                                                                         # ● アニメーションの原点設定 ★再定義
  4185.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4186.                                                                                                                                                                                         def set_animation_origin
  4187.                                                                                                                                                                                                 return ani_ox_set if @animation.position != 3
  4188.                                                                                                                                                                                                 if viewport == nil
  4189.                                                                                                                                                                                                         @ani_ox = Graphics.width / 2
  4190.                                                                                                                                                                                                         @ani_oy = Graphics.height / 2
  4191.                                                                                                                                                                                                 else
  4192.                                                                                                                                                                                                         @ani_ox = viewport.rect.width / 2
  4193.                                                                                                                                                                                                         @ani_oy = viewport.rect.height / 2
  4194.                                                                                                                                                                                                 end
  4195.                                                                                                                                                                                         end
  4196.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4197.                                                                                                                                                                                         # ● アニメーションスプライトの設定 ★再定義
  4198.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4199.                                                                                                                                                                                         def animation_set_sprites(frame)
  4200.                                                                                                                                                                                                 camera_zoom = 1
  4201.                                                                                                                                                                                                 camera_zoom = $sv_camera.zoom if @anime_camera_zoom && @animation.position != 3 && SceneManager.scene_is?(Scene_Battle)
  4202.                                                                                                                                                                                                 camera_x = $sv_camera.x
  4203.                                                                                                                                                                                                 camera_y = $sv_camera.y
  4204.                                                                                                                                                                                                 camera_x = camera_y = 0 if @animation.position == 3 or !SceneManager.scene_is?(Scene_Battle)
  4205.                                                                                                                                                                                                 plus_z = 5
  4206.                                                                                                                                                                                                 plus_z = 1000 if @animation.position == 3
  4207.                                                                                                                                                                                                 plus_z = -17 if @plus_z != nil && @plus_z == false
  4208.                                                                                                                                                                                                 plus_z = -self.z + 10 if @plus_z != nil && @plus_z == false && @animation.position == 3
  4209.                                                                                                                                                                                                 cell_data = frame.cell_data
  4210.                                                                                                                                                                                                 @ani_sprites.each_with_index do |sprite, i|
  4211.                                                                                                                                                                                                         next unless sprite
  4212.                                                                                                                                                                                                         pattern = cell_data[i, 0]
  4213.                                                                                                                                                                                                         if !pattern || pattern < 0
  4214.                                                                                                                                                                                                                 sprite.visible = false
  4215.                                                                                                                                                                                                                 next
  4216.                                                                                                                                                                                                         end
  4217.                                                                                                                                                                                                         sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
  4218.                                                                                                                                                                                                         sprite.visible = true
  4219.                                                                                                                                                                                                         sprite.src_rect.set(pattern % 5 * 192,
  4220.                                                                                                                                                                                                                 pattern % 100 / 5 * 192, 192, 192)
  4221.                                                                                                                                                                                                         if @ani_mirror && !@anime_no_mirror
  4222.                                                                                                                                                                                                                 sprite.x = (@ani_ox - cell_data[i, 1] - camera_x) * camera_zoom
  4223.                                                                                                                                                                                                                 sprite.y = (@ani_oy + cell_data[i, 2] - camera_y) * camera_zoom
  4224.                                                                                                                                                                                                                 sprite.angle = (360 - cell_data[i, 4])
  4225.                                                                                                                                                                                                                 sprite.mirror = (cell_data[i, 5] == 0)
  4226.                                                                                                                                                                                                         else
  4227.                                                                                                                                                                                                                 sprite.x = (@ani_ox + cell_data[i, 1] - camera_x) * camera_zoom
  4228.                                                                                                                                                                                                                 sprite.y = (@ani_oy + cell_data[i, 2] - camera_y) * camera_zoom
  4229.                                                                                                                                                                                                                 sprite.angle = cell_data[i, 4]
  4230.                                                                                                                                                                                                                 sprite.mirror = (cell_data[i, 5] == 1)
  4231.                                                                                                                                                                                                         end
  4232.                                                                                                                                                                                                         sprite.z = self.z + plus_z + i
  4233.                                                                                                                                                                                                         sprite.ox = 96
  4234.                                                                                                                                                                                                         sprite.oy = 96
  4235.                                                                                                                                                                                                         sprite.zoom_x = cell_data[i, 3] * camera_zoom / 100.0
  4236.                                                                                                                                                                                                         sprite.zoom_y = cell_data[i, 3] * camera_zoom/ 100.0
  4237.                                                                                                                                                                                                         sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  4238.                                                                                                                                                                                                         sprite.blend_type = cell_data[i, 7]
  4239.                                                                                                                                                                                                 end
  4240.                                                                                                                                                                                         end
  4241.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4242.                                                                                                                                                                                         # ● 子スプライトフラグ
  4243.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4244.                                                                                                                                                                                         def set(battler, horming, camera_zoom, no_mirror)
  4245.                                                                                                                                                                                                 @battler = battler
  4246.                                                                                                                                                                                                 @next = true
  4247.                                                                                                                                                                                                 self.bitmap = Bitmap.new(@battler.sv.cw, @battler.sv.ch)
  4248.                                                                                                                                                                                                 self.ox = bitmap.width / 2
  4249.                                                                                                                                                                                                 self.oy = bitmap.height
  4250.                                                                                                                                                                                                 @horming = horming
  4251.                                                                                                                                                                                                 @anime_camera_zoom = camera_zoom
  4252.                                                                                                                                                                                                 @anime_no_mirror = no_mirror
  4253.                                                                                                                                                                                                 @battler.sv.reset_anime_data
  4254.                                                                                                                                                                                         end  
  4255.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4256.                                                                                                                                                                                         # ● 子スプライト座標セット
  4257.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4258.                                                                                                                                                                                         def set_position(z, zoom_x, zoom_y, real_x, real_y)
  4259.                                                                                                                                                                                                 self.z = z
  4260.                                                                                                                                                                                                 self.zoom_x = zoom_x
  4261.                                                                                                                                                                                                 self.zoom_y = zoom_y
  4262.                                                                                                                                                                                                 @real_x = real_x
  4263.                                                                                                                                                                                                 @real_y = real_y
  4264.                                                                                                                                                                                         end
  4265.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4266.                                                                                                                                                                                         # ● 他スプライトへのタイミング処理
  4267.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4268.                                                                                                                                                                                         def other_process_timing(timing)
  4269.                                                                                                                                                                                                 se_flag = true
  4270.                                                                                                                                                                                                 se_flag = @se_flag if @se_flag != nil
  4271.                                                                                                                                                                                                 @battler.sv.timing.push([se_flag, timing.dup])
  4272.                                                                                                                                                                                         end
  4273.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4274.                                                                                                                                                                                         # ● 他バトラーへのタイミング処理
  4275.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4276.                                                                                                                                                                                         def target_battler_process_timing(timing)
  4277.                                                                                                                                                                                                 for target in @timing_targets
  4278.                                                                                                                                                                                                         target.sv.timing.push([false, timing.dup])
  4279.                                                                                                                                                                                                 end  
  4280.                                                                                                                                                                                         end
  4281.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4282.                                                                                                                                                                                         # ● SE とフラッシュのタイミング処理
  4283.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4284.                                                                                                                                                                                         alias animation_process_timing_sprite_base_n03 animation_process_timing
  4285.                                                                                                                                                                                         def animation_process_timing(timing)
  4286.                                                                                                                                                                                                 target_battler_process_timing(timing) if @timing_targets && @timing_targets != []
  4287.                                                                                                                                                                                                 return other_process_timing(timing) if @next != nil
  4288.                                                                                                                                                                                                 animation_process_timing_sprite_base_n03(timing)
  4289.                                                                                                                                                                                         end
  4290.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4291.                                                                                                                                                                                         # ● アニメーションの解放
  4292.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4293.                                                                                                                                                                                         alias dispose_animation_sprite_base_n03 dispose_animation
  4294.                                                                                                                                                                                         def dispose_animation
  4295.                                                                                                                                                                                                 dispose_animation_sprite_base_n03
  4296.                                                                                                                                                                                         end
  4297.                                                                                                                                                                                 end
  4298.                                                                                                                                                                                 #==============================================================================
  4299.                                                                                                                                                                                 # ■ Sprite_Battler
  4300.                                                                                                                                                                                 #------------------------------------------------------------------------------
  4301.                                                                                                                                                                                 #  バトラー表示用のスプライトです。
  4302.                                                                                                                                                                                 #==============================================================================
  4303.                                                                                                                                                                                 class Sprite_Battler < Sprite_Base
  4304.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4305.                                                                                                                                                                                         # ● 公開インスタンス変数 
  4306.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4307.                                                                                                                                                                                         attr_accessor   :removing             # パーティ離脱中
  4308.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4309.                                                                                                                                                                                         # ● オブジェクト初期化
  4310.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4311.                                                                                                                                                                                         alias initialize_sprite_battler_n03 initialize
  4312.                                                                                                                                                                                         def initialize(viewport, battler = nil)
  4313.                                                                                                                                                                                                 initialize_sprite_battler_n03(viewport, battler)
  4314.                                                                                                                                                                                                 @real_x = @real_y = 0
  4315.                                                                                                                                                                                                 update_bitmap if @battler != nil
  4316.                                                                                                                                                                                         end
  4317.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4318.                                                                                                                                                                                         # ● アニメーションの開始 ★再定義
  4319.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4320.                                                                                                                                                                                         def start_animation(animation, mirror = false)
  4321.                                                                                                                                                                                                 return next_animation(animation, mirror) if animation?
  4322.                                                                                                                                                                                                 @animation = animation
  4323.                                                                                                                                                                                                 if @animation
  4324.                                                                                                                                                                                                         @horming = @battler.sv.anime_horming
  4325.                                                                                                                                                                                                         @anime_camera_zoom = @battler.sv.anime_camera_zoom
  4326.                                                                                                                                                                                                         @anime_no_mirror = @battler.sv.anime_no_mirror
  4327.                                                                                                                                                                                                         @timing_targets = @battler.sv.timing_targets
  4328.                                                                                                                                                                                                         @plus_z = @battler.sv.anime_plus_z
  4329.                                                                                                                                                                                                         @battler.sv.reset_anime_data
  4330.                                                                                                                                                                                                         @ani_mirror = mirror
  4331.                                                                                                                                                                                                         set_animation_rate
  4332.                                                                                                                                                                                                         @ani_duration = @animation.frame_max * @ani_rate + 1
  4333.                                                                                                                                                                                                         load_animation_bitmap
  4334.                                                                                                                                                                                                         make_animation_sprites
  4335.                                                                                                                                                                                                         set_animation_origin
  4336.                                                                                                                                                                                                 end
  4337.                                                                                                                                                                                         end
  4338.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4339.                                                                                                                                                                                         # ● 次のアニメを開始
  4340.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4341.                                                                                                                                                                                         def next_animation(animation, mirror)
  4342.                                                                                                                                                                                                 @next_anime = [] if @next_anime == nil
  4343.                                                                                                                                                                                                 @next_anime.push(Sprite_Base.new(viewport))
  4344.                                                                                                                                                                                                 @next_anime[@next_anime.size - 1].set(battler, @battler.sv.anime_horming, @battler.sv.anime_camera_zoom, @battler.sv.anime_no_mirror)
  4345.                                                                                                                                                                                                 @next_anime[@next_anime.size - 1].set_position(self.z, self.zoom_x, self.zoom_y, @real_x, @real_y)
  4346.                                                                                                                                                                                                 @next_anime[@next_anime.size - 1].start_animation(animation, mirror)
  4347.                                                                                                                                                                                         end
  4348.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4349.                                                                                                                                                                                         # ● 影グラフィック作成
  4350.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4351.                                                                                                                                                                                         def create_shadow
  4352.                                                                                                                                                                                                 reset_shadow
  4353.                                                                                                                                                                                                 return if @battler.sv.shadow == false
  4354.                                                                                                                                                                                                 @shadow = Sprite.new(viewport) if @shadow == nil
  4355.                                                                                                                                                                                                 @shadow.bitmap = Cache.character(@battler.sv.shadow)
  4356.                                                                                                                                                                                                 @shadow.ox = @shadow.bitmap.width / 2
  4357.                                                                                                                                                                                                 @shadow.oy = @shadow.bitmap.height / 2
  4358.                                                                                                                                                                                         end
  4359.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4360.                                                                                                                                                                                         # ● 影グラフィック初期化
  4361.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4362.                                                                                                                                                                                         def reset_shadow
  4363.                                                                                                                                                                                                 return if @shadow == nil
  4364.                                                                                                                                                                                                 @shadow.dispose
  4365.                                                                                                                                                                                                 @shadow = nil
  4366.                                                                                                                                                                                         end  
  4367.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4368.                                                                                                                                                                                         # ● 転送元ビットマップの更新 ★再定義
  4369.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4370.                                                                                                                                                                                         def update_bitmap
  4371.                                                                                                                                                                                                 update_bitmap_enemy if !@battler.actor?
  4372.                                                                                                                                                                                                 update_bitmap_actor if @battler.actor?
  4373.                                                                                                                                                                                                 update_src_rect if @battler != nil
  4374.                                                                                                                                                                                                 update_color if @battler != nil
  4375.                                                                                                                                                                                         end
  4376.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4377.                                                                                                                                                                                         # ● 転送元ビットマップ:エネミー
  4378.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4379.                                                                                                                                                                                         def update_bitmap_enemy
  4380.                                                                                                                                                                                                 if @battler.battler_name != @battler_name or @battler.battler_hue != @battler_hue
  4381.                                                                                                                                                                                                         @battler_name = @battler.battler_name
  4382.                                                                                                                                                                                                         @battler_hue = @battler.battler_hue
  4383.                                                                                                                                                                                                         @battler_graphic_file_index = @battler.sv.graphic_file_index
  4384.                                                                                                                                                                                                         @graphic_mirror_flag = @battler.sv.graphic_mirror_flag
  4385.                                                                                                                                                                                                         self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index, @battler_hue)
  4386.                                                                                                                                                                                                         @battler.sv.setup(self.bitmap.width, self.bitmap.height, @battler_id != @battler.id)
  4387.                                                                                                                                                                                                         create_shadow
  4388.                                                                                                                                                                                                         init_visibility
  4389.                                                                                                                                                                                                         @battler_id = @battler.id
  4390.                                                                                                                                                                                                 end
  4391.                                                                                                                                                                                         end  
  4392.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4393.                                                                                                                                                                                         # ● 転送元ビットマップ:アクター
  4394.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4395.                                                                                                                                                                                         def update_bitmap_actor
  4396.                                                                                                                                                                                                 if @battler.character_name != @battler_name or @battler.character_index != @battler_index
  4397.                                                                                                                                                                                                         @battler_name = @battler.character_name
  4398.                                                                                                                                                                                                         @battler_index = @battler.character_index
  4399.                                                                                                                                                                                                         @battler_graphic_file_index = @battler.sv.graphic_file_index
  4400.                                                                                                                                                                                                         @graphic_mirror_flag = @battler.sv.graphic_mirror_flag
  4401.                                                                                                                                                                                                         self.bitmap = Cache.character(@battler_name + @battler_graphic_file_index)
  4402.                                                                                                                                                                                                         @battler.sv.setup(self.bitmap.width, self.bitmap.height, @battler_id != @battler.id)
  4403.                                                                                                                                                                                                         create_shadow
  4404.                                                                                                                                                                                                         init_visibility
  4405.                                                                                                                                                                                                         @battler_id = @battler.id
  4406.                                                                                                                                                                                                 end
  4407.                                                                                                                                                                                         end
  4408.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4409.                                                                                                                                                                                         # ● 可視状態の初期化 ★再定義
  4410.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4411.                                                                                                                                                                                         def init_visibility
  4412.                                                                                                                                                                                                 @battler_visible = @battler.alive?
  4413.                                                                                                                                                                                                 @battler_visible = true if @battler.sv.state(1) != "敵コラプス"
  4414.                                                                                                                                                                                                 @battler_visible = false if @battler.hidden?
  4415.                                                                                                                                                                                                 @battler.sv.opacity = 0 unless @battler_visible
  4416.                                                                                                                                                                                                 self.opacity = 0 unless @battler_visible
  4417.                                                                                                                                                                                                 self.opacity = 255 if @battler_visible
  4418.                                                                                                                                                                                                 @battler.sv.weapon_visible = @battler_visible
  4419.                                                                                                                                                                                         end
  4420.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4421.                                                                                                                                                                                         # ● 転送元矩形の更新
  4422.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4423.                                                                                                                                                                                         def update_src_rect
  4424.                                                                                                                                                                                                 return if @battler.sv.collapse
  4425.                                                                                                                                                                                                 if @battler_graphic_file_index != @battler.sv.graphic_file_index
  4426.                                                                                                                                                                                                         @battler_graphic_file_index = @battler.sv.graphic_file_index
  4427.                                                                                                                                                                                                         self.bitmap = Cache.character(@battler_name + @battler_graphic_file_index) if @battler.actor?
  4428.                                                                                                                                                                                                         self.bitmap = Cache.battler(@battler_name + @battler_graphic_file_index, @battler_hue) if !@battler.actor?
  4429.                                                                                                                                                                                                         @battler.sv.set_graphics(self.bitmap.width, self.bitmap.height)
  4430.                                                                                                                                                                                                 end
  4431.                                                                                                                                                                                                 anime_off if @battler.sv.anime_off
  4432.                                                                                                                                                                                                 self.src_rect.set(@battler.sv.sx, @battler.sv.sy, @battler.sv.cw, @battler.sv.ch)
  4433.                                                                                                                                                                                                 self.opacity = @battler.sv.opacity if @battler_visible
  4434.                                                                                                                                                                                                 set_process_timing(@battler.sv.timing) if @battler && @battler.sv.timing != []
  4435.                                                                                                                                                                                         end
  4436.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4437.                                                                                                                                                                                         # ● 位置の更新 ★再定義
  4438.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4439.                                                                                                                                                                                         def update_position
  4440.                                                                                                                                                                                                 @real_x = @battler.sv.x / 100
  4441.                                                                                                                                                                                                 @real_y = (@battler.sv.y - @battler.sv.h - @battler.sv.j - @battler.sv.c - @battler.sv.oy_adjust)/ 100
  4442.                                                                                                                                                                                                 self.x = @real_x - $sv_camera.x
  4443.                                                                                                                                                                                                 self.y = @real_y - $sv_camera.y
  4444.                                                                                                                                                                                                 self.z = @battler.sv.z - @battler.sv.c / 100
  4445.                                                                                                                                                                                                 if @battler.sv.h <= 0
  4446.                                                                                                                                                                                                         self.x += $sv_camera.sx / 100
  4447.                                                                                                                                                                                                         self.y += $sv_camera.sy / 100
  4448.                                                                                                                                                                                                 end  
  4449.                                                                                                                                                                                                 self.x *= $sv_camera.zoom
  4450.                                                                                                                                                                                                 self.y *= $sv_camera.zoom
  4451.                                                                                                                                                                                         end
  4452.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4453.                                                                                                                                                                                         # ● 原点の更新 ★再定義
  4454.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4455.                                                                                                                                                                                         def update_origin
  4456.                                                                                                                                                                                                 return if !bitmap or @battler.sv.collapse
  4457.                                                                                                                                                                                                 self.ox = @battler.sv.ox
  4458.                                                                                                                                                                                                 self.oy = @battler.sv.oy
  4459.                                                                                                                                                                                                 self.angle = @battler.sv.angle
  4460.                                                                                                                                                                                                 self.zoom_x = @battler.sv.zoom_x * $sv_camera.zoom
  4461.                                                                                                                                                                                                 self.zoom_y = @battler.sv.zoom_y * $sv_camera.zoom
  4462.                                                                                                                                                                                                 self.mirror = @battler.sv.mirror if !@graphic_mirror_flag
  4463.                                                                                                                                                                                                 self.mirror = !@battler.sv.mirror if @graphic_mirror_flag
  4464.                                                                                                                                                                                         end
  4465.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4466.                                                                                                                                                                                         # ● 影グラフィックの更新
  4467.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4468.                                                                                                                                                                                         def update_shadow
  4469.                                                                                                                                                                                                 @shadow.visible = @battler.sv.shadow_visible
  4470.                                                                                                                                                                                                 @shadow.opacity = @battler.sv.opacity if @battler.sv.opacity_data[3]
  4471.                                                                                                                                                                                                 @shadow.opacity = self.opacity if !@battler.sv.opacity_data[3]
  4472.                                                                                                                                                                                                 @shadow.x = @real_x - $sv_camera.x
  4473.                                                                                                                                                                                                 @shadow.y = (@battler.sv.y - @battler.sv.c)/ 100 - $sv_camera.y
  4474.                                                                                                                                                                                                 @shadow.z = @battler.sv.z - 10
  4475.                                                                                                                                                                                                 @shadow.zoom_x = $sv_camera.zoom
  4476.                                                                                                                                                                                                 @shadow.zoom_y = $sv_camera.zoom
  4477.                                                                                                                                                                                                 @shadow.x += $sv_camera.sx / 100
  4478.                                                                                                                                                                                                 @shadow.y += $sv_camera.sy / 100
  4479.                                                                                                                                                                                                 @shadow.x *= $sv_camera.zoom
  4480.                                                                                                                                                                                                 @shadow.y *= $sv_camera.zoom
  4481.                                                                                                                                                                                                 @shadow.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  4482.                                                                                                                                                                                         end
  4483.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4484.                                                                                                                                                                                         # ● ふきだしの更新
  4485.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4486.                                                                                                                                                                                         def update_balloon
  4487.                                                                                                                                                                                                 if @battler.sv.balloon_data == [] && @balloon
  4488.                                                                                                                                                                                                         @balloon_data = []
  4489.                                                                                                                                                                                                         @balloon.dispose
  4490.                                                                                                                                                                                                         return @balloon = nil
  4491.                                                                                                                                                                                                 elsif @battler.sv.balloon_data != [] && @battler.sv.balloon_data != @balloon_data
  4492.                                                                                                                                                                                                         @balloon_data = @battler.sv.balloon_data
  4493.                                                                                                                                                                                                         @balloon = Sprite.new(self.viewport)
  4494.                                                                                                                                                                                                         @balloon.bitmap = Cache.system("Balloon")
  4495.                                                                                                                                                                                                         @balloon.zoom_x = @balloon_data[3]
  4496.                                                                                                                                                                                                         @balloon.zoom_y = @balloon_data[3]
  4497.                                                                                                                                                                                                         @balloon.ox = 32 if @battler.sv.mirror
  4498.                                                                                                                                                                                                         @balloon.oy = 16
  4499.                                                                                                                                                                                                         @balloon_count = 0
  4500.                                                                                                                                                                                                 end
  4501.                                                                                                                                                                                                 return if !@balloon
  4502.                                                                                                                                                                                                 @balloon.opacity = self.opacity
  4503.                                                                                                                                                                                                 @balloon.x = self.x
  4504.                                                                                                                                                                                                 @balloon.y = self.y - @battler.sv.ch * $sv_camera.zoom
  4505.                                                                                                                                                                                                 @balloon.z = self.z + 20
  4506.                                                                                                                                                                                                 @balloon.src_rect.set(32 + @balloon_count / @balloon_data[2] * 32, @balloon_data[1] * 32, 32, 32) if @balloon_count % @balloon_data[2] == 0
  4507.                                                                                                                                                                                                 @balloon.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  4508.                                                                                                                                                                                                 @balloon_count += 1
  4509.                                                                                                                                                                                                 @balloon_count = 0 if @balloon_count == @balloon_data[2] * 7
  4510.                                                                                                                                                                                         end
  4511.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4512.                                                                                                                                                                                         # ● 色調変更の更新
  4513.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4514.                                                                                                                                                                                         def update_color
  4515.                                                                                                                                                                                                 color_set if @battler.sv.color_set != []
  4516.                                                                                                                                                                                                 return if @color_data == nil
  4517.                                                                                                                                                                                                 @color_data[4] -= 1
  4518.                                                                                                                                                                                                 if @color_data[4] == 0 && @color_data[5] != 0
  4519.                                                                                                                                                                                                         @color_data[4] = @color_data[5]
  4520.                                                                                                                                                                                                         @color_data[5] = 0
  4521.                                                                                                                                                                                                         @color_data[6] = [0,0,0,0]
  4522.                                                                                                                                                                                                 elsif @color_data[4] == 0
  4523.                                                                                                                                                                                                         @remain_color_data = @color_data
  4524.                                                                                                                                                                                                         @battler.sv.color = @color_data.dup
  4525.                                                                                                                                                                                                         return @color_data = nil
  4526.                                                                                                                                                                                                 end  
  4527.                                                                                                                                                                                                 for i in 0..3
  4528.                                                                                                                                                                                                         @color_data[i] = (@color_data[i] * (@color_data[4] - 1) + @color_data[6][i]) / @color_data[4]
  4529.                                                                                                                                                                                                 end  
  4530.                                                                                                                                                                                                 @battler.sv.color = @color_data.dup
  4531.                                                                                                                                                                                                 self.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3])
  4532.                                                                                                                                                                                         end
  4533.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4534.                                                                                                                                                                                         # ● 残像の更新
  4535.                                                                                                                                                                                         #--------------------------------------------------------------------------
  4536.                                                                                                                                                                                         def update_mirage
  4537.                                                                                                                                                                                                 if @battler.sv.mirage == [] && @mirages
  4538.                                                                                                                                                                                                         @mirage_data = []
  4539.                                                                                                                                                                                                         for mirage in @mirages do mirage.dispose end
  4540.                                                                                                                                                                                                                 return @mirages = nil
  4541.                                                                                                                                                                                                         elsif @battler.sv.mirage != [] && @battler.sv.mirage != @mirage_data
  4542.                                                                                                                                                                                                                 @mirage_data = @battler.sv.mirage
  4543.                                                                                                                                                                                                                 @mirages = []
  4544.                                                                                                                                                                                                                 for i in 0...@mirage_data[1] do @mirages[i] = Sprite.new(self.viewport) end
  4545.                                                                                                                                                                                                                         @mirage_count = 0
  4546.                                                                                                                                                                                                                 end
  4547.                                                                                                                                                                                                                 return if !@mirages
  4548.                                                                                                                                                                                                                 @mirage_count += 1
  4549.                                                                                                                                                                                                                 @mirage_count = 0 if @mirage_count == @mirage_data[2] * @mirages.size
  4550.                                                                                                                                                                                                                 for i in [email]0...@mirages.size[/email]
  4551.                                                                                                                                                                                                                         mirage_body(@mirages[i], @mirage_data[4]) if @mirage_count == 1 + i * @mirage_data[2]
  4552.                                                                                                                                                                                                                 end
  4553.                                                                                                                                                                                                         end
  4554.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4555.                                                                                                                                                                                                         # ● 残像本体
  4556.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4557.                                                                                                                                                                                                         def mirage_body(body, opacity)
  4558.                                                                                                                                                                                                                 body.bitmap = self.bitmap.dup
  4559.                                                                                                                                                                                                                 body.x = self.x
  4560.                                                                                                                                                                                                                 body.y = self.y
  4561.                                                                                                                                                                                                                 body.ox = self.ox
  4562.                                                                                                                                                                                                                 body.oy = self.oy
  4563.                                                                                                                                                                                                                 body.z = self.z - 20
  4564.                                                                                                                                                                                                                 body.mirror = self.mirror
  4565.                                                                                                                                                                                                                 body.angle = self.angle
  4566.                                                                                                                                                                                                                 body.opacity = opacity * self.opacity / 255
  4567.                                                                                                                                                                                                                 body.zoom_x = self.zoom_x
  4568.                                                                                                                                                                                                                 body.zoom_y = self.zoom_y   
  4569.                                                                                                                                                                                                                 body.src_rect.set(@battler.sv.sx, @battler.sv.sy, @battler.sv.cw, @battler.sv.ch)
  4570.                                                                                                                                                                                                                 body.color.set(@color_data[0], @color_data[1], @color_data[2], @color_data[3]) if @color_data != nil
  4571.                                                                                                                                                                                                         end   
  4572.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4573.                                                                                                                                                                                                         # ● 次のアニメを更新
  4574.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4575.                                                                                                                                                                                                         def update_next_anime
  4576.                                                                                                                                                                                                                 return if !@next_anime
  4577.                                                                                                                                                                                                                 for anime in @next_anime
  4578.                                                                                                                                                                                                                         anime.update
  4579.                                                                                                                                                                                                                         anime.set_position(self.z, self.zoom_x, self.zoom_y, @real_x, @real_y) if @horming
  4580.                                                                                                                                                                                                                         anime.dispose if !anime.animation?
  4581.                                                                                                                                                                                                                         @next_anime.delete(anime) if !anime.animation?
  4582.                                                                                                                                                                                                                 end  
  4583.                                                                                                                                                                                                         end
  4584.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4585.                                                                                                                                                                                                         # ● フレーム更新
  4586.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4587.                                                                                                                                                                                                         alias update_sprite_battler_n03 update
  4588.                                                                                                                                                                                                         def update
  4589.                                                                                                                                                                                                                 @battler.sv.update if @battler
  4590.                                                                                                                                                                                                                 update_sprite_battler_n03
  4591.                                                                                                                                                                                                                 update_next_anime
  4592.                                                                                                                                                                                                                 update_shadow  if @battler && @shadow
  4593.                                                                                                                                                                                                                 update_mirage  if @battler
  4594.                                                                                                                                                                                                                 update_balloon if @battler
  4595.                                                                                                                                                                                                                 update_remove if @battler && @removing && @battler.sv.change_up
  4596.                                                                                                                                                                                                         end
  4597.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4598.                                                                                                                                                                                                         # ● 戦闘アニメ消去
  4599.                                                                                                                                                                                                         #--------------------------------------------------------------------------
  4600.                                                                                                                                                                                                         def anime_off
  4601.                                                                                                                                                                                                                 @battler.sv.anime_off = false
  4602.                                                                                                                                                                                                                 dispose_animation
  4603.                                                                                                                                                                                                                 for anime in @next_anime do anime.dispose_animation end if @next_anime
  4604.                                                                                                                                                                                                                 end
  4605.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4606.                                                                                                                                                                                                                 # ● バトラー入れ替え
  4607.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4608.                                                                                                                                                                                                                 def remove
  4609.                                                                                                                                                                                                                         @battler.sv.start_action(@battler.sv.remove_action)
  4610.                                                                                                                                                                                                                         $sv_camera.wait = 40
  4611.                                                                                                                                                                                                                         @battler.sv.add_action("eval('set_change')")
  4612.                                                                                                                                                                                                                         @removing = true
  4613.                                                                                                                                                                                                                 end
  4614.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4615.                                                                                                                                                                                                                 # ● バトラー入れ替えの更新
  4616.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4617.                                                                                                                                                                                                                 def update_remove
  4618.                                                                                                                                                                                                                         @battler.sv.change_up = false
  4619.                                                                                                                                                                                                                         @removing = false
  4620.                                                                                                                                                                                                                         @battler = nil
  4621.                                                                                                                                                                                                                 end  
  4622.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4623.                                                                                                                                                                                                                 # ● バトラー加入
  4624.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4625.                                                                                                                                                                                                                 def join(join_battler)
  4626.                                                                                                                                                                                                                         $sv_camera.wait = 30
  4627.                                                                                                                                                                                                                         @battler = join_battler
  4628.                                                                                                                                                                                                                         @battler_name = @battler.character_name
  4629.                                                                                                                                                                                                                         @battler_index = @battler.character_index
  4630.                                                                                                                                                                                                                         @battler_graphic_file_index = @battler.sv.graphic_file_index
  4631.                                                                                                                                                                                                                         self.bitmap = Cache.character(@battler_name)
  4632.                                                                                                                                                                                                                         @battler.sv.setup(self.bitmap.width, self.bitmap.height, true)
  4633.                                                                                                                                                                                                                         create_shadow
  4634.                                                                                                                                                                                                                         init_visibility
  4635.                                                                                                                                                                                                                 end
  4636.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4637.                                                                                                                                                                                                                 # ● 通常の設定に戻す ★再定義
  4638.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4639.                                                                                                                                                                                                                 def revert_to_normal
  4640.                                                                                                                                                                                                                         self.blend_type = 0
  4641.                                                                                                                                                                                                                         self.opacity = 255
  4642.                                                                                                                                                                                                                 end
  4643.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4644.                                                                                                                                                                                                                 # ● 崩壊エフェクトの更新
  4645.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4646.                                                                                                                                                                                                                 alias update_collapse_sprite_battler_n03 update_collapse
  4647.                                                                                                                                                                                                                 def update_collapse
  4648.                                                                                                                                                                                                                         return if @battler.sv.state(1) != "敵コラプス"
  4649.                                                                                                                                                                                                                         update_collapse_sprite_battler_n03
  4650.                                                                                                                                                                                                                         @battler.sv.weapon_visible = false
  4651.                                                                                                                                                                                                                 end
  4652.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4653.                                                                                                                                                                                                                 # ● ボス崩壊エフェクトの更新 ★再定義
  4654.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4655.                                                                                                                                                                                                                 def update_boss_collapse
  4656.                                                                                                                                                                                                                         @effect_duration = @battler.sv.ch if @effect_duration >= @battler.sv.ch
  4657.                                                                                                                                                                                                                         alpha = @effect_duration * 120 / @battler.sv.ch
  4658.                                                                                                                                                                                                                         self.ox = @battler.sv.cw / 2 + @effect_duration % 2 * 4 - 2
  4659.                                                                                                                                                                                                                         self.blend_type = 1
  4660.                                                                                                                                                                                                                         self.color.set(255, 255, 255, 255 - alpha)
  4661.                                                                                                                                                                                                                         self.opacity = alpha
  4662.                                                                                                                                                                                                                         self.src_rect.y -= 1
  4663.                                                                                                                                                                                                                         Sound.play_boss_collapse2 if @effect_duration % 20 == 19
  4664.                                                                                                                                                                                                                 end
  4665.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4666.                                                                                                                                                                                                                 # ● 別スプライトからのタイミング処理
  4667.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4668.                                                                                                                                                                                                                 def set_process_timing(timing_data)
  4669.                                                                                                                                                                                                                         for data in timing_data
  4670.                                                                                                                                                                                                                                 set_timing(data[0],data[1])
  4671.                                                                                                                                                                                                                         end
  4672.                                                                                                                                                                                                                         @battler.sv.timing = []
  4673.                                                                                                                                                                                                                 end
  4674.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4675.                                                                                                                                                                                                                 # ● タイミング処理
  4676.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4677.                                                                                                                                                                                                                 def set_timing(se_flag, data)
  4678.                                                                                                                                                                                                                         @ani_rate = 4
  4679.                                                                                                                                                                                                                         data.se.play if se_flag
  4680.                                                                                                                                                                                                                         case data.flash_scope
  4681.                                                                                                                                                                                                                         when 1 ;self.flash(data.flash_color, data.flash_duration * @ani_rate)
  4682.                                                                                                                                                                                                                         when 2 ;viewport.flash(data.flash_color, data.flash_duration * @ani_rate) if viewport
  4683.                                                                                                                                                                                                                         when 3 ;self.flash(nil, data.flash_duration * @ani_rate)
  4684.                                                                                                                                                                                                                         end
  4685.                                                                                                                                                                                                                 end
  4686.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4687.                                                                                                                                                                                                                 # ● 色調変更
  4688.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4689.                                                                                                                                                                                                                 def color_set
  4690.                                                                                                                                                                                                                         set = @battler.sv.color_set
  4691.                                                                                                                                                                                                                         @battler.sv.color_set= []
  4692.                                                                                                                                                                                                                         set[4] = 1 if set[4] == 0
  4693.                                                                                                                                                                                                                         @remain_color_data = [0,0,0,0] if @remain_color_data == nil
  4694.                                                                                                                                                                                                                         @color_data = @remain_color_data
  4695.                                                                                                                                                                                                                         @color_data[4] = set[4]
  4696.                                                                                                                                                                                                                         @color_data[5] = set[5]
  4697.                                                                                                                                                                                                                         @color_data[6] = set
  4698.                                                                                                                                                                                                                 end
  4699.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4700.                                                                                                                                                                                                                 # ● 解放
  4701.                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4702.                                                                                                                                                                                                                 alias dispose_sprite_battler_n03 dispose
  4703.                                                                                                                                                                                                                 def dispose
  4704.                                                                                                                                                                                                                         dispose_sprite_battler_n03
  4705.                                                                                                                                                                                                                         @shadow.dispose if @shadow != nil
  4706.                                                                                                                                                                                                                         @balloon.dispose if @balloon != nil
  4707.                                                                                                                                                                                                                         for mirage in @mirages do mirage.dispose end if @mirages != nil
  4708.                                                                                                                                                                                                                                 for anime in @next_anime do anime.dispose end if @next_anime
  4709.                                                                                                                                                                                                                                 end
  4710.                                                                                                                                                                                                                         end
  4711.                                                                                                                                                                                                                         #==============================================================================
  4712.                                                                                                                                                                                                                         # ■ Spriteset_Battle
  4713.                                                                                                                                                                                                                         #------------------------------------------------------------------------------
  4714.                                                                                                                                                                                                                         #  バトル画面のスプライトをまとめたクラスです。
  4715.                                                                                                                                                                                                                         #==============================================================================
  4716.                                                                                                                                                                                                                         class Spriteset_Battle
  4717.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4718.                                                                                                                                                                                                                                 # ● 戦闘背景(床)スプライトの作成 ★再定義
  4719.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4720.                                                                                                                                                                                                                                 def create_battleback1
  4721.                                                                                                                                                                                                                                         @back1_sprite = Sprite_Battle_Back.new(@viewport1, 1, battleback1_name)
  4722.                                                                                                                                                                                                                                         @back1_sprite.set_graphics(battleback1_bitmap) if battleback1_name != nil
  4723.                                                                                                                                                                                                                                         @back1_sprite.z = 0
  4724.                                                                                                                                                                                                                                 end
  4725.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4726.                                                                                                                                                                                                                                 # ● 戦闘背景(壁)スプライトの作成 ★再定義
  4727.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4728.                                                                                                                                                                                                                                 def create_battleback2
  4729.                                                                                                                                                                                                                                         @back2_sprite = Sprite_Battle_Back.new(@viewport1, 2, battleback2_name)
  4730.                                                                                                                                                                                                                                         @back2_sprite.set_graphics(battleback2_bitmap) if battleback2_name != nil
  4731.                                                                                                                                                                                                                                         @back2_sprite.z = 1
  4732.                                                                                                                                                                                                                                 end
  4733.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4734.                                                                                                                                                                                                                                 # ● アクタースプライトの作成 ★再定義
  4735.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4736.                                                                                                                                                                                                                                 def create_actors
  4737.                                                                                                                                                                                                                                         @actor_sprites = []
  4738.                                                                                                                                                                                                                                         for i in 0...$game_party.max_battle_members
  4739.                                                                                                                                                                                                                                                 @actor_sprites[i] = Sprite_Battler.new(@viewport1, $game_party.members[i])
  4740.                                                                                                                                                                                                                                         end
  4741.                                                                                                                                                                                                                                         @effect_sprites = Spriteset_Sideview.new(@viewport1)
  4742.                                                                                                                                                                                                                                 end
  4743.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4744.                                                                                                                                                                                                                                 # ● アクタースプライトの更新 ★再定義
  4745.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4746.                                                                                                                                                                                                                                 def update_actors
  4747.                                                                                                                                                                                                                                         @actor_sprites.each_with_index do |sprite, i|
  4748.                                                                                                                                                                                                                                                 sprite_join($game_party.members[i], sprite) if sprite.battler == nil && sprite.battler != $game_party.members[i]
  4749.                                                                                                                                                                                                                                                 sprite.remove if sprite.battler != nil && !sprite.removing && sprite.battler != $game_party.members[i]
  4750.                                                                                                                                                                                                                                                 sprite.update
  4751.                                                                                                                                                                                                                                         end
  4752.                                                                                                                                                                                                                                         @effect_sprites.update
  4753.                                                                                                                                                                                                                                         update_program
  4754.                                                                                                                                                                                                                                 end
  4755.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4756.                                                                                                                                                                                                                                 # ● メンバーを加える
  4757.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4758.                                                                                                                                                                                                                                 def sprite_join(member, sprite)
  4759.                                                                                                                                                                                                                                         for sp in @actor_sprites
  4760.                                                                                                                                                                                                                                                 sp.update_remove if member == sp.battler && !sp.battler.sv.change_up
  4761.                                                                                                                                                                                                                                         end
  4762.                                                                                                                                                                                                                                         sprite.join(member)
  4763.                                                                                                                                                                                                                                 end
  4764.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4765.                                                                                                                                                                                                                                 # ● バトルプログラムの更新
  4766.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4767.                                                                                                                                                                                                                                 def update_program
  4768.                                                                                                                                                                                                                                         return if $sv_camera.program_scroll == []
  4769.                                                                                                                                                                                                                                         for data in  $sv_camera.program_scroll
  4770.                                                                                                                                                                                                                                                 @back1_sprite.start_back_data(data) if data[2] == 1
  4771.                                                                                                                                                                                                                                                 @back2_sprite.start_back_data(data) if data[2] == 2
  4772.                                                                                                                                                                                                                                         end
  4773.                                                                                                                                                                                                                                         $sv_camera.program_scroll = []
  4774.                                                                                                                                                                                                                                 end
  4775.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4776.                                                                                                                                                                                                                                 # ● ヒット時の戦闘アニメ実行
  4777.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4778.                                                                                                                                                                                                                                 def set_hit_animation(battler, weapon_index, hit_targets, miss)
  4779.                                                                                                                                                                                                                                         @effect_sprites.set_hit_animation(battler, weapon_index, hit_targets, miss)
  4780.                                                                                                                                                                                                                                 end
  4781.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4782.                                                                                                                                                                                                                                 # ● ダメージPOP
  4783.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4784.                                                                                                                                                                                                                                 def set_damage_pop(target)
  4785.                                                                                                                                                                                                                                         @effect_sprites.set_damage_pop(target)
  4786.                                                                                                                                                                                                                                 end
  4787.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4788.                                                                                                                                                                                                                                 # ● 解放
  4789.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4790.                                                                                                                                                                                                                                 alias dispose_spriteset_battle_n03 dispose
  4791.                                                                                                                                                                                                                                 def dispose
  4792.                                                                                                                                                                                                                                         dispose_spriteset_battle_n03
  4793.                                                                                                                                                                                                                                         @effect_sprites.dispose
  4794.                                                                                                                                                                                                                                 end
  4795.                                                                                                                                                                                                                         end
  4796.                                                                                                                                                                                                                         #==============================================================================
  4797.                                                                                                                                                                                                                         # ■ Window_BattleLog
  4798.                                                                                                                                                                                                                         #------------------------------------------------------------------------------
  4799.                                                                                                                                                                                                                         #  戦闘の進行を実況表示するウィンドウです。
  4800.                                                                                                                                                                                                                         #==============================================================================
  4801.                                                                                                                                                                                                                         class Window_BattleLog < Window_Selectable
  4802.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4803.                                                                                                                                                                                                                                 # ● ウェイト ★再定義
  4804.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4805.                                                                                                                                                                                                                                 def wait
  4806.                                                                                                                                                                                                                                 end
  4807.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4808.                                                                                                                                                                                                                                 # ● ウェイトとクリア ★再定義
  4809.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4810.                                                                                                                                                                                                                                 def wait_and_clear
  4811.                                                                                                                                                                                                                                         $sv_camera.wait = 10
  4812.                                                                                                                                                                                                                                 end
  4813.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4814.                                                                                                                                                                                                                                 # ● 行動結果の表示 ★再定義
  4815.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4816.                                                                                                                                                                                                                                 def display_action_results(target, item)
  4817.                                                                                                                                                                                                                                         if target.result.used
  4818.                                                                                                                                                                                                                                                 last_line_number = line_number
  4819.                                                                                                                                                                                                                                                 display_critical(target, item)
  4820.                                                                                                                                                                                                                                                 display_damage(target, item)
  4821.                                                                                                                                                                                                                                                 display_affected_status(target, item)
  4822.                                                                                                                                                                                                                                                 display_failure(target, item)
  4823.                                                                                                                                                                                                                                         end
  4824.                                                                                                                                                                                                                                         off if !N03::BATTLE_LOG
  4825.                                                                                                                                                                                                                                 end
  4826.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4827.                                                                                                                                                                                                                                 # ● ウインドウ非表示
  4828.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4829.                                                                                                                                                                                                                                 def off
  4830.                                                                                                                                                                                                                                         @back_sprite.visible = self.visible = false
  4831.                                                                                                                                                                                                                                 end
  4832.                                                                                                                                                                                                                         end
  4833.                                                                                                                                                                                                                         #==============================================================================
  4834.                                                                                                                                                                                                                         # ■ Game_Interpreter
  4835.                                                                                                                                                                                                                         #------------------------------------------------------------------------------
  4836.                                                                                                                                                                                                                         #  イベントコマンドを実行するインタプリタです。
  4837.                                                                                                                                                                                                                         #==============================================================================
  4838.                                                                                                                                                                                                                         class Game_Interpreter
  4839.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4840.                                                                                                                                                                                                                                 # ● スイッチの操作
  4841.                                                                                                                                                                                                                                 #--------------------------------------------------------------------------
  4842.                                                                                                                                                                                                                                 alias command_121_game_interpreter_n03 command_121
  4843.                                                                                                                                                                                                                                 def command_121
  4844.                                                                                                                                                                                                                                         command_121_game_interpreter_n03
  4845.                                                                                                                                                                                                                                         $sv_camera.program_check
  4846.                                                                                                                                                                                                                                 end
  4847.                                                                                                                                                                                                                         end

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
2
发表于 2015-9-13 22:49:10 | 只看该作者
"黑·魔·导_发动" => ["@battler.mp -= 1 && hp-=10000"]
这样呢?试过了没?
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 17:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表