Prev: CF22 Up: Map Next: CF9E
CF68: The update routine for a quest item
Graphics 112 to 115, the four rough stones the quest is about, and 116 to 119, the same four once done. Nothing happens until the bucket reaches one: BUCKET sets bit 0 of +16. Then the item is done: one more on QUEST_DONE, a life added and the lives redrawn (DRAW_LIVES), and its graphic goes up by 4, in the object record and the quest record (CHANGE_GRAPHIC), which turns the rough stone into a finished pillar and takes it out of the bucket's reach (BUCKET looks for 112 to 115 only). ALL_FOUR_DONE shows the pentagram if it was the fourth.
Input
IX the object record
QUEST_ITEM CF68 CALL DRAW_AT_L16_D8 the drawing nudge; move without falling
CF6B CALL CLIP_AND_MOVE
CF6E BIT 0,(IX+$16) has the bucket reached it?
CF72 RET Z
CF73 LD A,(QUEST_DONE) one more quest item done
CF76 INC A
CF77 LD (QUEST_DONE),A
CF7A LD A,(LIVES) and a life more, shown on the panel
CF7D INC A
CF7E LD (LIVES),A
CF81 PUSH IX
CF83 CALL DRAW_LIVES
CF86 POP IX
CF88 RES 0,(IX+$16) done with the bucket; graphic + 4, here and in its quest record
CF8C LD A,(IX+$00)
CF8F ADD A,$04
CF91 LD C,A
CF92 LD A,(IX+$00)
CF95 CALL CHANGE_GRAPHIC
CF98 CALL ALL_FOUR_DONE all four? Then redraw
CF9B JP SET_WIPE_AND_DRAW_FLAGS
The life is added with INC, not in BCD, but lives start at 5 and only the four quest items add any, so they never pass 9.
Prev: CF22 Up: Map Next: CF9E