#============================================================================== # ★共有バトルイベント+戦闘終了時バトルイベント ver1.02 by USK #------------------------------------------------------------------------------ # ・25行目で設定した番号の敵グループのバトルイベントをすべての敵グループで #  共有します。 # ・バトルイベントの条件を「実行しない」にすると、戦闘終了時に実行されるように #  なります。 # ・バトルイベント中の条件分岐でスクリプトを選択し、以下のように記述すると # 戦闘終了時の状態に応じたバトルイベントを構築できます。 # victory? #=>戦闘勝利したらtrue # defeat? #=>戦闘に敗北したらtrue # abort? #=>「バトルの中断」のイベントが発生したらtrue # escape? #=>「逃げる」が成功したらtrue #============================================================================== #============================================================================== # ■ Game_Troop #============================================================================== class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ● 設定 #-------------------------------------------------------------------------- CommonBattleEventId = 1 #共有バトルイベント用敵グループの番号 #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias usk_cbe_setup setup def setup(troop_id) usk_cbe_setup(troop_id) troop.pages |= $data_troops[CommonBattleEventId].pages end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def setup_battle_end_event troop.pages.each do |page| next unless page.condition.battle_ending && !@event_flags[page] @interpreter.setup(page.list) @event_flags[page] = true return end end end #============================================================================== # ■ BattleManager #============================================================================== module BattleManager #-------------------------------------------------------------------------- # ● 勝敗判定 #-------------------------------------------------------------------------- class << self; alias :usk_cbe_judge_win_loss :judge_win_loss; end def self.judge_win_loss if @phase && SceneManager.scene_is?(Scene_Battle) if ($game_party.members.empty? || $game_party.all_dead? || $game_troop.all_dead? ||aborting?) SceneManager.scene.process_end_event end end usk_cbe_judge_win_loss end #-------------------------------------------------------------------------- # ● 逃走の処理 #-------------------------------------------------------------------------- class << self; alias :usk_cbe_process_escape :process_escape; end def self.process_escape scene = SceneManager.scene ret = usk_cbe_process_escape @phase = :escape scene.process_end_event ret end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def self.escape? @phase == :escape end end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def victory? $game_troop.all_dead? end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def abort? $game_party.members.empty? || BattleManager.aborting? end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def defeat? $game_party.all_dead? end #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def escape? BattleManager.escape? end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● イベントの処理 #-------------------------------------------------------------------------- def process_end_event $game_troop.setup_battle_end_event while $game_troop.interpreter.running? $game_troop.interpreter.update wait_for_message update_for_wait $game_troop.setup_battle_end_event unless $game_troop.interpreter.running? end end end #============================================================================== # ■ RPG::Troop::Page::Condition #============================================================================== class RPG::Troop::Page::Condition #-------------------------------------------------------------------------- # ● #-------------------------------------------------------------------------- def battle_ending @battle_ending ||= !(turn_ending||turn_valid||enemy_valid||actor_valid||switch_valid) end end