#============================================================================== # ○スキル対象拡張 Ver1.05 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # スキルやアイテムの対象をいろいろと変更します。 #============================================================================== # ■更新履歴 # Ver1.05 # ・<敵全体ランダム:n>で戦闘不能のキャラを対象として選んでいたバグを修正。 # Ver1.04 # ・<敵ランダム連続:n><敵全体連続:n>を追加。 # ・バグ対策として<敵味方全体>と<自分以外対象>の設定名称を微妙に変更。 # Ver1.03 # ・<敵味方ランダム:n>と<自分以外対象>を組み合わせた時 # 回数が実際の設定よりも減ることがあるバグを修正。 # ・その他いろいろ回数がおかしいバグを修正。 # ・<追加ランダム:n>を追加。 # Ver1.02 # ・<敵ランダム:n>の回数がおかしいバグを修正。 # Ver1.01 # ・大幅な仕様追加に伴う改題。 #============================================================================== # スキルまたはアイテムのメモ欄に以下の設定項目を記述することで # 効果対象がさまざまに変化します。 # 基本的に、データベースでの設定は無視されます。 # なお、<敵単体連続:n>以外はデータベースでの設定を単体以外にしたほうが # 無難です。 # ・<敵単体連続:n> # n回選択対象の敵に連続で効果が生じます。 # データベースでの設定を敵単体にしておかないと面白いことになります。 # ・<敵ランダム:n> # n回ランダムで敵に連続で効果が生じます。 # ・<敵味方ランダム:n> # n回ランダムで敵味方に連続で効果が生じます。狙われやすさは無視されます。 # ・<敵ランダム連続:n> # ランダムな敵に連続でn回効果が生じます。 # ・<敵全体連続:n> # 敵全体にn回連続で効果が生じます。 # ・<追加ランダム:n> # 上五ついずれかの項目と併用してください。 # ランダムで1〜n回数増加します。 # ・[敵味方全体] # 敵味方全体を対象として効果が生じます。 # ・[自分以外対象] # 効果対象にスキル使用者が含まれていた場合、除外されます。 # これと<追加ランダム:n>のみ他の項目と同時に利用することができます。 # nはすべて1以上の整数にしてください。 class Game_BattleAction SNF_ENEMYCOMBO = "敵単体連続" SNF_ENEMYRANDOM = "敵ランダム" SNF_ALLRANGE = "[敵味方全体]" SNF_ALLRANDOM = "敵味方ランダム" SNF_WITHOUTMYSELF = "[自分以外対象]" SNF_ADDRANDOM = "追加ランダム" SNF_RANDOMCOMBO = "敵ランダム連続" SNF_ALLCOMBO = "敵全体連続" #-------------------------------------------------------------------------- # ターゲットのクリア #-------------------------------------------------------------------------- def snf_clear_targets return [] end #-------------------------------------------------------------------------- # ターゲットランダム選出 #-------------------------------------------------------------------------- def snf_randompush(obj, unit) push_unit = unit[rand(unit.size)] return push_unit end #-------------------------------------------------------------------------- # ● スキルまたはアイテムのターゲット作成 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias snf_othermyself_make_obj_targets make_obj_targets def make_obj_targets(obj) targets = snf_othermyself_make_obj_targets(obj) # メソッド呼び戻し # <敵単体連続:n> memo = obj.note.scan(/<#{SNF_ENEMYCOMBO}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? number_of_targets = memo[0].to_i - 1 number_of_targets.times do targets.push(opponents_unit.smooth_target(@target_index)) end # <追加ランダム:n> memo2 = obj.note.scan(/<#{SNF_ADDRANDOM}[::](\S+)>/) memo2 = memo2.flatten if memo2 != nil and not memo2.empty? number_of_targets = rand(memo2[0].to_i) + 1 number_of_targets.times do targets.push(opponents_unit.smooth_target(@target_index)) end end end # <敵ランダム:n> memo = obj.note.scan(/<#{SNF_ENEMYRANDOM}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? targets = snf_clear_targets number_of_targets = memo[0].to_i number_of_targets.times do targets.push(opponents_unit.random_target) end # <追加ランダム:n> memo2 = obj.note.scan(/<#{SNF_ADDRANDOM}[::](\S+)>/) memo2 = memo2.flatten if memo2 != nil and not memo2.empty? number_of_targets = rand(memo2[0].to_i) + 1 number_of_targets.times do targets.push(opponents_unit.random_target) end end end # <敵味方ランダム:n> memo = obj.note.scan(/<#{SNF_ALLRANDOM}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? targets = snf_clear_targets number_of_targets = memo[0].to_i unit = opponents_unit.existing_members + friends_unit.existing_members unit.delete_if {|x| x == battler} if obj.note.include?(SNF_WITHOUTMYSELF) # <自分以外対象> number_of_targets.times do push_unit = snf_randompush(obj, unit) targets.push(push_unit) end # <追加ランダム:n> memo2 = obj.note.scan(/<#{SNF_ADDRANDOM}[::](\S+)>/) memo2 = memo2.flatten if memo2 != nil and not memo2.empty? number_of_targets = rand(memo2[0].to_i) + 1 number_of_targets.times do push_unit = snf_randompush(obj, unit) targets.push(push_unit) end end end # <敵味方全体> memo = obj.note.include?(SNF_ALLRANGE) if memo targets = snf_clear_targets targets += opponents_unit.existing_members targets += friends_unit.existing_members end # <敵ランダム連続:n> memo = obj.note.scan(/<#{SNF_RANDOMCOMBO}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? targets = snf_clear_targets r_combo = opponents_unit.random_target number_of_targets = memo[0].to_i number_of_targets.times do targets.push(r_combo) end # <追加ランダム:n> memo2 = obj.note.scan(/<#{SNF_ADDRANDOM}[::](\S+)>/) memo2 = memo2.flatten if memo2 != nil and not memo2.empty? number_of_targets = rand(memo2[0].to_i) + 1 number_of_targets.times do targets.push(r_combo) end end end # <敵全体連続:n> memo = obj.note.scan(/<#{SNF_ALLCOMBO}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? targets = snf_clear_targets number_of_targets = memo[0].to_i # <追加ランダム:n> memo2 = obj.note.scan(/<#{SNF_ADDRANDOM}[::](\S+)>/) memo2 = memo2.flatten for member in opponents_unit.existing_members number_of_targets.times do targets.push(member) end if memo2 != nil and not memo2.empty? add_number = rand(memo2[0].to_i) + 1 add_number.times do targets.push(member) end end end end # <自分以外対象> memo = obj.note.include?(SNF_WITHOUTMYSELF) targets.delete_if {|x| x == battler} if memo return targets.compact # 結果を返す end end