Field base camp adjustments

I’ve almost upgraded a field base camp as far as it will go in 0.E2 stable, and while I like the concept a lot, there are a number of things I’m unhappy with and would like to change However, my knowledge of the structures involved is based on what I think I can figure out from looking at them, and my understanding of what others would think is just guesswork.

Gripes:

  • The description indicates you should be able to construct 8 expansions of 7 types, but the survey mission stop after the 6th one, so only 6 can actually be used.
  • The garage can only be built from logs, and as far as I can understand its construction in still a remnant from the primitive camp.
  • The Main design is silly, because:
    • The doors lead out to small patches hemmed in by pits, so you have to enter/exit through windows.
    • The windows are not reinforced and don’t even have curtains, so what’s the point of protecting the sturdier doors with trenches?
    • A lot of space is simply wasted as small useless areas at the sides, top, and bottom.
  • I don’t really like that surveying expansions are tied to the number of beds built, as there are perfectly valid reasons for why you may be more interested in the expansions than the Main (such as having found a luxury RV that makes a perfectly good base while you’re racing against time to get agriculture going (not my case: I’ve got the RV, and haven’t actually moved out of it yet, but farming is done at the adjacent farm for the first year).
  • I’d make the Main building sit exactly on the tile edge and form an H shape with 2 room on each part of the legs (i.e. 8 rooms with two beds each). The central facilities would be placed in the horizontal part, with the layout leaving two reasonably sized areas to the north and south, with optional walls closing off the building. The courtyards formed would have options to deck them over or use for planters, as well as leaving them to be used according to the player’s wishes (e.g. parking/building vehicles, temporarily or permanently. The outer walls would have no windows, only doors (ideally door that can be barred from the inside [not to be confused with bricking them up], but such doors don’t exist in the game, nor do locks). Windows would instead face the courtyards, so any aggressors would have to go through the doors if the optional walls protecting the courtyards are build.

Canteen: The most useful expansion, in my opinion. However:

  • It’s very wasteful in terms of space.
  • The cheese is a useless cooking recipe that’s only useful if you want to move calories from the base camp store to become available to the PC, as about the same number of calories is used up during the lengthy process as the ones contained in the tiny morsels of cheese.
  • Smoking and drying takes little of the players time, but takes forever with companions.
  • Cornmeal and flour takes a lot of time, using the quern recipe. I’d take a sort of cue from the workshop and add a windmill expansion to the canteen (and the PC would take care of the milling).
  • The lard recipe ought to be replaced by tallow, because you get a better yield from your fat, and the birds don’t seem to provide any fat at all when butchered.
  • The salt recipe is a chemical one, rather than a more sensible one based on salt water.
  • I’d move the brewery from the saltworks expansion and remove that expansion, as it makes little sense to somehow be able to build a swamp that provides unlimited salt water and no functionality (not even to produce salt…).

Livestock area:

  • Again, a lot of space is wasted.
  • The area doesn’t provide any functionality, but it’s actually useful for hosting animals, which is good.
  • I’d like to see orders for the area, such as milking, egg collection (can be done via zones), and slaughter (slaughter animal type X, number Y) resulting in unharmed corpses. However, I don’t know how to implement that (and the milking would need to be tied to other infrastructure, such as butter [isn’t in the game?], cream, cheese, and milk powder making, or, at the simplest, just dump the milk calories into the camp calorie pool).

Saltpan: Remove this expansion and move the only useful part (brewery) to the kitchen.

  • If possible, the moved brewery ought to get brewing recipes for the companions.

Fabrication Workshop:

  • Wasteful in terms of space. It would be somewhat logical to add ore processing to it, although I don’t know if you can do that without electricity.
  • A fair number of recipes, some of which might actually be useful.
  • The Drop Hammer is a great boon for the supported recipes, but I don’t know how it’s powered. I’d probably want a wind mill (or I misunderstand what a drop hammer does, which is entirely possible), but I don’t think there’s any game support for that.
  • The recipe I’ve found missing so far is the hard to find Hunting Knife, as it’s the the tool with the best butchery value (somewhat odd that the professional tools are worse, but if you consider them to be aimed at actual butchery rather than skinning it might make some sense if looked at sideways and squinting).

Storage:No functionality and a lot of wasted space.

  • Problematic, as the 60 tile zone sorting distance means only half of the tile is guaranteed to reach the rest of the camp, shrinking to a quarter for a corner location.
  • Bookcases are surprisingly good at storing stuff, but I don’t like the lockers, as those require you to go fetch 8 locks from dismantling lockers elsewhere, and still somehow only give you 6 lockers (I suspect someone removed the lockers in the corners, but not their material).
  • The player should probably be given options for what type of storage to build.
  • There should probably be a strong recommendation to build this expansion only at one of the sides plots, not the corner, and place any Garage and Workshop areas at the adjacent corners to ensure those are in range.

Defenses:
The only things the current trenches provide are building material and hampered player movement, so I’d move those to be two subtiles outside the base camp area. That would allow for a one tile space to walk along the trenches->palisades, while still allowing for the expansion tiles to be utilized fully. It should be made very clear that those defenses don’t actually work (because of the reality bubble effects), and thus are available to provide building materials and make the camp look fortified. The area should provide a number of 8 tile wide sections that should allow for the building of either a trench->palisade or a palisade gate. (I’d love to be able to provide non flammable options to palisade [gates], but metal gates can’t be crafted currently, and drawbridges don’t exist at all, nor can palisade gates be remote controlled)

Farming: No opinion yet, as I missed out on the chance to construct it. Will come back to that one later.

Implementation:

What I’d like to do doesn’t seem to be supported by the JSON format, unfortunately. I’d hoped to be able to define palettes for each of the building materials and apply the appropriate palette to a common blueprint, but it seems the palette has to be built into the blueprint itself.
I also wanted to be able to order a blueprint to be rotated in 90 degree increments, as well as mirroring it to be able to use a single blueprint for each workshop area, and then rotate/mirror it according to which tile it would be placed in.
It looks like it will have to be done using transpiration rather than finesse, however.

If I could find a way to usage of a specify a fixed space font in the post I’d be able to show my idea for the outer defenses and the Main area…

2 Likes

No responses indicating how I can actually the this forum to display fixed width text, so here’s a link to a text document I’ve used to try to sketch out my thoughts.
https://www.dropbox.com/s/qjqlisjme6vvbrg/base.txt?dl=0

indent preformatted text by 4 spaces
it will use fixed-width font
1234567890
abcdefghij
1 Like

I’ve made some progress with the central tile. However, testing it is a pain and is error prone (I’ve gutted the recipes of components and set the construction time to 1 second, which means that what I’m testing isn’t the real recipe, with every correction having to be performed in two versions in parallel).
As far as I can see you should be able to use the debug menu to spawn building materials and advance time, but is there a debug way to get the recipes complete (effectively) immediately?

Edit:
I’ve managed to get the main tile construction working. If someone would like to review it and provide constructive criticism I would be grateful.
The files can be found in https://www.dropbox.com/s/4jfpsbf5z0eyc8k/cata_basecamp.zip?dl=0

Edit 2:
I haven’t found a way to detect which tile an expansion is located in, so I’m aiming for the crummy alternative of providing 8 recipes that select which of the 8 layouts to use. That really should be detected automatically, but unless someone can tell me how to get hold of the relative location info that will have to do.

Edit 3:
Is there a way to get a blueprint to remove “contaminants” like boulders and plants?

It’s immersion breaking to have a camomille flower in your garage wall (as my real character has), or a large boulder in the kitchen (as I get with my tests of expansions), not to mention trees in unsuitable locations.

Edit 4:
Nobody noticed (or at least reported) that I’d screwed up the files in the zip file so the recipes were placed in the blueprint section as well, rather than the blueprints…
However, the archive (same link) has been updated to contain my take on the Canteen, as well as fixing that error. The details are found in the readme.txt file in the zip file.
The broad strokes follow those laid out in the text document linked above, however.

1 Like

They already know faction camps need work and have admitted to improving them on a different thread, personally my problem with the faction Camp system is everything is overblown and doesn’t need to be as large as it is when everything could almost fit in the space of two survival shelters back to back.

My second problem with faction camps is you have almost no personal control over the layout and would be easier if faction camps could register pre-existing utilities( ie beds stoves fridges Etc)

My interpretation of what @mlangsdof has said was that it’s far down his list of things to do, so nothing is going to happen in the near term unless someone else makes an effort.

I didn’t think the contents of this thread would fit into the broader discussion of the thread referenced, and so made one with a much narrower scope.

It’s true things could be a lot more compact (except for farming, as that has a potential to use up a lot of space).

It’s also true that it’s a lot more rigid than I’d like it to be. However, my current effort has been to work within the constraints set by the code, i.e. through JSON files only, and there’s not that much you can do unless you’re willing to build up a huge structure of alternative definitions that hook into each other to form different development paths.

It would be possible to take a very different direction from the one I’ve taken and essentially ignore expansion names to work with smaller blocks, such as 12*12, so you’d plunk down a combination of 4 of those into tiles, but there’s still the issue that expansion unlocking seems to be hard coded to be tied to beds (although I guess you can bypass that by jacking that token up by 32 immediately).

The reason I started this thread a number of weeks ago was to get some feedback before starting. Do you have some ideas of what you wanted to see that would be (reasonably) possible within the existing framework?

As far as I can tell fridges and freezers can be specified as locations where (food) resources are available, as can wells. What can’t be done is to get the JSON to detect resources built by the player as the prerequisite resources recipes might have for other construction, but it’s possible to create “I have manually added resource X, promise!” recipes that can’t be checked (i.e. the token would be generated regardless of whether the player is lying or not).

Personally as I said in the thread, it would probably make more sense if the faction Camp system was more Compact and related to zoning. When you select the upgrade it would tell you what to place down and where and it would build up where you selected. Like I want the well in this spot or I want the farm plots to go around my base instead of just taking up one map Square all on their own.

( Basically when doing your zoning each building would take up the same amount of space but could be zoned to where the NPC’s would build on said spaces) But that’s just my opinion

My quick experiment indicates you can’t specify a blueprint to use anything outside of the current map tile, at least not reliably. This means any zoning would have to be within the 24x24 tiles of a tile. That probably leaves us with 6x6, 8x8, and 12x12 as usable zone sizes. You could combine that to an extent by allowing a 12x12 facility to be placed on 6x6 boundaries, e.g. resulting in a central 12x12 surrounded by 6x6 expansions, but the 6x6 format would be very limiting, as you’d have to make sure to have doors to allow entry to all indoors zones, and you don’t want to have neighboring facilities be self contained such that they both provide walls (wasting a lot of space).
Having the central tile contain all or most of the resources and farm plots taking up desired amount of space on one or more “expansion” tiles would be possible, for instance, but unless you only have farming there you’d probably end up with weird combinations.
You could also have a central 12x12 surrounded by 6x6 farm plots (I’d use a m.mm.m pattern in that case, player selected to be horizontal or vertical so they’d expand nicely. Of course, the result gets weird if the player mixes orientations).

The work has progressed a little further, with the Farm Area being overhauled.

  • No shack, only fields.
  • A fence around the area to keep the deer out.
  • A selection between fence gate and fence to allow the player to select to allow for the use of a tractor for the plowing during following years.
  • The farm plot crafting recipes are not used as they don’t really provide anything useful.

The farm layout:
Farm, NW corner

   012345678901234567890123
   +------------------------+
 0 |ffffffffffffffffffff    | f=split rail fence
 1 |f                  f    | m=t_dirtmound
 2 |f mmmmmmmmmmmmmmmm f    | p=palisade
 3 |f mmmmmmmmmmmmmmmm f    | G=palisade Gate
 4 |f                  f    | P=pulley
 5 |f mmmmmmmmmmmmmmmm f    | g=wooden split rail gate
 6 |f mmmmmmmmmmmmmmmm f    | 
 7 |f                  f    | 
 8 |f mmmmmmmmmmmmmmmm f    | 
 9 |f mmmmmmmmmmmmmmmm f    | 
10 |f                  f    | 
11 |f mmmmmmmmmmmmmmmm f    | 
12 |f mmmmmmmmmmmmmmmm f    | 
13 |f                  f    | 
14 |f mmmmmmmmmmmmmmmmPp    | 
15 |f mmmmmmmmmmmmmmmm G    | 
16 |f                  G    |
17 |f mmmmmmmmmmmmmmmm G    |
18 |f mmmmmmmmmmmmmmmm G    |
19 |f                  G    |
20 |f mmmmmmmmmmmmmmmm G    |
21 |f mmmmmmmmmmmmmmmm G    |
22 |ffffffffffffffffffgp    |
23 |                        |
   +------------------------+

The Garage has been updated.

  • 3 different lengths
  • The poorly described Chop Shop recipe has been retained, although the deconstruction zone may be a better option.
  • Dirt floor with a roof over uses the same materials for all materials versions, as there isn’t support for dirt floor with a roof.
  • The zip file linked earlier has been updated to contain the current state.

The Garage layout (NW corner):

    012345678901234567890123
   +------------------------+
 0 |                  P     | w=wall
 1 |wpggggggggggggggggpw    | .=dirt floor/roof
 2 |w.................Pw    | p=palisade. Might have wall as an option, blocking palisade gate.
 3 |w..................w    | g=palisade gate.
 4 |w..................w    | P=Pulley
 5 |ww,,,,,,,,,,,,,,,,ww    | W=Window
 6 |w..................W    | r=display rack
 7 |w..................w    | d=door
 8 |w..................w    | c=counter
 9 |w..................W    | ,=optional palisade gate. If present, the building expansion upwards stops there,
10 |ww,,,,,,,,,,,,,,,,ww    |   leaving the tile space above free for player use.
11 |w..................w    | 
12 |w..................W    | 
13 |w..................w    | 
14 |w..................w    | 
15 |w..................W    | 
16 |ww................ww    |
17 |wc.................w    |
18 |wc.................W    |
19 |w..................w    |
20 |wr.................d    |
21 |wr.................w    |
22 |wwwvwwvwwvwwvwwvw+ww    |
23 |                        |
   +------------------------+

Next up was the Livestock area, resulting in this (the zip file has been updated):

    012345678901234567890123
   +------------------------+
 0 |wwwwwwfgffgfwwwwwww     | w=wall
 1 |w..g..      w.....w     | f=split rail fence
 2 |w..fb.      w.....w     | g=wooden split rail gate
 3 |wwwwb.      w.....w     | b=bench
 4 |w..fb.      w.....w     | G=chickenwire Gate
 5 |w..g..      w.....w     | F=chickenwire Fence
 6 |wwww.w      w.....w     | W=Window
 7 |w..f .      wFFGFFw     | r=display rack
 8 |w..g..      F     F     | d=door
 9 |w..fb.      F     F     | t=table
10 |wwwwb.      F     F     | .=dirt floor/roof
11 |w..fb.      F     F     | 
12 |w..g..      F     F     | 
13 |w..f..      FFFGFFF     | 
14 |wwww.w            f     | 
15 |w..f..            g     | 
16 |w..g..            g     |
17 |w..fb.            f     |
18 |wwwwb.        wWwww     |
19 |w..fb.        wrrrw     |
20 |w..g..        d..tW     |
21 |w..fbb        W..rw     |
22 |wwwwwwffgffgffwWdww     |
23 |                        |
   +------------------------+

All your points are valid, glad you’re taking on the central core for an update in particular. It was the first one converted to the modular system.

Garage and farm are still from the primitive camp.

Livestock area is useful as is, but designed to eventually support zone tasks like egg collection, and eventually animal care. I’d love a transplant tree mission so you can make an orchard as well.

We need a lot more missions and a lot more camp recipes and special furniture like the drop hammer. I’ve been holding out for powered appliances which would be a huge boon for camps.

Overall, I’m happiest with the firestation camp since it’s designed to offer a lot in a small footprint.

The Boulder and flower issue may be fixed by having the survey overwrite the entire omt in f_null, I keep meaning to add a blueprint outline in dirt to mark where walls will be as well.

Testing wise: i usually keep recipies calculated and just pass time via debug. At least you don’t have to build from scratch when you change things.

Thanks for the useful feedback and hints.

I’ve ended up using a companion to do the building and pass time via the debug menu. That allows me to actually see what’s presented to verify dependencies are correct, as well as catch some errors in the texts.

However, I do build from scratch after each test run with corrections of the errors caught, which is rather tedious. I’ve considered trying the debug menu way, but don’t quite trust that it wouldn’t result in some errors being missed (which is not to imply that there are no bugs in the result).

The f_null approach sounds promising. I’ll try that.

Edit: Unfortunately, f_null seems to do nothing, rather than remove something. The least bad I’ve achieved so far is to cover the area in ash, which apparently gets rid of the unwanted stuff, but it’s definitely not good enough. I’ve even tried a double dose of f_null, with no effect (since I’ve been able to have both furniture and a boulder in the same tile, and a single dose might have removed only the “real” furniture layer).

It’s been pointed out that I need to add something to update_mapgen to remove stuff from the maps. It’s on my to-do list but it’s going to take some time to get it done.

2 Likes

Next up was the Storage area, resulting in this (the zip file has been updated):
Note that this is the layout for the northern expansion, as Storage really shouldn’t be placed on the corners due to the restricted zone visibility distance (60 tiles, or 2½ world tiles). When built in the closer half of the N/E/S/W tile the whole of the warehouse is available from the rest of the camp, while the outer half doesn’t reach all the way to the edge, with corner tile warehouses suffering from the same issue in the remote half of the half sized warehouse.

    012345678901234567890123
   +------------------------+
 0 |    wwwwwwwwwwwwwwwwwwww| w=wall
 1 |    wP.PP.OO.ON.NN.MM.Mw| W=window
 2 |    wP.PP.OO.ON.NN.MM.Mw| .=floor/roof
 3 |    wP.PP.OO.ON.NN.MM.Mw| d=door
 4 |    wP.PP.OO.ON.NN.MM.Mw| A-P=Storage furniture groups. Each group should have a set of alternatives, at least
 5 |    W................. w|     - Warehouse shelf (largest storage capacity, but requiring quite a bit to construct)
 6 |    wL.LL.KK.KJ.JJ.II.Iw|     - Bookcases (surprisingly large storage capacity)
 7 |    wL.LL.KK.KJ.JJ.II.Iw|     - Dresser
 8 |    wL.LL.KK.KJ.JJ.II.Iw|     - Lockers (PITA to get the lock and keys required, but it's the players choice and
 9 |    wL.LL.KK.KJ.JJ.II.Iw|                resultant pain)
10 |    W..................w|     - plus display rack (1750L, see through, see into) and wooden racks (1500L, see through, se into),
11 |    wwdwwwwwwwwwwwdwwwww| 
12 |    wH.HH.GG.GF.FF.EE.Ew|
13 |    wH.HH.GG.GF.FF.EE.Ew|
14 |    wH.HH.GG.GF.FF.EE.Ew| 
15 |    wH.HH.GG.GF.FF.EE.Ew|     
16 |    W..................w|
17 |    wD.DD.CC.CB.BB.AA.Aw|
18 |    wD.DD.CC.CB.BB.AA.Aw|
19 |    wD.DD.CC.CB.BB.AA.Aw|
20 |    wD.DD.CC.CB.BB.AA.Aw|
21 |    W..................w|
22 |    wWdwwWwwWwwWwWdwwWww|
23 |                        |
   +------------------------+
  • Benches, etc. have been removed. Who want to relax by a warehouse, anyway?
  • The warehouse fills half or all of the available space, with aisles of storage in it.
    The descriptions try to strongly hint that it’s enough with the half size version.
  • 6 different storage container options are available for the storage. 16 (full size)
    sections of storage can be constructed, and each section can select the container
    independently. The containers are presented with storage capacity, whether their
    content is visible from a distance, and whether they block LoS.

The rework is now complete, after the final expansion (Workshop) has been processed.
It turned out both the different base camp variants and the expansions are “declared” in the recipes file, which allowed me to remove the Saltworks one (incorporated into the Canteen).
However, expansions do not seem to be tied to base camp options, so any expansion seems to be possible to pair with any base camp that supports expansions. That means it’s not really meaningful to try to make this work into a new base camp rather than a replacement for the modular field one (there is also the issue of different base camp versions sharing some files).

The zip file referenced above has been updated with the result.

This is how the Workshop area turned out:

    012345678901234567890123
   +------------------------+
 0 |                        | w=wall
 1 |                        | W=window
 2 |                        | r=display rack
 3 |                        | k=clay kiln
 4 |                        | R=wooden Rack
 5 |                        | B=Blacksmith bellows
 6 |                        | F=rock Forge
 7 |                        | T=Table
 8 |                        | l=dresser
 9 |                        | b=workbench
10 |                        | s=stool
11 |                        | a=anvil (on floor)
12 |                        | d=door
13 |     f                  | D=steel Drum (200L) on floor
14 |                wCCw    | M=steel druM (100L) on floor
15 |    EEE         ....    | C=Charcoal kiln
16 |wwwdwwWwwwwWwdwwwWww    | E=wooden bEnch
17 |wrr.rrrrwTAeR.RBFTlw    | A=Arm chair
18 |wk......w....s....bW    | f=fire barrel
19 |wr.bbb..d.......a.bw    | e=bookcase
20 |wr..s...w...r...D.bw    | H=blacksmith drop Hammer
21 |wr......wrrHr...M..w    | .=dirt floor/roof
22 |wwwdwwWwwwwWwwWwwdWw    |
23 |                        |
   +------------------------+

In addition to the rework of the modular base camp, the data structure has been reworked:

  • Instead of having the modular base camp hub on the top level together with the primitive
    on, there’s now a “base” and “expansion” folder into which folders holding each individual
    base/expansion are placed.
  • The shared recipe_groups.json file has been split up so each base/expansion gets its own
    file containing only the recipes it actually uses. This allows you to change the recipes
    in one base/expansion without also affecting every other user of it. That allows the reworked
    workshop expansion to have fewer steps than the other users of “blacksmith” recipes. The
    original recipe_groups.json file now only contains the recipe groups that list base camp
    versions and expansions, respectively. There’s also a legacy_recipe_groups.json file that
    contains the “original” recipes, which the author believes should allow existing saves to
    find the recipes for their existing bases.
  • The obsolete “crucible” recipe has been removed for all variants since it doesn’t work anyway (no materials, 0 seconds, and can’t be crafted). The recipe has been moved to a a file for obsolete recipes at some time in the past.
  • A number of functionality tokes have been (re?)introduced to the basecamp expansions. It turns out the “water_well” token existed for the main well, but not for the canteen one, for instance.

The contents of the zip file referenced above has been updated.

Edit: Some minor updates:

  • The Clay Crucible recipe has been introduced for the Workshop after I’ve eventually found that it actually IS possible to fulfill the conditions for the recipe, although it’s not intuitively obvious, as you’d have to manually light a fire in an approved location (I used a stove in the central building), and the Workshop doesn’t have any such location…
    Note that the recipe hasn’t been introduced for any of the other base camp versions, as I don’t know with certainty that the conditions for it can be fulfilled there (nor which ones have construction recipes that require a crucible).
  • Restored the dual Canteen cooking spots (tossing out the bookcase and moving the second counter back to its original location) after I found that introducing the appropriate token twice seemed to actually allow two cooking sessions to be performed in parallel (tested by sending off the companion to cook eggs, while checking that the cooking of fish fillets wasn’t greyed out).
  • Adjusted the central building construction descriptions to list the construction material, rather than have 8 instances of “Construct south west room” (the detailed conditions already listed the material in its description text).

The zip file contents have been updated.

2 Likes

Are you going to PR this or was it going to be 3rd party?

If adding to vanilla, we can keep old existing expansions as well. Let people have variety. I’m not sure if both cores should stay, I’d want to review the new one before having an opinion.

I had intended to PR it, but I wanted to let things cool down to avoid having to keep changing it at that stage. So far I haven’t found anything I wanted to modify, though, and was nearing a PR. However, it seems the three shelter bases are intended to be essentially the same one adapted to the shelter type they’re on. If that’s the case they probably should be moved as sub folders in a common “shelter” folder and share a single recipe group file.

I hadn’t considered retaining the old expansions, but it should be possible to keep them with minor modifications, so I guess I’ll do that.

I’m not sure it’s possible to keep the previous hub/core in a nice manner, but it might be possible by introducing the construction with a pair of no time blueprints, similar to the orientation one.

Edit:
Thanks for taking an interest, but the way.

I’ll play around with expansions and the core to try to find out what can be done. Currently I don’t see any changes to my version of the core and the expansions, but returning the previous expansions and possibly the core would result in some minor adjustments.

Edit 2: It seems there are two different approaches to providing multiple versions of expansions:

  1. Put all versions into recipe_groups.json as different expansions. This requires …\json\overmap\overmap_terrain\overmap_terrain_faction_base.json to be modified to support new overmap identifiers. I don’t know if …\json\mapgen\faction_buildings.json needs to be updated as well, or if that content is obsolete, which it looks like on a first glance.
  2. Treat the different expansion versions as actual versions, so you’d first select the expansion and then the version in a zero time construction recipe. This can be done as
    a. Place it in parallel with the orientation layouts, so you get a selection of 9 different blueprints.
    b. Make a two step selection process, where you first select the version and then the orientation (but only if you selected the new version).

I’m currently looking at option 2a.

Edit 3: It seems option 2a works (I’ve added the former canteen to the set of orientations for the new one, and selecting that version displays the expected set of constructions, but I haven’t tested that they won’t interfere with each other beyond that yet).

However, trying to make the base camp hub versions different top level base choices (essentially 1 above, but for the base itself) results in very weird effects, and I’ve so far been unable to get it to behave. The correct blueprint is used (i.e. my outline on the ground is shown for the new one, but not for the old), but the tokens provided are not. It seems I get the old one, unless I change it to provide “fbmh_1” rather than “fbmh_0”, in which case the rooftop set seems to be used, until I change that one to also provide “fbmh_1”, at which point the old version is used (tested by adding the first cooking recipes to it, to distinguish it from the rooftop one). To rule out weird lingering effects from the previous base, I made a new world, but I still get the same behavior.

Edit 4: It seems the code requires entries in the “all_faction_base_types” recipe group to conform to the pattern “faction_base_” + + “_0”. If not, I’d guess it processes recipes blueprint parts as per the recipe, but the rest according to what it might have been able to pick up from the blueprint(s) that conform to the pattern. Not exactly intuitively obvious (and the stupid JSON baby with bath water purging of comments makes it impossible to comment it in the files).

Edit 5: Point 1 from Edit 2: faction_buildings.json has to be updated as well for a “proper” addition of an expansion.

The structure for both base camps and expansions has been reworked to include both the current ones and the new ones, with testing consisting of building each base hub fully, as well as each version of each expansion once (using mi-go resin, as that’s the easiest construction material). As far as could be determined, the recipes that should be unlocked are unlocked as they should.
A small number of minor bugs in the existing expansions have been fixed (“forage” rather than “forge” for the workshop one really bugged me), but the only one that may have some actual impact is duplicating the cooking functionality tag for the canteen that ought to allow a newly constructed canteen using the existing recipes to run two companion cooking tasks at the same time, according to my limited testing of that.

The link to the archive containing the changes is the same, but repeated here for convenience
https://www.dropbox.com/s/4jfpsbf5z0eyc8k/cata_basecamp.zip?dl=0

As far as I can tell at the moment, there is no additional work outstanding, so the work should be complete for review.