A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Unit Name | First Attack | Ctd Attck | GndAttkInit | GndAttkRpt | Breaks | Min Stop | Stop Frames | Notes | Legend | ||||||||||||
2 | Terran SCV | 2 | 2 | 3 | 3 | 0 | 2 | First Attack | Attack animation frame duration of first attack from idle | |||||||||||||
3 | Terran Marine | 8 | 6 | 9 | 7 | 0 | 8 | Ctd Attack | Attack animation frame duration of each attack after first if auto-attacking | |||||||||||||
4 | Terran Firebat | 8 | 8 | 10 | 10 | 0 | 8 | Breaks | If 0, isAttackFrame() always true when attacking. Can't determine First/Ctd | |||||||||||||
5 | Terran Ghost | 4 | 2 | 4 | 2 | 0 | 3 | Min Stop | Issuing stop() command before this frame will not deal damage ie: dragoon closes | |||||||||||||
6 | Terran Vulture | 1 | 1 | 0 | 0 | 2 | Stop Frames | Attack frame duration if stop command issued at 'min stop' | ||||||||||||||
7 | Terran Goliath Air | 1 | 1 | 0 | 1 | Notes | Additional notes if behaviour is strange | |||||||||||||||
8 | Terran Goliath Ground | 1 | 1 | 0 | 1 | Min Stop = 0 means issue stop() on first frame where isAttackFrame() = true | ||||||||||||||||
9 | Terran Siege Tank | 1 | 1 | 0 | 1 | |||||||||||||||||
10 | Terran Siege Tank SM | 1 | 1 | 0 | 1 | Formula for determining frames: | ||||||||||||||||
11 | Terran Wraith Air | 0 | 0 | 2 | StartFrame = First frame where isAttackFrame() = true | |||||||||||||||||
12 | Terran Wraith Ground | 1 | 1 | 0 | 0 | 2 | EndFrame = First frame where isAttackFrame() turns false | |||||||||||||||
13 | Terran Battlecruiser Air | 0 | 0 | 2 | Frame Duration = StartFrame - EndFrame; | |||||||||||||||||
14 | Terran Battlecruiser Ground | 1 | 1 | 0 | 0 | 2 | ||||||||||||||||
15 | Terran Valkyrie | 1 | 1 | 0 | 0 | 40 | Code Review: http://pastebin.com/4b8cisMK | |||||||||||||||
16 | Protoss Probe | 1 | 1 | 0 | 0 | 2 | CancelFrame initial value is +infinity, manually changed to determine Min Stop | |||||||||||||||
17 | Protoss Zealot | 8 | 7 | 8 | 7 | 0 | 7 | |||||||||||||||
18 | Protoss Dragoon | 9 | 3 | 9 | 3 | 5 | 7 | Frames = X+2, where X = Stop | ||||||||||||||
19 | Protoss Dark Templar | 9 | 9 | 10 | 10 | 0 | 9 | Note: "Stop Frames" doesn't necessarily mean you can move right away | ||||||||||||||
20 | Protoss Archon | 18 | 18 | 0 | 0 | 15 | It just means that the attack animation stops after that many frames. | |||||||||||||||
21 | Protoss Reaver | 1 | 1 | 2 | 2 | 0 | 1 | Scarab Blows Up If stop() on 0! | Will add "move after" frame data after testing | |||||||||||||
22 | Protoss Scout Air | 0 | 0 | 2 | ||||||||||||||||||
23 | Protoss Scout Ground | 5 | 5 | 0 | 0 | 2 | Dragoon, Devourer only units that can have damage halted by stop() too early | |||||||||||||||
24 | Protoss Corsair | 8 | 8 | 9 | 9 | 0 | 8 | |||||||||||||||
25 | Protoss Arbiter | 5 | 5 | 5 | 5 | 0 | 4 | Note: This data does not include any 'attack lag', if it happens | ||||||||||||||
26 | Protoss Carrier | Meaning any extra frames between when attack() issued and isAttackFrame()=true | ||||||||||||||||||||
27 | Zerg Drone | 1 | 1 | 0 | 0 | 2 | ||||||||||||||||
28 | Zerg Zergling | 5 | 5 | 5 | 5 | 0 | 4 | |||||||||||||||
29 | Zerg Hydralisk | 3 | 2 | 7 | 3 | 0 | 3 | 3,2,3,2,3,2 - alternates | ATTACK ANIMATION FRAMES ARE NOT UNIT ATTACK COOLDOWNS! | |||||||||||||
30 | Zerg Lurker | 2 | 2 | 0 | 0 | 2 | ||||||||||||||||
31 | Zerg Ultralisk | 15 | 15 | 15 | 15 | 0 | 14 | Ctd Atk Varies Anim (1,13 repeat) | Why is this important? | |||||||||||||
32 | Zerg Mutalisk | 1 | 1 | 0 | 0 | 2 | It's probably optimal to issue stop() to any attacking unit in BWAPI at frame Min Stop | |||||||||||||||
33 | Zerg Devourer | 10 | 10 | 0 | 7 | 9 | Iff Stop Frames <= Ctd Attack. Or if stop frames < first attack (if kiting) | |||||||||||||||
34 | ||||||||||||||||||||||
35 | Issuing stop before isAttackFrame() = true is not tested here. | |||||||||||||||||||||
36 | For example, a marine facing away will turn before firing, stop() while turning means it won't shoot | |||||||||||||||||||||
37 | ||||||||||||||||||||||
38 | dave.churchill@gmail.com | |||||||||||||||||||||
39 | Please give feedback or test requests, want to build this accurately and extensively | |||||||||||||||||||||
40 | ||||||||||||||||||||||
41 | ||||||||||||||||||||||
42 | Marine | 9 | 7 | |||||||||||||||||||
43 | Ghost | 4 | 2 | |||||||||||||||||||
44 | Vulture | 1 | 1 | |||||||||||||||||||
45 | Goliath Turret | 5 | 5 | |||||||||||||||||||
46 | Siege Tank (Tank) Turret | 3 | 3 | |||||||||||||||||||
47 | SCV | 3 | 3 | |||||||||||||||||||
48 | Wraith | 1 | 1 | |||||||||||||||||||
49 | Battlecruiser | 1 | 1 | |||||||||||||||||||
50 | Firebat | 10 | 10 | |||||||||||||||||||
51 | Zergling | 5 | 5 | |||||||||||||||||||
52 | Hydralisk | 7 | 3 | |||||||||||||||||||
53 | Ultralisk | 15 | 15 | |||||||||||||||||||
54 | Drone | 1 | 1 | |||||||||||||||||||
55 | Mutalisk | 1 | 1 | |||||||||||||||||||
56 | Guardian | 0 | 0 | |||||||||||||||||||
57 | Queen | 5 | 5 | |||||||||||||||||||
58 | Defiler | 0 | 0 | |||||||||||||||||||
59 | Valkyrie | 1 | 1 | |||||||||||||||||||
60 | Corsair | 9 | 9 | |||||||||||||||||||
61 | Dark Templar (Unit) | 10 | 10 | |||||||||||||||||||
62 | Devourer | 10 | 10 | |||||||||||||||||||
63 | Dark Archon Energy | 14 | 14 | |||||||||||||||||||
64 | Probe | 1 | 1 | |||||||||||||||||||
65 | Zealot | 8 | 7 | |||||||||||||||||||
66 | Dragoon | 9 | 3 | |||||||||||||||||||
67 | High Templar | 5 | 5 | |||||||||||||||||||
68 | Archon Energy | 18 | 18 | |||||||||||||||||||
69 | Scout | 5 | 5 | |||||||||||||||||||
70 | Arbiter | 5 | 5 | |||||||||||||||||||
71 | Interceptor | 2 | 2 | |||||||||||||||||||
72 | Reaver | 2 | 2 | |||||||||||||||||||
73 | Lurker | 2 | 2 | |||||||||||||||||||
74 | Missile Turret (Base) | 125 | 125 | |||||||||||||||||||
75 | Sunken Colony | 25 | 25 | |||||||||||||||||||
76 | Photon Cannon | 7 | 1 | |||||||||||||||||||
77 | ||||||||||||||||||||||
78 | ||||||||||||||||||||||
79 | ||||||||||||||||||||||
80 | ||||||||||||||||||||||
81 | ||||||||||||||||||||||
82 | ||||||||||||||||||||||
83 | ||||||||||||||||||||||
84 | ||||||||||||||||||||||
85 | ||||||||||||||||||||||
86 | ||||||||||||||||||||||
87 | ||||||||||||||||||||||
88 | ||||||||||||||||||||||
89 | ||||||||||||||||||||||
90 | ||||||||||||||||||||||
91 | ||||||||||||||||||||||
92 | ||||||||||||||||||||||
93 | ||||||||||||||||||||||
94 | ||||||||||||||||||||||
95 | ||||||||||||||||||||||
96 | ||||||||||||||||||||||
97 | ||||||||||||||||||||||
98 | ||||||||||||||||||||||
99 | ||||||||||||||||||||||
100 |