Prev: 57290 Up: Map Next: 57402
57292: Special Case Object 6
Used by the routines at PrintObjectDescriptionText and MatchSherlockDisguise.
Looks up Basil Phipps and fails the match unless his attribute agrees with Sherlock's disguise. Run by 51812 after the display record at 57290, from the show-message command at 61337. A non-zero return means the script step succeeded.
SpecialCaseObject_LooksBasilPhipps 57292 LD HL,30108 Call FetchObjectDataPointer to look up 6.
57295 LD A,6
57297 CALL FetchObjectDataPointer
57300 LD A,(40969) Print the message via PrintMessageAndInitialiseTimer if Sherlock's disguise does not match the character's attribute.
57303 CP (IX+15)
57306 JP NZ,PrintMessageAndInitialiseTimer
57309 LD HL,30162 Take the message at 30162 and print it via PrintMessageAndInitialiseTimer.
57312 JP PrintMessageAndInitialiseTimer
Reached through the display record at 57322, dispatched by DispatchLookedUpHandlerThird.
57315 LD A,(41014) Read the character being processed, compare it with Sherlock (100), and go to SpecialCaseObject_LooksBasilPhipps_0, which returns zero through ParseInputNumber_ReturnZero when they differ.
57318 CP 100
57320 JR SpecialCaseObject_LooksBasilPhipps_0
57322 DEFB 71,16,227,223 Display record read by ProcessDisplayRecord: flags 71 value 16 handler 57315.
Run by 51812 after the display record at 57322.
57326 JR SpecialCaseObject_LooksBasilPhipps_Next Go to SpecialCaseObject_LooksBasilPhipps_Next.
57328 DEFB 72,16,28,224 Display record read by ProcessDisplayRecord: flags 72 value 16 handler 57372.
Run by 51812 after the display record at 57328.
57332 LD A,100 Place character 100 from SpecialCaseObject_LooksBasilPhipps_2.
57334 JR SpecialCaseObject_LooksBasilPhipps_2
Reached through the display record at 57347, dispatched by DispatchLookedUpHandlerThird.
57336 LD A,(41014) Read the character being processed and compare it with 1.
57339 CP 1
SpecialCaseObject_LooksBasilPhipps_0 57341 JP NZ,ParseInputNumber_ReturnZero Return zero through ParseInputNumber_ReturnZero if the character being processed is not 1.
This entry point is used by the routine at PrintObjectDescriptionText.
SpecialCaseObject_LooksBasilPhipps_1 57344 OR %00000001 Reset the zero flag.
57346 RET Return.
57347 DEFB 71,16,248,223 Display record read by ProcessDisplayRecord: flags 71 value 16 handler 57336.
Run by 51812 after the display record at 57347.
SpecialCaseObject_LooksBasilPhipps_Next 57351 XOR A Call PlaceCharacter to place character.
57352 CALL PlaceCharacter
57355 LD IX,(40979) Read the current object.
SpecialCaseObject_ClearMovedMarker 57359 LD (IX+1),0 Clear the moved marker.
57363 LD A,(40970)
57366 LD (IX+15),A Store the character attribute.
57369 OR %00000001 Reset the zero flag.
57371 RET Return.
Reached through the display record at 57255, 57328, 57378 and 57517, dispatched by DispatchLookedUpHandlerThird.
57372 LD A,(41014) Read the character being processed, then clear the borrow so the caller can trust the result.
57375 AND A
57376 JR SpecialCaseObject_LooksBasilPhipps_0
57378 DEFB 72,16,28,224 Display record read by ProcessDisplayRecord: flags 72 value 16 handler 57372.
Run by 51812 after the display record at 57378.
57382 LD A,1 Take 1.
SpecialCaseObject_LooksBasilPhipps_2 57384 CALL PlaceCharacter Call PlaceCharacter to place the character.
57387 LD IX,(40979) Read the current object and clear the moved marker.
57391 LD (IX+1),0
57395 LD (IX+15),0 Clear the location at IX+15.
57399 OR 1
57401 RET Return.
Prev: 57290 Up: Map Next: 57402