![]() |
Routines |
| Prev: 36884 | Up: Map | Next: 37755 |
|
Put a carried object down in the current room.
|
||||
| ActionDrop | 37272 | CALL Parser_ValidateDirectObject | Return if the command does not name a single object. | |
| 37275 | RET C | |||
| 37276 | CP 3 | Jump to ActionDrop_Step4 when the command names fewer than 3 nouns. | ||
| 37278 | JR C,ActionDrop_Step4 | |||
| 37280 | LD HL,25669 | Print "Please rephrase that." and start a new line. | ||
| 37283 | JR ActionDrop_Loop4 | |||
| ActionDrop_Loop1 | 37285 | CALL IsObjectCarried | Call IsObjectCarried to test whether the object is carried. | |
| 37288 | JR Z,ActionDrop_Step3 | The named object is being carried. | ||
| ActionDrop_Loop2 | 37290 | LD HL,31321 | Print You're not carrying on the same line. | |
| 37293 | CALL PrintString | |||
| 37296 | LD A,E | The object number selects the plural list. | ||
| ActionDrop_Step1 | 37297 | LD HL,36880 | The objects called "them" are listed at Table_PluralObjects. | |
| 37300 | LD BC,4 | 4 objects are spoken of as "them". | ||
| 37303 | CPIR | Search the list of objects that are called "them". | ||
| 37305 | JR Z,ActionDrop_Step2 | A plural object uses the wording for "them". | ||
| 37307 | LD HL,31288 | Print "it." and start a new line. | ||
| 37310 | JR ActionDrop_Loop4 | |||
| ActionDrop_Step2 | 37312 | LD HL,31292 | Print "them." and start a new line. | |
| 37315 | JR ActionDrop_Loop4 | |||
| ActionDrop_Step3 | 37317 | LD B,E | Put the object down in the current room. | |
| 37318 | LD A,(25123) | |||
| 37321 | LD C,A | |||
| 37322 | CALL UpdateObjectLocation | Call UpdateObjectLocation to move the object. | ||
| ActionDrop_Loop3 | 37325 | LD HL,25132 | The player is carrying one fewer object. | |
| 37328 | DEC (HL) | |||
| 37329 | LD HL,25702 | Print "O.K." and start a new line. | ||
| ActionDrop_Loop4 | 37332 | CALL PrintStringAndANewline | ||
| 37335 | RET | Return. | ||
| ActionDrop_Step4 | 37336 | LD HL,35161 | Jump to ActionDrop_Step5 unless the command matches the phrase at 35161 (A knife. (0)). | |
| 37339 | CALL Parser_AdvanceToSeparator | |||
| 37342 | JR NZ,ActionDrop_Step5 | |||
| 37344 | LD A,0 | |||
| 37346 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step5 | 37349 | LD HL,35177 | Jump to ActionDrop_Step6 unless the command matches the phrase at 35177 (A laser pistol. (1)). | |
| 37352 | CALL Parser_AdvanceToSeparator | |||
| 37355 | JR NZ,ActionDrop_Step6 | |||
| 37357 | LD A,1 | |||
| 37359 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step6 | 37362 | LD HL,35168 | Jump to ActionDrop_Step7 unless the command matches the phrase at 35168 (A coin. (2)). | |
| 37365 | CALL Parser_AdvanceToSeparator | |||
| 37368 | JR NZ,ActionDrop_Step7 | |||
| 37370 | LD A,2 | |||
| 37372 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step7 | 37375 | LD HL,35182 | Jump to ActionDrop_Step8 unless the command matches the phrase at 35182 (A crystal rod. (3)). | |
| 37378 | CALL Parser_AdvanceToSeparator | |||
| 37381 | JR NZ,ActionDrop_Step8 | |||
| 37383 | LD A,3 | |||
| 37385 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step8 | 37388 | LD HL,35136 | Jump to ActionDrop_Step9 unless the command matches the phrase at Table_PhraseLists (A detonator. (4)). | |
| 37391 | CALL Parser_AdvanceToSeparator | |||
| 37394 | JR NZ,ActionDrop_Step9 | |||
| 37396 | LD A,4 | |||
| 37398 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step9 | 37401 | LD HL,35172 | Jump to ActionDrop_Step10 unless the command matches the phrase at 35172 (A metal bar. (5)). | |
| 37404 | CALL Parser_AdvanceToSeparator | |||
| 37407 | JR NZ,ActionDrop_Step10 | |||
| 37409 | LD A,5 | |||
| 37411 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step10 | 37414 | LD HL,35187 | Jump to ActionDrop_Step11 unless the command matches the phrase at 35187 (A glowing sphere. (6)). | |
| 37417 | CALL Parser_AdvanceToSeparator | |||
| 37420 | JR NZ,ActionDrop_Step11 | |||
| 37422 | LD A,6 | |||
| 37424 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step11 | 37427 | LD HL,35138 | Jump to ActionDrop_Step12 unless the command matches the phrase at 35138 (Some poison fungus. (7)). | |
| 37430 | CALL Parser_AdvanceToSeparator | |||
| 37433 | JR NZ,ActionDrop_Step12 | |||
| 37435 | LD A,7 | |||
| 37437 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step12 | 37440 | LD HL,35192 | Jump to ActionDrop_Step13 unless the command matches the phrase at 35192 (Some round stones. (8)). | |
| 37443 | CALL Parser_AdvanceToSeparator | |||
| 37446 | JR NZ,ActionDrop_Step13 | |||
| 37448 | LD A,8 | |||
| 37450 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step13 | 37453 | LD HL,35170 | Jump to ActionDrop_Step14 unless the command matches the phrase at 35170 (A key. (9)). | |
| 37456 | CALL Parser_AdvanceToSeparator | |||
| 37459 | JR NZ,ActionDrop_Step14 | |||
| 37461 | LD A,9 | |||
| 37463 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step14 | 37466 | LD HL,35163 | Jump to ActionDrop_Step15 unless the command matches the phrase at 35163 (A space axe. (10)). | |
| 37469 | CALL Parser_AdvanceToSeparator | |||
| 37472 | JR NZ,ActionDrop_Step15 | |||
| 37474 | LD A,10 | |||
| 37476 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step15 | 37479 | LD HL,35143 | Jump to ActionDrop_Step16 unless the command matches the phrase at 35143 (Some explosives. (11)). | |
| 37482 | CALL Parser_AdvanceToSeparator | |||
| 37485 | JR NZ,ActionDrop_Step16 | |||
| 37487 | LD A,11 | |||
| 37489 | JP ActionDrop_Loop1 | |||
| ActionDrop_Step16 | 37492 | JR ActionDrop_Step17 | Continue at ActionDrop_Step17 to try the next thing the player might drop. | |
| ActionDrop_Step17 | 37494 | LD HL,35199 | Point at the phrase at 35199 and call Parser_AdvanceToSeparator to match it against the command. | |
| 37497 | CALL Parser_AdvanceToSeparator | |||
| 37500 | JR NZ,ActionDrop_Step20 | Jump to ActionDrop_Step20 if it doesn't match. | ||
| 37502 | LD A,6 | Jump to ActionDrop_Loop2 when the player is not carrying A glowing sphere. (6). | ||
| 37504 | CALL IsObjectCarried | |||
| 37507 | JP NZ,ActionDrop_Loop2 | |||
| 37510 | LD A,(25123) | Fetch the current room. | ||
| 37513 | CP 28 | The sphere was not dropped in The Crystal Chamber.. | ||
| 37515 | JR NZ,ActionDrop_Step18 | |||
| 37517 | LD BC,5376 | Clear the glass pedestal in The Crystal Chamber.. | ||
| 37520 | JR ActionDrop_Step19 | Continue at ActionDrop_Step19 to move what was dropped. | ||
| ActionDrop_Step18 | 37522 | LD BC,5632 | Clear the glass pedestal in The Blue Room.. | |
| ActionDrop_Step19 | 37525 | CALL UpdateObjectLocation | Call UpdateObjectLocation to move the object. | |
| 37528 | LD BC,1536 | Move A glowing sphere. (6) to nowhere (0). | ||
| 37531 | CALL UpdateObjectLocation | |||
| 37534 | LD A,(25123) | Fetch the current room. | ||
| 37537 | LD C,A | Leave A glowing sphere sitting on a raised dish on a glass pedestal. in the room where it was dropped. | ||
| 37538 | LD B,60 | |||
| 37540 | CALL UpdateObjectLocation | Call UpdateObjectLocation to move the object. | ||
| 37543 | JP ActionDrop_Loop3 | Continue at ActionDrop_Loop3 to count one fewer object and confirm the drop. | ||
| ActionDrop_Step20 | 37546 | LD HL,35463 | Jump to ActionDrop_Step22 unless the command matches the phrase at 35463 (The alien commander, in space armour. (39)). | |
| 37549 | CALL Parser_AdvanceToSeparator | |||
| 37552 | JR NZ,ActionDrop_Step22 | |||
| 37554 | LD A,39 | |||
| 37556 | CALL IsObjectInCurrentRoom | |||
| 37559 | JR Z,ActionDrop_Step21 | |||
| 37561 | LD HL,31923 | Print "He's already dead." and start a new line. | ||
| 37564 | JP ActionDrop_Loop4 | |||
| ActionDrop_Step21 | 37567 | LD A,10 | Jump back to ActionDrop_Loop2 when the player is not carrying A space axe. (10). | |
| 37569 | CALL IsObjectCarried | |||
| 37572 | JP NZ,ActionDrop_Loop2 | |||
| 37575 | LD BC,9984 | Move The alien commander, in space armour. (39) to nowhere (0). | ||
| 37578 | CALL UpdateObjectLocation | |||
| 37581 | LD BC,10293 | Move The dead body of the alien commander. (40) to The Alien Commander's Chamber. (53). | ||
| 37584 | CALL UpdateObjectLocation | |||
| 37587 | LD A,(25123) | Fetch the current room. | ||
| 37590 | LD C,A | Leave A space axe. in the current room. | ||
| 37591 | LD B,10 | |||
| 37593 | CALL UpdateObjectLocation | Call UpdateObjectLocation to move the object. | ||
| 37596 | LD HL,25132 | The player is carrying one fewer object. | ||
| 37599 | DEC (HL) | |||
| 37600 | LD BC,2357 | Move A key. (9) to The Alien Commander's Chamber. (53). | ||
| 37603 | CALL UpdateObjectLocation | |||
| 37606 | LD HL,31942 | Print "The axe pierces the space armour The commander falls down,dead. As he falls, a key drops to the floor." and start a new line. | ||
| 37609 | JP ActionDrop_Loop4 | |||
| ActionDrop_Step22 | 37612 | LD HL,35483 | Point at the phrase at 35483 and call Parser_AdvanceToSeparator to match it against the command. | |
| 37615 | CALL Parser_AdvanceToSeparator | |||
| 37618 | JR NZ,ActionDrop_Step23 | Jump to ActionDrop_Step23 if it doesn't match. | ||
| 37620 | LD A,7 | Jump to ActionDrop_Loop2 when the player is not carrying Some poison fungus. (7). | ||
| 37622 | CALL IsObjectCarried | |||
| 37625 | JP NZ,ActionDrop_Loop2 | |||
| 37628 | LD BC,9216 | Move A huge,blind slug is blocking the western exit. It is advancing toward you. (36) to nowhere (0). | ||
| 37631 | CALL UpdateObjectLocation | |||
| 37634 | LD BC,9520 | Move A pool of slime on the floor. (37) to The Sloping Corridor. (48). | ||
| 37637 | CALL UpdateObjectLocation | |||
| 37640 | LD BC,1792 | Move Some poison fungus. (7) to nowhere (0). | ||
| 37643 | CALL UpdateObjectLocation | |||
| 37646 | LD HL,25132 | The player is carrying one fewer object. | ||
| 37649 | DEC (HL) | |||
| 37650 | LD A,47 | Open the west exit of The Sloping Corridor. onto The Underground Stream.. | ||
| 37652 | LD (35965),A | |||
| 37655 | LD HL,32138 | Print "The slug greedily devours the poison fungus. It writhes in pain,then dies. Only a pool of slime remains." and start a new line. | ||
| 37658 | JP ActionDrop_Loop4 | |||
| ActionDrop_Step23 | 37661 | LD HL,35503 | Point at the phrase at 35503 and call Parser_AdvanceToSeparator to match it against the command. | |
| 37664 | CALL Parser_AdvanceToSeparator | |||
| 37667 | JR NZ,ActionDrop_Step24 | Jump to ActionDrop_Step24 if it doesn't match. | ||
| 37669 | LD A,8 | Jump to ActionDrop_Loop2 when the player is not carrying Some round stones. (8). | ||
| 37671 | CALL IsObjectCarried | |||
| 37674 | JP NZ,ActionDrop_Loop2 | |||
| 37677 | LD BC,9728 | Move A fierce,scaled creature is on the bridge,preventing your crossing. (38) to nowhere (0). | ||
| 37680 | CALL UpdateObjectLocation | |||
| 37683 | LD BC,2099 | Move Some round stones. (8) to The Crystal Bridge. (51). | ||
| 37686 | CALL UpdateObjectLocation | |||
| 37689 | LD HL,25132 | The player is carrying one fewer object. | ||
| 37692 | DEC (HL) | |||
| 37693 | LD A,52 | Open the east exit of The Crystal Bridge. onto The Creature's Lair.. | ||
| 37695 | LD (35982),A | |||
| 37698 | LD HL,32243 | Print "The creature stumbles and loses its footing and falls over the side of the bridge." and start a new line. | ||
| 37701 | JP ActionDrop_Loop4 | |||
| ActionDrop_Step24 | 37704 | LD HL,35197 | Jump to ActionDrop_Step27 unless the command matches the phrase at 35197 (A pair of gloves,which you are wearing. (57)). | |
| 37707 | CALL Parser_AdvanceToSeparator | |||
| 37710 | JR NZ,ActionDrop_Step27 | |||
| 37712 | LD A,57 | |||
| 37714 | CALL IsObjectCarried | |||
| 37717 | JR NZ,ActionDrop_Step26 | |||
| 37719 | LD A,7 | Jump to ActionDrop_Step25 when the player is not carrying Some poison fungus. (7). | ||
| 37721 | CALL IsObjectCarried | |||
| 37724 | JR NZ,ActionDrop_Step25 | |||
| 37726 | LD HL,33969 | Print "No. Drop the fungus first." and start a new line. | ||
| 37729 | JP ActionDrop_Loop4 | |||
| ActionDrop_Step25 | 37732 | LD BC,14592 | Move A pair of gloves,which you are wearing. (57) to nowhere (0). | |
| 37735 | CALL UpdateObjectLocation | |||
| 37738 | LD BC,3073 | Move A pair of gloves. (12) to the inventory (1). | ||
| 37741 | CALL UpdateObjectLocation | |||
| ActionDrop_Step26 | 37744 | LD A,12 | A pair of gloves. is what the player is now holding. | |
| 37746 | JP ActionDrop_Loop1 | Continue at ActionDrop_Loop1 to see what the player is now holding. | ||
| ActionDrop_Step27 | 37749 | LD HL,25691 | Print "You can't." and start a new line. | |
| 37752 | JP ActionDrop_Loop4 | |||
| Prev: 36884 | Up: Map | Next: 37755 |