Hmmm... let me see if I can say what's there. Here are the reaction structures:
A reaction has a name, a list of reactors, a rate, how long it makes products after the reagents are gone, a chance in 10000 of occuring (mostly just 100%) per unit of rate, and how it handles damage (for example, if you get reacted a little, are you burned or frozen?).
Reactors have three principle features: type, role, and amount.
Type can be material, material class (e.g. all metals), pressure, rubbing, a field (e.g. evil), light, wind and temperature. Right now, creature materials must be fed into a material class to be seen by a reaction, but that might be temporary.
Role can be any of the following:
Reagent - consumed by reaction
Product - made by reaction
Solvent - dissolves Solute role
Solute - dissolves in Solvent role
Catalyst - not consumed but must be present
Inhibitor - presence blocks reaction
Rate Increasor - presence speeds reaction
Rate Decreasor - presence slows reaction
Reaction rates can be on a scale from seconds to centuries. In this manner, you could create a creature out a material that decays over a few centuries. Not that that timescale is important yet... maybe more germane now would be summoning an elemental creature that only lasts a few minutes because of rapid decay.
Anyway, those are the elements I'm working with. Now I just need to get it to work. What I'm thinking is that it will process all of the creatures every 10 frames, and make a list of all the reactions that can happen (analyzing inventory, air, temperature, light, the ground, etc.) Then that new members in the list will be added to the reactions running. Duplicates will be tossed, so that if two creatures are holding the same item, for instance, it won't decay twice as fast. I don't know if or how fast it will work. If it bogs down, there are some things I can do to speed it up. For now it will be fine, since there's only the one shadow reaction.