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.
+ Credits
Coven town background by u/revesvans.
Witch portrait placeholder — Witch by Mark Belokopytov under CC BY-ND 2.0.
Raven icon by Lorc under CC BY 3.0.
Castle (heavily modified) by Delapouite under CC BY 3.0.
Hero sprite placeholder — capital "H" of Morris Roman font by W. Morris, 1893.