def section3(data, x, y, *verbs): last_travel = data._last_travel if last_travel[0] == x and last_travel[1][0] == verbs[0]: verbs = last_travel[1] # same first verb implies use whole list else: data._last_travel = [x, verbs] m, n = divmod(y, 1000) mh, mm = divmod(m, 100) if m == 0: condition = (None, ) elif 0 < m < 100: condition = ('%', m) elif m == 100: condition = ('not_dwarf', ) elif 100 < m <= 200: condition = ('carrying', mm) elif 200 < m <= 300: condition = ('carrying_or_in_room_with', mm) elif 300 < m: condition = ('prop!=', mm, mh - 3) if n <= 300: action = make_object(data.rooms, Room, n) elif 300 < n <= 500: action = n # special computed goto else: action = make_object(data.messages, Message, n - 500) move = Move() if len(verbs) == 1 and verbs[0] == 1: move.is_forced = True else: move.verbs = [ make_object(data.vocabulary, Word, verb_n) for verb_n in verbs if verb_n < 100 ] # skip bad "109" move.condition = condition move.action = action data.rooms[x].travel_table.append(move)
def section3(data, x, y, *verbs): last_travel = data._last_travel if last_travel[0] == x and last_travel[1][0] == verbs[0]: verbs = last_travel[1] # same first verb implies use whole list else: data._last_travel = [x, verbs] m, n = divmod(y, 1000) mh, mm = divmod(m, 100) if m == 0: condition = (None,) elif 0 < m < 100: condition = ("%", m) elif m == 100: condition = ("not_dwarf",) elif 100 < m <= 200: condition = ("carrying", mm) elif 200 < m <= 300: condition = ("carrying_or_in_room_with", mm) elif 300 < m: condition = ("prop!=", mm, mh - 3) if n <= 300: action = make_object(data.rooms, Room, n) elif 300 < n <= 500: action = n # special computed goto else: action = make_object(data.messages, Message, n - 500) move = Move() if len(verbs) == 1 and verbs[0] == 1: move.is_forced = True else: move.verbs = [make_object(data.vocabulary, Word, verb_n) for verb_n in verbs if verb_n < 100] # skip bad "109" move.condition = condition move.action = action data.rooms[x].travel_table.append(move)