what about walls, trees that are on the npc's path ? will just pass thru them ?
the ground isn't flat either, so you ll have to take care of the z axis.
if you dont implement this in your algorythm, your npc will only be able to move on a flat rectangular surface without nothing on the floor.
