Prev: A2B4 Up: Map Next: A3BC
A302: Action: Burn
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