#---------------------------------------------------------------------------- # アクター戦闘不能処理・戦闘終了後回復処理スクリプト #---------------------------------------------------------------------------- =begin DEAD_PROCESSモジュールの下記4つのフラグで、アクターの回復処理を行います。 これらはゲームスイッチで管理されますので、値を変更するとスイッチを変更出来ます。 ・DEAD_ACTOR_TURN_MP_DECREASE:戦闘不能なら1ターン毎にMPを指定値減少させるフラグ ・DEAD_ACTOR_MP_ZERO:アクターが戦闘不能なら、強制的にMPをゼロに ・BATTLE_END_DEAD_ACTOR_MP_ZERO:戦闘終了後、アクターが死んでいた場合にMPゼロに ・BATTLE_END_REVIVE :戦闘終了後、勝利・逃走時に戦闘不能のアクターを復活 ・BATTLE_END_RECOVER:戦闘終了後、勝利・逃走時に生きているアクターのHPを全回復 下記は変数です。 ・MP_DECREASE_VAR:1ターン毎にアクターのMPを減少させる値(変数) 死亡時、強制的にMPゼロにする場合、戦闘終了後MP0にするフラグは意味が無いです。 設定は出来ますが。 また、BattleManagerモジュールを直接書き換えてますので、競合に注意してください。 リザルト処理を書き換えているスクリプトと競合する可能性が非常に高いです。 =end module DEAD_PROCESS # アクターが戦闘不能なら1ターン毎にMPを指定値減少させるフラグ DEAD_ACTOR_TURN_MP_DECREASE = 92 # 1ターン毎にアクターのMPを減少させる値(変数) MP_DECREASE_VAR = 5 # アクターが戦闘不能なら、強制的にMPをゼロにフラグ DEAD_ACTOR_MP_ZERO = 93 # 戦闘終了後、アクターが死んでいた場合にMPをゼロにするフラグ BATTLE_END_DEAD_ACTOR_MP_ZERO = 94 # 戦闘終了後、勝利・逃走時に戦闘不能のアクターを復活させるフラグ BATTLE_END_REVIVE = 95 # 戦闘終了後、勝利・逃走時に生きているアクターのHPを全回復するフラグ BATTLE_END_RECOVER = 96 end module BattleManager #-------------------------------------------------------------------------- # ● ターン終了 #-------------------------------------------------------------------------- def self.turn_end if $game_switches[DEAD_PROCESS::DEAD_ACTOR_TURN_MP_DECREASE] == true mp_decrease_battle_members end @phase = :turn_end @preemptive = false @surprise = false end #-------------------------------------------------------------------------- # ● 戦闘不能のアクターのMPを指定値ダウンさせる。 #-------------------------------------------------------------------------- def self.mp_decrease_battle_members $game_party.battle_members.each do |actor| actor.mp = actor.mp - DEAD_PROCESS::MP_DECREASE_VAR if actor.dead? end end #-------------------------------------------------------------------------- # ● 戦闘不能のアクターを強制的にMP0にする。 #-------------------------------------------------------------------------- def self.mp_zero_battle_members $game_party.battle_members.each do |actor| actor.mp = 0 if actor.dead? end end #-------------------------------------------------------------------------- # ● 戦闘メンバーの強制全回復(生存時のみ) #   ※ただし、このスクリプトの処理では復活させた後に使っています。 #-------------------------------------------------------------------------- def self.recover_max_battle_members $game_party.battle_members.each do |actor| actor.hp = actor.mhp if actor.alive? end end #-------------------------------------------------------------------------- # ● 戦闘終了処理・MP0化チェック / 復活(チェック無) / HP全回復チェック処理 #-------------------------------------------------------------------------- def self.mp_zero_and_recover_check # 戦闘不能のアクターのMPを0にするフラグはtrueになってるか? if $game_switches[DEAD_PROCESS::BATTLE_END_DEAD_ACTOR_MP_ZERO] == true mp_zero_battle_members end # 復活 revive_battle_members # 全回復フラグはtrueになってるか? if $game_switches[DEAD_PROCESS::BATTLE_END_RECOVER] == true recover_max_battle_members end end #-------------------------------------------------------------------------- # ● 戦闘終了 # result : 結果(0:勝利 1:逃走 2:敗北) #-------------------------------------------------------------------------- def self.battle_end(result) #復活フラグはtrueになってるか? if $game_switches[DEAD_PROCESS::BATTLE_END_REVIVE] == true #勝利時・逃走時のみ回復 case result when 0 mp_zero_and_recover_check when 1 mp_zero_and_recover_check when 2 end end @phase = nil @event_proc.call(result) if @event_proc $game_party.on_battle_end $game_troop.on_battle_end SceneManager.exit if $BTEST end end class Game_Battler #-------------------------------------------------------------------------- # ● 戦闘不能になる(死亡時強制MP0フラグが立っていた場合、強制的にMPを0にする) #-------------------------------------------------------------------------- def die @hp = 0 if $game_switches[DEAD_PROCESS::DEAD_ACTOR_MP_ZERO] == true @mp = 0 end clear_states clear_buffs end end