Project1
标题:
物理技能攻击伤害异常
[打印本页]
作者:
letppigogo
时间:
2022-10-19 23:12
标题:
物理技能攻击伤害异常
本帖最后由 letppigogo 于 2022-10-19 23:19 编辑
每战首次攻击目标伤害正常,第二次开始攻击目标伤害开始异常。而且只影响受到武器伤害加成的技能,如果武器伤害只有几十,第二次攻击伤害会突降200左右的,如果武器伤害提供到200左右,第二次技能伤害会突然提高200左右的伤害。例如第一次攻击在600-800之间的伤害,第二次开始伤害就变成了800-1000左右。确定不是分散度的问题,感觉应该是脚本哪里异常了,排查了很久没发现原因,不知道有大神知道原因吗?
# 命中的情况下
if hit_result == true
# 计算威力
power = skill.power
if power > 0
power -= self.pdef * skill.pdef_f / 300
power -= self.mdef * skill.mdef_f / 300
power -= self.int * skill.int_f / 200
power = [power, 0].max
end
# 计算倍率
rate = 10
rate += (user.atk * skill.atk_f / 100)
rate += (user.int * skill.int_f / 100)
rate += (user.str * skill.str_f / 100)
rate += (user.mdef * skill.mdef_f / 100)
# 计算基本伤害
# 施法者智力大于等于230,计策伤害乘以1.1倍
if user.int >= 230 and skill.int_f = 100
self.damage = power * rate / 90
#伤害为整数
self.damage = Integer(self.damage)
end
# 施法者智力小于等于229,计策伤害不变
if user.int <= 229
self.damage = power * rate / 100
end
#-----------------------------------------------------
# ● 装备战争之潮时绝技伤害1.3
#-----------------------------------------------------
if user.state?(83) and skill.id >= 1 and skill.id <= 99
self.damage = power * rate / 100 * 1.3
#伤害为整数
self.damage = Integer(self.damage)
end
#-----------------------------------------------------
# ● 夏维娜“天机”状态,技能伤害增加1.5
#-----------------------------------------------------
if user.state?(66)
self.damage = power * rate / 100 * 1.5
#伤害为整数
self.damage = Integer(self.damage)
end
#-----------------------------------------------------
# ● 修斯兰特“破竹”天赋,全员技能伤害增加1.2
#-----------------------------------------------------
if user.state?(72)
self.damage = power * rate / 100 * 1.2
#伤害为整数
self.damage = Integer(self.damage)
end
#-------------------------------------------------------------
# ● 皮尔斯“靠山”天赋,受到物理伤害减半。
#-------------------------------------------------------------
if self.name == "皮尔斯"
self.damage = power * rate / 100 / 2
#伤害为整数
self.damage = Integer(self.damage)
end
#-------------------------------------------------------------
# ● 阿加西“水神”开启,敌26号状态时受到1、17号属性伤害1.3倍。
#-------------------------------------------------------------
if self.states.include?(26) and element_set = 1
self.damage = power * rate / 100 * 1.3
#伤害为整数
self.damage = Integer(self.damage)
end
if self.states.include?(26) and element_set = 17
self.damage = power * rate / 100 * 1.3
#伤害为整数
self.damage = Integer(self.damage)
end
#----------------------------------------------------------------------
# ● 泰勒“不屈”状态,呈阶梯状增加减伤
#----------------------------------------------------------------------
if self.name == "泰勒" and self.hp <= self.maxhp * 0.3
self.damage = power * rate / 100 * 0.45
#伤害为整数
self.damage = Integer(self.damage)
end
if self.name == "泰勒" and self.hp <= self.maxhp * 0.2
self.damage = power * rate / 100 * 0.30
#伤害为整数
self.damage = Integer(self.damage)
end
if self.name == "泰勒" and self.hp <= self.maxhp * 0.1
self.damage = power * rate / 100 * 0.15
#伤害为整数
self.damage = Integer(self.damage)
end
#-------------------------------------------------------------
# 属性修正
self.damage *= elements_correct(skill.element_set)
self.damage /= 100
# 伤害符号正确的情况下
if self.damage > 0
#----------------------------------------------------------------------
# ● 技能疾风千裂破 可以会心一击
#----------------------------------------------------------------------
if skill.id == 4 or skill.id == 6 and
rand(100) < 10 * user.dex / self.dex + 25
# 会心一击伤害
self.damage *= 1.5
self.damage = Integer(self.damage)
self.critical = true
end
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if skill.variance > 0 and self.damage.abs > 0
amp = [self.damage.abs * skill.variance / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
#eva = 8 * self.agi / user.dex + self.eva
#hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
#hit = self.cant_evade? ? 100 : hit
#hit_result = (rand(100) < hit)
hit_result = true
# 不确定的特技的情况下设置为有效标志
effective |= hit < 100
end
# 命中的情况下
if hit_result == true
# 威力 0 以外的物理攻击的情况下
if skill.power != 0 and skill.atk_f > 0
# 状态冲击解除
remove_states_shock
# 设置有效标志
effective = true
end
# HP 的伤害减法运算
last_hp = self.hp
self.hp -= self.damage
effective |= self.hp != last_hp
#--------------------------------------------
# ● 伊布斯 烈波斩 回血
#--------------------------------------------
if skill.id == 7 #烈波斩ID:7
amp = (self.damage / 2).to_i
user.hp += amp
user.damage = -amp
end
#--------------------------------------------
# 状态变化
@state_changed = false
#--------------------------------------------
# ● 使用技能后获得增益状态
#--------------------------------------------
# 使用水神特技后获得水神状态
user.add_state(75) if skill.id == 31
# 使用迂回打击特技后获得迂回状态
user.add_state(76) if skill.id == 24
# 使用英勇打击特技后获得英勇状态
user.add_state(77) if skill.id == 26
#--------------------------------------------
effective |= states_plus(skill.plus_state_set)
effective |= states_minus(skill.minus_state_set)
# 威力为 0 的场合
if skill.power == 0
# 伤害设置为空的字串
self.damage = ""
# 状态没有变化的情况下
unless @state_changed
# 伤害设置为 "Miss"
self.damage = "MISS"
end
end
# Miss 的情况下
else
# 伤害设置为 "Miss"
self.damage = "MISS"
end
# 不在战斗中的情况下
unless $game_temp.in_battle
# 伤害设置为 nil
self.damage = nil
end
# 过程结束
return effective
end
作者:
939034448
时间:
2022-10-20 18:07
没看懂楼主的需求,你这个武器伤害是什么,正常伤害应该是啥样,你的脚本里装备对伤害的增幅好像都是倍数关系,没有看到有固定伤害,而且每次符合条件都将self.damage重新赋值如果有重叠的情况会只保留靠后的情况,如果想将伤害转化为整数,在伤害生效之前加一次就行了,没必要每次都加
作者:
letppigogo
时间:
2022-10-21 09:52
本帖最后由 letppigogo 于 2022-10-21 09:54 编辑
939034448 发表于 2022-10-20 18:07
没看懂楼主的需求,你这个武器伤害是什么,正常伤害应该是啥样,你的脚本里装备对伤害的增幅好像都是倍数关 ...
是这样的,异常的技能都是攻击力设置大于0的技能,我的定义是技能伤害会随着角色攻击力的提升而提高。举个例子,装备了低攻击力的武器,例如10点攻击力的武器时,使用技能第一次攻击敌人造成300左右的伤害,这应该是正常的。可是第二次攻击开始,造成伤害变成了0,之后的伤害也都是0。如果装备攻击力较高的武器,例如80点攻击力的武器时,使用技能第一次攻击造成600左右的伤害,这也应该是正常的。但是第二次攻击开始,造成伤害变成了900左右。这么大幅度的伤害变动,肯定是由问题的。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1