FF6的极限伤害、数据溢出

2003-09-04 01:35 | Meltina

还是来详细说明一下吧

今天收到SAVE后,就用小薇儿的记录进行测试
发现果然只有TINA的ULTIMA打很少伤害
以下是用小薇儿的记录对杰夫卡第一层的三个部分进行了伤害测试:

使用人物魔法造成伤害(BOSS头部/右手/左手)
LV99 CELES(魔力137)メテオ9999、9999、9999
LV99 CELES(魔力137)アルテマ9999、9999、9999
LV99 TINA (魔力143)メテオ9999、9999、9999
LV99 TINA (魔力143)アルテマ993、977、1006
LV99 TINA (魔力143)ファイガ9999、9999、9999

显然是十分不正常,绝对不是ULTIMA本身伤害问题,因为CELES用起来也是9999
而且ULTIMA的威力是流星四倍,怎么想也只有一种可能:数值太大造成溢出
跟666讨论了之后,决定从计算伤害开始找答案

参考T.Senshi的文章,FF6的魔法伤害是这样计算的:

伤害=魔法效果值×4+(等级×魔力×魔法效果值/32);然后在伤害值=(伤害值*[224..255]/256)+1的范围作随机修正。另外还有魔法防御修正,不过这两个魔法都是防御无视,就不用理了。算式中的“魔法效果值”是既定值,即魔法本身含有的,由于我们一开始并不知道ULTIMA的效果是多少,唯有以我LV6那几张图的伤害作为标准推算了:【LV6的TINA,魔力46】

从FAQS上查到メテオ的效果值=36,以6级的tina使用メテオ造成了450左右伤害来说,36×4+(6×46×36/32)=454.5 ,似乎没有大问题(÷32这一步究竟在什么地方取整不敢确定,所以只能先带着小数点了)。那么从这一步反推,アルテマ造成1000左右的伤害,可以算出效果值大约是160。现在从女皇哪里证实应该是150才对-_- 我们后来用160算来算去头都爆了。

得知了アルテマ的效果值是150,就可以推算出99级的角色使用アルテマ的时候每增加1点魔力,伤害会增加(99×1×150/32)=464.0625 (因为不清楚所以依然不取整了,反正都是大概数)

马上进行实践,裸体tina的魔力是128,通过调配不同装备把魔力从137~145都试验了一下,对象是瓦砾之塔那种蜘蛛机器人,每次都是单体。因为是防御力无视,所以对何人也是一样的。

以下是LV99TINA在不同魔力状态下使用ULTIMA对单个敌人造成的伤害:

魔力伤害(记下3~4个不同值)
145:2142、2179、2298
144:1794、1688、1808、1705
143:1339、1297、1308
142:886、923、844、938
141:485、467、452、483
140:31、31、29、32、30
139:9999、9999……
137:9999……
128:9999……

不可思议的,魔力在139以下的时候,打出来都是铁定9999,一但超过140,反而会变得很小很小

(-_-这里一开始我忘了装备那些耳环影响了魔法效果,搞到142因为多了一个耳环而和145的时候数值差不多,到了141的时候突然又变得很低,还跟下帝惊讶了半天才想到那个耳环没有拆下来)

不难发现:
1808-1339=469
1339-923=416
923-485=438

基本上每增加一点的伤害还是比较接近我们的计算值的,证明了虽然是数据溢出,但还在按照着规则来计算伤害。

当魔力停留在140的时候造成的伤害是最低的,只有32左右,到了139马上成了9999,这当然就是临界点。根据随机修正的算法:伤害值=(伤害值*[224..255]/256)+1,所以伤害值越小,波动幅度越小,想看看魔力140时一时9999一时又打几十点是没有机会了。

当伤害超过65535的时候(这个例子的情况魔力140,150×4+×140×99×150/32=600+64968=65568),溢出65568-65536=32,所以魔力140的时候创世魔法只造成32来点伤害,之后的效果类似。



P.S 从这里我们也可以看出魔力太高还是没有什么用的。即使是LV99的角色,魔力大概到达一个数值就可以肯定打出9999了。所以也知道了原来升到128是很奢侈的行为……(算了一下,为了照顾打全体时候保证每人都有9999,那么ULTIMA的伤害应该超越19998,大概40多点就够了。不考虑shell的情况下。ULTIMA的威力是很强的,像莉姆天生拥有44点的魔力,不用加任何点数到LV99也能打出9999了……)