#============================================================================== # ■ RGSS2 防御無視攻撃化能力 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # このスクリプトを導入することで、装備品・ステート・エネミーに対し # メモ欄に特定の書式で記入する事で、敵に通常攻撃もしくはスキルを使用した際に # 防御力もしくは精神力、あるいはその両方を # 一定確率で無視する事のできる能力を付加します。 # 複数箇所にDEF無視あるいはSPI無視が記入されていた場合 # それぞれの確率は合計されます。 # # 設定例 # # # # このキャラクターの行動が敵にダメージを与える時 # 50%の確率で敵の防御力を無視する。 # # # # このキャラクターの行動が敵にダメージを与える時 # 100%の確率で敵の精神力を無視する。 # #============================================================================== module DEFSPIZERO WORD1 = "DEF無視" WORD2 = "SPI無視" end class Game_Battler #-------------------------------------------------------------------------- # ● 防御力無視判定 #-------------------------------------------------------------------------- def def_zero? data = 0 if self.actor? features = self.equips + self.states else features = [self.enemy] + self.states end for i in features next if i == nil i.note.each_line { |line| memo = line.scan(/<#{DEFSPIZERO::WORD1}[::](\S+)>/) memo = memo.flatten if memo != nil && !memo.empty? data += memo[0].to_i end } end return true if data > rand(100) return false end #-------------------------------------------------------------------------- # ● 精神力無視判定 #-------------------------------------------------------------------------- def spi_zero? data = 0 if self.actor? features = self.equips + self.states else features = [self.enemy] + self.states end for i in features next if i == nil i.note.each_line { |line| memo = line.scan(/<#{DEFSPIZERO::WORD2}[::](\S+)>/) memo = memo.flatten if memo != nil && !memo.empty? data += memo[0].to_i end } end return true if data > rand(100) return false end #-------------------------------------------------------------------------- # ● 防御力の取得 #-------------------------------------------------------------------------- alias def_zero_change def unless $! def def data = def_zero_change return data if $game_troop.def_zero == nil if self.actor? && !$game_troop.def_zero.actor? return 0 elsif !self.actor? && $game_troop.def_zero.actor? return 0 end return data end #-------------------------------------------------------------------------- # ● 精神力の取得 #-------------------------------------------------------------------------- alias spi_zero_change spi unless $! def spi data = spi_zero_change return data if $game_troop.spi_zero == nil if self.actor? && !$game_troop.spi_zero.actor? return 0 elsif !self.actor? && $game_troop.spi_zero.actor? return 0 end return data end #-------------------------------------------------------------------------- # ● 通常攻撃によるダメージ計算 # attacker : 攻撃者 # 結果は @hp_damage に代入する。 #-------------------------------------------------------------------------- alias make_attack_damage_value_defspi_zero make_attack_damage_value unless $! def make_attack_damage_value(attacker) $game_troop.def_zero = attacker.clone if attacker.def_zero? $game_troop.spi_zero = attacker.clone if attacker.spi_zero? make_attack_damage_value_defspi_zero(attacker) $game_troop.def_zero = nil $game_troop.spi_zero = nil end #-------------------------------------------------------------------------- # ● スキルまたはアイテムによるダメージ計算 # user : スキルまたはアイテムの使用者 # obj : スキルまたはアイテム # 結果は @hp_damage または @mp_damage に代入する。 #-------------------------------------------------------------------------- alias make_obj_damage_value_defspi_zero make_obj_damage_value unless $! def make_obj_damage_value(user, obj) $game_troop.def_zero = user.clone if user.def_zero? $game_troop.spi_zero = user.clone if user.spi_zero? make_obj_damage_value_defspi_zero(user, obj) $game_troop.def_zero = nil $game_troop.spi_zero = nil end end class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :def_zero attr_accessor :spi_zero #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_defspi_zero initialize unless $! def initialize initialize_defspi_zero @def_zero = nil @spi_zero = nil end end