115 lines
No EOL
4.6 KiB
Ruby
115 lines
No EOL
4.6 KiB
Ruby
#==============================================================================
|
||
# ■ 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 |