By no means finished, but a solid foundation going forwards. I tried to make it adaptive, mostly for my own sake: it should work with any resolution more or less properly.
Anyway, here goes:
Besides GUI, I’ve also been moving most of the stuff that’s been hardcoded out into the data. It’s mostly a “what I wish the data would look like” at this point, but the build tree is already loaded from disk in the video. Here’s what a Rasvelg (Coven T7 unit) file looks like:
id: rasvelg tier: 7 statistics: offense: 18 defense: 18 damage: 30..40 hits: 150 speed: 7 initiative: 10 growth: 1 cost: 4000g+1cr abilities: - flying - giant - <inline>: id: transform type: action when: - battle - army condition: > (inTown() && town.isFaction("coven") && town.built("coven/walking-hut")) || (inHeroArmy() && hero.visited("coven/walking-hut")) effect: | stack.trainTo("coven/yaga");
That <inline> ability should allow creature-unique abilities to be defined in-place. Normally you’d reference a shared ability (e.g., flying, spellcaster).
Last but not least: scripting! After some deliberation I’ve settled on ChaiScript over Lua, as it promises smoother integration with modern C++. We’ll see about that, but meanwhile it’s been fairly frictionless. In fact, that drop-down console feeds into a ChaiScript interpreter.