If objects are too close together, then the condition remains true while mouse moves over objects, as it doesn't actually leave the object type yet.
But here is an unique property of each object instance: Unique ID - UID. See the code:
[code:nwff6iyo]+MouseKeyboard: Mouse is over Sprite
> System Set global variable 'Test' to Sprite.UID
> Sprite Set opacity to 50
+Sprite: Unique ID is NOT global('Test')
> Sprite Set opacity to 100
Basically, whenever you hover mouse over an object, you change its opacity and store its UID, so it is exempt from the other event, which sets objects with different UID back to original opacity.