Prev: 36471 Up: Map Next: 36610
36542: Update state of Berk (floating power active)
Used by the routine at 35735.
Input
IX Address of complex state data (current level) for Berk
36542 CALL 54768 Check entity at IX for collision with another entity at same depth whose interaction-(11,6) flag is set...
36545 CP 130 ...and if collision was with entity of class 130 (causes Berk and Drutt to bounce off or bang head)...
36547 JR Z,36558 ...then skip ahead to 36558
No collision with entity of class 130
36549 DEC (IX+4) Move Berk up one character...
36552 DEC (IX+6) ...
36555 CALL 55433 Change Berk's room up one if appropriate
36558 BIT 1,(IX+11) If Berk's walking-left flag is set...
36562 JR NZ,36587 ...then skip ahead to 36587
36564 BIT 0,(IX+11) If Berk's walking-right flag is set...
36568 JR NZ,36576 ...then skip ahead to 36576
36570 CALL 48388 Decrease remaining time for current power and if zero, exit this routine and run script data for removal of power
36573 JP 48096 Advance HL to next script instruction and execute
Berk's walking-right flag is set (i.e. Drutt has pushed Berk right)
36576 INC (IX+5) Move Berk's left and right sides right by one character...
36579 INC (IX+7) ...
36582 CALL 54313 Move Berk at IX into room to the right, if appropriate
36585 JR 36596 Skip ahead to 36596
Berk's walking-left flag is set (i.e. Drutt has pushed Berk left)
36587 DEC (IX+5) Move Berk's left and right sides left by one character...
36590 DEC (IX+7) ...
36593 CALL 54348 Move Berk at IX into room to the left, if appropriate
36596 DEC (IX+12) Decrease remaining horizontal distance from Drutt's push...
36599 JP NZ,48096 ...and if not zero then jump to 48096 (advance HL to next script instruction and execute)
36602 LD A,1 Set remaining power duration to 1...
36604 LD (34225),A ...
36607 JP 48212 Reset Berk's walking-left and walking-right flags, advance HL to next script instruction and execute
Prev: 36471 Up: Map Next: 36610