in textworld/generator/maker.py [0:0]
def set_walkthrough(self, commands: List[str]):
with make_temp_directory() as tmpdir:
game_file = self.compile(pjoin(tmpdir, "set_walkthrough.ulx"))
env = textworld.start(game_file, infos=EnvInfos(last_action=True, intermediate_reward=True))
state = env.reset()
events = {event: event.copy() for quest in self.quests for event in quest.win_events}
event_progressions = [ep for qp in state._game_progression.quest_progressions for ep in qp.win_events]
done = False
actions = []
for i, cmd in enumerate(commands):
if done:
msg = "Game has ended before finishing playing all commands."
raise ValueError(msg)
events_triggered = [ep.triggered for ep in event_progressions]
state, score, done = env.step(cmd)
actions.append(state._last_action)
for was_triggered, ep in zip(events_triggered, event_progressions):
if not was_triggered and ep.triggered:
events[ep.event].actions = list(actions)
events[ep.event].commands = commands[:i + 1]
for k, v in events.items():
k.actions = v.actions
k.commands = v.commands