#============================================================================== # ■ RGSS3 ステート解除/相殺ステート Ver2.00a by 星潟 #------------------------------------------------------------------------------ # 付与時に、特定のステートを解除するステートを作成します。 # なお、解除と相殺の2種類の設定を行う事が出来ます。 #============================================================================== # 設定例 #------------------------------------------------------------------------------ # 解除の場合 #------------------------------------------------------------------------------ # ステート2のメモ欄に以下のように記入。 # # <ステート解除:3> # # 対象がステート3になっている場合 # ID 3のステートを解除し、ID 2のステートを付与。 # # 対象がステート3になっていない場合 # ID 2のステートを付与。 # # <ステート解除:3,4,5,6> # # 対象がステート3〜6のどれか(または複数)になっている場合 # それらのステート全てを解除し、ID 2のステートを付与。 # # 対象がステート3〜6のどれにもなっていない場合 # ID 2のステートを付与。 #------------------------------------------------------------------------------ # 相殺の場合 #------------------------------------------------------------------------------ # ステート4のメモ欄に以下のように記入。 # # <ステート相殺:6> # # 対象がステート6になっている場合 # ID 6のステートを解除し、ID 4のステートは付与されない。 # # 対象がステート6になっていない場合 # ID 4のステートを付与。 # # <ステート相殺:5,6,7,8> # # 対象がステート5〜8のどれか(または複数)になっている場合 # それらのステート全てを解除。ID 4のステートは付与されない。 # # 対象がステート5〜8のどれにもなっていない場合 # ID 4のステートを付与。 #------------------------------------------------------------------------------ # ランダム相殺の場合 #------------------------------------------------------------------------------ # ステート4のメモ欄に以下のように記入。 # # <ランダム相殺:6> # # 対象がステート6になっている場合 # ID 6のステートを解除し、ID 4のステートは付与されない。 # # 対象がステート6になっていない場合 # ID 4のステートを付与。 # # <ランダム相殺:5,6,7,8> # # 対象がステート5〜8のどれか(または複数)になっている場合 # それらのステートの中からランダムに1つ解除。ID 4のステートは付与されない。 # # 対象がステート5〜8のどれにもなっていない場合 # ID 4のステートを付与。 #============================================================================== module OffRemoveState #相殺ステート設定用ワードを設定します。基本的に変更する必要はありません。 Words = ["ステート解除","ステート相殺","ランダム相殺"] end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ステートの付加 #-------------------------------------------------------------------------- alias add_state_offsetting add_state def add_state(state_id) rd = [] rem_flag = false s = $data_states[state_id] s.ofss_remove_states.each {|i| remove_state(i) if state?(i)} s.ofss_offset_states.each {|i| next unless state?(i) remove_state(i) rem_flag = true} s.ofss_offset_r_states.each {|i| next unless state?(i) rd.push(i) rem_flag = true} remove_state(rd[rand(rd.size)]) if !rd.empty? add_state_offsetting(state_id) if rem_flag == false end end class RPG::State < RPG::BaseItem #-------------------------------------------------------------------------- # ステート解除 #-------------------------------------------------------------------------- def ofss_remove_states @ofss_remove_states ||= create_ofss_states(0) end #-------------------------------------------------------------------------- # ステート相殺 #-------------------------------------------------------------------------- def ofss_offset_states @ofss_offset_states ||= create_ofss_states(1) end #-------------------------------------------------------------------------- # ランダム相殺 #-------------------------------------------------------------------------- def ofss_offset_r_states @ofss_offset_r_states ||= create_ofss_states(2) end #-------------------------------------------------------------------------- # ステート解除/相殺データ作成 #-------------------------------------------------------------------------- def create_ofss_states(type) (/<#{OffRemoveState::Words[type]}[::](\S+)>/ =~ note ? $1.to_s : "").split( /\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)} end end