#============================================================================== # ■ RGSS3 ステート前提ステート Ver2.00 by 星潟 #------------------------------------------------------------------------------ # 特定のステートになっていないと絶対に付与されないステートを作成します。 #============================================================================== # ステートのメモ欄に指定。 #------------------------------------------------------------------------------ # <前提ステート:2> # # ステート2が付与されていないと、このステートには絶対に付与されない。 #------------------------------------------------------------------------------ # <前提ステート:2,3> # # ステート2と3の両方が付与されていないと、このステートには絶対に付与されない。 #------------------------------------------------------------------------------ # <前提ステート:2,3> # <前提ステート:4> # # ステート2と3の両方が付与されているか # ステート4が付与されていないと、このステートには絶対に付与されない。 #============================================================================== module Condition_State #前提ステートの設定用キーワードを指定。 WORD = "前提ステート" end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ステートの付加 #-------------------------------------------------------------------------- alias add_state_condition add_state def add_state(state_id) add_state_condition(state_id) if state_condition(state_id) end #-------------------------------------------------------------------------- # 前提ステートチェック #-------------------------------------------------------------------------- def state_condition(state_id) a1 = $data_states[state_id].state_condition a1.empty? or a1.any? {|a2| a2.all? {|i| state?(i)}} end end class RPG::State < RPG::BaseItem #-------------------------------------------------------------------------- # 前提ステート #-------------------------------------------------------------------------- def state_condition @state_condition ||= create_state_condition end #-------------------------------------------------------------------------- # 前提ステート作成 #-------------------------------------------------------------------------- def create_state_condition a = [] note.each_line {|l| if /<#{Condition_State::WORD}[::](\S+)>/ =~ l a.push($1.to_s.split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)}) end} a end end