Attack speed is how many times a second the sheet says you swing. A skill with the attack-speed flag divides its wind-up, recovery and table cooldown by that number. Percent bonuses multiply the whole stat, so the first points cut more wait than the same amount added later.
数字来自 DS_B.0.4.23。
一览
直接回答
How is attack speed calculated?
攻击速度 starts at 0.4. Each point of 敏捷 adds 0.01. Inscriptions, potions and other effects then multiply the whole amount by (1 + their percent / 100).
What does a higher attack speed change?
For a skill whose attack-speed flag is on, wind-up, recovery and table cooldown are each divided by 攻击速度. A basic swing whose table delays add to 1 s then waits 1 / attack speed seconds.
Is this the same as cooldown reduction?
No. Most skills divide table cooldown by (1 + cooldown reduction / 100). Only skills with the attack-speed flag divide by 攻击速度 instead. Global cooldown never reads attack speed.
Basic swing
A basic attack has no table cooldown. The wait is its start delay plus its end delay, after the attack-speed divide. Rows group every basic attack that shares the same table total.
Example: at default Agility with +20% attack speed, a 1 s table swing waits 1.667 s.
| Table wind-up + recovery | No bonus | +4% | +8% | +10% | +15% | +20% | +30% | +35% | +50% | Basic attacks |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 s | 2 s | 1.923 s | 1.852 s | 1.818 s | 1.739 s | 1.667 s | 1.538 s | 1.481 s | 1.333 s | |
| 1.5 s | 3 s | 2.885 s | 2.778 s | 2.727 s | 2.609 s | 2.5 s | 2.308 s | 2.222 s | 2 s | |
| 0.4 s | 0.8 s | 0.7692 s | 0.7407 s | 0.7273 s | 0.6957 s | 0.6667 s | 0.6154 s | 0.5926 s | 0.5333 s | |
| 0.6 s | 1.2 s | 1.154 s | 1.111 s | 1.091 s | 1.043 s | 1 s | 0.9231 s | 0.8889 s | 0.8 s | |
| 1.2 s | 2.4 s | 2.308 s | 2.222 s | 2.182 s | 2.087 s | 2 s | 1.846 s | 1.778 s | 1.6 s |
收益递减
The percent is not one-for-one on the clock. The first points of attack speed cut more wait than the same amount added later.
The graph is leftover wait, as a share of the swing with no percent bonus. With none, you wait the full time. At 100% attack speed you wait half.
On a 1 s table swing at default Agility, the first +20% saves 0.3333 s. The next +20% only saves 0.2381 s.
Agility is slow on this curve: each point is +0.01 /s before percents. Inscriptions jump +4%, +8%, +10%, +15%, +20%, +30%, +35%, +50% in one go.
Agility alone, no percent bonus, on a 1 s table swing. Default Agility is 10.
| 敏捷 | 攻击速度 | Wait on a 1 s table swing | Saved vs default Agility |
|---|---|---|---|
| 0 | 0.4 /s | 2.5 s | -0.5 s |
| 10 | 0.5 /s | 2 s | 0 s |
| 20 | 0.6 /s | 1.667 s | 0.3333 s |
| 30 | 0.7 /s | 1.429 s | 0.5714 s |
| 40 | 0.8 /s | 1.25 s | 0.75 s |
| 50 | 0.9 /s | 1.111 s | 0.8889 s |
What raises it
Every effect that writes attack speed is in the table. 攻击速度 itself is built from the base and 敏捷 first, then any extra percent modifiers.
On top of those effects, each point of 敏捷 adds +0.01 /s before percents.
| 来源 | 攻击速度 | 怎么拿到 |
|---|---|---|
| +30% | 铭文 | |
| +20% | 铭文 | |
| +10% | 铭文 | |
| +10% | 背景 | |
| +20% | 特质 | |
| -30% | 装备 | |
| -30% | 装备 | |
| -30% | 装备 | |
| -30% | 装备 | |
| -30% | 装备 | |
| -30% | 装备 | |
| -30% | 装备 | |
| +50% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +35% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +30% | 来源:疾速冲刺, 穿刺突, 岩石崛起。 | |
| +30% | 来源:攻击速度药水。 | |
| +30% | 来源:鼠群。 | |
| +20% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +20% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +20% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +15% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +10% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 | |
| +8% | 来源:势不可挡。 | |
| +4% | 数据中有定义,但目前没有任何可获得的物品、特质或技能授予它。 |
幕后代码怎么做
- 攻击速度 is the status-table default plus Agility times 0.01, then multiplied by (1 + AttackSpeedPerModifier / 100). The percent apply is the same path physical attack power uses.
- A skill with the attack-speed flag passes that flag into the delay helper for start delay and end delay. The helper divides the table delay by attack speed.
- The same flag makes skill cooldown divide by attack speed instead of by (1 + cooldown reduction / 100). A table cooldown of 0 returns 0 immediately.
- If attack speed is not greater than 0, the delay helper and the cooldown calculator both fall back to dividing by 1.
- Global cooldown does not read attack speed.