26
« on: March 15, 2008, 09:57:30 PM »
'Etch Mk II
'Dirty F1 tie fighter by abyaly
'For version 2.43.1d
'March 15, 2008
def id 6395
def status 53
def tstatus 54
def ally 1
def veggie 2
def enemy 3
def rrr 942
def speed 10
'****************************Birth init**************************
cond
*.robage 0 =
start
.dnalen .memloc store
.dnalen .tmemloc store
100 rnd .rrr store
stop
'****************************************************************
'*******************Const****************************************
cond
start
'Unfix myself
0 .fixpos *.fixed sgn mult store
'Identify myself
.id dup *.out5 sub sgn abs .out5 mult store
'arrange my eyes
-140 dup *.eye1dir sub sgn abs .eye1dir mult store
-105 dup *.eye2dir sub sgn abs .eye2dir mult store
-70 dup *.eye3dir sub sgn abs .eye3dir mult store
-35 dup *.eye4dir sub sgn abs .eye4dir mult store
35 dup *.eye6dir sub sgn abs .eye6dir mult store
70 dup *.eye7dir sub sgn abs .eye7dir mult store
105 dup *.eye8dir sub sgn abs .eye8dir mult store
140 dup *.eye9dir sub sgn abs .eye9dir mult store
-30 dup *.eye1width sub sgn abs .eye1width mult store
-25 dup *.eye2width sub sgn abs .eye2width mult store
-15 dup *.eye3width sub sgn abs .eye3width mult store
5 dup *.eye4width sub sgn abs .eye4width mult store
45 dup *.eye5width sub sgn abs .eye5width mult store
125 dup *.eye6width sub sgn abs .eye6width mult store
285 dup *.eye7width sub sgn abs .eye7width mult store
605 dup *.eye8width sub sgn abs .eye8width mult store
1221 dup *.eye9width sub sgn abs .eye9width mult store
.deltie *.tienum sgn mult inc
stop
'****************************************************************
'************************Eye focus manager***********************
cond
*.eye1 0 >
*.eye2 0 > or
*.eye3 0 > or
*.eye4 0 > or
*.eye5 0 > or
*.eye6 0 > or
*.eye7 0 > or
*.eye8 0 > or
*.eye9 0 > or
start
'Focus using the narrowest eye that sees something
*.eye1 *.eye2 *.eye3 *.eye4
*.eye5 *.eye6 *.eye7 *.eye8 *.eye9
floor floor floor floor
floor floor floor floor
50 store
-4 *50 *.eye1 sub sgn abs -- - .focuseye mult store
-3 *50 *.eye2 sub sgn abs -- - .focuseye mult store
-2 *50 *.eye3 sub sgn abs -- - .focuseye mult store
-1 *50 *.eye4 sub sgn abs -- - .focuseye mult store
0 *50 *.eye5 sub sgn abs -- - .focuseye mult store
1 *50 *.eye6 sub sgn abs -- - .focuseye mult store
2 *50 *.eye7 sub sgn abs -- - .focuseye mult store
3 *50 *.eye8 sub sgn abs -- - .focuseye mult store
4 *50 *.eye9 sub sgn abs -- - .focuseye mult store
stop
'****************************************************************
'****************************Tie manager*************************
cond
*.numties 0 >
start
'We will need this later :D
*.tiepres .tienum store
*.tiepres .readtie store
stop
'****************************************************************
'****************************Target ID***************************
cond
'I see something.. what is it?
*.eyef 0 >
start
'Oh, you. Hi again, I guess.
.ally
*.in5 .id sub sgn abs -- -
*.refage sgn -- - add sgn mult
*.memval *.dnalen sub sgn abs -- - mult
.status store
'Its a veggie! Let's eat it!
.veggie .status
*.status .ally sub sgn abs mult
*.refshoot sgn -- - mult
*.refaimsx sgn -- - mult
*.refkills sgn -- - mult
*.refeye sgn -- - mult
*.refup sgn -- - mult
*.memval 13 sub sgn abs -- - mult
store
'You're not my race and you're not food.. you must be trying to kill me!
.enemy .status
*.status .ally sub sgn abs mult
*.status .veggie sub sgn abs mult
store
stop
cond
'I'm attached to something.. what is it?
*.tienum 0 >
start
'Oh, you. Hi again, I guess.
.ally
*.tmemval *.dnalen sub sgn abs -- -
*.trefage sgn -- - add sgn mult
.tstatus store
'Its a veggie! Let's eat it!
.veggie .tstatus
*.tstatus .ally sub sgn abs mult
*.trefshoot sgn -- - mult
*.trefaimsx sgn -- - mult
*.trefkills sgn -- - mult
*.trefeye sgn -- - mult
*.trefup sgn -- - mult
*.tmemval 13 sub sgn abs -- - mult
store
'You're not my race and you're not food.. you must be trying to kill me!
.enemy .tstatus
*.tstatus .ally sub sgn abs mult
*.tstatus .veggie sub sgn abs mult
store
stop
'****************************************************************
'**************************Untie allies**************************
cond
*.numties 0 >
*.tstatus .ally =
start
*.tiepres .deltie store
stop
'****************************************************************
'****************************Seeking*****************************
cond
*.eye1 0 =
*.eye2 0 =
*.eye3 0 =
*.eye4 0 =
*.eye5 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
start
'We clearly aren't looking hard enough
.speed .up store
stop
'****************************************************************
'*******************Aim in direction of movement*****************
cond
*.velup 0 !=
*.veldx 0 !=
*.eyef 0 =
*.numties 0 =
*.status .ally = or
start
'theta = arctan (veldx / velup). (math ftw)
*.veldx 628 mult *.velup div *.veldx *.velup div dup mult 8824 mult 31416 add 10000 div
div - *.velup sgn sqr -- - 628 mult add *.aim add .setaim store
stop
cond
*.velup 0 =
*.veldx 0 !=
*.eyef 0 =
*.numties 0 =
*.status .ally = or
start
'divide by zero (eek!)
*.velsx sgn 314 mult *.aim add .setaim store
stop
'****************************************************************
'***********************Target non-allies************************
cond
*.eyef 0 >
*.status .ally !=
start
'"children, scooch closer"
*.refvelup 250 *.eye3 sub add *.velup abs - floor .up store
*.refveldx .dx store *.refveldx .dx store
*.refxpos *.refypos angle .setaim store
stop
'****************************************************************
'************************Avoid allies****************************
cond
*.eyef 0 >
*.status .ally =
start
'root 2 = 14142 10000 div
'Yo. How's it going? Good? Me too. See ya.
*.tiepres .deltie store
*.refveldx sgn abs -- - *.refveldx add sgn .speed mult - 14142 mult 20000 div .dx store
.speed 14142 mult 20000 div .up store
stop
'****************************************************************
'***********************EAT YOUR VEGGIES!!***********************
cond
*.eyef 0 >
*.status .veggie =
*.numties 0 =
start
*.memval .tie store
stop
cond
*.eyef 0 >
*.status .veggie =
start
.tieloc *.robage *.rrr add 2 mod 0 sub sgn abs -- - mult
.tienum *.robage *.rrr add 2 mod 1 sub sgn abs -- - mult add
.shoot store
-1 *.robage *.rrr add 2 mod 0 sub sgn abs -- - mult
1 *.robage *.rrr add 2 mod 1 sub sgn abs -- - mult add
.shootval store
stop
cond
*.numties 0 >
*.tstatus .veggie =
start
.tieval .tieloc store
30000 .tieval store
stop
'****************************************************************
'*********This section is dedicated to killin'*******************
'This section is also a pain to comment,
'but I'm sure you can figure it out if you're interested
cond
*.eyef 0 >
*.numties 0 =
*.status .enemy =
start
1000 rnd .tie store
.shootval *.robage *.rrr add 4 mod 0 sub sgn abs -- - mult
.strpoison *.robage *.rrr add 4 mod 1 sub sgn abs -- - mult add
.strvenom *.robage *.rrr add 4 mod 2 sub sgn abs -- - mult add
.fixpos *.robage *.rrr add 4 mod 3 sub sgn abs -- - mult add
.shoot store
32000 .shootval store
stop
cond
*.eyef 0 >
*.numties 0 >
*.status .enemy =
*.trefbody 50 >
start
.tieloc *.robage *.rrr add 2 mod 0 sub sgn abs -- - mult
.tienum *.robage *.rrr add 2 mod 1 sub sgn abs -- - mult add
.shoot store
-1 *.robage *.rrr add 2 mod 0 sub sgn abs -- - mult
1 *.robage *.rrr add 2 mod 1 sub sgn abs -- - mult add
.shootval store
stop
cond
*.eyef 0 >
*.numties 0 >
*.status .enemy =
*.trefbody 50 <=
start
.shootval *.robage *.rrr add 4 mod 0 sub sgn abs -- - mult
.strbody *.robage *.rrr add 4 mod 1 sub sgn abs -- - mult add
.strpoison *.robage *.rrr add 4 mod 2 sub sgn abs -- - mult add
.strvenom *.robage *.rrr add 4 mod 3 sub sgn abs -- - mult add
.shoot store
32000 .shootval store
stop
cond
*.numties 0 >
*.tstatus .enemy =
*.trefbody 50 >
start
.strbody *.robage *.rrr add 2 mod 0 sub sgn abs -- - mult
.tieval *.robage *.rrr add 2 mod 1 sub sgn abs -- - mult add
.tieloc store
32000 .tieval store
stop
cond
*.numties 0 >
*.status .enemy =
*.trefbody 50 <=
start
.shootval *.robage *.rrr add 4 mod 2 sub sgn abs -- - mult
.fdbody *.robage *.rrr add 4 mod 3 sub sgn abs -- - mult add
.strpoison *.robage *.rrr add 4 mod 0 sub sgn abs -- - mult add
.strvenom *.robage *.rrr add 4 mod 1 sub sgn abs -- - mult add
.tieloc store
32000 .tieval store
stop
'****************************************************************
'**************************Waste & body**************************
cond
*.waste 400 >
start
-4 .shoot store
*.waste .shootval store
stop
cond
*.body 2 >=
start
*.body .fdbody store
stop
'****************************************************************
'*****************************Repro******************************
cond
*.nrg *.body 10 mult add 600 >
start
'Face the direction opposite to velocity
*.veldx 628 mult *.velup div *.veldx *.velup div dup mult 8824 mult 31416 add 10000 div
div - *.velup sgn sqr -- 628 mult add *.aim add .setaim store
'Accelerate with current velocity
80 *.velscalar sub 0 floor .dn store
50 .repro store
stop
'****************************************************************
Etch is back and working in current vers!
A few tactics have changed due to version trauma and new opportunities.
Reams the current F1 table in addition to pacifist and multiply4.
No close fights, contenders are welcome to take notes