Routines |
Prev: 38165 | Up: Map | Next: 38377 |
Used by the routine at 38009.
|
||||
38219 | LD IX,44214 | Load IX with address of complex state data for Bubo's projectile (level 2) | ||
38223 | BIT 1,(IX+9) | If projectile's fired flag is reset... | ||
38227 | RET Z | ...then return | ||
38228 | BIT 2,(IX+9) | If projectile's has-hit-target flag is reset... | ||
38232 | JR Z,38252 | ...then update position of projectile and knock key down if appropriate | ||
38234 | LD BC,39131 | Point BC at graphic layout data for Bubo's projectile... | ||
38237 | LD (IX+2),C | ...and set this as the graphic lookup address for the projectile's complex state data entry... | ||
38240 | LD (IX+3),B | ... | ||
38243 | LD (IX+9),0 | Reset projectile's has-hit-target flag and fired flag | ||
38247 | LD (IX+1),0 | Set projectile's depth to zero | ||
38251 | RET | Return | ||
38252 | LD IY,44227 | Point IY at complex state data for Bubo (level 2) | ||
38256 | LD A,(IX+12) | If projectile's velocity factor is not zero... | ||
38259 | OR A | ... | ||
38260 | JR NZ,38267 | ...then skip ahead to 38267 | ||
38262 | CALL 38377 | Start level 2 key falling if Bubo's projectile is in place below it | ||
38265 | JR 38361 | Jump to 38361 (increase velocity and handle landing if appropriate) | ||
38267 | BIT 7,A | If bit 7 of projectile's velocity factor is set (i.e. negative, moving upwards)... | ||
38269 | JR NZ,38336 | ...then skip ahead to 38336 | ||
38271 | CP 6 | If projectile's velocity factor is less than 6... | ||
38273 | JR C,38277 | ...then skip ahead to 38277 | ||
38275 | LD A,5 | Load A with 5 (terminal velocity) | ||
38277 | LD B,A | Load B with velocity value | ||
38278 | PUSH BC | Store BC (B = remaining velocity value) | ||
38279 | CALL 54768 | Check entity at IX for collision with another entity at same depth whose interaction-(11,6) flag is set... | ||
38282 | JR C,38328 | ...and if no collision occurred, then skip ahead to 38328 | ||
38284 | CP 31 | If collision was not with entity of class 31 (Berk)... | ||
38286 | JR NZ,38293 | ...then skip ahead to 38293 | ||
38288 | CALL 53667 | Set Berk-has-been-killed flag | ||
38291 | JR 38328 | Skip ahead to 38328 | ||
38293 | CP 25 | If collision was not with entity of class 25 (ape-beast, level 2)... | ||
38295 | JR NZ,38328 | ...then skip ahead to 38328 | ||
38297 | LD A,(34218) | Load A with current character's current room... | ||
38300 | CP (IX+0) | ...and if this is not the same as the projectile's room... | ||
38303 | JR NZ,38328 | ...then skip ahead to 38328 | ||
38305 | LD (IY+1),0 | Set ape-beast's depth to zero | ||
38309 | LD (IY+11),0 | Reset ape-beast's flags | ||
38313 | LD BC,51483 | Point BC at graphic layout data for explosion (Bubo's projectile / fallen drips, level 4)... | ||
38316 | LD (IX+2),C | ...and set this as the graphic lookup address for the projectile's complex state data entry... | ||
38319 | LD (IX+3),B | ... | ||
38322 | SET 2,(IX+9) | Set projectile's has-hit-target flag | ||
38326 | POP BC | Restore BC (B = current velocity factor) | ||
38327 | RET | Return | ||
38328 | CALL 38756 | Move projectile down one character | ||
38331 | POP BC | Restore BC (B = current velocity factor) | ||
38332 | DJNZ 38278 | Decrease remaining velocity value and loop back to 38278 if not zero | ||
38334 | JR 38361 | Skip ahead to 38361 (increase velocity and handle landing if appropriate) | ||
Projectile moving upwards
|
||||
38336 | NEG | Multiply projectile's velocity factor by -1 | ||
38338 | CP 6 | If projectile's velocity factor is now less than 6... | ||
38340 | JR C,38344 | ...then skip ahead to 38344 (change projectile's y-coordinate based upon velocity) | ||
38342 | LD A,5 | Load A with 5 (i.e. cap velocity magnitude at 5) | ||
38344 | NEG | Multiply value in A by -1... | ||
38346 | LD E,A | ...and load value (capped velocity) into E | ||
38347 | LD A,(IX+4) | Decrease projectile's y-coordinate by value in E... | ||
38350 | ADD A,E | ... | ||
38351 | LD (IX+4),A | ... | ||
38354 | LD A,(IX+6) | ... | ||
38357 | ADD A,E | ... | ||
38358 | LD (IX+6),A | ... | ||
38361 | LD A,(IX+4) | If projectile's y-coordinate is at least 124... | ||
38364 | CP 124 | ... | ||
38366 | JR NC,38372 | ...then skip ahead to 38372 (reset projectile's fired flag and return) | ||
38368 | INC (IX+12) | Increase projectile's velocity factor by one | ||
38371 | RET | Return | ||
38372 | RES 1,(IX+9) | Reset projectile's fired flag | ||
38376 | RET | Return |
Prev: 38165 | Up: Map | Next: 38377 |