#============================================================================== # ■ RGSS3 対象無能化特徴/アイテム/スキル Ver1.00 by 星潟 #------------------------------------------------------------------------------ # このスクリプトを導入することで対象の特定の能力値を1として # アイテム/スキルのダメージ計算を行う機能を実装できます。 #============================================================================== # 設定例1 アクター/エネミー/装備品/ステート等のメモ欄に記述。 # 最初の数字で無能化する能力値ID(0が最大HP、1が最大MP、2が攻撃力〜7が運)、 # 次の数字が発動率(1〜100)を指定する値。 #============================================================================== # <無能化:3,25> # # このキャラクターの行動が敵にダメージ/回復を与える時、ダメージ計算において # 25%の確率で対象の防御力を1として扱う。 #------------------------------------------------------------------------------ # <無能化:5,75> # # このキャラクターの行動が敵にダメージ/回復を与える時、ダメージ計算において # 75%の確率で敵の魔法防御を1として扱う。 #------------------------------------------------------------------------------ # <無能化:4,self.luk/5> # # このキャラクターの行動が敵にダメージ/回復を与える時、ダメージ計算において # 運÷5の値の確率で敵の魔法力を1として扱う。 #============================================================================== # 設定例2 アイテム・スキルのメモ欄に記述。 # 最初の数字で無能化する能力値ID(0が最大HP、1が最大MP、2が攻撃力〜7が運)、 # 次の数字が発動率(1〜100)を指定する値。 #============================================================================== # <無能化:3,25> # # このアイテム/スキルで敵にダメージ/回復を与える時、ダメージ計算において # 25%の確率で対象の防御力を1として扱う。 #------------------------------------------------------------------------------ # <無能化:5,75> # # このアイテム/スキルで敵にダメージ/回復を与える時、ダメージ計算において # 75%の確率で敵の魔法防御を1として扱う。 #------------------------------------------------------------------------------ # <無能化:7,self.agi> # # このアイテム/スキルで敵にダメージ/回復を与える時、ダメージ計算において # 敏捷性の値の確率で敵の運を1として扱う。 #============================================================================== # 設定例2 アイテム・スキルのメモ欄に記述 # 数字で無能化を無視する能力値ID(0が最大HP、1が最大MP、2が攻撃力〜7が運)を指定。 #============================================================================== # <無能化無視:3,5> # # このアイテム/スキルで敵にダメージ/回復を与える時 # 防御力・魔法防御力の無能化効果を無くす。 #------------------------------------------------------------------------------ # <無能化無視:0,1,2,3,4,5,6,7> # # このアイテム/スキルで敵にダメージ/回復を与える時 # 最大HP・最大MP・攻撃力・防御力・魔法力・魔法防御力・敏捷性・運の # 無能化効果を無くす。 #============================================================================== module ParamZero #無能化設定用キーワードを指定。 Word1 = "無能化" #無能化無視設定用キーワードを指定。 Word2 = "無能化無視" #無能化の対象を敵対バトラーのみにするかを指定。 #(アクター→エネミーもしくはエネミー→アクター限定で、それぞれの味方には無効) EOnly = true #無能化発生時の能力値を指定。 #0にするとゼロ除算によるエラーが発生し得る為、1が推奨値。 Param = 1 end class Game_System attr_accessor :param_zero #-------------------------------------------------------------------------- # 対象無能化フラグ #-------------------------------------------------------------------------- def param_zero @param_zero ||= [nil] * 8 end #-------------------------------------------------------------------------- # 対象無能化フラグ初期化 #-------------------------------------------------------------------------- def param_zero_clear @param_zero = [nil] * 8 end end class Game_BattlerBase #-------------------------------------------------------------------------- # 対象無能化フラグ #-------------------------------------------------------------------------- def param_zero_per(item) z = [0] * 8 (feature_objects + [item]).each {|a| 8.times {|i| z[i] += item.param_zero_resist.include?(i) ? 0 : eval(a.param_zero_per[i])}} z end #-------------------------------------------------------------------------- # 通常能力値の取得 #-------------------------------------------------------------------------- alias param_zero_change param def param(param_id) $game_system.param_zero[param_id] == self ? ParamZero::Param : param_zero_change(param_id) end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ダメージ計算 #-------------------------------------------------------------------------- alias make_damage_value_defmdf_zero make_damage_value def make_damage_value(user, item) if (ParamZero::EOnly ? opposite?(user) : true) a = user.param_zero_per(item) 8.times {|i| $game_system.param_zero[i] = (rand(100) < a[i]) ? self : nil} end make_damage_value_defmdf_zero(user, item) $game_system.param_zero_clear end end class RPG::BaseItem #-------------------------------------------------------------------------- # 対象無能化特徴 #-------------------------------------------------------------------------- def param_zero_per @param_zero_per ||= param_zero_per_make end #-------------------------------------------------------------------------- # 対象無能化特徴データ作成 #-------------------------------------------------------------------------- def param_zero_per_make a = [] 8.times {|i| a[i] = /<#{ParamZero::Word1}[::]#{i},(\S+)>/ =~ note ? $1.to_s : "0"} a end end class RPG::UsableItem #-------------------------------------------------------------------------- # 無能化無視 #-------------------------------------------------------------------------- def param_zero_resist @param_zero_resist ||= param_zero_resist_make end #-------------------------------------------------------------------------- # 無能化無視データ作成 #-------------------------------------------------------------------------- def param_zero_resist_make /<#{ParamZero::Word2}[::](\S+)>/ =~ note ? ( $1.to_s.split(/\s*,\s*/).inject([]) {|r,f| r += [f.to_i]}) : [] end end