This also gives us the ability to pause or even entirely stop production if any conditions change for an item as well. If the temperature drops below freezing we can change the duration until it molds to much longer, or start a separate decay that will create freezer burnt wheat.

Items: Type vs AttributeCollection

With decay being established as a form of production we then have to ask ourselves what does it mean to be "produced" from decay. Do carrots produce moldy carrots at the cost of carrots or do they become moldy? In a strictly type based item system the former would have to be true carrots are carrots they can never be moldy carrots, even if all other attributes of carrots and moldy carrots were the same like mass and bulk. This also means if carrots where used to make a food dish there would have to be a separate food dish that also used moldy carrots, this could get very irritating to implement any dish into the game. Just three decay stages and two ingredients would require nine different variations of the same dish to be added to the game.

After mulling over these problems we realized the answer was pretty simple given how we have set up the rest of the game. If any object was just an agent with a collection of components that makes them what they are, why not do the same thing with items. Items became not just a type but a collection of attributes to describe what they were. Carrots could be fresh, mold, rotten, red, poisonous, maybe even irradiated. Carrot did not describe the type of item but rather one of the many attributes used to describe an item.