#============================================================================== # ■ RGSS3 行動開始前コモンイベント Ver1.03 by 星潟 #------------------------------------------------------------------------------ # 通常、アイテム・スキルのコモンイベントは使用後に起動しますが # このスクリプトを用いた設定では、行動開始前に発動します。 # # 通常のコモンイベントと異なり # 戦闘時でなければ効果がないので注意が必要です。 #------------------------------------------------------------------------------ # ★使用例(アイテム・スキルのメモ欄に記入) #------------------------------------------------------------------------------ # <行動開始前コモン:5> # # このアイテム・スキルの使用前に、コモンイベント5を発生させる。 #============================================================================== # Ver1.01 行動開始前コモンイベントにより強制行動を行った場合に # 行動を読み取れずにエラーになる不具合を修正しました。 # (強制行動を行った場合は、本来の行動がキャンセルされるようになります) # (行動者・対象者ID変数格納と併用される場合 # こちらがスクリプトエディタで上になるようにして下さい) # # Ver1.03 行動開始前コモンイベントにより強制行動を行った場合に # 以降のイベントがスキップされる不具合を修正しました。 #============================================================================== module B_A_COMMON #行動開始前コモンイベント配列設定用ワードを指定 WORD = "行動開始前コモン" end class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # バトルイベントのセットアップ #-------------------------------------------------------------------------- def setup_b_a_common_event(common_event_id) @interpreter.setup($data_common_events[common_event_id].list) end #-------------------------------------------------------------------------- # イベントデータ保管 #-------------------------------------------------------------------------- def get_marshal_dump_current_interpreter @interpreter.marshal_dump end #-------------------------------------------------------------------------- # イベントデータ復帰 #-------------------------------------------------------------------------- def return_marshal_dump_last_interpreter(marshal_dump_data) @interpreter.marshal_load(marshal_dump_data) end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # スキル/アイテムの使用 #-------------------------------------------------------------------------- alias use_item_b_a_common use_item def use_item #行動前コモンイベント配列データを取得 array = @subject.current_action.item.b_a_common_events #各コモンイベントを処理 unless array.empty? marshal_dump_data = $game_troop.get_marshal_dump_current_interpreter array.each {|i| $game_troop.setup_b_a_common_event(i);process_event} $game_troop.return_marshal_dump_last_interpreter(marshal_dump_data) end #本来の処理を実行 use_item_b_a_common if @subject && @subject.current_action && @subject.current_action.item end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # 行動前コモンイベント #-------------------------------------------------------------------------- def b_a_common_events #既にデータがある場合、そのデータを返す @b_a_common_events ||= create_b_a_common_events end #-------------------------------------------------------------------------- # 行動前コモンイベントデータ作成 #-------------------------------------------------------------------------- def create_b_a_common_events #空の配列を作成 r = [] #メモ欄からキーワードを元にデータを生成 if /<#{B_A_COMMON::WORD}[::](\S+)>/ =~ note $1.to_s.split(/\s*,\s*/).each {|i| r.push(i.to_i)} end #配列を返す r end end