Huge necropost, first post of mine here too, so sorry and stuff, but I noticed something when playing around with this message system. With the \#{} code evaluator bit, I noticed it's impossible for you to actually evaluate any extra message codes from what that value returns. This would be extremely useful for users who, say, want to use an external file to hold dialogue. This can be remedied with a single recursive call wrapped around what the code tag returns(I tested it, so I'm 100% sure it works.)
So basically changing the line in the method convert_escape_characters which reads "(eval($1)).to_s" to say "convert_escape_characters((eval($1)).to_s, *args, &block)" instead.
Sorry if I'm out of line or anything like that, but I discovered this and wanted to make sure others could benefit from it. This is a great script set, probably one of the best message system overhauls I've seen. Again, sorry for the necropost!