Animation lock is an internal timer that player has to wait certain amount of time before they are allowed to use any actions.
The timer is the number of seconds until the animation lock is up, stored as a float. This has an additional flaw due to how the game tracks time: lower framerates will generally result in a longer animation lock time because the timer resolution is significantly lower.
Many GCDs have 0.1s animation lock by default. This timer is paused while casting and resumed after player finishes casting on client side.
oGCDs and instant skills have 0.5s initial animation lock.
Server can also set animation lock in response to actions used from the client (usually from the effect packet). However, it simply discards any previous timer running. Therefore, game does not compensate for player's ping. (i.e. time already spent during initial animation lock)
You can't place ground targeted actions while animation lock is active.
When those three conditions above are combined, it can greatly impact gameplay experience.
Some actions like limit break, foods and duty actions may lock for different amount of time. For example, movement skill locks for 0.8 seconds and items have 2.0 seconds.
Since animation lock from the server overwrites current animation lock to new value, it is this reason why double weaving between GCDs extremely unreliable when player is connected to the data centre across a continent or on a completely different continent.
If the client fail to receive response during initial animation lock, client is allowed to use next action. TODO.
While swiftcast is one of notorious offender, this property is not limited to swiftcast only. For example, red mage's dualcast just works same as hardcasting swiftcast.
TODO: Because how effect packet set animation lock, it is possible to cancel animation lock in many scenario.
TODO: 1. rescue lb3
TODO: cancel animlock by letting GCD overwrites it on high ping environment.
TODO: better plot (image?)[==== slide-casting window =====>] [ ========== normal 0.5s lock window from oGCD ==============> ]^ finished cast on server side ^ finished cast on client side ^ GCD response arrives at this point due to bad ping(This will overwrite 0.5s animlock to 0.1s)
[== 0.5s lock window =>][==== client is allowed to cast GCD again ==============>]^ used oGCD ^ effect packet arrives at this point ^ finished casting on server side(0.6s but too late) (animlock is reset to 0.1s)
While animation lock is named after its general purpose, it doesn't necessarily has to be tied to the animation.