#============================================================================== # ○隠密&挑発 Ver1.00 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # 敵の攻撃の対象外になったり、また必ず対象になるステートを作れます。 #============================================================================== # 隠密ステートにかかっていると、敵のターゲット選択の候補になりません。 # 挑発ステートにかかっているアクターがいると、敵はそれ以外のアクターを # ターゲット選択の候補にしません。 # なお、どちらの効果も対象が全体の場合は無意味です。 # ●注意 # ・スキルなどで隠密/挑発のステートを受けた場合、 #  ターゲットが決定されるタイミングがターン開始時という仕様上、 #  隠密/挑発の効果が反映されるのは次ターン以降になります。 module SNF DISAPPEAR_STATE_ID = 18 # 隠密ステートのID PROVOKE_STATE_ID = 19 # 挑発ステートのID end class Game_Unit def random_target disappear = false provoke = false roulette = [] # 配列の定義 for member in existing_members # 挑発しているメンバーがいるか否か if member.states.include?($data_states[SNF::PROVOKE_STATE_ID]) provoke = true end end for member in existing_members # 生存しているメンバーの配列取得 member.odds.times do # 隠密状態の場合ルーレットに追加されない if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID]) disappear = true elsif provoke if member.states.include?($data_states[SNF::PROVOKE_STATE_ID]) roulette.push(member) end else roulette.push(member) # odds回数だけ配列にメンバーを追加 end # if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID]) end end # member.odds.times do if roulette.size <= 0 and disappear roulette = existing_members end return roulette.size > 0 ? roulette[rand(roulette.size)] : nil # ランダムに選ぶ end end