if math.sqrt((x - building[1])^2 + (y - building[2])^2) <= radius then
Nie wiem, jak Lua radzi sobie z liczbami zmiennoprzecinkowymi, ale z tym jest często problem.
Sprawdziłbym:
if ((x - building[1])^2 + (y - building[2])^2) <= radius*radius then
tak, żeby w ogóle nie korzystać ze zmiennoprzecinkowców