# Deephome: A Telleen Adventure (Joshua Wise, 1999; Release 1 / serial 991210, # Inform 6 / Z-machine V5) # VERIFIED COMPLETE SOLVE: 300/300 (the game's canonical maximum), won=True, # died=False. # # Reproduce with the RNG-pinned replay harness (free, no API): # cd ~/src/zwalker # python3 scripts/replay_solve.py games/zcode/deephome.z5 \ # walkthroughs/deephome_verified_300.txt --seeds 24 \ # --out solutions/deephome_verified.json # => deephome_verified_300.txt: VERIFIED .../None at seed 1 | 315 cmds | # died=False | won=True # # Ending: with the power on, the water running, the city gate open, and all # three spirits dealt with -- the dark spirit Indanaz exorcised in the temple, # the shadow spirit Kebarn exorcised in the treasury, and the benign luminous # spirit Cholok given a squirrel to inhabit -- the dwarven Reclaimer cleanses # the last spirit and the game ends: # "*** You have won *** # In that game you scored 300 out of a possible 300, in 315 turns, # You have gone beyond the call of duty and vanquished the spirits. You # will be remembered forever by your people." # # Why WIN_TEXT and NOT MAX_SCORE (important): this is a V5 build, so vm.get_score() # reads the V3 status-var 17, which is a fixed low value here and never the real # score (the true score is the status-line "Score:" == global var 21). Declaring # `#% MAX_SCORE: 300` would make replay_solve compare that broken get_score() # against 300 and report won=False; verification is therefore done purely by the # winning banner below. The interpreter is shared code and must not be modified, # so no _SCORE_VAR_OVERRIDES entry was added. (The game's real max is 300; the # SCORE verb says "out of a possible 300". Visiting every one of the 46 Deephome # rooms would actually yield 301 -- an off-by-one that prints the absurd "301 out # of a possible 300" and a LOWER rank -- so the route deliberately skips one # optional room, Dwarven Village, to hit the intended 300 and its top rank.) # # Why a pinned seed (no restart prelude -- boot draws no randomness; two boots # are byte-identical and the seed is pinned right after start()): the only # state-relevant randomness is the Eranti fight at the pond south of Ember. With # the Sword wielded and the shield worn the dwarf auto-heals between blows and # reliably wins; under seed 1 exactly ten `kill eranti` blows kill it (+20) and # he is never in danger. Everything else is turn-based clockwork -- the Main-Hall # spirit's ~4-turn paralysis (waited out with five z's) and the metal scraps # melting in the furnace (one z) -- and replays identically under any seed with # the same command list. Route synthesis: logs/deephome_notes.md and # logs/deephome_route.txt. # # Route summary: push the mountain symbol to open the barred door and enter the # city; grab sword+shield; wait out the paralysing dark spirit; sweep the streets, # temple, royal roads (take the glowing moss), throne room and gates (open the # panel hatch); mine a pickaxe and dig coal, fuel+fire the City Generator -> # POWER; ride the coloured rail cars (yellow/green/red) round the four station # wings; grab the gate gear at the blacksmith; drop moss in the waterfall nest to # oust the terrock, clear the intake pipe, turn the Water Works wheel -> WATER; # seat the gear and open the GATE; through the enchanted woods to Ember for the # four-leaf clover; kill the Eranti to earn the tool-shop hammer; forge a sharp # pick from scraps (torch-lit forge + anvil + hammer); pick the bank deposit box # for the large key, open the vault, take the gold coin; pick the shack chest for # the net, trap the squirrel (hole+net+acorns+climb), release it in the throne # room so the benign spirit has a host; ashes from a burned blank paper + water + # clover + coin + "pray to Kraxis"/"manaz" banish Indanaz in the temple; net + # coin + water + "pray to Kraxis"/"manaz" banish Kebarn in the treasury -> win. # # Generated by scripts/solve_deephome_adaptive.py (adaptive recorder, RNG seed 1); # replay-verified by scripts/replay_solve.py. #% WIN_TEXT: \*\*\* You have won \*\*\* push mountain sw open cabinet take sword wield sword take shield wear shield sw z z z z z s ne sw e w w open desks e s e w w e s drop order w s n w take moss n s w w e e e e e se open hatch nw w s sw ne s s take axe n e dig rock with axe take coal w n e open furnace put coal in furnace close furnace pull lever w n n e w n n w enter car push yellow button out nw sw open forge take gear ne w e nw se n s ne sw e w se enter car push green button out w w e s n sw sw ne ne e enter car push red button out sw n w e s ne enter car push yellow button out enter car push green button out w sw sw put moss in nest push rod ne ne e enter car push yellow button out e s s s s sw turn wheel ne n e se put gear on post close hatch push lever push button s w w w sw w s e n w e x clover take four leaf clover s e e e s s s w e s w ask man about hammer ask man about eranti e s kill eranti kill eranti kill eranti kill eranti kill eranti kill eranti kill eranti kill eranti kill eranti kill eranti n w ask man about hammer take hammer e n n n n n nw w n n n take torch w enter car push yellow button out nw sw take scrap put scrap in furnace burn coal with torch z take scraps put scraps on anvil hammer scraps take metal pick ne se enter car push red button out sw n unlock box with metal pick open box look in box take large key s unlock door with large key drop large key open door w search wealth take gold coin e ne enter car push yellow button out e s s s e se s s s s s e unlock chest with metal pick open chest take net w n n dig ground with axe put net on hole take acorns put acorns in net climb tree down take net n n n nw w w w w w open net e e e e drop axe drop metal pick n n w take paper e e take bottle fill bottle burn blank paper with torch w s w drop coin pour water on coin put ashes on coin put clover on coin pray to Kraxis manaz take coin take all from coin e n e fill bottle w n w enter car push red button out sw w open net drop net put coin in net pour water on net take coin pray to Kraxis manaz