This is supercool! I can see the tons of work you've put into it: the animations an the movements are smooth, the lights and shadows are excellent, the water effect really adds to it, and the AI is really good! Also, you have a very clean code, and I like how it was structured, though I just had a short glance at it.
What I did not like, however, is the jumping. I guess I'd just have to play more with it to get accustomed to jumping, but I really dislike that the character jumps only if I release the button. I'd rather make the character jump when the player presses the key. You can still measure how long he's pressing it (hence how large to jump), for a limited time (not to jump out the world).
The movement and the aiming also feel like it's lagging behind. Not too much, but it's noticable.
The AI had a problem jumping up to a platform at some place, so it couldn't follow me anymore.
The whole source is in the root directory, it's confusing.
Overall, I really like it! Keep it coming!