Remove unused enums.
[open-adventure.git] / newdungeon.py
index 6f95bb4232277da9b650112c761fa31184dd8529..68dbc39b1130c13d697758aa1dab9a03a2167015 100755 (executable)
@@ -548,7 +548,19 @@ def buildtravel(locs, objs, voc):
         elif cond[0] == "not":
             # FIXME: Allow named as well as numbered states
             try:
-                return 300 + objnames.index(cond[1]) + 100 * cond[2]
+                obj = objnames.index(cond[1])
+                if type(cond[2]) == int:
+                    state = cond[2]
+                else:
+                    for (i, stateclause) in enumerate(objs[obj][1]["longs"]):
+                        if type(stateclause) == list:
+                            if stateclause[0] == cond[2]:
+                                state = i
+                                break
+                    else:
+                        sys.stderr.write("dungeon: unmatched state symbol %s in not caluase of %s\n" % (cond[2], name))
+                        sys.exit(0);
+                return 300 + obj + 100 * state
             except ValueError:
                 sys.stderr.write("dungeon: unknown object name %s in not clause of %s\n" % (cond[1], name))
                 sys.exit(1)
@@ -598,8 +610,8 @@ def buildtravel(locs, objs, voc):
         if loc != oldloc:
             tkey.append(len(travel))
             oldloc = loc 
-            if travel:
-                travel[-1] *= -1
+        elif travel:
+            travel[-1] *= -1
         while rule:
             travel.append(rule.pop(0) + newloc * 1000)
         travel[-1] *= -1