--- /dev/null
+#!/usr/bin/env python3
+
+# Make a DOT graph of the dungeon
+#
+# Copyright (c) 2017 by Eric S. Raymond
+# SPDX-License-Identifier: BSD-2-clause
+
+import sys, yaml
+
+def allalike(loc):
+ "Select out loci related to the Maze All Alike"
+ return (loc == "LOC_MISTWEST") or ("ALIKE" in loc) or ("DEADEND" in loc) or ("STALACTITE" in loc)
+
+if __name__ == "__main__":
+ with open("adventure.yaml", "r") as f:
+ db = yaml.safe_load(f)
+
+ print("digraph G {")
+ for (loc, attrs) in db["locations"]:
+ if not allalike(loc):
+ continue
+ travel = attrs["travel"]
+ if len(travel) > 0:
+ for dest in travel:
+ verbs = dest["verbs"]
+ if len(verbs) == 0:
+ continue
+ action = dest["action"]
+ if action[0] == "goto":
+ arc = "%s -> %s" % (loc[4:], action[1][4:])
+ label=",".join(verbs).lower()
+ if len(label) > 0:
+ arc += ' [label="%s"]' % label
+ print(" " + arc)
+ print("}")
+
+