RGSS-ステート自然解除タイミング修正(ターン)

カテゴリ: 投稿日: 2013-02-13
«RGSS一覧

デフォルトだと、戦闘中の
ステート解除タイミングが行動開始時になっている
んですよね…
このままだと行動選択時に、
「解除ターンなのに解除されてない」
「まだこのステートついてるから回復しないと」
とプレイヤーに思わせて混乱を招くかと思うので
ステート解除のタイミングを修正します。

前回はバトラーの行動直後に解除タイミング
でしたが、今回はコマンド入力前のターン開始時に
解除させるやり方を書いておきます。





【今回の変更点】
・Scene_Battle 1
・Scene_Battle 2
・Scene_Battle 4




■Scene_Battle 1

def main 内、プレバトルフェーズ開始よりも上の方に
@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 に戻す必要があるので
次の段階へ。

■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

を消去するだけ。




バトラーごとにバラバラに自然解除させるか
ターンごとに一気に全員のステートを自然解除させるか…
少し違うだけで、
ゲームのバトルスタイルがガラっと変わる事もあります。
ちょっとの違いで大きな変化です(・ω・´)
制作、頑張りましょう!



★このスクリプトを使った関連作品