package{ import flash.display.* //CHANGE "racer" to your bot's name and save this file with the same name!! //Rename sampleBot to the CLASS NAME (under linkage) of your bot's movieClip. Be sure to send in a .fla with that inside and everything custom named. public class claxor extends claxorBot { // do NOT change these public var xvel:Number // the x velicity public var yvel:Number // the y velocity public var rot:Number // the current rotation public var curNode:Number // the number of the node you are approaching public var shotTime:Number // the time left till your next shot public var nitro:Number // the amount of feul left for turbo public var alive:Boolean // if your car is still active public var lap:Number // the lap you are on public var lapCheck:Boolean // internal stuff public var botName:String // your bot's name // The following variables determine the balencing of your bot. You may have a max of 25 points used and a max of 10 per attribute. public var traction:Number // Determines how much your bot drifts (0 means lots of drift, 10 keel means no drift) public var turning:Number // Determines how fast your bot can turn (0 means no turning, 10 means massive turning) public var accel:Number // Determines how well your bot accelerates (0 means no acceleration, 10 means massive acceleration) public var topSpeed:Number // Determines the top speed of your bot (0 is low, 10 is high) public var turboPower:Number // Determines how effective turbo is (0 is low boost, 10 is large boost) public var fireRate:Number // Determines how many shots you can fire per 10 seconds //you can change these. use these to control your bot. public var turn:Number // a number from -1 to 1 that determines how much you are turning public var gas:Number // a number from 0 to 1 that determines how much you are accelerating public var shooting:Boolean // if true, you will shoot the next time you can public var shotAngle:Number // determines what angle you shoot towards (degrees) public var turbo:Boolean // if true, you are using turbo //declare any personel variables here: public var ang:Number public var xdist:Number public var ydist:Number public var xdist2:Number public var ydist2:Number public var xdist3:Number public var ydist3:Number public var xdist4:Number public var ydist4:Number public var dist:Number public var spd:Number public var spdsig:Number public var tmp:Number public var tmp2:Number public var tmp3:Number public var tmp4:Number public var tmp5:Number public var drift:Number public var tspd:Number public var cc:Number public var cc2:Number public var wt:Number public var spdl:Number public var ccsl:Number public var dl:Number public var ccdl:Number public var cca:Number public var cc2a:Number public var wtm:Number public var dsl:Number public var dltt:Boolean public var dltta:Number public var curNodeC:Number public var tx:Number public var ty:Number public var f:Number //rename this function to your bot's name as well public function claxor(){ //Set your attributes traction = 0 turning = 7 accel = 10 topSpeed = 8 turboPower = 0 fireRate = 0 botName = "Claxor" tspd=7; spdl=4; drift=0; cc=-14; ccdl=-10; dl=70; wt=70; wtm=35; cc2=10; ccsl=1.5; dsl=5; f=0; } public function onFrame(racers:Array,nodes:Array,bullets:Array){ f++ curNodeC=curNode; if(Math.abs(this.x-nodes[curNode][0])<25 && Math.abs(this.y-nodes[curNode][1])<25){ curNodeC=(curNode+1)%nodes.length; } trace(spd); if(nodes.length>2224){ tspd=7; spdl=1; drift=10; cc=-17; ccdl=-13; dl=120; wt=95; wtm=35; cc2=15; ccsl=1.5; dsl=6; curNodeC=curNode; if(Math.abs(this.x-nodes[curNode][0])<25 && Math.abs(this.y-nodes[curNode][1])<25){ curNodeC=(curNode+1)%nodes.length; } dltt=false; //this acts as your enter frame //the following code is just as a sample: turbo=false; gas = 1 xdist=nodes[curNodeC][0] - x; ydist=nodes[curNodeC][1] - y; xdist==0?xdist=.1:0; ydist==0?ydist=.1:0; dist=Math.sqrt(xdist*xdist+ydist*ydist); spd=Math.sqrt(xvel*xvel+yvel*yvel); tmp=curNodeC+1; if(tmp==nodes.length){ tmp=0; } tmp2=tmp3=tmp4=tmp5=0; nodes[curNodeC][0]>nodes[tmp][0]?tmp2=-1:nodes[curNodeC][0]nodes[tmp][1]?tmp3=-1:nodes[curNodeC][1]nodes[curNodeC-1][0]?tmp4=1:nodes[curNodeC][0]nodes[curNodeC-1][1]?tmp5=1:nodes[curNodeC][1]200-nitro||nitro>=500?turbo=true:0; spdsig=1/(1+Math.pow(2.7,spd)) if(dist<160){ gas=(tspd-spd); if(dltt){ gas=(dsl-spd); } gas>1?gas=1:gas<-1?gas=-1:0; } if(dist>190){ ang = Math.atan2(ydist4,xdist4) * 180/Math.PI } else if(dist>(wt+wtm*((spd)/10))/*&&spd>ccsl*/){ ang = Math.atan2(ydist3,xdist3) * 180/Math.PI } else if(dist>7*(spd)+4 || spd2){ if(tmp2){ tmp3=-drift*tmp5; } else { tmp2=-drift*tmp4; } } trace(tmp2+", "+tmp3); ang = Math.atan2(tmp3,tmp2) * 180/Math.PI } rot<0?tmp=360+rot%360:tmp=rot%360 ang<0?ang=ang+360:0 tmp-ang>180?tmp-=360:tmp-ang<-180?tmp+=360:0 turn=ang-tmp; turn*=1.5; turn>1?turn=1:turn<-1?turn=-1:0; } else { dltt=false; //this acts as your enter frame //the following code is just as a sample: turbo=false; gas = 1 xdist=nodes[curNodeC][0] - x; ydist=nodes[curNodeC][1] - y; xdist==0?xdist=.1:0; ydist==0?ydist=.1:0; dist=Math.sqrt(xdist*xdist+ydist*ydist); spd=Math.sqrt(xvel*xvel+yvel*yvel); tmp=curNodeC+1; if(tmp==nodes.length){ tmp=0; } if((nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])*(nodes[curNodeC][0]-nodes[(curNodeC+1)%nodes.length][0])+(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])*(nodes[curNodeC][1]-nodes[(curNodeC+1)%nodes.length][1])nodes[tmp][0]?tmp2=-1:nodes[curNodeC][0]nodes[tmp][1]?tmp3=-1:nodes[curNodeC][1]nodes[curNodeC-1][0]?tmp4=1:nodes[curNodeC][0]nodes[curNodeC-1][1]?tmp5=1:nodes[curNodeC][1]200-nitro||nitro>=500?turbo=true:0; spdsig=1/(1+Math.pow(2.7,spd)) if(dist<160){ gas=(tspd-spd); if(dltt){ gas=(dsl-spd); } gas>1?gas=1:gas<-1?gas=-1:0; } dltta=0; dltt?dltta=1:0; if(dist>190){ ang = Math.atan2(ydist4,xdist4) * 180/Math.PI tx=xdist4; ty=ydist4; } else if(dist>(wt+wtm*((spd)/10))/*&&spd>ccsl*/){ ang = Math.atan2(ydist3,xdist3) * 180/Math.PI tx=xdist3; ty=ydist3; } else if(dist>1.1*(spd*spd)+0*dltta || spd2){ if(tmp2){ tmp3=-drift*tmp5; } else { tmp2=-drift*tmp4; } } //trace(tmp2+", "+tmp3); ang = Math.atan2(tmp3,tmp2) * 180/Math.PI tx=tmp4*50; ty=tmp3*50; } rot<0?tmp=360+rot%360:tmp=rot%360 ang<0?ang=ang+360:0 tmp-ang>180?tmp-=360:tmp-ang<-180?tmp+=360:0 turn=ang-tmp; turn*=1.5; turn>1?turn=1:turn<-1?turn=-1:0; turbo=false; if((spd<10*((Math.min(nitro,180))/180)||nitro==500)&&gas==1){ turbo=true; } //turbo=false; dist>200-nitro||nitro>=500?turbo=true:0; /*this.clax.rotation=-this.rotation this.clax.targetp.x=tx; this.clax.targetp.y=ty;*/ shooting=false; if(f>30){ shooting=true; } shotAngle = Math.atan2(1,0)*180/Math.PI } } } }