#% MAX_SCORE: 100 # The Lurking Horror (Infocom Release 221, serial 870918, Z-machine V3) # VERIFIED COMPLETE SOLVE: 100/100, won=True, died=False # # Reproduce with the RNG-pinned replay harness (free, no API): # cd ~/src/zwalker # python3 scripts/replay_solve.py games/zcode/lurking.z3 walkthroughs/lurking_verified_100.txt --seeds 24 --out solutions/lurking_verified.json # => lurking_verified_100.txt: VERIFIED 100/100 at seed 1 | 306 cmds | died=False | won=True # # Ending: the high-voltage line is plugged into the lair box, the whitish # mass compacts into the winged frob, and the red-hot smooth stone thrown # down its throat makes it swallow itself; picking the cracked stone up # frees something small and winged, and the hacker crawls out of the mud: # "Can I have my key back?" — "Your score is 100 of a possible 100, in 310 # moves. Graded on the curve, you are in the class of President of the # Institute." # # Why a pinned seed (no restart prelude needed — boot draws no randomness; # two boots are byte-identical and the seed is pinned right after start()): # the game has exactly two pieces of state-relevant randomness. (1) The # urchin wanders a random open exit every 10 turns and ROBS every takeable # object out of any player-less room he enters (I-URCHIN, frob.zil:346-436) # — the route stashes tools twice (Tomb-crack size limit, elevator-shaft # trip) and needs to MEET him once, animated hand out, to scare the bolt # cutter loose; (2) entering the elevator pit or Steam Tunnel East presses # a random elevator call button 25% of the time (RANDOM-ELEVATOR-MOTION, # cs.zil:3460-3464), which can park the car away from floor 1 where the # chain-to-hook gag needs it. Under seed 1 the urchin walks into the # Infinite Corridor west end right on schedule, never robs a stash, and # the car stays put. Everything else is turn-based clockwork (waxer # 5-turn ping-pong, rat approach, professor TIED-UP? count, microwave, # freeze/exhaustion timers, frob END-CNT window) and replays identically # under any seed with the same command list. Mechanics verified against # the official ZIL source (github.com/historicalsource/lurkinghorror); # route machine-validated at 100/100 on seeds 1,3,4,5 verbatim and on # 2,7 with the recorded adaptive recoveries (6/8 sweep) during research. # Synthesis notes: logs/lurking_notes.md; route: logs/lurking_route.txt. # # Route summary (5 pts each; 19 awards = 95, the kill sets SCORE=100): # login 872325412/uhlersoth (feelies), corrupted paper -> Yuggoth dream, # STONE; microwave Szechuan 5:00 HI -> hacker -> MASTER KEY; flashlight # from elevator panel; gloves+crowbar; forklift clears Dead Storage -> # ANCIENT STORAGE; pry MANHOLE, altar knife; wax the corridor, axe the # waxer cord, MAINTENANCE MAN slips; tentacle-rope to TOP OF DOME, bronze # plug -> suicide NOTE, lower ladder; Brown tower: boots, weather dome, # dig HAND, stone chases FLIER off the roof; show note to PROFESSOR, cut # pentagram line, flee down the trapdoor (he is taken); Elixir vat # ANIMATES THE HAND; scare the urchin -> BOLT CUTTER; padlock off the # Tomb hatch -> STEAM TUNNEL; crowbar the valve twice, steam SCALDS THE # RATS; pry two bricks; wedge the doors, CONCRETE BOX, chain rod to hook, # ride up -> BRICK WALL ripped out; back through the hole with axe, # cutter, flask; CUT THE URCHIN WIRE; maze d-n-d-s-s-d; liquid nitrogen # shatters the CURTAIN; unlock the ancient door; open box, unplug coax, # fish out the line, three axe blows, plug it in -> FROB appears; wait # one turn, THROW STONE -> 100/100; take stone -> epilogue & FINISH. # # Generated by scripts/solve_lurking_adaptive.py (adaptive recorder, RNG # seed 1); replay-verified by scripts/replay_solve.py. #% WIN_TEXT: President of the Institute sit on chair turn on pc login 872325412 password uhlersoth click menu click paper read paper z z z z d d take stone z z z z z z ask hacker about keys s w open fridge take coke and carton open microwave put carton in microwave close microwave press 5 press 0 press 0 press hi press start z z z z open microwave take carton e n give carton to hacker hacker, give me master key drop assignment s press down z z s open panel take flashlight press 1 z z z n look n d e take gloves and crowbar wear gloves w w enter forklift turn on forklift e e e turn on flashlight move junk with forklift again again again turn off forklift get out of forklift e open manhole with crowbar d n d take knife u s u w w turn off flashlight w w w u s take container e e z z z e z z z e smash cabinet with crowbar take axe cut cord with axe open container pour wax on floor drop container w u climb rope open door n u take plug drop plug take paper d s close door lower ladder d d e e n d se take boots wear boots u u unlock door with key open door w u dig in dirt take hand d throw stone at creature e d d u out take stone in d nw u s s knock on door z z show note to professor s z z cut line with knife exit pentagram move bench open trapdoor d turn on flashlight open trapdoor u put hand in vat z z take hand drink coke n open door n turn off flashlight n w w w w show hand to urchin take bolt cutter n d e e e u take flask d w e u turn on flashlight take flask d turn off flashlight w drop flask drop axe drop bolt cutter drop knife drop coke w w d nw unlock padlock with key take padlock open hatch turn on flashlight d e open valve with crowbar z z z open valve with crowbar close valve e e move brick with crowbar move new brick with crowbar look through hole w w w w u se u turn off flashlight e e w u se u e e look open doors with crowbar put crowbar in doors s take chain put chain around rod lock chain with padlock u put chain on hook take crowbar u press up z z press up s press 2 z z z n d d take axe take bolt cutter take flask open doors with crowbar put crowbar in doors turn on flashlight s n w w w w w w d cut wire with cutter d n d s s d open flask pour liquid on curtain drop flask unlock door with key open door s open cover unplug coaxial cable search pool take line cut line with axe again again take line put line in socket z throw stone at creature take stone