加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
这个脚本里有一个功能
ABSORB_MP MP吸收
内容是这么写的:
#-------------------------------------------------------------------------- # ○ 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
#--------------------------------------------------------------------------
# ○ 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
但是实际写到注释后没有效果,是哪里出了问题呢? |