#==============================================================================
# ■ RGSS3 行动开始前执行公共事件 Ver1.01 by 星潟
#------------------------------------------------------------------------------
# 通常,物品或技能要执行公共事件的话,会在效果释放完毕后执行。
# 但是使用这个脚本的设定,就会在释放前执行公共事件
#
# 与通常公共事件的执行不同,
# 在没有进入战斗的时候没有效果,这点需要注意。
#------------------------------------------------------------------------------
# ★使用举例
#------------------------------------------------------------------------------
# <行动开始前执行:5>
#
# 这样就会在行动开始前先执行5号公共事件。
#==============================================================================
# Ver1.01 行动开始前执行公共事件脚本针对强制行动做了修改
# 修正了无法读取行动而导致错误的问题。
# (如果采取了强制行动,将取消原本的行动)
# (与“将行动者或对象ID存储进变量”等脚本同时使用时
# 请将该脚本在脚本编辑器中的位置置于它们之上)
#==============================================================================
module B_A_COMMON
#指定行动开始前释放公共事件的设定名称
WORD = "行动开始前执行"
end
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# バトルイベントのセットアップ
#--------------------------------------------------------------------------
def setup_b_a_common_event(common_event_id)
#指定したコモンイベントIDのリストをセットする。
@interpreter.setup($data_common_events[common_event_id].list)
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
#各コモンイベントを処理。
array.each {|i| $game_troop.setup_b_a_common_event(i);process_event} unless array.empty?
#本来の処理を実行。
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
#既にデータがある場合、そのデータを返す
return @b_a_common_events if @b_a_common_events != nil
#ターン開始時コモンイベントデータの配列を生成
@b_a_common_events = []
#メモ欄からキーワードを元にデータを生成
memo = self.note.scan(/<#{B_A_COMMON::WORD}[::](\S+)>/).flatten
#配列が空でない場合は処理を実行
if memo != nil && !memo.empty?
#配列を文字列として取得
data = memo[0].split(/\s*,\s*/)
#配列内の数字をターン開始時コモンイベントデータの配列に
#文字列から数値化して移し替える
data.each {|i| @b_a_common_events.push(i.to_i)}
end
#ターン開始時コモンイベントデータの配列を返す
@b_a_common_events
end
end