#◆◇◆◇◆ ☆ タイムラグ全体攻撃 RTAB ver 1.00 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと # リアルタイム・アクティブバトル(RTAB) ver 1.16 # 配布元・サポートURL(歯車の城) # http://members.jcom.home.ne.jp/cogwheel/ # by ショウ =begin ※ 動作確認はRTAB本体(ver 1.16)と本スクリプトのみで行っています。 それ以外のRTAB関連のスクリプトとの併用は保障しかねます。 RTAB本体の真下か、 可能な限り近いで且つ、RTAB本体よりも下の位置においてください。 説明 ※ 出来るだけ下の位置に導入してください。 XPのデフォルト仕様では、全体攻撃は同時に処理されてしまいます。 アニメが「画面」のアニメならいいのですが、 それ以外のアニメの全体攻撃も同時に処理されてしまうので、 見た目にもわかり難く、ダメージも把握しづらくなっています。 そこで、全体攻撃の場合、アニメの位置が「画面」以外なら 次のターゲットに表示されるまで、若干のタイムラグを発生させ、 ダメージ表示やコラプスも遅らせます。 (ダメージ表示と、コラプスのタイムラグは「画面」のアニメでも効果があります) =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # タイムラグ全体攻撃を有効化 ( true で有効 / false で無効 ) RGSS["Thyme_Lag"] = true end # タイムラグ全体攻撃が有効な場合に以降の処理を実行する if MINTO::RGSS["Thyme_Lag"] == true then #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズをここで行います。 #============================================================================== module MINTO # タイムラグフレーム数(原則、1秒間が40フレームです) Thyme_Lag = 10 # タイムラグを無効化するアニメーションのID(配列式) # タイムラグが発生しないアニメーションのIDを配列式で記入してください # 0 はアニメ無しの場合です Not_Thyme_Lag_Anime = [0, 10, 20, 30] end #============================================================================== # ■ Game_Battler (分割定義 1) #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :thyme_lag # タイムラグカウント end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● フレーム更新 # alias : update_MINTO_Thyme_Lag #-------------------------------------------------------------------------- alias update_MINTO_Thyme_Lag update def update # バトラーが存在しない場合 if @battler == nil then # ビットマップをクリア self.bitmap = nil # ループアニメーションをクリア loop_animation(nil) # メソッドを返す return end # タイムラグカウントが存在する場合 if @battler.thyme_lag.to_i >= 1 # タイムラグカウントを減らす @battler.thyme_lag -= 1 # スプライトの座標を設定 self.x = @battler.screen_x self.y = @battler.screen_y self.z = @battler.screen_z if @battler.is_a?(Game_Enemy) self.zoom_x = @battler.real_zoom * @battler.zoom self.zoom_y = @battler.real_zoom * @battler.zoom end # メソッドを返す return end # 元の処理を実行 update_MINTO_Thyme_Lag end end #============================================================================== # ■ Scene_Battle (分割定義 4) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション) #-------------------------------------------------------------------------- alias update_phase4_step4_Thyme_Lag update_phase4_step4 def update_phase4_step4(battler) # 元の処理を実行 update_phase4_step4_Thyme_Lag(battler) # タイムラグが有効なアニメーションIDの場合 if MINTO::Not_Thyme_Lag_Anime.include?(battler.anime2) == false then # アニメの位置が 画面 以外の場合 if Data_Animations.data[battler.anime2].position != 3 then # ターゲットが複数存在する場合 if battler.target.size >= 2 then # ループ処理(全ターゲット) (0...battler.target.size).each do |i| # ターゲットを取得 target = battler.target[i] # タイムラグカウントを代入する target.thyme_lag = MINTO::Thyme_Lag * i # 対象側アニメが有効な場合 if battler.anime2 != 0 then # ウェイトカウントを加算 battler.wait += MINTO::Thyme_Lag * i end end end end end end #-------------------------------------------------------------------------- # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示) #-------------------------------------------------------------------------- alias update_phase4_step5_Thyme_Lag update_phase4_step5 def update_phase4_step5(battler) # 元の処理を実行 update_phase4_step5_Thyme_Lag(battler) # タイムラグが有効なアニメーションIDの場合 if MINTO::Not_Thyme_Lag_Anime.include?(battler.anime2) == false then # ターゲットが複数存在する場合 if battler.target.size >= 2 then # ループ処理(全ターゲット) (0...battler.target.size).each do |i| # ターゲットを取得 target = battler.target[i] # タイムラグカウントを代入する target.thyme_lag = MINTO::Thyme_Lag * i # 対象側アニメが有効な場合 if battler.anime2 != 0 then # ウェイトカウントを加算 battler.wait += MINTO::Thyme_Lag * i end end end end end end end