#============================================================================== # ■ RGSS2 特定スキル無効化 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # このスクリプトを導入することで # 特定スキル及び通常攻撃を一定確率で無効化する # 装備・ステート・敵を作成する事ができるようになります。 # それぞれメモ欄に<スキル無効:X,Y>とする事で効果を発揮します。 #(Xの場所にスキルID、Yの場所に無効化確率を記入します。 # なお、スキルIDが0の場合は通常攻撃と見なします) # また、装備とステート等、複数の場所に同じスキルに対する無効化が設定してある場合 # それぞれの確率が加算された確率で無効化判定を行います。 # # 例1 # <スキル無効:0,75> # 75%の確率で通常攻撃を無効化。 # # 例2 # <スキル無効:5,50> # 50%の確率でID5のスキルを無効化。 # # 例3 # <スキル無効:127,100> # 100%の確率でID127のスキルを無効化。 #============================================================================== module SKILL_CANCEL WORD = "スキル無効" end class Game_Battler #-------------------------------------------------------------------------- # ● 通常攻撃・スキルの個別無効化判定 #-------------------------------------------------------------------------- def skill_cancel?(skill_id) if self.actor? features = self.equips + self.states else features = [self.enemy] + self.states end data = 0 features.each do |feature| next if feature == nil memo = feature.note.scan(/<#{SKILL_CANCEL::WORD}[::](\S+),(\S+)>/) memo = memo.flatten if memo != nil && !memo.empty? && memo[0].to_i == skill_id data += memo[1].to_i return true if data >= 100 end end return true if data > rand(100) return false end #-------------------------------------------------------------------------- # ● 通常攻撃の効果適用 # attacker : 攻撃者 #-------------------------------------------------------------------------- alias attack_effect_skill_cancel attack_effect def attack_effect(attacker) return if self.skill_cancel?(0) attack_effect_skill_cancel(attacker) end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 # skill : スキル #-------------------------------------------------------------------------- alias skill_effect_skill_cancel skill_effect def skill_effect(user, skill) return if self.skill_cancel?(skill.id) skill_effect_skill_cancel(user, skill) end end