Okay I've traced down why the Dark Sanctum never shows up for building other than the static forge, sanctum, tavern pick menu at the beginning of the game. The devs use a Python class framework for castle buildings in game/core/buildings.rpy that defines a base class Building (derived from Python Object) that has a req_met method defined that simply returns true. Orc Barracks are defined as a class Barracks which derives from Building and thus inhierits this method. Then they define a MagicBuilding class that derives from Building which overrides this method with some more intricate checks involving library capacity.
Now here's the problem with the Dark Sanctum. They define it as an instance of a class DarkSanctum which has multiple inhieritance from both Barracks and MagicBuilding. Using Multiple Inhieritance is always fraught with peril for Python and C++ unless you take care to not define overlapping method or property names. Here they have defined req_met as a method in both parents. So what's a poor compilor/interpreter to do? Which method req_met ends up being used? Obviously the one that causes the most user grief! So I modded the DarkSanctum class def to explicitly redefine the req_met method to return True again. That fixes the can_be_built() and can_be_shown() checks in the creation of the Workshop build menu.
TLDR: Instead of waiting for them to do the next release in a couple of months where they fix this I'm attaching a zip of the game/core/buildings.rpy where I change the class def at line 130 from:
Code:
class DarkSanctum(Barracks, MagicBuilding):
def __init__(self, uid):
super(DarkSanctum, self).__init__(uid)
# remove equipment (cubis don't use it)
del self.equipment
to
Code:
class DarkSanctum(Barracks, MagicBuilding):
def __init__(self, uid):
super(DarkSanctum, self).__init__(uid)
# remove equipment (cubis don't use it)
del self.equipment
def req_met(self):
return True
The astute will notice that this basically makes the whole point of deriving DarkSanctum from MagicBuilding moot, but maybe their fix will end up doing something better with MagicBuilding down the road. It's still a really bad idea to have the same method name in both parents