#==============================================================================
# ■ Vocab
#------------------------------------------------------------------------------
# 用語とメッセージを定義するモジュールです。定数でメッセージなどを直接定義す
# るほか、グローバル変数 $data_system から用語データを取得します。
#==============================================================================
module Vocab
# 戦闘
Auto = "自动"
end
#==============================================================================
# ■ Window_PartyCommand
#------------------------------------------------------------------------------
# バトル画面で、戦うか逃げるかを選択するウィンドウです。
#==============================================================================
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# ● コマンドリストの作成
#--------------------------------------------------------------------------
alias make_command_list_auto make_command_list
def make_command_list
make_command_list_auto
add_command(Vocab::Auto, :auto)
end
end
#==============================================================================
# ■ Scene_Battle
#------------------------------------------------------------------------------
# バトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● パーティコマンドウィンドウの作成
#--------------------------------------------------------------------------
alias create_party_command_window_auto create_party_command_window
def create_party_command_window
create_party_command_window_auto
@party_command_window.set_handler(:auto, method(:command_auto))
@party_command_window.unselect
end
#--------------------------------------------------------------------------
# ● コマンド[オート]
#--------------------------------------------------------------------------
def command_auto
BattleManager.auto_on
BattleManager.skip_on
auto_set
turn_start
end
#--------------------------------------------------------------------------
# ● 早送り判定
#--------------------------------------------------------------------------
def show_fast?
return true if BattleManager.skip?
return true if Input.press?(:B) || Input.press?(:C)
return false
end
#--------------------------------------------------------------------------
# ● フレーム更新(基本)
#--------------------------------------------------------------------------
alias update_basic2 update_basic
def update_basic
update_basic2
update_auto_battle
end
#--------------------------------------------------------------------------
# ● オート戦闘の更新
#--------------------------------------------------------------------------
def update_auto_battle
BattleManager.auto_off if Input.press?(:B)
end
#--------------------------------------------------------------------------
# ● オート戦闘のセット
#--------------------------------------------------------------------------
def auto_set
BattleManager.input_start
loop do
break unless BattleManager.next_command
BattleManager.actor.input.set_attack
end
end
#--------------------------------------------------------------------------
# ● パーティコマンド選択の開始
#--------------------------------------------------------------------------
alias start_party_command_selection2 start_party_command_selection
def start_party_command_selection
if BattleManager.auto?
@party_command_window.deactivate
auto_set
turn_start
return
end
BattleManager.skip_off
start_party_command_selection2
end
#--------------------------------------------------------------------------
# ● アニメーションの表示
# targets : 対象者の配列
# animation_id : アニメーション ID(-1: 通常攻撃と同じ)
#--------------------------------------------------------------------------
def show_animation(targets, animation_id)
unless anim_skip?
if animation_id < 0
show_attack_animation(targets)
else
show_normal_animation(targets, animation_id)
end
end
@log_window.wait
wait_for_animation unless anim_skip?
end
#--------------------------------------------------------------------------
# ● アニメーションをスキップするか?
#--------------------------------------------------------------------------
def anim_skip?
BattleManager.auto?
end
end
#==============================================================================
# ■ BattleManager
#------------------------------------------------------------------------------
# 戦闘の進行を管理するモジュールです。
#==============================================================================
module BattleManager
#--------------------------------------------------------------------------
# ● メンバ変数の初期化
#--------------------------------------------------------------------------
def self.init_members
@phase = :init # 戦闘進行フェーズ
@can_escape = false # 逃走可能フラグ
@can_lose = false # 敗北可能フラグ
@event_proc = nil # イベント用コールバック
@preemptive = false # 先制攻撃フラグ
@surprise = false # 不意打ちフラグ
@actor_index = -1 # コマンド入力中のアクター
@action_forced = nil # 戦闘行動の強制
@map_bgm = nil # 戦闘前の BGM 記憶用
@map_bgs = nil # 戦闘前の BGS 記憶用
@action_battlers = [] # 行動順序リスト
@auto_flg = false # オート戦闘フラグ
@turn_skip = false # このターンをスキップするか
end
#--------------------------------------------------------------------------
# ● オート・オン
#--------------------------------------------------------------------------
def self.auto_on
@auto_flg = true
end
#--------------------------------------------------------------------------
# ● オート・オフ
#--------------------------------------------------------------------------
def self.auto_off
@auto_flg = false
end
#--------------------------------------------------------------------------
# ● オートか?
#--------------------------------------------------------------------------
def self.auto?
@auto_flg
end
#--------------------------------------------------------------------------
# ● ターンをスキップする
#--------------------------------------------------------------------------
def self.skip_on
@turn_skip = true
end
#--------------------------------------------------------------------------
# ● ターンをスキップしない
#--------------------------------------------------------------------------
def self.skip_off
@turn_skip = false
end
#--------------------------------------------------------------------------
# ● スキップ状態か?
#--------------------------------------------------------------------------
def self.skip?
@turn_skip
end
end