|  | Routines | 
| Prev: 43494 | Up: Map | Next: 43874 | 
| 
Used by the routine at 64623.
 | ||||
| 43636 | LD IX,24848 | Point IX at Magic Knight's current inventory (carrying) | ||
| 43640 | LD B,5 | Load B with 5 (five inventory slots) | ||
| 43642 | LD HL,51920 | Point HL at "[Current Command] WHICH OBJECT ?" text | ||
| 43645 | LD DE,51928 | Point DE at "[Current Command] THE " text | ||
| 43648 | CALL 45809 | Show list of objects in Magic Knight's inventory (carrying) as a menu and load A with selected item index | ||
| 43651 | LD HL,24848 | Point HL at Magic Knight's current inventory (carrying) | ||
| 43654 | CALL 45766 | Print name of object in inventory slot A of inventory data at HL in command summary window | ||
| 43657 | LD DE,55959 | Point DE at " AT " text... | ||
| 43660 | CALL 63349 | ...and print in command summary window at top of screen | ||
| 43663 | LD HL,51418 | Point HL at "THROW AN OBJECT AT ?" text | ||
| 43666 | LD DE,0 | Load DE with zero (i.e. no command summary text) | ||
| 43669 | CALL 45963 | Display and process input for character selection menu (current room's characters only), setting Current Character | ||
| 43672 | JP Z,41742 | If there are no characters in the room then return to game | ||
| 43675 | CALL 64207 | Display execute / reject command window and return here if execute chosen, else exit to main game loop | ||
| 43678 | LD A,(41779) | Load A with index of Current Object... | ||
| 43681 | CALL 45685 | ...and if this is 4 (Teddy Bear) then display "THE BEAR SAYS..." message and wait for fire to be pressed | ||
| 43684 | LD HL,51933 | Point HL at "THE [name of Current Object] BLEW UP..." text | ||
| 43687 | CP 5 | If Current Object is the Stick of Dynamite (5)... | ||
| 43689 | JP Z,64582 | ...then jump to "game over" window routine and return to control selection menu | ||
| 43692 | CP 14 | If Current Object is the Boomerang (14)... | ||
| 43694 | JP Z,43868 | ...then skip ahead to 43868 (game over) | ||
| 43697 | CP 25 | If Current Object is not the Magic Missile (25)... | ||
| 43699 | JR NZ,43715 | ...then skip ahead to 43715 | ||
| 43701 | LD A,(41937) | If Current Character is not Off-White Knight (0)... | ||
| 43704 | OR A | ... | ||
| 43705 | JR NZ,43712 | ...then skip ahead to 43712 | ||
| 43707 | LD A,255 | Set Off-White-Knight-sent-to-sleep flag to 255... | ||
| 43709 | LD (23403),A | ... | ||
| 43712 | LD A,(41779) | Load A with index of Current Object... | ||
| 43715 | LD E,0 | Point HL to the start of the Current Object's record in object properties table... | ||
| 43717 | CALL 45390 | ... | ||
| 43720 | PUSH HL | Copy address into IX... | ||
| 43721 | POP IX | ... | ||
| 43723 | LD A,(IX+0) | Load A with Current Object's weight... | ||
| 43726 | AND 15 | ... | ||
| 43728 | CP 12 | ...and if this is 12 or greater... | ||
| 43730 | JP NC,43856 | ...then skip ahead to 43856 (game over) | ||
| 43733 | BIT 6,(IX+1) | If Current Object's can-be-thrown-and-is-lethal flag is set... | ||
| 43737 | JP NZ,43862 | ...then skip ahead to 43862 | ||
| 43740 | LD A,(41779) | Load C with index of Current Object... | ||
| 43743 | LD C,A | ... | ||
| 43744 | LD B,5 | Load B with 5 (five inventory slots) | ||
| 43746 | LD HL,24848 | Point IX at Magic Knight's current inventory (carrying) | ||
| 43749 | CALL 48341 | Remove object C from Magic Knight's current inventory (carrying) | ||
| 43752 | LD A,(41779) | Load C with index of Current Object... | ||
| 43755 | LD C,A | ... | ||
| 43756 | CP 20 | If Current Object is the Mirror (20)... | ||
| 43758 | CALL Z,41915 | ...then load C with 7 (index of Broken Glass) | ||
| 43761 | CP 17 | If Current Object is Bottle of Liquid (17)... | ||
| 43763 | CALL Z,41918 | ...then load C with 8 (index of Broken Glass) | ||
| 43766 | CP 18 | If Current Object is Bottle of Liquid (18)... | ||
| 43768 | CALL Z,41921 | ...then load C with 9 (index of Broken Glass) | ||
| 43771 | CP 28 | If Current Object is Empty Bottle (28)... | ||
| 43773 | CALL Z,41918 | ...then load C with 8 (index of Broken Glass) | ||
| 43776 | CP 29 | If Current Object is Empty Bottle (29)... | ||
| 43778 | CALL Z,41921 | ...then load C with 9 (index of Broken Glass) | ||
| 43781 | LD A,C | Load BC with three times index of Current Object... | ||
| 43782 | ADD A,A | ... | ||
| 43783 | ADD A,C | ... | ||
| 43784 | LD C,A | ... | ||
| 43785 | LD B,0 | ... | ||
| 43787 | LD HL,24922 | Point HL at start of objects' current positions table at 24922 | ||
| 43790 | ADD HL,BC | Add three times Current Object's index as offset to point HL at position data of current object | ||
| 43791 | LD A,(23702) | Set object's room to be Magic Knight's current room... | ||
| 43794 | LD (HL),A | ... | ||
| 43795 | INC HL | Advance HL to object's x-coordinate | ||
| 43796 | PUSH HL | Store HL (pointer to x-coordinate) | ||
| 43797 | LD A,(41937) | Load BC with three times index of character who was target of throw... | ||
| 43800 | LD C,A | ... | ||
| 43801 | ADD A,A | ... | ||
| 43802 | ADD A,C | ... | ||
| 43803 | LD B,0 | ... | ||
| 43805 | LD C,A | ... | ||
| 43806 | LD HL,24899 | Point HL at x-coordinate of first entry in characters' current positions table | ||
| 43809 | ADD HL,BC | Add BC (three times character index) as offset | ||
| 43810 | EX DE,HL | Swap DE (now pointer to Current Character's x-coordinate) and HL (now undefined) | ||
| 43811 | POP HL | Restore HL (pointer to object's x-coordinate) | ||
| 43812 | LD A,(DE) | Copy character's x-coordinate... | ||
| 43813 | LD (HL),A | ...into object's x-coordinate | ||
| 43814 | INC DE | Advance to character's y-coordinate | ||
| 43815 | INC HL | Advance to object's y-coordinate | ||
| 43816 | LD A,(DE) | Copy character's y-coordinate plus three... | ||
| 43817 | ADD A,3 | ... | ||
| 43819 | LD (HL),A | ...into object's y-coordinate | ||
| 43820 | CALL 46183 | Set Magic Knight's available action flags | ||
| 43823 | LD A,(41779) | Load A with index of Current Object | ||
| 43826 | CP 25 | If Current Object is the Magic Missile (25)... | ||
| 43828 | JR Z,43840 | ...then skip ahead to 43840 | ||
| 43830 | CP 20 | If Current Object is not the Mirror (20)... | ||
| 43832 | JR NZ,43850 | ...then skip ahead to 43850 | ||
| 43834 | LD HL,55986 | Point HL at "THE [object] LANDED ON THE FLOOR BY [character] AND SMASHED..." text (see trivia) | ||
| 43837 | JP 64293 | Display smashed object window (15) and return to game | ||
| 
Magic Missile thrown
 | ||||
| 43840 | LD A,(41937) | Load A with index of Current Character | ||
| 43843 | LD E,6 | Point HL at character's flags... | ||
| 43845 | CALL 45406 | ... | ||
| 43848 | SET 7,(HL) | ...and set asleep flag | ||
| 43850 | LD HL,55964 | Point HL at "THE [object] LANDED ON THE FLOOR BY [character]" text | ||
| 43853 | JP 64293 | Display "THE [object] LANDED ON THE FLOOR BY [character]" window (15) and return to game | ||
| 
Weight of 12 or more
 | ||||
| 43856 | LD HL,50845 | Point HL at "YOU KILLED YOURSELF TRYING TO THROW..." text | ||
| 43859 | JP 64582 | Display cyan "game over" window and return to control selection menu | ||
| 
Lethal if thrown
 | ||||
| 43862 | LD HL,50864 | Point HL at "YOU THREW THE [Object] AND KILLED [Character]" text | ||
| 43865 | JP 64582 | Display cyan "game over" window and return to control selection menu | ||
| 
Boomerang
 | ||||
| 43868 | LD HL,56035 | Point HL at thrown Boomerang game over text | ||
| 43871 | JP 64582 | Display cyan "game over" window and return to control selection menu | ||
| Prev: 43494 | Up: Map | Next: 43874 |