Unfortunately, upgrading existing 'static' metarooms into adaptively placed metarooms, while not impossible, can be painful.
It's not just a matter of changing the coordinates of where the room is injected. You would also have to update the coordinates for every single plant/animal/foreground agent/possibly CA links/pretty much anything that is in the room. Not just to inject them into the new place, but to make sure they retain their current behavior (some C3 critters/plants rely on checking coordinates to make sure they don't wander too far one way or the other or grow where they shouldn't). You'd also have to make sure any doors in other rooms that go into that metaroom are updated to fit the new coordinates as well. It's complicated enough that I don't think any external utility could automate it with 100% accuracy. And since the DS engine is really flaky when it comes to removing metarooms, this all has to be defined before injecting the room, because afaik you can't reliably move/remove a room once it is in a world.
While we could theoretically, with a lot of effort, manually modify official rooms like the C3 ones to make them adaptively placed, it's probably bad form to modify 3rd party rooms without the creator's permission. So it might be best to just assume that is out of the question and that we're going to have to work around old static metarooms one way or another.
That leaves us with a few options:
- Simply making it very clear that the new adaptively placed rooms are potentially incompatible with older rooms, and encouraging users to inject any static metarooms first before injecting adaptive ones.
- Taking option A a step further and, in the event that we're going off a whole new bootstrap with new rooms injected from the very beginning, creating a dialogue box that upon entering a new world for the first time allows you to select any static metarooms you want to have injected beforehand. After injection, the scripts then create the new adaptively placed rooms, working around what space is left.
- Taking into account all known current/old metaroom placings and creating a blacklist preventing adaptively placed rooms from going into any of those spaces. This list would then need to be continuously updated if further statically placed rooms are created by community members.
All that said, there are still some concerns:
- If replacing the bootstrap/starting from scratch, it's worth keeping in mind a lot of 3rd party metarooms still rely on certain DS metarooms existing for placement of doors, teleporters, etc. For maximum compatibility it might be necessary to keep those rooms, or at least empty rooms in the same coordinates so they don't throw errors upon injection. It's also worth mentioning that some old agents still use static coordinates for the DS injector/comms room for their placement after injection, so that might be a ongoing problem. It's possible that in either case a script could be set up to teleport anything detected in any of those spaces to whatever the new designated 'home' room is, but I haven't tested anything like that.
- Adaptively placed metarooms haven't really been stress-tested afaik. It's possible that there are some complications involved that just haven't surfaced yet. When I was working on the ant tunnels I was able to generate over 50 small-ish (about workshop size) empty rooms without any issue, but I didn't try injecting more, injecting lots of different shapes/sizes, or packing them all full of various agents, so it's possible there's limitations to them (I feel fairly confident the concept is at least stable enough for most normal playstyles, but again, testing will really tell).
- This is just flat out going to be a lot of work. I can feel myself burning out from the monstrosity of effort required already.