When they get to the end of the screen, they should disapear, but they dont.
Ah, but you're not actually executing any code to make the sprite invisible, you're just changing the value of a variable (npcAlive = 0). Try this:
IF npcGridY = 1 THEN
npcAlive = 0
SPRITE -npcSpriteLayer
END IF
You'll also need to add an IF THEN condition to the fourth-last line of code in the KEYDOWN block:
IF npcAlive = 1 THEN SPRITEPATH npcSpriteLayer npcSpriteX npcSpriteY entitySpriteMoveSpeed
That should do the trick. ;)