Prev: 52053 Up: Map Next: 52142
52098: Advance position of entity pushed left by Drutt
Used by the routine at 52053.
Input
IY Address of complex state data for entity pushed by Drutt
52098 PUSH IY Transfer address of complex state data for pushed entity from IY...
52100 POP IX ...to IX
52102 CALL 54666 Check pushed entity for collision with another impassable / pushable entity immediately to the left...
52105 JR C,52112 ...and if a collision has not occurred, then skip ahead to 52112
52107 CP 129 If collision was with entity of class 129 (causes other entities to start falling)...
52109 JR Z,52134 ...then skip ahead to 52134
52111 RET Return (as Drutt can't push two entities)
No knock-on collision
52112 LD A,(IX+5) If x-coordinate of left edge of pushed entity is at least 103...
52115 CP 103 ...i.e. not yet at left edge of room...
52117 JR NC,52127 ...then skip ahead to 52127
52119 CALL 54539 Load B with index of room to left of current character's current room...
52122 RET Z ...and if there is no room to the left then return
52123 CALL 54348 Move pushed entity into room to the left, if appropriate...
52126 RET NC ...and if pushed entity can't enter new room then return
52127 DEC (IX+5) Move pushed entity left one character...
52130 DEC (IX+7) ...
52133 RET Return
52134 CALL 55516 Set can-fall flag and set initial velocity factor of 2 for pushed entity
52137 CALL 52127 Move pushed entity left two characters...
52140 JR 52127 ...and return
Prev: 52053 Up: Map Next: 52142