; ######################################### ; # Spectre V1.0 # ; # ------------------------------------- # ; # by Alexander Beisig (Tycho) # ; ######################################### ; ; 06/18/1999 ; Coded for ATRobots V2.09 ; ; ------ ; If you want to use ideas from this robot, I would be very pleased if you would ; follow these three rules: ; ; (1) Do not just copy it. ; I wrote every line of the code myself, but many ideas came form other robots. ; (2) It would be cool if you didn't lock your robot (with ATRLock). ; If you use ideas from other people, don't you think it's just fair if other people ; can see your ideas? ; (3) Mention the robot you took your ideas from. ; This one was inspired mainly by TOBI-1 and STEALTH. They showed that fast-moving ; robots with short range that don't spend much time on aiming can be quite successful as well. ; ------ ; ; Strategy: ; Move fast to avoid being tracked by those bulky snipers, scan and fire very quickly at cose ranges ; without spending time for target prediction. Will avoid crashing into walls. Tries to close in ; when it has found an enemy. ; #config scanner=2 #config engine=5 #config heatsinks=1 #config weapon=3 #config armor=1 #config mines=0 #config shield=0 #def sa #def sd opo 11 100 ; full throttle opo 22 10 opo 22 15 mov ax 1 int 4 ; overburn on !begin mov sa 64 opo 17 sa ; set wide scan arc !main opo 11 100 ; full throttle int 2 ; get location cmp ex 200 ; check for xpos jle 11 cmp fx 200 ; check for ypos jle 12 cmp ex 800 ; check for xpos jgr 13 cmp fx 800 ; check for ypos jgr 14 !scan ipo 2 ax ; get heat cmp ax 50 jgr !main ipo 3 ax ; get current heading cmp ax [1] ; compare with desired heading jne !main ipo 7 sd ; scan cmp sd 2000 jls !found opo 12 128 ; turn turret jne !main jeq !main :11 cmp fx 800 ; check for ypos jgr 14 cmp [1] 116 ; check for desired heading jeq !scan mov ax 116 ; desired heading sub ax [1] opo 14 ax ; rotate away from wall jne !main jeq !main :12 cmp [1] 180 ; check for desired heading jeq !scan mov ax 180 ; desired heading sub ax [1] opo 14 ax ; rotate away from wall jne !main jeq !main :13 cmp [1] 244 ; check for desired heading jeq !scan mov ax 244 ; desired heading sub ax [1] opo 14 ax ; rotate away from wall jne !main jeq !main :14 cmp [1] 52 ; check for desired heading jeq !scan mov ax 52 ; desired heading sub ax [1] opo 14 ax ; rotate away from wall jne !main jeq !main !track ipo 7 sd ; scan cmp sd 2000 jge !begin !found mov ax [3] ; get accuracy add ax 23 jeq ax jne ax :21 neg sa opo 12 sa ; turn turret neg sa shr sa 2 jne !check jeq !check :22 shr sa 1 neg sa opo 12 sa ; turn turret neg sa shr sa 1 jne !check jeq !check :23 shr sa 2 jne !check jeq !check :24 shr sa 1 opo 12 sa ; turn turret shr sa 1 jne !check jeq !check :25 opo 12 sa ; turn turret shr sa 2 jne !check jeq !check !check cmp sa 2 jle !fire opo 17 sa ; reduce scan arc jne !track jeq !track !fire opo 15 [3] ; fire cmp sd 300 ; compare distance jge !far mov bx 44 cmp [2] 200 ; compare turret offset jls !steer cmp [2] 224 ; compare turret offset jgr !steer ipo 2 ax ; get heat cmp ax 100 jls !track jge !begin !far mov bx 32 cmp [2] 212 ; compare turret offset jls !steer cmp [2] 236 ; compare turret offset jgr !steer ipo 2 ax ; get heat cmp ax 100 jls !track jge !begin !steer mov ax bx ; bx is a parameter add ax [2] ; add turret offset opo 14 ax ; steer jne !begin jeq !begin