#============================================================================== # クリティカルダメージ増加ステート ver1.00 #------------------------------------------------------------------------------ #[設定方法] # ステートのメモ欄に「クリティカルダメージnum倍」と書く。 # numには半角の整数を入れてください。 # #[導入上の注意] # 通常攻撃によるダメージ計算を変更している場合は、 # クリティカルによるダメージ増加の計算をしている行 # (「damage *= 3 if @critical」となっていると思います) # を、 # damage *= calc_critical(attacker) if @critical # と、してください。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module CD # デフォルトのクリティカルによるダメージの倍率 CRITICAL = 3 end #============================================================================== # ここまで #============================================================================== #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● 通常攻撃によるダメージ計算 ※ 再定義 #-------------------------------------------------------------------------- def make_attack_damage_value(attacker) damage = attacker.atk * 4 - self.def * 2 # 基本計算 damage = attacker.atk / 2 - self.def / 4 # 基本計算 damage = 0 if damage < 0 # マイナスなら 0 に damage *= elements_max_rate(attacker.element_set) # 属性修正 damage /= 100 if damage == 0 # ダメージが 0 damage = rand(2) # 1/2 の確率で 1 ダメージ elsif damage > 0 # ダメージが正の数 @critical = (rand(100) < attacker.cri) # クリティカル判定 @critical = false if prevent_critical # クリティカル防止? damage *= calc_critical(attacker) if @critical# クリティカル修正 end damage = apply_variance(damage, 20) # 分散 damage = apply_guard(damage) # 防御修正 @hp_damage = damage # HP にダメージ end #-------------------------------------------------------------------------- # ● クリティカルによるダメージ増加の計算 #-------------------------------------------------------------------------- def calc_critical(attacker) c = [CD::CRITICAL] for state in attacker.states memo = state.note.scan(/クリティカルダメージ(\d+)倍/i).to_s.to_i c.push(memo) end return c.max end end