To check the operation of npc movement. You can turn off all movement in the game and move only the npc you want using the move to package. This way you will reduce a lot of unnecessary code and understand where the problem is.
And all your maps are not thread safe and you are using multithreading
startQuestTimer("move", 5000, npc, null);