Prev: 36880 Up: Map Next: 37272
36884: Handler: Pick Up Object
Mark the given object as carried and print the result.
HandlerPickUpObject 36884 LD C,1 Call UpdateObjectLocation to mark the object as carried.
36886 CALL UpdateObjectLocation
36889 LD HL,25132 The player is carrying one more object.
36892 INC (HL)
36893 LD HL,25702 Print "O.K." and start a new line.
36896 JR HandlerPickUpObject_Loop2
HandlerPickUpObject_Loop1 36898 LD HL,25691 Print "You can't." and start a new line.
This entry point is used by the routine at ActionTake.
HandlerPickUpObject_Loop2 36901 CALL PrintStringAndANewline }
36904 RET Return.
This entry point is used by the routine at ActionTake.
HandlerPickUpObject_Step1 36905 LD HL,35161 Point at the phrase at 35161 and call Parser_AdvanceToSeparator to match it against the command.
36908 CALL Parser_AdvanceToSeparator
36911 JR NZ,HandlerPickUpObject_Step2 Jump to HandlerPickUpObject_Step2 if it doesn't match.
36913 LD A,0 Take A knife. (0).
36915 CALL ActionTake_Step1
36918 JP HandlerPickUpObject
HandlerPickUpObject_Step2 36921 LD HL,35177 Point at the phrase at 35177 and call Parser_AdvanceToSeparator to match it against the command.
36924 CALL Parser_AdvanceToSeparator
36927 JR NZ,HandlerPickUpObject_Step3 Jump to HandlerPickUpObject_Step3 if it doesn't match.
36929 LD A,1 Take A laser pistol. (1).
36931 CALL ActionTake_Step1
36934 JP HandlerPickUpObject
HandlerPickUpObject_Step3 36937 LD HL,35168 Point at the phrase at 35168 and call Parser_AdvanceToSeparator to match it against the command.
36940 CALL Parser_AdvanceToSeparator
36943 JR NZ,HandlerPickUpObject_Step4 Jump to HandlerPickUpObject_Step4 if it doesn't match.
36945 LD A,2 Take A coin. (2).
36947 CALL ActionTake_Step1
36950 JP HandlerPickUpObject
HandlerPickUpObject_Step4 36953 LD HL,35182 Point at the phrase at 35182 and call Parser_AdvanceToSeparator to match it against the command.
36956 CALL Parser_AdvanceToSeparator
36959 JR NZ,HandlerPickUpObject_Step5 Jump to HandlerPickUpObject_Step5 if it doesn't match.
36961 LD A,3 Take A crystal rod. (3).
36963 CALL ActionTake_Step1
36966 JP HandlerPickUpObject
HandlerPickUpObject_Step5 36969 LD HL,35136 Point at the phrase at Table_PhraseLists and call Parser_AdvanceToSeparator to match it against the command.
36972 CALL Parser_AdvanceToSeparator
36975 JR NZ,HandlerPickUpObject_Step6 Jump to HandlerPickUpObject_Step6 if it doesn't match.
36977 LD A,4 Take A detonator. (4).
36979 CALL ActionTake_Step1
36982 JP HandlerPickUpObject
HandlerPickUpObject_Step6 36985 LD HL,35172 Point at the phrase at 35172 and call Parser_AdvanceToSeparator to match it against the command.
36988 CALL Parser_AdvanceToSeparator
36991 JR NZ,HandlerPickUpObject_Step7 Jump to HandlerPickUpObject_Step7 if it doesn't match.
36993 LD A,5 Take A metal bar. (5).
36995 CALL ActionTake_Step1
36998 JP HandlerPickUpObject
HandlerPickUpObject_Step7 37001 LD HL,35187 Jump to HandlerPickUpObject_Step10 unless the command matches the phrase at 35187 (A glowing sphere. (6)).
37004 CALL Parser_AdvanceToSeparator
37007 JR NZ,HandlerPickUpObject_Step10
37009 LD A,6
37011 CALL ActionTake_Step1
37014 LD A,6 Jump to HandlerPickUpObject_Step9 when A glowing sphere. (6) is here or being carried.
37016 CALL IsObjectInCurrentRoom
37019 JR Z,HandlerPickUpObject_Step9
37021 LD A,60 Jump back to HandlerPickUpObject_Loop1 when A glowing sphere sitting on a raised dish on a glass pedestal. (60) is not here or being carried.
37023 CALL IsObjectInCurrentRoom
37026 JP NZ,HandlerPickUpObject_Loop1
37029 EXX Keep the command pointer safe while the sphere is moved.
37030 LD BC,15360 Move A glowing sphere sitting on a raised dish on a glass pedestal. (60) to nowhere (0).
37033 CALL UpdateObjectLocation
37036 LD A,(25123) Fetch the current room.
37039 CP 28 The sphere was not picked up in The Crystal Chamber..
37041 JR NZ,HandlerPickUpObject_Step8
37043 LD BC,5404 Move A glass pedestal with a raised dish on top. (21) to The Crystal Chamber. (28).
37046 CALL UpdateObjectLocation
37049 EXX Bring the command pointer back.
37050 JR HandlerPickUpObject_Step9 Continue at HandlerPickUpObject_Step9 to pick the object up.
HandlerPickUpObject_Step8 37052 LD BC,5651 Move A glass pedestal with a raised dish on top. (22) to The Blue Room. (19).
37055 CALL UpdateObjectLocation
37058 EXX Bring the command pointer back.
HandlerPickUpObject_Step9 37059 JP HandlerPickUpObject Jump to HandlerPickUpObject to pick the object up.
HandlerPickUpObject_Step10 37062 LD HL,35138 Jump to HandlerPickUpObject_Step12 unless the command matches the phrase at 35138 (Some poison fungus. (7)).
37065 CALL Parser_AdvanceToSeparator
37068 JR NZ,HandlerPickUpObject_Step12
37070 LD A,7
37072 CALL ActionTake_Step1
37075 LD A,57 Jump back to HandlerPickUpObject when A pair of gloves,which you are wearing. (57) is here or being carried.
37077 CALL IsObjectInCurrentRoom
37080 JP Z,HandlerPickUpObject
HandlerPickUpObject_Step11 37083 LD HL,36275 Return to Game Over (GameOver) after the message.
37086 EX (SP),HL
37087 LD HL,31400 Print "As soon as you touch the fungus, a terrible pain racks your body. You collapse to the floor." and start a new line.
37090 JP HandlerPickUpObject_Loop2
HandlerPickUpObject_Step12 37093 LD HL,35192 Jump to HandlerPickUpObject_Step14 unless the command matches the phrase at 35192 (Some round stones. (8)).
37096 CALL Parser_AdvanceToSeparator
37099 JR NZ,HandlerPickUpObject_Step14
37101 LD A,8
37103 CALL ActionTake_Step1
37106 LD A,34 Jump to HandlerPickUpObject_Step13 when An alcove containing some round stones. (34) is not here or being carried.
37108 CALL IsObjectInCurrentRoom
37111 JR NZ,HandlerPickUpObject_Step13
37113 EXX Keep the command pointer safe while the stones are moved.
37114 LD BC,8704 Move An alcove containing some round stones. (34) to nowhere (0).
37117 CALL UpdateObjectLocation
37120 LD BC,9006 Move An empty alcove. (35) to The Torture Chamber. (46).
37123 CALL UpdateObjectLocation
37126 EXX Bring the command pointer back.
HandlerPickUpObject_Step13 37127 JP HandlerPickUpObject Jump to HandlerPickUpObject to pick the object up.
HandlerPickUpObject_Step14 37130 LD HL,35170 Jump to HandlerPickUpObject_Step16 unless the command matches the phrase at 35170 (A key. (9)).
37133 CALL Parser_AdvanceToSeparator
37136 JR NZ,HandlerPickUpObject_Step16
37138 LD A,9
37140 CALL ActionTake_Step1
37143 LD A,59 Jump back to HandlerPickUpObject_Loop1 when A key in the control panel. The key is set to 'ON'. (59) is here or being carried.
37145 CALL IsObjectInCurrentRoom
37148 JP Z,HandlerPickUpObject_Loop1
37151 LD A,58 Jump to HandlerPickUpObject_Step15 when A key in the control panel. The key is set to 'OFF'. (58) is not here or being carried.
37153 CALL IsObjectInCurrentRoom
37156 JR NZ,HandlerPickUpObject_Step15
37158 EXX Keep the command pointer safe while the key is moved.
37159 LD BC,14848 Move A key in the control panel. The key is set to 'OFF'. (58) to nowhere (0).
37162 CALL UpdateObjectLocation
37165 LD BC,10806 Move A keyhole in the control panel. (42) to The Reactor Room. (54).
37168 CALL UpdateObjectLocation
37171 EXX Bring the command pointer back.
HandlerPickUpObject_Step15 37172 JP HandlerPickUpObject Jump to HandlerPickUpObject to pick the object up.
HandlerPickUpObject_Step16 37175 LD HL,35163 Point at the phrase at 35163 and call Parser_AdvanceToSeparator to match it against the command.
37178 CALL Parser_AdvanceToSeparator
37181 JR NZ,HandlerPickUpObject_Step17 Jump to HandlerPickUpObject_Step17 if it doesn't match.
37183 LD A,10 Take A space axe. (10).
37185 CALL ActionTake_Step1
37188 JP HandlerPickUpObject
HandlerPickUpObject_Step17 37191 LD HL,35143 Point at the phrase at 35143 and call Parser_AdvanceToSeparator to match it against the command.
37194 CALL Parser_AdvanceToSeparator
37197 JR NZ,HandlerPickUpObject_Step18 Jump to HandlerPickUpObject_Step18 if it doesn't match.
37199 LD A,11 Take Some explosives. (11).
37201 CALL ActionTake_Step1
37204 JP HandlerPickUpObject
HandlerPickUpObject_Step18 37207 LD HL,35197 Jump to HandlerPickUpObject_Step19 unless the command matches the phrase at 35197 (A pair of gloves,which you are wearing. (57)).
37210 CALL Parser_AdvanceToSeparator
37213 JR NZ,HandlerPickUpObject_Step19
37215 LD A,57
37217 CALL ActionTake_Step1
37220 LD A,12 A pair of gloves. is the object this phrase really takes.
37222 CALL ActionTake_Step1 Call ActionTake_Step1 to take that object.
37225 JP HandlerPickUpObject Jump to HandlerPickUpObject to pick the object up.
HandlerPickUpObject_Step19 37228 LD HL,35672 Jump to HandlerPickUpObject_Step21 unless the command matches the phrase at 35672.
37231 CALL Parser_AdvanceToSeparator
37234 JR NZ,HandlerPickUpObject_Step21
37236 LD A,(25123) Fetch the current room.
37239 CP 4 The ship can be claimed only from In the Galaxy at rest,on a landing pad..
37241 JP NZ,HandlerPickUpObject_Loop1
37244 LD A,64 Jump back to HandlerPickUpObject_Loop1 when The ship is ready to take off. (64) is not here or being carried.
37246 CALL IsObjectInCurrentRoom
37249 JP NZ,HandlerPickUpObject_Loop1
37252 LD A,14 Jump to HandlerPickUpObject_Step20 when The airlock is closed. (14) is here or being carried.
37254 CALL IsObjectInCurrentRoom
37257 JR Z,HandlerPickUpObject_Step20
37259 LD HL,33996 Print "Not with an open airlock!" and start a new line.
37262 JP HandlerPickUpObject_Loop2
HandlerPickUpObject_Step20 37265 POP HL The ship is ready, so the game can end.
37266 JP GameComplete Jump to GameComplete to game complete.
HandlerPickUpObject_Step21 37269 JP HandlerPickUpObject_Loop1 Continue at HandlerPickUpObject_Loop1 to say the player can't.
Prev: 36880 Up: Map Next: 37272