技能的伤害公式,你不一定在数据库设定的界面写,也可以改脚本。我抛砖引玉吧。
class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● 计算伤害 #-------------------------------------------------------------------------- def make_damage_value(user, item) if item.is_a?(RPG::Skill)#如果使用的是技能(在VA里发动技能就是使用物品,所以有这个判定) case item.id#技能id when 218#比如218号技能的技能伤害你想自己写不引用数据库里的设定。另外,在这里的设定,等同于在数据库技能公式伤害的设定。user=a,self=b,value代表伤害公式计算结果。 value = 0 value = user.atk if user.weapons.include?($data_weapons[155])#举例,如果装备了155号武器,并且发动的是218号技能,那么伤害结果=a.atk,否则就是0. else #218号技能以外的情况 value = item.damage.eval(user, self, $game_variables)#这个就是取数据库设定的计算公式了。 end end 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)#防御状态 @result.make_damage(value.to_i, item)#返回最终计算结果 end end
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 计算伤害
#--------------------------------------------------------------------------
def make_damage_value(user, item)
if item.is_a?(RPG::Skill)#如果使用的是技能(在VA里发动技能就是使用物品,所以有这个判定)
case item.id#技能id
when 218#比如218号技能的技能伤害你想自己写不引用数据库里的设定。另外,在这里的设定,等同于在数据库技能公式伤害的设定。user=a,self=b,value代表伤害公式计算结果。
value = 0
value = user.atk if user.weapons.include?($data_weapons[155])#举例,如果装备了155号武器,并且发动的是218号技能,那么伤害结果=a.atk,否则就是0.
else #218号技能以外的情况
value = item.damage.eval(user, self, $game_variables)#这个就是取数据库设定的计算公式了。
end
end
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)#防御状态
@result.make_damage(value.to_i, item)#返回最终计算结果
end
end
|