So the tower needs to tell pathfinder the ground door can be used if there's ground and not water for example or some other obstacle and the top doors can be used if there's some connection like walls/platform next to the doors
I'm not sure the why the tower would care that there are walls or water blocking the doors. It should just say "I have a door that opens here, a door that opens here, and a door that opens here", and provide some description of the kind of objects that can travel through the tower.
The pathfinder would then be responsible for examining each of those routes, and checking to see if there is a wall or water blocking the way (as it would be if there were open land immediately outside each of those doors, but which was then discovered to be walled or watered in a short distance from the doors).
Also, you can reduce the complexity of your multiple dispatch problem if you can attempt to categorize your buildings and other objects as to the kind of things they let pass through.
yes i very much agree. problem is with the complexity. but i'm going to use common attributes for each object (both path traveler and geometry) to determine in single function can the path go through an tile.
this can get probably quite complex but at least there's no duplicated code or any other problems.