Darwinbots Forum

Bots and Simulations => Bestiary => Untagged bots => Topic started by: Moonfisher on April 14, 2008, 04:22:14 PM

Title: Spinner v1.2 (F2) (Moonfisher) 14-04-08
Post by: Moonfisher on April 14, 2008, 04:22:14 PM
Think this could be able to beat F2. (Except for lovebot)
It uses small bots as "torpedoes".
It also has a better conspec now.
Appart from that same old spinner.

The "torpedoes" use ties, initial thought was to boost a single shot to instant kill, but that didn't quite work, venom wasn't great either, ties was the best way I could find.
They also kill with the ties if locs is set to 5, if you set it to 3 it'll only use confusion.
The 3 confusion thingies are easy to secure against though... but everything has a counter move and it's fun to see how easy it can be to render a strong bot harmless with a simple action.

I guess I could always build lovebot into this thing to give it an extra boost, but I like the way a simple rape bot that does virtualy nothing else can be so tough
But I'm not so sure raping should be allowed in F2... it's not far from using a virus, you need to get in close and the oponent needs space to reproduce... but still... you can get controll over the alge way too fast and you can SG'fy your bot at take over oponents completely.
Seems overpowered for F2... it's ok for F1 I guess, but it seems far more potent than viruses, so I hate to pick on my own bot, but I don't think lovebot belongs in F2   

But this one still has no sexrepro... yet anyway...

Code: [Select]
'Spinner v1.2 (F2) 14-04-08
'by Moonfisher
'Added some small "torpedoes" to cause some confusion
'They also kill with ties, but it can be disabled below (the locs constant)
'Also changed the conspec


'------------------- vars
def seteyes 50
def seteyewidth 51
def seteyespace 52
def setoffset 53

def state 54
def repspin 55

def randm 56
def keyloc 57

def birthstate 971
def birthx 972
def birthy 973


'-------------------- constants
def spineyewidth 0
def spineyespace 105
def spinoffset 140

def scaning 1
def torpedo 2

def key1 23
def key2 403
def key3 506
def key4 102
def key5 1053

def startkey 110
def startloc 120
def locs 5 '--- Must correcpond to the amount of different tie actions
'Set locs to 4 to disable instant kill using .shootval
'Set locs to 3 to disable .strbody killing aswell


cond
*.robage 0 =
start
4 rnd .randm store
.startkey *.randm add .keyloc store
.startkey *.randm add .memloc store
.startkey *.randm add .tmemloc store
.key1 .startkey store
.key2 .startkey 1 add store
.key3 .startkey 2 add store
.key4 .startkey 3 add store
.key5 .startkey 4 add store
'-------Tie actions (5)
.eye5dir .startloc store
682 .startloc 1 add store
.vloc .startloc 2 add store
174 .startloc 3 add store
.memloc .startloc 4 add store
173 .startloc 5 add store
.shootval .startloc 6 add store
31999 .startloc 7 add store
.strbody .startloc 8 add store
31999 .startloc 9 add store
stop

cond
*.robage 0 =
*.birthstate 0 =
start
.scaning .state store
stop

cond
*.robage 0 =
*.birthstate 0 !=
*.state 0 =
start
*.birthstate .state store
stop

cond
*.birthstate 0 !=
start
0 .birthstate store
stop

cond
*.robage 0 =
*.state .scaning =
start
1 .seteyes store
.spineyewidth .seteyewidth store
.spineyespace .seteyespace store
.spinoffset .setoffset store
.shoot .vloc store
-2 .venval store
.shoot .ploc store
stop

cond
*.robage 0 =
*.state .torpedo =
start
1 .seteyes store
.spineyewidth .seteyewidth store
.spineyespace .seteyespace store
.spinoffset .setoffset store
.shoot .vloc store
-2 .venval store
.shoot .ploc store
stop

cond
*.seteyes 1 =
start
*.setoffset .eye9dir store
*.setoffset *.seteyespace add .eye8dir store
*.setoffset *.seteyespace 2 mult add .eye7dir store
*.setoffset *.seteyespace 3 mult add .eye6dir store
*.setoffset *.seteyespace 4 mult add .eye5dir store
*.setoffset *.seteyespace 5 mult add .eye4dir store
*.setoffset *.seteyespace 6 mult add .eye3dir store
*.setoffset *.seteyespace 7 mult add .eye2dir store
*.setoffset *.seteyespace 8 mult add .eye1dir store
4 .focuseye store
0 .seteyes store
stop

cond
*.state .scaning =
*.eye9 0 >
*.memval *.keyloc * !=
start
*.refxpos *.refypos angle .setaim store
*.refxpos *.xpos sub abs *.refypos *.ypos sub abs pyth 5 div 30 sub 0 floor 100 ceil *.refvelup add .up store
*.refveldx .dx store
-6 .shoot store
*.nrg 30 div 20 ceil *.eye9 40 sub 0 floor sgn *.body 40 sub 0 floor sgn mult mult .shootval store
*.refxpos .out4 store
*.refypos .out5 store
stop

cond
*.eye9 0 =
*.memval *.keyloc * = or
*.out4 0 !=
*.out5 0 != or
start
0 .out4 store
0 .out5 store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 >
*.memval *.keyloc * !=
*.robage 5 mod 0 =
*.venom 1 >
start
-3 .shoot store
0 .shootval store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 mod 16 >=
*.robage 200 >= or
start
*.aim 35 add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 mod 16 <
*.robage 200 <
start
20 .dx store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 !=
*.memval *.keyloc * =
*.robage 20 mod 16 >=
*.robage 200 >= or
start
*.aim 35 add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 !=
*.memval *.keyloc * =
*.robage 20 mod 16 <
*.robage 200 <
start
20 .dx store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.robage 100 >=
*.robage 1000 <
*.eye9 0 =
*.robage 20 mod 10 >
start
20 .dx store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye1 0 >
start
*.aim *.eye1dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye2 0 >
start
*.aim *.eye2dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye3 0 >
start
*.aim *.eye3dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye4 0 >
start
*.aim *.eye4dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye5 0 >
start
*.aim *.eye5dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye6 0 >
start
*.aim *.eye6dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye7 0 >
start
*.aim *.eye7dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 =
*.robage 20 >
*.memval *.keyloc * = and or
*.eye8 0 >
start
*.aim *.eye8dir add .setaim store
stop

cond
*.state .scaning =
*.state .torpedo = or
*.eye9 0 >
*.memval *.keyloc * =
*.in4 0 !=
*.in5 0 != or
*.in4 *.in5 dist 1000 <
start
*.in4 *.in5 angle .setaim store
20 .dx store
stop

cond
*.state .scaning =
*.eye9 0 =
*.memval *.keyloc * = or
*.nrg 3100 > or
*.nrg 300 >
*.body 100 > and
*.totalmyspecies 70 < and
*.nrg 500 >
*.body 100 > and
*.totalmyspecies 70 >= and or
*.repspin 0 =
start
*.robage 1 add .repspin store
stop

cond
*.state .scaning =
*.repspin 1 add *.robage =
start
*.aim 511 add .setaim store
0 .up store
0 .dx store
stop

cond
*.state .scaning =
*.repspin 2 add *.robage =
start
*.aim 341 add .setaim store
0 .up store
0 .dx store
stop

cond
*.state .scaning =
*.repspin 3 add *.robage =
start
*.aim 511 add .setaim store
0 .up store
0 .dx store
stop

cond
*.state .scaning =
*.repspin 15 add *.robage <
*.repspin 0 !=
start
0 .repspin store
stop

cond
*.state .scaning =
*.nrg 300 >
*.body 100 >
*.repspin 1 add *.robage =
*.repspin 2 add *.robage = or
*.totalmyspecies 70 <
start
32 .repro store
stop

cond
*.state .scaning =
*.nrg 500 >
*.body 100 >
*.repspin 1 add *.robage =
*.repspin 2 add *.robage = or
*.totalmyspecies 70 >=
start
32 .repro store
stop

cond
*.state .scaning =
*.nrg 200 >
*.body 500 <
*.totalmyspecies 70 > or
start
100 .strbody store
stop

cond
*.state .scaning =
*.nrg 100 <
*.body 20 >
start
50 .fdbody store
stop

cond
*.state .scaning =
*.shell 50 <
*.nrg 50 >
start
20 .mkshell store
stop

cond
*.state .scaning =
*.shell 200 <
*.nrg 200 >
*.body 120 >
start
50 .mkshell store
stop

cond
*.state .scaning =
*.venom 50 <
*.nrg 20 >
start
10 .strvenom store
stop

cond
*.state .scaning =
*.shell 300 <
*.nrg 200 >
*.body 100 >
*.eye9 0 >
*.refeye 0 !=
*.refshoot 0 != or
*.refshell 0 != or
*.refpoison 0 != or
*.refvenom 0 != or
*.refvelscalar 20 > or
start
300 *.shell sub .mkshell store
stop

cond
*.state .scaning =
*.shflav 0 !=
*.shflav -2 !=
*.shflav -3 !=
*.nrg 80 >
*.venom 5 >
start
*.shang .setaim store
-3 .shoot store
10 .shootval store
stop

cond
*.state .scaning =
*.shflav 0 !=
*.shflav -2 !=
*.shflav -3 !=
*.nrg 80 >
*.venom 5 <=
start
*.shang .setaim store
.setaim .shoot store
*.refaim 682 add .shootval store
stop

cond
*.fixpos 0 !=
start
0 .fixpos store
stop

cond
*.state .scaning =
*.pain 60 >
*.shflav 0 !=
*.shflav -2 !=
start
*.maxvel .dx store
stop

cond
*.shflav 0 !=
start
0 .shflav store
stop

cond
*.numties 0 >
*.trefbody *.body >=
*.trefnrg *.nrg >= or
start
*.tiepres .tienum store
.tieval .tieloc store
1000 .tieval store
*.tiepres .deltie store
stop

'Wasn't sure the above was legal for F2
'If it is, then disable the gene above and always use this
cond
*.numties 0 >
*.trefbody *.body <
*.trefnrg *.nrg <
start
*.tiepres .tienum store
.shoot .tieloc store
-2 .tieval store
*.tiepres .deltie store
stop

'------------------------------------- Torpedo
cond
*.state .scaning =
*.memval *.keyloc * !=
*.eye9 0 !=
*.body 150 >
*.totalmyspecies 50 <
*.refshell 0 >
*.refshell *.refbody add *.refnrg add *.shell *.body add *.nrg add >
start
*.refxpos .birthx store
*.refypos .birthy store
.torpedo .birthstate store
5 .repro store
stop

cond
*.robage 1 >
*.body *.nrg add 150 <
start
.torpedo .state store
stop

cond
*.robage 0 =
*.state .torpedo =
start
*.birthx *.birthy angle .setaim store
stop

cond
*.state .torpedo =
*.body 1 >
start
*.body 10 mult 10 sub 0 floor .fdbody store
stop

cond
*.state .torpedo =
*.memval *.keyloc * !=
*.numties 0 =
*.eye5 0 !=
start
*.refxpos *.refypos angle .setaim store
*.refxpos *.xpos sub abs *.refypos *.ypos sub abs pyth 10 div 30 sub 0 floor 100 ceil *.refvelup add .up store
*.refveldx .dx store
*.refvelsx .sx store
1 .tie store
.eye5dir .tieloc store
.spinoffset .spineyespace 4 mult add .tieval store
stop

cond
*.state .torpedo =
*.memval 0 =
*.refeye 0 =
*.refshoot 0 =
*.reftie 0 =
*.refshell 0 =
*.revenom 0 =
*.refaim 0 =
*.refpoison 0 =
*.refvenom 0 =
*.refkills 0 =
start
0 .up store
0 .dx store
0 .sx store
0 .tie store
*.aim *.eye8dir add .setaim store
stop

cond
*.state .torpedo =
*.tmemval *.keyloc * !=
*.numties 0 >
start
*.tiepres .tienum store
.locs 1 sub rnd 2 mult .startloc add dup * .tieloc store
1 add * .tieval store
40 .stifftie store
200 .fixlen store
*.trefxpos *.trefypos angle .setaim store
*.trefvelup .up store
*.trefveldx .dx store
0 .deltie store
stop

cond
*.state .torpedo =
*.tmemval *.keyloc * =
*.numties 0 >
start
*.tiepres .deltie store
stop

'--------------------------
'Viral and mem defence

cond
*.keyloc .startkey *.randm add !=
*.memloc .startkey *.randm add != or
*.memloc .startkey *.randm add != or
*.venval -2 != or
*.vloc .shoot != or
start
.startkey *.randm add .keyloc store
.startkey *.randm add .memloc store
.startkey *.randm add .tmemloc store
-2 .venval store
.shoot .vloc store
stop

cond
*.vtimer 0 !=
start
0 .vshoot store
stop

cond
*.repro 0 !=
*.repro 32 !=
*.repro 5 !=
'*.repro 98 !=
start
0 .repro store
stop

cond
*.delgene 0 !=
start
0 .delgene store
stop

end
Title: Spinner v1.2 (F2) (Moonfisher) 14-04-08
Post by: Numsgil on April 14, 2008, 05:14:38 PM
We may want to disable sex repro if two bots are too far in DNA similarity.  Right now, if you had two bots that weren't related at all, and sexreprod them together, you'd basically just have a 50/50 of getting one DNA or the other.  Mixing of DNA only happens if they have some commonality, so it's possible to build an aggressive bot that uses a sneaky way to get other bots to produce its own kid 50% of the time, which may not be fair for league matches and such.
Title: Spinner v1.2 (F2) (Moonfisher) 14-04-08
Post by: EricL on April 14, 2008, 05:25:22 PM
I look at it as just another attack to be on guard against against, one that takes at least two shots (a sperm shot and an info shot) to succeed.

If you don't want to be raped, better make sure that chastity belt is on tight....
Title: Spinner v1.2 (F2) (Moonfisher) 14-04-08
Post by: Moonfisher on April 15, 2008, 03:01:58 AM
Not saying it needs to be locked, but it does seem to break the rules for F2 since it's a sort of close range fast channeling virus.
And once you infected an enemy or alge the infected bots will take care of eveything for you. (It can be hard to tell who's winning at times).
And I have a slight concern that this could cause all top bots to be rape bots who rape the alge to gain controll.
You can put all your genes in an alge with 2-3 cycles, if you had to do that with a virus it would take ages...
But ofcourse like with eveything else as long as poeple don't exploit it too much it shouldn't hurt.
Still think it's an F1 feature though.
Also personly I find the 2 last tie actions used by spinner to be overpowered, the ones pushing 31999 into shootval or strbody.
Title: Re: Spinner v1.2 (F2) (Moonfisher) 14-04-08
Post by: Botsareus on June 14, 2014, 02:18:12 PM
Disqualified for giving energy to opponent using a tie.