Prev: 41544 Up: Map Next: 41730
41652: Action: Untie
Unties the current object. Reached through the action table at ActionTable, dispatched by Turn_RunTheHandlerIfPresent.
ActionUntie 41652 LD IX,(46856) Read *46856.
41656 LD A,(IX+1) Read where this object is from the object record.
41659 CP 18 Compare where this object is with 18.
41661 LD HL,45202 Point HL at "[0x07] is not tied".
41664 JP NZ,PrintMessage Jump back to PrintMessage if where this object is is not 18.
If the message is held back, the object stays tied.
41667 CALL ConditionSuppressTheMessage Call ConditionSuppressTheMessage. If the message is held back, the object stays tied.
41670 LD A,(50023) Copy where 18 - "Rope" is into where this object is.
41673 LD (IX+1),A
41676 RET Return.
Find the exit through the current object.
Reached through the action list of 42 - "Fast River" for action 50, dispatched by TriggerAction.
41677 CALL ExitsFindTheExitThroughAnObject Call ExitsFindTheExitThroughAnObject to find the exit through the current object.
41680 LD A,(IX+2) Read this exit's destination.
41683 CP 0 Jump to ActionUntie_OpenAndMove if this exit's destination is not zero.
41685 JR NZ,ActionUntie_OpenAndMove
If the message is held back, the routine returns without untying.
41687 CALL ConditionSuppressTheMessage Call ConditionSuppressTheMessage. If the message is held back, the routine returns without untying.
41690 RET Return.
ActionUntie_OpenAndMove 41691 LD A,(IX+0) Read this exit's direction.
41694 LD HL,(46823) Read *CurrentAction.
41697 PUSH HL Update *CurrentAction.
41698 LD (46823),A
41701 LD IX,(46856) Read *46856.
41705 SET 5,(IX+7) Mark the object open.
41709 PUSH IX Write 255 to *CurrentObject.
41711 LD A,255
41713 LD (46824),A
41716 CALL Action_Direction_TestIfInside Call Action_Direction_TestIfInside to carry on with the move.
41719 POP IX Restore the object from the stack and close it.
41721 RES 5,(IX+7)
41725 POP HL Update *CurrentAction.
41726 LD (46823),HL
41729 RET Return.
Prev: 41544 Up: Map Next: 41730