#============================================================================== # ■ RGSS3 ステート解除時連鎖解除ステート Ver2.00 by 星潟 #------------------------------------------------------------------------------ # 解除時に、他のステートも共に解除するステートを作成します。 #============================================================================== # 設定例 #------------------------------------------------------------------------------ # ステート2のメモ欄に以下のように記入。 # # <連鎖解除:3> # # ステート2が解除された際、ステート3も同時に解除する。 # # <連鎖解除:3,4,5,6> # # ステート2が解除された際、ステート3、4、5、6も同時に解除する。 #============================================================================== module ChainRemove #連鎖解除ステート設定用キーワードを設定します。 Word = "連鎖解除" end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ステートの解除 #-------------------------------------------------------------------------- alias remove_state_chain_remove remove_state def remove_state(state_id) remove_state_chain_remove(state_id) $data_states[state_id].chain_remove_states.each {|i| remove_state_chain_remove(i) if state?(i)} end end class RPG::State < RPG::BaseItem #-------------------------------------------------------------------------- # ステート連鎖解除 #-------------------------------------------------------------------------- def chain_remove_states @chain_remove_states ||= create_chain_remove_states end #-------------------------------------------------------------------------- # ステート連鎖解除データ作成 #-------------------------------------------------------------------------- def create_chain_remove_states (/<#{ChainRemove::Word}[::](\S+)>/ =~ note ? $1.to_s : "").split( /\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} end end