Something I've been working on the past few weeks is cleaning up the code related to the .qst file data structures; as part of that I've taken steps to fix one annoying aspect of quest development, which is the inability to export only some enemies, items, etc: you currently have to export everything or nothing, whereas ideally, you could download from the QDB a self-contained module containing one new type of enemy, a different module containing new items, etc. and easily integrate them all into your quest.
zq1.PNG
zq2.PNG
zq3.PNG
This will be possible in the next (post 2.50) version of ZC. Each quest can contain multiple modules, each of which is a collection of independent assets like enemies and items (currently enemies, items, and sprites are implemented; I will do combos next.) You can import one set of enemies, for instance, and it won't touch any of the existing enemies in your quest. Likewise you can create a module of a small handful of custom enemies and export them for others to use.
The CORE module is the one that comes with a default blank quest; the other module is one I created and populated with a few quick enemies. You can add new enemies etc to any module, and copy/paste between modules, etc as expected. Oh and incidentally the hard-coded limits on the number of enemies, items, and sprites is gone, which I know was hindering some people.
Any place in the GUI where you need to specify an enemy, item, or sprite, you now specify the module and the item (e.g.) within that module (see screenshots).
There are however a few issues still needing to be worked out:
- there are several hard-coded sprites, items, and enemies still used by ZC (the fires that appear in guy rooms, the selector icon in the active subscreen, etc). Hopefully this number dwindles over time, but for now if you want to change these you have to modify the appropriate entries in the CORE module.
- scripts currently can only access stuff in the CORE module, but eventually there will be a ZScript command for choosing the module when loading itemdata etc.
- although all of the above sounds like a simple change, implementing it required cleaning up a lot of cruft in the ZC and ZQ codebase. There will be bugs at first until all of the kinks are ironed out, but this cleanup is a necessary evil to make adding more new features to the ZC code manageable (including, eventually, scriptable enemies and weapons).