Plants have a Lifespan stat that's some fixed amount. All uses of energy drain this stat, and when it runs out the plant dies.
Plants have a Seeding Cycle -- they basically collect energy over time and at the end they'll attempt to fling out N seeds within dirs.adjacent(D). Starting out, N=2 and D=2.
They need 1 energy per N as well as an additional 2 energy per D in order to throw seeds. So starting out the energy use is 4. This drains the lifespan stat which is maybe 30.
When they don't have any energy, they'll collect it at 1 energy per photosynthesis. Photosynthesis starts out at 5 ticks per 1 energy, or the genetics stat P=5.
Plants that are seeds have to grow to maturity as well, which additionally takes 5 ticks, or M=5. Faster maturation degrades Lifespan, at a rate of 5-M=(lifespan loss). They can thus also take longer to mature and gain more Lifespan accordingly.
If a plant can't throw out all N seeds, they'll throw out as many as they can instead, retaining their existing energy until they can throw seeds again. They'll regain energy up to the maximum.
If a plant Lifespan goes negative, the plant will die, turning into Soil.
Seeds that are thrown into Soil have triple the lifespan. The Soil tile is then erased.
If a plant can't throw seeds, it will gain a Mutation trait. Any seeds thrown will have different genetics, a Mutation trait and a Mutagen stat of 1. When the plant is able to throw seeds again, the Mutation trait will vanish.
Seeds thrown with this Mutagen stat will lose the stat (and the Mutation trait) if they're able to throw seeds successfully. Otherwise, the Mutagen stat compounds in successive generations, creating more and more genetic variety up until a plant is able to seed again at which point its genome becomes stable.
If a plant is unable to throw seeds, it has a C=10 (1 is minned) chance of becoming an Herbivore. So most of the time it'll just become mutagenic once Herbivores exist, but the first ones will come from plants that are blocked. Herbivore transformation doesn't cost energy or lifespan -- it creates a brand new species instead.
Herbivores don't have a Lifespan, they instead purely have an Energy stat.
They start at 30 energy, and gain an additional 30 energy every time they eat a plant. Eating a plant erases the plant tile.
Starting out, they reproduce at R=60 energy -- this creates two new Herbivores with split energy. R is minned at 2, but they're likely to die long before that if R is low enough.
Herbivores look for a plant within a minned D=3 range. If they find one, they change their vector towards it. Otherwise their vector stays the same.
Movement speed is represented as M=5 ticks. They'll move every 5 ticks accordingly. M mins at 1.
Movement along a vector consumes 1+(D-3) energy. It also consumes (5-M) energy, minning at a grand total of 1. So slower herbivores will use less energy while moving, even if D is higher.
Each time they don't see a plant while scanning, their Stress goes up by 1. Each time they do, it goes down by 1. It mins at 0. When they reproduce, they transfer Mutagen to clones at a rate of (Stress/5)=Mutagen.
If Herbivores run out of energy they die and turn into Soil.
If an Herbivore sees more Vores than Plants in their look radius, they have a C=10 chance of becoming a Carnivore.
Carnivores function identically to Herbivores, except they're looking for Herbivores to eat. They retain the D and M from their Herbivore days. Stress also works identically.
If they run out of energy, they die and become Soil.
Every time they look and are unable to find Herbivores, but find Plants they will gain an Omnivore stat. If omnivore reaches O=10, they'll turn back into Herbivores, which regain all their stats (including O for future cycles). It's possible that they'll die before this happens.