When Opening a Crumpled Package, it will drop only one item from this table. The item with higher weight has higher possibility to be dropped. Add them up you can get the sum of weights. The possibility of one item is its weight divided by the sum of weights.
For example, the sum of weights is (0*4 + 1*4 + 0.1 + 0.05*7) = 4.45. If you want a Potato Cup, you have 0.1/4.45 = 2.2% possibility.
That's not finished, for the Blueprints and antliontrinket, there is a UpdateLootBlueprint function to assign their weights:
UpdateLootBlueprint = function(loottable, doer)
local builder = doer ~= nil and doer.components.builder or nil
loottable["goggleshat_blueprint"] = (builder ~= nil and not builder:KnowsRecipe("goggleshat")) and 1 or 0.1
loottable["deserthat_blueprint"] = (builder ~= nil and not builder:KnowsRecipe("deserthat") and builder:KnowsRecipe("goggleshat")) and 1 or 0.1
loottable["succulent_potted_blueprint"] = (builder ~= nil and not builder:KnowsRecipe("succulent_potted")) and 1 or 0.1
loottable["antliontrinket"] = (builder ~= nil and builder:KnowsRecipe("deserthat")) and .8 or 0.1
The weights depends on if the player has known some recipes (goggleshat, deserthat, succulent_potted).
If player has known goggleshat, he has goggleshat_blueprint = 0.1. Else he has goggleshat_blueprint=1.
If player has known goggleshat and deserthat, he has deserthat_blueprint = 0.1. Else he has deserthat_blueprint = 1.
If player has known succulent_potted, he has succulent_potted = 0.1. Else he has succulent_potted = 1.
If player has known deserthat, he has antliontrinket=0.8. Else he has antliontrinket=0.1.
In short words, If you have learnt any Blueprint, the weight of the Blueprint will become one-tenth. If you have learnt deserthat, the weight of antliontrinket will become 8-times.
For example, if you have learnt goggleshat and want a deserthat_blueprint. Now the weight table is: