255 lines
No EOL
10 KiB
Ruby
255 lines
No EOL
10 KiB
Ruby
#==============================================================================
|
|
# ■ RGSS3 戦闘超高速化 Ver1.01a by 星潟
|
|
#------------------------------------------------------------------------------
|
|
# 戦闘時の処理速度を超高速化します。
|
|
# 押したボタンによって挙動の違う高速化が行われます。
|
|
# それぞれ以下のようになります。
|
|
#
|
|
# Lボタン(Qキー) : 処理のみ高速化
|
|
# CTRLキー : 処理とアニメーションを高速化
|
|
# Aボタン(SHIFTキー) : アニメーションのみ高速化
|
|
#
|
|
# また、テストモード限定化する機能を追加しました。
|
|
#------------------------------------------------------------------------------
|
|
# Ver1.01a テスト判定を修正。
|
|
#==============================================================================
|
|
module BATTLE_S_UP
|
|
|
|
#戦闘超高速化ボタン1を設定します。
|
|
#こちらでは、処理は高速化されますがアニメーション速度は変更しません。
|
|
#無効にしたい場合は配列を空([]という風に、中身を消す)にして下さい。
|
|
#複数設定したい場合は、ヘルプをInputで検索し
|
|
#下部にある定数の項目から、設定したいボタンを選び、「,」で区切って
|
|
#配列内に追加して下さい。
|
|
|
|
KEY1 = []
|
|
|
|
#戦闘超高速化ボタン2を設定します。
|
|
#こちらでは、処理もアニメーション速度も変更されます。
|
|
#無効にしたい場合は配列を空([]という風に、中身を消す)にして下さい。
|
|
#複数設定したい場合は、ヘルプをInputで検索し
|
|
#下部にある定数の項目から、設定したいボタンを選び、「,」で区切って
|
|
#配列内に追加して下さい。
|
|
|
|
KEY2 = [:CTRL]
|
|
|
|
#戦闘超高速化ボタン3を設定します。
|
|
#こちらでは、処理を高速化せずアニメーション速度のみ変更されます。
|
|
#無効にしたい場合は配列を空([]という風に、中身を消す)にして下さい。
|
|
#複数設定したい場合は、ヘルプをInputで検索し
|
|
#下部にある定数の項目から、設定したいボタンを選び、「,」で区切って
|
|
#配列内に追加して下さい。
|
|
|
|
KEY3 = []
|
|
|
|
#アニメーション速度高速化時の倍率を設定します。
|
|
|
|
ASPD = 2
|
|
|
|
#テストモードのみ有効にするかどうかを設定します。
|
|
#true:テストモードのみ/false:限定しない
|
|
|
|
TEST = false
|
|
|
|
end
|
|
|
|
#テストモード限定化されている場合、テストモードでない場合は無効にする。
|
|
|
|
if !BATTLE_S_UP::TEST or (BATTLE_S_UP::TEST && ($TEST or $BTEST))
|
|
class Sprite_Base < Sprite
|
|
#--------------------------------------------------------------------------
|
|
# アニメーションの更新
|
|
#--------------------------------------------------------------------------
|
|
alias update_animation_speedup update_animation
|
|
def update_animation
|
|
|
|
#戦闘中であり、なおかつ高速化が可能であり
|
|
#高速化ボタン2もしくはボタン3が押してある場合は
|
|
#アニメーション高速化倍率に応じて処理を高速化する。
|
|
|
|
number = SceneManager.scene_is?(Scene_Battle) &&
|
|
$game_troop.show_fast_extra &&
|
|
($game_troop.show_fast_extra_flag2 or
|
|
$game_troop.show_fast_extra_flag3) ? BATTLE_S_UP::ASPD : 1
|
|
number.times {update_animation_speedup}
|
|
end
|
|
end
|
|
class Scene_Battle < Scene_Base
|
|
#--------------------------------------------------------------------------
|
|
# 開始処理
|
|
#--------------------------------------------------------------------------
|
|
alias start_sup start
|
|
def start
|
|
|
|
#本来の処理を実行。
|
|
|
|
start_sup
|
|
|
|
#高速化を有効にする。
|
|
|
|
$game_troop.show_fast_extra = true
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# アニメーション表示が終わるまでウェイト
|
|
#--------------------------------------------------------------------------
|
|
alias wait_for_animation_speedup wait_for_animation
|
|
def wait_for_animation
|
|
|
|
#高速化中の場合はウェイトを5フレームに短縮する。
|
|
|
|
show_fast_extra? ? wait(5) : wait_for_animation_speedup
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# エフェクト実行が終わるまでウェイト
|
|
#--------------------------------------------------------------------------
|
|
alias wait_for_effect_speedup wait_for_effect
|
|
def wait_for_effect
|
|
|
|
#高速化中の場合はウェイトを5フレームに短縮する。
|
|
|
|
show_fast_extra? ? wait(5) : wait_for_effect_speedup
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# ウェイト
|
|
#--------------------------------------------------------------------------
|
|
alias wait_speedup wait
|
|
def wait(duration)
|
|
|
|
#高速化中の場合はウェイトを20分の1に短縮する。
|
|
|
|
show_fast_extra? ? duration.times {|i| update_for_wait if i < duration / 20 } : wait_speedup(duration)
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 短時間ウェイト(早送り無効)
|
|
#--------------------------------------------------------------------------
|
|
alias abs_wait_short_speedup abs_wait_short
|
|
def abs_wait_short
|
|
|
|
#高速化中の場合はウェイトを5フレームに短縮する。
|
|
|
|
show_fast_extra? ? abs_wait(5) : abs_wait_short_speedup
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 短時間ウェイト(早送り無効)
|
|
#--------------------------------------------------------------------------
|
|
alias abs_wait_speedup abs_wait
|
|
def abs_wait(duration)
|
|
|
|
#高速化中の場合はウェイトを20分の1に短縮する。
|
|
|
|
show_fast_extra? ? duration.times {|i| update_for_wait if i < duration / 20} : abs_wait_speedup(duration)
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 超高速化判定
|
|
#--------------------------------------------------------------------------
|
|
def show_fast_extra?
|
|
|
|
#高速化中が可能であり、なおかつ高速化ボタン1か2が押されている場合は
|
|
#超高速化して処理を行う。
|
|
|
|
$game_troop.show_fast_extra && ($game_troop.show_fast_extra_flag1 or $game_troop.show_fast_extra_flag2)
|
|
end
|
|
end
|
|
|
|
#==============================================================================
|
|
# ■ Game_Troop
|
|
#------------------------------------------------------------------------------
|
|
# 敵グループおよび戦闘に関するデータを扱うクラスです。バトルイベントの処理も
|
|
# 行います。このクラスのインスタンスは $game_troop で参照されます。
|
|
#==============================================================================
|
|
|
|
class Game_Troop < Game_Unit
|
|
attr_accessor :show_fast_extra
|
|
#--------------------------------------------------------------------------
|
|
# オブジェクト初期化
|
|
#--------------------------------------------------------------------------
|
|
alias initialize_h_sp_battle initialize
|
|
def initialize
|
|
|
|
#本来の処理を実行する。
|
|
|
|
initialize_h_sp_battle
|
|
|
|
#高速化を可能にする。
|
|
|
|
@show_fast_extra = true
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 高速表示フラグ1
|
|
#--------------------------------------------------------------------------
|
|
def show_fast_extra_flag1
|
|
|
|
#高速化ボタン1が存在しない場合はfalseを返す。
|
|
#そうでない場合、高速化ボタン1のどれかが押されている場合にtrueを返す。
|
|
|
|
BATTLE_S_UP::KEY1.empty? ? false : BATTLE_S_UP::KEY1.each {|k| return true if Input.press?(k)};false
|
|
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 高速表示フラグ2
|
|
#--------------------------------------------------------------------------
|
|
def show_fast_extra_flag2
|
|
|
|
#高速化ボタン2が存在しない場合はfalseを返す。
|
|
#そうでない場合、高速化ボタン2のどれかが押されている場合にtrueを返す。
|
|
|
|
BATTLE_S_UP::KEY2.empty? ? false : BATTLE_S_UP::KEY2.each {|k| return true if Input.press?(k)};false
|
|
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# 高速表示フラグ3
|
|
#--------------------------------------------------------------------------
|
|
def show_fast_extra_flag3
|
|
|
|
#高速化ボタン3が存在しない場合はfalseを返す。
|
|
#そうでない場合、高速化ボタン3のどれかが押されている場合にtrueを返す。
|
|
|
|
BATTLE_S_UP::KEY3.empty? ? false : BATTLE_S_UP::KEY3.each {|k| return true if Input.press?(k)};false
|
|
|
|
end
|
|
end
|
|
class << BattleManager
|
|
#--------------------------------------------------------------------------
|
|
# [エイリアス]:勝利の処理
|
|
#--------------------------------------------------------------------------
|
|
alias process_victory_h_sp_battle process_victory
|
|
def process_victory
|
|
|
|
#高速化を無効にする。
|
|
|
|
$game_troop.show_fast_extra = false
|
|
|
|
#本来の処理を実行。
|
|
|
|
process_victory_h_sp_battle
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# [エイリアス]:逃走の処理
|
|
#--------------------------------------------------------------------------
|
|
alias process_escape_h_sp_battle process_escape
|
|
def process_escape
|
|
|
|
#高速化を無効にする。
|
|
|
|
$game_troop.show_fast_extra = false
|
|
|
|
#本来の処理を実行。
|
|
|
|
process_escape_h_sp_battle
|
|
end
|
|
#--------------------------------------------------------------------------
|
|
# [エイリアス]:敗北の処理
|
|
#--------------------------------------------------------------------------
|
|
alias process_defeat_h_sp_battle process_defeat
|
|
def process_defeat
|
|
|
|
#高速化を無効にする。
|
|
|
|
$game_troop.show_fast_extra = false
|
|
|
|
#本来の処理を実行。
|
|
|
|
process_defeat_h_sp_battle
|
|
end
|
|
end
|
|
end |