It's not Stefan's problem. The scripts are the problem. If you have something like this:
NPC Code:
x+=.5;
if (playertouchsme) {
message hi;
}
Then every action that triggers that npc (playertouchsme, washit, playerenters, etc.) will move it, since it will run past the
x+=.5 part every time, which has no conditions for running.