i'm pretty sure no area can detect itself, what would even be the point?
are you sure there are no other bodies behind it? try creating a test scene with nothing but the "check" area to see what happens.
also, the collision signal comes with the area/body information, maybe you can print the area/body name to check what is colliding with what
finally, i just noticed that in your code you call
CheckForCollide(WhatToPlace) inside the
PreShow() function: this automatically resolve in
Globals.willCollideWithSolid = false, what's the reason behind this?
ps: your code seems overcomplicated, while this is a relatively simple task: you can achive this with a area2D (let's call it checker), that fires a signal to itself when body is entered/exited (you can use the signal menu in the editor, faster and safer than writing the connect code). on the checker code you can simply add a new parameter, let's call it
free_land=true, and the signal will change this value directly.
if there is the possibility of multiple bodies laying together behind the same checker, you can either keep count of them (
func _on_Checker_area_entered(body): body_count+=1), or you can use
Checker.get_overlapping_bodies() which returns an array of all the current colliding bodies, or a mixture of all the 3 techniques.