# Suspended (Infocom Release 8, serial 830521, Z-machine V3) # VERIFIED COMPLETE SOLVE: won=True (planet restored, ranking 1 of 7 - the # best bracket), died=False # # Reproduce with the RNG-pinned replay harness (free, no API): # cd ~/src/zwalker # python3 scripts/replay_solve.py games/zcode/suspended.z3 walkthroughs/suspended_verified_win.txt --seeds 24 --out solutions/suspended_verified.json # => suspended_verified_win.txt: VERIFIED 0/None at seed 1 | 72 cmds | died=False | won=True # # Suspended is scoreless in the conventional sense: its SCORE verb reports # surface CASUALTIES and elapsed cycles ("There have been N casualties # (original population: 30,172,000) in N cycles."), the custom three-line # status display tracks the six robots (status.zil), and vm.get_max_score() # is None. Hence the WIN_TEXT directive below: it matches the closing line # of END-GAME (robots.zil:696), the routine reached ONLY by keying the # correct two-circle reset code into the Main Supply Room machine after both # damaged Filtering-Computer cables have been replaced (CIRCLE-FCN, # objects.zil:1610-1648). Every losing ending - intruders pulling your plug # (people.zil:317,465), food collapse (robots.zil:614), 30,000,000 dead # (I-SCORE -> ALL-DEAD+FINISH, robots.zil:712) - prints nothing like it. # # Ending: "All systems returning to normal. ... Current surface casualties: # 8,000 ... Total possible survivors: 30,164,000 ... This score gives you # the possibility of being considered for a home in the country and an # unlimited bank account. On a scale of 1 (the best) to 7 (the worst), your # ranking was 1. You successfully completed your task, bringing the # Filtering Computers back into balance, in 71 cycles." # # Why a pinned seed: boot draws no randomness (two boots byte-identical; # the seed is pinned right after start(), no restart prelude). Every # disaster clock is a fixed cycle count - acid floods the Cavernous Room at # cycle 15 (I-TREMOR1, main.zil:45, ACID-KILLS=15), the second quake hits # hydroponics/transit at cycle 75 (I-TREMOR2, RTD-KILLS=75), the human # intruders arrive at cycle 100 (I-PEOPLE1, PEOPLE-APPEAR=100); this route # wins at cycle 71, before the last two ever fire. The ONE state-relevant # RNG draw is GENERATE-CODES (objects.zil:1660-1667), rolled the first time # Poet takes the TV camera (TV-FCN, objects.zil:790): it PICK-ONEs two of # the eight lettered reset circles (FOO MUM BLE BAR KLA CON BOZ TRA). Under # seed 1 with this exact command list the code is MUM+KLA (Iris reads it off # the Primary Channel signpost via Poet's plugged-in TV: "It says MUMKLA.", # verbs.zil:1864), so the two presses below match. Cosmetic PICK-ONE quips # (robot yuks, Iris-blind lines) also consume RNG, which is why the command # list must be replayed verbatim. Machine-validated by the adaptive # recorder on seeds 1-12: 12/12 wins, identically 71 cycles and 8,000 # casualties every time (only the code pair differs). Mechanics verified # against the official ZIL source (github.com/historicalsource/suspended); # synthesis notes: logs/suspended_notes.md; route: logs/suspended_route.txt. # # Route summary (71 cycles, three robots sacrificed - Poet, Waldo, Sensa): # Poet sets weather dial 2 to 100 (counters PRESSURE2 decay, keeps WINDS # casualties near zero); Whiz pre-positions in the Secondary Channel BEFORE # the cycle-15 acid spill; Sensa fetches the wedge/ramp, basket of ICs and # microsurgery grasper, opens the Hallway Junction dropoff (WEDGE-PLACED=2); # Waldo installs the grasper and fixes blind Iris (swap fried CX1 "rough # device" for blue RX1 "rough object" in her panel, close it: "You never # looked so good."); Poet rides the car to the Biological Lab and takes the # TV camera (=> reset code rolled); Sensa grabs the wire cutter off the # Small Supply top shelf (stand on ramp); Waldo re-chips the reset machine # (red RX0 IC -> red socket, yellow RX2 IC -> yellow socket), presses the # orange button; IRIS TAKES THE FUSE FIRST (touching the exposed fourteen- # inch cable with the fuse in is instant robot death, objects.zil:1465), # Waldo hauls the fourteen-inch cable on a one-way run through the acid # (dies on arrival in the Secondary Channel, where Whiz takes it and swaps # out the nine-inch cable => ORANGESET); Poet's own one-way run: plug TV # into the Primary Channel hole, aim at the sign on his final two cycles; # Sensa opens FRED's cabinet with the flowswitch, moves FRED with Auda # (two-robot command), cuts out the twelve-inch wire and hauls it through # the acid to the Primary Channel, swapping out the four-inch cable => # REDSET => "Reset codes may be entered now"; Iris (spare sixteen-inch # cable + fuse back in the machine) presses MUM, then KLA => END-GAME. # # Generated by scripts/solve_suspended_adaptive.py (adaptive recorder, RNG # seed 1); replay-verified by scripts/replay_solve.py. #% WIN_TEXT: successfully\s+completed\s+your\s+task,\s+bringing\s+the\s+Filtering\s+Computers\s+back\s+into\s+balance poet, go to weather control sensa, go to sub supply room whiz, go to secondary channel sensa, take ramp sensa, go west sensa, take container and grasper sensa, go to hallway junction waldo, go to hallway junction auda, go to gamma repair poet, turn second dial to 100 poet, go to hallway end iris, go to main supply room iris, look sensa, put ramp at dropoff auda, listen waldo, take container and grasper waldo, go to main supply waldo, install grasper waldo, take red ic and yellow ic sensa, go north sensa, take ramp sensa, go to small supply waldo, open panel waldo, replace rough device with rough object waldo, close panel poet, get in car poet, get out of car poet, go to biology lab waldo, take burned chip and fried chip poet, take camera sensa, put ramp at holder sensa, get on ramp sensa, take cutter sensa, get off ramp sensa, take ramp sensa, go to sloping corridor poet, go to vehicle debarkation waldo, put red ic in red socket waldo, put yellow ic in yellow socket poet, get in car poet, get out of car poet, go to primary channel sensa, put ramp at dropoff sensa, go to gamma repair waldo, push button iris, take fuse waldo, take cable waldo, go to secondary channel iris, go to middle supply iris, take cable iris, go to main supply sensa, examine cabinet sensa, turn flowswitch both sensa and auda, move fred sensa, cut cable with cutter poet, plug tv1 in poet, aim tv1 at sign sensa, take cable sensa, go to primary channel iris, put cable in machine iris, put fuse in machine whiz, take fourteen-inch cable whiz, replace nine-inch cable with fourteen-inch cable auda, go to sleep chamber iris, look iris, look iris, look iris, look iris, look sensa, replace four-inch cable with twelve-inch cable iris, press mum circle iris, press kla circle