#============================================================================== # ■ 出現条件スクリプト (VX Ace用) #------------------------------------------------------------------------------ # 製作者 : CanariAlternate # サイト名 : カルトの鳥篭 # サイトURL : http://canarialt.blog.fc2.com #------------------------------------------------------------------------------ # ■ 概要 : イベントページの出現条件にスクリプトを追加する。 # # ■ 必須 : 「注釈取得スクリプト」 # # ■ 位置 : 「注釈取得スクリプト」より下 #------------------------------------------------------------------------------ # 更新履歴 : 2012/10/01 Ver1.00 スクリプトを作成した。 # 2013/02/19 Ver1.01 共通処理スクリプトの廃止による変更を施した。 #============================================================================== $imported ||= {} $imported[:CanariAlternate_ScriptConditions] = true #============================================================================== # ■ Calt #------------------------------------------------------------------------------ #  CanariAlternateが製作したスクリプト用のモジュールです。 #============================================================================== module Calt #---------------------------------------------------------------------------- # 1. スクリプトでの出現条件の記述方法を設定する。 # 初期設定では 出現条件(スクリプトの内容) と注釈に記述すると認識する。 SCRIPT_CONDITIONS_NOTE = /出現条件\(((\(\g<2>*\)|[^\(\)])+)\)/ #---------------------------------------------------------------------------- end #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理 # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● オブジェクト初期化 [追加] #-------------------------------------------------------------------------- alias initialize_ScriptConditions initialize def initialize(map_id, event) event.pages.each do |page| page.condition.script_string = get_script_string(page.event_note) end initialize_ScriptConditions(map_id, event) end #-------------------------------------------------------------------------- # ● 出現条件のスクリプトを抽出 [新規] #-------------------------------------------------------------------------- def get_script_string(note) return Calt::SCRIPT_CONDITIONS_NOTE =~ note ? $1 : nil end #-------------------------------------------------------------------------- # ● イベントページの条件合致判定 [追加] #-------------------------------------------------------------------------- alias conditions_met_ScriptConditions? conditions_met? def conditions_met?(page) script = page.condition.script_string conditions_met_ScriptConditions?(page) && (!script || eval(script)) end end #============================================================================== # ■ RPG::Event::Page::Condition #------------------------------------------------------------------------------ #  イベントページの [条件] のデータクラス。 #============================================================================== class RPG::Event::Page::Condition #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :script_string end