[关闭]
@wz520 2015-04-02T03:42:38.000000Z 字数 1911 阅读 3047

各作决死时间分析

东方STG


略技术向(

红魔乡

红魔乡的决死时间大概是这样的:

红魔乡所有机体决死时间为6帧(地址:6cb000)
但是每次中弹时不会像永夜抄那样重新设置该值的初始值,就是说上次的剩余决死时间会保留到下一次。
所以2un说每次决死会使决死时间越来越少了。
举个例子:你这次花了2帧按出了决死,那么下一次就只有 6-2=4 帧可以按了。

不过有时候你按出决死后会发现这值没减。
估计是游戏在处理一帧逻辑时是先看你是否按X,然后再减这个值的。
如果你在进入决死后的第1帧里就按了X,那么这个值就不减了。

如果不按X的话,决死过程中会不断减这个值,一直减到0,MISS。
MISS处理完后会恢复成6。
还有每关开始也会初始化为6,所以REP里不保存这个值。

妖妖梦

首先剩余决死时间在 4bfed0

跟红魔乡一样,上一次的剩余决死会保留到下一次。所以理论上和红魔乡一样每次决死会使剩余时间越来越少。
但是比红魔乡人性化的地方在于:在保留前会先把剩余时间 +6 。(代码:440cab)
……嗯?这样不是按得越快决死时间越长吗?这样岂不是可以无限地增加决死时间?
当然不会,在+6后会立即判断是否大于初始决死时间。如果是则修正为初始时间。(代码:440cc2,440ccf)

所以通常情况下无论你怎么决死这个值都不会有什么变化。尤其是咲夜,已经是6了,不可能有变化。
但是如果你用灵梦按得慢一点的话(魔理沙也行,如果你能在决死时间还剩 1 帧(不是第 1 帧)按出的话(手动银哭)),就可以看到这个值会有变化了。

比如说你用灵梦(初始决死时间15)中弹一次,在决死时间还剩 4 帧时按出Bomb的话,那么下一次的决死时间就是 4+6=10 帧。
而且由于不大于初始决死时间 15,所以保留这个 10 到下一次。

再举个例子,如果你用魔理沙(初始决死时间8)中弹一次,同样在决死时间还剩 4 帧时按出Bomb的话,那么下一次的决死时间就是 4+6=10 帧。
但是由于大于初始决死时间 8,所以会修正为 8 作为下一次的真正的决死时间。

永夜抄

注意: 没 Bomb 时无论什么机体决死时间固定为 2(代码:44ae92)。但是由于没 Bomb,这 2 帧内你按 X 也没效果,所以看上去好像是几帧都无所谓,但这个 2 会影响下面的 time值计算

自机中弹时,首先让 决死时间 = BOMB数*6+t
(代码:44ac31, 44ac3c, 44ac48)

其中:
t: 如果TIME值(刻符)大于或等于右边的需求值(字体变黄),则 t=7,否则 t=0

然后,会修正一下决死时间(代码:44ac66)
如果大于15则修正为15。
由于这里的修正,可以推测出,自机携带的BOMB数量大于3个时的决死时间和携带3个(有时是2个)时是一样的。

如果没看明白的话:

接下来,大家都知道SC战时决死时间很长的。
那么在这里判断当前是否处于SC战(代码:44ac7f)

如果是SC战

接下去,大家也知道自机里有灵梦或紫的话决死时间还会更长的。
于是在这里判断自机类型(byte:0x164d0b1)(代码:44acc1)

如果是姐姐组(0)、单灵梦(4)或者单紫(5)

注意这里的值没有任何修正,可以超过15或30

接下去从 44ad1c 开始的代码,CALL了一个啥都不做的空函数。
2un给这个函数传了个字符串 "preDeadCount %d",和刚才的计算结果。
根据参数来看,应该是2un在发布前用来DEBUG的(其实很多地方都CALL了这个空函数)
preDeadCount……看来2un在程序里管“决死时间”叫这个。
嘛,这不是重点,重点在于这个CALL已经告诉你,决死时间的计算到此为止了。

time值计算

之后就是只要你没按X,每一帧决死时间都减1,同时TIME值减15,一直减到决死时间为0,然后进入MISS处理,这时TIME值会再减少10%。

好像就是这样了。

总之决死时间受BOMB数、TIME值、是否是SC战以及自机类型的影响。

其他作品

据说固定为 8 帧。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注