Another addition, this time to help out with crafting recipe. I’m going to introduce the “item_group”: tag, which will have an “ITEM_GROUP” or [“ITEM_GROUP”, quality#] value assigned. I’m not yet sure how this will be implemented - a separate grouped-by-item-group data structure, or a method for the normal collection, BUT the important use of this will be for item abilities. No longer will you have to list out individual items for crafting, and new items will be added to the crafting group automatically if you tag them right.
The benefits of such a system are obvious.
You’ll also note the introduction of a “quality” value. While some item groups will doubtlessly ignore this value (the default will be 1), this may come into play for various crafting recipes. The details are still being hashed out, but there are a few possible ways this can go. Expect one or more of:
Quality Requirements for more complex recipes - Your pen knife may be good enough to carve a simply spear, but may simply be ineffective for cutting wood into 2x4s.
Time to craft/construct increased - A simple rock may work as a hammer in almost all circumstances, but it certainly won’t be as efficient. Meanwhile, a butchers knife will make much quicker work of a zombie corpse than a pen knife. (Not technically crafting, but we could easily use the new values)
Success chance modified - A high quality tool means less slippage and more precision - a real needle may simply be easier to sew with than a primitive bone one.
Combined with the (hopefully) eventual introduction of real item durability mechanics, I think this will do a lot a distinguish high quality industrial tools from primitive ones, giving primitive characters the ABILITY to do everything on their own (and the consequent price that can engender) while still leaving an incentive for braving the dangers of town and doing a bit of scavenging.
Ultimately, though, all of that stuff is beyond the scope of what I’m doing right now. What I’m doing will simply make that /possible/. Like the item variation, we’ll see how it actually shakes out once it starts interacting with other elements.
As far as actual progress goes…
I’ve been working at this simultaneously from both ends pretty much. I’ve got a “new” system reading in the items and building them correctly, and I’m reworking the existing code to support the kind of system I’m envisioning. I’ve still got a way to go, though. While “Part (a) Replacement System” is finished with step one, “Part (b) Destroy Enums, Replace with Maps” is still a work in progress, thanks to the dastardly presence of the dreaded C++ Macro.
Once that’s done, I can begin actually tying the two systems together and hopefully have something demonstratable. It will probably be another week or two before then, though, and then another week or two beyond that (at least) for this to actually be finished. I use the term finished loosely, as this isn’t taking into account any of the OTHER numerous item-related changes being implemented. What I’m trying to say is, don’t expect this in the next version. But it’s still, at the moment, totally happening.