That's super. I made a little interpreter for commands like :background=party: from the script to change things, but it looks like you achieved much more!
That's pretty much what we're doing! Our story manager shoots out events when new lines or choices appear, and there's a function that lets you check what the value of tags are. Then all our game objects just listen for the tags they care about!