Quote Originally Posted by Soukyuu View Post
I spent enough hours debugging my own code, so I DO know how fragile a system can be.

BUT. If this:
Code:
if (person.distance <= 20)
{
   kick(person);
};
cannot be changed into this:
Code:
//if (person.distance <= 20)
//{
   kick(person);
//};
Then the person who wrote that engine needs to be fired immediately. I am not saying it's how the code looks like, any equivalent of the above code can work. If it's a function, make it return true no matter the distance. If it's a function that is used to calculate distance elsewhere, remove the check and just set the result for kicking the player to true.

I am talking about cases where removing an if-check makes sense, not about ones that make the whole thing collapse. It doesn't make sense to talk about those cases.

Name me one example of how kicking a player could be implemented that makes removing the distance check impossible. Until then, my opinion won't change. The excuse of being unable to remove distance/online check is BS.
There is more to it than that:
A check has to be done to see if the user is available and can be 'modified'.
The user who is removed has to have the linkshell removed from their list of linkshell.
The user who is removed has to have their linkshells re-listed so that they appear in a new & correct order.
If the user who is removed is on the linkshell when being removed something different happens than if they are not on when they are removed.. This has to be handled as well.
The server has to be notified to no longer relay messages to that user since they have been kicked.

All of these require communication. Unfortunately it appears that any sort of communication outside of a very small range is severely restricted. So it may not be possible to send requests to do all these actions if both parties are not in the same location at the same time (and therefore being processed by the same server/whatever).

So it is not quite that simple