Содержание
Введение
Для тех кто не знал, в Diablo 2 секунда состоит из 25 фреймов (или кадров). Таким образом, изображение на экране меняется каждые 0.04 секунды. Поэтому любая анимация в игре происходит за целое количество фреймов, что делает невозможным непрерывное ускорение анимаций. В силу этого в игре существуют так называемые брейкпоинты (breakpoints), определяющие необходимое значение параметров, ускорящих анимацию, для уменьшения ее длительности на 1 фрейм.
Используемые обозначения:
- HS – Holy Shield (Paladin skill)
- L, CL, Inf – Lightning, Chain Lightning, Inferno (Sorceress skills)
- Vampire – форма вампира, бонус полного набора Trang-Oul
- Fetish – форма stygian doll, результат использования заклинания Delirium с Runeword «Delirium»
- xbw – Crossbow
- 2hs – Two-handed swords
- Stf – Two-handed staves, hammers, axes, polearms
- 2ht – Tho-handed thrusting weapons (spears)
- 1ht – One-handed thrusting weapons (knives, javelins)
- 1hs – One-handed swinging weapons (все, кроме knives, javelins)
- HtT – hand-to-hand, unarmed - без оружия
- fpa – frames per animation (количество фреймов, затрачиваемое на анимацию)
- AF – ActionFrame (или ActionFlag) – фрейм, в который происходит сама анимация
- [] – округление вниз ([4.5] = 4)
- {} – округление вверх ({4.5} = 5)
Также в таблицах красным цветом выделены значения, недостижимые в немодифицированной игре.
Faster Cast Rate
На самом деле, анимацию в Diablo II можно разделить на 2 отрезка – начальную и конечную. Начальная - та, что до события (в данном случае - момент каста). Конечная - та, что после.
Допустим, у нас есть Sorceress с параметром FCR равным 195%. Так как брейкпоинт 194%, то посмотрев в известные всем таблицы, узнаем, что скорость анимации для Lightning – 11 фреймов. Что мы не узнаем оттуда, дак это то, что в действительности AF будет равен 5 фреймам. Что означает, что каст молнии будет выглядеть так: 5 фреймов на начальную анимацию, на 5-ом фрейме появляется сама молния, и 6 фреймов на конечную анимацию. Однако, AF часто бывают не привязаны к брейкпоинтам для полной анимации. При FCR = 194% Lightning – 11-и фреймовая анимация с AF = 5, а при FCR = 200% – 11-фреймовая анимация, с AF = 4. Вся анимация занимает столько же времени, однако вы кастуете спелл на 1 фрейм быстрее.
Суть в том, что прервать спелл можно, если прерывание происходит до AF. Если пытаться прервать Lightning на 7-м фрейме, то Lightning все равно скастуется. Также, если вы телепортируетесь до прерывания, ничего не изменится, вы уже переместились.
Пара примеров.
Все знают, что у классов Barbarian и Sorceress одинаковые брейкпоинты. Но это не совсем так (см. таблицу ниже). Оказывается у Sorceress AF ниже, чем у Barbarian, поэтому при телепортировании она (при одинаковом количестве FCR) окажется в другой точке раньше, чем Barbarian.
Пусть у нас есть Barbarian с 63% fcr (9fpa, AF = 7) и Sorceress c 37% fcr (10fpa, AF = 6). Barbarian пытается телепортироваться, Sorceress хочет ему помешать с помощью telekinesis (в данном примере возьмем, что шанс knockback у telekinesis равен 100%). Если Barbarian и Sorceress начнут кастовать в одно и то же время, то Barbarian не сможет телепортироваться, так как прерывание произойдет до AF. Однако, если бы у него было 86% fcr (9fpa, AF = 6), то он бы успешно телепортировался.
Другой пример: есть сферический персонаж с mind blast (11fpa, AF=7), и такой же сферический персонаж с teleport (10 fpa, AF=6) и анимацией fhr, выполняющейся за 4 фрейма. Пусть первый из них спамит mind blast на второго. Mind blast будет вводить его в анимацию fhr на 4 фрейма. Таким образом, у второго будет 7 фреймов, чтобы телепортироваться, что достаточно, так как телепорт выполнится за 6 фреймов.
Amazon
Assassin
Barbarian
Druid
Necromancer
Paladin
Sorceress
Iron Wolf
Bow
HtH
xbw / 2hs
stf / ht
Werebear
Werewolf
Human
Human
Vampire
FoH
Other
L+CL+Inf
Other
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
fcr
fpaaf
0
1910
0
1911
0
1912
0
1913
0
169
0
139
0
169
0
168
0
1810
0
158
0
235
0
349
0
159
0
197
0
137
0
177
7
1810
7
1811
7
1812
7
1813
8
159
9
129
7
158
6
158
4
1710
9
148
6
225
15
338
9
149
7
187
9
127
8
167
14
179
13
1810
11
1811
10
1812
15
158
15
128
15
148
10
157
10
1610
18
137
11
215
39
327
15
148
15
177
20
116
15
157
22
169
14
1710
14
1711
14
1712
16
148
20
118
26
137
14
147
11
169
30
127
18
205
86
316
18
138
20
176
37
106
20
156
32
158
22
1610
22
1611
22
1612
27
138
37
108
40
127
26
137
19
159
48
116
24
194
30
128
23
166
63
95
26
146
48
148
29
169
26
1610
23
1611
39
137
39
107
63
116
37
136
30
148
75
106
35
184
39
127
35
156
105
85
39
136
68
137
32
159
32
1510
32
1511
42
127
63
97
99
106
40
126
46
138
125
95
48
174
48
117
52
146
200
74
58
126
99
127
48
149
48
149
42
1510
65
117
86
96
163
95
60
116
63
137
65
164
75
107
63
145
63
125
152
116
56
148
68
139
48
1410
86
116
105
86
95
106
68
127
86
154
86
106
78
135
86
115
68
138
86
138
68
1310
102
106
200
76
157
95
99
117
120
143
125
96
117
125
138
105
99
128
99
128
72
139
174
96
142
116
180
133
194
115
200
104
113
127
152
118
99
129
163
106
200
114
152
117
180
117
133
128
152
118
Faster Hit Recovery
fpa
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
Amazon
0
6
13
20
32
52
86
174
600
Assassin
0
7
15
27
48
86
200
4680
Barbarian
0
7
15
27
48
86
200
4680
Druid (Human, 1hs)
0
3
7
13
19
29
42
63
99
174
456
Druid (Human, other weapons)
0
5
10
16
26
39
56
86
152
377
Necromancer
0
5
10
16
26
39
56
86
152
377
Necromancer (Vampire)
0
2
6
10
16
24
34
48
72
117
208
638
Paladin (2ht, stf)
0
3
7
13
20
32
48
75
120
480
Paladin (other weapons)
0
7
15
27
48
86
200
4680
Sorceress
0
5
9
14
20
30
42
60
86
142
280
1480
Fetish
0
4
7
10
15
20
27
35
48
65
86
129
200
414
4680
Werewolf
0
9
20
42
86
280
Werebear
0
5
10
16
24
37
54
86
152
360
Rogue (Act 1)
0
6
13
20
32
52
86
174
600
Town Guard (Act 2)
0
5
9
14
20
30
42
60
86
142
280
1480
Iron Wolf (Act 3)
0
5
8
13
18
24
32
46
63
86
133
232
600
Barbarian (Act 5)
0
7
15
27
48
86
200
4680
Потеря некоторого количества жизней или стан вводят в анимацию восстановления от удара. Вопрос в том, сколько это – "некоторое количество" (часто можно услышать, что это 1/12 от жизни, что не верно)? Для определния этого, нужно знать, при каких обстоятельствах срабатывается анимация восстановления от удара. Рассмотрим последовательность определения, будет ли выполнена эта анимация:
- Сначала наносится урон.
- Если цель умирает от полученного урона, то анимации не будет.
- Если цель заморожена, то анимации не будет.
- Если наносимый урон - только яд, то анимации не будет.
- Если наносимый урон меньше 1 (1 = 256 бит, все вычисления жизни и урона для повышения точности производятся в битах), то анимации не будет.
- Получаем MaxLife – максимальное количество жизней цели.
- Получаем divisor – коэффициент (обычно он равен 16, но для некоторых missile attack – 8, см ниже)
- Получаем GetHitTriggerNumber = MaxLife / divisor.
- Теперь с полученным уроном производятся некоторые вычисления:
- Если урон меньше, чем GetHitTriggerNumber, то анимации не будет.
- Если урон меньше, чем GetHitTriggerNumber * 2, то анимации не будет с шансом 50%, с шансом 50% будет произведен переход к следующему пункту.
- Если урон меньше, чем GetHitTriggerNumber * 4, то анимация будет с шансом 75%.
- Если урон больше, чем GetHitTriggerNumber * 4, то анимация будет с шансом 100%.
- Если цель не может быть введена в состояние анимации, то анимации не будет (очень вовремя такая проверка :).
Таким образом, для divisor = 16, анимация восстановления от удара 100% сработает при уроне больше, чем 1/4 MaxLife, 75% при уроне от 1/8 MaxLife до 1/4 MaxLife, и 37.5% при уроне 1/16 MaxLife до 1/8 MaxLife.
Missile attacks, для которых divisor = 8:
- Amazon: Magical Arrow, Multiple Shot, Strafe, Guided Arrow, Immolation Arrow (не огонь на земле), Poison Javelin (только javelin), Plague Javelin (только javelin)
- Necromance: Bone Spear
- Assassin: Blade Fury
- Other: thrown knives, thrown axes, thrown javelins, обычная атака стрелами или болтами
- Monster Missiles: Rogues' standard arrows, Quillrats' spikes, Corrupted rogues' default arrows (Blood Raven), Skeletal archers' arrows, toxic and spikey trapped wall missiles in Act2&3 dungeons, Pantherwomen's javelins, Fetishs' blowgun darts, Vipers' bonespears
Faster Block Rate
fpa
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
Amazon (1hs)
0
4
6
11
15
23
29
40
56
80
120
200
480
Amazon (1ht)
0
13
32
86
600
Assassin
0
13
32
86
600
Barbarian
0
9
20
42
86
200
Druid (Human)
0
6
13
20
32
52
86
174
600
Necromancer
0
6
13
20
32
52
86
174
600
Paladin
0
13
32
86
600
Paladin (с HS)
0
86
Sorceress
0
7
15
27
48
86
200
4680
Werewolf
0
7
15
27
48
86
200
4680
Werebear
0
5
10
16
27
40
65
109
223
Werebear + HS
0
8
37
120
В версии 1.09 был возможен blocklock – несколько блокирований подряд, которые полностью лишали персонажа возможности выполнять какие-либо действия. Начиная с версии 1.10 был введен block timer, в течение которого персонаж может выполнять блокирование без анимации. Его длительность составляет 15+[FBR/8] фреймов, отсчитываемых с момента начала последней анимации блокирования.
Формы Vampire и Fetish не имеют анимации блокирования, поэтому вместо нее используется анимация восстановления от удара (Faster Hit Recovery).
Также, некоторые монстры могут блокировать без щита и без анимации блокирования (все Great Mummies, все Oblivion Knigts и все актовые боссы, включая всевозможных клонов). Для этого у них должен быть задан параметр NoShldBlock=1.
Iron Wolves хоть и имеют щит, но не имеют анимации блокирования, и не могут блокировать.
Dodge, Evade, Avoid
Dodge, Evade, Avoid – пассивные навыки класса Amazon. Скорость их анимации может меняться под действием Fanaticism, Holy Freeze, Chill effectivness и Slow Target.
Формула для вычисления скорости анимации:
fpa = {256 * FramesPerDirection / [AnimationSpeed * (100 + Acceleration) / 100] } - 1,
Здесь FramesPerDirection = 9, Animati 256, Acceleration – сумма положительных и отрицательных бонусов.
Посчитаем стандартную скорость анимации:
fpa = {256 * 9 / [256 * (100 + 0) / 100] } - 1 = 8.
Пусть теперь Amazon использует лук с Runeword Faith, который дает ауру Fanaticism 15 уровня. От этой ауры будет бонус к Acceleration +33. Таким образом:
fpa = {256 * 9 / [256 * (100 + 33) / 100] } - 1 = 6.
Как видим, Fanaticism 15 уровня уменьшил длительность анимации на 2 фрейма.
Еpiscop_moo Ломаем стереотипы!
Неплохо, но сферических персонажей следует рассматривать в вакууме.