You want to utilize the collision layer and collision mask.
To make things easier, you'll probably want to name the layers. See https://docs.godotengine.org/en/3.1/tutorials/physics/physics_introduction.html#collision-layers-and-masks for details on setting this up. Given your description, you probably want a layer for:
Now, for each of these entities, you'll want to select the "collision layer" that matches what the entity is. So for the player, you want to select the
player bit. For floors, you want to select the
The "collision mask" indicates which types of things that entity is able to collide with. So for example, for the npc, you would want to have all the things selected except
player, this way the npc can pass through the player.