Hmm ... what's striking me as just slightly odd about this is that you count the shortest distance, but then you can move him in any path you choose and you still get that bonus. You don't have to actually move him along the path you're calculating the bonus based on.
Not sure if this will actually bother me in gameplay or anything, it just stuck out to me.
I like the elegance of this and really love the overall theme here. Good stuff.