It honestly makes more sense to separate out trees/shrubs/grasses than it does to put rocks/insects in their category.
Insects and Rocks need to go into the "raw materials" category. Update this anywhere where they're rendered. -- The rocks change will mess with geologists and other shop types; the insects change will mess with the current version of fish (probably irrelevant now). May want to wait.
Brush should have a different naming scheme than trees. Also need to do a lot of naming changes in general.
System
Having 20-30 for each individual item is way too much -- I should alter the surface materials functions (and all hooks) so I can (optionally) custom-set amounts for each material type.
Extend simplification to all other tercos -- symbiotic/harmonic, anything screen-based, changing the orders of everything so hierarchy is respected. All submerged variations should appear as well. It's important that I wait on this update until after the metals update.
Integration
I need a new discoveries tab for terrain configurations. Should probably just fake something out for now (and integrate terco_help in whenever that's working). This should make it easier to see everything in the terco and terco_reverse objects so I can locate specific materials to test or balance them better.
Rarity colors for different configurations -- reflective in the new discoveries tab.
Loot should be reflective of materials v3 -- trickier to do then just generating tree names beforehand.
I need a generalized function for being able to search the player and base inventories simultaneously. i_filter{} and all other high-level classes should have an option for turning it off (it should be on by default since 99% of everything is base materials processing). Additionally, inventory.take() and .give() should search through the base inventory if they don't find an entry in your inventory. Then if .give() still doesn't find one, create a new entry in your inventory. This change though would make it just work across the board.
Pylon jewelry lists should access either.
I need to look at all fixtures and make sure this is happening across the board there as well.
Myriads will probably be essential to creating the Attractors for transdimensional portals. Attracting to the home dimension should be free though, which makes sense both from a gameplay perspective and from the lore.
Pylons should cut down on the cost of Portals and Farming machines as well.
You should also be able to place a portal pylon for a good bit of non-pylonable aether -- this let's you set up additional pylon lines in melange dimensions, etc.
Given this it would make sense to make pylons the way to automate Farming machines (assuming I haven't done this already).
Get one of each type of shop appearing in the starting province Checklist
Need a full checklist for this because it's a bit tricky.
Create an "all" index in inside.init()
In towngen.gen(), pull the premade_types variables back out into the object and hook back in. Might be tricky with the random one. I hope I don't need yet another checklist.
Find the hook for how many houses are in a town max and make that also accessible in a similar way.
In province.init(), run province.assign_houses() right before the loop: run a function that distributes the inside.index.all[] into nationgen.index.all[], forming a new variable called "distributed_houses" that assigns the nonad kee to the house types -- this should be stored in province{} directly.
Don't assign houses if you're not in region 0.
Also in province.assign_houses(), make sure the maximums for the #/houses in a town and the premade types are respected during distribution.
In towngen.gen(), append province.distributed_houses{} to the premade_types via the nonad kee.
That should ensure that the starting province has one shop of every type.
Some are explicitly here -- the rest are actually going to be built out tonight/tomorrow because they'll improve the hell out of the feature and make the update post cooler.
Scouting should maybe take real-time. This would help cut back the CPU processing of it a lot and also make more sense anyway.
Scout animals should be able to see animal nests if I don't get to this already in the Combat update.
In the rendering engine, look up all zoneloader data and any tiles like that should be grayscale static (so basically chimera). Should try to figure out what's actually going to be rendered first, and then assign those datapoints, to optimize it. This will however potentially be tricky with journey and deep scouts. This should happen with the zoom map as well.
Cartography Maps always show Nests. Can't do this until after the nest update.
Alter gen.color() so you can set gen{} properties like world_type, region and world_floor locally -- hopefully this works. If so, build out a checklist to create cave maps and throw that back in this functionality. -- Too complicated, as the actual variables are set with region{} or biomes{} or something. Will revisit later.
With this update, Cartographers should be able to sell maps from other regions, tetrads, etc. Who knows what I'll want to explore when this happens. There needs to be Warp functionality to the specific region as well.
Cartographers might be able to sell: province-map stuff, the html5 map thing. Maybe town maps , dungeon maps, aggregating data that'll be in the NPC info framework (and maybe the existing one as well, particularly shop types or expert locations), maybe fishing data. Honestly I should try to aggregate all possible mapping data.
Treasure maps should offer something other than just Crystals.
Maybe think up additional weapon types now that I have better mouse hovering and the mouse wheel to work with. Terrain-based stuff also makes a lot of sense (I think I have some notes for that here).
enemies should also be able to do ranged attacks, status effects, "landmines", etc. Which kinda necessitates armor again, which I have no problem with. Should be waaaay simpler though. Maybe impact stats and health, which moves those functions out. Possibly affect mana regen, which can move that away from altars, which is probably for the best, particularly since altars will probably be used for enchanting too.
Mounts have a health system which mimics the player system but tends to be more forgiving. One use of them is that they take damage from enemies rather than you. If a mount animal runs out of health you can't use them anymore -- you must feed them and wait for them to recuperate. They unfortunately can't be Retrieved either, though thankfully your Pets menu lets you know where they are at all times.
Enemy naming should be reflective of what the mount animal does and should maybe influence their terrain patterns. I don't really want to get to that in the current update, too complicated as is.
An input box next to "Craft" should let you craft an arbitrary amount, and there should be a way of crafting as much as possible as well.
I have no idea how to across-the-board fix it, but properties like "iname" aren't being transferred properly, particularly since things like fishing don't reference the itemgen{} directly. Even though they should beause the tercos do, wtf. Idk, I need to look at all of the game's items and how they're generating so they're consistent I guess, and then add things like "iname" so crafting alchemy works across the board.
Add pinglike functionality where when you hover on a pinglike a tooltip appears to the left of the menu screen (but along the same vertical row) that lists its properties, via a .format() function somewhere (Which for now will just list them). Should help with UX early-game but may not be a great permanent solution.
Do the same thing with the inventory, listing it on the right but the same vertical axis. Obviously not the best long-term solution but helps a heck of a lot with both development and early game alpha stuff.
Build a minor framework for it -- give it a string and either a starting coord or a starting coord/xmax or two coords, and also a direction, and it'll place text into the world accordingly.
Have a framework also for typing -- a cursor position and bounds. Can't move outside the bounds for any reason.
Add a Text mode with a micon that makes sense.
This sets a click event that starts typing mode.
Typing mode will completely reroute all keyboard events through it.
It should also create a blinking cursor timer that'll disappear when not in use.
Pressing Escape will stop text mode.
Set bounds on the screen size and the cursor position on where you clicked.
Arrow keys should move the cursor position.
Enter should go to the start of the next line.
Typing should stick the character in and advance to the next column or line if you reach the east bound.
Add a TODO somewhere about bg colors, symcolors and xcolors with typed text. Or just program it. Use the dye system (and subtract dye appropriately, so probably need to generalize that menu ).
Civ Houses
Use text to show what houses actually are along the wall that makes the most sense.
The coloring bug must be because it's pulling the built layer or the gen layer color rather than the top built layer. Would explain why some of them are floors too.
Don't have it directly next to the door, have a 1-margin.
Cut off the name based on the house size, including the 3 unused spaces. The space thing can still work however.
Add a TODO in those codeset about checking extracurricular world types for build permissions at the end of development.
Make sure I have a checklist point about not being able to build within a structure's radius (around them is fine). Idk how the system works though, maybe you can build between inactive dungeon structures, will need to check it.
Base Locking
Bug fix: "Attempting to create base" and "Adding to base" functions should turn nat solids that are part of the structure into built solids since I'm here anyway.
All tiles in the base should get a "room" key which is stored inside the tile data. Based presumably on the top-left coord which is hit via the magic check-for-room function.
Make sure the magic-check-for-room function ignores tiles which already have room keys.
The tile data should also store locked: true.
Fixtures can only be placed on locked tiles. When this happens, store a datapoint that assigns those fixtures to a certain base room.
You can't highlight or perform actions on locked tiles. Probably limiting it to highlighting makes the most sense. Make sure you can't get around it with invert/etc. Basically stick the limit in the highlighting function itself, and make sure all highlighting actions go through it.
A button to pick up fixtures on screen. Will be the easiest way to move fixtures from a technical perspective.
Add a TODO here about giving you the fixture item back whenever that update happens (probably around the PGCS).
Add an "Unlock Room" button. This can only work if there are no fixtures assigned to it.
It also can't work if the portal spawn point is inside this base room, so this also has to be moved.
Assuming everything checks out, unlock all tiles assigned to it and kick you out of the base. You'll then be able to adjust stuff and reassign the base room.
Old Bases Checklist
Make sure you can only place fixtures in the current room you're in, and not anywhere around the border (solids, doors). Otherwise give an error.
Very random idea -- towns on the outer edge of the nonad system vertically should be able to connect to towns opposite them vertially (like topmost hits bottommost) and same deal with horizontally. This just makes sense.
Lattices should contain additional potential exotics beyond myriads such as sinkcores, etc. They're rare and their chance of extract is low.
I have another note for something like it somewhere, but dimensions should occasionally spawn "melange resources" -- basically random colors/syms (or fixed colors and fixed syms that are randomly put togethr) that can be extracted for a variety of stuff. So like the above but not really rare resources. Like with weapon generalization, name them something unique for their type, like something that extracts for feathers, scales and cloth might be a "lembuac", so in this case it would be a "Heartwood Lembuac". Then in some weird altplane you might find a "Sevenking Lembuac", which again extracts for feathers, scales and cloth. These should probably also be on the terco system. And none should exist in the overworld.