# # 連撃のフィニッシュブロー(Ver2.00) #  (C)2005,2007 TYPE74RX-T # #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備) #-------------------------------------------------------------------------- alias rx_rgssb5_update_phase4_step1 update_phase4_step1 def update_phase4_step1 # メソッドを呼び戻す rx_rgssb5_update_phase4_step1 # 発動モーションフラグの初期化 @rx_movement_motion = false # スキルシフトフラグの初期化 @rx_skill_shift = false # フィニッシュブロースキルIDの初期化 @rx_fb_id = 0 # 発動モーションセットフラグをONに @rx_set_movement_motion = false end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始) #-------------------------------------------------------------------------- alias rx_rgssb5_update_phase4_step2 update_phase4_step2 def update_phase4_step2 # メソッドを呼び戻す rx_rgssb5_update_phase4_step2 # 連続行動中(フィニッシュブローモード)かつ発動モーションフラグが有効の場合 if @rx_atk_count >= 1 and @rx_fb_flag and @rx_movement_motion # ステップ 3 に移行 @phase4_step = 3 return end # 初回行動(フィニッシュブローモード)かつ # 発動モーションフラグが無効の場合 if @rx_atk_count < 1 and @rx_fb_flag and not @rx_movement_motion # ステップ 4 に移行(行動側アニメーションスキップ) @phase4_step = 4 return end end #-------------------------------------------------------------------------- # ★ 基本アクション時の特殊効果前処理 #-------------------------------------------------------------------------- alias rx_rgssb5_rx_weapon_special_effect rx_weapon_special_effect def rx_weapon_special_effect(weapon_id) # メソッドを呼び戻す rx_rgssb5_rx_weapon_special_effect(weapon_id) # 一時的に装備武器データを読み込む weapon = $data_weapons[weapon_id] # 連撃中・フィニッシュブロー属性・連撃の最後の一撃の # 3つの条件を満たしていたら if @rx_max_continuous_atks > 1 and RX_T.check_element(weapon.element_set, "FB") and @rx_atk_count+1 == @rx_max_continuous_atks # 発動モーションの属性が付いていたら if RX_T.check_element(weapon.element_set, "発動モーション") # 発動モーションフラグをONに @rx_movement_motion = true # 行動側アニメーションの高速化を制限 $rx_anm_spd_limit = true end # スキル使用フラグを立てる @active_battler.current_action.kind = 1 # フィニッシュブロー時のスキルIDを取得 @active_battler.current_action.skill_id = RX_T.get_num_from_element(weapon.element_set, "FB") # アクション強制フラグをON @active_battler.current_action.forcing = true # フィニッシュブローフラグをON @rx_fb_flag = true return end end #-------------------------------------------------------------------------- # ● スキルまたはアイテムの対象側バトラー設定 # scope : スキルまたはアイテムの効果範囲 #-------------------------------------------------------------------------- alias rx_rgssb5_set_target_battlers set_target_battlers def set_target_battlers(scope) # メソッドを呼び戻す rx_rgssb5_set_target_battlers(scope) # 行動側バトラーがアクターの場合 # (フィニッシュブロー時、混乱等で味方を攻撃する場合) if @active_battler.is_a?(Game_Actor) and @rx_fb_flag and @active_battler.restriction == 3 # 対象バトラーをクリア @target_battlers = [] # 効果範囲で分岐 case scope when 1 # 敵単体 index = @active_battler.current_action.target_index @target_battlers.push($game_party.smooth_target_actor(index)) when 2 # 敵全体 for actor in $game_party.actors if actor.exist? @target_battlers.push(actor) end end when 3 # 味方単体 index = @active_battler.current_action.target_index @target_battlers.push($game_troop.smooth_target_enemy(index)) when 4 # 味方全体 for enemy in $game_troop.enemies if enemy.exist? @target_battlers.push(enemy) end end when 5 # 味方単体 (HP 0) index = @active_battler.current_action.target_index enemy = $game_troop.enemies[index] if enemy != nil and enemy.hp0? @target_battlers.push(enemy) end when 6 # 味方全体 (HP 0) for enemy in $game_troop.enemies if enemy != nil and enemy.hp0? @target_battlers.push(enemy) end end when 7 # 使用者 @target_battlers.push(@active_battler) end end end #-------------------------------------------------------------------------- # ★ スキル使用時の特殊効果前処理 #-------------------------------------------------------------------------- alias rx_rgssb5_rx_skill_special_effect rx_skill_special_effect def rx_skill_special_effect(skill_id) # メソッドを呼び戻す rx_rgssb5_rx_skill_special_effect(skill_id) # 連撃中・発動モーションフラグがONなら if @rx_max_continuous_atks > 1 and @rx_movement_motion # 発動モーションフラグを初期化 @rx_movement_motion = false # 行動側アニメーションの高速化制限フラグを初期化 $rx_anm_spd_limit = false end # 一時的にスキルデータを読み込む skill = $data_skills[skill_id] # フィニッシュブロー属性で、且つ、フィニッシュブローID初取得なら if RX_T.check_element(skill.element_set, "FB") and @rx_fb_id < 1 # フィニッシュブロー時のスキルIDを取得(行動終了まで保持) @rx_fb_id = RX_T.get_num_from_element(skill.element_set, "FB") # 発動モーションの属性が付いていたら if skill.element_set.include?($data_system.elements.index("発動モーション")) # 発動モーション準備フラグをONに @rx_set_movement_motion = true end end # 連撃モード・フィニッシュブロー時のスキルIDを取得・連撃の最後の一撃の # 3つの条件を満たしていたら if @rx_max_continuous_atks > 1 and @rx_fb_id > 0 and @rx_atk_count == @rx_max_continuous_atks-1 # 増加していた SP を減少させる @active_battler.sp -= skill.sp_cost # 発動モーション準備フラグがあれば if @rx_set_movement_motion # 発動モーションフラグをONに @rx_movement_motion = true # 行動側アニメーションの高速化を制限 $rx_anm_spd_limit = true end # スキル設定をフィニッシュブロー用のものに変更 skill2 = $data_skills[@rx_fb_id] # SP 増加 @active_battler.rx_gain_sp(skill2.sp_cost) # フィニッシュブロー時のスキルIDを取得 @active_battler.current_action.skill_id = @rx_fb_id @rx_fb_id = 0 $rx_skl_dam_dur = 0 # スキル発動速度(ダメージ)の初期化 $rx_skl_anm_dur = 0 # スキル発動速度(戦闘アニメ)の初期化 @rx_random_target = false # ランダムターゲットフラグの初期化 # 連撃系属性なら if RX_T.check_element(skill2.element_set, "連撃x") # 連撃可能数を取得 @rx_max_continuous_atks = RX_T.get_num_from_element(skill2.element_set, "連撃") # 連撃数を初期化 @rx_atk_count = 0 # 行動側アニメーションの高速化を制限 $rx_anm_spd_limit = true end # ランダムターゲット属性なら if RX_T.check_element(skill2.element_set, "ランダムターゲット") # ランダムターゲットフラグをオンに @rx_random_target = true end # スキル発動速度(戦闘アニメ)属性なら if RX_T.check_element(skill2.element_set, "発動速度A") # スキル発動速度(戦闘アニメ)速度を設定しておく $rx_skl_anm_dur = RX_T.get_num_from_element(skill2.element_set, "発動速度A") end # スキル発動速度(ダメージ)属性なら if RX_T.check_element(skill2.element_set, "発動速度D") # スキル発動速度(ダメージ)速度を設定しておく $rx_skl_dam_dur = RX_T.get_num_from_element(skill2.element_set, "発動速度D") end # アクション強制フラグをON @active_battler.current_action.forcing = true # フィニッシュブローフラグをON @rx_fb_flag = true end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示) #-------------------------------------------------------------------------- alias rx_rgssb5_update_phase4_step5 update_phase4_step5 def update_phase4_step5 # メソッドを呼び戻す rx_rgssb5_update_phase4_step5 # メインフェーズのステップが2に指定されていない場合 # (=連撃中でないか連撃が終了していれば) unless @phase4_step == 2 # 発動モーション準備フラグをOFFに @rx_set_movement_motion = false # 発動モーションフラグをOFFに @rx_movement_motion = false # フィニッシュブローフラグをOFFに @rx_fb_flag = false end end end