No es ningún BUG, solamente hay que tener en cuenta la precedencia de operadores.
Si el operador "AND" tiene mayor jerarquía que el operador "=", entonces la expresión será evaluada de esta manera:
Código Delphi
[-]
if Quieto = (false and SoyMasCercanoALPelota) = (true and DiLaPelota) = false then
begin
.
.
end
Obviamente no te dará el resultado que esperas. Por esta razón, lo mejor es que tu mismo coloques los paréntesis para indicar el orden de evaluación.
Código Delphi
[-]
if (Quieto = false) and (SoyMasCercanoALPelota = true) and (DiLaPelota = false) then
begin
.
.
end
Saludos