The reason why Asal isn't always working is because the range hack checks the players position on the server to see if the skill range is greater than the displacement of the characters, using D3DXVec3LengthSq (surprised not a lot of people noticed considered the code is in the client and just needs to be copied to WorldServer).
Anyway, with that said, the problem is how the range displacement is being handled. The fix in the Azure source, similar, handles it be canceling the skill on the worldserver without handling any communication (ie. not doing SNAPSHOTTYPE_CLEAR_USESKILL), thus results in the character being frozen. With that said, it is possible to recreate the proper coordinates and the skill q to the proper location in the client side resulting in actually casting the skill rather cancelling the skill and having the player attempt to auto attack at another range.
Even then, the range hack fixes, none of them really take into consideration of the general position lag that occurs in the game, and the general movements of the players which can easily result in skill and attack failures.
Hope that may clear a few things up.