Well here is my rediculous entry. I really wasted most of my time making an alphablended terrain of sorts. My first. please discount that in judging as it is not weather related.
REM Project: Weather challenge
REM Created: 2/10/2005 9:01:35 PM
REM By Coding Fodder
REM ***** Main Source File *****
REM
REM Not cleaned up yet Kinda trashy coding with cool results
sync on:sync rate 0
autocam off
fog on
position camera 2500,500,2500
global strike
global strike2
global counter
global counter2
x_size=5000
z_size=5000
x_tiles=100
z_tiles=100
seed=0
if seed=0 then seed=timer()
type matrix
x_grids as integer
z_grids as integer
grid_spacing as float
endtype
dim matrices(4) as matrix
create bitmap 1,16,16
make memblock from bitmap 1,1
for i=0 to 15
for j=0 to 15
read color
set_memblock_pixel(1,i,j,color)
next j
next i
make bitmap from memblock 1,1
delete memblock 1
get image 1,0,0,15,15
make matrix 1,5000,5000,100,100
position matrix 1,50,-10,50
for m=1 to 2
my_matrix(m,100,100,50)
Matrix_form_function(m,"seed "+str$(seed)+" sin 150 200 1,150 200 1 0 5 3,0 5 3 5 10 3,5 10 3 8 15 3,8 15 3 0 10 3,0 10 3 0 8 3,0 8 3 roughen 6 300 ",2,700)
set_matrix_normals(m)
if m=1
for i=1 to 100
for j=1 to 100
set_uv(m,i,j,(i-1)/10.0,(j-1)/10.0)
next j
next i
endif
make mesh from memblock m,m
change mesh m,0,m
texture object m,1
next m
`remstart
create bitmap 3,12,1
make memblock from bitmap 3,3
for i=0 to 11
read color
set_memblock_pixel(3,i,0,color)
next i
make bitmap from memblock 3,3
set current bitmap 0
lock pixels
for i=1 to 256
for j=1 to 256
x#=i*100.0/256.0*50.0
z#=j*100.0/256.0*50.0
h#=get ground height(1,x#,z#)
hmap=0
if h#>30.0 then hmap=1
if h#>70.0 then hmap=2
if h#>120.0 then hmap=3
if h#>170.0 then hmap=4
if h#>220.0 then hmap=5
if h#>270.0 then hmap=6
if h#>320.0 then hmap=7
if h#>370.0 then hmap=8
if h#>420.0 then hmap=9
if h#>470.0 then hmap=10
if h#>520.0 then hmap=11
color=get_memblock_pixel(3,hmap,0)
red=rgbr(color)
green=rgbg(color)
blue=rgbb(color)
red=red+rnd(20)-10
blue=blue+rnd(20)-10
green=green+rnd(20)-10
if red<0 then red=0
if green<0 then green=0
if blue<0 then blue=0
if red>255 then red=255
if green>255 then green=255
if blue>255 then blue=255
set_locked_pixel(256-i,256-j,rgb(red,green,blue))
next j
next i
delete memblock 3
delete bitmap 3
delete memblock 1
delete memblock 2
delete bitmap 1
unlock pixels
get image 2,0,0,255,255
texture object 2,2
set current bitmap 0
ghost object on 2
make object plain 3,5000,5000
xrotate object 3,-90
create bitmap 3,640,480
color=rgb(0,0,200)
box 0,0,640,480,color,color,color,color
get image 3,0,0,639,479
texture object 3,3
set object specular 3,rgb(0,0,200)
set object specular power 3,100
set current bitmap 0
ghost object on 3
position object 3,2500,0,2500
make object plain 4,640,480
position object 4,0,0,50
lock object on 4
color object 4,RGB(255,255,255)
ghost object on 4
`hide object 1
hide object 4
create bitmap 10,8,64
make memblock from bitmap 10,10
for j=0 to 63
for i=0 to 7
read color
set_memblock_pixel(10,i,j,color)
next i
next j
make bitmap from memblock 10,10
delete memblock 10
get image 10,0,0,7,63
sprite 1,0,0,10
set current bitmap 0
do
angle#=wrapvalue(angle#+0.5)
wave#=sin(angle#)*5
position object 3,2500,wave#,2500
text 1,1,str$(screen fps())+" "+str$(seed)
control camera using arrowkeys 0,3,2
position camera camera position x(),get ground height(1,camera position x(),camera position z())+50,camera position z()
if mouseclick()=1 then strike=1
if strike=1 then lightning()
sync
loop
function lightning()
if strike2=0
size sprite 1,mousey()/8,mousey()
show sprite 1
offset sprite 1,-mousex(),0
show object 4
inc counter2
if counter2=6
strike2=1
mirror sprite 1
inc counter
counter2=0
endif
else
inc counter2
hide object 4
hide sprite 1
if counter2=5
strike2=0
inc counter
counter2=0
endif
endif
if counter=10
strike2=0
hide object 4
counter=0
strike=0
endif
endfunction
function my_matrix(num,x_grids,z_grids,grid_spacing)
matrices(num).x_grids=x_grids
matrices(num).z_grids=z_grids
matrices(num).grid_spacing=grid_spacing
make memblock num,(6*x_grids*z_grids*32)+12
write memblock dword num,0,274
write memblock dword num,4,32
write memblock dword num,8,6*x_grids*z_grids
for i=1 to x_grids+1
for j=1 to z_grids+1
position_vert(num,i,j,i*grid_spacing,-10.0,j*grid_spacing)
num1#=(1+matrices(num).x_grids-i)
num2#=matrices(num).x_grids
num3#=(1+matrices(num).z_grids-j)
num4#=matrices(num).z_grids
set_uv(num,i,j,num1#/num2#,num3#/num4#)
set_normals(num,i,j,0,1,0)
next j
next i
make mesh from memblock num,num
make object num,num,1
endfunction
function set_normals(num,i,j,nx#,ny#,nz#)
x=6*matrices(num).x_grids
if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1
set_normal_x(num,1+(i-1)*6+x*(j-1),nx#)
set_normal_y(num,1+(i-1)*6+x*(j-1),ny#)
set_normal_z(num,1+(i-1)*6+x*(j-1),nz#)
set_normal_x(num,4+(i-1)*6+x*(j-1),nx#)
set_normal_y(num,4+(i-1)*6+x*(j-1),ny#)
set_normal_z(num,4+(i-1)*6+x*(j-1),nz#)
endif
if i>1 and j<matrices(num).z_grids+1
set_normal_x(num,6+(i-2)*6+x*(j-1),nx#)
set_normal_y(num,6+(i-2)*6+x*(j-1),ny#)
set_normal_z(num,6+(i-2)*6+x*(j-1),nz#)
endif
if i>1 and j>1
set_normal_x(num,3+(i-2)*6+x*(j-2),nx#)
set_normal_y(num,3+(i-2)*6+x*(j-2),ny#)
set_normal_z(num,3+(i-2)*6+x*(j-2),nz#)
set_normal_x(num,5+(i-2)*6+x*(j-2),nx#)
set_normal_y(num,5+(i-2)*6+x*(j-2),ny#)
set_normal_z(num,5+(i-2)*6+x*(j-2),nz#)
endif
if i<matrices(num).x_grids+1 and j>1
set_normal_x(num,2+(i-1)*6+x*(j-2),nx#)
set_normal_y(num,2+(i-1)*6+x*(j-2),ny#)
set_normal_z(num,2+(i-1)*6+x*(j-2),nz#)
endif
endfunction
function set_uv(num,i,j,u#,v#)
x=6*matrices(num).x_grids
if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1
set_U(num,1+(i-1)*6+x*(j-1),u#)
set_v(num,1+(i-1)*6+x*(j-1),v#)
set_u(num,4+(i-1)*6+x*(j-1),u#)
set_v(num,4+(i-1)*6+x*(j-1),v#)
endif
if i>1 and j<matrices(num).z_grids+1
set_u(num,6+(i-2)*6+x*(j-1),u#)
set_v(num,6+(i-2)*6+x*(j-1),v#)
endif
if i>1 and j>1
set_u(num,3+(i-2)*6+x*(j-2),u#)
set_v(num,3+(i-2)*6+x*(j-2),v#)
set_u(num,5+(i-2)*6+x*(j-2),u#)
set_v(num,5+(i-2)*6+x*(j-2),v#)
endif
if i<matrices(num).x_grids+1 and j>1
set_u(num,2+(i-1)*6+x*(j-2),u#)
set_v(num,2+(i-1)*6+x*(j-2),v#)
endif
endfunction
function position_vert(num,i,j,x#,y#,z#)
x=6*matrices(num).x_grids
if i<matrices(num).x_grids+1 and j<matrices(num).z_grids+1
set_vertex_x(num,1+(i-1)*6+x*(j-1),x#)
set_vertex_y(num,1+(i-1)*6+x*(j-1),y#)
set_vertex_z(num,1+(i-1)*6+x*(j-1),z#)
set_vertex_x(num,4+(i-1)*6+x*(j-1),x#)
set_vertex_y(num,4+(i-1)*6+x*(j-1),y#)
set_vertex_z(num,4+(i-1)*6+x*(j-1),z#)
endif
if i>1 and j<matrices(num).z_grids+1
set_vertex_x(num,6+(i-2)*6+x*(j-1),x#)
set_vertex_y(num,6+(i-2)*6+x*(j-1),y#)
set_vertex_z(num,6+(i-2)*6+x*(j-1),z#)
endif
if i>1 and j>1
set_vertex_x(num,3+(i-2)*6+x*(j-2),x#)
set_vertex_y(num,3+(i-2)*6+x*(j-2),y#)
set_vertex_z(num,3+(i-2)*6+x*(j-2),z#)
set_vertex_x(num,5+(i-2)*6+x*(j-2),x#)
set_vertex_y(num,5+(i-2)*6+x*(j-2),y#)
set_vertex_z(num,5+(i-2)*6+x*(j-2),z#)
endif
if i<matrices(num).x_grids+1 and j>1
set_vertex_x(num,2+(i-1)*6+x*(j-2),x#)
set_vertex_y(num,2+(i-1)*6+x*(j-2),y#)
set_vertex_z(num,2+(i-1)*6+x*(j-2),z#)
endif
endfunction
rem Accessor and mutator functions for vertex data
function Polygons(num)
polyg=memblock dword(num,8)/3
endfunction polyg
function get_vertex_x(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+12)
endfunction result#
function get_vertex_y(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+16)
endfunction result#
function get_vertex_z(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+20)
endfunction result#
function set_vertex_x(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+12,val#
endfunction
function set_vertex_y(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+16,val#
endfunction
function set_vertex_z(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+20,val#
endfunction
function get_normal_x(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+24)
endfunction result#
function get_normal_y(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+28)
endfunction result#
function get_normal_z(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+32)
endfunction result#
function set_normal_x(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+24,val#
endfunction
function set_normal_y(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+28,val#
endfunction
function set_normal_z(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+32,val#
endfunction
function get_U(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+36)
endfunction result#
function get_V(num,vertnum)
result#=memblock float(num,(vertnum-1)*32+40)
endfunction result#
function set_U(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+36,val#
endfunction
function set_V(num,vertnum,val#)
write memblock float num,(vertnum-1)*32+40,val#
endfunction
function Matrix_form_function(num,format$,scale#,offset#)
continue=1
width=matrices(num).x_grids
length=matrices(num).z_grids
dim sinarray1#(width/4)
dim sinarray2#(length/4)
dim cosarray1#(width/4)
dim cosarray2#(length/4)
dim radialcos#(40)
strlength=len(format$)
position=1
while continue=1
locate=next_command(format$,position)
command$=lower$(right$(Left$(format$,locate),locate-position+1))
position=locate+2
select command$
case "sin":funct$="sin":begin=0:wavenum=1:endcase
case "cos":funct$="cos":begin=0:wavenum=1:endcase
case "radialcos":funct$="rcos":begin=0:wavenum=1:endcase
case "rimwall":funct$="rwall":endcase
case "seed":randomize (val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1))):position=next_command(format$,position)+2:endcase
case "wn":wavenum=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase
case "ct":centerx=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2
centerz=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase
case " "::endcase
case ","::endcase
case "roughen":rough=1:roughstart=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2
roughamount=val(right$(left$(format$,next_command(format$,position)),next_command(format$,position)-position+1)):position=next_command(format$,position)+2:endcase
case ")"::endcase
case default:i=val(command$):inc begin:endcase
endselect
if begin>0
select funct$
case "sin"
select begin
case 1:min=i:endcase
case 2:max=i:endcase
case 3
select i
case 1:sinarray1#(wavenum)=scale#*(rnd(max-min)+max):endcase
case 2:sinarray1#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase
case 3:sinarray1#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase
endselect
endcase
case 4:min=i:endcase
case 5:max=i:endcase
case 6
select i
case 1:sinarray2#(wavenum)=scale#*(rnd(max-min)+max):endcase
case 2:sinarray2#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase
case 3:sinarray2#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase
endselect
inc wavenum
begin=0
endcase
endselect
endcase
case "cos"
select begin
case 1:min=i:endcase
case 2:max=i:endcase
case 3
select i
case 1:cosarray1#(wavenum)=scale#*(rnd(max-min)+max):endcase
case 2:cosarray1#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase
case 3:cosarray1#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase
endselect
endcase
case 4:min=i:endcase
case 5:max=i:endcase
case 6
select i
case 1:cosarray2#(wavenum)=scale#*(rnd(max-min)+max):endcase
case 2:cosarray2#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase
case 3:cosarray2#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase
endselect
inc wavenum
begin=0
endcase
endselect
endcase
case "rcos"
select begin
case 1:min=i:endcase
case 2:max=i:endcase
case 3
select i
case 1:radialcos#(wavenum)=scale#*(rnd(max-min)+max):endcase
case 2:radialcos#(wavenum)=scale#*(-1*(rnd(max-min)+max)):endcase
case 3:radialcos#(wavenum)=scale#*((-1)^(rnd(2))*(rnd(max-min)+max)):endcase
endselect
inc wavenum
begin=0
endcase
endselect
endcase
endselect
endif
if rough=1
scaling#=roughamount
for i=roughstart to width/4
sinarray1#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0
sinarray2#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0
cosarray1#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0
cosarray2#(i)= scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/700.0
radialcos#(i)=scaling#*scale#*(rnd(10))*((-1)^(rnd(2)))/200.0
scaling#=scaling#*0.94
next i
rough=0
endif
if position >= strlength then continue=0
endwhile
for i=0 to width
for j=0 to length
height#=0
for x=1 to width/4
height#=height#+(sinarray1#(x)*sin((x*i*180.0)/width))+(cosarray1#(x)*cos((x*i*180.0)/width))
next x
for y= 1 to length/4
height#=height#+(sinarray2#(y)*sin((y*j*180.0)/length))+(cosarray2#(y)*cos((y*j*180.0)/length))
next y
distance#=sqrt(((width/2)-i)^2+((length/2)-j)^2)
for x=1 to 40
height#=height#+(radialcos#(x)*cos((x*distance#*180/width)))
next x
position_vert(num,i+1,j+1,(i+1)*matrices(num).grid_spacing,height#-offset#,(j+1)*matrices(num).grid_spacing)
if num=1 then set matrix height 1,i,j,height#-offset#
next j
next i
make mesh from memblock num,num
change mesh num,0,num
if num=1 then update matrix 1
undim sinarray1#(0)
undim sinarray2#(0)
undim cosarray1#(0)
undim cosarray2#(0)
undim radialcos#(0)
endfunction
function next_command(format$,position)
found=0
length=len(format$)
locate=position
while found=0
if locate>length
found=1
else
if mid$(format$,locate)=" " or mid$(format$,locate)=","
found=1
endif
endif
inc locate
endwhile
locate=locate-2
endfunction locate
function set_matrix_normals(num)
r=make vector3(vector)
for i=2 to matrices(num).x_grids-1
for j=2 to matrices(num).z_grids-1
us#=((get_vertex_y(num,1+(i-2)*6+(j-1)*matrices(num).x_grids*6)-get_vertex_y(num,1+(i)*6+(j-1)*matrices(num).x_grids*6))/matrices(num).grid_spacing)
vs#=((get_vertex_y(num,1+(i-1)*6+(j-2)*matrices(num).x_grids*6)-get_vertex_y(num,1+(i-1)*6+(j)*matrices(num).x_grids*6))/matrices(num).grid_spacing)
set vector3 vector,us#,1,vs#
normalize vector3 norm,vector
set_normals(num,i,j,x vector3(norm),y vector3(norm),z vector3(norm))
next j
next i
make mesh from memblock num,num
change mesh num,0,num
endfunction
function set_memblock_pixel(memblock,x,y,color)
width=memblock dword(memblock,0)
height=memblock dword(memblock,4)
depth=memblock dword(memblock,8)
if x>-1 and y>-1 and x<width and y<height
pointer=y*width*depth/8+x*depth/8+12
write memblock dword memblock,pointer,color
endif
endfunction
function get_memblock_pixel(memblock,x,y)
width=memblock dword(memblock,0)
height=memblock dword(memblock,4)
depth=memblock dword(memblock,8)
if x>-1 and y>-1 and x<width and y<height
pointer=y*width*depth/8+x*depth/8+12
value=memblock dword(memblock,pointer)
endif
endfunction value
function set_locked_pixel(x,y,color_value)
start=get pixels pointer()
repeat_number=get pixels pitch()
bits_per_pixel=bitmap depth(num)/8
pointer=start+y*repeat_number+x*bits_per_pixel
*pointer=color_value
endfunction
DATA -16777216,-16316665,-15527149,-15922164,-16316410,-15658222,-14869218,-15396076,-16382713,-16776959,-16776960,-16777215,-16645886,-16777215,-16776960,-16777216
DATA -16777216,-15592942,-9474193,-14869476,-16513531,-15987187,-15592684,-15659761,-15793144,-16383486,-16711680,-16777216,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16119286,-15000804,-15527149,-16316665,-16316664,-16382202,-15530744,-9501146,-15203318,-16579837,-16645629,-16710911,-16711167,-16711423,-16777216
DATA -16777215,-16711680,-16579836,-15987444,-15395307,-15461358,-15988213,-15792631,-14612719,-15135470,-15593454,-15856628,-15724016,-15395564,-16119799,-16711422
DATA -16382970,-16645887,-16448251,-15264234,-14013910,-14014167,-15001318,-15856114,-15922161,-15198440,-14606560,-15263722,-14606048,-12303294,-14869987,-15725551
DATA -15988467,-16645375,-16579579,-15395563,-14013654,-13421773,-14146010,-15263977,-15593454,-15132648,-14868963,-15198186,-15066855,-14803683,-14476254,-13557455
DATA -16185847,-16645886,-16514045,-15987187,-14934755,-14014166,-14146009,-15001062,-15592428,-15198182,-14803426,-15198185,-15855857,-16053749,-15594223,-15397356
DATA -16382461,-15790077,-15856380,-16053237,-15658220,-15066596,-15001061,-15461355,-15592939,-14803682,-13882582,-14343132,-15527149,-16251129,-16448507,-16514301
DATA -15395833,-13290744,-14935290,-15987702,-15790061,-15790318,-15921905,-15987444,-15658735,-14737632,-13685202,-13553616,-14935269,-15987444,-16316921,-16513787
DATA -14474726,-14211824,-15198711,-16185336,-16119542,-15987956,-15987957,-15790578,-15066854,-14211290,-14145238,-14408923,-14671585,-15066598,-15658478,-15526892
DATA -12960711,-15198444,-16250616,-16514044,-16447482,-15790065,-15000805,-15000548,-14211545,-12566977,-13817043,-15198441,-14737890,-14079446,-15197927,-14605791
DATA -15263721,-16053492,-16316921,-16579323,-16447481,-15592686,-14145755,-14606048,-14408411,-12829381,-14013911,-15329513,-15263974,-14935264,-15592938,-15592430
DATA -16711166,-16711424,-14606046,-15461613,-16185079,-15856114,-15395307,-15395308,-15330027,-14803684,-14540253,-14211546,-13948625,-15455823,-15394523,-16381945
DATA -16777216,-16777215,-10921639,-14606304,-16053493,-16250873,-16184566,-16119543,-16119800,-15922162,-15066341,-13356236,-12500923,-12170916,-14539472,-16382201
DATA -16777216,-16777216,-14145753,-15329769,-16185079,-16250616,-16184565,-16250872,-16448508,-16382714,-15921907,-14935013,-13290443,-11711155,-14606047,-16448251
DATA -16777216,-16777216,-16316923,-16382714,-16316666,-15855857,-15461099,-15724784,-16448251,-16580605,-16579838,-16316666,-15724270,-15197928,-15987444,-16645887
DATA -536462,-7679992,-15684847,-15690223,-9395701,-9402101,-8164061,-8171997,-8095918,-6645352,-3947582,-1381913
DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-1835773,-1835773,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-197381,-16777216,-1835773,-16777216,-1835773,-1835773
DATA -16777216,-16777216,-197381,-16777216,-1835773,-197381,-1835773,-16777216
DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-1835773,-16777216
DATA -16777216,-16777216,-1835773,-16777216,-16777216,-1835773,-1835773,-16777216
DATA -16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-1835773,-16777216
DATA -16777216,-16777216,-197381,-1835773,-16777216,-16777216,-1835773,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-197381,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-197381,-1835773,-1835773,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-197381,-1835773,-16777216,-197381,-16777216,-16777216
DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-16777216,-16777216
DATA -16777216,-16777216,-197381,-16777216,-16777216,-197381,-16777216,-16777216
DATA -16777216,-197381,-197381,-16777216,-16777216,-197381,-16777216,-16777216
DATA -16777216,-1835773,-16777216,-16777216,-16777216,-197381,-16777216,-16777216
DATA -16777216,-1835773,-16777216,-16777216,-16777216,-197381,-16777216,-16777216
DATA -1835773,-1835773,-16777216,-16777216,-16777216,-197381,-1835773,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-197381,-1835773,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-1835773,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216
DATA -16777216,-16777216,-16777216,-1835773,-1835773,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-1835773,-1835773,-16777216,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-197381,-197381,-16777216,-1835773,-16777216,-16777216
DATA -16777216,-16777216,-197381,-197381,-16777216,-1835773,-1835773,-16777216
DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-1835773,-16777216
DATA -16777216,-16777216,-197381,-197381,-16777216,-16777216,-1835773,-1835773
DATA -16777216,-1835773,-1835773,-1835773,-1835773,-16777216,-16777216,-1835773
DATA -16777216,-1835773,-16777216,-16777216,-1835773,-16777216,-16777216,-16777216
DATA -1835773,-1835773,-16777216,-1835773,-1835773,-16777216,-16777216,-16777216
DATA -1835773,-16777216,-16777216,-197381,-197381,-16777216,-16777216,-16777216
Just walk around with the arrow keys playing god with the lightning. If someone can get the sprite to scale with distance that would be tremendous.
[edit] oops call down your lightnings with the mouse.
Something really catchy that makes people stop and think about the meaning of life and say to themselves "My but thats clever"