If this area is touching both tiles and a player at the same time the elif seems to be getting read first.
Just tested elif, the order is correct. It checks the bools correctly so this could be something else.
I think the groups here could be what is causing the bug. Or your added variable. Because if the object isn't in "tiles" it will never be added.
This is the test I did.
func _on_Button_pressed():
if int (get_node("TextEdit").text) > 10:
get_node("Label").text = "High"
elif int (get_node("TextEdit").text) < 20 and SmallerThanT == false:
SmallerThanT = true
get_node("Label").text = "Mid"
elif int (get_node("TextEdit").text) < 6 and SmallerThanT == true:
SmallerThanT = false
get_node("Label").text = "low"