I have just done an upgrade of the Mechanical Tarot scenario generator, and I think it’s ready for prime time. The concept behind the Mechanical Tarot is that various NPCs, factions, locations, and props get “Cards” attached to them. These cards define the role of whatever they’re attached to, and also define how this thing can interact with other things. By constructing a sequence of interactions we can procedurally generate puzzles and situations for the player to interact with.
The refactoring gives the Mechanical Tarot cards a well-defined interface for describing interactions. Cards now have lists of Signals and Sockets; a Signal is a message this card can send to other cards, while a Socket is a possible game event waiting for a signal to activate it. The cards themselves are now bare-bone lists of interactions; the game content gets handled by subordinate plots that the card loads upon activation.
These subordinate plots just need to focus on one purpose each, so they can be relatively small and reusable. For instance, the plot for discovering a clue just needs to place the clue item somewhere in the world, while the plot for linking the clue to a crime just needs to check that particular socket for activation. Neither plot needs to know or care about the other. This is much better than previous versions of the Mechanical Tarot system in which the cards had to handle both their interactions and their game content.