#--------------------------------------------------------------------------
# ○ MP 吸収効果の適用
# user : 攻撃者
# obj : スキルまたはアイテム (nil なら通常攻撃)
# 結果は @hp_damage または @mp_damage に代入する。
#--------------------------------------------------------------------------
def make_absorb_mp_value(user, obj = nil)
return unless mp_absorb?(user, obj)
# HP ダメージを MP 回復値に変換
rate = elements_max_rate( (obj == nil ? user : obj).element_set )
rate = rate.abs * calc_absorb_mp_rate / 100
@mp_damage -= [@hp_damage.abs * rate / 100, 1].max
@hp_damage = 0
end
#--------------------------------------------------------------------------
# ○ MP 吸収判定
# user : 攻撃者
# obj : スキルまたはアイテム (nil なら通常攻撃)
#--------------------------------------------------------------------------
def mp_absorb?(user, obj = nil)
if obj.is_a?(RPG::UsableItem)
return false if obj.base_damage < 0 # 回復なら吸収しない
if obj.is_a?(RPG::Item)
# 回復アイテムなら吸収しない
return false if obj.hp_recovery_rate > 0 || obj.hp_recovery > 0
end
end
return false if calc_absorb_mp_rate == 0 # 吸収率が 0 なら吸収しない
rate = elements_max_rate( (obj == nil ? user : obj).element_set )
return false if rate >= 0 # 有効な属性なら吸収しない
return true
end