#--------------------------------------------------------------------------
#戦闘高速化 ver0.30
#--------------------------------------------------------------------------
#=begin
#ボタン押しっぱなしで戦闘速度が飛躍的に上昇します。
#コマンドもボタン押しっぱなしで選択可能です。
#また、元々の通常状態でもちょっとテンポを上げています。
# BATTLE_SPEED_SIDに設定したスイッチIDをtrueにする事で、
#高速戦闘中はエフェクトをカット出来るようになります。
#BATTLE_SPEED_VIDに設定した値は、ゲーム変数XXX番として認識します。
#コマンドで変数に値を入れる事によって、戦闘速度が変更されます。
#値が大きい程、早くなります。
#BATTLE_SPEED_DEFAULT_VALUEに設定した値は速度のデフォルト値です。
#下記は例になります。なお、小数点には対応していません。
#戦闘速度1:遅め(オリジナルの戦闘システムに近い速度)
# 2:普通(推奨値)
# 3:速め
# 6:高速
# 10:最速、11以上の値を入れると、10になるように制限をかけています。
# ※ 11以上はバトルログが消え、20以上はエラーを返します。
# ※ 速度0は未対応です。1に制限をかける事も考えましたが、
# 変数指定を間違っていた際にバグチェックしづらくなるため、
# わざとエラーするようにしています。
#=end
#--------------------------------------------------------------------------
# ● 設定項目
#--------------------------------------------------------------------------
module SSS_BTLSPD
BATTLE_SPEED_SID = 201 #エフェクト(アニメ)を飛ばすスイッチ
BATTLE_SPEED_VID = 48 #戦闘速度変更用のゲーム変数
BATTLE_SPEED_DEFAULT_VALUE = 10 #速度変更値(整数10まで)
end
class Scene_Map
#--------------------------------------------------------------------------
# ● 戦闘前トランジション実行 @速度変更
#--------------------------------------------------------------------------
alias SSS001_perform_battle_transition perform_battle_transition
def perform_battle_transition
if $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] == 0
$game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] = SSS_BTLSPD::BATTLE_SPEED_DEFAULT_VALUE
end
if $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] >= 11
$game_variables[SSS_BTLSPD::BATTLE_SPEED_VID] = 10
end
Graphics.transition(60, "Graphics/System/BattleStart", 100)
Graphics.freeze
end
end
class Scene_Battle
#--------------------------------------------------------------------------
# ● 終了前処理
#--------------------------------------------------------------------------
alias SSS001_pre_terminate pre_terminate
def pre_terminate
super
Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Title)
end
#--------------------------------------------------------------------------
# ● ウェイト
#--------------------------------------------------------------------------
alias SSS001_wait wait
def wait(duration)
duration.times {|i| update_for_wait if i < duration / (2 * $game_variables[SSS_BTLSPD::BATTLE_SPEED_VID]) || !show_fast? }
end
#--------------------------------------------------------------------------
# ● アニメーションの表示
# targets : 対象者の配列
# animation_id : アニメーション ID(-1: 通常攻撃と同じ)
#--------------------------------------------------------------------------
alias SSS001_show_animation show_animation
def show_animation(targets, animation_id)
#もしアニメカット用のスイッチがtrueで、
#fast状態にしているなら、エフェクトを飛ばす
#両方満たしていないなら、エフェクトを飛ばさない
if $game_switches[SSS_BTLSPD::BATTLE_SPEED_SID] == true
if !show_fast?
if animation_id < 0
show_attack_animation(targets)
else
show_normal_animation(targets, animation_id)
end
@log_window.wait
wait_for_animation
end
else
if animation_id < 0
show_attack_animation(targets)
else
show_normal_animation(targets, animation_id)
end
@log_window.wait
wait_for_animation
end
end
end
class Window_Selectable
#--------------------------------------------------------------------------
# ● 決定やキャンセルなどのハンドリング処理
#--------------------------------------------------------------------------
alias SSS001_process_handling process_handling
def process_handling
#戦闘中はInput.trigger?をrepeat?に書き換えて、テンポを上げてます
if $game_party.in_battle
return unless open? && active
return process_ok if ok_enabled? && Input.trigger?(:C)#Input.repeat?(:C)
return process_cancel if cancel_enabled? && Input.trigger?(:B)#Input.repeat?(:B)
return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
return process_pageup if handle?(:pageup) && Input.trigger?(:L)
else
return unless open? && active
return process_ok if ok_enabled? && Input.trigger?(:C)
return process_cancel if cancel_enabled? && Input.trigger?(:B)
return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
return process_pageup if handle?(:pageup) && Input.trigger?(:L)
end
end
end
class Sprite_Battler
#--------------------------------------------------------------------------
# ● エフェクトの開始
#--------------------------------------------------------------------------
alias SSS001_start_effect start_effect
def start_effect(effect_type)
@effect_type = effect_type
case @effect_type
when :appear
@effect_duration = 16
@battler_visible = true
when :disappear
@effect_duration = 32
@battler_visible = false
when :whiten
@effect_duration = 16
@battler_visible = true
when :blink
@effect_duration = 20
@battler_visible = true
#敵撃破時エフェクト(default=48)
#Sprite_Battler 150行以降を変数を織りまぜて書き換えた方が良いかも
when :collapse
@effect_duration = 48
@battler_visible = false
when :boss_collapse
@effect_duration = bitmap.height
@battler_visible = false
when :instant_collapse
@effect_duration = 16
@battler_visible = false
end
revert_to_normal
end
end