敗北してもゲームオーバーにしない

 2011-10-14
ランダムエンカウントでも敗北時にゲームオーバーにせずゲームを続行する方法

戦闘終了時の処理は、Scene_Battle#battle_end で行っています。

ここの if result == 2 and not $game_troop.can_lose
if result == 2 && $game_switches[10] に変更すると
10番のスイッチがONのときだけゲームオーバーにするという処理に変わります。

このままだと、パーティのHPが0のままですので、次の戦闘からは必ず負けてしまいます。
復活させる処理が必要なので Scene_Battle#process_defeat に以下の処理を追加します。
for actor in $game_party.members
actor.hp = 1
actor.mp = 0
end
これで、敗北時にパーティのHPが1にMPが0に変更されます。

敗北時にコモンイベントを呼び出したい場合は、
$game_switches[1] = true でスイッチをONにして
コモンイベントを並列処理で実行してください。
$game_temp.common_event_id = 1 だと
イベントが実行中の場合に、いろいろ問題が出てくると思います。


class Scene_Battle
#--------------------------------------------------------------------------
# ● 敗北の処理
#--------------------------------------------------------------------------
alias _cao_gameover_process_defeat process_defeat
def process_defeat
_cao_gameover_process_defeat
for actor in $game_party.members
actor.hp = 1
actor.mp = 0
end
end
#--------------------------------------------------------------------------
# ● 戦闘終了
# result : 結果 (0:勝利 1:逃走 2:敗北)
#--------------------------------------------------------------------------
def battle_end(result)
if result == 2 && $game_switches[10]
call_gameover
else
$game_party.clear_actions
$game_party.remove_states_battle
$game_troop.clear
if $game_temp.battle_proc != nil
$game_temp.battle_proc.call(result)
$game_temp.battle_proc = nil
end
unless $BTEST
$game_temp.map_bgm.play
$game_temp.map_bgs.play
end
$scene = Scene_Map.new
@message_window.clear
Graphics.fadeout(30)
end
$game_temp.in_battle = false
end
end

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

おお、コレは便利ですね
使うかどうかはわからないけど(^^;
【2011/10/15 20:28】 | ABS | [編集]
トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/585-b6e647bf
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/03 >> 02
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

カテゴリー
最近の記事
02/28 お返事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事

最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク