Prev: CF99 Up: Map Next: D04B
D019: Warlock - drop carried object
Used by the routine at CF99.
Follows the previous routine when a warlock is destroyed, or an object has been successfully traded.
The disintegration/materialization animation that followed either of these events is complete and the warlock will now drop the object it is carrying.
D019 LD A,$00
D01B LD ($EACF),A Set the draw/erase flag to 0 (ERASE)
D01E CALL $E3FD Reset screen attribute colours for warlock
D021 LD A,$04
D023 LD ($EB43),A Set the (new) object type to 4 = interactable object
D026 LD B,$00 The CALL in a few instruction to DE4C uses either the B register (room number) or C register (object number), whichever is <>0
We want to use the C register, so set B register to zero
D028 LD A,($EB46) Get object number
D02B LD C,A Store in C register
D02C LD HL,($DAF3) Address pointer to the room object data sets in table at 736F
D02F LD A,$00
D031 LD ($EB84),A Set the counter for the room object tables to 0
D034 CALL $DE4C Identify object, and copy its data into the object data set buffer at EB85
D037 LD HL,($EB82) Get address pointer to item's data set in table at 736F
D03A LD ($EB44),HL ...store in item data buffer
D03D LD A,($EB88) Get item properties byte
D040 OR %01001101 Set bits:
  • 0 (1) = item is visible
  • 2 (4) = item will need erasing before redrawing
  • 3 (8) = item is dropping/flying
  • 6 (64) = item is portable
D042 LD ($EB4E),A Store as item properties byte
D045 CALL $DADC Fetch object state and prepare graphics for printing
D048 JP $D27D
Prev: CF99 Up: Map Next: D04B