加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 shinsuzaku 于 2014-4-29 23:27 编辑
第一次发自己的心得,有错欢迎指正
这个问题查了很多帖子都没有很好的方式,自己琢磨一阵之后,鼓捣出一个土办法
首先修改Game_Battler类363行的make_damage_value函数
#-------------------------------------------------------------------------- # ● 计算伤害 #-------------------------------------------------------------------------- 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? value = apply_critical(value) if @result.critical value = apply_variance(value, item.damage.variance) value = apply_guard(value) value = [value, 1].max unless item.damage.recover? #新增——判断使用者以及使用的技能,如果两者皆符合要求,那么就改变吸收率drain_ratio drain_ratio = 1 if user.name == $game_actors[3].name and item.id == 300 drain_ratio = 0.25 end #make_damage函数有修改 @result.make_damage(value.to_i, item,drain_ratio) end
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
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?
value = apply_critical(value) if @result.critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
value = [value, 1].max unless item.damage.recover?
#新增——判断使用者以及使用的技能,如果两者皆符合要求,那么就改变吸收率drain_ratio
drain_ratio = 1
if user.name == $game_actors[3].name and item.id == 300
drain_ratio = 0.25
end
#make_damage函数有修改
@result.make_damage(value.to_i, item,drain_ratio)
end
而后修改Game_ActionResult类71行的make_damage函数
#-------------------------------------------------------------------------- # ● 生成伤害 #-------------------------------------------------------------------------- def make_damage(value, item,drain_ratio)#drain_ratio即为上面的吸收率 @critical = false if value == 0 @hp_damage = value if item.damage.to_hp? @mp_damage = value if item.damage.to_mp? @mp_damage = [@battler.mp, @mp_damage].min @hp_drain = (@hp_damage*drain_ratio).to_i if item.damage.drain?#使用drain_ratio,即吸血百分比 @mp_drain = @mp_damage if item.damage.drain? @hp_drain = [@battler.hp, @hp_drain].min @success = true if item.damage.to_hp? || @mp_damage != 0 end
#--------------------------------------------------------------------------
# ● 生成伤害
#--------------------------------------------------------------------------
def make_damage(value, item,drain_ratio)#drain_ratio即为上面的吸收率
@critical = false if value == 0
@hp_damage = value if item.damage.to_hp?
@mp_damage = value if item.damage.to_mp?
@mp_damage = [@battler.mp, @mp_damage].min
@hp_drain = (@hp_damage*drain_ratio).to_i if item.damage.drain?#使用drain_ratio,即吸血百分比
@mp_drain = @mp_damage if item.damage.drain?
@hp_drain = [@battler.hp, @hp_drain].min
@success = true if item.damage.to_hp? || @mp_damage != 0
end
PS:因为我是有用论坛中武器附加吸血效果的代码,所以我下面的判断有些不同,如果想直接设置技能的话,也可以加个else直接判断技能,如果要做吸魔,可以用吸收率,再加一个变量,在make_damage中进行判断 |