Bar WW 攻击速度的计算
一. 仅使用一把武器的情况
即除了两手分别持武器(Dual Wielding)以外的情况.
1. 计算 delay
游戏首先要计算一个 delay 值, 公式如下:
delay = [FramePerDirection * 256 / [(WIAS - WSM + 100) * AnimationSpeed / 100]]
其中:
FramePerDirection: 角色普通攻击动作A1的动作基础帧数, Bar的数值如下表:
====================
武器类型 A1_Frames
--------------------
单手武器 16
--------------------
双手剑 16
--------------------
双手其它 19
====================
AnimationSpeed: 角色普通攻击A1的动作速度,Bar的对应数值为256.
WIAS: Weapon Increased Speed, 武器上的提速.
WSM: Weapon Speed Modifier, 武器的基础速度.
武器基础速度可查询[防具]和[武器]基础资料一览
[]: 方括号表示向下取整数.
2. 查 Real_Delay
根据 delay 值从下表查出一个对应的 Real_Delay 值.
====================
delay Real_Delay
--------------------
0 - 11 4
12 - 14 6
15 - 17 8
18 - 19 10
20 - 22 12
23 - 25 14
26及以上 16
====================
3. Whirlwind 的动作序列
启动 Whirlwind 时的那一帧记为第 0 帧.
(1) 第 4 帧时, 攻击 Whirlwind 范围内的某个敌人;
(2) 第 8 帧时, 攻击 Whirlwind 范围内的某个敌人;
(3) 此后, 每隔 Real_Delay 个帧数就标记一次 "攻击状态"; 每隔4帧检测一次"攻击状态", 若发现 "攻击状态" 被标记, 则攻击Whirlwind 范围内的某个敌人.
4. Whirlwind 的攻击范围
Whirlwind 的攻击范围是 5 TU. 但究竟能否打到敌人还与武器的攻击范围有关. 若范围内有多个敌人, 将选择其中一个. 具体选法未知, 有可能是按敌人进出攻击范围的顺序排队.
5. Whirlwind 的动作序列帧与 Real_Delay 对照表
表中标记"M"表示此时标记一次"攻击状态", 标记"A"表示攻击敌人. 若 M 与 A 同时出现, 则攻击敌人, 标记为"A".
========================================
Real_Delay 16 14 12 10 8 6 4
----------------------------------------
序列帧
----------------------------------------
4 A A A A A A A
8 A A A A A A A
10 - - - - - - -
12 - - - - - - A
14 - - - - - M -
16 - - - - A A A
18 - - - M - - -
20 - - A A - A A
22 - M - - - - -
24 A A - - A - A
26 - - - - - M -
28 - - - A - A A
30 - - - - - - -
32 - - A - A A A
34 - - - - - - -
36 - A - - - - A
38 - - - M - M -
40 A - - A A A A
42 - - - - - - -
44 - - A - - A A
46 - - - - - - -
48 - - - A A - A
50 - M - - - M -
52 - A - - - A A
54 - - - - - - -
56 A - A - A A A
========================================
可见, 当 Real_Delay 为 4 的整数倍时, 标记"攻击状态"与检测"攻击状态"发生在同一帧. 当 Real_Delay 不是 4 的整数倍时, 标记与检测"攻击状态"将发生分离. 例如 Real_Delay = 6 时, 从第 8 帧起, 下一次标记"攻击状态"发生在第 8 + 6 = 14 帧, 而这个标记要等到第 16 帧游戏检测"攻击状态"时才被检测到, 因此对应的攻击发生在第 16 帧.
二. 两手分别持一把武器(Dual Wielding)
数据与公式和上面完全一样, 只是在动作序列中有以下不同:
(1) 一把武器作为 当前武器, 另一把武器作为 第二武器;
(2) 每次攻击时, 两把武器均会攻击敌人, 如果打击范围内有多个敌人,则两把武器不会攻击同一个敌人;如果打击范围内只有一个敌人,则两把武器都会攻击这个敌人。但第一次攻击(第 4 帧)除外, 第一次攻击时仅 当前武器 攻击敌人;
(3) 每发生一次攻击后, 游戏会切换武器, 当前武器 成为 第二武器, 原先的 第二武器 成为当前武器;
(4) Real_Delay 为 当前武器 的 Real_Delay 值.
切换武器的动作使得实际的动作序列颇为复杂, 尤其是两把武器速度不同时. 下面举例说明:
武器A: Real_Delay = 6, 持于右手;
武器B: Real_Delay = 14, 持于左手;
动作序列如下:
1. 第 0 帧, 开始 Whirlwind. 当前武器为武器A, 第二武器为武器B.
2. 第 4 帧,
2.1 武器A 准备攻击敌人;
2.1.1 若范围内有敌人, 则武器A 攻击敌人, 然后切换武器, 本帧结束.
2.1.2 若范围内无敌人, 本帧结束.
3. 第 8 帧, 此时的 当前武器 要视 2 中的结果而定.
3.1 当前武器 准备攻击敌人;
3.1.1 若范围内有敌人, 则 当前武器 攻击敌人, 然后切换武器;
3.1.2 若范围内无敌人, 本帧结束.
3.2 若 3.1.1 中切换了武器(此时的 当前武器 为 3.1 中的第二武器),
3.2.1 若范围内有其它敌人, 则 当前武器 攻击敌人, 然后切换武器, 本帧结束. (注意, 此时不会攻击 3.1.1 中被攻击的敌人, 不论它是否位于范围之内.)
3.2.2 若范围内无其它敌人, 本帧结束.
4. 第 8 帧结束时, 下次攻击发生在哪一帧?
4.1 若 当前武器 为 武器A, 则下次攻击发生在第 16 帧(见序列帧 与 Real_Delay 对照表.)
4.2 若 当前武器 为 武器B, 则下次攻击发生在第 24 帧.
5. 第 8 帧之后的第一个攻击帧. 此时是第 16 帧还是第 24 帧要视 4 中的结果而定. 攻击的过程与 3 中类似.
5.1 若此时是第 16 帧,
5.1.1 若 当前武器 为 武器A, 则下次攻击发生在第 20 帧(见 序列帧 与 Real_Delay 对照表).
5.1.2 若 当前武器 为 武器B, 则下次攻击发生在第 24 帧.
5.2 若此时是第 24 帧,
5.2.1 若 当前武器 为 武器A, 则下次攻击发生在第 28 帧.
5.2.2 若 当前武器 为 武器B, 则下次攻击发生在第 36 帧.
6. 依次类推.
Bar WW 速度表
Barbarian Whirlwind 技能的攻击速度与武器上的 IAS 关系
Whirlwind 的攻击速度仅与武器上的提速有关.
术语:
WSM: Weapon Speed Modifier, 武器基础速度.
(我个人愿意用 Weapon Base Speed... 不过还是向老外看齐吧)
武器基础速度的资料请看 1.10 [防具]和[武器]基础资料一览
WIAS: Increased Attack Speed on Weapon, 武器上的提速.
------------------------------------------------------------
设 D = WIAS - WSM, 不同情况的攻击速度如下:
单手持武器或者两手共持一把双手剑时:
=============
D值 帧数
-------------
-19 10
-10 8
8 6
34 4
=============
按照常用的经典说法, 就是断点为 10 和 34(当然还有 -15 和 -10)
两手各持一把武器时, 断点同上, 但实际的情况比较复杂. 你可以简单理解为两手轮流计算.
详细的讨论请看Bar WW攻击速度的计算.
两手共持其它双手武器时:
============
D值 帧数
------------
-20 14
-17 12
-5 10
6 8
27 6
59 4
============
按照常用的经典说法, 就是断点为 10, 30 和 60(当然还有-20, -15 和 -5)