Here are some suggestions concerning reproduction:
Rather than .mrepro being like normal .repro you could have the number stored into .mrepro as the mutation rate.
So:
0 .mrepro store
would produce an unmutated copy
And say:
100 .mrepro store
would produce very mutated progeny
You could have the energy shared between parent and ofspring as a simple 50 default, or you could have an additional sysvar controling that like .shootval for .shoot
Alternatively, you could use .mrepro as the .shootval style sysvar that controls the mutation rate of .repro (proportional to the current set mutation rate, and energy is expended altering it)
So
-64 .mrepro store
50 .repro store
would produce a relatively mutation-free ofspring
And
64 .mrepro store
50 .repro store
would produce a relatively mutated offspring
Another suggestion is a .divide command. Storing a number into .divide would split one bot into several, with the number in .divide specifying the number of bots:
4 .divide store
would split one bot into four, with the energy, body shell, poison and everything else being split between them. All the bots that come out of a divide would be subject to mutation.
Finally, a .shuffle command. If two conspecs were within a certain distance, then one could:
.shuffle inc
And both bots' genes would be exchanged without reproduction taking place. Probably for a future Darwinbots with chromosomes.
Doable?