sacred-ritual-academy/Scripts/_RGSS3_.rb
2025-03-18 19:45:34 -05:00

115 lines
No EOL
4.6 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■ 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