Ok here is my final entry.
REM Project: Space Invaders
REM Created: 7/11/2006 10:41:16 AM
REM
REM ***** Main Source File *****
REM
createsound("explosion",1,100,1000,8000,0.01,0,0,0,0,0,10)
createsound("opening1",2,400,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening2",3,350,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening3",4,300,2000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening4",5,350,1500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening5",6,375,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening6",7,256,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening6",8,256,4000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening7",9,213,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("opening9",10,150,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("shot",16,100,100,8000,0,1.5,0,0,0,0,10)
createsound("enemy,explosion",17,500,500,8000,0,0,0.05,0.4,0.5,1800,10)
createsound("move",18,256,100,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("down",19,235,100,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("ending 1",20,128,1000,8000,0,0,0,0,0,0,10)
createsound("ending 2",21,118,1000,4000,0,0,0,0,0,0,10)
createsound("ending 3",22,98,6000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen1",23,293.67,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen2",24,440,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen3",25,349.23,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen4",26,392,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen5",27,329.63,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen6",28,261.6,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen7",29,220,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen8",30,146.83,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen9",31,493.88,500,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen10",32,146.83,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen11",33,329.63,1000,4000,0,0,0.05,0.3,0.05,1800,10)
createsound("titlescreen12",34,493.88,1000,4000,0,0,0.05,0.3,0.05,1800,10)
dim dotx(300)
dim doty(300)
dim shots(2)
global finnalnote=1
make camera 1
dim l(8)
dim fire(4)
dim score#(2)
dim score(2)
dim ri(2)
sync on
move camera 1,-30
make object box 50,1,1,1
make mesh from object 1,50
for i=1 to 26
add limb 50,i,1
next i
lim=0
restore topalien
for y=1 to 7
for x=1 to 7
if y=7 and x=3 then l(1)=lim
if y=7 and x=5 then l(2)=lim
read r
if x=4 and y=4 then goto skip1
if r=1
offset limb 50,lim,4-x,4-y,0
lim=lim+1
endif
skip1:
next x
next y
scale object 50,100/7,100/7,100/7
make mesh from object 2,50
make object box 51,1,1,1
lim=0
for i=1 to 22
add limb 51,i,1
next i
restore twoalien
for y=1 to 7
for x=1 to 9
if y=5 and x=1 then l(3)=lim
if y=5 and x=7 then l(4)=lim
read r
if x=5 and y=4 then goto skip2
if r=1
offset limb 51,lim,5-x,4-y,0
lim=lim+1
endif
skip2:
next x
next y
scale object 51,100/9,100/7,100/7
make mesh from object 3,51
position object 51,500,0,0
make object box 52,1,1,1
lim=0
for i=1 to 33
add limb 52,i,1
next i
restore threealien
for y=1 to 9
for x=1 to 7
if y=9 and x=1 then l(5)=lim
if y=9 and x=7 then l(6)=lim
read r
if x=4 and y=5 then goto skip3
if r=1
offset limb 52,lim,4-x,5-y,0
lim=lim+1
endif
skip3:
next x
next y
scale object 52,100/7,100/8,100/7
make mesh from object 4,52
position object 52,500,0,0
make object box 53,1,1,1
lim=0
for i=1 to 23
add limb 53,i,1
next i
restore fouralien
for y=1 to 7
for x=1 to 7
if y=7 and x=3 then l(7)=lim
if y=7 and x=5 then l(8)=lim
read r
if x=4 and y=4 then goto skip4
if r=1
offset limb 53,lim,4-x,4-y,0
lim=lim+1
endif
skip4:
next x
next y
scale object 53,100/7,100/7,100/7
make mesh from object 5,53
position object 53,500,0,0
color backdrop 1,0
make object cone 60,5
color object 60,rgb(0,0,75)
make object cone 61,1
move object up 61,2.05
color object 61,0
set ambient light 1
move object down 50,5
color object 50,69458459
p=-1
s=2
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
s=2
thru=thru+1
endif
play sound s
s=s+1
endif
if mouseclick()=1 then goto game
a$="The aliens were looking for a place to expand, more land, more resources."
b$="One of the reconnaissance ships found somthing amazing..."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
wait 1
tic=tic+1
if tic=400 then goto part1
sync
loop
do
part1:
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
s=2
thru=thru+1
endif
play sound s
s=s+1
endif
a$="Sjxcigonsj fjxidl ixnweisj."
b$="Translation: Turn on those headlights its dark out here."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object right 50,0.125
wait 50
right=right+1
if right>80 then goto shipleft
sync
loop
shipleft:
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
s=2
thru=thru+1
endif
play sound s
s=s+1
endif
if mouseclick()=1 then goto game
a$="Sjxcigonsj fjxidl ixnweisj."
b$="Translation: Turn on those headlights its dark out here."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object left 50,0.125
wait 50
right=right+1
if right>160 then goto suckup1
sync
loop
suckup1:
set ambient light 50
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
s=2
thru=thru+1
endif
play sound s
s=s+1
endif
if thru=2
if sound playing(2)=0 and sound playing(6)=0 and p=-1
play sound 7
p=0
endif
if sound playing(7)=0 and p=0
play sound 9
p=1
endif
if sound playing(9)=0 and p=1
play sound 7
p=2
endif
if sound playing(7)=0 and p=2
play sound 9
p=3
endif
if sound playing(9)=0 and p=3
play sound 10
p=4
endif
if sound playing(10)=0 and p=4
play sound 9
p=5
endif
if sound playing(9)=0 and p=5
play sound 7
p=6
endif
endif
if mouseclick()=1 then goto game
a$="Axidksnlsinenshad!!!"
b$="Translation: IT'S A WORMHOLE. GET OUT OF HERE!"
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
move object up 50,0.06
wait 50
right=right+1
if right>250 then goto suckup2
sync
loop
suckup2:
make light 1
position light 1,0,0,250
point light 1,0,20,400
delete object 60
delete object 61
make object sphere 60,5
set ambient light 1
color object 60,rgb(0,0,100)
make object sphere 61,100
move object 61,400
move object up 61,40
color object 61,rgb(200,200,0)
do
if sound playing(s-1)=0 and s<8 and thru<2
if s=7 and sound playing(6)=0
s=2
thru=thru+1
endif
play sound s
s=s+1
endif
if thru=2
if sound playing(2)=0 and sound playing(6)=0 and p=-1
play sound 7
p=0
endif
if sound playing(7)=0 and p=0
play sound 9
p=1
endif
if sound playing(9)=0 and p=1
play sound 7
p=2
endif
if sound playing(7)=0 and p=2
play sound 9
p=3
endif
if sound playing(9)=0 and p=3
play sound 10
p=4
endif
if sound playing(10)=0 and p=4
play sound 9
p=5
endif
if sound playing(9)=0 and p=5
play sound 8
p=6
endif
endif
if mouseclick()=1 then goto game
a$="Dskxoien skdinklll ixelkshen."
b$="Translation: Contact our mothership. "
c$="We've found our new home."
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
text screen width()/2-text width(c$)/2,screen height()-text height(a$)*1,c$
wait 50
right=right+1
if right>400 then goto game
sync
loop
sw=1
p=-1
game:
for i=2 to 6
if sound playing(i)=1 then stop sound i
next i
if light exist(1)=1 then delete light 1
if object exist(61)=1 then delete object 61
if object exist(60)=1 then delete object 60
position object 50,0,-8,0
sync
move camera 1,-10
make light 5
make light 6
position light 5,0,0,30
position light 6,0,0,-30
point light 5,0,0,0
point light 6,0,0,0
make object box 57,1,1,1
make mesh from object 1,57
lim=0
for i=1 to 32
add limb 57,i,1
next i
scale object 57,100/2,100/2,100
position object 57,0,16,0
color object 57,rgb(0,0,150)
restore the
for y=1 to 5
for x=1 to 15
read r
if x=7 and y=3 then goto skip7
if r=1
offset limb 57,lim,x-7,3-y,0
lim=lim+1
endif
skip7:
next x
wait 100
sync
next y
make object box 58,1,1,1
lim=0
for i=1 to 82
add limb 58,i,1
next i
scale object 58,100/2,100/2,100
position object 58,11,3,0
color object 58,rgb(100,0,0)
restore renewed
for y=1 to 5
for x=1 to 35
read r
if x=18 and y=3 then goto skip8
if r=1
offset limb 58,lim,x-18,3-y,0
lim=lim+1
endif
skip8:
next x
wait 100
sync
next y
make object box 59,1,1,1
lim=0
for i=1 to 51
add limb 59,i,1
next i
scale object 59,100/2,100/2,100
position object 59,-16,0,0
color object 59,rgb(0,0,150)
restore space
for y=1 to 5
for x=1 to 23
read r
if x=12 and y=3 then goto skip9
if r=1
offset limb 59,lim,x-23,3-y,0
lim=lim+1
endif
skip9:
next x
wait 100
sync
next y
make object 600,2,0
lim=0
for i=1 to 90
add limb 600,i,2
color object 600,rgb(0,0,150)
next i
position object 600,7,-10,0
scale object 600,100/2,100/2,100
restore invaders
for y=1 to 5
for x=1 to 43
read r
if x=22 and y=3 then goto skip10
if r=1
offset limb 600,lim,x-22,3-y,0
lim=lim+1
endif
skip10:
next x
wait 100
sync
next y
change#=1
dif=1
a=1
life=3
dim button1(100)
set text size 40
set text font "Arial"
randomize timer()
d$="Created by Spopovich"
e$="Press the space key to continue."
ink rgb(100,0,100),rgb(100,0,100)
for i=1 to 300
dotx(i)=rnd(screen width())
doty(i)=rnd(screen height())
next i
ink rgb(255,255,255),rgb(255,255,255)
move camera -5
global p1=-1
global pa=0
for i=1 to 40
if spacekey()=1 then goto outofsound
move object down 57,0.25
move object left 58,0.25
move object right 59,0.25
move object up 600,0.25
wait 50
sync
for j=1 to 300
dot dotx(j),doty(j)
next j
next i
do
position camera 1,0,0,0
turn camera right 1,3
move camera 1,-35
text screen width()/2-text width(d$)/2,screen height()/2+text height(d$)*3,d$
text screen width()/2-text width(e$)/2,screen height()/2+text height(e$)*4,e$
if color=0
color object 57,rgb(0,0,150)
color object 58,rgb(100,0,0)
color object 59,rgb(0,0,150)
color object 600,rgb(0,0,150)
color=1
goto pastcolor
endif
color=color+1
if color=3
color object 57,rgb(100,0,0)
color object 58,rgb(0,0,150)
color object 59,rgb(100,0,0)
color object 600,rgb(100,0,0)
color=0
endif
pastcolor:
song(0,1,10,23,24,25,26,33,23,24,25,26,33)
song(1,2,10,23,27,25,26,33,23,26,24,28,34)
song(2,0,6,23,25,26,23,29,32,0,0,0,0)
wait 100
ink rgb(255,255,255),rgb(255,255,255)
for i=1 to 300
dot dotx(i),doty(i)
next i
ink rgb(100,0,100),rgb(100,0,100)
sync
if spacekey()=1 then goto outofsound
loop
outofsound:
delete camera 1
delete object 600
delete object 57
delete object 58
delete object 59
set text size 20
position object 50,500,0,0
color backdrop 0
sync
ink rgb(255,255,255),rgb(255,255,255)
global m=1
global p=1
delete light 5
delete light 6
butoncheck:
song(0,1,10,23,24,25,26,33,23,24,25,26,33)
song(1,2,10,23,27,25,26,33,23,26,24,28,34)
song(2,0,6,23,25,26,23,29,32,0,0,0,0)
button("Play",20,1,1)
button("Version",20,81,2)
button("Difficulty",20,162,3)
button("Controlls",20,243,4)
button("Players",20,324,5)
if p=2 then button("co-op or duel",20,405,6)
a$="version "+str$(a)
b$="difficulty "+str$(dif)
c$="players "+str$(p)
if m=1 then d$="co-op"
if m=2 then d$="duel"
text 0,0,a$
if p=2 then text text width(a$)+10,0,d$
text screen width()-text width(b$),0,b$
text screen width()-text width(b$)-10-text width(c$),0,c$
sync
goto butoncheck
play2:
cls
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
set ambient light 50
level#=1
lim=0
make object box 100,1,1,1
make mesh from object 1,100
for i=1 to 23
add limb 100,i,1
next i
restore ship
for y=1 to 7
for x=1 to 7
read r
if x=4 and y=3 then goto skip
if r=1
offset limb 100,lim,4-x,3-y,0
lim=lim+1
endif
skip:
next x
next y
scale object 100,100/7,100/3,100/7
make mesh from object 9,100
make camera 1
color backdrop 1,0
set camera range 1,100000
restore ship
for y=1 to 7
for x=1 to 7
read r
if r=1
if x=4 and y=2 then ink rgb(150,0,0),rgb(150,0,0)
if x=3 and y=3 then ink rgb(0,0,150),rgb(0,0,150)
if x=1 and y=6 then ink rgb(255,255,255),rgb(255,255,255)
if x=4 and y=6 then ink rgb(0,0,150),rgb(0,0,150)
if x=7 and y=6 then ink rgb(255,255,255),rgb(255,255,255)
if x=1 and y=7 then ink rgb(0,0,150),rgb(0,0,150)
box x*3,y*6,(x+1)*3,(y+1)*6
endif
next x
next y
get image 1,0,0,30,60
cls
ink rgb(255,255,255),rgb(255,255,255)
line 20,0,20,40
line 0,20,40,20
get image 3,0,0,40,40
cls
if a=1
for i=1000 to 1300
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)-1250,rnd(1000)+1000
next i
endif
if a=2 and m=1
for i=1000 to 1300
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)+1000,rnd(2000)-1000
next i
endif
if a=2 and m=2
for i=1000 to 1150
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,rnd(2500)+1000,rnd(2000)-1000
next i
for i=1151 to 3000
a$="Loading..."
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
make object sphere i,5
position object i,rnd(4000)-2000,-1*rnd(2500)-1000,rnd(2000)-1000
next i
endif
move camera 1,-30
move object down 100,12
color limb 100,0,rgb(150,0,0)
color limb 100,14,rgb(0,0,150)
for i=1 to 12
color limb 100,i,rgb(0,0,150)
next i
for i=16 to 23
color limb 100,i,rgb(0,0,150)
next i
move=1
randomize timer()
make light 1
position light 1,object position x(100),object position y(100)+1,object position z(100)
point light 1,0,15,0
if a=2
position camera 1,object position x(100),object position y(100),object position z(100)-1
pitch camera up 1,90
endif
for i=60 to 67
make object sphere i,.2
position object i,500,0,0
if a=1 then pitch object up i, 90
turn object right i,(i-60)*45
color object i,rgb(100,0,0)
next i
if p=2
clone object 98,100
color limb 98,0,rgb(0,0,150)
color limb 98,14,rgb(150,0,0)
for i=1 to 12
color limb 98,i,rgb(150,0,0)
next i
for i=16 to 23
color limb 98,i,rgb(150,0,0)
next i
endif
sprite 4,0,0,3
if a=2 and p=2
sprite 2,screen width()/2-sprite width(4)/2,screen height()/4+sprite height(4)/2,3
sprite 3,screen width()/2-sprite width(4)/2,screen height()/4*3+sprite height(4)/2,3
endif
delete sprite 4
if m=2 then goto duel
for i=1 to 10
clone object i,50
color object i,rgb(200,0,185)
position object i,1.5*i-8,15-1,0
if a=2 then pitch object up i,90
fix object pivot i
next i
for i=11 to 20
clone object i,51
color object i,5869458459
position object i,1.5*i-23,15-1-2,0
if a=2 then pitch object up i,90
fix object pivot i
next i
for i=21 to 30
clone object i,52
color object i,69458459
position object i,1.5*i-38,15-1-4,0
if a=2 then pitch object up i,90
fix object pivot i
next i
for i=31 to 40
clone object i,53
color object i,948459
position object i,1.5*i-53,15-1-6,0
if a=2 then pitch object up i,90
fix object pivot i
next i
sprite 4,0,0,3
if a=2 and p=1 then sprite 2,screen width()/2-sprite width(4)/2,screen height()/2+5,3
if a=2 and p=2
sprite 2,screen width()/2-sprite width(4)/2,screen height()/4,3
sprite 3,screen width()/2-sprite width(4)/2,screen height()/4*3,3
make camera 2
set camera view 1,0,0,screen width(),screen height()/2
set camera view 2,0,screen height()/2,screen width(),screen height()
color backdrop 2,0
pitch camera up 2,90
position camera 2,object position x(98),object position y(98),object position z(98)-1
endif
delete sprite 4
level:
if level#<16 then change#=level#
for i=1 to 10
position object i,1.5*i-8,15-1,0
show object i
next i
for i=11 to 20
position object i,1.5*i-23,15-1-2,0
show object i
next i
for i=21 to 30
position object i,1.5*i-38,15-1-4,0
show object i
next i
for i=31 to 40
position object i,1.5*i-53,15-1-6,0
show object i
next i
for i=201 to 204
if object exist(i)=0
make object box i,1,1,1
endif
next i
position object 201,-8.5,-9.5,0
position object 202,-7.5,-9.5,0
position object 203,-8.5,-10.5,0
position object 204,-7.5,-10.5,0
for i=205 to 208
if object exist(i)=0
make object box i,1,1,1
endif
next i
position object 205,-0.5,-9.5,0
position object 206,0.5,-9.5,0
position object 207,-0.5,-10.5,0
position object 208,0.5,-10.5,0
for i=209 to 212
if object exist(i)=0
make object box i,1,1,1
endif
next i
position object 209,8.5,-9.5,0
position object 210,7.5,-9.5,0
position object 211,8.5,-10.5,0
position object 212,7.5,-10.5,0
secret=rnd(39)+1
freezetime=400
four=0
down=0
sync
set text size 40
a$="Ready"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
wait 1000
a$="GO!"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
set text size 20
wait 1000
ai#=0
sprite 1,0,0,1
do
ti=timer()
set text size 30
level$="level "+str$(Change#)
lives$=str$(life)+"X "
text 0,0,"player 1 score "+str$(score(1))
if p=2 then text 0,text height(lives$),"player 2 score "+str$(score(2))
text screen width()/2-text width(level$)/2,0,level$
text screen width()-text width(lives$),15,lives$
freeze$="Time is frozen for two seconds!"
if freeze>1 then text screen width()/2-text width(freeze$),screen width()/2-text height(freeze$),freeze$
if p=2
ship=2
if keystate(30)=1 then gosub left
if keystate(32)=1 then gosub right
if keystate(31)=1 then gosub fire
endif
ship=0
if rightkey()=1 then gosub right
if leftkey()=1 then gosub left
if spacekey()=1 then gosub fire
if returnkey()=1 and controlkey()=1 then goto screenshot
gosub hit
if death>0
death=death-1
for i=60 to 67
move object i,0.025
if death=0
if moveo>0
if object exist (moveo)=1 then hide object moveo
position object i,500,0,0
endif
endif
next i
if moveo>0
if object exist (moveo)=1 then move object moveo,-0.25
endif
endif
if fire(0)>0 and object exist(101)=1 then move object up 101,01
if fire(0)=1 then delete object 101
if fire(0)>0 then fire(0)=fire(0)-1
if fire(0)<5
ticker1=0
tickaway1=0
endif
if fire2>0 and object exist(102)=1 then move object down 102,01
if fire2=1 then delete object 102
if fire2>0 then fire2=fire2-1
if fire3>0 and object exist(103)=1 then move object down 103,01
if fire3=1 then delete object 103
if fire3>0 then fire3=fire3-1
if fire4>0 and object exist(104)=1 then move object down 104,01
if fire4=1 then delete object 104
if fire4>0 then fire4=fire4-1
if fire(2)>0 and object exist(105)=1 then move object up 105,01
if fire(2)=1 then delete object 105
if fire(2)>0 then fire(2)=fire(2)-1
if fire(2)<5
ticker2=0
tickaway2=0
endif
if fire(3)>0 and object exist(108)=1 then move object up 108,01
if fire(3)=1 then delete object 108
if fire(3)>0 then fire(3)=fire(3)-1
if fire(4)>0 and object exist(107)=1 then move object up 107,01
if fire(4)=1 then delete object 107
if fire(4)>0 then fire(4)=fire(4)-1
if tickaway1=1 then ticker1=ticker1+1
if tickaway2=1 then ticker2=ticker2+1
if freezetime>0 then freezetime=freezetime-1
if freeze>0 then freeze=freeze-1
if freeze=0 then ai#=ai#+1
if ai#=20-change# and freeze<1 then gosub ai
gosub hit
if a=2 then position camera 1,object position x(100),object position y(100),object position z(100)-1
if a=2 and p=2 then position camera 2,object position x(98),object position y(98),object position z(98)-1
sprite 1,screen width()-sprite width(1),sprite height(1)/2-35,1
tm=timer()
ti=25-(tm-ti)
wait ti
sync
loop
right:
if ri(ship)<18
move object right 100-ship,1
endif
if ri(ship)<18 then ri(ship)=ri(ship)+1
return
left:
if ri(ship)>-18
move object left 100-ship,1
endif
if ri(ship)>-18 then ri(ship)=ri(ship)-1
return
fire:
if object exist(101+2*ship)=0
if ship=0 then tickaway1=1
if ship=2 then tickaway2=1
play sound 16
make object box 101+2*ship,.1,1,.1
shots(ship)=shots(ship)+1
set object radius 101+2*ship,.3
position object 101+2*ship,object position x(100-ship), object position y(100-ship),object position z(100-ship)
color object 101+2*ship,rgb(150,0,0)
fire(ship)=35
endif
if ship=2 and ticker2>10
if object exist(107)=0 and object exist(105)=1
shots(ship)=shots(ship)+1
ticker2=0
tickaway2=0
play sound 16
make object box 107,.1,1,.1
set object radius 107,.3
position object 107,object position x(100-ship), object position y(100-ship),object position z(100-ship)
color object 107,rgb(150,0,0)
fire(4)=35
endif
endif
if ship=0 and ticker1>10
if object exist(108)=0 and object exist(101)=1
shots(ship)=shots(ship)+1
ticker1=0
tickaway1=0
play sound 16
make object box 108,.1,1,.1
set object radius 108,.3
position object 108,object position x(100-ship), object position y(100-ship),object position z(100-ship)
color object 108,rgb(150,0,0)
fire(3)=35
endif
endif
return
ai:
play sound 18
for i=1 to 40
if object exist(i)
move object right i,move
if i<11 and i>0
if sw=1
offset limb i,l(1),-2,-4,0
offset limb i,l(2),2,-4,0
else
offset limb i,l(1),-1,-3,0
offset limb i,l(2),1,-3,0
endif
endif
if i<21 and i>10
if sw=1
offset limb i,l(3),-4,0,0
offset limb i,l(4),4,0,0
else
offset limb i,l(3),-3,-1,0
offset limb i,l(4),3,-1,0
endif
endif
if i<31 and i>20
if sw=1
offset limb i,l(5),-3,-3,0
offset limb i,l(6),3,-3,0
else
offset limb i,l(5),-3,-4,0
offset limb i,l(6),3,-4,0
endif
endif
if i<41 and i>30
if sw=1
offset limb i,l(7),-2,-3,0
offset limb i,l(8),2,-3,0
else
offset limb i,l(7),-1,-3,0
offset limb i,l(8),1,-3,0
endif
endif
endif
next i
if sw=1
sw=0
else
sw=1
endif
k=rnd(39)+1
if object visible(k)=1 and object exist(102)=0
play sound 16
make object box 102,.1,1,.1
fire2=35
position object 102,object position x(k), object position y(k),object position z(k)
color object 102,rgb(150,0,0)
endif
if dif>1
k=rnd(39)+1
if object visible(k)=1 and object exist(103)=0
play sound 16
make object box 103,.1,1,.1
fire3=35
position object 103,object position x(k), object position y(k),object position z(k)
color object 103,rgb(150,0,0)
endif
endif
if dif>2
k=rnd(39)+1
if object visible(k)=1 and object exist(104)=0
play sound 16
make object box 104,.1,1,.1
fire4=35
position object 104,object position x(k), object position y(k),object position z(k)
color object 104,rgb(150,0,0)
endif
endif
ai#=0
four=four+move
if four=8
play sound 19
for i=1 to 40
if object exist(i)=1
move object down i,1
endif
next i
down=down+1
move=-1
endif
if four=-8
for i=1 to 40
if object exist(i)=1
move object down i,1
endif
next i
down=down+1
move=1
endif
if down=15 then goto theend
return
hit:
if object exist(101)=1
set object collision to polygons 101
o=object collision(101,0)
if o>0
if 0<o and object visible(o)=1 and o<41 or o>200 and o<250
for i=60 to 67
position object i,object position x(o),object position y(o),object position z(o)
next i
death=20
fire(0)=0
if o<41
if moveo>0 then hide object moveo
moveo=o
else
delete object o
endif
delete object 101
play sound 17
if secret=o and freezetime>0 then freeze=80
if o<200
shots(1)=shots(1)+1
score(1)=score(1)+10
score#(1)=score(1)
score#(1)=score#(1)/1000
endif
if score#(1)>int(score#(1))-0.000001 and score#(1)<int(score#(1))+0.000001 and score#(1)>0 then life=life+1
if int(score(1)+score(2))=400*level# then goto youwin
endif
endif
endif
if object exist(105)=1
set object collision to polygons 105
o=object collision(105,0)
if o>0
if 0<o and object visible(o)=1 and o<41 or o>200 and o<250
for i=60 to 67
position object i,object position x(o),object position y(o),object position z(o)
next i
death=20
if o<41
if moveo>0 then hide object moveo
moveo=o
else
delete object o
endif
delete object 105
fire(2)=0
play sound 17
if secret=o and freezetime>0 then freeze=80
if o<200
score(2)=score(2)+10
score#(2)=score(2)
score#(2)=score#(2)/1000
endif
if score#(2)>int(score#(2))-0.000001 and score#(2)<int(score#(2))+0.000001 and score#(2)>0 then life=life+1
if int(score(1)+score(2))=400*level# then goto youwin
endif
endif
endif
if object exist(107)=1
set object collision to polygons 107
o=object collision(107,0)
if o>0
if 0<o and object visible(o)=1 and o<41 or o>200 and o<250
for i=60 to 67
position object i,object position x(o),object position y(o),object position z(o)
next i
death=20
if o<41
if moveo>0 then hide object moveo
moveo=o
else
delete object o
endif
delete object 107
fire(4)=0
play sound 17
if secret=o and freezetime>0 then freeze=80
if o<200
score(2)=score(2)+10
score#(2)=score(2)
score#(2)=score#(2)/1000
endif
if score#(2)>int(score#(2))-0.000001 and score#(2)<int(score#(2))+0.000001 and score#(2)>0 then life=life+1
if int(score(1)+score(2))=400*level# then goto youwin
endif
endif
endif
if object exist(108)=1
set object collision to polygons 108
o=object collision(108,0)
if o>0
if 0<o and object visible(o)=1 and o<41 or o>200 and o<250
for i=60 to 67
position object i,object position x(o),object position y(o),object position z(o)
next i
death=20
if o<41
if moveo>0 then hide object moveo
moveo=o
else
delete object o
endif
delete object 108
fire(3)=0
play sound 17
if secret=o and freezetime>0 then freeze=80
if o<200
shots(1)=shots(1)+1
score(1)=score(1)+10
score#(1)=score(1)
score#(1)=score#(1)/1000
endif
if score#(1)>int(score#(1))-0.000001 and score#(1)<int(score#(1))+0.000001 and score#(1)>0 then life=life+1
if int(score(1)+score(2))=400*level# then goto youwin
endif
endif
endif
if object exist(102)=1
set object collision to polygons 102
o2=object collision(102,0)
if o2=100 or o2=98
if o2=98 then ship=2
if o2=100 then ship=0
delete object 102
gosub losealife
fire2=0
endif
if object exist(102)=1
o2=object collision(102,0)
if o2>200
delete object o2
delete object 102
fire2=0
endif
endif
endif
o3=0
if object exist(103)=1
set object collision to polygons 103
o3=object collision(103,0)
if o3=98 or o3=100
if o3=98 then ship=2
if o3=100 then ship=0
delete object 103
gosub losealife
fire3=0
endif
if object exist(103)=1
o3=object collision(103,0)
if o3>200
delete object o3
delete object 103
fire3=0
endif
endif
endif
o4=0
if object exist(104)=1
set object collision to polygons 104
o4=object collision(104,0)
if o4=98 or o4=100
if o4=98 then ship=2
if o4=100 then ship=0
delete object 104
gosub losealife
fire4=0
endif
if object exist(104)=1
o4=object collision(104,0)
if o4>200
delete object o4
delete object 104
fire4=0
endif
endif
endif
return
youwin:
hide object moveo
moveo=0
death=0
cls
for i=60 to 67
position object i,500,0,0
next i
death=0
sync
a$="You win press any key to go to the next level!"
text 0,0,a$
if p=1
text 0,100,"shots fired "+str$(shots(0))
text 0,200,"40 hits"
endif
if p=2
text 0,100,"shots fired player one "+str$(shots(0))
text 0,200,str$(shots(1)) + " hits for player one"
text 0,300,"shots fired player two "+str$(shots(2))
text 0,400,str$(40-shots(1)) + " hits for player two"
endif
sync
wait 1000
level#=level#+1
shots(0)=0
shots(1)=0
shots(2)=0
suspend for key
goto level
function button(caption$,size,top,number)
if mousex()>screen width()/2-5*size and mousex()<screen width()/2+5*size and mousey()>top and mousey()<top+4*size then ink rgb(100,100,0), rgb(100,100,0)
line screen width()/2-5*size,top,screen width()/2+5*size,top
line screen width()/2-5*size,top,screen width()/2-5*size,top+4*size
line screen width()/2-5*size,top+4*size,screen width()/2+5*size,top+4*size
line screen width()/2+5*size,top+4*size,screen width()/2+5*size,top
ink rgb(255,255,255),rgb(255,255,255)
text screen width()/2-text width(caption$)/2,top+2*size-text height(caption$)/2,caption$
if mousex()>screen width()/2-5*size and mousex()<screen width()/2+5*size and mousey()>top and mousey()<top+4*size and mouseclick()=1
if number=1 then gosub play
if number=2 then gosub Version
if number=3 then gosub Difficulty
if number=4 then gosub Controlls
if number=5 then gosub players
if number=6 then gosub mode
endif
goto back
Play:
goto play2
return
Version:
if a=1
global a=2
else
global a=1
endif
wait 150
cls
return
Difficulty:
if dif=1
global dif=2
goto difend
endif
if dif=2
global dif=3
goto difend
endif
if dif=3
global dif=1
goto difend
endif
difend:
wait 150
cls
return
Controlls:
if c=1
cls
c=0
goto ret
endif
if c=0
text 0,300,"Arrows to move, space bar to shoot."
text 0,350,"There are two difficulty settings."
text 0,400,"Try first person mode!"
text 0,450,"One enemy each time has the time freezer."
text 0,500,"If you kill that enemy in the first ten seconds"
text 0,550,"You will freeze time for two seconds."
text 0,600,"2 player controlls are a=left d=right and s=fire"
text 0,650,"Try co-op mode still only three lives for the both of you."
text 0,700,"Try duel mode to settle who is the better space invaders player."
c=1
endif
ret:
return
players:
if p=1
global p=2
else
global p=1
endif
wait 150
cls
return
mode:
if m=1
global m=2
else
global m=1
endif
wait 150
cls
return
back:
endfunction
losealife:
for i=101 to 108
if object exist(i)=1 then delete object i
next i
right=90
play sound 1
sync
hide object 100-ship
for i=60 to 67
position object i,object position x(100-ship),object position y(100-ship),object position z(100-ship)
next i
death=20
do
if death>0
death=death-1
for i=60 to 67
move object i,0.1
if death=0
position object i,500,0,0
endif
next i
endif
right=-right
turn camera right 1,right
move camera 1,0.1
turn camera left 1,right
if p=2 and a=2
turn camera right 2,right
move camera 2,0.1
turn camera left 2,right
endif
wait 50
sync
if death=0 then goto outofdeath
loop
outofdeath:
show object 100-ship
life=life-1
if life=0 then goto theend
set text size 40
a$="Ready"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
wait 1000
a$="GO!"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
wait 1000
set text size 20
return
topalien:
data 0,0,0,1,0,0,0
data 0,0,1,1,1,0,0
data 0,1,0,1,0,1,0
data 1,1,1,1,1,1,1
data 0,1,1,1,1,1,0
data 0,1,0,1,0,1,0
data 1,0,1,0,1,0,1
twoalien:
data 0,0,1,0,0,0,1,0,0
data 0,0,0,1,0,1,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,1,1,0,1,0,1,1,0
data 0,1,0,1,1,1,0,1,0
data 0,0,1,0,0,0,1,0,0
data 0,0,0,1,0,1,0,0,0
threealien:
data 0,0,0,0,0,0,0
data 0,0,1,1,1,0,0
data 0,1,1,1,1,1,0
data 1,1,1,1,1,1,1
data 1,1,0,1,0,1,1
data 1,1,1,1,1,1,1
data 0,0,1,0,1,0,0
data 0,1,0,1,0,1,0
data 1,0,0,0,0,0,1
fouralien:
data 0,0,1,1,1,0,0
data 0,1,1,1,1,1,0
data 1,1,0,1,0,1,1
data 0,1,1,0,1,1,0
data 0,0,1,1,1,0,0
data 0,1,0,0,0,1,0
data 0,0,1,0,1,0,0
ship:
data 0,0,0,0,0,0,0
data 0,0,0,1,0,0,0
data 0,0,1,1,1,0,0
data 1,1,1,1,1,1,1
data 0,0,1,1,1,0,0
data 1,0,0,1,0,0,1
data 1,1,1,1,1,1,1
the:
data 1,1,1,1,1,0,1,0,0,1,0,1,1,1,0
data 0,0,1,0,0,0,1,0,0,1,0,1,0,0,0
data 0,0,1,0,0,0,1,1,1,1,0,1,1,1,0
data 0,0,1,0,0,0,1,0,0,1,0,1,0,0,0
data 0,0,1,0,0,0,1,0,0,1,0,1,1,1,0
renewed:
data 1,1,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,1,1,1,0,1,1,0
data 1,0,1,0,1,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,1
data 1,1,1,0,1,1,1,0,1,0,1,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1
data 1,1,0,0,1,0,0,0,1,0,0,1,1,0,1,0,0,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,0,1
data 1,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,0
space:
data 1,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1
data 1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0
data 1,1,1,0,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1
data 0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0
data 1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,1,0,1,1,1
invaders:
data 1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,0,1,1,1,0,1,1,1
data 0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0
data 0,0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1
data 0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,0,1
data 1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,1,0,0,1,1,1,0,1,0,1,0,1,1,1
theend:
delete sprite 1
if sprite exist(2) then delete sprite 2
if sprite exist(3) then delete sprite 3
right=0
for i=1 to 212
if object exist(i)=1 then delete object i
next i
if light exist(1)=0 then make light 1
position light 1,0,0,250
point light 1,0,20,400
delete object 60
delete object 61
make object sphere 60,5
set ambient light 1
color object 60,rgb(0,0,100)
make object sphere 61,100
move object 61,400
move object up 61,40
color object 61,rgb(200,200,0)
move camera 1,-30
for i= 1 to 50
make object i,rnd(3)+2,0
position object i,i-25,0,-150
color object i,rgb(rnd(255),rnd(255),rnd(255))
next i
s=20
do
if sound playing(s-1)=0 and s<23
play sound s
s=s+1
endif
a$="Sheydkd gaidnkl ikslirk!!!!"
b$="Translation: Destroy all life!!!!"
c$="YOU LOSE"
text screen width()/2-text width(a$)/2,screen height()-text height(a$)*3,a$
text screen width()/2-text width(b$)/2,screen height()-text height(a$)*2,b$
set text size 40
text screen width()/2-text width(c$)/2,screen height()/2-text height(a$),c$
wait 50
for i=1 to 50
move object i,1
next i
right=right+1
if right>140 then end
sync
loop
duel:
move object up 98,24
roll object right 98,180
if a=1 then fix object pivot 98
if a=2
make camera 2
pitch camera up 2,90
turn camera right 2,180
set camera view 1,0,0,screen width(),screen height()/2
set camera view 2,0,screen height()/2,screen width(),screen height()
color backdrop 2,0
scale object 100,100,100,250
scale object 98,100,100,250
endif
do
if a=2
position camera 1,object position x(100),object position y(100),object position z(100)-4
position camera 2,object position x(98),object position y(98),object position z(98)-4
endif
ship=2
if keystate(30)=1 then gosub left
if keystate(32)=1 then gosub right
if keystate(31)=1 then gosub dfire2
ship=0
if rightkey()=1 then gosub right
if leftkey()=1 then gosub left
if spacekey()=1 then gosub dfire1
if fire(0)>0 then move object up 101,03
if fire(0)=1 then delete object 101
if fire(0)>0 then fire(0)=fire(0)-1
if fire(2)>0 then move object up 102,03
if fire(2)=1 then delete object 102
if fire(2)>0 then fire(2)=fire(2)-1
if fire(3)>0 then move object down 103,03
if fire(3)=1 then delete object 103
if fire(3)>0 then fire(3)=fire(3)-1
if fire(4)>0 then move object down 104,03
if fire(4)=1 then delete object 104
if fire(4)>0 then fire(4)=fire(4)-1
gosub dhit
wait 50
sync
loop
dfire1:
if object exist(101)=0
make object box 101,.1,1,.1
play sound 16
set object radius 101,.3
position object 101,object position x(100), object position y(100),object position z(100)
color object 101,rgb(150,0,0)
fire(0)=35
goto dfire1exit
endif
if object exist(101)=1 and object exist(102)=0 and fire(0)<31
make object box 102,.1,1,.1
play sound 16
set object radius 102,.3
position object 102,object position x(100), object position y(100),object position z(100)
color object 102,rgb(150,0,0)
fire(2)=35
endif
dfire1exit:
return
dfire2:
if object exist(103)=0
make object box 103,.1,1,.1
play sound 16
set object radius 103,.3
position object 103,object position x(98), object position y(98),object position z(98)
color object 103,rgb(150,0,0)
fire(3)=35
goto dfire2exit
endif
if object exist(103)=1 and object exist(104)=0 and fire(3)<31
make object box 104,.1,1,.1
play sound 16
set object radius 104,.3
position object 104,object position x(98), object position y(98),object position z(98)
color object 104,rgb(150,0,0)
fire(4)=35
endif
dfire2exit:
return
dhit:
if object exist(101)=1
set object collision to polygons 101
if object collision(101,98)
goto p1wins
endif
endif
if object exist(102)=1
set object collision to polygons 102
if object collision(102,98)
goto p1wins
endif
endif
if object exist(103)=1
set object collision to polygons 103
if object collision(103,100)
goto p2wins
endif
endif
if object exist(104)=1
set object collision to polygons 104
if object collision(104,100)
goto p2wins
endif
endif
return
p1wins:
if sprite exist(2) then delete sprite 2
if sprite exist(3) then delete sprite 3
cls
set text size 40
a$="Player 1 Wins!"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
suspend for key
end
p2wins:
if sprite exist(2) then delete sprite 2
if sprite exist(3) then delete sprite 3
cls
set text size 40
a$="Player 2 Wins!"
text screen width()/2-text width(a$)/2,screen height()/2-text height(a$)/2,a$
sync
suspend for key
end
screenshot:
get image 2,0,0,screen width(),screen height()
save image "image.jpg",2
end
`Ric's sound creator its awsome!!!
function createsound(name$,soundnumber,frequency#,length#,loudness#,bend#,decay#,vibratospeed#,vibratodepth#,tremelospeed#,tremelodepth#,attack#)
outWord as word
dword1 as dword: dword2 as dword: dword3 as dword: dword4 as dword
dword5 as dword: dword6 as dword: dword7 as dword
samples=int((length#/1000)*44100)
if memblock exist(1) then delete memblock 1
make memblock 1,samples*2+28
` write 28 memblock header bytes
dword1=1 ` gg query: is this the number of channels?
dword2=2 ` gg query: is this the number of bytes per sample?
dword3=22050 ` gg query: seems to be half the number of samples per second - why?
dword4=88200 ` gg query: is this the number of bytes per second?
dword5=4 ` gg query: what does this represent?
dword6=16 ` gg query: (ditto) ?
dword7=0 ` gg query: (ditto) ?
position=0
write memblock dword 1, position, dword1 : inc position,4
write memblock dword 1, position, dword2 : inc position,4
write memblock dword 1, position, dword3 : inc position,4
write memblock dword 1, position, dword4 : inc position,4
write memblock dword 1, position, dword5 : inc position,4
write memblock dword 1, position, dword6 : inc position,4
write memblock dword 1, position, dword7 : inc position,4
rem generate and write wave
riseinloudness#=loudness#
for x=1 to samples
outInteger=int(sin((x/122.5)*(frequency#+vibratodepth#*sin(theta#)))*(loudness#-fallinloudness#-riseinloudness#+tremelodepth#*sin(phi#)))*3.0
if outInteger <-32767 then outInteger=-32767 ` gg query: is this the valid range?
if outInteger>32767 then outInteger=32767 ` gg query: (ditto) ?
outWord=outInteger
inc theta#,vibratospeed#
inc phi#,tremelospeed#
dec frequency#,bend#
if fallinloudness#<loudness#
inc fallinloudness#,decay#
endif
if riseinloudness#>0
dec riseinloudness#,attack#
endif
write memblock word 1, position, outWord : inc position,2
next x
if sound exist(soundnumber)=1 then delete sound soundnumber
make sound from memblock 999, 1 ` assumes you won't need sound number 999!
clone sound soundnumber, 999
delete sound 999
` memblock no longer required
delete memblock 1
endfunction
function song(songnumber,playafter,endingnumber,note1,note2,note3,note4,note5,note6,note7,note8,note9,note10)
if pa=songnumber
if sound exist(finnalnote)=0
if p1=-1
play sound note1
global finnalnote=note1
p1=0
endif
endif
if sound exist(finnalnote)=1
if sound playing(finnalnote)=0 and p1=-1
play sound note1
p1=0
global finnalnote=note1
endif
endif
if 1=endingnumber
goto outofsongunct
endif
if sound playing(note1)=0 and p1=0 and sound exist(note2)=1
play sound note2
global finnalnote=note2
p1=1
endif
if 2=endingnumber
goto outofsongunct
endif
if sound playing(note2)=0 and p1=1 and sound exist(note3)=1
play sound note3
global finnalnote=note3
p1=2
endif
if 3=endingnumber
goto outofsongunct
endif
if sound playing(note3)=0 and p1=2 and sound exist(note4)=1
play sound note4
global finnalnote=note4
p1=3
endif
if 4=endingnumber
goto outofsongunct
endif
if sound playing(note4)=0 and p1=3 and sound exist(note5)=1
play sound note5
global finnalnote=note5
p1=4
endif
if 5=endingnumber
goto outofsongunct
endif
if sound playing(note5)=0 and p1=4 and sound exist(note6)=1
play sound note6
global finnalnote=note6
p1=5
endif
if 6=endingnumber
goto outofsongunct
endif
if sound playing(note6)=0 and p1=5 and sound exist(note7)=1
play sound note7
global finnalnote=note7
p1=6
endif
if 7=endingnumber
goto outofsongunct
endif
if sound playing(note7)=0 and p1=6 and sound exist(note8)=1
play sound note8
global finnalnote=note8
p1=7
endif
if 8=endingnumber
goto outofsongunct
endif
if sound playing(note8)=0 and p1=7 and sound exist(note9)=1
play sound note9
global finnalnote=note9
p1=8
endif
if 9=endingnumber
goto outofsongunct
endif
if sound playing(note9)=0 and p1=8 and sound exist(note10)=1
play sound note10
p1=9
global finnalnote=note10
endif
outofsongunct:
if p1=endingnumber-1 and sound playing(endingnumber)=0
global pa=playafter
global p1=-1
global check=0
endif
endif
endfunction
Good luck to all who enter!