Had an old copy of my Apollo and saw this bug was never fixed. Looks like even Major's copy still has this updating bug.
If you walk away from another player in the right direction both deltax and deltay distance will be a negative value so it will never remove the players from the local list. Mainly you could be 40 squares away and still be able to see someone talking.
Quick fix is in the Position Class
Code:
/**
* Gets the longest horizontal or vertical delta between the two positions.
* @param other The other position.
* @return The longest horizontal or vertical delta.
*/
public int getLongestDelta(Position other) {
int deltaX = x - other.x;
int deltaY = y - other.y;
return Math.max(Math.abs(deltaX), Math.abs(deltaY));
}
Since this method compares positive numbers we need to obtain the absolute value not the negative value or we wont calculate the distance the proper way since we are using Math.max which gets the greater number of 2 values.
Hopefully this will help you out.