alright, I beat it! I mayyy have cheated by using a well-placed stop()
to look at the map (I was stuck in the dungeon – funny solution in retrospect! should have found it)
ahh the softlock makes sense now – cool to see the raw code peeking through like that! but fixing it seems good, much nicer now