I wish they weren't so smart, actually. We spent forever making them really smart, and probably the last few months making them dumber, because they like to go off and do things that really mess the world up. A few weeks ago there was an instance where a player dropped the "Skull of Corruption," an artifact that when used on an enemy makes an evil clone of that enemy. He was just testing and wanted to make sure the object used the physics correctly when dropped. So he drops it and an NPC runs up, grabs it, and shoots the player with it—creating an evil version of the player who starts killing everyone. It was hilarious.
They'll decide where to eat or who to talk to and what they'll say. They'll sleep, go to church, and even steal items, all based on their individual characteristics. Full facial animations and lip-synching, combined with full speech for all dialog, allows NPCs to come to life like never before.
We try not to go too overboard, and we've had to scale things back simply because we don't want things going on that the player doesn't understand. For instance, we don't let AI characters steal items from you - it sounds like something that would be cool and fun, having to lock your house and stuff, but the problem is that when you come back to your house and there are items missing, it doesn't feel like somebody's stolen them, more like the game's broken. We try to make sure that happenings in the game are understandable and are something that you can see and control. Complex AI was one of our goals, and because scripting all of the NPCs we have would be prohibitive, we had to design a system much like The Sims where it's all goal-based - the AI has a goal and they have to work out how to go about achieving those goals. It's really cool to walk into a dungeon and find an adventurer going through the dungeon gathering stuff too. The first time you come across things like that, it's a smile-on-your-face moment.
They all have 24-hour schedules which include activities like sleeping, eating, going to work, and reading to name a few. Once I was working on a demo scene and ended up accidentally making a change in a general AI package that dictated when people in a town should go to find lunch. When I loaded up the game, every single person in the town showed up at a single lower class tavern to try and get some food. Of course there was only enough food on hand to feed a few of them, so one shifty character began pick-pocketing everyone else before they had a chance to eat!
I'm going to get a good supply of baby oil for when this is released.