| Louis-J |
|
|
|
|
|
等级:混沌避难所 |
积分:4100 |
金币:6590 |
发贴:2951 |
信用:0 |
注册时间:2004-03-16 |
IP:222.171.*.* | |
|
第(0)楼,发贴时间:04-08-20 06:07 |
| Bar WW 攻击速度的计算
Barbarian Whirlwind 攻击速度的计算
相关链接: http://www.theamazonbasin.com/d2/forums/index.php?act=ST&f=54&t=25873 http://phrozenkeep.planetdiablo.gamespy.com/forum/viewtopic.php?t=12561 http://www.lurkerlounge.com/forums/index.php?act=ST&f=8&t=834
一. 仅使用一把武器的情况
即除了两手分别持武器(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. 依次类推.
三.
ASN使用混沌(Chaos)时的计算 计算方法同上。ASN持双爪或者单爪时,FramePerDirection=11,AnimationSpeed=208.
[
本贴由 悄然花开 在 12-14 00:39 编辑过. ]
| |