#============================================================================== # ■ RGSS3 収束時倍率特徴・アイテム・スキル Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 対象:全体のアイテム・スキル使用時 # 実際の対象が単体であった場合に # ダメージ・回復量に割合ブーストをかける特徴や # アイテム・スキルを作成できるようになります。 #============================================================================== # 特徴を有する項目やアイテム・スキルのメモ欄に記入して下さい。 #============================================================================== # <収束時倍率増加:15,50> # # 全体対象のアイテム・スキル使用時に対象が単体の場合 # 50%の確率で回復・ダメージ量 +15%。 #============================================================================== # <収束時倍率増加:25,100> # # 全体対象のアイテム・スキル使用時に対象が単体の場合 # 100%の確率で回復・ダメージ量 +25%。 #============================================================================== # <収束時倍率増加:self.agi/5,self.luk> # # 全体対象のアイテム・スキル使用時に対象が単体の場合 # 使用者の運の値%の確率で回復・ダメージ量 +使用者の敏捷÷5%。 #============================================================================== # アイテム・スキルのメモ欄に記入して下さい。 #============================================================================== # <収束倍率適用禁止:75> # # このアイテム・スキルは例え条件を満たしても # 75%の確率で収束時倍率増加効果を無効化する。 #============================================================================== # <収束倍率適用禁止:100> # # このアイテム・スキルは例え条件を満たしても # 100%の確率で収束時倍率増加効果を無効化する。 #============================================================================== # <収束倍率適用禁止:100-self.luk> # # このアイテム・スキルは例え条件を満たしても # 100-使用者の運%の確率で収束時倍率増加効果を無効化する。 #============================================================================== module ConvergeDamage #収束時倍率特徴の設定用キーワードを指定。 W1 = "収束時倍率増加" #収束時倍率特徴の設定用キーワードを指定。 W2 = "収束倍率適用禁止率" end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # スキル/アイテムの使用 #-------------------------------------------------------------------------- alias use_item_converge use_item def use_item s = @subject s.converge_rate_make(s, s.current_action.item) use_item_converge s.converge_rate = 1.0 end end class Game_Battler < Game_BattlerBase attr_accessor :converge_rate #-------------------------------------------------------------------------- # 収束時倍率特徴 #-------------------------------------------------------------------------- def f_converge_rate(item = nil) (100 + (feature_objects + (item ? [item] : [])).inject(0) {|r,f| a = f.converge_rate r += eval(a[1]) > rand(100) ? eval(a[0]) : 0}).to_f / 100 end #-------------------------------------------------------------------------- # 収束時倍率 #-------------------------------------------------------------------------- def converge_rate @converge_rate ||= 1.0 end #-------------------------------------------------------------------------- # 収束時倍率作成 #-------------------------------------------------------------------------- def converge_rate_make(user, item) if user && item.for_all? && eval(item.converge_seal) <= rand(100) d = user.current_action.make_targets.compact.size > 1 ? 1.0 : user.f_converge_rate(item) else d = 1.0 end @converge_rate = d end end class RPG::BaseItem #-------------------------------------------------------------------------- # 収束時倍率増加 #-------------------------------------------------------------------------- def converge_rate @converge_rate ||= /<#{ConvergeDamage::W1}[::](\S+),(\S+)>/ =~ note ? [$1.to_s,$2.to_s] : ["0","0"] end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # 収束倍率適用禁止率 #-------------------------------------------------------------------------- def converge_seal @converge_seal ||= /<#{ConvergeDamage::W2}[::](\S+)>/ =~ note ? $1.to_s : "0" end end class RPG::UsableItem::Damage #-------------------------------------------------------------------------- # ダメージ計算 #-------------------------------------------------------------------------- alias eval_converge eval unless $! def eval(a, b, v) eval_converge(a, b, v) * a.converge_rate rescue 0 end end