First off: amazing to see this. I don’t make visual novels myself, but I’m excited to see anything new and low-end.
You’re aware that your code is kind of screwed up, so I won’t mention that.
Please, please, reconsider your scripting. In my last project I used an XML parser to read levels, and over time it morphed into some completely hideous programming language. I know for a fact that it would’ve tainted people’s modding experience, so badly even, it could’ve made a cult following. Next time I’m just using Lua or something else. This is also, for the record, coming from someone who’s already dabbled in compiler/interpreter design for years, and is “working” on a compiler of his own – quotes because everything is on indefinite hiatus.
If you’re worried about even Lua being too bloated, there exist other ones, but Lua is most well-known and it’s very easy to integrate. You can keep the important state like the weather and time in the main engine, and have Lua access it through metatables and the __index
& __newindex
metamethods.
A Lisp would be even more lightweight, but also more exotic. Still better than some XML-based crap, and uh.. your crap as well (meant endearingly :) ).