Gripes, how in the world do I get the getareanpcs(x,y,w,h) function to work. To my knowledge it loads indexes? Yet, when I try to set a var to it, it doesn't give any value... did it change in gs2? Oh wait, doesn't it only work serverside? This means more work! Now I'll have to cycle through all the NPCs in the level.

which may or may not be faster than cycling through every pixel.
Well, as I expected.. slow as hell to cycle through the npcs index and slow as hell to cycle at 1/16th pixel. Also, it's bad luck that my assumptions on player coord passing rounded to the nearest 1/2 were wrong. That means that I'd need an onPlayer(x,y,w,h) function in addition to an onNPC(x,y,w,h) function. Other functions mentioned are serverside only, and movement systems are, of course, scripted clientside. Something like getareaplayers() and getareanpcs() clientside would suffice, but onPlayer() and onNPC() would be the most useful in my case.
It would be possible to do an onPlayerOrNPC() using onwall and !onTiles (the function I made)... but would be just as difficult to separate the two.