You'd expect version three to be halfway decent, eh?
While not exactly a 'good' bot, I like the idea behind a double-layered conspec that differentiates 'conspec' 'non-conspec but friendly' and 'enemy' , and decided to rewrite my old Sentinel bot (one of my first successful Viral bots apart from Occura Amplificis, which still packs a punch).
'Sentinel 3
'Teaching an old bot new tricks
'999-gene deactivator
'998-aim setter
cond
*.robage 1 >
*999 4285 !=
start
50 .repro store
*.tiepres .deltie store
*.thisgene .mkvirus store
*.nrg 5 div .vshoot store
618 .eye5dir store
*.thisgene ++ .delgene store
.fixpos inc
4285 .out2 store
.backshot inc
*.nrg 10 div .shootval store
-1 *.in1 482 sub sgn abs -- abs mult -- .shoot store
0 998 store
200 *.shell sub .mkshell store
100 *.slime sub .mkslime store
stop
cond
*.robage 0 =
start
482 .out1 store
4285 999 store
stop
start
50 *.poison sub .strpoison store
50 *.shell sub .mkshell store
1 .mkvirus store
200 *.nrg 10 div ceil .vshoot store
500 *.body sub dup .strbody store - .fdbody store
20 *.velup sub .up store
-4 *.eye1 *.eye9 sub sgn 0 floor mult *.eye1 *.eye8 sub sgn 0 floor mult *.eye1
*.eye7 sub sgn 0 floor mult *.eye1 *.eye6 sub sgn 0 floor mult *.eye1 *.eye5
sub sgn 0 floor mult *.eye1 *.eye4 sub sgn 0 floor mult *.eye1 *.eye3 sub sgn 0
floor mult *.eye1 *.eye2 sub sgn 0 floor mult 4 *.eye9 *.eye8 sub sgn 0 floor
mult *.eye9 *.eye7 sub sgn 0 floor mult *.eye9 *.eye6 sub sgn 0 floor mult
*.eye9 *.eye5 sub sgn 0 floor mult *.eye9 *.eye4 sub sgn 0 floor mult *.eye9
*.eye3 sub sgn 0 floor mult *.eye9 *.eye2 sub sgn 0 floor mult *.eye9 *.eye1 sub
sgn ++ sgn mult add -3 *.eye2 *.eye9 sub sgn ++ sgn mult *.eye2 *.eye8 sub
sgn 0 floor mult *.eye2 *.eye7 sub sgn 0 floor mult *.eye2 *.eye6 sub sgn 0 floor
mult *.eye2 *.eye5 sub sgn 0 floor mult *.eye2 *.eye4 sub sgn 0 floor mult *.eye2
*.eye3 sub sgn 0 floor mult *.eye2 *.eye1 sub sgn ++ sgn mult add 3 *.eye8
*.eye9 sub sgn ++ sgn mult *.eye8 *.eye7 sub sgn 0 floor mult *.eye8 *.eye6
sub sgn 0 floor mult *.eye8 *.eye5 sub sgn 0 floor mult *.eye8 *.eye4 sub sgn 0
floor mult *.eye8 *.eye3 sub sgn 0 floor mult *.eye8 *.eye2 sub sgn ++ sgn mult
*.eye8 *.eye1 sub sgn ++ sgn mult add -2 *.eye3 *.eye9 sub sgn ++ sgn mult
*.eye3 *.eye8 sub sgn ++ sgn mult *.eye3 *.eye7 sub sgn 0 floor mult *.eye3
*.eye6 sub sgn 0 floor mult
*.eye3 *.eye5 sub sgn 0 floor mult *.eye3 *.eye4 sub sgn 0 floor mult *.eye3
*.eye2 sub sgn ++ sgn mult *.eye3 *.eye1 sub sgn ++ sgn mult add 2 *.eye7
*.eye9 sub sgn ++ sgn mult *.eye7 *.eye8 sub sgn ++ sgn mult *.eye7 *.eye7
sub sgn 0 floor mult *.eye7 *.eye6 sub sgn 0 floor mult *.eye7 *.eye5 sub sgn 0
floor mult *.eye7 *.eye4 sub sgn ++ sgn mult *.eye7 *.eye2 sub sgn ++ sgn mult
*.eye7 *.eye1 sub sgn ++ sgn mult add -1 *.eye4 *.eye9 sub sgn ++ sgn mult
*.eye4 *.eye8 sub sgn ++ sgn mult *.eye4 *.eye7 sub sgn ++ sgn mult *.eye4
*.eye6 sub sgn 0 floor mult *.eye4 *.eye5 sub sgn 0 floor mult *.eye4 *.eye3
sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub sgn
++ sgn mult add 1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn ++
sgn mult *.eye4 *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn ++ sgn mult
*.eye4 *.eye5 sub sgn 0 floor mult
*.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4
*.eye1 sub sgn ++ sgn mult add 0 *.eye5 *.eye9 sub sgn ++ sgn mult *.eye5
*.eye8 sub sgn ++ sgn mult *.eye5 *.eye7 sub sgn ++ sgn mult *.eye5 *.eye6
sub sgn ++ sgn mult *.eye5 *.eye4 sub sgn ++ sgn mult *.eye5 *.eye3 sub sgn
++ sgn mult *.eye5 *.eye2 sub sgn ++ sgn mult *.eye5 *.eye1 sub sgn ++ sgn
mult add .focuseye store
stop
cond
*.eyef 0 !=
*.in1 *.out1 !=
start
*.refxpos *.refypos angle .setaim store
stop
cond
*.eye5 40 >
*.in1 *.out1 !=
*.in2 4285 !=
start
16 .shootval store
-6 .shoot store
stop
cond
*.eye5 40 >
*.in1 *.out1 !=
*.in2 4285 =
start
*.refxpos *.refypos angle .shootval store
.setaim .shoot store
stop
cond
*.nrg 15000 >
start
418 rnd .aimdx store
40 .repro store
stop