Prev: 40826 Up: Map Next: 41358
41264: TriggerAlienEvent
Per-frame guard: when the alien's current corridor index is >= 6 AND the alien-target crew id is < 8 AND the targeted crew member is dead (alive flag at offset 7 of the crew record is zero), fire a "hatch" event by setting the alien-source byte to 255 and jumping to the alien-event dispatcher at 45732. Otherwise simply returns.
Input
Used by the routine at 36457.
41264 LD HL,29570 HL → alien's current corridor index
41267 LD A,(HL) A = corridor
41268 CP 6 corridor 0-5 = pre-alien spawn area
41270 RET C below 6: alien not yet active here
41271 LD A,(33703) A = AlienTargetID (crew ID being targeted)
41274 CP 8 crew IDs are 0..6; 8+ = none/invalid
41276 RET NC no valid target: nothing to do
41277 LD HL,(33701) HL = pointer to current crew record (AlienTargetPtr)
41280 LD DE,7 offset 7 = alive flag
41283 ADD HL,DE
41284 XOR A
41285 CP (HL)
41286 RET NZ
41287 LD A,255
41289 JP 45732
41292 RET
41293 LD HL,33682
41296 LD (HL),0
41298 LD BC,31
41301 IN A,(C)
41303 BIT 2,A
41305 JR Z,41309
41307 SET 3,(HL)
41309 BIT 3,A
41311 JR Z,41315
41313 SET 2,(HL)
41315 AND 19
41317 OR (HL)
41318 LD (HL),A
41319 RET
41320 LD HL,33682
41323 LD (HL),0
41325 LD BC,61438
41328 IN A,(C)
41330 CPL
41331 RRCA
41332 RRCA
41333 JR NC,41337
41335 SET 2,(HL)
41337 RRCA
41338 JR NC,41342
41340 SET 3,(HL)
41342 RRCA
41343 JR NC,41347
41345 SET 0,(HL)
41347 RRCA
41348 JR NC,41352
41350 SET 1,(HL)
41352 AND 8
41354 RET Z
41355 SET 4,(HL)
41357 RET
Prev: 40826 Up: Map Next: 41358