lol wad
In this thread, I will explain why, my friends.
I do not claim that this is very useful or groundbreaking. The aim is to increase understanding of this phenomenon so that one day it might be of use to someone.
I want to emphasize that the trick doesn't work in most circumstances. Please do not think you can stop Terran pushes with this! Also, you CANNOT ATTACK OTHER NEXUSES OR HATCHERIES OR COMMAND CENTERS OR FAR FAR AWAY WORKERS with this method! It works under very specific circumstances.
Some background
Most Starcraft units have pre-attack animation sequences that must be played before the actual attack occurs. For the Marine, it is "holding up the gun". For the Hydralisk, it is "opening the mouth".
Hydralisk pre-attack sequence
For most units, there is only one pre-attack sequence. All subsequent attacks do not require the unit to go through the sequence again. For the Marine, once it holds up its weapon, it does not put it down again. For the Hydralisk, once it opens its mouth, it doesn't have to open it again.
The exception is when the unit has to change targets. If a unit's attack target changes, it must go through its pre-attack sequence again. This phenomenon is most prevalent for the Photon Cannon, whose tower goes up and down constantly as it acquires new targets.
However, there is one unit that goes through its pre-attack sequence every single time it attacks, regardless of whether it has acquired a new target. That is the Sunken Colony. Moreover, the pre-attack sequence is very long. These two facts are the reasons why the Sunken Colony can have infinite range.
The mechanism
From what I've garnered, the Starcraft unit attack AI is as follows.
1) Acquire target in range.
2) Begin pre-attack sequence.
3) Once pre-attack sequence is finished, attack the target.
It all seems fine. Units attack. Units die.
However, it turns out that this sequence is not so bug-free. Suppose we introduce an interrupt between 2) and 3).
1) Acquire target in range.
2) Begin pre-attack sequence.
2.5) Acquire higher priority target.
3) Once pre-attack sequence is finished, attack the target.
In this case, there is no check for whether the higher priority target is in range! So at step 3, the unit attacks the higher priority target, regardless of how far away it is.
How do we create this situation? Easy. By having another enemy target interrupt and accomplish step 2.5.
The interrupt
Please recall the last time you were attack-moving into the enemy. You might have encountered a building. You started hacking away at the building and shifted your attention back to your base to macro. You come back and notice that your units are now attacking other units. What happened?
Basically, your units were attacking a building. Then enemy units came by and started attacking you. The Starcraft unit attack AI is smart enough to recognize that the unit is getting killed, so the unit changes target.
Example
Have you ever noticed a Sunken Colony outrange a cannon? Why does it have longer range? Hint: It's not because it has longer range.
The best use of this information, in my opinion, is to stop a cannon rush. You can build a Sunken Colony outside the range of a cannon and still be able to kill it.
Zerg: omg
Protoss: lol i got this game
Zerg: omgggggg TT doesn't reach gahhhhh
Zerg: lol wad?
Protoss: wow you hacker i'm reporting this
The Sunken Colony is in range of the left Pylon but not the Cannon. Thus, the Cannon cannot hit the Sunken Colony either.
The Sunken Colony does 1) Acquire target in range. The target is the Pylon.
Then it does 2) Begin pre-attack sequence.
But just then, the Cannon attacks the Hatchery and the Sunken Colony does 2.5) Acquire higher priority target. The higher priority target is the Cannon.
The Sunken Colony finally does 3) Once pre-attack sequence is finished, attack the target. Because there was no range check, the Sunken ends up attacking the target, the Photon Cannon, even though it's outside range.
Here is a replay of the example in action! Watching the replay is the best way to get an idea of what's going on.
======================================================
>>> Replay <<<
======================================================
YouTube link of replay (thanks to Kentor):
Requirements
Let's say you want to attack TARGET without getting hit.
Requirement 1: Your Sunken Colony has to be in range of some other enemy unit so that "1) Acquire target in range" is activated. Non-combat units include all non-attacking buildings, medics, etc.
Requirement 2: TARGET must be attacking something close to your Sunken Colony so that "2.5) Acquire higher priority target" is activated. In fact, the close unit can actually be your Sunken Colony (although it's not recommended). From my tests, the Sunken has to be adjacent to that unit. Otherwise, the interrupt is ignored because the Sunken is too far.
If these requirements are met, you don't have to do a thing. The buggy Starcraft unit attack AI will take care of the rest.
Now, your Sunken won't always attack TARGET. That only happens when TARGET interrupts the Sunken's attack AI sequence. But because the Sunken's pre-attack animation sequence is so long, it is pretty likely. Also, you can do Sunken micro by stopping your Sunken and making it attack only when the cannon hits your hatchery during your pre-attack sequence. It's kinda hard though cuz Sunkens don't really hold like Lurkers hold even if you tell it to.
On July 03 2009 06:07 arcology wrote:
This could use some clarifications, we did some testing on this a few years ago in my channel (which I retested just now)
There are only two priorities, combat units and non combat units (medics, buildings etc).
This does not work with a marine (or other combat unit in range) that isn't attacking the sunken, as you claimed.
At least one non combat unit needs to be in range, and no combat units in range (otherwise they will be acquired), and a combat unit attacking the sunken or something adjacent to it from outside its range. The sunken will strike it if the unit attacks during the pre-attack part you described.
This could use some clarifications, we did some testing on this a few years ago in my channel (which I retested just now)
There are only two priorities, combat units and non combat units (medics, buildings etc).
This does not work with a marine (or other combat unit in range) that isn't attacking the sunken, as you claimed.
At least one non combat unit needs to be in range, and no combat units in range (otherwise they will be acquired), and a combat unit attacking the sunken or something adjacent to it from outside its range. The sunken will strike it if the unit attacks during the pre-attack part you described.
Other uses
I have seen Sunken Colonies hit Siege Tanks out of range with this method. Usually though, you'd have to be lucky to be in such a situation. You'd need some unit in range of the Sunken (non-combat unit). You also need the Siege Tank attacking something close to the Sunken (Hatchery, drone, the Sunken itself, etc.).
lol wadddddddddddd
Thanks to patrick321:
huh
Conclusion
This phenomenon is not limited to the Sunken Colony. Any Starcraft unit can have infinite range (possibly except the Lurker and Firebat), because of the existence of the interrupt without range checking. The only reason why the Sunken Colony is special is that it fires its pre-attack sequence every single time it attacks and that the sequence is quite long. The pre-attack sequence is the window in which the interrupt must occur.
This theory also explains the well-known "Zealot killing two marines in one attack" from a long time ago. Basically, the Zealot has a pre-attack sequence before each of its "blades", which are one frame long. What happened was that the first Zealot blade killed the first marine, and during the pre-attack sequence for the second blade, the second marine attacked it, causing the Zealot to change target without checking range, and thereby killing the second marine. I believe that the fact that the first marine was a combat unit doesn't matter because dead unit = non-combat unit.