Prev: 45539 Up: Map Next: 45642
45585: KillActorMoraleHit — mark a victim dead and shake the witnesses
Entered with HL -> the victim's morale byte (+6) and C = his slot: stamp status (+7) = 1 (dead), then give every live actor gathered in NearestCrewC/A/B a point of morale loss (WitnessMoraleLoss). If at least one witness survives, the death is seen at once: the body is marked found (+7 = 2), msg #20 "{witness} finds {victim}'s body" fires, and the whole crew's courage decays. With no witness the body stays at status 1 for a later discovery (MoraleFromCompanion).
45585 INC HL status (+7) = 1: dead
45586 LD (HL),1
45588 PUSH BC
45589 PUSH IX
45591 PUSH HL
45592 LD H,0 H = last live witness (0 = none)
45594 LD A,(33695) each gathered slot (C, A, B)
45597 CP 255 that exists loses morale
45599 CALL NZ,45642 as a witness
45602 LD A,(33696)
45605 CP 255
45607 CALL NZ,45642
45610 LD A,(33697)
45613 CP 255
45615 CALL NZ,45642
45618 LD A,H any live witness?
45619 CP 0
45621 JR Z,45637 no: the body lies undiscovered
45623 POP HL yes: the death is seen at once —
45624 LD (HL),2 the body is already "found" (+7 = 2),
45626 PUSH HL
45627 LD L,A L = witness, H = victim:
45628 LD H,C
45629 LD A,20 msg #20 "{actor} finds {target}'s body"
45631 CALL 37176
45634 CALL 36428 and everyone's courage decays
45637 POP HL
45638 POP IX
45640 POP BC
45641 RET
Prev: 45539 Up: Map Next: 45642