The idea there was to "refactor" a bit what you did.
What you want is to have a single event that handles the fact that you are picking up an object from the family that contains all the object types.
You then pick only the instance that has the highest priority (the instance variable you used).
This is kind of an "input event". The player presses space, overlaps at least a "carryable" object and is not carrying an object at the time. So the intent is to carry the object.
You send the UID (unique identifier) of the picked instance to the function, and the function deals with destroying/spawning the correct type of object.
To do so, I added another family instance variable "type" that allows you to specify what object type is actually picked/passed to the function through the UID.
Notice also that when you are picking an object, after you set the bear boolean "logcarry" or "basketcarry", you also do set "carry" to true, so that it will render the "input event" false and won't execute it again since the bear is carrying an object.
That's about the "only" modification I made, just cleaning and grouping the events so that it makes hopefully sense.
For UID you can read about it in the manual (search UID keyword) and check out the discussions noted down in the "How do I FAQ" in the section "Picking/selecting instance(s)" section.