| Routines

27126: Make a little boy trip people up

The address of this continual subcommand routine is placed into bytes 124 and 125 of little boy no. 1's character buffer by the routine at 27246, and into bytes 124 and 125 of the character buffers of little boys 2-11 by the routine at 27266.
Input
H | Little boy's character number (152-162)
27126 | LD L,97 | Pick up the little boy's y-coordinate in A
27128 | LD A,(HL)
27129 | CALL 26185 | Is the boy on a staircase?
27132 | RET NZ | Return if so
27133 | LD B,10 | We will check characters 163-172 (teachers and main kids)
27135 | LD DE,41826 | D=163 (MR WACKER), E=98
27138 | INC L | L=98
27139 | EX DE,HL |
27140 | LD A,(DE) | A=little boy's x-coordinate
27141 | CP (HL) | Does this teacher's or main kid's x-coordinate match?
27142 | JR Z,27149 | Jump if so
27144 | INC H | Next teacher or main kid
27145 | DJNZ 27140 | Jump back until all teachers and main kids have been checked
27147 | EX DE,HL |
27148 | RET |
A teacher or main kid is at the same x-coordinate as the little boy. Now check the y-coordinates.
27149 | DEC E | E=L=97
27150 | DEC L
27151 | LD A,(DE) | A=little boy's y-coordinate
27152 | INC E | E=98
27153 | CP (HL) | Does this teacher's or main kid's y-coordinate match?
27154 | INC HL | L=98
27155 | JR NZ,27144 | Consider the next teacher or main kid if not
A teacher or main kid is at the same location as the little boy.
27157 | LD L,112 | Bytes 111 and 112 of the character's buffer may hold a routine address; pick up the MSB in A
27159 | LD A,(HL)
27160 | LD L,98 |
27162 | AND A | Is there an uninterruptible subcommand routine address in bytes 111 and 112?
27163 | JR NZ,27144 | Consider the next teacher or main kid if so
27165 | LD A,H | A=number of the character in the same location as the little boy
27166 | CP 172 | Is it ERIC?
27168 | JR Z,27184 | Jump if so
27170 | LD L,111 | Place the address of the uninterruptible subcommand routine at 27206 into bytes 111 and 112 of the teacher's or main kid's buffer
27172 | LD (HL),70
27174 | INC L
27175 | LD (HL),106
27177 | INC L | Initialise the timing parameter in byte 113 of the character's buffer (which determines how long the character will stay down)
27178 | LD (HL),20
27180 | LD L,98 |
27182 | JR 27144 | Consider the next teacher or main kid
ERIC is in the same location as the little boy. Knock ERIC out.
27184 | LD HL,32763 | 32763 holds ERIC's status flags
27187 | SET 4,(HL) | Signal: ERIC has been knocked out
27189 | EX DE,HL |
27190 | RET |