It can be a litle confusing to start out using all the tools at once, since it gets hard to tell what is working properly and if it's realy having an effect.
This code beats I_flamma without shell, venom or poison, with just a few simple genes.
Having the basic genes in place goes a long way, and makes it a lot easier to tell if the new tools you're adding are working properly. (Firing shots/venom at someone is useless if you're too small to cause any damage, asf...)
The sysvars page should explain how to use anything in there.
'Birth gene
cond
*.robage 0 =
start
*.maxvel .sx store
150 .aimdx store
.deltie inc
stop
'Reproduction and scouting gene
cond
*.eyef 0 =
*.refup *.myup = or
start
*.body 3000 >
140 .aimsx store
30 .repro store
not
5 .sx store
stop
'Attack gene
cond
*.eyef 0 !=
*.refup *.myup !=
*.shflav 0 =
start
*.refxpos *.refypos angle .setaim store
0 .aimshoot store
*.veldx .sx store
*.refvelup 15 add .up store
10 .shootval store
-6 .shoot store
stop
'Growth gene
cond
*.body 2 mult *.nrg <
start
100 .strbody store
stop
'Shrink gene
cond
*.body 2 mult *.nrg >
start
100 .fdbody store
stop
'Counter attack gene
cond
*.shflav 0 !=
*.shflav -2 !=
start
*.shang .aimshoot store
30 .shootval store
-6 .shoot store
0 .shflav store
stop
Notice how the counterattack gene would overwrite some of the sysvars used by the attack gene (If both genes could be triggered at the same time that is).
Also the reproduction gene uses an inline condition, which is a seperate set of conditions working "inside" and across the genes. So this means that if body is over 3000, then the next condition (A "not", which is true when body is not above 3000) would be false, and since the boolean is not cleared it will also affect the other genes.
Basicaly, while reproducing the other genes won't work. (If you wanted them to you would use clearbool or true at the end of the gene using inline conditions.)
Personaly I get best results when starting over from scratch, then building a small base that accomplishes it's goal well, then build on that and start over from that point whenever new behaviors don't seem to work properly. If you're building on code that "misbehaves" or doesn't accomplish it's goal well enough, you'll be struggeling with more bugs or failed goals for each new gene you add.