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.