#============================================================================== # □ ダメージ計算拡張 (for VX Ace) #------------------------------------------------------------------------------ # Version : 1_20120712 # by サリサ・タイクーン # http://www.tycoon812.com/rgss/ #============================================================================== #============================================================================== # □ 素材スイッチ #============================================================================== $rgsslab = {} if $rgsslab == nil $rgsslab["ダメージ計算拡張"] = true if $rgsslab["ダメージ計算拡張"] #============================================================================== # □ カスタマイズポイント #============================================================================== module RGSSLAB end module RGSSLAB::Damage_Calculation_Extension #-------------------------------------------------------------------------- # ○ ダメージ上限の文字列設定 # ダメージ上限を定める文字列を設定します。 # # ここに記述した文字列をスキル/アイテムのメモ帳において # [ + LIMIT_DAMAGE_NOTE + 上限値 ]と # 記述する事で、ダメージは上限値よりも超える事がなくなります。 # # 回復用途にも有効です。 #-------------------------------------------------------------------------- LIMIT_DAMAGE_NOTE = "ダメージ上限:" #-------------------------------------------------------------------------- # ○ 防御無視の文字列設定 # 防御判定を無視する文字列を設定します。 # # ここに記述した文字列をスキル/アイテムのメモ帳において # [ + GUARD_DISREGARD_NOTE + ]と # 記述する事で、相手の防御判定を無視しての戦闘計算となります。 # # スキル/アイテムによって、設定する意味がない場合もあります。 #-------------------------------------------------------------------------- GUARD_DISREGARD_NOTE = "防御無視" end # カスタマイズポイントは、ここまで #============================================================================== # □ RGSSLAB::Damage_Calculation_Extension [module] #============================================================================== module RGSSLAB::Damage_Calculation_Extension #-------------------------------------------------------------------------- # ○ 素材設定用の定数定義 #-------------------------------------------------------------------------- MATERIAL_NAME = "ダメージ計算拡張" VERSION = 1 RELEASE = 20120712 end #============================================================================== # ■ Game_Battler [class] #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ○ モジュールの設定 #-------------------------------------------------------------------------- RGSSLAB_009 = RGSSLAB::Damage_Calculation_Extension #-------------------------------------------------------------------------- # ● ダメージ計算 [再定義] # user : 攻撃者 # item : スキル/アイテム #-------------------------------------------------------------------------- def make_damage_value(user, item) value = item.damage.eval(user, self, $game_variables) value *= item_element_rate(user, item) value *= pdr if item.physical? value *= mdr if item.magical? value *= rec if item.damage.recover? if $rgsslab["クリティカル倍率変更ステート"] value *= critical_rate(value, user) if @result.critical value = Integer(value) elsif $rgsslab["クリティカル個別設定"] ; value = apply_critical(value, user) if @result.critical else ; value = apply_critical(value) if @result.critical end value = apply_variance(value, item.damage.variance) if $rgsslab["ダメージ計算拡張"] ; value = apply_guard(value) unless damage_disregard_judge(item) else ; value = apply_guard(value) end value = damage_limit_process(value, item) if $rgsslab["ダメージ計算拡張"] @result.make_damage(value.to_i, item) end #-------------------------------------------------------------------------- # ○ 防御無視判定 # item : スキル/アイテム #-------------------------------------------------------------------------- def damage_disregard_judge(item) return true if item.note[/\[#{RGSSLAB_009::GUARD_DISREGARD_NOTE}\]/] return false end #-------------------------------------------------------------------------- # ○ ダメージ上限の処理 # value : 現在のダメージ # item : スキル/アイテム #-------------------------------------------------------------------------- def damage_limit_process(value, item) if item.note[/\[#{RGSSLAB_009::LIMIT_DAMAGE_NOTE}(\d+)\]/] d = item.note[/\[#{RGSSLAB_009::LIMIT_DAMAGE_NOTE}(\d+)\]/].scan(/(\d+)/)[0][0].to_i value = [value, d].min end return value end end end