********** SEEKING KEEN ********** This section deals with what makes sprites chase or seek out Keen, a large part of what makes them seem intelligent. Sprites usually seek Keen simply by moving right or left depending on whether he is right or left of them. There are usually two entries for this; +1 and -1 which reverse the speed of a sprite when it gets to one side of Keen. Thus about all you can do is edit these values. +1 is usually for right speeds, -1 ($FF $FF) for left. Setting any value to zero will make a sprite become still. So if say the +1 entry is set to 0, Robo Red say, will be able to chase Keen left, but will be stuck behind an 'invisible wall' trying to chase him right. Setting both values to zero will make your sprite almost useless. Reversing both values will make a sprite 'fear' Keen; it will always try and stay as far away from him as possible. Reversing just one of the values means a sprite will try and get to one side of the level. (It will chase Keen left say, but if he jumps and it rushes past, it will keep heading left to get away from him.) Values other than -1, 0 and +1 will cause extreme difficulty, and even crashes. Sadly there is little way to make a seeking sprite ignore Keen totally, the best you can do is set its speeds to 0 and change it's animation speeds to make itmove back and forth. (Hey, I'm working on it, okay Andy?) Note that just because something doesn't seek Keen, doesn't mean it can't seem to. This section also deals with distances sprites measure. ### #Robo Red ### --------------------------------------------------------- Shot Keen detection: Red has two checks, both check two variables against each other. This means Red has no 'limits' (E.g. Keen must be x tiles away to be safe.) but does things 'absolutely' By default Red only shoots if Keen ISN'T above or below him. The following patches CAN be combined, as long as you just swap first/second lines. #Red shoots even when Keen is higher than his head %patch $1260E $90 $90 $90 $90 $90 $90 $90 $90 $8B $47 $24 $3B $44 $28 $73 $2C #Red shoots even when Keen is lower than his feet %patch $1260E $8B $47 $28 $3B $44 $24 $76 $34 $90 $90 $90 $90 $90 $90 $90 $90 #Red only shoots when Keen lis right of him %patch $1260E $8B $47 $0A $3B $44 $0A $76 $34 $90 $90 $90 $90 $90 $90 $90 $90 #Red only shoots when Keen lis left of him %patch $1260E $8B $47 $0A $3B $44 $0A $73 $34 $90 $90 $90 $90 $90 $90 $90 $90 --------------------------------------------------------- #When sees Keen, turns to face him to shoot: %patch $1263E $01 $00 %patch $12637 $FF $FF #When shot by Keen, turn towards him: %patch $12673 $01 $00 %patch $12678 $FF $FF ### #Shelley ### #Jump Keen detection and range: %patch $119B7 $72 #IF Keen is below it... ($77 = above) #Shelley jump right if Keen is: %patch $119CF $7E #At or further than... %patch $119CD $0100W #1 tile right of it AND %patch $119D5 $7D #At or closer than... %patch $119D3 $0300W #3 tiles right of it #Shelley jump left if Keen is: %patch $119F8 $7D #At or further than... %patch $119F6 $FF00W #1 tile left of it AND %patch $119FE $7E #At or closer than... %patch $119FC $FD00W #3 tiles left of it ### #Shikadi ### #When Keen is level with it, Shikadi heads for him: %patch $12F86 $01 $00 %patch $12F70 $FF $FF #How far from Keen l/r Shikadi must be before seeking him %patch $12F66 $0100W #1 tile left %patch $12F7C $0100W #1 tile right #Polezaps head vertically for Keen %patch $13106 $01 $00 %patch $13111 $FF $FF #Polezaps check horizontally, not vertically for Keen: %patch $130F5 $0A %patch $130FC $0A ### #Shikadi Master ### #Master detects Keen vertically (Not h) when randomly shooting: %patch $12AFE $0C %patch $12B01 $0C #Turn towards Keen when randomly shooting: %patch $12B07 $01 $00 %patch $12B0E $FF $FF #Turn towards Keen when shot: %patch $12B98 $01 $00 %patch $12B9D $FF $FF ### #Shikadi Mine ### #Mine moves: (At least ONE must be zero per move!) #To make it avoid Keen, reverse speeds, to make it #randomish, reverse just 1 or two speeds #Up %patch $11D84 $0000W #H %patch $11D89 $FFFFW #V #Right %patch $11DB1 $0001W #H %patch $11DB6 $0000W #V #Down %patch $11DDD $0000W #H %patch $11DE2 $0001W #V #Left %patch $11DDD $0000W #H %patch $11DE2 $0001W #V