赞 | 0 |
VIP | 6 |
好人卡 | 0 |
积分 | 1 |
经验 | 63789 |
最后登录 | 2017-9-7 |
在线时间 | 12 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 12 小时
- 注册时间
- 2006-5-21
- 帖子
- 773
|
#--------------------------------------------------------------------------
# ● 计算普通攻击造成的伤害
# attacker : 攻击者
# 结果代入 @hp_damage。
#--------------------------------------------------------------------------
def make_attack_damage_value(attacker)
damage = attacker.atk * 4 - self.def * 2 # 基本计算
damage = 0 if damage < 0 # 减少为 0
damage *= elements_max_rate(attacker, attacker.element_set) # 修正属性
damage /= 100
if damage == 0 # 伤害为 0
damage = rand(2) # 1/2 概率为伤害 1
elsif damage > 0 # 伤害为正数
@critical = (rand(100) < attacker.cri) # 判断会心一击
@critical = false if prevent_critical # 防止会心一击?
damage *= 3 if @critical # 会心一击修正
end
damage = apply_variance(damage, 20) # 分散
damage = apply_guard(damage) # 防御修正
@hp_damage = damage # HP 伤害
end
#--------------------------------------------------------------------------
# ● 计算特技以及物品造成的伤害
# user : 使用特技以及物品的人
# obj : 特技以及物品
# 将结果代入 @hp_damage 或 @mp_damage。
#--------------------------------------------------------------------------
def make_obj_damage_value(user, obj)
damage = obj.base_damage # 获取基本伤害
if damage > 0 # 伤害为正数
damage += user.atk * 4 * obj.atk_f / 100 # 打击关系度: 使用者
damage += user.spi * 2 * obj.spi_f / 100 # 精神关系度: 使用者
unless obj.ignore_defense # 无视防御力以外
damage -= self.def * 2 * obj.atk_f / 100 # 打击关系度: 对象者
damage -= self.spi * 1 * obj.spi_f / 100 # 精神关系度: 对象者
end
damage = 0 if damage < 0 # 减少为 0
elsif damage < 0 # 伤害为负数
damage -= user.atk * 4 * obj.atk_f / 100 # 打击关系度: 使用者
damage -= user.spi * 2 * obj.spi_f / 100 # 精神关系度: 使用者
end
damage *= elements_max_rate(user, obj.element_set) # 属性修正
damage /= 100
damage = apply_variance(damage, obj.variance) # 分散
damage = apply_guard(damage) # 防御修正
if obj.damage_to_mp
@mp_damage = damage # MP 伤害
else
@hp_damage = damage # HP 伤害
end
end
普通攻击和技能的伤害计算
可以发现单看普通攻击,伤害=攻击者的攻击力*4-对方防御*2
可以这么加上一句
damage *= $game_variables[n] 伤害乘上某变量加成。 |
|