Ok, when you set a private variable you don't need to use Timedelta. Only when you want it to change over time. The collision event would take care of the picking issue.
So,
Cursor overlaps Target - set timer to 5 This will only affect the sprites that are overlapping, after this line we are working only from the timer variable, so only the sprite with the changed variable will be affected.
Timer is greater than 0 - Subtract 1*timedelta. This will bring Timer down 1 every second
-Change collisions
-Change colour filter
Timer is less than 0 - Set timer to 0 - I don't know if this is needed without running it, but i think timedelta will run down below 0, so just in case this is here to lock it to 0
Timer is equal to 0 - Change Collisions
-Change colour filter
TARGET value TIMER greater or equal 1*TimeDelta, system TARGET add attribute 'solid'. Target subtract TimeDelta from TIMER
TARGET value TIMER less than 1*TimeDelta, system TARGET remove attribute 'solid'
I believe this is where your problem is coming from. You are subtracting until it is 1, not below it. You condition to change the collisions comes when it is below 1. Have a look at that variable in your debug run.