Project1

标题: 关于脚本中的伤害公式 [打印本页]

作者: bruce181818    时间: 2013-8-31 21:25
标题: 关于脚本中的伤害公式
我自己更改了普攻的计算方式且实际战斗伤害数值确实发生了变化,但是和我的公式理论结果差很多,不晓得为什么。。求帮忙。。是不是不能随便更改公式的
下面是我更改后的物理公式:
atk = Integer( [attacker.atk *(0.6 + ((attacker.str  - self.pdef)/attacker.str))  - rand(self.pdef/5),attacker.atk *0.1].max)
self.damage = rand(attacker.str/5) + atk
# 属性修正
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      @kds_30 = nil
      @kds_32 = nil
# 分散
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
其余物理脚本均涉及状态和技能我实验的攻受双方不涉及这些状态和技能,以下是攻受双方的数值和实验结果:
攻方:atk -134 、str-  114
受方:pdef - 0
结果:伤害数值在70到100之间,更要命的是在攻方普攻pdef为55的敌人时。。伤害数值也在这个范围内。。
然后。。。然后就没有然后了。。菜鸟表示很揪心,,一直不知道为什么。。。-。-我不会说我法术伤害公式也更改了也出现了同样地问题、囧
=。=跪求原因。。是不是还有什么神奇的领域,,,
作者: wbsy8241    时间: 2013-8-31 23:03
本帖最后由 wbsy8241 于 2013-8-31 23:21 编辑

atk = Integer( [attacker.atk *(0.6 + ((attacker.str  - self.pdef)/attacker.str))  - rand(self.pdef/5),attacker.atk *0.1].max)
atk = Integer( [134 *(0.6 + ((114  - 0)/114))  - rand(0/5),134 *0.1].max)
atk = Integer( [134 *(0.6 + 1) - (0~1), 13.4].max)
atk = Integer( [214.4 - (0~1), 13.4].max)
atk = Integer( [214.4~213.4, 13.4].max)
atk = 213~214

self.damage = rand(attacker.str/5) + atk
self.damage = rand(114/5) + 213~214
self.damage = rand(22) + 213~214
self.damage = 0~21 + 213~214
self.damage = 213~235

amp = [self.damage.abs * 15 / 100, 1].max
amp = [213~235 * 15 / 100, 1].max
amp = [31~35, 1].max
amp = 31~35

self.damage += rand(amp+1) + rand(amp+1) - amp
self.damage += rand(31~35+1) + rand(31~35+1) - 31~35
self.damage += 0~35 + 0~35 - 0~34
self.damage += -34~70

self.damage = 213~235 + (-34~70)
self.damage = 179~305

整数间运算得整数

作者: fox7171984    时间: 2013-9-1 12:48
尼玛太复杂~~~~~~~~~~~~
作者: bruce181818    时间: 2013-9-2 14:17
wbsy8241 发表于 2013-8-31 23:03
atk = Integer( [attacker.atk *(0.6 + ((attacker.str  - self.pdef)/attacker.str))  - rand(self.pdef/5 ...

{:2_270:}对呀。。理论上应该是这个数值范围的,。。可是为什么实际伤害却只有70-100啊。。。
作者: bruce181818    时间: 2013-9-2 20:49
fox7171984 发表于 2013-9-1 12:48
尼玛太复杂~~~~~~~~~~~~

=。=神人。。。被你这个一说我就把公式简化了。。0.6 + ((attacker.str  - self.pdef)/attacker.str改为
1.6  - self.pdef/attacker.str。。。然后神奇的发现实际和理论对上了。。。果然太复杂了。。0.0
作者: bruce181818    时间: 2013-9-2 20:50
wbsy8241 发表于 2013-8-31 23:03
atk = Integer( [attacker.atk *(0.6 + ((attacker.str  - self.pdef)/attacker.str))  - rand(self.pdef/5 ...

我把公式简化了一下。。然后发现OK了。。。0.0好不科学。。。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1