X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=newdungeon.py;h=68dbc39b1130c13d697758aa1dab9a03a2167015;hb=e49ba9fb2bae5fa4cba7342f952f77565eef837f;hp=6f95bb4232277da9b650112c761fa31184dd8529;hpb=d53bc1c54ceb161850d560c4802daeccd86a4714;p=open-adventure.git diff --git a/newdungeon.py b/newdungeon.py index 6f95bb4..68dbc39 100755 --- a/newdungeon.py +++ b/newdungeon.py @@ -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