#============================================================================== # [ZTBS] -Zenith Tactical Battle System- タクティカルバトルシステム #  〜4:ZTBS プレバトルフェーズ&アクターフェーズ〜   by 水夜 #  ver1.10  Zenith Creation (http://zenith.ifdef.jp/) #------------------------------------------------------------------------------ # マップ上での戦略的なバトルを実現。 #============================================================================== #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● プレバトルフェーズ開始 #-------------------------------------------------------------------------- def start_phase0 # フェーズ 0 に移行 $game_system.tactics_phase = 0 # ターンイベントセット if defined? turn_event set_turn_event end end #-------------------------------------------------------------------------- # ● フレーム更新 (プレバトルフェーズ) #-------------------------------------------------------------------------- def update_phase0 # ウィンドウ位置調整 move_window # 戦闘不能復活判定 battler_revival # エフェクト中の場合 if effect? return end # イベント実行中の場合 if $game_system.map_interpreter.running? return end # リザルトウィンドウ表示中の場合 if defined? result_window and result_window return end # # バトル前に何か処理を加えたい場合はここら辺で # # アクターフェーズ開始 start_phase1 end #-------------------------------------------------------------------------- # ● アクターフェーズ開始 #-------------------------------------------------------------------------- def start_phase1 # フェーズ 1 に移行 $game_system.tactics_phase = 1 # 行動済みフラグを解除 clear_acted # アクターフェーズ開始画像表示 appear_actor_phase_picture # ターンカウント $game_system.tactics_turn += 1 # ステップを 1 に設定 $game_system.tactics_step = 1 # カーソル固定を解除 $game_player.not_update = false # ターンイベントセット if defined? turn_event set_turn_event end end #-------------------------------------------------------------------------- # ● アクターフェーズ開始画像表示 #-------------------------------------------------------------------------- def appear_actor_phase_picture @help_window.visible = false @count = 0 @picture = Sprite.new @picture.bitmap = RPG::Cache.picture(ZTBS::ACTOR_PHASE) @picture.ox = @picture.bitmap.width / 2 @picture.oy = @picture.bitmap.height / 2 @picture.x = 320 @picture.y = 240 @picture.opacity = 0 loop do @count += 1 @picture.opacity += 15 if @count < 20 @picture.opacity -= 15 if @count > 60 break if @count == 80 # ゲーム画面を更新 Graphics.update end @picture.bitmap.dispose @picture.dispose @picture = nil end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ) #-------------------------------------------------------------------------- def update_phase1 # ウィンドウ位置調整 move_window # 戦闘不能復活判定 battler_revival # 勝敗判定 if judge return end # エフェクト中の場合 if effect? return end # イベント実行中の場合 if $game_system.map_interpreter.running? return end # セレクト中の場合 if @select != nil and @select != 10 update_select return end # リザルトウィンドウ表示中の場合 if defined? result_window and result_window return end # ステップに応じて更新 case $game_system.tactics_step when 0 update_phase1_step0 when 1 update_phase1_step1 when 2 update_phase1_step2 when 3 update_phase1_step3 when 4 update_phase1_step4 when 5 update_phase1_step5 when 6 update_phase1_step6 when 7 update_step7 when 8 update_step8 when 9 update_step9 when 10 update_step10 end if $game_system.tactics_step != 1 return end # 全員行動済み判定 case all_acted? when 1 start_phase2 return when 2 # 未行動アクター処理 not_acted_actor_refresh return end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ セレクト) #-------------------------------------------------------------------------- def update_select # C ボタンが押された場合 if Input.trigger?(Input::C) # アクターウィンドウ if @select_window.is_a?(Window_TActors) # 現在選択されているアクターを取得 actor = $game_map.events[@select_window.actor] if $game_system.tactics_step == 0 if !$game_system.tactics_actors.keys.include?(@select_window.actor) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end else if $game_system.tactics_actors.keys.include?(@select_window.actor) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # セレクトウィンドウを解放 dispose_select_window # セレクト終了 @select = nil # カーソル固定を解除 $game_player.not_update = false if $game_system.tactics_step != 0 # 攻撃エリアをセット set_attack_area(0) # ステップ 6 へ移行 $game_system.tactics_step = 6 @targets = {} @targets[actor.id] = $game_system.tactics_dead_actors[actor.id] return end @battler = actor $game_player.moveto(@battler.x, @battler.y) # ヘルプウィンドウにアクターをセット set_battler_info # ステップ 1 へ移行 $game_system.tactics_step = 1 # スキルウィンドウ elsif @select_window.is_a?(Window_TSkill) # スキルウィンドウで現在選択されているデータを取得 @skill = @select_window.skill # 使用できない場合 if @skill == nil or not @attacker.skill_can_use?(@skill.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) @skill = nil return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # アクションを設定 @attacker.current_action.skill_id = @skill.id # セレクトウィンドウを解放 dispose_select_window # 対象が戦闘不能味方の場合 if @skill.scope == 5 or @skill.scope == 6 # セレクトウィンドウを作成 make_select_window(0,0) @revival = true return end # ヘルプウィンドウにアクターをセット set_battler_info # ステップ 6 へ移行 $game_system.tactics_step = 6 # セレクト終了 @select = 10 # 攻撃エリアをセット set_attack_area(0) # カーソル固定を解除 $game_player.not_update = false # アイテムウィンドウ elsif @select_window.is_a?(Window_TItem) # アイテムウィンドウで現在選択されているデータを取得 @item = @select_window.item # 使用できない場合 if @item == nil or not $game_party.item_can_use?(@item.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) @item = nil return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # アクションを設定 @attacker.current_action.item_id = @item.id # セレクトウィンドウを解放 dispose_select_window # 対象が戦闘不能味方の場合 if @item.scope == 5 or @item.scope == 6 # セレクトウィンドウを作成 make_select_window(0,0) @revival = true return end # ヘルプウィンドウにアクターをセット set_battler_info # ステップ 6 へ移行 $game_system.tactics_step = 6 # セレクト終了 @select = 10 # 攻撃エリアをセット set_attack_area(0) # カーソル固定を解除 $game_player.not_update = false end end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # セレクトウィンドウを解放 dispose_select_window # 戦闘不能者選択中 if @revival != nil and $game_system.tactics_step != 0 # セレクトウィンドウを作成 case @attacker.current_action.kind when 1 make_select_window(1, @attacker, @skill) when 2 make_select_window(2, nil, @item) end @revival = nil return end # コマンドウィンドウを作成 make_command_window(@select) # ヘルプウィンドウにアクターをセット set_battler_info # セレクト終了 @select = nil # ステップ 2 帰還フラグ解除 @back_step2 = nil end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 0 : メニューコマンド) #-------------------------------------------------------------------------- def update_phase1_step0 # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウを解放 dispose_command_window # カーソル固定を解除 $game_player.not_update = false # ステップ 1 へ移行 $game_system.tactics_step = 1 end # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # コマンドによって分岐 case @command_window.index # アクター確認 when 0 # コマンドウィンドウ解放 dispose_command_window # セレクト へ移行 @select = 0 # セレクトウィンドウを作成 make_select_window(0,0) # ターン終了 when 1 # コマンドウィンドウを解放 dispose_command_window # 未行動アクター処理 not_acted_actor_refresh # ステップ 1 へ移行 $game_system.tactics_step = 1 # セーブ or タイトルへ when 2 if ZTBS::POSSIBLE_SAVE # セーブ呼び出しフラグ $game_temp.save_calling = true # ステップ 1 へ移行 $game_system.tactics_step = 1 # コマンドウィンドウを解放 dispose_command_window # カーソル固定を解除 $game_player.not_update = false else $game_temp.to_title = true @help_window.dispose @help_window = nil dispose_command_window end # タイトルへ when 3 $game_temp.to_title = true @help_window.dispose @help_window = nil dispose_command_window end end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 1 : アクター選択) #-------------------------------------------------------------------------- def update_phase1_step1 # カーソル位置のバトラー(イベント)取得 get_cursor_battler # カーソル位置にバトラーがいる場合 if @battler != nil # ヘルプウィンドウにアクター or エネミーをセット set_battler_info # アクターの場合 if $game_system.tactics_actors.keys.include?(@battler.id) # C ボタンが押された場合 if Input.trigger?(Input::C) and !$game_player.moving? # 未行動の場合 actor = $game_system.tactics_actors[@battler.id] if !@battler.acted and !actor.restriction != 4 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # カーソルを固定 $game_player.not_update = true # ステップ 2 へ移行 $game_system.tactics_step = 2 # コマンドウィンドウを作成 make_command_window else # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end end # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 前のアクターへ back_actor end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 次のアクターへ next_actor end # エネミーの場合 else # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 最後のアクターへ actor = $game_map.events[$game_system.tactics_actors.keys[$game_system.tactics_actors.keys.size - 1]] $game_player.moveto(actor.x, actor.y) end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 最初のアクターへ actor = $game_map.events[$game_system.tactics_actors.keys[0]] $game_player.moveto(actor.x, actor.y) end end # カーソル位置にバトラーがいない場合、ヘルプウィンドウを隠す else @help_window.visible = false # L ボタンが押された場合 if Input.trigger?(Input::L) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 最後のアクターへ actor = $game_map.events[$game_system.tactics_actors.keys[$game_system.tactics_actors.keys.size - 1]] $game_player.moveto(actor.x, actor.y) end # R ボタンが押された場合 if Input.trigger?(Input::R) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 最初のアクターへ actor = $game_map.events[$game_system.tactics_actors.keys[0]] $game_player.moveto(actor.x, actor.y) end end # B ボタンが押された場合 if Input.trigger?(Input::B) and !$game_player.moving? # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # ステップ 0 へ移行 $game_system.tactics_step = 0 # コマンドウィンドウを作成 make_command_window # カーソルを固定 $game_player.not_update = true end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 2 : 移動前コマンド) #-------------------------------------------------------------------------- def update_phase1_step2 # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウを解放 dispose_command_window # カーソル固定を解除 $game_player.not_update = false # ステップ 1 へ移行 $game_system.tactics_step = 1 end # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # コマンドによって分岐 case @command_window.index # 移動 when 0 # コマンドウィンドウ解放 dispose_command_window # 移動エリアをセット set_movable_area(0) # カーソル固定を解除 $game_player.not_update = false # ステップ 3 へ移行 $game_system.tactics_step = 3 # 行動バトラー設定 @active_battler = @battler # 攻撃 when 1 # コマンドウィンドウ解放 dispose_command_window # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # アクションを設定 @attacker.current_action.kind = 0 @attacker.current_action.basic = 0 # 攻撃エリアをセット set_attack_area(0) # カーソル固定を解除 $game_player.not_update = false # ステップ 6 へ移行 $game_system.tactics_step = 6 # ステップ 2 帰還フラグ @back_step2 = true # スキル when 2 # コマンドウィンドウ解放 dispose_command_window # セレクト へ移行 @select = 2 # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # セレクトウィンドウを作成 make_select_window(1, @attacker) # アクションを設定 @attacker.current_action.kind = 1 # ステップ 2 帰還フラグ @back_step2 = true # アイテム when 3 # コマンドウィンドウ解放 dispose_command_window # セレクト へ移行 @select = 3 # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # セレクトウィンドウを作成 make_select_window(2) # アクションを設定 @attacker.current_action.kind = 2 # ステップ 2 帰還フラグ @back_step2 = true end end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 3 : 移動先選択) #-------------------------------------------------------------------------- def update_phase1_step3 # カーソル位置のバトラー(イベント)取得 get_cursor_battler # ヘルプウィンドウにアクター or エネミーをセット set_battler_info # C ボタンが押された場合 if Input.trigger?(Input::C) and !$game_player.moving? # カーソルが移動エリア内の場合 if in_area?($game_player.x, $game_player.y) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # カーソルを固定 $game_player.not_update = true # エリアを解放 dispose_area # ステップ 4 へ移行 $game_system.tactics_step = 4 # 座標を記憶 @pre_x = @active_battler.x @pre_y = @active_battler.y # 移動ルート取得 @route_list = @route[@position.index([$game_player.x, $game_player.y])] else # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end end # B ボタンが押された場合 if Input.trigger?(Input::B) and !$game_player.moving? # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # エリアを解放 dispose_area # カーソル位置を戻す back_cursor # カーソルを固定 $game_player.not_update = true # ステップ 2 へ移行 $game_system.tactics_step = 2 # コマンドウィンドウを作成 make_command_window end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 4 : 移動中) #-------------------------------------------------------------------------- def update_phase1_step4 # ステップカウント初期化 if @step_count == nil @step_count = 0 end if !@active_battler.moving? if @active_battler.x == $game_player.x and @active_battler.y == $game_player.y and # 移動完了でステップ 5 に移行 $game_system.tactics_step = 5 # 選択中アクター更新 @battler = @active_battler back_cursor # コマンドウィンドウを作成 make_command_window # カーソルを固定 $game_player.not_update = true @step_count = nil return end # カーソル位置まで移動 action = @route_list[@step_count] @step_count += 1 case action when 2 @active_battler.move_down when 4 @active_battler.move_left when 6 @active_battler.move_right when 8 @active_battler.move_up end end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # 元の位置に戻す @active_battler.moveto(@pre_x, @pre_y) # カーソル位置を戻す back_cursor # 移動エリアをセット set_movable_area(0) # カーソル固定を解除 $game_player.not_update = false # ステップ 3 へ移行 $game_system.tactics_step = 3 @step_count = nil end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 5 : 移動後コマンド) #-------------------------------------------------------------------------- def update_phase1_step5 # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウ解放 dispose_command_window # 元の位置に戻す @active_battler.moveto(@pre_x, @pre_y) # カーソル位置を戻す back_cursor # 移動エリアをセット set_movable_area(0) # カーソル固定を解除 $game_player.not_update = false # ステップ 3 へ移行 $game_system.tactics_step = 3 end # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # コマンドによって分岐 case @command_window.index # 攻撃 when 0 # コマンドウィンドウ解放 dispose_command_window # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # アクションを設定 @attacker.current_action.kind = 0 @attacker.current_action.basic = 0 # 攻撃エリアをセット set_attack_area(0) # カーソル固定を解除 $game_player.not_update = false # ステップ 6 へ移行 $game_system.tactics_step = 6 # スキル when 1 # コマンドウィンドウ解放 dispose_command_window # セレクト へ移行 @select = 1 # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # セレクトウィンドウを作成 make_select_window(1, @attacker) # アクションを設定 @attacker.current_action.kind = 1 # アイテム when 2 # コマンドウィンドウ解放 dispose_command_window # セレクト へ移行 @select = 2 # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] # セレクトウィンドウを作成 make_select_window(2) # アクションを設定 @attacker.current_action.kind = 2 # 待機 when 3 # コマンドウィンドウ解放 dispose_command_window # ステップ 10 へ移行 $game_system.tactics_step = 10 # 行動バトラー設定 @active_battler = @battler # 攻撃バトラー取得 @attacker = $game_system.tactics_actors[@active_battler.id] end end end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターフェーズ ステップ 6 : 対象選択) #-------------------------------------------------------------------------- def update_phase1_step6 # カーソル位置のバトラー(イベント)取得 get_cursor_battler # ヘルプウィンドウにアクター or エネミーをセット set_battler_info # C ボタンが押された場合 if Input.trigger?(Input::C) and !$game_player.moving? # 発動可能な場合 if possible_action? @back_step2 = nil # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # カーソルを固定 $game_player.not_update = true # エリアを解放 dispose_area # ステップ 7 へ移行 $game_system.tactics_step = 7 @select = nil if @revival == nil # ターゲットを取得 @targets = {} for i in @can_attack if $game_system.tactics_actors.keys.include?(i) @targets[i] = $game_system.tactics_actors[i] $game_map.events[i].turn_toward_event(@active_battler.id) else @targets[i] = $game_system.tactics_enemies[i] $game_map.events[i].turn_toward_event(@active_battler.id) end end @active_battler.turn_toward_position($game_player.x, $game_player.y) # 戦闘不能回復の場合 else $game_map.events[@targets.keys[0]].moveto($game_player.x, $game_player.y) @active_battler.turn_toward_position($game_player.x, $game_player.y) $game_map.events[@targets.keys[0]].turn_toward_event(@active_battler.id) end @revival = nil @can_attack = nil # アクション結果作成 case @attacker.current_action.kind when 0 make_basic_action_result when 1 make_skill_action_result when 2 make_item_action_result end else # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) end end # B ボタンが押された場合 if Input.trigger?(Input::B) and !$game_player.moving? @targets = nil @revival = nil # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # エリアを解放 dispose_area # カーソル位置を戻す back_cursor # カーソルを固定 $game_player.not_update = true if @back_step2 != nil and @back_step2 # ステップ 2 へ移行 $game_system.tactics_step = 2 if @select != nil case @attacker.current_action.kind when 1 # セレクトウィンドウを作成 make_select_window(1, @attacker, @skill) @select = 2 when 2 # セレクトウィンドウを作成 make_select_window(2, nil, @item) @select = 3 end else @back_step2 = nil # コマンドウィンドウを作成 make_command_window(1) end else # ステップ 5 へ移行 $game_system.tactics_step = 5 if @select != nil case @attacker.current_action.kind when 1 # セレクトウィンドウを作成 make_select_window(1, @attacker, @skill) @select = 1 when 2 # セレクトウィンドウを作成 make_select_window(2, nil, @item) @select = 2 end else # コマンドウィンドウを作成 make_command_window end end end end #-------------------------------------------------------------------------- # ● フレーム更新 (ステップ 7 共有 : 行動側アニメーション) #-------------------------------------------------------------------------- def update_step7 # 行動側アニメーション (ID が 0 の場合は白フラッシュ) if @animation1_id == 0 @active_battler.white_flash = true else @active_battler.animation_id = @animation1_id @active_battler.animation_hit = true end # ステップ 8 に移行 $game_system.tactics_step = 8 end #-------------------------------------------------------------------------- # ● フレーム更新 (ステップ 8 共有 : 対象側アニメーション) #-------------------------------------------------------------------------- def update_step8 all_targets_animation = false # ターゲットが複数存在する場合 if @targets.size > 1 case @attacker.current_action.kind when 0 if defined? @attacker.attack_range and @attacker.attack_range != nil all_targets_animation = @attacker.attack_range[1][2] end when 1 skill = $data_skills[@attacker.current_action.skill_id] all_targets_animation = skill.range[1][2] when 2 item = $data_items[@attacker.current_action.item_id] all_targets_animation = item.range[1][2] end end if !all_targets_animation # 最もカーソルに近いバトラーを取得 i = nearest_battler(@targets.keys) # 対象側アニメーション $game_map.events[i].animation_id = @animation2_id $game_map.events[i].animation_hit = (@targets[i].damage != "Miss") else # 対象側アニメーション for i in @targets.keys $game_map.events[i].animation_id = @animation2_id $game_map.events[i].animation_hit = (@targets[i].damage != "Miss") end end # アニメーションの長さにかかわらず、最低 8 フレーム待つ @wait_count = 8 # ステップ 9 に移行 $game_system.tactics_step = 9 end #-------------------------------------------------------------------------- # ● フレーム更新 (ステップ 9 共有 : ダメージ表示) #-------------------------------------------------------------------------- def update_step9 @help_window.visible = false # ダメージ表示ラグ有りの場合 if ZTBS::DAMAGE_LAG if @targets.keys.size == 0 # 最低 10 フレーム待つ @wait_count = 10 # 消去対象をチェック set_erase_battler # ステップ 10 に移行 $game_system.tactics_step = 10 return end if !@spriteset.effect? # ダメージ表示 i = @targets.keys[0] $game_map.events[i].damage = @targets[i].damage $game_map.events[i].critical = @targets[i].critical if $game_map.events[i].damage != nil $game_map.events[i].damage_pop = true end # エネミーが戦闘不能になった場合 if @targets[i].is_a?(Game_Enemy) and @targets[i].dead? # 経験値など獲得 get_exp_etc(@targets[i]) end @targets.delete(i) end # ダメージ表示ラグ無しの場合 else # ダメージ表示 for i in @targets.keys $game_map.events[i].damage = @targets[i].damage $game_map.events[i].critical = @targets[i].critical if $game_map.events[i].damage != nil $game_map.events[i].damage_pop = true end # エネミーが戦闘不能になった場合 if @targets[i].is_a?(Game_Enemy) and @targets[i].dead? # 経験値など獲得 get_exp_etc(@targets[i]) end end # 消去対象をチェック set_erase_battler # 最低 10 フレーム待つ @wait_count = 10 # ステップ 10 に移行 $game_system.tactics_step = 10 return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ステップ 10 共有 : 行動終了) #-------------------------------------------------------------------------- def update_step10 # スリップダメージ if @attacker.hp > 0 and @attacker.slip_damage? @attacker.slip_damage_effect @active_battler.damage = @attacker.damage @active_battler.damage_pop = true end # ステート自然解除 @attacker.remove_states_auto # エネミーが戦闘不能になった場合 if @attacker.is_a?(Game_Enemy) and @attacker.dead? # 経験値など獲得 get_exp_etc(@attacker) end # 消去対象をチェック set_erase_battler # カーソル位置を戻す back_cursor refresh_battler_info @active_battler.acted = true # エネミーフェーズの場合、ステップ 0 へ if $game_system.tactics_phase == 2 @wait_count = ZTBS::ENEMY_THINKING if @attacker.dead? @enemy_index -= 1 end $game_system.tactics_step = 0 if @targets != nil @targets.clear end return end # カーソル固定を解除 $game_player.not_update = false # ステップ 1 に移行 $game_system.tactics_step = 1 # 行動者と対象を解放 @active_battler = nil @attacker = nil if @targets != nil @targets.clear end end end