Darwinbots Forum

Bots and Simulations => Bestiary => Interesting behaviour bots => Topic started by: bacillus on January 16, 2010, 02:04:38 AM

Title: Sentinel3
Post by: bacillus on January 16, 2010, 02:04:38 AM
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).

Code: [Select]
'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