![]() |
Routines |
| Prev: A5FB | Up: Map | Next: A86E |
|
Prints that you are sinking into the bog, and the bog can be fatal. The deep bog record at CAA0 calls this.
|
||||
|
Test the flag.
|
||||
| Event_TheDeepBog | A7AA | LD A,($C12B) | Jump to Event_TheDeepBog_PrintTheSinking if *C12B is not 1D. | |
| A7AD | CP $1D | |||
| A7AF | JR NZ,Event_TheDeepBog_PrintTheSinking | |||
| A7B1 | SUB A | Clear the byte at CAA1. | ||
| A7B2 | LD ($CAA1),A | Store the result at CAA1. | ||
|
Say "You are slowly sink(s|d|ing|es) into the bog".
|
||||
| Event_TheDeepBog_PrintTheSinking | A7B5 | LD HL,$B153 | Point HL at the message and call PrintMessage. | |
| A7B8 | CALL PrintMessage | |||
| A7BB | LD A,($CAA1) | Return if the deep bog script is not zero. | ||
| A7BE | CP $00 | |||
| A7C0 | RET NZ | |||
| A7C1 | JP YouAreDead | Jump to YouAreDead to end the game. | ||
|
Test whose turn it is.
Reached through the action list of $03 - "Curious Map" for action 1C, dispatched by TriggerAction.
|
||||
| A7C4 | LD A,($B6EA) | Jump to Action_Examine if *CurrentCharacter is not 41. | ||
| A7C7 | CP $41 | |||
| A7C9 | JP NZ,Action_Examine | |||
|
If the message is held back, the sinking message is not printed.
|
||||
| A7CC | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the sinking message is not printed. | ||
| A7CF | LD IY,$0000 | Point IY at the extra-exit entry (97CF writes this address into A7D1). | ||
| A7D3 | LD L,(IY+$01) | Read the low byte of this extra exit's direction token. | ||
| A7D6 | LD H,(IY+$02) | Read the high byte of this extra exit's direction token. | ||
|
Test the flag.
|
||||
| A7D9 | LD A,($B6F1) | Jump to Event_TheDeepBog_ReadTheDestination if *B6F1 is not 00. | ||
| A7DC | CP $00 | |||
| A7DE | JR NZ,Event_TheDeepBog_ReadTheDestination | |||
| A7E0 | LD B,$03 | Count 03 passes. | ||
| Event_TheDeepBog_ReadTheExtraByte | A7E2 | LD A,(IY+$03) | Read the next byte of this extra exit. | |
| A7E5 | LD (HL),A | Store it at B153 and step on. | ||
| A7E6 | INC HL | |||
| A7E7 | INC IY | Step to the next byte of this extra exit. | ||
| A7E9 | DJNZ Event_TheDeepBog_ReadTheExtraByte | Loop back to Event_TheDeepBog_ReadTheExtraByte until 03 runs out. | ||
| A7EB | LD IY,($A7D1) | Read the extra-exit pointer saved at A7D1. | ||
| Event_TheDeepBog_ReadTheDestination | A7EF | LD A,(IY+$05) | Read the destination from this extra exit. | |
|
Find the location's record.
|
||||
| A7F2 | CALL LocateLocation | Call LocateLocation to locate location. | ||
| A7F5 | INC IX | Step IX on to the location's name. | ||
| A7F7 | INC IX | |||
| A7F9 | PUSH IX | Save the location's name and read the location from this extra exit. | ||
| A7FB | LD A,(IY+$00) | |||
|
Find the location's record.
|
||||
| A7FE | CALL LocateLocation | Call LocateLocation to locate location. | ||
| A801 | INC IX | Step IX on to the location's name. | ||
| A803 | INC IX | |||
| A805 | PUSH IX | Save that name and read the direction from this extra exit. | ||
| A807 | LD A,(IY+$03) | |||
| A80A | CALL ExitsTheDirectionWord | Call ExitsTheDirectionWord to describe the direction word. | ||
| A80D | PUSH DE | Point HL at "{5} go[0x01] from[0x00] to{5} get to[0x00]". | ||
| A80E | LD HL,$B1D0 | |||
| A811 | JP Response_YouSay | Jump back to Response_YouSay to print the way from here to there. | ||
|
Reached through the action list of $12 - "Rope" for action 2B, dispatched by TriggerAction.
|
||||
| A814 | LD A,($B6E9) | Read *B6E9. | ||
| A817 | CALL ExitsFindTheExitThroughAnObject_0 | Call ExitsFindTheExitThroughAnObject_0 to find the exit through the object in A. | ||
| A81A | CP $FF | Jump back to ResponseThatWillNotWork if no exit runs through this object. | ||
| A81C | JP Z,ResponseThatWillNotWork | |||
|
If the message is held back, the fatal bog is not described.
|
||||
| A81F | CALL ConditionSuppressTheMessage | Call ConditionSuppressTheMessage. If the message is held back, the fatal bog is not described. | ||
|
Say "it sail(s|d|ing|es) across and.".
|
||||
| A822 | LD HL,$AF66 | Point HL at the message and call PrintMessage. | ||
| A825 | CALL PrintMessage | |||
| A828 | LD A,($C62B) | Jump to Event_TheDeepBog_PrintTheShortFall if the location of $29 - "Wooden Boat" is not this exit's destination. | ||
| A82B | CP (IX+$02) | |||
| A82E | JR NZ,Event_TheDeepBog_PrintTheShortFall | |||
| A830 | CALL Event_ARandomHalf | Call Event_ARandomHalf to roll a random half. | ||
| A833 | JR C,Event_TheDeepBog_LandTheRopeInTheBoat | Jump to Event_TheDeepBog_LandTheRopeInTheBoat if the roll was below half. | ||
| A835 | LD HL,$AF76 | Point HL at "fall(s|d|ing|es) just short of the other side". | ||
| A838 | CALL Event_ARandomHalf | Call Event_ARandomHalf to roll a random half. | ||
| A83B | JR C,Event_TheDeepBog_PrintTheMessage | Jump to Event_TheDeepBog_PrintTheMessage if the roll was below half. | ||
| A83D | LD HL,$AF82 | Point HL at "[0x0b][0x08] but slide(s|d|ing|es) out again". | ||
| A840 | JR Event_TheDeepBog_PrintTheMessage | Jump to Event_TheDeepBog_PrintTheMessage to print "but slide(s|d|ing|es) out again". | ||
| Event_TheDeepBog_LandTheRopeInTheBoat | A842 | LD A,$12 | Put the rope (12) into the boat's container at C61C. | |
| A844 | LD ($C61C),A | |||
| A847 | LD HL,$AF8B | Point HL at "lands in the boat". | ||
| A84A | JR Event_TheDeepBog_PrintTheMessage | Jump to Event_TheDeepBog_PrintTheMessage to print "lands in the boat". | ||
| Event_TheDeepBog_PrintTheShortFall | A84C | LD HL,$AF76 | Point HL at "fall(s|d|ing|es) just short of the other side". | |
| A84F | CALL Event_ARandomHalf | Call Event_ARandomHalf to roll a random half. | ||
| A852 | JR C,Event_TheDeepBog_PrintTheMessage | Jump to Event_TheDeepBog_PrintTheMessage if Event_ARandomHalf rolled below 32. | ||
| A854 | LD A,(IX+$02) | Read this exit's destination. | ||
| A857 | LD IX,($B708) | Read *B708. | ||
| A85B | LD (IX+$10),A | Update the object's location. | ||
| A85E | LD (IX+$01),$FF | Mark where this object is as unset. | ||
| A862 | LD A,($B6E8) | Read *CurrentObject. | ||
| A865 | CALL Object_MoveContents_0 | Call Object_MoveContents_0 to move what is inside the current object to the location in B. | ||
| A868 | LD HL,$AF6D | Point HL at "lands on the other side". | ||
| Event_TheDeepBog_PrintTheMessage | A86B | JP PrintMessage | Jump to PrintMessage to print the message at HL. | |
| Prev: A5FB | Up: Map | Next: A86E |