Prev: AFDF Up: Map Next: B14C
B107: Accept bribe
This is called when a character accepts the bribe.
Used by the routines at collision and target_reached.
Input
IY Pointer to visible character.
accept_bribe B107 CALL increase_morale_by_10_score_by_50 Increase morale by 10, score by 50
B10A LD (IY+$01),$00 Clear the vischar_PURSUIT_PURSUE flag
B10E PUSH IY Point HL at IY->route
B110 POP HL
B111 INC L
B112 INC L
B113 CALL get_target_assign_pos Call get_target_assign_pos
Return early if we have no bribes.
B116 LD DE,$8215 Point DE at items_held
B119 LD A,(DE) Fetch the first item
B11A CP $05 Does it hold item_BRIBE?
B11C JR Z,accept_bribe_0 Jump forward if it does
B11E INC DE Advance to the second item
B11F LD A,(DE) Fetch the second item
B120 CP $05 Does it hold item_BRIBE?
B122 RET NZ Return if not
Remove the bribe item.
accept_bribe_0 B123 LD A,$FF Assign item_NONE to the item slot, removing the bribe item
B125 LD (DE),A
B126 AND $3F Set the bribe item's item_struct room to itemstruct_ROOM_NONE
B128 LD ($76EC),A
B12B CALL draw_all_items Draw held items
Set the vischar_PURSUIT_SAW_BRIBE flag on all visible hostiles. Iterate over hostile and visible non-player characters.
B12E LD B,$07 7 iterations
B130 LD HL,$8020 Start at the second visible character
Start loop
accept_bribe_1 B133 LD A,(HL) Fetch the character index
B134 CP $14 Is it > character_20_PRISONER_1?
B136 JR NC,accept_bribe_2 Jump forward if so
B138 INC L Set flags to vischar_PURSUIT_SAW_BRIBE if hostile
B139 LD (HL),$04
B13B DEC L
accept_bribe_2 B13C LD A,L Advance to the next vischar
B13D ADD A,$20
B13F LD L,A
B140 DJNZ accept_bribe_1 ...loop
B142 LD B,$11 Queue the message "HE TAKES THE BRIBE"
B144 CALL queue_message
B147 LD B,$12 Then queue the messsage "AND ACTS AS DECOY"
B149 JP queue_message Return
Prev: AFDF Up: Map Next: B14C