Happy to help. This code would require the enemy to be checking for collisions from the weapon. If the weapon is also a KinematicBody2D, what I described before can be done with the weapon, rather than the enemy, which would not require the enemy to check for weapon collisions.
I sadly cannot think of a way to receive the exact coordinates of collisions without using the previously mentioned methods and hence a KinematicBody2D, so I believe your code will have to work around that condition. All this being said, enemies checking for weapon collisions is fairly typical and should have no significant performance effects, though I understand if you have hordes of enemies and are trying to keep things as clean as possible.