Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Trafalgar

Pages: [1] 2
1
DNA Tools / PyBot
« on: May 18, 2008, 02:05:24 PM »
The download is attached to this post - installation instructions are in the PyBot folder in the archive (or, extract the archive in your DarwinBotsII folder).

There's a manual in the PyBot folder in the archive, but here's a copy of it online: http://shadowlord13.googlepages.com/PyBot-Manual.html

Here's an example of what you can do with this:

Code: [Select]
define childTie: 2395
def lastAngle at 1000
def generation at 971
def reproducedLastCycle at 999
def launch at 972
def ninjaShoot at 1007
def ninjaShootval at 1008
def ninjaAimshoot at 1901
def ninjaUp at 1001

if ():
    generation when (robage==0) ++
    fixpos = 0
    
    if ((numties == 0) and (abs(reproducedLastCycle-timer)>2) and (launch==0)):
        reproducedLastCycle = timer
        repro = 50
    
    if (abs(reproducedLastCycle-timer)<2 and (numties>0) and (tiepres==0)):
        if (multi==0):
            tie = childTie
    
    readtie = tiepres
    tienum = tiepres
    
    if (numties>1):
        if (tiepres!=0):
            deltie = tiepres
        elif (multi!=0):
            readtie = rnd(numties-1)+1
            tienum = readtie
            deltie = readtie
        tieloc = &shootval
        tieval = 31999
    elif ((robage < 50) and (launch>0)):
        if (tiepres!=0):
            deltie = tiepres
            setaim = rnd(1260)
        (ninjaUp-1000) = 500
    elif ((launch>0) and (abs(reproducedLastCycle-timer)>2)):
        launch = 0
    
    if (multi!=0):
        fixlen = 900
        fixang = 157*((abs(timer)+generation) andbits 7)
        
    if ((nrg>25000) and (numties>0) and (abs(reproducedLastCycle-timer)>2) and (rnd(30)>=totalmyspecies) and (rnd(100)==0)) :
        reproducedLastCycle = timer
        repro = 50
        launch = 1
    
    #disable-storecheck
    if (body>200):
        fdbody = body-100
    #enable-storecheck
    
    if (nrg>=28000):
        #disable-storecheck
        (ninjaShoot - 1000) = -2
        (ninjaShootval - 1000) = nrg-1000
        (ninjaAimshoot - 1000) = rnd(1260)
        #enable-storecheck
    
    if ((robage>1) and (((genes!=5) or (thisgene!=1)) or (vtimer!=0) or (fertilized!=0))):
        strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
        strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
        mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
        mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
        repro = 0
        mrepro = 0
        sexrepro = 0
        
if ((robage>1) and (((genes!=5) or (thisgene!=2)) or (vtimer!=0) or (fertilized!=0))):
    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
    repro = 0
    mrepro = 0
    sexrepro = 0

if ((robage>1) and (((genes!=5) or (thisgene!=3)) or (vtimer!=0) or (fertilized!=0))):
    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
    repro = 0
    mrepro = 0
    sexrepro = 0
    
if ((robage>1) and (((genes!=5) or (thisgene!=4)) or (vtimer!=0) or (fertilized!=0))):
    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
    repro = 0
    mrepro = 0
    sexrepro = 0
    
if ((robage>1) and (((genes!=5) or (thisgene!=5)) or (vtimer!=0) or (fertilized!=0))):
    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
    repro = 0
    mrepro = 0
    sexrepro = 0

That compiles to:
Code: [Select]
'Alga_Pair 1.1.1 (Trafalgar).txt compiled by PyBot V2 from Alga_Pair 1.1.1 (Trafalgar).pyr.

'define childTie: 2395
'def lastAngle at 1000
def lastAngle 1000
'def generation at 971
def generation 971
'def reproducedLastCycle at 999
def reproducedLastCycle 999
'def launch at 972
def launch 972
'def ninjaShoot at 1007
def ninjaShoot 1007
'def ninjaShootval at 1008
def ninjaShootval 1008
'def ninjaAimshoot at 1901
def ninjaAimshoot 1901
'def ninjaUp at 1001
def ninjaUp 1001
'if ():
cond

start
'    generation when (robage==0) ++
.generation *.robage 0 = inc dropbool
'    fixpos = 0
0 dup *.fixpos != .fixpos store
'    if ((numties == 0) and (abs(reproducedLastCycle-timer)>2) and (launch==0)):
*.numties 0 = *.reproducedLastCycle *.timer sub abs 2 > and *.launch 0 = and
'        reproducedLastCycle = timer
*.timer dupbool dup *.reproducedLastCycle != and .reproducedLastCycle store dropbool
'        repro = 50
50 dupbool dup *.repro != and .repro store dropbool
'    if (abs(reproducedLastCycle-timer)<2 and (numties>0) and (tiepres==0)):
dropbool *.reproducedLastCycle *.timer sub abs 2 < *.numties 0 > and *.tiepres 0 = and
'        if (multi==0):
dupbool dupbool *.multi 0 = and
'            tie = childTie
2395 dupbool dup *.tie != and .tie store dropbool
'    readtie = tiepres
dropbool dropbool
dropbool
*.tiepres dup *.readtie != .readtie store
'    tienum = tiepres
*.tiepres dup *.tienum != .tienum store
'    if (numties>1):
*.numties 1 >
'        if (tiepres!=0):
dupbool dupbool *.tiepres 0 != and
'            deltie = tiepres
*.tiepres dupbool dup *.deltie != and .deltie store dropbool
'        elif (multi!=0):
not and not dupbool not dupbool *.multi 0 != and
'            readtie = rnd(numties-1)+1
*.numties 1 sub rnd 1 add dupbool dup *.readtie != and .readtie store dropbool
'            tienum = readtie
*.readtie dupbool dup *.tienum != and .tienum store dropbool
'            deltie = readtie
*.readtie dupbool dup *.deltie != and .deltie store dropbool
'        tieloc = &shootval
dropbool dropbool dropbool
.shootval dupbool dup *.tieloc != and .tieloc store dropbool
'        tieval = 31999
31999 dupbool dup *.tieval != and .tieval store dropbool
'    elif ((robage < 50) and (launch>0)):
dupbool not dupbool *.robage 50 < *.launch 0 > and and
'        if (tiepres!=0):
dupbool dupbool *.tiepres 0 != and
'            deltie = tiepres
*.tiepres dupbool dup *.deltie != and .deltie store dropbool
'            setaim = rnd(1260)
1260 rnd dupbool dup *.setaim != and .setaim store dropbool
'        (ninjaUp-1000) = 500
dropbool dropbool
500 dupbool dup *.ninjaUp 1000 sub != and .ninjaUp 1000 sub store dropbool
'    elif ((launch>0) and (abs(reproducedLastCycle-timer)>2)):
not and dupbool *.launch 0 > *.reproducedLastCycle *.timer sub abs 2 > and and
'        launch = 0
0 dupbool dup *.launch != and .launch store dropbool
'    if (multi!=0):
dropbool dropbool dropbool *.multi 0 !=
'        fixlen = 900
900 dupbool dup *.fixlen != and .fixlen store dropbool
'        fixang = 157*((abs(timer)+generation) andbits 7)
157 *.timer abs *.generation add 7 & mult dupbool dup *.fixang != and .fixang store dropbool
'    if ((nrg>25000) and (numties>0) and (abs(reproducedLastCycle-timer)>2) and (rnd(30)>=totalmyspecies) and (rnd(100)==0)) :
dropbool *.nrg 25000 > *.numties 0 > and *.reproducedLastCycle *.timer sub abs 2 > and 30 rnd *.totalmyspecies >= and 100 rnd 0 = and
'        reproducedLastCycle = timer
*.timer dupbool dup *.reproducedLastCycle != and .reproducedLastCycle store dropbool
'        repro = 50
50 dupbool dup *.repro != and .repro store dropbool
'        launch = 1
1 dupbool dup *.launch != and .launch store dropbool
'    #disable-storecheck
'    if (body>200):
dropbool *.body 200 >
'        fdbody = body-100
*.body 100 sub .fdbody store
'    #enable-storecheck
'    if (nrg>=28000):
dropbool *.nrg 28000 >=
'        #disable-storecheck
'        (ninjaShoot - 1000) = -2
-2 .ninjaShoot 1000 sub store
'        (ninjaShootval - 1000) = nrg-1000
*.nrg 1000 sub .ninjaShootval 1000 sub store
'        (ninjaAimshoot - 1000) = rnd(1260)
1260 rnd .ninjaAimshoot 1000 sub store
'        #enable-storecheck
'    if ((robage>1) and (((genes!=5) or (thisgene!=1)) or (vtimer!=0) or (fertilized!=0))):
dropbool *.robage 1 > *.genes 5 != *.thisgene 1 != or *.vtimer 0 != or *.fertilized 0 != or and
'        strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dupbool dup *.strvenom != and .strvenom store dropbool
'        strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dupbool dup *.strpoison != and .strpoison store dropbool
'        mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dupbool dup *.mkshell != and .mkshell store dropbool
'        mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dupbool dup *.mkslime != and .mkslime store dropbool
'        repro = 0
0 dupbool dup *.repro != and .repro store dropbool
'        mrepro = 0
0 dupbool dup *.mrepro != and .mrepro store dropbool
'        sexrepro = 0
0 dupbool dup *.sexrepro != and .sexrepro store dropbool
'if ((robage>1) and (((genes!=5) or (thisgene!=2)) or (vtimer!=0) or (fertilized!=0))):
dropbool
stop

cond
*.robage 1 > *.genes 5 != *.thisgene 2 != or *.vtimer 0 != or *.fertilized 0 != or and
start
'    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strvenom != .strvenom store
'    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strpoison != .strpoison store
'    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkshell != .mkshell store
'    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkslime != .mkslime store
'    repro = 0
0 dup *.repro != .repro store
'    mrepro = 0
0 dup *.mrepro != .mrepro store
'    sexrepro = 0
0 dup *.sexrepro != .sexrepro store
'if ((robage>1) and (((genes!=5) or (thisgene!=3)) or (vtimer!=0) or (fertilized!=0))):
stop

cond
*.robage 1 > *.genes 5 != *.thisgene 3 != or *.vtimer 0 != or *.fertilized 0 != or and
start
'    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strvenom != .strvenom store
'    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strpoison != .strpoison store
'    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkshell != .mkshell store
'    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkslime != .mkslime store
'    repro = 0
0 dup *.repro != .repro store
'    mrepro = 0
0 dup *.mrepro != .mrepro store
'    sexrepro = 0
0 dup *.sexrepro != .sexrepro store
'if ((robage>1) and (((genes!=5) or (thisgene!=4)) or (vtimer!=0) or (fertilized!=0))):
stop

cond
*.robage 1 > *.genes 5 != *.thisgene 4 != or *.vtimer 0 != or *.fertilized 0 != or and
start
'    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strvenom != .strvenom store
'    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strpoison != .strpoison store
'    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkshell != .mkshell store
'    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkslime != .mkslime store
'    repro = 0
0 dup *.repro != .repro store
'    mrepro = 0
0 dup *.mrepro != .mrepro store
'    sexrepro = 0
0 dup *.sexrepro != .sexrepro store
'if ((robage>1) and (((genes!=5) or (thisgene!=5)) or (vtimer!=0) or (fertilized!=0))):
stop

cond
*.robage 1 > *.genes 5 != *.thisgene 5 != or *.vtimer 0 != or *.fertilized 0 != or and
start
'    strvenom = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strvenom != .strvenom store
'    strpoison = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.strpoison != .strpoison store
'    mkshell = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkshell != .mkshell store
'    mkslime = 30000*(((abs(timer) andbits 1)+dup)-1)
30000 *.timer abs 1 & dup add 1 sub mult dup *.mkslime != .mkslime store
'    repro = 0
0 dup *.repro != .repro store
'    mrepro = 0
0 dup *.mrepro != .mrepro store
'    sexrepro = 0
0 dup *.sexrepro != .sexrepro store
stop

Edit: Whoops, pasted the contents of the wrong .txt file.

2
Bug reports / trefnrg returning 0
« on: May 14, 2008, 10:29:09 PM »
The problem is that one of these two tied bots is seeing 0 for trefnrg. The other is seeing a correct value. Both bots have energy, aren't corpses, are more than 2 cycles old, etc etc.

Screenshot (I added the yellow arrows to point out the important numbers): http://screencast.com/t/s0xj0fz9iq

The selected robot is the one whose robot dialog is open. (I noticed after I took the screenshot and closed the windows that I had the left bot's console on the right and the right bot's console on the left, oops)

Saved sim: attached to this post

(This is with 2.43.1k)

3
Bug reports / Pond mode doesn't turn on buoyancy?
« on: May 12, 2008, 09:25:53 PM »
I've turned on pond mode (and set gravity on, since the bots weren't sinking or anything),

Screenshot of General tab of match setup: http://screencast.com/t/SBnncM66BN
Screenshot of Physics and Costs tab: http://screencast.com/t/1jbDtxjO

I set gravity on and changed the fluid to thick, since pond mode apparently didn't. It didn't change the toroidal/wrapping, or corpse settings either, but I stopped changing things once I saw buoyancy wasn't working.

Buoyancy is definitely either broken or off: I've got bots in the sim who are setting setboy to 2000 (every cycle), and rdboy is staying at 0.

From the console of one of those bots:
Quote
printmem .setboy
 314-> 2000
printmem .rdboy
 315-> 0

robot genes execution: - =not executed
1 executed
2 -
3 -
4 -
5 -
printmem .rdboy
 315-> 0

4
Tips and Tricks / Distances, coordinates, units
« on: May 12, 2008, 07:35:52 PM »
So, I'm measuring the distance between two bots with:

(This is inside an if block which has a boolean value on the boolean stack indicating whether code inside the if block should run or not)
Code: [Select]
*.refxpos *.refypos dist dupbool dup *998 != and 998 store dropbool
*.xpos *.refxpos sub dup mult *.ypos *.refypos sub dup mult add sqr dupbool dup *997 != and 997 store dropbool

The first line is dist(refxpos, refypos), and the second line is sqr(((xpos - refxpos)*dup) + ((ypos - refypos)*dup))

I have a bot which does repro 50, and then both it and the child move away from each other, until they pass 400 dist (according to dist, not the manual formula), at which point they both fixpos.

The bots are still close enough at that point to shoot each other, regardless of map size, indicating that the coordinates returned by dist are the actual (or near) coordinates. (The bots do not aim their movement or shots very well on the largest map size though)

(I'm going to write ~number in the rest of this post where I mean the number is sometimes that number, but is sometimes 1 higher or 1 lower than that number instead, to save time.)

(And for each bot, I'll say what I got for the dist method and the manual method with dist:manual)

On size 1-4 maps, I get either ~452:~452, or ~522:~522. Said another way, each single bot has either ~522 and ~522 for both methods, or ~452 and ~452 for both methods.

On size 5 maps, I get either ~452:~362, or ~522:~417.

Size 6 maps: ~452:~301, or ~522:~348

* = within 1 distance point anyhow.

So, we can conclude that:
1. Refxpos/refypos and xpos/ypos are returning values which are scaled down by the size of the map
2. dist() takes in scaled-down units, and returns actual distance units

So how do we do work on actual x or y coordinate differences? We have to get the actual distance, which we can do like so: dist(xpos+xdiff, ypos) or dist(xpos, ypos+ydiff).

Additionally, this is helpful: refvel* are in actual distance units rather than scaled-down units: My test bots are showing the same values at the same tick for these in both the smallest and largest map size.

There's just two problems I see so far:
1. At very large map sizes you end up with refxpos,refypos coordinates whose difference from your xpos,ypos is so tiny (say, 6 on the largest map) that the actual coordinates returned by dist (and angle) are unreliable.
2. Why are the actual distances being returned as sometimes ~452 and sometimes ~522 (which are ~70 units apart), and never something in between? (Note: I'm discounting the results from huge maps which return different actual distance values than ~452 and ~522, because their scaled-down units are so tiny that it makes the result inaccurate)

5
Revised and updated nanite detonators for the current DBII version. These don't function the way the original nanite detonators did, since the instakill tie attack exploits have been fixed. They only inherit the same premise (well, half of it*) and the means of spreading out.

These normally don't shoot, but if they have above 500 energy, they will. They don't aim very well while moving or while their enemy is moving, though, and they pay little heed to targets being out of range, but it's enough to let them finish off Bacillus' recently posted Collosus v1.1 in a more reasonable amount of time than what they were doing without shots (those colossi are nigh-immune to ties).  

P.S. They only use one eye, and it's almost half the possible radius. That reduces their vision distance, but it seems to be sufficient for their needs.

* = The half about replicating in huge numbers and overwhelming opponents, but not the half about using instakill tie attacks which no longer work.

DNA length: 1112. Genes: 1.

Code: [Select]
'Nanite Detonators 2.2.txt compiled by PyBot V2 from Nanite Detonators 2.2.pyr.
' These updated Nanite Detonators now feed off veggies (non-mutated ones, anyways), and use their energy to pump out more nanite detonator bots. The normal nanites cease reproducing after the total number of nanites reaches 500, and the ones connected to a veggie (factory nanites) stop pumping out more tiny nanites at 600, but will produce larger ones whenever they exceed 1000 body, until the total number of nanites reaches 1000.
def lastTieNum 988
def lastTiePres 986
def mode 981
def myid 985
def reproducedLastCycle 962
def isVeggie 984
cond
true
start
0 dup *.fixpos != .fixpos store dropbool
.myid dup *.tmemloc != .tmemloc store dropbool
.myid dup *.memloc != .memloc store dropbool
9136 dup *.myid != .myid store dropbool
500 dup *.eye5width != .eye5width store dropbool
*.aim 630 add dup *.setaim != *.robage 1 = and .setaim store dropbool
*.nrg 150 > *.velscalar 100 > and *.body 10 > and *.totalmyspecies 500 < and
50 .repro store
*.robage .reproducedLastCycle store
dropbool *.nrg 500 >
dupbool dupbool *.eye5 0 > *.memval 9136 != and *.robage 2 > and *.refage 2 > and and
*.refxpos *.refypos angle .setaim store
dupbool dupbool *.timer 3 & 0 = and
-1 .shoot store
10 .shootval store
not and not dupbool not dupbool *.timer 3 & 1 = and
-6 .shoot store
-10 .shootval store
not and dupbool *.timer 3 & 2 = and
.mkslime .shoot store
-31999 .shootval store
not and not or not
.shootval .shoot store
31999 .shootval store
dropbool
0 .aimshoot store
dropbool dropbool
dropbool *.numties 0 =
0 .mode store
dupbool dupbool *.eye5 0 > *.memval 9136 != and *.robage 2 > and *.refage 2 > and and
dupbool dupbool *.lastTiePres 2354 = *.lastTieNum 2354 = and and
1 .fixpos store
not and
dropbool
2354 .tie store
*.tie .tienum dupbool *.tie 0 != and store dropbool
*.refxpos *.refypos angle .setaim store
not and
dupbool dupbool *.velscalar 50 > and
dupbool dupbool *.veldx 1 > and
*.veldx .aimdx store
not and not dupbool not dupbool *.velsx 1 > and
*.velsx .aimsx store
dropbool dropbool dropbool
dropbool dropbool
dropbool dupbool dupbool *.shoot 0 = and
0 .fixpos store
dupbool dupbool *.robage 0 > and
.up dupbool *.nrg 25 > and inc dropbool
.up dupbool *.nrg 50 > and inc dropbool
.up dupbool *.nrg 75 > and inc dropbool
.up dupbool *.nrg 100 > and inc dropbool
dropbool dropbool
dropbool dropbool
not
*.numties 0 sub sgn 0 floor *.trefshell 0 sub sgn abs - ++ & *.trefeye 0 sub sgn abs - ++ & *.trefshoot 0 sub sgn abs - ++ & *.trefup 0 sub sgn abs - ++ & *.trefdn 0 sub sgn abs - ++ & *.trefsx 0 sub sgn abs - ++ & *.trefdx 0 sub sgn abs - ++ & *.tmemval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & dupbool dup *.isVeggie != and .isVeggie store dropbool
dupbool dupbool *.lastTieNum 2354 = and
2354 dupbool dup *.tienum != and .tienum store dropbool
dupbool dupbool *.tiepres 2354 = and
dupbool dupbool *.isVeggie 0 != and
dupbool dupbool *.mode 0 = and
.mode inc
.fixpos .tieloc store
1 .tieval store
*.trefxpos *.trefypos angle 630 add .setaim store
1 .fixpos store
not and not dupbool not dupbool *.mode 1 = and
.mode inc
.setaim .tieloc store
*.trefxpos *.trefypos angle 630 add .tieval store
not and dupbool *.mode 3 & 2 = and
.mode inc
.tie .tieloc store
9753 .tieval store
not and dupbool *.mode 10 > and
1 dupbool dup *.tielen != and .tielen store dropbool
0 dupbool dup *.mode != and .mode store dropbool
not and not or not
.mode inc
*.tiepres .tienum store
-1 .tieloc store
-10000 .tieval store
dropbool
not and not dupbool not dupbool *.tmemval 9136 != *.robage 2 > and *.reproducedLastCycle *.robage sub abs 2 > and and
dupbool dupbool *.mode -1 = and
dupbool dupbool *.nrg *.body dup add < and
-1 .tieloc store
not and
-6 .tieloc store
dropbool
-31999 .tieval store
not and
.tie .tieloc store
9753 .tieval store
dropbool
-1 .mode store
not and not or not
*.tiepres .deltie store
dropbool
not and
*.tiepres .tienum store
.shootval .tieloc store
31999 .tieval store
100 dupbool dup *.stifftie != and .stifftie store dropbool
-1 dupbool dup *.mode != and .mode store dropbool
dropbool
not and not dupbool not dupbool *.reproducedLastCycle *.robage sub abs 2 <= and
dupbool dupbool *.tiepres 0 = and
4824 dupbool dup *.tie != and .tie store dropbool
4824 dupbool dup *.deltie != and .deltie store dropbool
dropbool dropbool
not and dupbool *.lastTieNum 0 > *.lastTieNum 5 < and *.trefnrg 0 > and and
dupbool dupbool *.tiepres *.lastTieNum != *.tiepres 0 != and and
dupbool dupbool *.mode -1 != and
*.tiepres .deltie store
not and
*.tiepres .tienum store
.mode inc
dropbool
not and
*.lastTieNum .tienum store
dropbool dupbool dupbool *.multi 0 != and
dupbool dupbool *.trefnrg 100 mult *.trefnrg *.nrg add div 10 >= and
.sharenrg .tieloc store
1 *.isVeggie 9 mult add .tieval store
not and not dupbool not dupbool *.waste 100 > and
.sharewaste .tieloc store
100 .tieval store
not and not or not
.fdbody .tieloc store
100 .tieval store
dropbool
not and
.shootval .tieloc store
31999 .tieval store
dropbool dupbool dupbool *.tieang 1256 < and
*.tieang 100 add .tieang store
not and
1 .tieang store
dropbool dupbool dupbool *.tielen 100 < and
100 .tielen store
dropbool dropbool
not and dupbool *.lastTieNum 0 = *.tiepres 0 > *.tiepres 5 < and *.tiepres 4824 = or and and
*.tiepres dupbool dup *.deltie != and .deltie store dropbool
not and dupbool *.robage 2 < and
*.tiepres dupbool dup *.deltie != and .deltie store dropbool
not and dupbool *.tiepres 0 != and
*.tiepres dupbool dup *.tienum != and .tienum store dropbool
dupbool dupbool *.multi 0 != *.trefnrg 100 mult *.trefnrg *.nrg add div 2 >= and and
.sharenrg dupbool dup *.tieloc != and .tieloc store dropbool
1 dupbool dup *.tieval != and .tieval store dropbool
not and
.fdbody dupbool dup *.tieloc != and .tieloc store dropbool
100 dupbool dup *.tieval != and .tieval store dropbool
dropbool dupbool dupbool *.tieang 1256 < and
*.tieang 20 add dupbool dup *.tieang != and .tieang store dropbool
not and
1 dupbool dup *.tieang != and .tieang store dropbool
dropbool dupbool dupbool *.tielen 100 < and
100 dupbool dup *.tielen != and .tielen store dropbool
dropbool dropbool
not and not or not
4824 dupbool dup *.tie != and .tie store dropbool
4824 dupbool dup *.deltie != and .deltie store dropbool
dropbool dupbool dupbool *.robage 2 > and
dupbool dupbool *.nrg 1000 > and
dupbool dupbool *.body 10 > *.totalmyspecies 600 < and *.body 1000 > *.totalmyspecies 1000 < and or and
50 dupbool dup *.repro != and .repro store dropbool
*.robage dupbool dup *.reproducedLastCycle != and .reproducedLastCycle store dropbool
*.aim 5 rnd add 2 sub dupbool dup *.setaim != and .setaim store dropbool
not and
100 dupbool dup *.strbody != and .strbody store dropbool
dropbool
dropbool dropbool
dropbool dropbool
dropbool
*.body 1 sub dup *.fdbody != *.body 1 > *.strbody 0 = and *.nrg 700 < and and .fdbody store dropbool
*.tienum dup *.lastTieNum != *.tienum 0 != and .lastTieNum store dropbool
*.tiepres dup *.lastTiePres != .lastTiePres store dropbool
stop

6
Biology / SciAm article about how diversity of animal forms arises
« on: May 05, 2008, 10:12:54 PM »
There's is a very interesting and very detailed article on Scientific American's site about how and why the great diversity of animal forms arises despite the genes being so similar. Essentially, genes have 'enhancers' which determine when and where they turn on, and genes can have more than one enhancer.

http://www.sciam.com/article.cfm?id=regulating-evolution

7
So today I evolved a zerobot descendant which uses a cond (actually a couple conds) to toggle between storing different values in .dn, causing the bot to appear to pace back and forth.

It took a while to figure out what was causing this, but I've effectively determined what's causing it and why, and what parts of the DNA are causing it (and what parts are not).

First, a bit of information on how I evolved this. This was evolved in a (size 1) sim which started this morning with 30 or so 429 gene bots, in 4.23a, with shepherds providing energy and reproduction, and some selection. Most of the descendants of the original 429 gene bots had fallen back to 426 genes before evolving this (or so it appears from the existance of many other 426 gene bots which did not possess this behavior). Before starting this sim, I had modified my Shepherd veggies to begin selecting for higher trefaimsx and trefaimdx values, and reducing the value of genes towards determining fitness to 1/20th of what it was before (They were also selecting for trefeyes, but had already been doing so for a day or two). The result was that the bots stopped evolving higher numbers of genes at breakneck speed, and instead stayed around the same level of genes while theoretically evolving more aimdx and aimsx references.

Currently I have costs slightly modified from F1 defaults: veggies get 400 instead of 40 energy per cycle, first, and secondly the cost multiplier is set to 2, and finally the cost for conditions was set to 0.04. (Why? Because the bots were proliferating too much, and if I upped the cost multiplier more, the veggies died a couple cycles after being born. Since the veggies had one cond and no actual conditions, I could safely ramp up the conditions cost without affecting them.)

The bots had gotten up to 1-4 total trefaimdx and trefaimsx around the time that I saved this bot's DNA (I also saved a couple other less interesting bots, one of which was firing shots constantly while moving, and one of which was doing the same while sitting still), although I don't actually SEE aimdx or aimsx in the DNA anywhere... There are quite a few references to aimleft and aimright in the DNA, though, but more than the amount trefaimdx and trefaimsx showed for the bot, so... I have no clue what myaimdx/myaimsx/trefaimdx/trefaimsx are actually looking at (unless I were to hunt for it in the DB .bas files).

The bot's DNA, saved as a .txt file (unmodified, of course), in a zip file (7 KB - the uncompressed .txt was 24 KB): http://shadowlord13.googlepages.com/bigzer...aimdx_3aims.zip

And here's my analyzed version of the bot's DNA. To analyze the DNA, I copied it into a new file, found the two .dn store instructions, and began removing sections and testing to see if the behavior persisted. Once I had determined that it went back more than just one cond, I was able to cut out all the irrelevant blocks. Then, I began determining which lines were important to the behavior, and commenting out lines which weren't. In the comments here I explain what I think is happening, and why. Although the analyzed version, if loaded as a bot and run, does exhibit the pacing behavior.

Most of the DNA which didn't contribute to this behavior was removed, for reading clarity, and the rest of the DNA which does nothing has been mostly commented out, also for reading clarity. (The bot's original .txt file is unmodified, of course)

I made some hypotheses (and noted them in comments in here) based on what I saw in the DNA, but I haven't looked in the DB source to confirm them.

Code: [Select]
' Lines which do nothing that impacts the result have been commented out for clarity.
' Hundreds of lines of DNA were omitted from this snippet. Some of it does interesting stuff, but none of it appears to directly affect this behavior, except that it makes the bots not go in a perfectly straight line.
' The main reason the lines which are commented out in here were not omitted entirely is because they were either much closer to the relevant code, or were in the same cond/start/else/etc blocks.
' The easiest way to find this code in the original .txt file is to search for .dn store. The -15 .dn store and 365 .dn store are the only places in the DNA that write to .dn, remarkably enough. (It turns out there are 17 .up stores - odd, that)

'Hundreds of lines of DNA were omitted here.

'Th store in here is always run. It just sets .dn to -15. The cond is probably always false. I wonder how xor handles having no arguments. Does it explicity return false because there are no arguments, or does it say "Oh, <no argument> is equal to <no argument>, therefore I should return false!" Hmmmm.
 cond
 0 5 0 xor
 start
 ++ ~ and
 1 else
 0 0 0 -15 .dn store

'Hundreds more lines of DNA were omitted here.

 'These two lines (starting with the cond) are necessary unless the first < in the next cond is commented out - If you comment out these, but not the <, the pacing stops happening. That indicates that < can still access stack values from previous conds :O
 'However, commenting out both these two lines along with the < results in no impact on the result, because the result of that comparison is always true (since it's checking if -12 < 0).
 cond
 0 *661 0 ~ 0 0 0 316 0 1 -8 0 -12 0 else
 '0 store
 '<
 '0 start
 '0 -21 else
 'start
 '563 1 -6 ~ 0 0 0 0 0 0 0 0 -8 0 -2 0 0 0 0 0 -14 0 0 0 *.up *0 .up inc
 '0 store
 '*1082 0 0 0 0 0 0 0 * 0 0 0 0 0 *0 0 0 0 start
 '-3 0 angle 0 << ++ *0 0 1 0 1 0 start
 'store
 'and

 cond
 'This pulls values from the previous cond! (We proved it, see the comments for the previous cond)
 <
 'The 'and' doesn't seem to be needed, but I'm not sure why it works. Best guess: There's a stack for values in conds, another stack for values in regular blocks, as well as a stack for boolean values from comparisons. Theoretically, "and" must check only the booleans, the boolean stack must be cleared after each cond, but the cond value stack must NOT be cleared after each cond, and "and" must return true if there is only has one boolean on the stack.
 and
 'Both these lines are needed:, but only the '461 0 0 0 <= 0 angle <' are actually used. The stuff before the 461 on the line is junk.
 0 1 0 ^ 1 26 ~ 461 0 0 0 <=
 0 angle <
 'What's actually happening there is (I think):
 'First, everything before 461 is unused by the comparison, so we ignore it here. It's all going on the value stack, but since it's not used, it's not shown below.
 'VS for value stack, BS for boolean stack, () enclosing an operator name, <> enclosing a value which was calculated in a previous step.
 'VS: 461 0 0 0 (<=)        BS:
 'VS: 461 0                    BS: true
 'VS: 461 0 0 (angle)        BS: true
 'VS: 461 <some angle> (<)    BS: true
 'VS:                         BS: true <true if the angle was less than 461, false if not>
 'All the rest of the junk after this line does nothing until the next uncommented line (which has a start at the end of it)
 
 'Not needed:
 '0 0 0 0 0 23 0 else
 '0 0 0 1 0 0 *.myeye 0 5 0 0 0 start
 '0 1 1 0 else
 '0 0 *-70 else
 '*284 0 -3 -11 0 start
 '0 16 0 218 1 angle 0 add <
 '12 -12 0 0 ~ 0 0 0 0 store
 '17 * 0 floor 1 0 0 0 ~ 0 0 and
 'inc
 '0 17 angle 0 0 else
 '1 0 -12 ~ 0 0 0 0 0 angle dist 1 else
 '0 0 1 0 0 0 0 0 0 4 507 0 0 1 start
 '0 start
 '0 0 add 0 0 *.dn rnd else
 '0 start
 '0 store
 'Theoretically, the next line should write 14 to something if memloc 980 contains a value. But it's not important for this, since 980 is never written to. Of course, another bot could fire an info shot into 980 to (sometimes) cleverly make the bot do interesting and/or evil things to itself
 '^ 14 *-20 store
 '0 0 0 0 0 0 start
 '0 0 add 0 0 ~=
 '605 0 and
 '0 0 0 else
 'mult 0 0 0 0 -11 0 angle -6 0 0 0 <
 '0 0 0 <
 'mod 0 1 floor add 0 1 xor
 '0 0 - 0 0 0 -808 not
 'store
 'angle =
 
 'This is controlled by the above cond. Apparently a cond can have multiple start and elses attached to it, even alternating them, without any problems.
 'start
 '0 inc
 '-275 0 0 store
 '1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 and
 '0 12 0 <
 '0 0 add else
 'In this next line, only the start is actually needed (the rest isn't used, but a bot could later evolve a store before that start which happens whenever the condition above is false):
 1 0 0 0 *-30 6 | 0 *678 0 0 ~ 0 0 start
 'The < on the next line does nothing, as far as I know:
 '<
 'sets .dn to 365 if angle(0,0) < 461
 0 365 .dn store

Methinks evolution is messy . If I were coding that for a bot, and were using multiple conds, I would have written:
Code: [Select]
cond start -15 .dn store stop cond 461 0 0 angle < start 365 .dn store stop
Or SGized:
Code: [Select]
cond start -15 .dn store 365 461 0 0 angle sub sgn - 0 floor .dn mult store
Or combined into one store (still SGizing, but on a modifier to the value, instead of on the address of one of the stores):
Code: [Select]
cond start -15 380 461 0 0 angle sub sgn 0 floor mult add .dn store
Of course, the SGized stuff looks almost as messy as the evolved stuff.

I thought about whether it was likely or unlikely for evolution to have resulted in a real condition rather than an SGized one, and I'm thinking it's probably more likely for evolution to evolve actual conditions than to evolve SGized ones, since SGizing effectively requires chaining multiple specific operators (if evolution gets any part of a SGized operation wrong, it will either fail or cause side-effects in other memory locations), whereas regular conditions just require getting a single comparison operator after some comparable dynamic values.

Or if it had evolved something semi-SGized-like, it would probably have been unreliable. Who knows. I guess we'll have to wait until someone spots a SGized condition in a zerobot descendant.

Also, we can be quite certain that no DNA from the shepherds got into these bots' ancestors, as:
1. There is nothing like the shepherd's DNA visible in the bot's DNA (it would be highly compact SGized stuff), and
2. The shepherds destroy any bots which are producing viruses.
3. The shepherds kill themselves if infected with a virus.
4. If the shepherds' gene got into another bot anyways, it would then kill that bot (by recognizing that it isn't actually a shepherd).
5. The shepherds' anti-virus capabilities got an actual test (and improvement, along with these other features, most of which weren't in existance before viruses got loose) several days or a week ago, when the shepherds' anti-virus code was not as good, and apoptosis wasn't implemented - The bots which had obtained shepherd DNA were all destroyed, and the sim which had evolved the gene-stealers was re-run from their last saved non-corrupted but virus-producing ancestor, until the shepherds' were proven capable of preventing it from happening again. (It reliably happened again every time a sim was run from that ancestor until the shepherds' virus-maker-killing code was strengthened and the shepherd-apoptosis code was added)

My thinking from the start was that viruses were the number one threat to zerobot evolution sims, as they could result in corruption of the zerobot-descendant DNA by stealing human-made DNA from the veggies - of course, if the veggies were DNA-disabled, stealing DNA would be impossible, but it was even more important (but also easier to detect) with a sophisticated shepherd veggie. Even when the virus-killing measures had failed, and the shepherds had by and large deleted the virus gene (eventually), the effect was still quite visible as the shepherds had ceased functioning normally. Of course, now, instead of ceasing functioning, they kill themselves (Technically they do still cease functioning normally, so it would be visible in case the apoptosis failed).

Theoretically a human-created virus could get in, block apoptosis, and block delgene, then steal the shepherd's gene for other bots, but this would probably be beyond the capability of evolution to evolve. To accomplish that, the bot would have to find a location that's not near any shepherds, or hover out of tie range of them, then make a virus, then find a shepherd when the virus is almost ready to fire, then manage to shoot the shepherd with it before the shepherd disintegrates the bot with an instakill tie attack, not to mention that the virus would need to be sophisticated enough to prevent the shepherd from killing itself (by constantly clearing both strvenom and strpoison), and would need to prevent the shepherd from deleting the virus gene (An infected shepherd tries killing itself AND deleting the virus, but also accounts for viruses with delgene dec defenses, since I copied the antivirus code from Guardian). If it were to steal the shepherd's gene for itself or other bots, it would first take several thousand cycles to copy the shepherd's gene (Its length at present is 2810), and then the bot receiving the gene in a virus would also need to be capable of protecting itself from strvenom and strpoison, even though it won't be able to predict where in its genome the shepherd gene will be added (meaning the bot's anti-apoptosis DNA would, to be reliable, need to be in one of the last genes in the bot, and even then might get unlucky with injected gene placement)...)

P.S. I still haven't evolved any bots which can repro themselves!

P.P.S. The reason I specifically evolved bots with 400+ genes was that I figured that with that many genes, they would be far more likely to evolve a condition which did something noticeable than bots with less DNA and/or less genes. It appears to have worked.

8
I've been able to get an evosim going which rapidly selects for increasingly large numbers of genes in zerobots whose genome was originally 13,500 zeros. Here's a screenshot of the population, average age, and dna cond statements graphics, along with markers on the timeline and notes on what the markers are (the markers in the top-left graph are numbered, the ones in the other graphs correspond to those and are not numbered).



I had previously (very slowly) attempted to evolve those initial zerobots without any kind of selective pressure besides the default energy costs, with little notable results. Bigzerobot_0a was the first bot I saved from the previous evosims for these large-dna bots, and Bigzerobot_0aa was one descended from that. Those had gone for hundreds of thousands of cycles without going past 1 or 2 genes (Bigzerobot_0aa had 1 more gene than Bigzerobot_0a).

There's just one problem - some of the bots have become ... immune. They can't be culled, they can't be forcibly reproduced, and they can't <many other things>. It LOOKS like they can be given energy via a tie, except that it only shows up in the bot info panel, not in their memory or on the console. (See http://www.darwinbots.com/Forum/index.php?showtopic=2157&hl= )


At 28k cycles, which is where the above charts ended, only some of the bots were suffering from that. By 48k cycles, all of them were.

And by "some" I mean "all." All the bots in the sim besides the shepherds now are suffering from this condition. (Confirmed by the population and dna conditions graphs flattening off for the entire species in the time period from 48k to 89k cycles, starting sometime between 28k and 48k cycles - I lost the graphs between 28k and 48k when I saved and closed DB at 48k without screenshotting the graphs first)

9
I'm not sure what's going on, but I have a bot here which cannot be forcibly reproduced - however, it's due to something on the bot itself, not its DNA. If I start a new sim with that DNA, it can reproduce. If I start a new sim and insert the saved organism, it cannot reproduce.

Each cycle repro remains at 50 without changing, and the bot does not reproduce.

This screenshot shows odd discrepancies between everything shown on the bot info panel, and what the console returns:


The console is for the bot shown there, of course.

Along with the values shown in the console, slime, shell, venom, and poison are all 0. The bot panel shows energy as 16025, which is what refnrg from the bot to the northeast also shows, whereas the console shows .nrg as 3307. The bot panel shows body different from the console, as well, and waste too.

I attempted to set .shoot and .shootval to -4 and 100 respectively, to get the bot to fire its waste to see if that was causing the oddness, but it didn't work - the values are persisting from cycle to cycle, it is not shooting, and waste is not changing.

I even tried setting .up to 1000 and running one cycle. The bot didn't move (and the console reports .fixed as 0), but .up at least did reset to 0.

I can upload the organism somewhere if someone wants to look at it. Or I could upload a sim file which is filled with bots suffering from this...

My best guess is that something is going completely and totally FUBAR and causing the memory inputs to be mostly ignored, and causing most of the memory outputs to not be updated properly.

Edit: For further testing, I'm trying setting memory locations and then checking them (on the console), while the sim is actively running. I theorized that memory writing is breaking down at some point, since .up appeared to be getting properly cleared, so I began looking for the location where it breaks.
I only checked memory locations below 20:
Memory locations that are being overwritten (which is usually normal): .up (1), .dn (2), .sx (3), .dx (4), .robage(9), .mass (10), .maxvel(11), 12 (Not in sysvars list on wiki... hmm, this is apparently a robage which wraps around to -32000 when it exceeds 32000!)
Memory locations that are not being overwritten if I write to them in the console: .aimdx (5), .aimsx (6), .shoot (7), .shootval (8), .aim (18), .setaim (19)

Edit again: If another bot rams one of these, it bounces off without affecting these, even though fixed does not appear to be set (according to the console, which doesn't mean much, I suppose).

One affected bot's DBO file, zipped: http://shadowlord13.googlepages.com/wontrepro.dbo.zip

Edit more: Upkeep is being run, as evidenced by the energy shown on the robot data panel decreasing over time. Therefore the bot is not a corpse (corpse mode is disabled, anyhow). If BotDNAManipulation was being run, the mkvirus memloc being set would start vtimer counting down - but it isn't. BotDNAManipulation is run if the bot is not a corpse and doesn't have DisableDNA set (and if the robot exists).

It LOOKS like the affected bots may have somehow wound up with DisableDNA set. I don't know how that's possible, though - These bots were not DNA disabled when the sim was started, yet somehow they act as if they are DNA disabled now.

Additionally, by checking older save files, I've determined that at 28k cycles, some of the bots had just become affected by this (their console .nrg and robot data panel energy were not decreasing in sync, but were still very close), whereas other bots in the sim were still not affected. At 48k cycles, all or almost all of the bots in the sim that I checked (except the shepherds) were suffering from this. After 48k cycles, the bot population and dna conditions graph lines became a flat horizontal line, indicating that birth, death, and evolution in general had been completely halted by this problem.

It's like the bots evolved DNA disabling as a means of avoiding being culled. D:

10
Bug reports / 50 .mrepro store isn't doing anything RESOLVED 2.43t
« on: August 03, 2007, 12:21:23 PM »
I tried manually setting .mrepro to 50 using the console, on a bot with 13k energy, and nothing happened. The next cycle, to make sure the bot wasn't unable to reproduce, I tried setting .repro to 50, and it reproduced properly.

Looking into this in the source, it looks like although mrepro does trigger reproduction, the routine which processes the reproduction reads from only .repro to get the percent-of-energy parameter. Since I'm only setting mrepro, it reads 0 from repro, which is probably why nothing appears to happen.

(I'm trying to have a bot set mrepro on another bot through a tie, so setting both mrepro and repro in one cycle isn't possible)

11
Bug reports / xpos, refxpos returning 0 on parts of large maps
« on: July 25, 2007, 10:12:56 AM »
I started a 40000x30000 zerobot sim, and noticed that my shepherd bots near the right edge of the map were malfunctioning - they weren't flying to a zerobot to scan it when they were off to the side. It turned out that their xpos and refxpos were both returning 0.

I retested with a 32000x24000 map, and even a bot right on the right edge (with 31 thousand for its xpos) worked.

My guess is that coordinates above 32000 are probably being stored into xpos etc as 0.

12
Bug reports / trefbody not working
« on: July 23, 2007, 11:31:56 AM »
I noticed a day or two ago that a check in Guardian (maybe only in the updated and faster version I've been working on) which allowed instakill tie attacks when *.trefbody was < 100, was triggering inappropriately on things that had a higher body amount than 100. I checked with the console, and trefbody seems to be returning 0 all the time.

However, when I did a search on these forums to find out if this had been reported yet, I found trefbody mentioned in the changelog for 2.42.9e. The changelog says "25) There were two .trefbody sysvar locations. Now only mem location 437 is used."

The problem is that the game and console seem to be returning what's in memory location 472, not 437. I've also confirmed that 437 does contain the correct body amount.

13
F2 bots / Nanite Detonators (1G)(F2)(Trafalgar)-21.07.07
« on: July 20, 2007, 10:54:17 PM »
Notes on this bot are at the beginning of the [ code ]. This is an F1 bot (it'd be F2 also, except I don't think instakill tie attacks should be F2-legal).

This includes the .pyr code (commented out). The DNA length is only 272.

Code: [Select]
'Nanite Detonators.txt compiled by PyBot V1 from Nanite Detonators.pyr.
 'The premise behind this is simple: Put all your energy into reproducing, spreading out, and destroying all non-self.
 'These bots never consume any energy from any veggies or other bots - all their fuel comes from their starting energy and body (and from being extremely energy-efficient).
 'These bots use an instakill tie attack (tie and set tienum, and then next cycle set the enemy's strpoison to 10000). A bot can theoretically delete or block the tie (at least, it looked like some bots were deleting them, although my attempts to do so didn't seem to work - blocking with slime works better, but isn't 100% reliable), or try to disintegrate anyone who ties to you. However, even if you do those things, you'll still eventually get killed sooner or later. Of course, if you tricked the bot's friend-or-foe and went into hibernation for several thousand cycles, you could win. (Or you could just wait long enough for the remaining nanites to go into low-energy hibernation, and then you could stay away from the remaining nanites while eating veggies.)
 'The first version of this didn't use fdbody - It only got up to 150 bots, and ran much faster (chiefly for that reason). Unfortunately, it was unable to beat Etch, so I revised it.
 'The Friend or Foe code on this bot is rather simple, mainly to keep lag down as much as possible. It stores an ID in a memory address, and uses memloc/memval to make sure other bots have the same value there. If they do, they are ignored.
 'The scary thing is that when I tested a modified Guardian which had 995 set to the nanite detonator ID#, Guardian still lost.
 
 'def myid at 995
 def myid 995
 'if ():
 cond
 
 start
 '    #Initial setup, and corrections in case something else manages to change them
 '    tmemloc = &myid
 .myid dup *.tmemloc sub sgn abs .tmemloc mult store
 '    memloc = &myid
 .myid dup *.memloc sub sgn abs .memloc mult store
 '    myid = 2374
 2374 dup *.myid sub sgn abs .myid mult store
 '    eye5width = 1221
 1221 dup *.eye5width sub sgn abs .eye5width mult store
 '    #Turn around to face forward
 '    setaim when (robage==1) = (aim+630)
 *.aim 630 add dup *.setaim sub sgn abs *.robage 1 sub sgn abs - ++ & .setaim mult store
 '    #Accelerate - this is scaled down as we run low on energy.
 '    up when ((robage>0) and (nrg>25)) ++
 .up *.robage 0 sub sgn 0 floor *.nrg 25 sub sgn 0 floor & mult inc
 '    up when ((robage>0) and (nrg>50)) ++
 .up *.robage 0 sub sgn 0 floor *.nrg 50 sub sgn 0 floor & mult inc
 '    up when ((robage>0) and (nrg>75)) ++
 .up *.robage 0 sub sgn 0 floor *.nrg 75 sub sgn 0 floor & mult inc
 '    up when ((robage>0) and (nrg>100)) ++
 .up *.robage 0 sub sgn 0 floor *.nrg 100 sub sgn 0 floor & mult inc
 '    #disable-storecheck
 '    #Consume body as fuel, which has the pleasant side effects of making us harder to hit, and making us accelerate faster
 '    fdbody when (body>1) = body-1
 *.body 1 sub .fdbody *.body 1 sub sgn 0 floor mult store
 '    #We wait to reproduce until we're moving at a decent speed. This helps disperse us faster.
 '    repro when ((nrg>150) and (velscalar>20)) = 50
 50 .repro *.nrg 150 sub sgn 0 floor *.velscalar 20 sub sgn 0 floor & mult store
 '    #Tying magic - only tie to non-self, don't tie to newly born bots, don't tie when we're newly born, and don't tie when we are already tied to someone (other than a child)
 '    tie when ((eye5>0) and (memval!=2374) and (robage>2) and (refage>2) and (tiepres==0)) = rnd(30000)
 30000 rnd .tie *.eye5 0 sub sgn 0 floor *.memval 2374 sub sgn abs & *.robage 2 sub sgn 0 floor & *.refage 2 sub sgn 0 floor & *.tiepres 0 sub sgn abs - ++ & mult store
 '    #Set tienum appropriately
 '    tienum when (tiepres!=0) = tiepres
 *.tiepres .tienum *.tiepres 0 sub sgn abs mult store
 '    tienum when (tie!=0) = tie
 *.tie .tienum *.tie 0 sub sgn abs mult store
 '    #enable-storecheck
 '    #Disintegrate! We do the tmemval check here because it is possible for a bot to try to tie to an enemy on the same cycle that another bot is disintegrating that enemy, with the result being that the first bot ties to another nearby bot (generally a friendly) instead.
 '    tieloc when ((tiepres!=0) and (tmemval!=2374)) = &strpoison
 .strpoison dup *.tieloc sub sgn abs *.tiepres 0 sub sgn abs *.tmemval 2374 sub sgn abs & & .tieloc mult store
 '    tieval when ((tiepres!=0) and (tmemval!=2374)) = 10000
 10000 dup *.tieval sub sgn abs *.tiepres 0 sub sgn abs *.tmemval 2374 sub sgn abs & & .tieval mult store
 '    #Delete accidental ties to friendlies. (Perhaps not really necessary - we seem to do fairly fine without this)
 '    deltie when ((tiepres!=0) and (tmemval!=2374)) = tiepres
 *.tiepres dup *.deltie sub sgn abs *.tiepres 0 sub sgn abs *.tmemval 2374 sub sgn abs & & .deltie mult store
 stop

The number of nanites (without competitors) tends to max out around 580 after around 50 cycles, after which it begins a slow decline. It falls back to 100 after around 380 cycles, but slows down even more after that. It reaches 30 nanites after around 930 cycles, 15 nanites after 1670 cycles, and eventually 0 after around 3280 cycles.

(If mutations are enabled, it tends to max around around 450 instead, but takes longer to decline (In one test run, twice as long to hit 30 nanites, also twice as long to hit 15 nanites, and still having a couple nanites after 7200 cycles), apparently mostly due to mutations disabling the one .up inc which runs when it has between 25-50 energy)

The best way to measure how well a bot does against this seems to be to measure the maximum number of nanites in each match, and average the results for all five matches. Etch usually keeps it from going above 350-400, and Guardian does about the same, or sometimes better (apparently due to Guardian taking off at high speed at the start and sometimes running into nanites before they've begun replicating much).

14
Short bots / Guardian v0.9 (F1)(Trafalgar)-15.07.07
« on: July 15, 2007, 06:09:42 PM »
This is not F2-valid at the moment, mainly because it tie-feeds from veggies, and uses sharenrg on them too. It also keeps an mkvirus timer going at all times (it has a crazy long genome, so it never finishes, but that keeps any other virus from using mkvirus inside this bot (I think)).

Other things it does that I think F2 should forbid, but which it apparently doesn't:
Instakill using ties (setting strvenom to 10000)
Instakill using shots (same way)

This beats every bot in the league when I run it, though the match with Etch runs very slow.

(PyBot is a python program/script I've been working on)

Here's a link to it, or you can get it from the code blocks below (it's split between two posts, since it doesn't fit in just one): http://shadowlord13.googlepages.com/Guardian-0.9.txt

DNA length: 15841

Code: [Select]
'Guardian-0.9.txt compiled by PyBot V1 from Guardian-0.9.pyr.
'Guardian bot by Trafalgar
'The compiled version of this may or may not be somewhat readable.
'
def targFriendlyComp 990
def targVeggieComp 989
def tieFriendlyComp 988
def tieVeggieComp 987
def tieNumAfter 909
def delgeneDecChecked 961
def reproducedLastCycle 962
def reproTimer 964
def minBody 920
def reproEnergy 980
def closingRate 982
def reproTimerMax 971
def threatMode 985
cond

start
700 .reproEnergy *.reproEnergy 0 sub sgn abs - ++ mult store
10 rnd .closingRate *.closingRate 0 sub sgn abs - ++ mult store
*.reproTimerMax 100 sub 100 floor .reproTimerMax *.reproTimerMax 0 sub sgn 0 floor *.robage 1 sub sgn abs - ++ & mult store
1500 .reproTimerMax *.reproTimerMax 0 sub sgn abs - ++ mult store
*.reproTimerMax 10 div .minBody *.minBody 0 sub sgn abs - ++ mult store
*.closingRate 2 rnd add 1 sub 30 ceil 1 floor .closingRate *.robage 0 sub sgn abs - ++ mult store
*.threatMode 1 | dup *.threatMode sub sgn abs *.eyef 0 sub sgn 0 floor *.refkills 0 sub sgn 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.tiepres *.tienum sub sgn abs - ++ *.trefkills 0 sub sgn 0 floor & *.trefeye *.myeye sub sgn abs - ++ *.trefshoot *.myshoot sub sgn abs - ++ & *.trefup *.myup sub sgn abs - ++ & *.trefdn *.mydn sub sgn abs - ++ & *.trefsx *.mysx sub sgn abs - ++ & *.trefdx *.mydx sub sgn abs - ++ & *.trefaimsx *.myaimsx sub sgn abs - ++ & *.trefaimdx *.myaimdx sub sgn abs - ++ & *.robage 1 sub sgn - 0 floor | *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | - ++ & | *.shang 0 sub sgn abs | & .threatMode mult store
*.threatMode 2 | dup *.threatMode sub sgn abs *.shflav -6 sub sgn abs - ++ *.shang 0 sub sgn abs & & .threatMode mult store
*.threatMode 4 | dup *.threatMode sub sgn abs *.eyef 0 sub sgn 0 floor *.in1 8081 sub sgn abs - ++ *.in2 25755 sub sgn abs - ++ | *.in3 22200 sub sgn abs - ++ | *.in4 25782 sub sgn abs - ++ | *.in5 315 sub sgn abs - ++ | *.robage 5 mod 0 sub sgn abs - ++ *.memval 0 sub sgn 0 floor & *.memval 30 sub sgn - 0 floor & | & *.genes 1 sub sgn 0 floor | & .threatMode mult store
*.threatMode *.memval | dup *.threatMode sub sgn abs *.memval 0 sub sgn abs *.robage 5 mod 0 sub sgn abs & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | & & .threatMode mult store
.vtimer dup *.memloc sub sgn abs *.genes 1 sub sgn abs - ++ *.robage 5 mod 4 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .memloc mult store
.vtimer dup *.tmemloc sub sgn abs *.genes 1 sub sgn abs - ++ *.robage 5 mod 4 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .tmemloc mult store
.threatMode dup *.memloc sub sgn abs *.genes 1 sub sgn abs - ++ *.robage 5 mod 4 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .memloc mult store
.threatMode dup *.tmemloc sub sgn abs *.genes 1 sub sgn abs - ++ *.robage 5 mod 4 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .tmemloc mult store
3694 dup *.out1 sub sgn abs *.genes 1 sub sgn abs - ++ & .out1 mult store
7505 dup *.out2 sub sgn abs *.genes 1 sub sgn abs - ++ & .out2 mult store
29703 dup *.out3 sub sgn abs *.genes 1 sub sgn abs - ++ & .out3 mult store
9586 dup *.out4 sub sgn abs *.genes 1 sub sgn abs - ++ & .out4 mult store
31105 dup *.out5 sub sgn abs *.genes 1 sub sgn abs - ++ & .out5 mult store
8081 dup *.out1 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn abs - ++ & & .out1 mult store
25755 dup *.out2 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn abs - ++ & & .out2 mult store
22200 dup *.out3 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn abs - ++ & & .out3 mult store
25782 dup *.out4 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn abs - ++ & & .out4 mult store
315 dup *.out5 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn abs - ++ & & .out5 mult store
7799 dup *.out1 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn 0 floor & *.out1 3694 sub sgn abs & *.out1 8081 sub sgn abs & & .out1 mult store
901 dup *.out2 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn 0 floor & *.out2 7505 sub sgn abs & *.out2 25755 sub sgn abs & & .out2 mult store
6876 dup *.out3 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn 0 floor & *.out3 29703 sub sgn abs & *.out3 22200 sub sgn abs & & .out3 mult store
16558 dup *.out4 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn 0 floor & *.out4 9586 sub sgn abs & *.out4 25782 sub sgn abs & & .out4 mult store
2960 dup *.out5 sub sgn abs *.genes 1 sub sgn 0 floor *.thisgene 1 sub sgn 0 floor & *.out5 31105 sub sgn abs & *.out5 315 sub sgn abs & & .out5 mult store
8 rnd 4 sub dup *.focuseye sub sgn abs *.eye1width 1221 sub sgn abs *.focuseye -4 sub sgn abs - ++ *.eye1width 1221 sub sgn abs *.eye1dir -140 sub sgn abs | & *.focuseye -3 sub sgn abs - ++ *.eye2width 1221 sub sgn abs *.eye2dir -105 sub sgn abs | & | *.focuseye -2 sub sgn abs - ++ *.eye3width 1221 sub sgn abs *.eye3dir -70 sub sgn abs | & | *.focuseye -1 sub sgn abs - ++ *.eye4width 1221 sub sgn abs *.eye4dir -35 sub sgn abs | & | *.focuseye 0 sub sgn abs - ++ *.eye5width 1221 sub sgn abs *.eye5dir 0 sub sgn abs | & | *.focuseye 1 sub sgn abs - ++ *.eye6width 1221 sub sgn abs *.eye6dir 35 sub sgn abs | & | *.focuseye 2 sub sgn abs - ++ *.eye7width 1221 sub sgn abs *.eye7dir 70 sub sgn abs | & | *.focuseye 3 sub sgn abs - ++ *.eye8width 1221 sub sgn abs *.eye8dir 105 sub sgn abs | & | *.focuseye 4 sub sgn abs - ++ *.eye9width 1221 sub sgn abs *.eye9dir 140 sub sgn abs | & | | & .focuseye mult store
1221 dup *.eye1width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye1width mult store
1221 dup *.eye2width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye2width mult store
1221 dup *.eye3width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye3width mult store
1221 dup *.eye4width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye4width mult store
1221 dup *.eye5width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye5width mult store
1221 dup *.eye6width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye6width mult store
1221 dup *.eye7width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye7width mult store
1221 dup *.eye8width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye8width mult store
1221 dup *.eye9width sub sgn abs *.genes 1 sub sgn abs - ++ & .eye9width mult store
-140 dup *.eye1dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye1dir mult store
-105 dup *.eye2dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye2dir mult store
-70 dup *.eye3dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye3dir mult store
-35 dup *.eye4dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye4dir mult store
0 dup *.eye5dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye5dir mult store
35 dup *.eye6dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye6dir mult store
70 dup *.eye7dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye7dir mult store
105 dup *.eye8dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye8dir mult store
140 dup *.eye9dir sub sgn abs *.genes 1 sub sgn abs - ++ & .eye9dir mult store
1222 dup *.eye1width sub sgn abs *.genes 1 sub sgn 0 floor & .eye1width mult store
1222 dup *.eye2width sub sgn abs *.genes 1 sub sgn 0 floor & .eye2width mult store
1222 dup *.eye3width sub sgn abs *.genes 1 sub sgn 0 floor & .eye3width mult store
1222 dup *.eye4width sub sgn abs *.genes 1 sub sgn 0 floor & .eye4width mult store
1222 dup *.eye5width sub sgn abs *.genes 1 sub sgn 0 floor & .eye5width mult store
1222 dup *.eye6width sub sgn abs *.genes 1 sub sgn 0 floor & .eye6width mult store
1222 dup *.eye7width sub sgn abs *.genes 1 sub sgn 0 floor & .eye7width mult store
1222 dup *.eye8width sub sgn abs *.genes 1 sub sgn 0 floor & .eye8width mult store
1222 dup *.eye9width sub sgn abs *.genes 1 sub sgn 0 floor & .eye9width mult store
630 dup *.eye1dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye1dir mult store
630 dup *.eye2dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye2dir mult store
630 dup *.eye3dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye3dir mult store
630 dup *.eye4dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye4dir mult store
630 dup *.eye5dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye5dir mult store
630 dup *.eye6dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye6dir mult store
630 dup *.eye7dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye7dir mult store
630 dup *.eye8dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye8dir mult store
630 dup *.eye9dir sub sgn abs *.genes 1 sub sgn 0 floor & .eye9dir mult store
315 .setaim *.aim 315 sub sgn abs mult store
*.ypos *.refypos sub sgn 100 mult dup *.dn sub sgn abs *.eyef 50 sub 1 add sgn 0 floor *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | | *.robage 1 sub 1 add sgn 0 floor & *.nrg 300 sub sgn 0 floor & & .dn mult store
*.refxpos *.xpos sub sgn 100 mult dup *.sx sub sgn abs *.eyef 50 sub 1 add sgn 0 floor *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | | *.robage 1 sub 1 add sgn 0 floor & *.nrg 300 sub sgn 0 floor & & .sx mult store
*.refveldn *.veldn sub *.refypos 500 sub *.xpos *.refxpos sub 0 sub 1 add sgn 0 floor 1000 mult add *.ypos sub 10 div add dup *.dn sub sgn abs *.numties 0 sub sgn abs - ++ *.eyef 30 sub 1 add sgn 0 floor & *.eyef 60 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .dn mult store
*.refveldx *.veldx sub - *.xpos *.refxpos 500 sub *.ypos *.refypos sub 0 sub sgn - 0 floor 1000 mult add sub 10 div add dup *.sx sub sgn abs *.numties 0 sub sgn abs - ++ *.eyef 30 sub 1 add sgn 0 floor & *.eyef 60 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .sx mult store
*.refveldn dup *.dn sub sgn abs *.eyef 30 sub 1 add sgn 0 floor *.eyef 60 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn abs - ++ *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | *.nrg 300 sub 1 sub sgn - 0 floor | & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | & & .dn mult store
*.refveldx - dup *.sx sub sgn abs *.eyef 30 sub 1 add sgn 0 floor *.eyef 60 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn abs - ++ *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | *.nrg 300 sub 1 sub sgn - 0 floor | & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | & & .sx mult store
*.refveldn *.veldn sub *.refypos 500 sub *.xpos *.refxpos sub 0 sub 1 add sgn 0 floor 1000 mult add *.ypos sub 10 div add dup *.dn sub sgn abs *.numties 0 sub sgn abs - ++ *.eyef 0 sub sgn 0 floor & *.eyef 30 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .dn mult store
*.refveldx *.veldx sub - *.xpos *.refxpos 500 sub *.ypos *.refypos sub 0 sub sgn - 0 floor 1000 mult add sub 10 div add dup *.sx sub sgn abs *.numties 0 sub sgn abs - ++ *.eyef 0 sub sgn 0 floor & *.eyef 30 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor & & .sx mult store
*.refveldn *.refypos *.ypos sub *.closingRate div add dup *.dn sub sgn abs *.eyef 0 sub sgn 0 floor *.eyef 30 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn abs - ++ *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | *.nrg 300 sub 1 sub sgn - 0 floor | & & .dn mult store
*.refveldx - *.xpos *.refxpos sub *.closingRate div add dup *.sx sub sgn abs *.eyef 0 sub sgn 0 floor *.eyef 30 sub sgn - 0 floor & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.robage 1 sub 1 add sgn 0 floor & *.threatMode 0 sub sgn abs - ++ *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | & *.robage 4 mod 0 sub sgn abs & *.nrg 300 sub sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | *.nrg 300 sub 1 sub sgn - 0 floor | & & .sx mult store
0 dup *.up sub sgn abs .up mult store
0 dup *.dx sub sgn abs .dx mult store
.vshoot *.eyef 0 sub sgn 0 floor *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.vshoot 0 sub sgn abs - ++ & *.vtimer 1 sub sgn abs - ++ & mult inc
-6 dup *.shoot sub sgn abs *.eyef 0 sub sgn 0 floor *.robage 4 mod 0 sub sgn abs - ++ & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 800 sub sgn - 0 floor & *.robage 1 sub 1 add sgn 0 floor & *.refshell 50 sub sgn - 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.waste 100 sub 1 sub sgn - 0 floor & *.refbody *.refnrg sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & | & *.threatMode 2 & 0 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .shoot mult store
-1 dup *.shoot sub sgn abs *.eyef 0 sub sgn 0 floor *.robage 4 mod 0 sub sgn abs - ++ & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 800 sub sgn - 0 floor & *.robage 1 sub 1 add sgn 0 floor & *.refshell 50 sub sgn - 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.waste 100 sub 1 sub sgn - 0 floor & *.refbody *.refnrg sub 1 add sgn 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & & *.threatMode 2 & 0 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .shoot mult store
-4 dup *.shootval sub sgn abs *.eyef 0 sub sgn 0 floor *.robage 4 mod 0 sub sgn abs - ++ & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor & *.robage 1 sub 1 add sgn 0 floor & *.refshell 50 sub sgn - 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.waste 100 sub 1 sub sgn - 0 floor & *.threatMode 2 & 0 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .shootval mult store
-8 dup *.shootval sub sgn abs *.eyef 0 sub sgn 0 floor *.robage 4 mod 0 sub sgn abs - ++ & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 650 sub sgn - 0 floor & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ & *.robage 1 sub 1 add sgn 0 floor & *.refshell 50 sub sgn - 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.threatMode 2 & 0 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .shootval mult store
-10 dup *.shootval sub sgn abs *.eyef 0 sub sgn 0 floor *.robage 4 mod 0 sub sgn abs - ++ & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 800 sub sgn - 0 floor & *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ & *.robage 1 sub 1 add sgn 0 floor & *.refshell 50 sub sgn - 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 480 sub sgn - 0 floor - ++ | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.threatMode 2 & 0 sub sgn abs - ++ & *.nrg 300 sub sgn 0 floor & & .shootval mult store
.strvenom dup *.shoot sub sgn abs *.eyef 0 sub sgn 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 650 sub sgn - 0 floor & *.robage 1 sub 1 add sgn 0 floor & *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & *.refshell 50 sub 1 add sgn 0 floor *.refbody 100 sub sgn 0 floor | *.threatMode 2 & 0 sub sgn abs | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.waste 100 sub 1 sub sgn - 0 floor & *.nrg 300 sub sgn 0 floor & & .shoot mult store
10000 dup *.shootval sub sgn abs *.eyef 0 sub sgn 0 floor *.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub dist 650 sub sgn - 0 floor & *.robage 1 sub 1 add sgn 0 floor & *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ & *.refshell 50 sub 1 add sgn 0 floor *.refbody 100 sub sgn 0 floor | *.threatMode 2 & 0 sub sgn abs | & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.waste 100 sub 1 sub sgn - 0 floor & *.nrg 300 sub sgn 0 floor & & .shootval mult store
*.body *.minBody 2 mult sub 10 mult dup *.fdbody sub sgn abs *.body *.minBody 2 mult sub sgn 0 floor *.nrg 25000 sub sgn - 0 floor & *.threatMode 2 & 0 sub sgn abs - ++ & & .fdbody mult store
*.body 10 sub 10 mult 0 floor dup *.fdbody sub sgn abs *.nrg 500 sub sgn - 0 floor & .fdbody mult store
100 dup *.strbody sub sgn abs *.nrg 25000 sub sgn 0 floor *.threatMode 2 & 0 sub sgn abs *.nrg 1500 sub sgn 0 floor & | & .strbody mult store
30 dup *.repro sub sgn abs *.body *.minBody sub sgn 0 floor *.nrg 300 sub sgn 0 floor & *.nrg *.reproEnergy sub sgn 0 floor & *.pwaste 10000 sub 1 sub sgn - 0 floor & *.robage 2 sub 1 add sgn 0 floor & *.reproTimer 0 sub 1 sub sgn - 0 floor *.nrg 25000 sub sgn 0 floor | & & .repro mult store
*.robage dup *.reproducedLastCycle sub sgn abs *.repro 0 sub sgn 0 floor & .reproducedLastCycle mult store
.reproTimer *.reproTimer 0 sub sgn 0 floor *.nrg 300 sub sgn 0 floor & mult dec
*.reproTimerMax dup *.reproTimer sub sgn abs *.repro 0 sub sgn 0 floor & .reproTimer mult store
32000 rnd dup *.tie sub sgn abs *.eyef 27 sub sgn 0 floor *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.tiepres 0 sub sgn abs - ++ *.tiepres 0 sub sgn 0 floor *.tieNumAfter *.tiepres sub sgn abs - ++ & *.numties 0 sub sgn 0 floor *.trefshell 0 sub sgn abs - ++ & *.trefeye 0 sub sgn abs - ++ & *.trefshoot 0 sub sgn abs - ++ & *.trefup 0 sub sgn abs - ++ & *.trefdn 0 sub sgn abs - ++ & *.trefsx 0 sub sgn abs - ++ & *.trefdx 0 sub sgn abs - ++ & *.tmemval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & *.trefeye *.myeye sub sgn abs - ++ *.trefshoot *.myshoot sub sgn abs - ++ & *.trefup *.myup sub sgn abs - ++ & *.trefdn *.mydn sub sgn abs - ++ & *.trefsx *.mysx sub sgn abs - ++ & *.trefdx *.mydx sub sgn abs - ++ & *.trefaimsx *.myaimsx sub sgn abs - ++ & *.trefaimdx *.myaimdx sub sgn abs - ++ & *.robage 1 sub sgn - 0 floor | *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | | & *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & - ++ *.trefeye *.myeye sub sgn abs - ++ *.trefshoot *.myshoot sub sgn abs - ++ & *.trefup *.myup sub sgn abs - ++ & *.trefdn *.mydn sub sgn abs - ++ & *.trefsx *.mysx sub sgn abs - ++ & *.trefdx *.mydx sub sgn abs - ++ & *.trefaimsx *.myaimsx sub sgn abs - ++ & *.trefaimdx *.myaimdx sub sgn abs - ++ & *.robage 1 sub sgn - 0 floor | *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | | & | & *.robage 1 sub sgn 0 floor & & .tie mult store
*.tie dup *.tienum sub sgn abs *.tie 0 sub sgn abs & .tienum mult store
*.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub angle - *.aim add dup *.aimshoot sub sgn abs *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ *.shoot 0 sub sgn abs *.vshoot 0 sub sgn abs | & *.waste 100 sub sgn - 0 floor & *.nrg 300 sub sgn 0 floor & & .aimshoot mult store
*.refxpos *.refveldx *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div add *.refypos *.refvelup *.refxpos *.refveldx *.refxpos *.refypos dist mult 39 div add *.refypos *.refvelup *.refxpos *.refypos dist mult 39 div sub dist mult 39 div sub angle - *.aim sub dup *.aimshoot sub sgn abs *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | *.shoot 0 sub sgn abs *.vshoot 0 sub sgn abs | & *.nrg 300 sub sgn 0 floor & & .aimshoot mult store
0 dup *.tieloc sub sgn abs *.tie 0 sub sgn abs - ++ *.tieNumAfter 0 sub sgn abs - ++ & *.robage 1 sub 1 sub sgn - 0 floor | *.tieNumAfter *.tiepres sub sgn abs *.tie 0 sub sgn abs | *.trefeye *.myeye sub sgn abs - ++ *.trefshoot *.myshoot sub sgn abs - ++ & *.trefup *.myup sub sgn abs - ++ & *.trefdn *.mydn sub sgn abs - ++ & *.trefsx *.mysx sub sgn abs - ++ & *.trefdx *.mydx sub sgn abs - ++ & *.trefaimsx *.myaimsx sub sgn abs - ++ & *.trefaimdx *.myaimdx sub sgn abs - ++ & *.robage 1 sub sgn - 0 floor | *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | | *.tie 0 sub sgn abs - ++ *.numties 0 sub sgn abs | *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | | & | *.tieloc 0 sub sgn abs - ++ | & .tieloc mult store
-1000 dup *.tieval sub sgn abs *.tie 0 sub sgn abs *.tieNumAfter 0 sub sgn 0 floor | *.robage 1 sub sgn 0 floor & *.tieNumAfter *.tiepres sub sgn abs - ++ *.tie 0 sub sgn abs - ++ & *.trefeye *.myeye sub sgn abs - ++ *.trefshoot *.myshoot sub sgn abs - ++ & *.trefup *.myup sub sgn abs - ++ & *.trefdn *.mydn sub sgn abs - ++ & *.trefsx *.mysx sub sgn abs - ++ & *.trefdx *.mydx sub sgn abs - ++ & *.trefaimsx *.myaimsx sub sgn abs - ++ & *.trefaimdx *.myaimdx sub sgn abs - ++ & *.robage 1 sub sgn - 0 floor | *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | - ++ & *.numties 0 sub sgn 0 floor *.trefshell 0 sub sgn abs - ++ & *.trefeye 0 sub sgn abs - ++ & *.trefshoot 0 sub sgn abs - ++ & *.trefup 0 sub sgn abs - ++ & *.trefdn 0 sub sgn abs - ++ & *.trefsx 0 sub sgn abs - ++ & *.trefdx 0 sub sgn abs - ++ & *.tmemval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & *.refnrg 250 sub sgn - 0 floor | & *.tie 0 sub sgn abs *.numties 0 sub sgn abs - ++ & *.refeye *.myeye sub sgn abs - ++ *.refshoot *.myshoot sub sgn abs - ++ & *.reftie *.myties sub sgn abs - ++ & *.refup *.myup sub sgn abs - ++ & *.refdn *.mydn sub sgn abs - ++ & *.refsx *.mysx sub sgn abs - ++ & *.refdx *.mydx sub sgn abs - ++ & *.refaimsx *.myaimsx sub sgn abs - ++ & *.refaimdx *.myaimdx sub sgn abs - ++ & *.in1 3694 sub sgn abs - ++ *.in2 7505 sub sgn abs - ++ & *.in3 29703 sub sgn abs - ++ & *.in4 9586 sub sgn abs - ++ & *.in5 31105 sub sgn abs - ++ & & *.reproducedLastCycle *.robage sub abs 2 sub 1 sub sgn - 0 floor | *.robage 1 sub sgn - 0 floor | *.body 50 sub sgn - 0 floor *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | - ++ & *.threatMode 4 & 0 sub sgn abs - ++ *.trefbody 100 sub 1 add sgn 0 floor | & *.refeye 0 sub sgn abs - ++ *.refshoot 0 sub sgn abs - ++ & *.refup 0 sub sgn abs - ++ & *.refdn 0 sub sgn abs - ++ & *.refsx 0 sub sgn abs - ++ & *.refdx 0 sub sgn abs - ++ & *.memval 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 1 sub sgn 0 floor & *.refvenom 0 sub sgn abs - ++ & *.refpoison 0 sub sgn abs - ++ & *.refshell 0 sub sgn abs - ++ & *.refkills 0 sub sgn abs - ++ & *.reproducedLastCycle *.robage sub abs 2 sub sgn 0 floor & & | & & .tieval mult store

Hold on, it's too long to fit in one post.

15
Bug reports / An attempted store to 0 leaves the value on the stack
« on: July 15, 2007, 05:42:47 PM »
I've discovered that calling store with an address of 0 results in the value (not the address) remaining on the stack. It took a while to track this down (it was causing test code in a bot to fail to execute properly).

This demonstrates the bug:

Code: [Select]
cond
start
'920 should be 41, and 919-917 should be 0, if there is no bug here. This works properly.
41 'So there's something visible on the end of the stack
97 999 store
'dump stack
920 store 919 store 918 store 917 store

'930 should be 42, and 929-927 should be 0, if there is no bug here. This works properly.
42 'So there's something visible on the end of the stack
98 1000 store
'dump stack
930 store 929 store 928 store 927 store

'924 should be 43, and 923-921 should be 0, if there is no bug here. This does not work properly - 924 is 99, and 923 is 43.
43 'Same reason
99 0 store
'dump stack
924 store 923 store 922 store 921 store

'914-911 should be 0, if there is nothing being left on the stack. However, the 100 is still on the stack after the store, and so it ends up in 914.
100 0 store
'dump stack
914 store 913 store 912 store 911 store
stop

P.S. I put the extra values (42 43 etc) before the stores in order to test whether the bug only happened if there was already something on the stack (besides the store's 2 parameters). As the last test (914-911) shows, it seems to happen regardless of whether something else is on the stack already.

Pages: [1] 2