#============================================================================== # ■ RGSS3 物理/魔法ダメージ率設定貫通 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # 物理ダメージ率や魔法ダメージ率を軽減する特徴が付与されている時 # アイテム・スキル使用時にその軽減度合いを # 一定割合打ち消してダメージを与える特徴とアイテム・スキルを作成出来ます。 #============================================================================== # 特徴を有する項目のメモ欄に指定。 #============================================================================== # <ダメージ率貫通:1,50> # # 物理ダメージ軽減効果を50%無視。 #------------------------------------------------------------------------------ # <ダメージ率貫通:2,100> # # 魔法ダメージ軽減効果を100%無視。 #============================================================================== # アイテム・スキルのメモ欄に指定。 #============================================================================== # <ダメージ率貫通追加:50> # # このアイテム・スキル使用時、ダメージ軽減効果を50%無視。 #============================================================================== module DamageRatePenetrate #ダメージ率貫通の設定用キーワードを指定。 Word1 = "ダメージ率貫通" #ダメージ率貫通追加の設定用キーワードを指定。 Word2 = "ダメージ率貫通追加" end class Game_BattlerBase #-------------------------------------------------------------------------- # 物理ダメージ率 #-------------------------------------------------------------------------- alias pdr_penetrate pdr def pdr r = pdr_penetrate return r unless @damage_rate_penetrate if r < 1.0 r = 1.0 - r r *= 100 - @damage_rate_penetrate r /= 100 r = 1.0 - r r = 0 if r < 0 r = 1.0 if r > 1.0 end r end #-------------------------------------------------------------------------- # 魔法ダメージ率 #-------------------------------------------------------------------------- alias mdr_penetrate mdr def mdr r = mdr_penetrate return r unless @damage_rate_penetrate if r < 1.0 r = 1.0 - r r *= 100 - @damage_rate_penetrate r /= 100 r = 1.0 - r r = 0 if r < 0 r = 1.0 if r > 1.0 end r end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ダメージ計算 #-------------------------------------------------------------------------- alias make_damage_value_pdr_mdr_penetrate make_damage_value def make_damage_value(user, item) @damage_rate_penetrate = create_damage_rate_penetrate(user, item) make_damage_value_pdr_mdr_penetrate(user, item) @damage_rate_penetrate = nil end #-------------------------------------------------------------------------- # ダメージ率貫通データ作成 #-------------------------------------------------------------------------- def create_damage_rate_penetrate(user, item) return 0 if item.hit_type == 0 a = user b = self v = $game_variables ht = item.hit_type user.feature_objects.inject(0) {|r,f| r += eval(f.damage_rate_penetrate[ht])} + eval(item.damage_rate_penetrate_add) end end class RPG::BaseItem #-------------------------------------------------------------------------- # ダメージ率貫通 #-------------------------------------------------------------------------- def damage_rate_penetrate @damage_rate_penetrate ||= create_damage_rate_penetrate end #-------------------------------------------------------------------------- # ダメージ率貫通作成 #-------------------------------------------------------------------------- def create_damage_rate_penetrate h = {} 2.times {|i| i2 = i + 1 h[i2] = /<#{DamageRatePenetrate::Word1}[::]#{i2},(\S+)>/ =~ note ? $1.to_s : "0"} h end end class RPG::UsableItem #-------------------------------------------------------------------------- # ダメージ率貫通追加 #-------------------------------------------------------------------------- def damage_rate_penetrate_add @damage_rate_penetrate_add ||= /<#{DamageRatePenetrate::Word2}[::](\S+)>/ =~ note ? $1.to_s : "0" end end