# # バトルセルフスイッチ(RGSS全バージョン対応版) #  (C)2012 TYPE74RX-T # =begin ※:このスクリプト素材は Game_Interpreter クラスの   def command_111 メソッドを再定義しています。   この場所を利用者様が既に改造していたり、再定義・エイリアスした   スクリプト素材を使用するときは、競合にご注意ください。 =end #============================================================================== # ★ RX_T_SYSTEM #------------------------------------------------------------------------------ #  素材の便宜上作成したツクールのシステムに関わる共通モジュールです。 #============================================================================== module RX_T_SYSTEM ; end class << RX_T_SYSTEM #-------------------------------------------------------------------------- # ★ RGSSのバージョンをチェック #-------------------------------------------------------------------------- def rgss_version_check f = open("Game.ini") r = f.read f.close version = (r.include?("rvdata2") ? 3 : 0) version = (r.include?("rvdata") ? 2 : 0) if version == 0 version = (r.include?("rxdata") ? 1 : 0) if version == 0 version end end rx_ver = RX_T_SYSTEM.rgss_version_check if rx_ver >= 2 #============================================================================== # ■ Game_Troop #------------------------------------------------------------------------------ #  敵グループおよび戦闘に関するデータを扱うクラスです。バトルイベントの処理も # 行います。このクラスのインスタンスは $game_troop で参照されます。 #============================================================================== class Game_Troop < Game_Unit attr_reader :troop_id # ★ 敵グループ ID end end if rx_ver == 3 #============================================================================== # ■ DataManager #------------------------------------------------------------------------------ #  データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する # ほぼ全てのグローバル変数はこのモジュールで初期化されます。 #============================================================================== class << DataManager # module内のエイリアス #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias rx3_120121_create_game_objects create_game_objects def create_game_objects rx3_120121_create_game_objects # メソッド呼び戻し $game_battle_self_switches = Game_SelfSwitches.new end #-------------------------------------------------------------------------- # ● セーブ内容の作成 #-------------------------------------------------------------------------- alias rx3_120121_make_save_contents make_save_contents def make_save_contents contents = rx3_120121_make_save_contents # メソッド呼び戻し contents[:battle_self_switches] = $game_battle_self_switches contents end #-------------------------------------------------------------------------- # ● セーブ内容の展開 #-------------------------------------------------------------------------- alias rx3_120121_extract_save_contents extract_save_contents def extract_save_contents(contents) rx3_120121_extract_save_contents(contents) # メソッド呼び戻し $game_battle_self_switches = contents[:battle_self_switches] end end #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● 条件分岐(再定義) #-------------------------------------------------------------------------- def command_111 result = false case @params[0] when 0 # スイッチ result = ($game_switches[@params[1]] == (@params[2] == 0)) when 1 # 変数 value1 = $game_variables[@params[1]] if @params[2] == 0 value2 = @params[3] else value2 = $game_variables[@params[3]] end case @params[4] when 0 # と同値 result = (value1 == value2) when 1 # 以上 result = (value1 >= value2) when 2 # 以下 result = (value1 <= value2) when 3 # 超 result = (value1 > value2) when 4 # 未満 result = (value1 < value2) when 5 # 以外 result = (value1 != value2) end when 2 # セルフスイッチ if @event_id > 0 key = [@map_id, @event_id, @params[1]] result = ($game_self_switches[key] == (@params[2] == 0)) end # ★ 戦闘中の場合 if $game_party.in_battle key = [$game_troop.troop_id, @params[1]] result = ($game_battle_self_switches[key] == (@params[2] == 0)) end when 3 # タイマー if $game_timer.working? if @params[2] == 0 result = ($game_timer.sec >= @params[1]) else result = ($game_timer.sec <= @params[1]) end end when 4 # アクター actor = $game_actors[@params[1]] if actor case @params[2] when 0 # パーティにいる result = ($game_party.members.include?(actor)) when 1 # 名前 result = (actor.name == @params[3]) when 2 # 職業 result = (actor.class_id == @params[3]) when 3 # スキル result = (actor.skill_learn?($data_skills[@params[3]])) when 4 # 武器 result = (actor.weapons.include?($data_weapons[@params[3]])) when 5 # 防具 result = (actor.armors.include?($data_armors[@params[3]])) when 6 # ステート result = (actor.state?(@params[3])) end end when 5 # 敵キャラ enemy = $game_troop.members[@params[1]] if enemy case @params[2] when 0 # 出現している result = (enemy.alive?) when 1 # ステート result = (enemy.state?(@params[3])) end end when 6 # キャラクター character = get_character(@params[1]) if character result = (character.direction == @params[2]) end when 7 # ゴールド case @params[2] when 0 # 以上 result = ($game_party.gold >= @params[1]) when 1 # 以下 result = ($game_party.gold <= @params[1]) when 2 # 未満 result = ($game_party.gold < @params[1]) end when 8 # アイテム result = $game_party.has_item?($data_items[@params[1]]) when 9 # 武器 result = $game_party.has_item?($data_weapons[@params[1]], @params[2]) when 10 # 防具 result = $game_party.has_item?($data_armors[@params[1]], @params[2]) when 11 # ボタン result = Input.press?(@params[1]) when 12 # スクリプト result = eval(@params[1]) when 13 # 乗り物 result = ($game_player.vehicle == $game_map.vehicles[@params[1]]) end @branch[@indent] = result command_skip if !@branch[@indent] end #-------------------------------------------------------------------------- # ● セルフスイッチの操作 #-------------------------------------------------------------------------- alias rx3_120121_command_123 command_123 def command_123 rx3_120121_command_123 # メソッド呼び戻し # ★ 戦闘中の場合 if $game_party.in_battle key = [$game_troop.troop_id, @params[0]] $game_battle_self_switches[key] = (@params[1] == 0) end end end end if rx_ver == 2 #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● 条件分岐(再定義) #-------------------------------------------------------------------------- def command_111 result = false case @params[0] when 0 # スイッチ result = ($game_switches[@params[1]] == (@params[2] == 0)) when 1 # 変数 value1 = $game_variables[@params[1]] if @params[2] == 0 value2 = @params[3] else value2 = $game_variables[@params[3]] end case @params[4] when 0 # と同値 result = (value1 == value2) when 1 # 以上 result = (value1 >= value2) when 2 # 以下 result = (value1 <= value2) when 3 # 超 result = (value1 > value2) when 4 # 未満 result = (value1 < value2) when 5 # 以外 result = (value1 != value2) end when 2 # セルフスイッチ if @original_event_id > 0 key = [@map_id, @original_event_id, @params[1]] if @params[2] == 0 result = ($game_self_switches[key] == true) else result = ($game_self_switches[key] != true) end end # ★ 戦闘中の場合 if $game_temp.in_battle key = [$game_troop.troop_id, @params[1]] result = ($game_battle_self_switches[key] == (@params[2] == 0)) end when 3 # タイマー if $game_system.timer_working sec = $game_system.timer / Graphics.frame_rate if @params[2] == 0 result = (sec >= @params[1]) else result = (sec <= @params[1]) end end when 4 # アクター actor = $game_actors[@params[1]] if actor != nil case @params[2] when 0 # パーティにいる result = ($game_party.members.include?(actor)) when 1 # 名前 result = (actor.name == @params[3]) when 2 # スキル result = (actor.skill_learn?($data_skills[@params[3]])) when 3 # 武器 result = (actor.weapons.include?($data_weapons[@params[3]])) when 4 # 防具 result = (actor.armors.include?($data_armors[@params[3]])) when 5 # ステート result = (actor.state?(@params[3])) end end when 5 # 敵キャラ enemy = $game_troop.members[@params[1]] if enemy != nil case @params[2] when 0 # 出現している result = (enemy.exist?) when 1 # ステート result = (enemy.state?(@params[3])) end end when 6 # キャラクター character = get_character(@params[1]) if character != nil result = (character.direction == @params[2]) end when 7 # ゴールド if @params[2] == 0 result = ($game_party.gold >= @params[1]) else result = ($game_party.gold <= @params[1]) end when 8 # アイテム result = $game_party.has_item?($data_items[@params[1]]) when 9 # 武器 result = $game_party.has_item?($data_weapons[@params[1]], @params[2]) when 10 # 防具 result = $game_party.has_item?($data_armors[@params[1]], @params[2]) when 11 # ボタン result = Input.press?(@params[1]) when 12 # スクリプト result = eval(@params[1]) when 13 # 乗り物 result = ($game_player.vehicle_type == @params[1]) end @branch[@indent] = result # 判定結果をハッシュに格納 if @branch[@indent] == true @branch.delete(@indent) return true end return command_skip end #-------------------------------------------------------------------------- # ● セルフスイッチの操作 #-------------------------------------------------------------------------- alias rx2_120121_command_123 command_123 def command_123 if $game_temp.in_battle key = [$game_troop.troop_id, @params[0]] $game_battle_self_switches[key] = (@params[1] == 0) end rx2_120121_command_123 # メソッド呼び戻し end end #============================================================================== # ■ Scene_File #------------------------------------------------------------------------------ #  ファイル画面の処理を行うクラスです。 #============================================================================== class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● セーブデータの書き込み # file : 書き込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias rx2_120121_write_save_data write_save_data def write_save_data(file) rx2_120121_write_save_data(file) # メソッド呼び戻し Marshal.dump($game_battle_self_switches, file) end #-------------------------------------------------------------------------- # ● セーブデータの読み込み # file : 読み込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias rx2_120121_read_save_data read_save_data def read_save_data(file) rx2_120121_read_save_data(file) # メソッド呼び戻し $game_battle_self_switches = Marshal.load(file) end end #============================================================================== # ■ Scene_Title #------------------------------------------------------------------------------ #  タイトル画面の処理を行うクラスです。 #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias rx2_120121_create_game_objects create_game_objects def create_game_objects rx2_120121_create_game_objects # メソッド呼び戻し $game_battle_self_switches = Game_SelfSwitches.new end end end if rx_ver == 1 #============================================================================== # ■ Game_Troop #------------------------------------------------------------------------------ #  トループを扱うクラスです。このクラスのインスタンスは $game_troop で参照さ # れます。 #============================================================================== class Game_Troop attr_reader :troop_id # ★ トループ ID #-------------------------------------------------------------------------- # ● セットアップ # troop_id : トループ ID #-------------------------------------------------------------------------- alias rx_120121_setup setup def setup(troop_id) @troop_id = troop_id rx_120121_setup(troop_id) # メソッド呼び戻し end end #============================================================================== # ■ Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_System クラ # スや Game_Event クラスの内部で使用されます。 #============================================================================== class Interpreter #-------------------------------------------------------------------------- # ● 条件分岐(再定義) #-------------------------------------------------------------------------- def command_111 # ローカル変数 result を初期化 result = false # 条件判定 case @parameters[0] when 0 # スイッチ result = ($game_switches[@parameters[1]] == (@parameters[2] == 0)) when 1 # 変数 value1 = $game_variables[@parameters[1]] if @parameters[2] == 0 value2 = @parameters[3] else value2 = $game_variables[@parameters[3]] end case @parameters[4] when 0 # と同値 result = (value1 == value2) when 1 # 以上 result = (value1 >= value2) when 2 # 以下 result = (value1 <= value2) when 3 # 超 result = (value1 > value2) when 4 # 未満 result = (value1 < value2) when 5 # 以外 result = (value1 != value2) end when 2 # セルフスイッチ if @event_id > 0 key = [$game_map.map_id, @event_id, @parameters[1]] if @parameters[2] == 0 result = ($game_self_switches[key] == true) else result = ($game_self_switches[key] != true) end end # ★ 戦闘中の場合 if $game_temp.in_battle key = [$game_troop.troop_id, @parameters[1]] result = ($game_battle_self_switches[key] == (@parameters[2] == 0)) end when 3 # タイマー if $game_system.timer_working sec = $game_system.timer / Graphics.frame_rate if @parameters[2] == 0 result = (sec >= @parameters[1]) else result = (sec <= @parameters[1]) end end when 4 # アクター actor = $game_actors[@parameters[1]] if actor != nil case @parameters[2] when 0 # パーティにいる result = ($game_party.actors.include?(actor)) when 1 # 名前 result = (actor.name == @parameters[3]) when 2 # スキル result = (actor.skill_learn?(@parameters[3])) when 3 # 武器 result = (actor.weapon_id == @parameters[3]) when 4 # 防具 result = (actor.armor1_id == @parameters[3] or actor.armor2_id == @parameters[3] or actor.armor3_id == @parameters[3]) when 5 # ステート result = (actor.state?(@parameters[3])) end end when 5 # エネミー enemy = $game_troop.enemies[@parameters[1]] if enemy != nil case @parameters[2] when 0 # 出現している result = (enemy.exist?) when 1 # ステート result = (enemy.state?(@parameters[3])) end end when 6 # キャラクター character = get_character(@parameters[1]) if character != nil result = (character.direction == @parameters[2]) end when 7 # ゴールド if @parameters[2] == 0 result = ($game_party.gold >= @parameters[1]) else result = ($game_party.gold <= @parameters[1]) end when 8 # アイテム result = ($game_party.item_number(@parameters[1]) > 0) when 9 # 武器 result = ($game_party.weapon_number(@parameters[1]) > 0) when 10 # 防具 result = ($game_party.armor_number(@parameters[1]) > 0) when 11 # ボタン result = (Input.press?(@parameters[1])) when 12 # スクリプト result = eval(@parameters[1]) end # 判定結果をハッシュに格納 @branch[@list[@index].indent] = result # 判定結果が真だった場合 if @branch[@list[@index].indent] == true # 分岐データを削除 @branch.delete(@list[@index].indent) # 継続 return true end # 条件に該当しない場合 : コマンドスキップ return command_skip end #-------------------------------------------------------------------------- # ● セルフスイッチの操作 #-------------------------------------------------------------------------- alias rx_120121_command_123 command_123 def command_123 if $game_temp.in_battle key = [$game_troop.troop_id, @parameters[0]] $game_battle_self_switches[key] = (@parameters[1] == 0) end rx_120121_command_123 # メソッド呼び戻し end end #============================================================================== # ■ Scene_Save #------------------------------------------------------------------------------ #  セーブ画面の処理を行うクラスです。 #============================================================================== class Scene_Save < Scene_File #-------------------------------------------------------------------------- # ● セーブデータの書き込み # file : 書き込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias rx_120121_write_save_data write_save_data def write_save_data(file) rx_120121_write_save_data(file) # メソッド呼び戻し Marshal.dump($game_battle_self_switches, file) end end #============================================================================== # ■ Scene_Load #------------------------------------------------------------------------------ #  ロード画面の処理を行うクラスです。 #============================================================================== class Scene_Load < Scene_File #-------------------------------------------------------------------------- # ● セーブデータの読み込み # file : 読み込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias rx_120121_read_save_data read_save_data def read_save_data(file) rx_120121_read_save_data(file) # メソッド呼び戻し $game_battle_self_switches = Marshal.load(file) end end #============================================================================== # ■ Scene_Title #------------------------------------------------------------------------------ #  タイトル画面の処理を行うクラスです。 #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # ● コマンド : ニューゲーム #-------------------------------------------------------------------------- alias rx_120121_command_new_game command_new_game def command_new_game $game_battle_self_switches = Game_SelfSwitches.new rx_120121_command_new_game # メソッド呼び戻し end #-------------------------------------------------------------------------- # ● 戦闘テスト #-------------------------------------------------------------------------- alias rx_120121_battle_test battle_test def battle_test $game_battle_self_switches = Game_SelfSwitches.new rx_120121_battle_test # メソッド呼び戻し end end end