![]() |
Routines |
| Prev: A2B4 | Up: Map | Next: A3BC |
|
Burns the current object. Reached through the action table at ActionTable, dispatched by Turn_RunTheHandlerIfPresent.
|
||||
|
Test whose turn it is.
|
||||
| ActionBurn | A302 | LD A,($B6EA) | Jump to ResponseThatWillNotWork if *CurrentCharacter is not 3C. | |
| A305 | CP $3C | |||
| A307 | JP NZ,ResponseThatWillNotWork | |||
|
If the message is held back, the object is not burned.
|
||||
| A30A | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the object is not burned. | ||
| A30D | JP Turn_ThePlayerHasDied | Jump back to Turn_ThePlayerHasDied to test the current object. | ||
|
If the message is held back, the river message is not printed.
Reached through the action list of $09 - "Fast Black River" for action 32, dispatched by TriggerAction.
|
||||
| A310 | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the river message is not printed. | ||
| A313 | LD HL,$B0B4 | Point HL at "as soon as you touch the river you fall asleep and gently float away". | ||
|
Print the message at HL.
|
||||
| ActionBurn_Loop | A316 | CALL PrintMessage | Call PrintMessage to print message. | |
| A319 | LD A,($B6EA) | Read *CurrentCharacter. | ||
| A31C | PUSH AF | See whether the character whose turn it is is zero. | ||
| A31D | AND A | |||
| A31E | LD HL,$ADA9 | Point HL at "Time passes.." in ADA3. | ||
| A321 | CALL Z,PrintMessage | Call PrintMessage if it is the player's turn. | ||
| A324 | POP AF | Jump back to Turn_ThePlayerHasDied_0 to try the next object. | ||
| A325 | JP Turn_ThePlayerHasDied_0 | |||
|
If the message is held back, the sleep message is not printed.
Reached through the action lists of $16 - "Black Water" and $18 - "Black Water" for action 21, dispatched by TriggerAction.
|
||||
| A328 | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the sleep message is not printed. | ||
| A32B | LD HL,$B0F8 | Point HL at "You fall asleep". | ||
| A32E | JR ActionBurn_Loop | Jump back to ActionBurn_Loop to print "You fall asleep". | ||
|
Reached through the action list of $0B - "Mountains Side Door" for action 26, dispatched by TriggerAction.
|
||||
| A330 | LD B,$02 | Use object 02. | ||
| A332 | JR ActionBurn_TestTheSecondObject | Jump to ActionBurn_TestTheSecondObject to test whether that object is the second object. | ||
|
Reached through the action list of $08 - "Red Door" for actions 25 and 26, dispatched by TriggerAction.
|
||||
| A334 | LD B,$0F | Use object 0F. | ||
| A336 | JR ActionBurn_TestTheSecondObject | Jump to ActionBurn_TestTheSecondObject to test whether that object is the second object. | ||
|
Reached through the action list of $01 - "Heavy Rock Door" for actions 25 and 26, dispatched by TriggerAction.
|
||||
| A338 | LD B,$04 | Use object 04. | ||
| ActionBurn_TestTheSecondObject | A33A | LD A,($B6E9) | Read *B6E9. | |
| A33D | CP B | Jump to ActionBurn_TestTheAction unless the second object is the one in B. | ||
| A33E | JR NZ,ActionBurn_TestTheAction | |||
|
Test the current action.
|
||||
| A340 | LD A,($B6E7) | Jump to Action_Lock to lock the object if *CurrentAction is 25. | ||
| A343 | CP $25 | |||
| A345 | JP Z,Action_Lock | |||
| A348 | JP Action_Unlock | Jump to Action_Unlock to unlock the object. | ||
| ActionBurn_TestTheAction | A34B | CP $02 | Jump to ActionBurn_PrintDoesNotFit if the current action is 02. | |
| A34D | JR Z,ActionBurn_PrintDoesNotFit | |||
| A34F | CP $04 | Jump to ActionBurn_PrintDoesNotFit if the current action is 04. | ||
| A351 | JR Z,ActionBurn_PrintDoesNotFit | |||
| A353 | CP $0F | Jump back to Response_ICannotDoThat if the current action is not 0F. | ||
| A355 | JP NZ,Response_ICannotDoThat | |||
|
Say "[0x09] does not fit this lock".
Reached through the action list of $05 - "Round Green Door" for actions 25 and 26, and of $1E - "Trap Door" for action 26, dispatched by TriggerAction.
|
||||
| ActionBurn_PrintDoesNotFit | A358 | LD HL,$B02D | Point HL at the message and call PrintMessage. | |
| A35B | JP PrintMessage | |||
|
Reached through the action list of $0B - "Mountains Side Door" for action 00, dispatched by TriggerAction.
|
||||
| A35E | CALL Turn_GateTheMessage | Call Turn_GateTheMessage to let the message through or hold it back. | ||
| A361 | LD IX,($B708) | Read *B708. | ||
| A365 | JP ActionOpenOrClose_0 | Jump back to ActionOpenOrClose_0 to open the object. | ||
|
Reached through the action list of $06 - "Small Insignificant Crack" for action 10, dispatched by TriggerAction.
|
||||
| A368 | LD IX,($B70C) | Read *Pointer_CurrentCharacter. | ||
| A36C | LD A,(IX+$10) | Read the location from the object record. | ||
| A36F | CP $0F | Jump back to ResponseThatWillNotWork if the object's location is not 0F. | ||
| A371 | JP NZ,ResponseThatWillNotWork | |||
| A374 | JP ActionOpenOrClose | Jump to ActionOpenOrClose to open or close. | ||
|
Reached through the action list of $07 - "Spider Web" for action 00, dispatched by TriggerAction.
|
||||
| A377 | LD IX,($B708) | Read *B708. | ||
| A37B | BIT 3,(IX+$07) | Return if the object is not broken. | ||
| A37F | RET Z | |||
| A380 | SET 5,(IX+$07) | Mark the object open. | ||
| A384 | LD A,($CA8B) | Store the object's location in the spider web script. | ||
| A387 | LD ($CA8C),A | |||
|
Say "some spiders start mend(s|d|ing|es) the broken web".
|
||||
| A38A | LD HL,$B099 | Point HL at the message and call PrintMessage. | ||
| A38D | JP PrintMessage | |||
|
Wear the ring: the character turns invisible and its strength is quartered.
If the message is held back, the ring is not put on.
Reached through the action list of $10 - "Valuable Golden Ring" for action 28, dispatched by TriggerAction.
|
||||
| A390 | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the ring is not put on. | ||
| A393 | LD IY,($B70C) | Read the character. | ||
| A397 | LD IX,$C31A | Point IX at the ring. | ||
| A39B | RES 7,(IY+$07) | Make the character invisible. | ||
| A39F | SRL (IY+$05) | Halve the strength. | ||
| A3A3 | SRL (IY+$05) | Halve the strength. | ||
| A3A7 | RES 7,(IX+$07) | Hide the ring. | ||
| A3AB | LD A,($B6EA) | Move the ring onto the character. | ||
| A3AE | LD (IX+$01),A | |||
| A3B1 | LD A,$08 | Roll a random number below 08. | ||
|
Roll a random number.
|
||||
| A3B3 | CALL GetRandomNumber | Call GetRandomNumber to roll a number from the limit in A. | ||
| A3B6 | ADD A,$02 | Add 02 to the roll. | ||
| A3B8 | LD ($CAAF),A | Store the roll at CAAF. | ||
| A3BB | RET | Return. | ||
| Prev: A2B4 | Up: Map | Next: A3BC |