Prev: 59014 Up: Map Next: 59110
59025: Process Character Attribute
Used by the routine at CharacterAction_Watson.
Follows the character link for this attribute, and stops when the link runs out.
ProcessCharacterAttribute 59025 CALL RejectLowCharacterAttribute Return if the character attribute is below 50.
59028 RET Z
Get character attribute.
59029 CALL GetCharacterAttribute Call GetCharacterAttribute to read the character's attribute.
59032 LD B,A Use the get character attribute result as the count.
ProcessCharacterAttribute_Loop 59033 LD IX,40950 Point at the object display link.
ProcessCharacterAttribute_CountCharacterRepeat 59037 DJNZ ProcessCharacterAttribute_Next Count the next character and repeat from ProcessCharacterAttribute_Next.
59039 CALL FetchObjectPointerFromStack Jump back to ProcessCharacterAttribute_Loop while the object pointer is zero.
59042 JR Z,ProcessCharacterAttribute_Loop
59044 JR ProcessCharacterAttribute_CountCharacterRepeat Try the next object from ProcessCharacterAttribute_CountCharacterRepeat.
Compare this object pointer with the list head.
ProcessCharacterAttribute_Next 59046 PUSH IX Point HL at the object display link and DE at 40944+6 and clear the carry.
59048 POP HL
59049 LD DE,40950
59052 AND A
59053 SBC HL,DE See whether this object pointer is 40944+6.
59055 JR Z,ProcessCharacterAttribute_TestActionSucceeded Jump ahead to ProcessCharacterAttribute_TestActionSucceeded if the two pointers meet.
59057 PUSH IX Take the police message, then call PrintTextAndHandleControlCharacters to print the police message.
59059 LD HL,28544
59062 CALL PrintTextAndHandleControlCharacters
ProcessCharacterAttribute_TestActionSucceeded 59065 OR %00000001 Reset the zero flag.
59067 RET Return.
Named from the script commands at 62246 and 62396.
Individual script handlers. Each one ends by returning success or by bailing out through ParseInputNumber_ReturnZero.
59068 DEFB 13,12 Display record read by ProcessDisplayRecord: flags 13 value 12.
Run by 51812 after the display record at 59068.
ProcessCharacterAttribute_TestCount 59070 LD A,(41013) Go to ProcessCharacterAttribute_Succeeded if no object carries this id.
59073 CALL ScanObjects
59076 JR Z,ProcessCharacterAttribute_Succeeded
59078 LD E,(IX+9) Read the low byte of the text pointer and read the high byte of the text pointer.
59081 LD D,(IX+10)
59084 LD HL,27575 Take the character busy message.
Print text and handle control characters.
59087 CALL PrintTextAndHandleControlCharacters Call PrintTextAndHandleControlCharacters to print this message.
59090 LD HL,0 Call ShiftTextPointer to handle the picture for this message.
59093 AND A
59094 SBC HL,DE
59096 CALL ShiftTextPointer
59099 LD A,34 Print a quotation mark and start a new line.
59101 CALL Print_Character
59104 CALL PrintNewline
ProcessCharacterAttribute_Succeeded 59107 OR %00000001 Reset the zero flag.
59109 RET Return.
Prev: 59014 Up: Map Next: 59110