I mean, there is a lot of mods, at least in emule, that change the way the queue works.
I like to upload first to people that gave me more than I gave them, before testing their scores. And there is a lot of emule mods that change things like that, like random picking who will get the next upload, instead of a queue, or an individual queue for each file.
Today, each new amule version that gets out, I have to change more than one place to do that, since there is more than one function that compare clientes by score.
These are:
CUploadQueue::AddUpNextClient
CUploadQueue::GetWaitingPosition
CUploadQueue::CheckForTimeOver
The last one is because when transfer full chunks is disabled, the uploading time is based in score. I am ignoring the inteface list sorting because I do it just for myself, but it should also count.
Some emule mods do some ugly hacks to avoid it, like setting the MSB bit of the score value, but its ugly and very limited.