' RoboAnt
' By Martian
def foodcounter 50
def foodx 51 'For the location of the last found food,
def foody 52 'or the new nest.
def state 53
def tieid 54
def numworkers 55
def royaljelly 971
def password 972
def queenx 973
def queeny 974
def birthtie -1
def goingfood -2
def hunting -3
def goingqueen -4
def feedqueen -5
def ruling -6
def newnest -7
def mapx 9237
def mapy 6928
def mapborder 250
def foodcycle 20 'The number of cycles the queen goes without food before she deciceds there aren't enough workers.
'The Queens Initialization
cond
*.royaljelly 0 =
start
31998 rnd 2 add .password store
*.thisgene .delgene store
stop
'State switching
cond
*.state 0 =
start
-1 .state store
stop
cond
*.state .birthtie =
*.robage 6 >
start
.deltie inc
.goingfood .state store
stop
cond
*.state .birthtie =
*.robage 5 >
start
.tie inc
stop
cond
*.state .hunting =
*.nrg 7500 >
start
*.refxpos .foodx store
*.refypos .foody store
.goingqueen .state store
stop
cond
*.eye1 *.eye2 >=
*.eye1 *.eye3 >=
*.eye1 *.eye4 >=
*.eye1 *.eye5 >=
*.eye1 *.eye6 >=
*.eye1 *.eye7 >=
*.eye1 *.eye8 >=
*.eye1 *.eye9 >=
start
mult -140
stop
cond
*.eye9 *.eye2 >=
*.eye9 *.eye3 >=
*.eye9 *.eye4 >=
*.eye9 *.eye5 >=
*.eye9 *.eye6 >=
*.eye9 *.eye7 >=
*.eye9 *.eye8 >=
*.eye9 *.eye1 >=
start
mult 140
stop
cond
*.eye2 *.eye9 >=
*.eye2 *.eye3 >=
*.eye2 *.eye4 >=
*.eye2 *.eye5 >=
*.eye2 *.eye6 >=
*.eye2 *.eye7 >=
*.eye2 *.eye8 >=
*.eye2 *.eye1 >=
start
mult -105
stop
cond
*.eye8 *.eye9 >=
*.eye8 *.eye3 >=
*.eye8 *.eye4 >=
*.eye8 *.eye5 >=
*.eye8 *.eye6 >=
*.eye8 *.eye7 >=
*.eye8 *.eye2 >=
*.eye8 *.eye1 >=
start
mult 105
stop
cond
*.eye3 *.eye9 >=
*.eye3 *.eye8 >=
*.eye3 *.eye4 >=
*.eye3 *.eye5 >=
*.eye3 *.eye6 >=
*.eye3 *.eye7 >=
*.eye3 *.eye2 >=
*.eye3 *.eye1 >=
start
mult -70
stop
cond
*.eye7 *.eye9 >=
*.eye7 *.eye8 >=
*.eye7 *.eye4 >=
*.eye7 *.eye5 >=
*.eye7 *.eye6 >=
*.eye7 *.eye3 >=
*.eye7 *.eye2 >=
*.eye7 *.eye1 >=
start
mult 70
stop
cond
*.eye4 *.eye9 >=
*.eye4 *.eye8 >=
*.eye4 *.eye7 >=
*.eye4 *.eye5 >=
*.eye4 *.eye6 >=
*.eye4 *.eye3 >=
*.eye4 *.eye2 >=
*.eye4 *.eye1 >=
start
mult -35
stop
cond
*.eye6 *.eye9 >=
*.eye6 *.eye8 >=
*.eye6 *.eye7 >=
*.eye6 *.eye5 >=
*.eye6 *.eye4 >=
*.eye6 *.eye3 >=
*.eye6 *.eye2 >=
*.eye6 *.eye1 >=
start
mult 35
stop
cond
*.eye5 *.eye9 >=
*.eye5 *.eye8 >=
*.eye5 *.eye7 >=
*.eye5 *.eye6 >=
*.eye5 *.eye4 >=
*.eye5 *.eye3 >=
*.eye5 *.eye2 >=
*.eye5 *.eye1 >=
start
mult
stop
cond
*.eye5 0 >
*.password *.memval =
start
mult 628 rnd 314 add
stop
cond
*.state .hunting =
start
.aimdx store
stop
cond
*.eye9 0 =
*.eye8 0 =
*.eye7 0 =
*.eye6 0 =
*.eye5 0 =
*.eye4 0 =
*.eye3 0 =
*.eye2 0 =
*.eye1 0 =
*.state .hunting =
start
20 .up store
stop
cond
*.eye5 0 >
*.password *.memval !=
*.eye5 40 <
*.refaimdx 0 !=
*.state .hunting =
start
*.refveldx .dx store
*.refvelup 30 add .up store
stop
cond
*.password *.memval !=
*.eye5 40 >
*.refaimdx 0 !=
*.state .hunting =
*.refvelup 0 =
start
*.vel .dn store
stop
cond
*.state .hunting =
*.eye5 30 >=
*.memval *.password !=
*.refaimdx 0 !=
start
*.refxpos *.refypos angle .setaim store
-1 .shoot store
stop
cond
*.state .goingqueen =
*.eye5 35 >
*.in1 1 =
*.password *.memval =
start
.feedqueen .state store
stop
cond
*.state .goingqueen =
start
*.queenx *.queeny angle .setaim store
*.xpos *.queenx sub abs *.ypos *.queeny sub abs add 50 div 5 floor 30 ceil .up store
*.veldx .sx store
stop
cond
*.state .feedqueen =
*.nrg 2500 <
start
.goingfood .state store
*.tieid .deltie store
stop
cond
*.state .feedqueen =
*.numties 0 =
start
*.velup .dn store
*.velsx .dx store
*.refxpos *.refypos angle .setaim store
*.tieid .tie store
stop
cond
*.state .feedqueen =
*.numties 1 =
start
*.tieid .tienum store
-1 .tieloc store
*.nrg 2500 sub 1000 ceil 1 floor .tieval store
stop
'Fixes the Queen
cond
*.fixed 0 =
*.state .ruling =
start
1 .fixpos store
stop
'Makes new workers
cond
*.nrg 5000 >
*.state .ruling =
*.foodcounter 0 =
start
10 .repro store
90 314 rnd add .aimdx store
stop
cond
*.royaljelly 0 =
*.state .ruling =
start
.royaljelly inc
stop
'Makes new queens
cond
*.nrg 14000 >
*.state .ruling =
*.foodcounter 0 !=
*.body 1450 >=
start
50 .repro store
0 .royaljelly store
90 314 rnd add .aimdx store
stop
cond
*.royaljelly 0 =
*.state .ruling !=
start
.newnest .state store
.royaljelly inc
1 .out1 store
.mapx .mapborder 2 mult sub rnd .mapborder add .foodx store
.mapy .mapborder 2 mult sub rnd .mapborder add .foody store
stop
cond
*.state .newnest =
*.xpos *.foodx sub abs 100 >
*.ypos *.foody sub abs 100 > or
start
*.foodx *.foody angle .setaim store
*.xpos *.foodx sub abs *.ypos *.foody sub abs add 10 div 1 floor 30 ceil .up store
*.veldx .sx store
stop
cond
*.state .newnest =
*.xpos *.foodx sub abs 100 <=
*.ypos *.foody sub abs 100 <=
start
.ruling .state store
1 .fixpos store
*.xpos .queenx store
*.ypos .queeny store
stop
cond
*.state .goingfood =
*.xpos *.foodx sub abs 500 >
*.ypos *.foody sub abs 500 > or
start
*.foodx *.foody angle .setaim store
*.xpos *.foodx sub abs *.ypos *.foody sub abs add 10 div 1 floor 30 ceil .up store
*.veldx .sx store
stop
cond
*.state .goingfood =
*.foodx 0 =
*.foody 0 =
start
.hunting .state store
stop
cond
*.state .goingfood =
*.xpos *.foodx sub abs 500 <=
*.ypos *.foody sub abs 500 <=
start
.hunting .state store
stop
'Initialization
'Each queens workers have a different password
cond
*.robage 0 =
start
.password .memloc store
31998 rnd 2 add .tieid store
stop
cond
*.fixed 0 !=
*.state .ruling !=
start
0 .fixpos store
stop
'Body handling routines
cond
*.body 1450 <
*.pleas 0 >
*.state .ruling =
start
*.pleas 2 div 100 ceil 1450 *.body sub 10 mult ceil .strbody store
stop
cond
*.body 1550 >
*.nrg 5000 < or
*.state .ruling =
start
*.body 1550 sub 10 mult 100 ceil .fdbody store
stop
cond
*.body 150 >
*.nrg 1000 < or
*.state .ruling !=
start
*.body 150 sub 10 mult 100 ceil .fdbody store
stop
cond
*.body 50 <
*.pleas 0 >
*.state .ruling !=
start
*.pleas 2 div 100 ceil 50 *.body sub 10 mult ceil .strbody store
stop
cond
*.state .ruling !=
*.tiepres 0 >
*.tiepres *.tieid !=
start
*.tiepres .deltie store
stop
cond
*.state .ruling =
*.tiepres 0 >
start
.foodcycle .foodcounter store
stop
cond
*.foodcounter 0 !=
start
.foodcounter dec
stop
cond
*.shflav 0 !=
*.shflav -2 !=
start
*.shang .aimshoot store
64 .shootval store
-1 .shoot store
0 .shflav store
stop