#============================================================================== # # ■ダミーアクター □Ver.1.11 □製作者:月紳士 # # ・RPGツクールVX用 RGSS2スクリプト # # ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド # # ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。 #------------------------------------------------------------------------------ # 更新履歴 # Ver1.11 ○不具合修正。 # Ver1.10 ○パーティーコモン機能追加。 #============================================================================== =begin  このスクリプトはイベントの作成を容易に行う為のスクリプトです。  アクターに「ダミーアクター」という、  ゲームには登場させない、その名のとおりダミーのアクターを用意します。  そして、このスクリプトのカスタマイズ項目で設定した変数でID指定をすると  ダミーアクターを対象として設定したイベントが  ゲーム中には変数内のIDのアクターへ実行される、という仕組みのスクリプトです。  条件分岐コマンドやアクターの情報取得するようなコマンドも、  ダミーアクターを選択すれば、その処理は変数内のIDアクターに対して行われます。 #-----------------------------------------------------------------------------  利点・変数をゲーム中で取得するなどして変更すれば、     容易に「対象が変わるイベント」を作ることができること。     イベントコマンド・スクリプトによって実現可能なことばかりですが、     その為のスクリプトの知識がなくても、     VX本来のインターフェイスを使って容易に設定できることも利点です。     いちいちスクリプトを使うのは面倒だよ、という中級者の方へもおすすめ。     またVX本来のインターフェイスを使うので     処理の可読性が高い(どんな処理かわかりやすい)利点もありそうです。 #-----------------------------------------------------------------------------  ○オプション機能   ・パーティー全体へのダミーアクター動作    コモンイベントを利用して、ダミーアクターに対する動作を    パーティー全体へ行うことが出来ます。    イベントコマンド・注釈にて パーティーコモン準備    と記述してからイベントコマンド・コモンイベントを指定すると    パーティーメンバーの人数分、コモンイベントの内容を繰り返します。    具体的には、パーティーメンバー先頭から順に    IDをダミーアクターへ代入→コモンイベント実行    の動作を繰り返しています。        月紳士のスクリプト「選択肢機能拡張」を併用すると、    同様にグループに対してコモンイベントを繰り返すことが出来ます。    記述は グループ[0]コモン準備    です。グループについては「選択肢機能拡張」を参照願います。 #----------------------------------------------------------------------------- =end #============================================================================== # □ ダミーアクター・モジュール(カスタマイズ項目) #============================================================================== module Dummy_Actor DUMMY_ACTOR_ID = 9 # ダミーにするアクターのIDをここで指定します。 # 新しいアクターを作り、そのアクターのIDを指定してください。 ACTOR_ID_VARIABLES = 2 # ゲーム中でダミーアクターに替わって実際にイベント対象とするアクターの、 # ID指定に使う 変数の番号 をここで指定します。 # # ※ ver.3.00以前の選択肢機能拡張をお使いの方でダミーアクター機能が必要な方は # この変数設定を選択肢機能拡張のARGET_ACTOR_ID_VARIABLESと揃えてください。 # 新規導入して併用される方も、揃える事をお勧めします。 TARGET_AUTO_INPUT = true # アイテム・スキルを使用した際に、ターゲットとなったアクターのIDを # 上記 ACTOR_ID_VARIABLES で指定した変数に自動で代入するか否かを設定できます。 # = true で自動代入、= false で代入しません。 # つまり、これを設定しアイテム・スキルでコモンイベントを呼び出すと # ダミーアクター = アイテム・スキルのターゲット # という状態が常になります。(ターゲットが全体だと 0 の値が入る仕様です) end #============================================================================== # ■ Window_Message #------------------------------------------------------------------------------ #  文章表示に使うメッセージウィンドウです。 #============================================================================== class Window_Message < Window_Selectable #-------------------------------------------------------------------------- # ◎ 特殊文字の変換 #-------------------------------------------------------------------------- alias tig_da_convert_special_characters convert_special_characters def convert_special_characters actor = $game_actors[$game_variables[Dummy_Actor::ACTOR_ID_VARIABLES]] if $game_variables[Dummy_Actor::ACTOR_ID_VARIABLES] == 0 name = $game_party.name elsif actor == nil name = "" else name = actor.name end @text.gsub!(/\\N\[ダミーアクター\]/i) { name } @text.gsub!(/\\N\[ダミー\]/i) { name } @text.gsub!(/\\N\[dummy\]/i) { name } @text.gsub!(/\\\*/){ "" } tig_da_convert_special_characters end end #============================================================================== # ■ Game_Party #------------------------------------------------------------------------------ #  パーティを扱うクラスです。ゴールドやアイテムなどの情報が含まれます。このク # ラスのインスタンスは $game_party で参照されます。 #============================================================================== class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ○ 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :object_user attr_accessor :object_target #-------------------------------------------------------------------------- # ◎ オブジェクト初期化 #-------------------------------------------------------------------------- alias tig_da_initialize initialize def initialize tig_da_initialize @object_user = 999 @object_target = 999 end end #============================================================================== # ■ Scene_Item #------------------------------------------------------------------------------ #  アイテム画面の処理を行うクラスです。 #============================================================================== class Scene_Item < Scene_Base #-------------------------------------------------------------------------- # ◎ アイテムの使用 (味方対象以外の使用効果を適用) #-------------------------------------------------------------------------- alias tig_da_use_item_nontarget use_item_nontarget def use_item_nontarget $game_party.object_user = @actor.id $game_party.object_target = 999 # コマンドを無効とする為の数値を仮代入 if @item.for_friend? if @item.for_all? $game_party.object_target = 0 else $game_party.object_target = $game_party.members[@target_window.index].id end end if Dummy_Actor::TARGET_AUTO_INPUT $game_variables[Dummy_Actor::ACTOR_ID_VARIABLES] = $game_party.object_target end tig_da_use_item_nontarget end end #============================================================================== # ■ Scene_Skill #------------------------------------------------------------------------------ #  スキル画面の処理を行うクラスです。 #============================================================================== class Scene_Skill < Scene_Base #-------------------------------------------------------------------------- # ◎ スキルの使用 (味方対象以外の使用効果を適用) #-------------------------------------------------------------------------- alias tig_da_use_skill_nontarget use_skill_nontarget def use_skill_nontarget $game_party.object_user = @actor.id $game_party.object_target = 999 # コマンドを無効とする為の数値を仮代入 if @skill.for_friend? if @skill.for_all? $game_party.object_target = 0 elsif @skill.for_user? $game_party.object_target = @actor.id else $game_party.object_target = $game_party.members[@target_window.index].id end end if Dummy_Actor::TARGET_AUTO_INPUT $game_variables[Dummy_Actor::ACTOR_ID_VARIABLES] = $game_party.object_target end tig_da_use_skill_nontarget end end #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ○ 定数 #-------------------------------------------------------------------------- TARGET_V = Dummy_Actor::ACTOR_ID_VARIABLES attr_accessor :list #-------------------------------------------------------------------------- # ◎ クリア #-------------------------------------------------------------------------- alias tig_da_clear clear def clear tig_da_clear @group_common_data = [] end #-------------------------------------------------------------------------- # ◎ イベントコマンドの実行 # ※ 特殊コマンドの実行処理の割り込み #-------------------------------------------------------------------------- alias tig_da_execute_command execute_command def execute_command if @index >= @list.size-1 command_end return true else return true if group_common end return tig_da_execute_command end #-------------------------------------------------------------------------- # ◎ コモンイベント #-------------------------------------------------------------------------- alias tig_da_command_117 command_117 def command_117 unless @group_common_data.empty? common_event = $data_common_events[@params[0]] list = [] for id in @group_common_data list.push(RPG::EventCommand.new(122, 0, [TARGET_V ,TARGET_V, 0, 0, id])) list += common_event.list list.pop end list.push(RPG::EventCommand.new) @group_common_data = [] @child_interpreter = Game_Interpreter.new(@depth + 1) @child_interpreter.setup(list, @event_id) return true else return tig_da_command_117 end end #-------------------------------------------------------------------------- # ○ 対グループコモン情報取得 #-------------------------------------------------------------------------- def group_common return false if @list[@index].code != 108 text = @list[@index].parameters[0] if /\Aパーティーコモン準備/ =~ text @group_common_data = $game_party.members.collect{|member|member.id} return true elsif /\Aグループ\[(\d+)\]コモン準備/ =~ text return false if $game_party.group == nil @group_common_data = $game_party.group[$1.to_i] return true end return false end #-------------------------------------------------------------------------- # ◎ 条件分岐 (ダミー処理の追加) # ※ 変数IDのアクターが存在しない場合、結果はfalse(偽)となるようです。 # 変数IDがダミーアクター自身の場合の処理はあえて残してあります。 #-------------------------------------------------------------------------- alias tig_da_command_111 command_111 def command_111 if @params[0] == 4 and @params[1] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[1] @params[1] = $game_variables[TARGET_V] end result = tig_da_command_111 @params[1] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 変数の操作 (ダミー処理の追加) # ※ 変数IDのアクターが存在しない場合、扱われる数値は 0 となるようです。 # 変数IDがダミーアクター自身の場合の処理はあえて残してあります。 #-------------------------------------------------------------------------- alias tig_da_command_122 command_122 def command_122 if @params[3] == 4 and @params[4] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[4] @params[4] = $game_variables[TARGET_V] end result = tig_da_command_122 @params[4] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ メンバーの入れ替え (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は入れ替えは実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_129 command_129 def command_129 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_129 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 名前入力の処理 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合の処理はあえて残してあります。 #-------------------------------------------------------------------------- alias tig_da_command_303 command_303 def command_303 if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_303 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ HP の増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合はHPの増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_311 command_311 def command_311 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_311 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ MP の増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合はMPの増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_312 command_312 def command_312 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_312 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ ステートの変更 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合はステートの変更は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_313 command_313 def command_313 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_313 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 全回復 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は全回復は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_314 command_314 def command_314 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_314 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 経験値の増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は経験値の増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_315 command_315 def command_315 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_315 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ レベルの増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は経験値の増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_316 command_316 def command_316 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_316 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 能力値の増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は能力値の増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_317 command_317 def command_317 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_317 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ スキルの増減 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合はスキルの増減は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_318 command_318 def command_318 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_318 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 装備の変更 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は装備の変更は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_319 command_319 def command_319 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_319 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 名前の変更 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合の処理はあえて残してあります。 #-------------------------------------------------------------------------- alias tig_da_command_320 command_320 def command_320 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_320 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ 職業の変更 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合は職業の変更は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_321 command_321 def command_321 return true if dummy_actor_to_self? return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_321 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ◎ アクターのグラフィック変更 (ダミー処理の追加) # ※ 変数IDがダミーアクター自身の場合はグラフィック変更は実施されません。 #-------------------------------------------------------------------------- alias tig_da_command_322 command_322 def command_322 return true if dummy_actor_to_self? if @params[0] == Dummy_Actor::DUMMY_ACTOR_ID keep = @params[0] @params[0] = $game_variables[TARGET_V] end result = tig_da_command_322 @params[0] = keep if keep != nil return result end #-------------------------------------------------------------------------- # ○ ダミーアクター #-------------------------------------------------------------------------- def dummy_actor if $game_actors[$game_variables[TARGET_V]] == nil return $game_actors[1] end return $game_actors[$game_variables[TARGET_V]] end #-------------------------------------------------------------------------- # ○ ダミーアクターが無効? # party : 対象がパーティー(変数の内容が 0 )の場合に返すフラグ # メンバーのみ有効、ということにしたいなら true # パーティーを含んだ場合も有効、ということにしたいなら false #-------------------------------------------------------------------------- def dummy_actor_invalidity?(party = true) return true if dummy_actor_to_self? return party if dummy_actor_to_party? return $game_actors[$game_variables[TARGET_V]] == nil end #-------------------------------------------------------------------------- # ○ ダミーアクターの対象がパーティー? #-------------------------------------------------------------------------- def dummy_actor_to_party? return $game_variables[TARGET_V] == 0 end #-------------------------------------------------------------------------- # ○ ダミーアクターの対象がダミーアクター自身? #-------------------------------------------------------------------------- def dummy_actor_to_self? return $game_variables[TARGET_V] == Dummy_Actor::DUMMY_ACTOR_ID end #-------------------------------------------------------------------------- # ○ アイテム・スキルの使用者のIDを指定変数に取得 #-------------------------------------------------------------------------- def input_user(variable_id) $game_variables[variable_id] = $game_party.object_user end #-------------------------------------------------------------------------- # ○ アイテム・スキルのターゲットのIDを指定変数に取得 #-------------------------------------------------------------------------- def input_target(variable_id) $game_variables[variable_id] = $game_party.object_target end end