That's a good question.
Most real world natural language problems are handled using a data driven approach.
If you wanted to put a chat bot on the internet, it would be fairly easy to do because you can get as much example text as you want to build the bot (things like the conversation we are having right now). The idea is to find a lot of data to use for machine learning approaches. Giving the bot personality traits would be harder, but certainly plausible.
When you put that in the game world (for a game not set in our world near our time), you don't have unlimited amounts of game specific text that refer to things in the game world and that don't refer to things outside of it (like computers and 747s etc. for D:OS2). So, you would have a harder time doing something purely data driven. For example, in a game with levitation spells, you don't want to ask someone about flight and have it answer something about airline schedules. You also don't want to hand write reams of text to train on or large numbers of generation rules.