#============================================================================== # ★ RGSS3_自動戦闘 Ver1.01 #============================================================================== =begin 作者:tomoaky webサイト:ひきも記 ([url]http://hikimoki.sakura.ne.jp/[/url]) 增加命令“自动”和“重复”,两种指令追加。 自动全体演员这回合只自动战斗的状态, 重复的全体演员前面的回合采取的行动自动选择。 附加功能全自动战斗开关(初期设定在7号)开了间 遇敌从地图场面回到为止都是自动化。 ===注意点=== ・前的回合一样行动成本不足等不能实行的场合攻击 、1回合中重复选择的情况全演员的行动,攻击 ・前回合开始时被选择的行动重复的对象, 成本不足重复的内容发生变化时,下一次的回合以后也变化了 使用游戏(初期设定)开关 0007,0008 2012.01.17版本1.01 ・逃跑指令失败后重复的命令不正确动作极化 2011.12.15版本1.0 公开 =end #============================================================================== # □ 設定項目 #============================================================================== module TMATBTL SW_FULLAUTO = 7 # 完全自動戦闘フラグとして扱うゲームスイッチ番号 SW_FULLFAST = 8 # 完全自動戦闘の早送りフラグとして扱うゲームスイッチ番号 end #============================================================================== # ■ Vocab #============================================================================== module Vocab AutoBattle = "自动" # 自動戦闘コマンド名 RepeatBattle = "重复" # 繰り返し戦闘コマンド名 end #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :repeat_commands # 前ターンの行動内容 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias tmatbtl_game_temp_initialize initialize def initialize tmatbtl_game_temp_initialize @repeat_commands = [] end end #============================================================================== # ■ Window_Message #============================================================================== class Window_Message #-------------------------------------------------------------------------- # ● 入力待ち処理 #-------------------------------------------------------------------------- alias tmatbtl_window_message_input_pause input_pause def input_pause if $game_party.in_battle && $game_switches[TMATBTL::SW_FULLAUTO] wait($game_switches[TMATBTL::SW_FULLFAST] ? 30 : 60) else tmatbtl_window_message_input_pause end end end #============================================================================== # ■ Window_PartyCommand #============================================================================== class Window_PartyCommand #-------------------------------------------------------------------------- # ● コマンドリストの作成 #-------------------------------------------------------------------------- alias tmatbtl_window_partycommand_make_command_list make_command_list def make_command_list tmatbtl_window_partycommand_make_command_list add_command(Vocab::AutoBattle, :auto) add_command(Vocab::RepeatBattle, :repeat) end end #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● 早送り判定 #-------------------------------------------------------------------------- alias tmatbtl_scene_battle_show_fast? show_fast? def show_fast? tmatbtl_scene_battle_show_fast? || ($game_switches[TMATBTL::SW_FULLAUTO] && $game_switches[TMATBTL::SW_FULLFAST]) end #-------------------------------------------------------------------------- # ● パーティコマンドウィンドウの作成 #-------------------------------------------------------------------------- alias tmatbtl_scene_battle_create_party_command_window create_party_command_window def create_party_command_window tmatbtl_scene_battle_create_party_command_window @party_command_window.set_handler(:auto, method(:command_auto)) @party_command_window.set_handler(:repeat, method(:command_repeat)) end #-------------------------------------------------------------------------- # ● パーティコマンド選択の開始 #-------------------------------------------------------------------------- alias tmatbtl_scene_battle_start_party_command_selection start_party_command_selection def start_party_command_selection tmatbtl_scene_battle_start_party_command_selection if $game_switches[TMATBTL::SW_FULLAUTO] command_auto unless scene_changing? end end #-------------------------------------------------------------------------- # ● 戦闘開始 #-------------------------------------------------------------------------- alias tmatbtl_scene_battle_battle_start battle_start def battle_start tmatbtl_scene_battle_battle_start $game_temp.repeat_commands = [] end #-------------------------------------------------------------------------- # ● ターン開始 #-------------------------------------------------------------------------- alias tmatbtl_scene_battle_turn_start turn_start def turn_start $game_party.members.each_with_index do |actor, i| next unless actor.inputable? $game_temp.repeat_commands[i] = [] actor.actions.each do |action| $game_temp.repeat_commands[i].push(action.clone) end end tmatbtl_scene_battle_turn_start end #-------------------------------------------------------------------------- # ○ コマンド[オート] #-------------------------------------------------------------------------- def command_auto $game_party.members.each do |actor| actor.make_auto_battle_actions if actor.inputable? end @party_command_window.deactivate turn_start end #-------------------------------------------------------------------------- # ○ コマンド[リピート] #-------------------------------------------------------------------------- def command_repeat $game_party.members.each_with_index do |actor, i| next unless actor.inputable? actor.actions.clear if !$game_temp.repeat_commands[i] || $game_temp.repeat_commands[i].empty? $game_temp.repeat_commands[i] = [Game_Action.new(actor).set_attack.evaluate] end $game_temp.repeat_commands[i].each do |action| actor.actions.push(action.clone) actor.actions[actor.actions.size - 1].set_attack unless action.valid? end end @party_command_window.deactivate turn_start end end