デフォルトだと、戦闘中の
ステート解除タイミングが行動開始時になっている
んですよね…
このままだと行動選択時に、
「解除ターンなのに解除されてない」
「まだこのステートついてるから回復しないと」
とプレイヤーに思わせて混乱を招くかと思うので
ステート解除のタイミングを修正します。
前回はバトラーの行動直後に解除タイミング
でしたが、今回はコマンド入力前のターン開始時に
解除させるやり方を書いておきます。
【今回の変更点】
・Scene_Battle 1
・Scene_Battle 2
・Scene_Battle 4
・Scene_Battle 2
・Scene_Battle 4
■Scene_Battle 1
def main 内、プレバトルフェーズ開始よりも上の方に
@remove_states = false(変数の名前はダブらなければ自由)
を追加。
@remove_states = false(変数の名前はダブらなければ自由)
を追加。
■Scene_Battle 2
def start_phase2 の下に下記追加。
if @remove_states == false
for actor in $game_party.actors
actor.remove_states_auto
end
for enemy in $game_troop.enemies
enemy.remove_states_auto
end
@status_window.refresh
@remove_states = true
end
これが一度実行されると「@remove_states」がtrueになるので
アクターコマンドフェーズからキャンセルして
再度繰り返される事はありません。
ですが次のターンのために
一度「@remove_states」を false に戻す必要があるので
次の段階へ。
if @remove_states == false
for actor in $game_party.actors
actor.remove_states_auto
end
for enemy in $game_troop.enemies
enemy.remove_states_auto
end
@status_window.refresh
@remove_states = true
end
これが一度実行されると「@remove_states」がtrueになるので
アクターコマンドフェーズからキャンセルして
再度繰り返される事はありません。
ですが次のターンのために
一度「@remove_states」を false に戻す必要があるので
次の段階へ。
■Scene_Battle 4
「フレーム更新」
def update_phase4_step1(メインフェーズ ステップ1)
# 未行動バトラーが存在しない場合 (全員行動した)
if @action_battlers.size == 0
@remove_states = false ←追加
# パーティコマンドフェーズ開始
start_phase2
return
end
これでターン毎に解除タイミングを設ける事ができた…ハズ。
あとは前回と同じくScene_Battle 4の
134行目~あたりの
# ステート自然解除
@active_battler.remove_states_auto
# ステータスウィンドウをリフレッシュ
@status_window.refresh
を消去するだけ。
バトラーごとにバラバラに自然解除させるか
ターンごとに一気に全員のステートを自然解除させるか…
少し違うだけで、
ゲームのバトルスタイルがガラっと変わる事もあります。
ちょっとの違いで大きな変化です(・ω・´)
制作、頑張りましょう!