Routines 
Prev: 41617  Up: Map  Next: 41767 
Used by the routine at 41211.


41633  LD IX,45794  Load IX with address of complex state data for ghost (level 4)  
41637  CALL 54768  Check entity at IX for collision with another entity at same depth whose interaction(11,6) flag is set...  
41640  CP 31  ...and if collision was not with entity of class 31 (Berk)...  
41642  JR NZ,41653  ...then skip ahead to 41653  
If collision was with Berk, then IY will point to Berk's complex state data


41644  BIT 6,(IY+9)  If Berk is not flying...  
41648  JR Z,41653  ...then skip ahead to 41653  
41650  CALL 53667  Set Berkhasbeenkilled flag  
41653  LD A,(34218)  Load E with current character's current room index...  
41656  LD E,A  ...  
41657  LD A,(IX+0)  Load A with ghost's current room index  
41660  LD C,(IX+4)  Load C with ycoordinate of ghost's top edge  
41663  LD B,(IX+6)  Load B with ycoordinate of ghost's bottom edge  
41666  BIT 0,(IX+9)  If ghost's movingupwards flag is set...  
41670  JR NZ,41716  ...then skip ahead to 41716  
41672  CP 4  If ghost's current room is 4 (room above pit)...  
41674  JR Z,41687  ...then skip ahead to 41687  
41676  LD A,B  If ycoordinate of ghost's bottom edge...  
41677  CP 119  ...is not 119...  
41679  JP NZ,42360  ...then move ghost down one character and return  
41682  SET 0,(IX+9)  Set ghost's movingupwards flag  
41686  RET  Return  
Ghost's current room is 4 (room above pit)


41687  CP E  If current character is in the same room as the ghost...  
41688  JR Z,41703  ...then skip ahead to 41703  
41690  LD A,B  If ycoordinate of ghost's bottom edge...  
41691  CP 119  ...is not 119...  
41693  JP NZ,42360  ...then move ghost down one character and return  
41696  INC (IX+0)  Increase index of ghost's current room (to 5, pit)  
41699  LD A,94  Position ghost such that the ycoordinate of its top edge is 115...  
41701  JR 41758  ...and return  
Current character and ghost in same room (room above pit)


41703  LD A,C  If ycoordinate of ghost's top edge...  
41704  CP 121  ...is not 121...  
41706  JP NZ,42360  ...then move ghost down one character and return  
41709  INC (IX+0)  Increase index of ghost's current room (to 5, pit)  
41712  LD A,100  Position ghost such that the ycoordinate of its top edge is 100...  
41714  JR 41758  ...and return  
Ghost's movingupwards flag is set


41716  CP 5  If ghost's current room is 5 (pit)...  
41718  JR Z,41731  ...then skip ahead to 41731  
41720  LD A,C  If ycoordinate of ghost's top edge...  
41721  CP 101  ...is not 101...  
41723  JP NZ,42374  ...then move ghost up one character and return  
41726  RES 0,(IX+9)  Reset ghost's movingupwards flag (i.e. moving downwards)  
41730  RET  Return  
Ghost's current room is 5 (pit)


41731  CP E  If current character is in the same room as the ghost...  
41732  JR Z,41747  ...then skip ahead to 41747  
41734  LD A,C  If ycoordinate of ghost's top edge...  
41735  CP 101  ...is not 101...  
41737  JP NZ,42374  ...then move ghost up one character and return  
41740  DEC (IX+0)  Decrease index of ghost's current room (to 4, room above pit)  
41743  LD A,121  Position ghost such that the ycoordinate of its top edge is 121...  
41745  JR 41758  ...and return  
Current character and ghost in same room (pit)


41747  LD A,B  If ycoordinate of ghost's bottom edge...  
41748  CP 100  ...is not 100...  
41750  JP NZ,42374  ...then move ghost up one character and return  
41753  DEC (IX+0)  Decrease index of ghost's current room (to 4, room above pit)  
41756  LD A,115  Prepare to set ycoordinate of ghost's top edge to 115  
41758  LD (IX+4),A  Set ycoordinate of ghost's top edge to value in A  
41761  ADD A,6  Add 6 to value in A (as ghost is 6 characters tall)...  
41763  LD (IX+6),A  ...and set ycoordinate of ghost's bottom edge to value in A  
41766  RET  Return 
Prev: 41617  Up: Map  Next: 41767 