Have you tried doing usr.client.eye? For some strange reason I've seen a few problems rise with this in the past. At least when it comes to login related stuff.
This is a bit of a long shot, and usr may not be ideal here, but it's the first thing I could think of because of another issue or two I saw long ago.
Ah, this ones unfortunately beyond my ability to help then, sorry. I'm pretty sure the actual problem causing the runtime is that you're trying to use src or client when a valid src or client hasn't been set yet, but I don't see what would be causing that.
This is just a guess based off other similar runtimes I've come across, though.
Removing src and usr from in front of client? Oh I swear if that is it I will want to throw something. Granted, I didn't consider perspective, but I did almost mention the first part. That just seemed... Odd. Wrong, in a way.
Testing your code in an empty project, it all seems to work correctly. Are you sure some other code isn't interfering with it?
The only potential problem I can see is that you aren't returning the return value of the default action (but it seems to work without it, for me at least):
client New() .=..() // Return the default action's return value mob._Login()
client/New() Reference Entry:
Returns: The newly connected mob, client.mob, or null to disallow the connection.
I would say place some debug output (world.log << "[src.mob.client or src.client]", which can then be viewed by pressing F1) to see where it's getting lost. It should be set as soon as the default client/New() action is finished.
I would also look for any other definitions of client/New() or mob/Login(), and inspect any character loading code.
This is a bit of a long shot, and usr may not be ideal here, but it's the first thing I could think of because of another issue or two I saw long ago.