I quite liked the State pattern, although I'm not quite so sure it has the expressiveness needed. I mean, you're pretty much stuck with information about your character, period. No accessing much else. Then again, it might be possible that all the information you need can be accessed through your character's sensors, but still.
The more you restrict what information can be contained where, and the means by which it can travel, the more predictable you can make your program and thus the easier to work with and less bug-prone. This trade-off is used in lots of programming patterns, as well as the entire functional programming paradigm and any other stateless programming system.