![]()  | 
Routines | 
| Prev: 63972 | Up: Map | Next: 64168 | 
| 
 | 
||||
| Action_Open | 64060 | CALL Parser_ValidateDirectObject | Call Parser_ValidateDirectObject. | |
| 64063 | RET C | Return if the direct object is malformed. | ||
| 
 
Was the player trying to open the door?
 
 | 
||||
| 64064 | LD HL,60094 | Call MatchPhraseTokens with PhraseTokens_Door. | ||
| 64067 | CALL MatchPhraseTokens | |||
| 64070 | JR NZ,Open_RockDoor | Jump to Open_RockDoor if the token isn't for the door. | ||
| 
 
The player was trying to open the door but which door? Was it the "normal" door?
 
 | 
||||
| 64072 | LD A,(48331) | Jump to Validate_Open_LockedDoor if *CurrentRoom is room 97: " The Dusty Corridor". | ||
| 64075 | CP 97 | |||
| 64077 | JR Z,Validate_Open_LockedDoor | |||
| 64079 | CP 98 | Jump to Open_RockDoor if *CurrentRoom is not room 98: " The Pirate Treasure Chamber". | ||
| 64081 | JR NZ,Open_RockDoor | |||
| 
 
The player is in either of 
The Dusty Corridor or 
The Pirate Treasure Chamber, but the door has a few "states" it can be in.
 
 | 
||||
| Validate_Open_LockedDoor | 64083 | LD HL,59594 | Call CheckActiveScenicEvents with Data_ItemGroup_Door. | |
| 64086 | CALL CheckActiveScenicEvents | |||
| 
 
Is the door locked?
 
 | 
||||
| 64089 | CP 46 | Jump to Validate_Open_ClosedDoor if the player is not in the room with the "A closed door". | ||
| 64091 | JR NZ,Validate_Open_ClosedDoor | |||
| 
 
Print "The door is locked.".
 
 | 
||||
| 64093 | LD HL,58097 | HL=58097. | ||
| 64096 | JP PrintStringAndNewline_Alias | Jump to PrintStringAndNewline_Alias. | ||
| 
 
Is the door just closed?
 
 | 
||||
| Validate_Open_ClosedDoor | 64099 | CP 45 | Jump to Open_ClosedDoor if the player is in the room with the "A closed door". | |
| 64101 | JR Z,Open_ClosedDoor | |||
| 64103 | CP 48 | Jump to Response_ItsAlreadyOpen if the player is not in the room with the "A closed door". | ||
| 64105 | JP NZ,Response_ItsAlreadyOpen | |||
| 
 
Change the door states!
 
 | 
||||
| Open_ClosedDoor | 64108 | LD BC,11564 | Call TransformItem to transform item 45 ("A closed door") into item 44 ("An open door"). | |
| 64111 | CALL TransformItem | |||
| 64114 | LD BC,12335 | Call TransformItem to transform item 48 ("A closed door") into item 47 ("An open door"). | ||
| 64117 | CALL TransformItem | |||
| 
 
Now the door is opened, this opens up various routes.
 
 | 
||||
| 64120 | LD A,98 | Write 98 to *60759 to open up southbound access to The Pirate Treasure Chamber from The Dusty Corridor. | ||
| 64122 | LD (60759),A | |||
| 64125 | LD A,97 | Write 97 to *60764 to open up northbound access to The Dusty Corridor from The Pirate Treasure Chamber. | ||
| 64127 | LD (60764),A | |||
| 64130 | JP Response_OK_Duplicate | Jump to Response_OK_Duplicate. | ||
| 
 
Was the player trying to open the rock door?
 
 | 
||||
| Open_RockDoor | 64133 | LD HL,60096 | Call MatchPhraseTokens with PhraseTokens_RockDoor. | |
| 64136 | CALL MatchPhraseTokens | |||
| 64139 | JR NZ,Open_Invalid | Jump to Open_Invalid if the token isn't for the rock door. | ||
| 
 
The player was trying to open the rock door, but is it in the current room with them?
 
 | 
||||
| 64141 | LD A,(48331) | Jump to Open_Invalid if *CurrentRoom is not room 106: " The Mighty Rock Door". | ||
| 64144 | CP 106 | |||
| 64146 | JR NZ,Open_Invalid | |||
| 
 
Is the rock door already open?
 
 | 
||||
| 64148 | LD A,49 | Call ValidateItemPresent with "The door is open". | ||
| 64150 | CALL ValidateItemPresent | |||
| 64153 | JP Z,Response_ItsAlreadyOpen | Jump to Response_ItsAlreadyOpen if "The door is open" is present in the current room. | ||
| 
 
The rock door is here, but ...
 
Print "You can't.".
 
 | 
||||
| 64156 | CALL Response_YouCant_Duplicate | Call Response_YouCant_Duplicate. | ||
| 
 
Print "It's much too heavy.".
 
 | 
||||
| 64159 | LD HL,58117 | HL=58117. | ||
| 64162 | JP PrintStringAndNewline_Alias | Jump to PrintStringAndNewline_Alias. | ||
| 
 
Nothing else is valid.
 
 | 
||||
| Open_Invalid | 64165 | JP Response_YouCant_Duplicate | Jump to Response_YouCant_Duplicate. | |
| Prev: 63972 | Up: Map | Next: 64168 |