First of all I wouldn't run this logic every tick as it looks like you are doing, just run it once to stop any confusion happening. At least until it is working correctly.
Your events don't compare instances but also it is difficult to do this, you can't compare objectA to objectA when picking.
My approach would be to bring the player scores into global variables. Set object.score for object.placement=1 to GV 1st and object.placement=2 to GV 2nd etc. First establish those positions because of course in the next section they would change.
Then you could say for example if object.placement=2 and object.score= GV1 then set placement to 1. If object.placement=3 and object.score= GV2 then set placement to 2, if score = GV1 then set placement to 1 (top 3 tied). I would take this approach to get around picking issues with the same object type.