#% MAX_SCORE: 100 # Wishbringer (Infocom Release 68, serial 850501, 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/wishbringer.z3 walkthroughs/wishbringer_verified_100.txt --seeds 2 # => wishbringer_verified_100.txt: VERIFIED 100/100 at seed 1 | 179 cmds | died=False | won=True # # Ending: the full one - the Magick Stone surrendered to the sculpture in # the Special Exhibits vault, Miss Voss and Festeron restored, and the # post-office door knock answered ("Congratulations! You've finished the # story of Wishbringer!") at 100 points in 162 game moves, ~19:45. The # route uses ZERO of the Stone's 7 Wishes: every puzzle is solved the # mundane way (snake-in-a-can vs the troll, tree branch vs the platypus, # grue-proof blanket in the nest, Violet's note vs Mr. Crisp, ALEXIS HEEL # vs the hellhound, the jail entered from the tunnels below so the Boot # Patrol never matters). # # Wishbringer is a V3 "time" game: the status-line globals hold the clock # (starting 15:00, 1 turn = 1 minute), not the score. The true score lives # in the game's own GSCORE global (variable 152) - zwalker's # get_score() knows this via a per-build override in zmachine.py. # # Why a pinned seed: the magic word POWER is rolled from RANDOM(3) at the # first post-office entry (KALUZE / FRATTO / SORKIN) and only revealed by # the pelican tracing it on a cloud - this recording carries seed 1's word # (KALUZE) parsed from that text at recording time. The fog/trail maze # adds a cumulative 10% death roll per wrong step (this route makes zero: # up "u w n u e s u", down "d n w d s e d"), the Witchville cemetery # scatters your whole inventory on a third consecutive turn (the route # reaches the open grave in two), and ambient events (vulture, rattling # mailbox, PICK-ONE flavor text) consume RNG draws that the recording's # fixed pacing absorbs. Mechanics verified against the official ZIL source # (github.com/historicalsource/wishbringer); route machine-validated at # 100/100 across 92 seeds during research and 10/10 seeds on this replay # pathway. Synthesis notes: logs/wishbringer_notes.md. # # Generated by scripts/solve_wishbringer_adaptive.py (adaptive recorder, # RNG seed 1); replay-verified by scripts/replay_solve.py. s z take envelope n w w yes n w e d take bone u s e e e give bone to poodle n z z take note n look in fountain take coin e e e take seahorse throw seahorse in bay w n n w w n n e u w n u e s u knock on door open door w z z z give envelope to woman open envelope read letter to woman z take can z z d n w d s e d take branch take branch w open can take can squeeze can take stone open gate s s w s look in pit put branch in pit take branch drop branch dig in sand take whistle blow whistle w z take hat z blow whistle s yes e d n e push bunk drop all u take blanket d take all n e put blanket on beast open fridge take worm w w open stump u n e e e give hat to pelican w w s s put worm in fountain take token e give coin to voss in give ticket to gravedigger n look under seat take glasses s out yes e s put token in slot push joystick west push joystick west push joystick south push joystick south press red button yes yes say KALUZE s z give note to crisp take coat take key unlock chains with key pull lever take note read note open hatch u look behind paintings u wear glasses take broom open second switch d take off glasses turn crank n n e alexis, heel open door in take steel key out n unlock library door with steel key in z s break case with broom put stone in sculpture yes yes knock on door