kalewind1 here's how to implement the example from your last post, which will give you ideas on how to accomplish the more complicated tasks you are after:
Step 1:
Add an instance boolean called 'ContainsKey' to your 'Tree' object and set the default value to 'false'.
Step 2:
Create an object called 'TreeSpawnPoint' and place several of them all around your level wherever you want a tree to potentially show up.
Step 3:
In your events, create a new condition "System: On Start Of Layout + System: Repeat x times + System: Pick a random 'TreeSpawnPoint' instance", where x is the number of trees you'd like. As the first action to this condition, create a tree at the point (TreeSpawnPoint.X,TreeSpawnPoint.Y). As the second action, destroy the TreeSpawnPoint. So now, when it repeats, it'll select from the remaining TreeSpawnPoints and a new tree will be created at a different area.
Step 4:
In your events, create a new condition "System: On Start of Layout + System: Pick a Random 'Tree' instance. As the action to this condition, "Set Tree.ContainsKey to true". So you picked one random tree out of all your trees and said that you want it to contain the key. Great.
Now you're all set. A 'random level' will be generated and a tree will be selected to place the key in. Now when your character destroys a tree, test to see whether that tree 'contained the key' by testing 'Tree.ContainsKey'. If it does, then create the key there.
I can create a .capx later (not now), but it might be better for you to just implement it yourself, so you can really grasp what you're doing.