Yeah, I've tested this now and ... yeah .. that's how it works. I simply turned another unique district (Hansa) into a CivUniqueDistrictType that replaces Theater in the DistrictReplaces replaces table, in addition to retaining Acropolis as a unique replacement in the same table. I then gave a single civ the traits for each of Hansa and Acropolis and tested the outcome. Here are the findings:
(1) Based on my previous tests that involved building multiples of the same basic district type in one city, I expected that only one of the districts with the same buildings line up would be able to build any of the buildings from the common set. When duplicates of the same district type are built in one city, the first district built is given primacy over any subsequent iterations. The non-building-related functionality remains unchanged (adjacency bonuses, etc.) for all the instances of the same district, but all the buildings are nested in the one that was placed (
not completed) first. This led me to believe that access to building is simply a matter of first-past-the-post.
(2) However, what I did not expect is how two unique district replacements of the same basic districts behaved in the same situation. One was indeed given primacy over the other (that was anticipated where one city is involved), but not the one I expected. By all accounts, and any way you assess it, Acropolis should have loaded first, ahead of Hansa. Acropolis is ahead in the Districts table, the DistrictReplaces table and in the order in which I attached the respective Traits to the test civilization. One would expect Acropolis to get primacy. A fortiori, if Acropolis is placed on the map ahead of the Hansa.
(3) However, it worked the other way around. No matter how I tried and the sequence I followed when constructing the districts, Hansa always clinched the buildings line up. Whether or not Acropolis was placed first on the map, the buildings became available under Hansa (as soon as Acropolis was placed on the map, or, if Hansa was placed first, then at that point).
(4) If indeed load order has anything to do with the primacy, then it would seem to work the other way. The district that comes later (by row number in a table) get the buildings. It would kind of makes sense from the standpoint of load order, as the later code should overwrite the earlier code, if at all possible, in the event of a conflict.
(5) Here is a way to test this in your set up (with two separate mods). Use the following in your mod's MODINFO:
Code:
<Components>
<UpdateDatabase id="SQL_Changes">
<!--The value of LoadOrder is intentionally set to a high integer of 10,100, to ensure that the SQL component loads after all other mod and DLC components.
The Properties element may be removed altogether if this functionality is not desired. Conversely, the integer may be increased if the number of other mod
and DLC components exceeds the value set below and the SQL component of this mod fails to load last of all.-->
<Properties>
<LoadOrder>10,100</LoadOrder>
</Properties>
<Items>
<File>UniqueDistrictsPopReqModSQL.sql</File>
</Items>
</UpdateDatabase>
</Components>
to force the component that inserts your mod's unique replacement for the Commercial Hub to load
after all the other DLC and mod components are loaded (see here for a full explanation of the method from PlotinusRedux:
LINK). If the pattern that you report repeats (i.e if all of a sudden Floating Markets get access to the buildings line up and your own mod's district loses it), then load order is the cause. If, however, nothing changes, then the root of the problem is elsewhere. Perhaps in the order in which the districts are placed into the tables.