I think I stayed within the 25 lines of code per line rule.
O well.
plyr=1 : ene=2 : dist=3 : null=make vector3(plyr) : null=make vector3(ene) : null=make vector3(dist) : randomize timer() : set camera range 100,200000 : ink rgb(30,255,60),0 : box 0,0,256,256 : for i=1 to 1000 : for c=1 to 4 : ink rgb(3*c,25*c,6*c),0 : dot rnd(256),rnd(256) : next c : next i : get image 1,0,0,256,256 : cls : create bitmap 1,256,256 : paste image 1,0,0 : blur bitmap 1,6 : get image 1,0,0,256,256 : set current bitmap 0 : delete bitmap 1 : cls
for ix=0 to screen width() : for iy=0 to screen height() : dot ix,iy,rgb(0,20,sin(iy/2)*255) : next iy : next ix : get image 2,0,0,screen width(),screen height() : cls : ink 0,0 : box 0,0,256,256 : ink -1,0 : box 0,120,256,136 : box 120,0,136,256 : get image 3,0,0,256,256 : cls : hide mouse : sync on : make object sphere 1,100 : scale object 1,30,30,100 : make object cone 2,100 : scale object 2,30,80,60 : make mesh from object 1,2 : delete object 2 : add limb 1,1,1 : offset limb 1,1,0,50,-30 : rotate limb 1,1,-20,0,0
make object cone 2,100 : scale object 2,20,100,20 : make mesh from object 2,2 : delete object 2 : add limb 1,2,2 : offset limb 1,2,70,0,-30 : rotate limb 1,2,-50,0,-90 : add limb 1,3,2 : offset limb 1,3,-70,0,-30 : rotate limb 1,3,-50,0,90 : make object cone 2,100 : scale object 2,60,60,60 : make mesh from object 3,2 : delete object 2 : add limb 1,4,3 : offset limb 1,4,0,0,68 : rotate limb 1,4,90,0,0 : color object 1,rgb(0,255,0) : set object emissive 1,rgb(0,0,255) : make object sphere 3,100 : scale object 3,30,250,120 : make mesh from object 4,3 : delete object 3
for e=61 to 80 : make object sphere e,100 : scale object e,100,10,100 : add limb e,1,4 : offset limb e,1,-50,0,0 : add limb e,2,4 : offset limb e,2,50,0,0 : color object e,rgb(0,0,255) : set object emissive e,rgb(255,0,0) : position object e,rnd(40000)-20000+object position x(1),20000,rnd(40000)-20000+object position z(1) : next e : make matrix 1,1000000,1000000,50,50 : randomize matrix 1,20000 : prepare matrix texture 1,1,1,1 : update matrix 1 : acc#=15 : roll#=0 : position object 1,500000,20000,500000 : fog on : fog distance 30000 : make object sphere 2,200000 : set object 2,1,0,0,0,0,0 : texture object 2,2 : make object plain 3,20,20
texture object 3,3 : set object transparency 3,1 : bullet=4 : for b=4 to 60 : make object sphere b,10 : next b : make object cone 81,100 : scale object 81,60,500,10 : ghost object on 81 : color object 81,rgb(255,0,0) : xrotate object 81,80 : fix object pivot 81 : make object plain 82,30,30 : texture object 82,3 : set object transparency 82,1 : killed=0 : health=400 : for eb=100 to 200 : make object sphere eb,10 : next eb : enemybullet=100 : dim eshoot(20) as integer : s=1
do : dec s : text 1,1,"Health: "+str$(health) : text 1,15,"Enemies Killed: "+str$(killed) : text 1,30,"Speed: "+str$(int(acc#*3))+"mph" : if s=0 then sync : s=3
if dead=0 : rotate object 1,ax#,ay#,az# : set camera to follow object position x(1),object position y(1),object position z(1),object angle y(1)+roll#,300,50,1,0 : move object 1,acc# : mmx#=mousemovex() : rotate object 1,object angle x(1)+mousemovey()/5,object angle y(1)+mmx#/10,object angle z(1) : if object angle x(1)>90 then xrotate object 1,90 else if object angle x(1)<-90 then xrotate object 1,-90
move#=upkey()-downkey() : move#=move#/10 : acc#=acc#+move# : if acc#<15 then acc#=15 else if acc#>60 : acc#=60 : endif : if object position y(1)<get ground height (1,object position x(1),object position z(1)) then make particles 1,1000,1000,300 : color particles 1,255,0,0 : position particles 1,object position x(1),object position y(1),object position z(1) : dead=1
if mmx#<>0 then roll#=roll#+mmx#/10 else if mmx#=0 and abs(roll#)<0.2 then roll#=0 else if roll#>0 then dec roll#,0.2 else if roll#<0 then inc roll#,0.2
if roll#>60 then roll#=60 else if roll#<-60 : roll#=-60 : endif : ax#=object angle x(1) : ay#=object angle y(1) : az#=object angle z(1) : roll object right 1,roll# : position object 2,object position x(1),object position y(1),object position z(1) : position object 3,object position x(1),object position y(1),object position z(1) : position object 81,object position x(1),object position y(1),object position z(1) : position object 82,object position x(1),object position y(1),object position z(1) : rotate object 3,object angle x(1),object angle y(1),object angle z(1) : rotate object 81,object angle x(1),object angle y(1),object angle z(1) : rotate object 82,object angle x(1),object angle y(1),object angle z(1) : move object 3,200 : move object down 81,40 : move object 81,-250 : color object 81,rgb((acc#-15)*5,0,0) : move object 82,300 : if mouseclick()=1 and shoot=0 then position object bullet,object position x(1),object position y(1),object position z(1) : rotate object bullet,object angle x(1),object angle y(1),object angle z(1) : inc bullet : shoot=10 : if bullet>60 then bullet=4
for tb=4 to 60 : if object exist(tb)=1 : move object tb,100 : for te=61 to 80 : if object collision (tb,te)=1 then position object te,rnd(40000)-20000+object position x(1),20000,rnd(40000)-20000+object position z(1) : inc killed
next te : endif : next tb : set vector3 plyr,object position x(1),object position y(1),object position z(1) : if shoot>0 then dec shoot
for e=61 to 80 : set vector3 ene,object position x(e),object position y(e),object position z(e) : subtract vector3 dist,plyr,ene : distance#=length vector3(dist) : if distance#>8000 : rotate object e,object angle x(e)+rnd(2)-1,object angle y(e)+rnd(2)-1,object angle z(e) : if object angle x(e)<-90 then xrotate object e,-90 else if object angle x(e)>90 then xrotate object e,90
else : point object e,object position x(1),object position y(1),object position z(1) : if eshoot(e-60)=0 then eshoot(e-60)=500 : position object enemybullet,object position x(e),object position y(e),object position z(e) : rotate object enemybullet,object angle x(e)+rnd(4)-2,object angle y(e)+rnd(4)-2,object angle z(e) : inc enemybullet : if enemybullet>200 then enemybullet=100
endif : if distance#>200 then move object e,15 else move object e,10
if object position y(e)<get ground height (1,object position x(e),object position z(e)) or distance#>20000 then position object e,rnd(40000)-20000+object position x(1),20000,rnd(40000)-20000+object position z(1)
for i=1 to 20 : if eshoot(i)>0 : eshoot(i)=eshoot(i)-1 : endif : next i : for teb=100 to 200 : move object teb,100 : if object collision (teb,1)=1 then dec health : position object teb,0,0,0
next teb : if health<=0 and particles exist(1)=0 then make particles 1,1000,1000,300 : color particles 1,255,0,0 : position particles 1,object position x(1),object position y(1),object position z(1) : dead=1
next e : else position camera object position x(1),object position y(1),object position z(1) : rotate camera sin(timer()/10)*80,camera angle y()+0.5,0 : move camera -500 : if camera position y()<get ground height (1,camera position x(),camera position z())+120 then position camera camera position x(),get ground height (1,camera position x(),camera position z())+120,camera position z() : point camera object position x(1),object position y(1),object position z(1)
endif : loop
Controls:
Mouse movement turns plane
Mouseclick will shoot
Up/Downkey changes speed
Insanity is just a state of mind