So many questions..
If you have lots of different items with lots of properties and you want to generate one at random, you need an organized way to store all this information. Lets call it the database. In C3 probably the easiest way to do this is with arrays (because of the Array Editor).
My example project has this database, you can add more items to it and more properties, just need to create functions to retrieve them. You can have multiple arrays (say, one for weapons, another for consumables).
.
.
Here is how you can do this without any database:
If you were placing all these items manually onto the layout (for the character to find), you can store all information directly in sprites.
Create a few sprites - Weapons, Potions, Food, Tools (or Basic, Legendary, Rare, whatever) with multiple animations.
Add them all to ITEMS family, and define a bunch of instance variables on the family, for all possible items properties - "damage", "run_speed", "jump_strength", "price" etc..
So when you place these sprites on layout, you will need to manually set an animation and enter values into these instance variables.
E.g.: animation="small_sword", damage=10. Leave unused variables empty.
.
So how do you give a random item to the player?
You can put all these items off-screen, all hundreds or them.
When player picks up a Randomizer, select a random instance of ITEMS family and move it to player's position.
.
It's your game, so you should decide how are you going to do this.
One thing I know for sure is that making hundreds of global variables to store all this data is definitely a bad idea.