Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;-----------------------------;
- ;----PLEASE IGNORE THE MESS---;
- ;---this is my first program--;
- ;-----------------------------;
- Graphics 800, 600
- SetBuffer BackBuffer ()
- AutoMidHandle True
- Global logo
- logo=LoadImage ("sludgesoft.png")
- Global feastfontsmall = LoadAnimImage ("feastfontsmall.png", 11, 15, 0, 60)
- DrawImage logo, 400, 300
- displaytextsmall ("loading....",659 ,590)
- Flip
- FreeImage logo
- Global timer
- Global introframe
- Global intro
- Global stars
- Global counter
- Global spaciex
- Global spaciex1
- Global spaciex2
- Global spaciex3
- Global starx = 400
- Global stary = 300
- Global start1
- Global start2
- Global explode = LoadAnimImage ("explosion45x45x8.png", 45, 45, 0, 8)
- MaskImage explode, 255,255,255
- Global explode2 = LoadAnimImage ("explosion100x60x8.png", 100, 60, 0, 8)
- MaskImage explode2, 255,255,255
- Global explode3 = LoadAnimImage ("explosion166x147x10.png", 166, 147, 0, 10)
- MaskImage explode3, 255,255,255
- Global bossexplode = LoadAnimImage ("bossexplode.png", 250, 150, 0, 8)
- MaskImage bossexplode, 255,255,255
- Global boss1 = LoadAnimImage ("satelliteboss.png", 150, 150, 0, 13)
- Global boss1bomb = LoadAnimImage ("boss1bomb.png", 40, 40, 0, 5)
- Global boss2 = LoadAnimImage ("batlethboss.png",200 ,200 ,0, 26)
- Global boss3 = LoadAnimImage ("boss3.png", 150, 150, 0, 12)
- Global boss4 = LoadAnimImage ("boss4.png", 263, 150, 0, 10)
- Global boss4bomb = LoadImage ("boss4bomb.bmp")
- Global boss4star = LoadImage ("boss4star.bmp")
- Global boss4minibomb = LoadImage ("boss4minibomb.bmp")
- Global feastfont = LoadAnimImage ("feastfontnew.png", 33, 45, 0, 60)
- Global czone
- Global czone1 = LoadImage ("screen1.jpg")
- Global czone2 = LoadImage ("screen2.jpg")
- Global czone3 = LoadImage ("screen3.jpg")
- Global czone4 = LoadImage ("screen4.jpg")
- Global boss=0
- Global shipcreate = LoadAnimImage ("shipcreate.png", 60, 46, 0, 10)
- MaskImage shipcreate, 255, 0, 0
- Global ufo=LoadAnimImage ("ufo1.png", 117,35,0,16)
- Global ufovintage = LoadImage ("ufovintage.bmp")
- Global ufoalt = LoadImage ("ufo2.bmp")
- Global ship = LoadImage ("ship.bmp")
- Global shipmedium = LoadImage ("shipmedium.bmp")
- Global shipsmall = LoadImage ("shipsmall.bmp")
- Global shipvintage = LoadImage ("shipvintage.bmp")
- Global ship2 = LoadImage ("ship2.bmp")
- Global ship22 = LoadImage ("ship22.bmp")
- Global firevintage = LoadImage ("shotvintage.bmp")
- Global fire = LoadImage ("shot.bmp")
- Global explodevintage = LoadImage ("explodevintage.bmp")
- Global sfalien = LoadAnimImage ("sfalien.png",40,40,0,8) ; type 0
- Global blobanim = LoadAnimImage ("blobalienanim.png",40,40,0,9) ; type 1
- Global glowalien = LoadAnimImage ("glowballalien.png",40,40,0,9) ; type 2
- Global gyroalien = LoadAnimImage ("gyroscopeblue.png",40,40,0,8) ; type 3
- Global valien = LoadImage ("flyingv.bmp") ; type 4
- Global ash = LoadImage ("ampashdown.png") ; type 5
- Global ashcab = LoadImage ("ampashdowncab.bmp") ; type 6
- Global custom = LoadAnimImage ("custom.png", 40,40,0,8) ; type 7
- Global domealien = LoadAnimImage ("dome.png",40,40,0,8) ; type 8
- Global malien = LoadImage ("m65alien.bmp") ; type 9
- Global topalien = LoadAnimImage ("top20alien.png", 40, 40, 0, 8) ; Type 10
- Global threealien = LoadAnimImage ("threealien.png",40,40,0,16) ; type 11
- Global marshall = LoadImage ("ampmarshall.bmp") ; type 12
- Global sixalien = LoadAnimImage ("six.bmp", 40, 40, 0, 8) ; Type 13
- Global gwalien = LoadAnimImage ("greenwindowalien.png",40,40,0,8) ; type 14
- Global ggalien = LoadAnimImage ("greenglowalien.png",40,40,0,8) ; type 15
- Global gralien = LoadAnimImage ("greenrocketalien.png",40,40,0,8) ; type 16
- Global jetbassalien = LoadAnimImage ("jetbass.png",40,40,0,8) ; type 17
- Global blueballsalien = LoadAnimImage ("blueballs.png",40,40,0,8) ; type 18
- Global ringalien = LoadAnimImage ("ringalien.png",40,40,0,8) ; type 19
- Global chromeringalien = LoadAnimImage ("chromeringalien.png",40,40,0,8) ; type 20
- Global badassalien = LoadImage ("badass.bmp") ; type 21
- Global bluealien = LoadAnimImage ("blueship.png",40,40,0,16) ; type 22
- Global sgalien = LoadImage ("sg.bmp") ; type 23
- Global scramblealien = LoadAnimImage ("scramble.png",40,40,0,16) ; type 24
- Global invader1 = LoadAnimImage ("invader1.bmp", 40, 40, 0, 2) ; type 25
- Global invader2 = LoadAnimImage ("invader2.bmp", 40, 40, 0, 2) ; type 26
- Global invader3 = LoadAnimImage ("invader3.bmp", 40, 40, 0, 2) ; type 27
- Global gyroalientwo = LoadAnimImage ("gyroscope.png",40,40,0,8) ; type 28
- Global newinvader1 = LoadAnimImage ("newinvader1.png",40,40,0,8) ; type 29
- Global newinvader2 = LoadAnimImage ("newinvader2.png",40,40,0,8) ; type 30
- Global newinvader3 = LoadAnimImage ("newinvader3.png",40,40,0,8) ; type 31
- Global hnhalien = LoadImage ("hnh.png") ; type 32
- Global greenlightning = LoadAnimImage ("greenlightning.bmp", 20, 96, 0, 2)
- Global direction
- Global aliensalive = 0
- Global ufornd
- Global powerupflash = LoadImage ("powerup.bmp")
- Global powerupcircle = LoadAnimImage ("powerupcircle.bmp", 12, 12, 0, 8)
- Global asteroidbomb = LoadAnimImage ("asteroids.bmp", 25, 23, 0, 5)
- Global bbomb = LoadImage ("brunsdonbomb.bmp")
- Global ddshot = LoadImage ("duffdoubleshot.bmp")
- Global bbeam = LoadImage ("barnardbeam.bmp")
- Global nlazer = LoadImage ("nazerlazer.bmp")
- Global bbombpic = LoadImage ("bbombone.bmp")
- Global bbombexppic = LoadAnimImage ("bbomb.png", 100, 100, 0, 20)
- Global nlazerpic = LoadImage ("nlazer.bmp")
- Global bbeampic = LoadImage ("bbeam.png")
- Global bomb = LoadImage ("bomb.bmp")
- Global ybomb = LoadImage ("yellowbomb.bmp")
- Global gbomb = LoadImage ("greenbomb.bmp")
- Global pbomb = LoadImage ("purplebomb.bmp")
- Global fbomb = LoadImage ("firebomb.bmp")
- Global sludgebomb = LoadAnimImage ("sludgebomb.bmp", 10, 26, 0, 16)
- Global bluebomb = LoadImage ("bluebomb.bmp")
- Global boomerangbomb = LoadAnimImage ("boomerang.bmp", 18, 18, 0, 8)
- Global boomerangbombbig = LoadAnimImage ("boomerangbig.png", 30, 30, 0, 8)
- Global bombvintage = LoadAnimImage ("invaderbomb,25,11.bmp", 11, 25, 0,2)
- Global background
- Global space = LoadImage ("space2.jpg")
- Global space2 = LoadImage ("space.jpg")
- Global space3 = LoadImage ("space3.jpg")
- Global space4 = LoadImage ("space4.jpg")
- Global space5 = LoadImage ("spacecity.jpg")
- Global space6 = LoadImage ("spaceblack.jpg")
- Global space7 = LoadImage ("space7.jpg")
- Global space8 = LoadImage ("sky.jpg")
- Global gallery1
- Global gallery2
- Global gallery3
- Global gallery4
- Global gallery5
- Global playerlives
- ;-------------shity stuff to make levels run at will
- czone = czone1
- background = space5
- bgx = 0
- bgy = 0
- Global x = 400
- Global y = 575
- Global s = 10
- Global spacer=50
- Global missilecount
- Global maxmissiles = 0
- Const missilestep = 20
- Global astep = 1
- Global drop = 15
- Global dropq = 0
- Global image
- Global exx
- Global exy
- Global bombx
- Global bomby
- Global brnd
- Global expkind
- Global level= 1
- Global animationstart
- Global animationtimer
- Global animframe
- Global animframetwo
- Global animframethree
- Global timeelapsed
- Global collide
- Global difficulty
- Global completed = 0
- Global htp1$
- Global htp2$
- Global htp3$
- Global htp4$
- Global althtp1$
- Global txtcnt
- Global shipx
- Global shoty
- Global expcount = 0
- Const expcountmax = 5
- ;----------------------------SOUNDS-----------------
- Global deathchannel
- Global ufochannel
- Global rockradio
- Global rocktv
- Global explosionchannel
- Global powerupchannel
- Global missilechannel
- Global musicvol# = .6
- Global songnum = -1
- Global ufosound = LoadSound ("ufo.wav")
- Global missilesound = LoadSound ("missile.wav")
- Global explosionsound = LoadSound ("explosion.wav")
- Global powerupsound = LoadSound ("ufoexplosion.wav")
- Global ufoexpsound = LoadSound ("ufoexp.wav")
- Global youdie = LoadSound ("youdie.wav")
- Global noshot = LoadSound ("noshot.wav")
- Global bbombsound = LoadSound ("bbomb.wav")
- Global bbeamsound = LoadSound ("bbeam.wav")
- Global nlazersound = LoadSound ("nlazer.wav")
- Global loopexpsound= LoadSound ("loopexp.wav")
- Global bossdeathsound = LoadSound ("bossdeath.wav")
- Global bossbombsound = LoadSound ("bossbomb.wav")
- Global bossbomb2sound = LoadSound ("bossbomb2.wav")
- Global file
- Global name1$
- Global name2$
- Global name3$
- Global name4$
- Global name5$
- Global name6$
- Global name7$
- Global name8$
- Global name9$
- Global name10$
- Global score1$
- Global score2$
- Global score3$
- Global score4$
- Global score5$
- Global score6$
- Global score7$
- Global score8$
- Global score9$
- Global score10$
- Global sco
- Global nam
- Global cheater$
- Global cheat
- Global chea
- Global che
- Global sco1
- Global sco2
- Global sco3
- Global sco4
- Global sco5
- Global sco6
- Global sco7
- Global sco8
- Global sco9
- Global sco10
- Global playerinput
- Global playernewscore
- Global playernewname$
- Global playernewname1$
- Global entryy
- Global position
- Global begin1
- Global begin2
- Global begin3
- Global beginspace = 1
- Global beginframe
- ;---------------------------------TYPES----------------------------------------
- Type Alien
- Field X,Y
- Field Frame
- Field AnimationStart
- Field AnimationTimer
- Field time_elapsed
- Field extratime
- Field brnd
- Field cdown
- Field kind
- Field alienvariable
- Field alienva
- Field alienv
- End Type
- Type ufo
- Field x
- Field AnimationStart
- Field time_elapsed
- Field frame
- End Type
- Type ufoscore
- Field x
- Field y
- Field txt$
- Field fr
- End Type
- Type powerup
- Field x
- Field y
- Field kind
- End Type
- Type missile
- Field image
- Field x
- Field y
- End Type
- Type pubbomb
- Field x
- Field y
- Field animationstart
- Field state
- Field frame
- Field timeelapsed
- End Type
- Type pubbeam
- Field x
- Field y
- Field animationstart
- Field state
- Field frame
- Field timeelapsed
- End Type
- Type punlazer
- Field x
- Field y
- End Type
- Type player
- Field x
- Field y
- Field nazerlazer
- Field duffdoubleshot
- Field brunsdonbomb
- Field barnardbeam
- Field lives
- Field alive ;0=dead, 1 = alive
- Field invinc
- Field score
- Field extralives
- End Type
- Type explosion
- Field exx
- Field exy
- Field exf
- Field kind
- Field exfr
- End Type
- Type bossexplosion
- Field exx
- Field exy
- Field exf
- Field exfr
- End Type
- Type bomb
- Field box
- Field boy
- End Type
- Type shipbomb
- Field box
- Field boy
- Field frame
- End Type
- Type bluebomb
- Field box
- Field boy
- Field dir
- End Type
- Type boomerangbomb
- Field box
- Field boy
- Field dir
- Field incr
- Field edge
- End Type
- Type sludgebomb
- Field box
- Field boy
- End Type
- Type firebomb
- Field box
- Field boy
- End Type
- Type tribomb
- Field x1
- Field y1
- Field x2
- Field x3
- End Type
- Type doublebomb
- Field x1
- Field y1
- Field x2
- End Type
- Type bombone
- Field box
- Field boy
- Field frame
- Field count
- End Type
- Type asteroid
- Field x
- Field y
- Field frame
- End Type
- Type boss1
- Field x
- Field y
- Field mode
- Field life
- Field timer
- Field newtime
- Field frame
- Field random
- End Type
- Type boss2
- Field x
- Field y
- Field mode
- Field life
- Field timer
- Field newtime
- Field frame
- Field random
- End Type
- Type boss3
- Field x
- Field y
- Field mode
- Field life
- Field timer
- Field newtime
- Field frame
- Field random
- End Type
- ;-----------------------------LOADING FUNCTIONS-----------------------------
- Function loadoptions ()
- file = ReadFile ("options.dat")
- If file = 0
- difficulty = 1
- saveoptions ()
- CloseFile (file)
- Else
- For q = 0 To 1
- If q = 0 difficulty = ReadByte (file)
- If q = 1 completed = ReadByte (file)
- Next
- EndIf
- End Function
- Function saveoptions ()
- file = WriteFile ("options.dat")
- For q = 0 To 1
- If q = 0 WriteByte file, difficulty
- If q = 1 WriteByte file, completed
- Next
- CloseFile (file)
- End Function
- ;-----------------------------INTROFUNCTIONS-----------------------------------
- ;------------------intromovie
- Function mainintro()
- intro = LoadAnimImage ("intro.jpg", 320, 240, 0, 200)
- introframe= -1
- timer=CreateTimer(10)
- rocktv = PlayMusic ("feastinvaders.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>199 introframe=199
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyHit (57) = 1 Or introframe = 199
- Delay 1000
- FreeImage intro
- FlushKeys ()
- StopChannel (rocktv)
- End Function
- ;------------------gameoveranimation
- Function gameoveranim()
- intro = LoadAnimImage ("gameoveranim.jpg", 320, 240, 0, 20)
- introframe= -1
- timer=CreateTimer(10)
- rocktv = PlayMusic ("gameoveranim.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyHit (1) = 1 Or introframe = 19
- Delay 1000
- FreeImage intro
- FlushKeys ()
- StopChannel (rocktv)
- aliensalive = 0
- boss = 0
- End Function
- ;------------------outromovie
- Function outro()
- If ChannelPlaying (rockradio) = 1
- StopChannel (rockradio)
- EndIf
- StopChannel (deathchannel)
- intro = LoadAnimImage ("outro.jpg", 320, 240, 0, 100)
- introframe= -1
- timer=CreateTimer(10)
- rocktv = PlayMusic ("yeah.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe<84 spaciex=introframe
- If introframe>83 And introframe<107
- spaciex = 85
- EndIf
- If introframe>106 And introframe<128
- spaciex = 86
- EndIf
- If introframe>127 And introframe<150
- spaciex = 87
- EndIf
- If introframe>149 And introframe<169
- spaciex = 88
- EndIf
- If introframe>168 And introframe<179
- spaciex = 89
- EndIf
- If introframe>178 And introframe<192
- spaciex = 90
- EndIf
- If introframe>191 And introframe<201
- spaciex = 91
- EndIf
- If introframe>200 And introframe<212
- spaciex = 92
- EndIf
- If introframe>211 And introframe<222
- spaciex = 93
- EndIf
- If introframe>221 And introframe<234
- spaciex = 94
- EndIf
- If introframe>233 And introframe<242
- spaciex = 95
- EndIf
- If introframe>241
- spaciex = 96
- EndIf
- If introframe>700 introframe=700
- Next
- Cls
- DrawImage intro, 400, 300, spaciex
- Flip
- Until KeyDown (57) = 1 Or introframe = 300
- Delay 1000
- FreeImage intro
- StopChannel (rocktv)
- End Function
- ;--------------------HIGHSCORES------------------------------------------
- Function loadhighscores()
- cheat = 0
- file = ReadFile ("highscore.dat")
- If file = 0
- name1$ = "james"
- score1$ = "200000"
- name2$ = "gareth"
- score2$ = "150000"
- name3$ = "andy"
- score3$ = "100000"
- name4$ = "and"
- score4$ = "90000"
- name5$ = "coirin"
- score5$ = "80000"
- name6$ = "play"
- score6$ = "70000"
- name7$ = "f--ked up"
- score7$ = "60000"
- name8$ = "rock n roll"
- score8$ = "40000"
- name9$ = "for
- score9$ = "20000"
- name10$ = "the devil"
- score10$ = "10000"
- savehighscores ()
- Else
- For q = 0 To 29
- If q=0 name1$ = ReadLine (file) : nam = Len(name1$)
- If q=1 score1$ = ReadLine (file) : sco = Len(score1$)
- If q = 2
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 666 + Int(score1)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=3 name2$ = ReadLine (file) : nam = Len(name2$)
- If q=4 score2$ = ReadLine (file): sco = Len(score2$)
- If q=5
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 667 + Int(score2)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=6 name3$ = ReadLine (file) : nam = Len(name3$)
- If q=7 score3$ = ReadLine (file) : sco = Len(score3$)
- If q=8
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 662 + Int(score3)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=9 name4$ = ReadLine (file) : nam = Len(name4$)
- If q=10 score4$ = ReadLine (file) : sco = Len(score4$)
- If q=11
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 663 + Int(score4)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=12 name5$ = ReadLine (file) : nam = Len(name5$)
- If q=13 score5$ = ReadLine (file) : sco = Len(score5$)
- If q=14
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 664 + Int(score5)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=15 name6$ = ReadLine (file) : nam = Len(name6$)
- If q=16 score6$ = ReadLine (file) : sco = Len(score6$)
- If q=17
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 676 + Int(score6)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=18 name7$ = ReadLine (file) : nam = Len(name7$)
- If q=19 score7$ = ReadLine (file) : sco = Len(score7$)
- If q=20
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 686 + Int(score7)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=21 name8$ = ReadLine (file) : nam = Len(name8$)
- If q=22 score8$ = ReadLine (file) : sco = Len(score8$)
- If q=23
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 696 + Int(score8)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=24 name9$ = ReadLine (file) : nam = Len(name9$)
- If q=25 score9$ = ReadLine (file) : sco = Len(score9$)
- If q=26
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 606 + Int(score9)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- If q=27 name10$ = ReadLine (file) : nam = Len(name10$)
- If q=28 score10$ = ReadLine (file) : sco = Len(score10$)
- If q=29
- cheater$ = ReadLine (file)
- chea = Int(cheater$)
- che = sco+nam * 616 + Int(score10)
- If cheat = 0
- If che > chea Or che < chea cheat = 1
- EndIf
- EndIf
- Next
- EndIf
- If cheat = 1
- exx = 0
- timer = CreateTimer (45)
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- exx=exx+1
- Next
- Cls
- displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 50)
- If exx>50 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 100)
- If exx>100 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 150)
- If exx>150 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 200)
- If exx>200 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 250)
- If exx>250 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 300)
- If exx>300 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 350)
- If exx>350 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 400)
- If exx>400 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 450)
- If exx>450 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 500)
- If exx>500 displaytextsmall("you god damn cheating motherf--ker!! all high scores are being reset", 26, 550)
- Flip
- Until exx>550
- name1$ = "james"
- score1$ = "200000"
- name2$ = "gareth"
- score2$ = "150000"
- name3$ = "andy"
- score3$ = "100000"
- name4$ = "and"
- score4$ = "90000"
- name5$ = "coirin"
- score5$ = "80000"
- name6$ = "play"
- score6$ = "70000"
- name7$ = "f--ked up"
- score7$ = "60000"
- name8$ = "rock n roll"
- score8$ = "40000"
- name9$ = "for
- score9$ = "20000"
- name10$ = "the devil"
- score10$ = "10000"
- savehighscores ()
- EndIf
- CloseFile (file)
- End Function
- ;--------------
- Function enterhighscores()
- stars = LoadImage ("stars1.png")
- timer = CreateTimer (45)
- sco1 = Int(score1)
- sco2 = Int(score2)
- sco3 = Int(score3)
- sco4 = Int(score4)
- sco5 = Int(score5)
- sco6 = Int(score6)
- sco7 = Int(score7)
- sco8 = Int(score8)
- sco9 = Int(score9)
- sco10= Int(score10)
- If playernewscore > sco9
- name10$ = name9$
- score10$ = score9$
- EndIf
- If playernewscore > sco8
- name9$ = name8$
- score9$ = score8$
- EndIf
- If playernewscore > sco7
- name8$ = name7$
- score8$ = score7$
- EndIf
- If playernewscore > sco6
- name7$ = name6$
- score7$ = score6$
- EndIf
- If playernewscore > sco5
- name6$ = name5$
- score6$ = score5$
- EndIf
- If playernewscore > sco4
- name5$ = name4$
- score5$ = score4$
- EndIf
- If playernewscore > sco3
- name4$ = name3$
- score4$ = score3$
- EndIf
- If playernewscore > sco2
- name3$ = name2$
- score3$ = score2$
- EndIf
- If playernewscore > sco1
- name2$ = name1$
- score2$ = score1$
- EndIf
- If playernewscore > sco10 And playernewscore < sco9+1
- entryy = 500
- score10 = playernewscore
- EndIf
- If playernewscore > sco9 And playernewscore < sco8+1
- entryy = 460
- score9 = playernewscore
- EndIf
- If playernewscore > sco8 And playernewscore < sco7+1
- entryy = 420
- score8 = playernewscore
- EndIf
- If playernewscore > sco7 And playernewscore < sco6+1
- entryy = 380
- score7 = playernewscore
- EndIf
- If playernewscore > sco6 And playernewscore < sco5+1
- entryy = 340
- score6 = playernewscore
- EndIf
- If playernewscore > sco5 And playernewscore < sco4+1
- entryy = 300
- score5 = playernewscore
- EndIf
- If playernewscore > sco4 And playernewscore < sco3+1
- entryy = 260
- score4 = playernewscore
- EndIf
- If playernewscore > sco3 And playernewscore < sco2+1
- entryy = 220
- score3 = playernewscore
- EndIf
- If playernewscore > sco2 And playernewscore < sco1+1
- entryy = 180
- score2 = playernewscore
- EndIf
- If playernewscore > sco1
- entryy = 140
- score1 = playernewscore
- EndIf
- While Not KeyDown (28)
- frames=WaitTimer(timer)
- For k=1 To frames
- starx = starx+3
- stary = stary -2
- Next
- Cls
- TileBlock stars, starx, stary
- displaytextsmall ("god damn you got on the high score board enter your name",92 , 100)
- If entryy <> 140 displaytextsmall (name1$, 100, 140)
- If entryy <> 180 displaytextsmall (name2$, 100, 180)
- If entryy <> 220 displaytextsmall (name3$, 100, 220)
- If entryy <> 260 displaytextsmall (name4$, 100, 260)
- If entryy <> 300 displaytextsmall (name5$, 100, 300)
- If entryy <> 340 displaytextsmall (name6$, 100, 340)
- If entryy <> 380 displaytextsmall (name7$, 100, 380)
- If entryy <> 420 displaytextsmall (name8$, 100, 420)
- If entryy <> 460 displaytextsmall (name9$, 100, 460)
- If entryy <> 500 displaytextsmall (name10$, 100, 500)
- displaytextsmall (RSet (score1$, 10), 590, 140)
- displaytextsmall (RSet (score2$, 10), 590, 180)
- displaytextsmall (RSet (score3$, 10), 590, 220)
- displaytextsmall (RSet (score4$, 10), 590, 260)
- displaytextsmall (RSet (score5$, 10), 590, 300)
- displaytextsmall (RSet (score6$, 10), 590, 340)
- displaytextsmall (RSet (score7$, 10), 590, 380)
- displaytextsmall (RSet (score8$, 10), 590, 420)
- displaytextsmall (RSet (score9$, 10), 590, 460)
- displaytextsmall (RSet (score10$, 10),590, 500)
- playerinput = GetKey()
- If KeyHit (14)
- exx = Len (playernewname)
- exx = exx - 1
- For z = 1 To exx
- playernewname1 = playernewname1+Mid$(playernewname, z, 1)
- Next
- playernewname = playernewname1
- playernewname1=""
- EndIf
- exx = Len(playernewname)
- If exx<30
- If playerinput = 32
- playernewname = playernewname + Chr$ (playerinput)
- Upper$ (playernewname)
- EndIf
- If playerinput >47 And playerinput < 58
- playernewname = playernewname + Chr$ (playerinput)
- Upper$ (playernewname)
- EndIf
- If playerinput >96 And playerinput < 123
- playernewname = playernewname + Chr$ (playerinput)
- Upper$ (playernewname)
- EndIf
- EndIf
- displaytextsmall (playernewname, 100, entryy)
- Flip
- Wend
- If entryy = 140 name1$ = playernewname
- If entryy = 180 name2$ = playernewname
- If entryy = 220 name3$ = playernewname
- If entryy = 260 name4$ = playernewname
- If entryy = 300 name5$ = playernewname
- If entryy = 340 name6$ = playernewname
- If entryy = 380 name7$ = playernewname
- If entryy = 420 name8$ = playernewname
- If entryy = 460 name9$ = playernewname
- If entryy = 500 name10$ = playernewname
- savehighscores()
- End Function
- ;------------------
- Function savehighscores ()
- file = WriteFile ("highscore.dat")
- For q = 0 To 29
- If q=0 WriteLine file,name1$ : nam = Len(name1$)
- If q=1 WriteLine file,score1$ : sco = Len(score1$)
- If q=2 sco = sco+nam * 666 + Int(score1) : WriteLine file, sco
- If q=3 WriteLine file,name2$ : nam = Len(name2$)
- If q=4 WriteLine file,score2$ : sco = Len(score2$)
- If q=5 sco = sco+nam * 667 + Int(score2) : WriteLine file, sco
- If q=6 WriteLine file,name3$ : nam = Len(name3$)
- If q=7 WriteLine file,score3$ : sco = Len(score3$)
- If q=8 sco = sco+nam * 662 + Int(score3) : WriteLine file, sco
- If q=9 WriteLine file,name4$ : nam = Len(name4$)
- If q=10 WriteLine file,score4$ : sco = Len(score4$)
- If q=11 sco = sco+nam * 663 + Int(score4) : WriteLine file, sco
- If q=12 WriteLine file,name5$ : nam = Len(name5$)
- If q=13 WriteLine file,score5$ : sco = Len(score5$)
- If q=14 sco = sco+nam * 664 + Int(score5) : WriteLine file, sco
- If q=15 WriteLine file,name6$ : nam = Len(name6$)
- If q=16 WriteLine file,score6$ : sco = Len(score6$)
- If q=17 sco = sco+nam * 676 + Int(score6) : WriteLine file, sco
- If q=18 WriteLine file,name7$ : nam = Len(name7$)
- If q=19 WriteLine file,score7$ : sco = Len(score7$)
- If q=20 sco = sco+nam * 686 + Int(score7) : WriteLine file, sco
- If q=21 WriteLine file,name8$ : nam = Len(name8$)
- If q=22 WriteLine file,score8$ : sco = Len(score8$)
- If q=23 sco = sco+nam * 696 + Int(score8) : WriteLine file, sco
- If q=24 WriteLine file,name9$ : nam = Len(name9$)
- If q=25 WriteLine file,score9$ : sco = Len(score9$)
- If q=26 sco = sco+nam * 606 + Int(score9) : WriteLine file, sco
- If q=27 WriteLine file,name10$ : nam = Len(name10$)
- If q=28 WriteLine file,score10$ : sco = Len(score10$)
- If q=29 sco = sco+nam * 616 + Int(score10) : WriteLine file, sco
- Next
- CloseFile (file)
- End Function
- Function displayhighscores ()
- stars = LoadImage ("stars1.png")
- timer = CreateTimer (45)
- beginframe = 0
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- starx = starx-3
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- beginframe = beginframe+1
- Next
- Cls
- TileBlock stars, starx, stary
- displaytextsmall ("hall of champions",306 , 100)
- displaytextsmall (name1$, 100, 140)
- displaytextsmall (name2$, 100, 180)
- displaytextsmall (name3$, 100, 220)
- displaytextsmall (name4$, 100, 260)
- displaytextsmall (name5$, 100, 300)
- displaytextsmall (name6$, 100, 340)
- displaytextsmall (name7$, 100, 380)
- displaytextsmall (name8$, 100, 420)
- displaytextsmall (name9$, 100, 460)
- displaytextsmall (name10$, 100, 500)
- displaytextsmall (RSet (score1$, 10), 590, 140)
- displaytextsmall (RSet (score2$, 10), 590, 180)
- displaytextsmall (RSet (score3$, 10), 590, 220)
- displaytextsmall (RSet (score4$, 10), 590, 260)
- displaytextsmall (RSet (score5$, 10), 590, 300)
- displaytextsmall (RSet (score6$, 10), 590, 340)
- displaytextsmall (RSet (score7$, 10), 590, 380)
- displaytextsmall (RSet (score8$, 10), 590, 420)
- displaytextsmall (RSet (score9$, 10), 590, 460)
- displaytextsmall (RSet (score10$, 10),590, 500)
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- Flip
- Until beginframe > 700
- FlushKeys()
- End Function
- ;--------------------ALIEN POINTS WORTH----------------
- Function alienpoints ()
- logo=LoadImage ("logo.png")
- stars=LoadImage ("stars1.png")
- timer=CreateTimer(45)
- begin1= -150
- begin2=1
- beginframe = 0
- spaciex=-19
- spaciex1 = 0
- spaciex2 = 0
- spaciex3 = 0
- Repeat
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- frames=WaitTimer(timer)
- For k=1 To frames
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- begin1=begin1+1
- stary=stary-2
- If beginframe<19
- If begin1>120
- begin1=120
- EndIf
- EndIf
- If begin1>119
- begin2=begin2+1
- If begin2>40
- begin2 = 1
- beginframe=beginframe+1
- EndIf
- If begin2<31 begin3 = 0
- If begin2>30 begin3 = 1
- If beginframe>1 spaciex=spaciex+2
- If spaciex>337 spaciex=337
- If spaciex=337
- spaciex1=spaciex1+2
- If spaciex1>337 spaciex1=337
- EndIf
- If spaciex1 = 337
- spaciex2 = spaciex2+2
- If spaciex2>318 spaciex2=318
- EndIf
- If spaciex2 =318
- spaciex3 = spaciex3 + 2
- If spaciex3>275 spaciex3 = 275
- EndIf
- EndIf
- Next
- Cls
- TileBlock stars, starx, stary
- If begin1>119
- If beginspace<31
- display_text ("play feast invaders", 70, begin1+ 150)
- EndIf
- If beginframe>1
- displaytextsmall ("score advance table", 290, begin1+205)
- displaytextsmall ("- 75 points", 357, begin1+260)
- DrawImage gyroalien, spaciex, begin1+260
- EndIf
- EndIf
- If spaciex=337
- DrawImage sfalien, spaciex1, begin1+310
- displaytextsmall ("- 75 points", 357, begin1+310)
- EndIf
- If spaciex1=337
- DrawImage ufo , spaciex2, begin1+360
- displaytextsmall ("- ? mystery", 378, begin1+360)
- EndIf
- If spaciex2 = 318
- displaytextsmall (" every 10000 points", 295, begin1+420)
- DrawImage shipmedium, spaciex3, begin1+420
- EndIf
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- DrawImage logo, 400, begin1
- Flip
- Until begin1>715
- FreeImage logo
- FreeImage stars
- End Function
- ;---------------------sludgesoft
- Function sludgesoft ()
- logo=LoadImage ("sludgesoft.png")
- timer=CreateTimer(45)
- begin1= 0
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- begin1 = begin1+1
- Next
- Cls
- DrawImage logo, 400, 300
- Flip
- Until begin1>100 Or KeyHit (1) = 1
- FreeImage logo
- End Function
- ;-------------------------display powerups
- Function displaypowerups ()
- logo=LoadImage ("logo.png")
- stars=LoadImage ("stars1.png")
- timer=CreateTimer(45)
- begin1= 1150
- beginframe = 0
- spaciex1 = 0
- Repeat
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- frames=WaitTimer(timer)
- For k=1 To frames
- stary = stary-3
- spaciex1 = spaciex1+1
- If spaciex1<550
- begin1 = begin1-2
- If begin1<400 begin1 = 400
- EndIf
- If spaciex1>850 begin1 = begin1-2
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- Next
- Cls
- TileBlock stars, starx, stary
- DrawImage logo, begin1, 120
- If spaciex1<1000
- If begin1<401
- DrawImage ddshot, 91,388
- displaytextsmall(" duff double shot - an extra missile pod for your ship",115 ,400)
- EndIf
- EndIf
- If spaciex1<1050
- If spaciex1>550
- DrawImage bbeam, 97,438
- displaytextsmall(" barnard beam - a slice of pure energy that kicks ass",121 ,450)
- EndIf
- EndIf
- If spaciex1<1100
- If spaciex1>700
- DrawImage nlazer, 15,488
- displaytextsmall(" nazer lazer - a plasma pulse that wont stop this side of dooms day",44 ,500)
- EndIf
- EndIf
- If spaciex1<1150
- If spaciex1>850
- DrawImage bbomb, 168,538
- displaytextsmall(" brunsdon bomb - the expanding red death",192 ,550)
- EndIf
- EndIf
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- Flip
- Until begin1<-350
- FreeImage logo
- FreeImage stars
- End Function
- ;---------------------------how to play
- Function howtoplay ()
- logo=LoadImage ("logo.png")
- stars=LoadImage ("stars1.png")
- htp1 = "left and right arrow keys move your ship"
- htp2 = "use the spacebar to fire missiles"
- htp3 = "shoot ufos for powerups hit alt-gr to use them"
- htp4 = "use o for options and during play hit p to pause"
- timer=CreateTimer(45)
- begin1= 750
- begin2 = 1
- begin3 = 0
- txtcnt = 0
- spaciex1 = 0
- shipx=30
- shoty = 575
- Repeat
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- frames=WaitTimer(timer)
- For k=1 To frames
- begin3 = begin3+1
- If spaciex1 = 0
- begin1=begin1-3
- If begin1<120
- begin1=120
- spaciex1=1
- EndIf
- EndIf
- If spaciex1=1
- althtp1$ = htp1$
- If begin3=7
- txtcnt = txtcnt + 1
- If txtcnt=40
- spaciex1 = 2
- txtcnt = 0
- EndIf
- EndIf
- EndIf
- If spaciex1 = 2
- shipx = shipx+10
- If begin3=7 txtcnt = txtcnt + 1
- If shipx>770
- shipx=770
- spaciex1=3
- EndIf
- EndIf
- If spaciex1 = 3
- shipx = shipx-10
- If begin3=7 txtcnt = txtcnt + 1
- If shipx<400 shipx=400
- If txtcnt=33
- spaciex1=4
- txtcnt=0
- EndIf
- EndIf
- If spaciex1 = 4
- shoty = shoty-8
- If begin3=7 txtcnt = txtcnt + 1
- If shoty<-50 shoty=575
- If txtcnt = 46
- spaciex1=5
- shoty=shoty +8
- txtcnt=0
- EndIf
- EndIf
- If spaciex1 = 5
- shoty = shoty-8
- If begin3=7 txtcnt = txtcnt + 1
- If shoty<-50 shoty=575
- If txtcnt > 70 And shoty=575
- txtcnt = 0
- spaciex1=6
- EndIf
- EndIf
- stary = stary-1
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- begin2=begin2+1
- If begin2>40 begin2 = 1
- If begin3=7 begin3=0
- Next
- Cls
- TileBlock stars, starx, stary
- If spaciex1>3
- DrawImage fire, 400, shoty
- displaytextsmall (""+htp2$, 228, 350)
- EndIf
- If begin1 = 120
- If beginspace<31 display_text ("how to play", 218, 270)
- EndIf
- If spaciex1 = 1
- althtp1$ = Mid$(htp1$,1,txtcnt)
- displaytextsmall (""+althtp1$, 180, 330)
- EndIf
- If spaciex1>1
- displaytextsmall (""+htp1$, 180, 330)
- DrawImage ship, shipx, 575
- EndIf
- If spaciex1>1 And spaciex1<4
- althtp1$ = Mid$(htp2$,1,txtcnt)
- displaytextsmall (""+althtp1$, 228, 350)
- EndIf
- If spaciex1 = 4
- althtp1$ = Mid$(htp3$,1,txtcnt)
- displaytextsmall (""+althtp1$, 146, 370)
- EndIf
- If spaciex1 = 5
- althtp1$ = Mid$(htp4$,1,txtcnt)
- displaytextsmall (""+althtp1$, 135, 390)
- EndIf
- If spaciex1 > 4 displaytextsmall (""+htp3$, 146, 370)
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- DrawImage logo, 400, begin1
- Flip
- Until spaciex1 = 6
- FreeImage logo
- FreeImage stars
- End Function
- ;---------------------------GALLERY
- Function gallery ()
- stars=LoadImage ("stars1.png")
- spaciex = 0
- gallery1 = LoadImage ("6.jpg")
- gallery2 = LoadImage ("record1.png")
- gallery3 = LoadImage ("record2.png")
- gallery4= LoadImage ("record3.png")
- gallery5= LoadImage ("record4.jpg")
- timer=CreateTimer(45)
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- stary = stary+1
- starx = starx-1
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- spaciex = spaciex + 1
- Next
- Cls
- TileBlock stars,starx, stary
- If spaciex>50 And spaciex<350
- DrawBlock (gallery1, 400, 300)
- displayTextsmall ("rock n roll with sludgefeast at www.sludgefeast.co.uk",108, 50)
- EndIf
- If spaciex>400 And spaciex<600
- DrawBlock (gallery2, 400, 300)
- displayTextsmall ("first single baby you f--k me up - lll2100 cds",147, 50)
- EndIf
- If spaciex>650 And spaciex<850
- DrawBlock (gallery3, 400, 300)
- displayTextsmall ("second single rock n roll - fzbx003 (fuzzbox)",152, 50)
- EndIf
- If spaciex>900 And spaciex<1100
- DrawBlock (gallery4, 400, 300)
- displayTextsmall ("debut album rock n roll - fzbx003 (fuzzbox)",163, 50)
- EndIf
- If spaciex>1150 And spaciex<1350
- DrawBlock (gallery5, 400, 300)
- displayTextsmall ("second album sf90 - sf666 (sludgesounds)",185, 50)
- EndIf
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- Flip
- Until spaciex>1400
- FreeImage gallery1
- FreeImage gallery2
- FreeImage gallery3
- FreeImage gallery4
- FreeImage gallery5
- End Function
- ;--------------------------gallery2
- Function gallery2 ()
- stars=LoadImage ("stars1.png")
- spaciex = 0
- gallery1 = LoadImage ("1.jpg")
- gallery2 = LoadImage ("2.jpg")
- gallery3 = LoadImage ("4.jpg")
- gallery4= LoadImage ("3.jpg")
- gallery5= LoadImage ("5.jpg")
- timer=CreateTimer(45)
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- If KeyHit (1) End
- If KeyDown (57) game()
- If KeyHit (24) options()
- stary = stary+2
- spaciex = spaciex + 1
- beginspace = beginspace+1
- If beginspace>40 beginspace=1
- Next
- Cls
- TileBlock stars,starx,stary
- If spaciex>50 And spaciex <250
- DrawBlock (gallery1, 400, 300)
- displayTextsmall ("rock n roll with sludgefeast at www.sludgefeast.co.uk",108, 50)
- EndIf
- If spaciex>300 And spaciex<500
- DrawBlock (gallery2, 400, 300)
- displayTextsmall ("thanks for playing feast invaders",218, 50)
- EndIf
- If spaciex>500 And spaciex<700
- DrawBlock (gallery3, 400, 300)
- displayTextsmall ("its good to see you f--ked those invaders up and kicked them in to touch",4, 50)
- EndIf
- If spaciex>800 And spaciex<1000
- DrawBlock (gallery4, 400, 300)
- displayTextsmall ("email the highscore.dat file To us To get on the all time champion list",4, 50)
- EndIf
- If spaciex>1050 And spaciex<1300
- DrawBlock (gallery5, 400, 300)
- displayTextsmall ("see you later f--kers.....down at the arcade",158, 50)
- EndIf
- If beginspace<31 displaytextsmall ("hit space to play", 606, 590)
- Flip
- Until spaciex>1350
- End Function
- ;--------------------------options
- Function options ()
- stars=LoadImage ("stars1.png")
- Repeat
- starx = starx+1
- If KeyHit (203)
- difficulty = difficulty + 1
- If difficulty > 1 difficulty = 0
- EndIf
- If KeyHit (205)
- difficulty = difficulty + 1
- If difficulty > 1 difficulty = 0
- EndIf
- Cls
- TileBlock stars,starx,stary
- display_text ("options", 284, 40)
- displaytextsmall ("use arrow keys To change option", 229, 90)
- If difficulty = 0
- DrawImage powerupcircle, 303, 160
- displaytextsmall ("difficulty - easy", 306 ,160)
- displaytextsmall ("for the people who are quite happy To", 196,195)
- displaytextsmall ("humiliate themselves without giving a f--k", 169,215)
- displaytextsmall ("when playing easy you will be rewarded with", 163,235)
- displaytextsmall ("5 extra ships on starting but the rest of the", 151,255)
- displaytextsmall ("game remains unchanged choose this option If",158 ,275)
- displaytextsmall ("you want - you damn pussy",262, 295)
- EndIf
- If difficulty = 1
- DrawImage powerupcircle, 508, 160
- displaytextsmall ("difficulty - hard", 306,160)
- displaytextsmall ("for the evil mother f--kers among you", 196,195)
- displaytextsmall ("hard is the only way to acumulate a trully", 169,215)
- displaytextsmall ("kick ass score because unlike easy when the", 163,235)
- displaytextsmall ("game is completed you will return to level", 169,255)
- displaytextsmall ("one and continue to up your score - you start",151 ,275)
- displaytextsmall ("the game with 4 lives",284, 295)
- EndIf
- displaytextsmall ("on the numeric keypad use 0 and 1 during play",152 , 400)
- displayTextsmall ("to adjust music volume and 4 to skip a track",158 ,420)
- displaytextsmall ("hit enter to exit", 306,500)
- Flip
- Until KeyDown (28) Or KeyDown (156)
- FreeTimer (timer)
- saveoptions ()
- FlushKeys()
- timer=CreateTimer(45)
- End Function
- ;--------------------------INTRO ANIMATIONS------------------------------------
- Function animationone ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("firstanimation.jpg", 320, 240, 0, 20)
- timer=CreateTimer(10)
- rocktv = PlayMusic ("animone.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 19
- Delay 500
- FreeImage intro
- ResumeChannel (rockradio)
- End Function
- ;----------------------------------------
- Function animationasteroid ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("asteroidsanim.jpg", 320, 240, 0, 20)
- timer=CreateTimer(10)
- rocktv = PlayMusic ("asteroidanim.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 19
- Delay 500
- ResumeChannel (rockradio)
- FreeImage intro
- End Function
- ;----------------------------------------
- Function animationtwo ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("secondanimation.jpg", 320, 240, 0, 20)
- timer=CreateTimer(10)
- rocktv = PlayMusic ("animtwo.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 19
- Delay 500
- FreeImage intro
- ResumeChannel (rockradio)
- End Function
- ;----------------------------------------
- Function animationthree ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("thirdanimation.jpg", 320, 240, 0, 20)
- timer=CreateTimer(10)
- rocktv = PlayMusic ("animthree.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 19
- Delay 500
- FreeImage intro
- ResumeChannel (rockradio)
- End Function
- ;--------------------------------------------------------------
- Function animationfive ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("shipchangeanim.jpg", 320, 240, 0, 40)
- timer=CreateTimer(10)
- rocktv=PlayMusic ("james86.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>39 introframe=39
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 39
- Delay 1000
- introframe=0
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>74 introframe=74
- Next
- Cls
- displaytextsmall ("please relax with this vintage entertainment while the", 103, 40)
- displaytextsmall ("sludgefeast atmospheric cruiser prepares for departure", 103, 60)
- DrawImage intro, 400, 300, 6
- Flip
- Until KeyDown (1) = 1 Or introframe = 74
- FreeImage intro
- ResumeChannel (rockradio)
- End Function
- ;--------------------------------------------------------------
- Function animationsix ()
- If ChannelPlaying (rockradio) = 1
- PauseChannel (rockradio)
- EndIf
- introframe = -1
- intro = LoadAnimImage ("atmosanim.jpg", 320, 240, 0, 20)
- timer=CreateTimer(10)
- rocktv = PlayMusic ("animsix.mp3")
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- introframe = introframe+1
- If introframe>19 introframe=19
- Next
- Cls
- DrawImage intro, 400, 300, introframe
- Flip
- Until KeyDown (1) = 1 Or introframe = 19
- Delay 500
- FreeImage intro
- ResumeChannel (rockradio)
- End Function
- ;-----------------------INITIALIZE LEVEL---------------------------------------
- Function initializelevel()
- ;If level>1
- FreeTimer (timer)
- Cls
- Flip
- If level = 1 background = space
- If level = 6 background = space2
- If level = 11 background = space3
- If level = 16 background = space4
- If level = 21 background = space5
- If level = 26 background = space6
- If level = 31 background = space7
- If level = 36 background = stars
- If level > 38 background = space8
- If level = 1 czone = czone1
- If level = 11 czone = czone2
- If level = 21 czone = czone3
- If level = 31 czone = czone4
- ufornd = 30
- For a.ufo = Each ufo
- Delete a
- If ChannelPlaying (ufochannel) <> 0 Then
- StopChannel (ufochannel)
- EndIf
- Next
- For b.powerup=Each powerup
- Delete b
- Next
- For c.missile = Each missile
- Delete c
- Next
- For d.bomb = Each bomb
- Delete d
- Next
- For e.firebomb = Each firebomb
- Delete e
- Next
- For f.tribomb = Each tribomb
- Delete f
- Next
- For g.boomerangbomb = Each boomerangbomb
- Delete g
- Next
- For h.asteroid = Each asteroid
- Delete h
- Next
- For i.sludgebomb = Each sludgebomb
- Delete i
- Next
- For j.doublebomb = Each doublebomb
- Delete j
- Next
- For m.pubbomb = Each pubbomb
- Delete m
- Next
- For n.pubbeam = Each pubbeam
- Delete n
- Next
- For o.punlazer = Each punlazer
- Delete o
- Next
- For p.explosion = Each explosion
- Delete p
- Next
- For r.shipbomb = Each shipbomb
- Delete r
- Next
- For t.bluebomb = Each bluebomb
- Delete t
- Next
- For u.bombone = Each bombone
- Delete u
- Next
- If level = 10 boss=1
- If level = 20 boss = 1
- If level = 30 boss = 1
- If level = 40 boss = 1
- exx=MilliSecs()
- Repeat
- exy=MilliSecs()
- Cls
- DrawImage czone,400, 300
- display_text("level"+level,540,570)
- Flip
- Until exx-exy< -1500
- If level = 10 createboss1 ()
- If level = 20 createboss2 ()
- If level = 30 createboss3 ()
- If level = 40 createboss4 ()
- If boss=0 initializealien()
- initializeframecounter ()
- If level = 1 animationone ()
- If level = 5 animationasteroid ()
- If level = 11 animationtwo ()
- If level = 21 animationthree ()
- If level = 38 animationfive ()
- If level = 39 animationsix ()
- FlushKeys
- timer=CreateTimer(45)
- End Function
- ;-------------------------musicfunction--------------------------
- Function checkmusic ()
- If KeyDown(79)
- If musicvol <1
- musicvol = musicvol + .01
- ChannelVolume rockradio, musicvol
- EndIf
- EndIf
- If KeyDown(82)
- musicvol = musicvol - .01
- If musicvol < 0 musicvol = 0
- ChannelVolume rockradio, musicvol
- EndIf
- If KeyHit(75)
- If ChannelPlaying (rockradio) = 1 StopChannel rockradio
- EndIf
- If musicvol>0
- If ChannelPlaying (rockradio) = 0
- songnum = songnum+1
- If songnum>11 songnum = 0
- If songnum = 0 rockradio = PlayMusic ("spaceinvadersthemetune.mp3")
- If songnum = 1 rockradio = PlayMusic ("fuckrockn roll.mp3")
- If songnum = 2 rockradio = PlayMusic ("E-G-A.mp3")
- If songnum = 3 rockradio = PlayMusic ("wanna ride .mp3")
- If songnum = 4 rockradio = PlayMusic ("1978.mp3")
- If songnum = 5 rockradio = PlayMusic ("instrumental10.mp3")
- If songnum = 6 rockradio = PlayMusic ("outofcontrol.mp3")
- If songnum = 7 rockradio = PlayMusic ("righton(alt mix).mp3")
- If songnum = 8 rockradio = PlayMusic ("rock'n'rollbitch.mp3")
- If songnum = 9 rockradio = PlayMusic ("headin'for someaction .mp3")
- If songnum = 10 rockradio = PlayMusic ("andys3 (alt mix).mp3")
- If songnum = 11 rockradio = PlayMusic ("1971(I'vegotitgoin'on).mp3")
- ChannelVolume rockradio, musicvol
- EndIf
- EndIf
- End Function
- ;-------------------------textfunction------------------------
- Function display_text(txt$,tx,ty)
- txt$ = Upper$(txt$) ; make uppercase
- For x = 1 To Len(txt$) ; go through all letters
- ch$ = Mid$(txt$,x,1) ; get letter
- char = Asc(ch$) - 32 ; find sprite number
- ; display letter
- DrawImage feastfont,tx + (x * 33),ty,char
- Next
- End Function
- ;-----------------------
- Function displaytextsmall(txt$,tx,ty)
- txt$ = Upper$(txt$) ; make uppercase
- For x = 1 To Len(txt$) ; go through all letters
- ch$ = Mid$(txt$,x,1) ; get letter
- Select ch$
- Case "-"
- char = 14
- Case "?"
- char = 30
- End Select
- char = Asc(ch$) - 32 ; find sprite number
- ; display letter
- DrawImage feastfontsmall,tx + (x * 11),ty,char
- Next
- End Function
- ;-----------------------PLAYER FUNCTIONS---------------------------------------
- Function initializeplayer ()
- p.player = New player
- p\x = x
- p\y = y
- If difficulty = 1 p\lives=3
- If difficulty = 0 p\lives=8
- p\alive=1
- p\invinc=0
- p\extralives=1000
- p\score=0
- playerlives = 1
- playernewscore = 0
- End Function
- Function updateplayer ()
- For p.player = Each player
- If KeyDown (203) = 1 Then p\x = p\x - s
- If KeyDown (205) = 1 Then p\x = p\x + s
- If p\x>770 Then p\x = 770
- If p\x<30 Then p\x = 30
- If p\invinc=99
- maxmissiles = 0
- p\barnardbeam = 0
- p\brunsdonbomb = 0
- p\nazerlazer = 0
- EndIf
- If KeyHit (57) = 1 And p\alive = 1 Then FireMissile (fire, p\x , p\y - 10 )
- If KeyHit (184)
- If boss = 1 powerupchannel = PlaySound (noshot)
- If boss = 0
- If p\brunsdonbomb > 0 firebbomb (p\x, p\y - 10) : p\brunsdonbomb = 0
- If p\nazerlazer > 0 firenlazer (p\x, p\y - 10): p\nazerlazer = p\nazerlazer - 1
- If p\barnardbeam > 0 firebbeam (): p\barnardbeam = 0
- EndIf
- EndIf
- If (p\score*100/1000) > p\extralives
- p\lives=p\lives+1
- If p\score>250000 p\extralives = p\extralives+1000
- If p\score>350000 p\extralives = p\extralives+3000
- p\extralives=p\extralives+1000
- EndIf
- If p\invinc >0 p\invinc=p\invinc-1
- Next
- End Function
- Function drawplayer ()
- For p.player = Each player
- If p\alive=1 And playerlives>0
- If level < 38
- If p\invinc = 0 DrawImage ship, p\x, p\y
- If p\invinc <>0
- If (p\invinc>0 And p\invinc<11) DrawImage shipcreate, p\x, p\y, 9
- If (p\invinc>10 And p\invinc<21) DrawImage shipcreate, p\x, p\y, 8
- If (p\invinc>20 And p\invinc<31) DrawImage shipcreate, p\x, p\y, 7
- If (p\invinc>30 And p\invinc<41) DrawImage shipcreate, p\x, p\y, 6
- If (p\invinc>40 And p\invinc<51) DrawImage shipcreate, p\x, p\y, 5
- If (p\invinc>50 And p\invinc<61) DrawImage shipcreate, p\x, p\y, 4
- If (p\invinc>60 And p\invinc<71) DrawImage shipcreate, p\x, p\y, 3
- If (p\invinc>70 And p\invinc<81) DrawImage shipcreate, p\x, p\y, 2
- If (p\invinc>80 And p\invinc<91) DrawImage shipcreate, p\x, p\y, 1
- If (p\invinc>90 And p\invinc<101) DrawImage shipcreate, p\x, p\y, 0
- EndIf
- EndIf
- EndIf
- If p\alive = 1
- If level = 38
- DrawImage shipvintage, p\x, p\y
- ;If p\invinc = 0 DrawImage ship, p\x, p\y
- EndIf
- If level > 38
- If p\invinc > 0 DrawImage ship22, p\x, p\y
- If p\invinc = 0 DrawImage ship2, p\x, p\y
- EndIf
- EndIf
- displaytextsmall ("ships", 20, 20)
- For t = 1 To p\lives
- DrawImage shipsmall, 75 + (25*t), 18
- Next
- displaytextsmall ("score "+p\score, 600, 20)
- If p\brunsdonbomb > 0 Or p\nazerlazer > 0 Or p\barnardbeam > 0
- DrawImage powerupcircle, 485, 21, (animframe)
- If animframethree = 1 DrawImage powerupflash, 545, 21
- EndIf
- Next
- End Function
- ;-----------------------------------UFO FUNCTIONS--------------------------------------
- Function checkufo ()
- If ufornd<300
- ufornd= Rnd (300)
- If ufornd = 300
- ufochannel = PlaySound (ufosound)
- a.ufo = New ufo
- a\x=-69
- a\animationstart=MilliSecs()
- EndIf
- EndIf
- End Function
- Function updateufo ()
- For a.ufo= Each ufo
- newtime=MilliSecs()
- A\time_elapsed=newtime-A\AnimationStart
- If A\time_elapsed > 50
- a\frame = a\frame + 1
- If A\Frame > 15
- A\Frame = 0
- EndIf
- A\AnimationStart=MilliSecs()
- EndIf
- a\x = a\x+5
- If a\x >835
- Delete a
- If ChannelPlaying (ufochannel) <> 0 Then
- StopChannel (ufochannel)
- EndIf
- ufornd = Rnd(300)
- EndIf
- For b.Missile = Each Missile
- If a <> Null
- If ImagesCollide ( fire,b\x,b\y, 0, ufo,a\x,20, 0 )
- exx = A\x
- exy = 20
- Delete a
- Delete b
- If ChannelPlaying (ufochannel) <> 0 Then
- StopChannel (ufochannel)
- EndIf
- ufochannel = PlaySound (ufoexpsound)
- expkind=1
- createexplosion ()
- If level < 38 Or level>38
- createpowerup ()
- EndIf
- ufornd = Rnd (9)
- For p.player = Each player
- If ufornd < 3
- p\score = p\score+150
- bombx = 150
- createufoscore ()
- EndIf
- If ufornd > 2 And ufornd < 5
- p\score = p\score+300
- bombx = 300
- createufoscore ()
- EndIf
- If ufornd > 4 And ufornd < 7
- p\score = p\score+400
- bombx = 400
- createufoscore ()
- EndIf
- If ufornd > 6 And ufornd < 9
- p\score = p\score+500
- bombx = 500
- createufoscore ()
- EndIf
- If ufornd = 9
- p\score = p\score+800
- bombx = 150
- createufoscore ()
- EndIf
- Next
- ufornd = Rnd(300)
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawufo ()
- For u.ufo=Each ufo
- If level<38
- DrawImage ufo, u\x, 20,u\frame
- EndIf
- If level=38
- DrawImage ufovintage, u\x, 20
- EndIf
- If level>38
- DrawImage ufoalt, u\x, 20
- EndIf
- Next
- End Function
- ;-----------------------------------------UFOSCORE
- Function createufoscore ()
- u.ufoscore=New ufoscore
- u\x = exx-20
- If u\x>750 u\x=750
- If u\x<1 u\x= 1
- u\y = exy+15
- u\txt$ = ""+bombx
- u\fr=0
- End Function
- Function updateufoscore ()
- For u.ufoscore = Each ufoscore
- u\fr = u\fr+1
- If u\fr>40
- Delete u
- EndIf
- Next
- End Function
- Function drawufoscore ()
- For u.ufoscore = Each ufoscore
- displaytextsmall(u\txt$,u\x,u\y)
- Next
- End Function
- ;-------------------------------POWERUP FUNCTIONS-----------------------------------------------
- Function createpowerup ()
- u.powerup = New powerup
- u\x=exx
- If u\x > 788 u\x = 788
- If u\x < 12 u\x = 12
- u\y=exy
- u\kind = Rnd (3)
- End Function
- Function updatepowerup ()
- For u.powerup = Each powerup
- If u <> Null
- u\y=u\y+2
- If u\y>618 Delete u
- EndIf
- For p.player = Each player
- If u <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, bbomb,u\x,u\y, 0 ) And p\alive = 1
- If u\kind = 0 p\brunsdonbomb=1 : p\barnardbeam=0 : p\nazerlazer=0
- If u\kind = 1 p\barnardbeam=1 :p\brunsdonbomb=0 : p\nazerlazer=0
- If u\kind = 2 maxmissiles=1
- If u\kind = 3 p\nazerlazer=2 : p\brunsdonbomb=0 : p\barnardbeam=0
- Delete u
- powerupchannel = PlaySound (powerupsound)
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawpowerup ()
- For u.powerup = Each powerup
- If u <> Null
- If u\kind = 0
- DrawImage bbomb, u\x, u\y
- EndIf
- If u\kind = 1
- DrawImage bbeam, u\x, u\y
- EndIf
- If u\kind = 2
- DrawImage ddshot, u\x, u\y
- EndIf
- If u\kind = 3
- DrawImage nlazer, u\x, u\y
- EndIf
- EndIf
- Next
- End Function
- ;-----------------------------------brunsdonbomb-------------------------------------
- Function firebbomb (xposition, yposition)
- a.pubbomb = New pubbomb
- missilechannel = PlaySound (missilesound)
- a\x = xposition
- a\y = yposition
- a\state = 0
- a\frame = 0
- End Function
- Function Updatebbomb ()
- For b.pubbomb = Each pubbomb
- If b <> Null
- If b\state = 1
- For a.alien = Each alien
- If a <> Null
- If ImagesOverlap ( sfalien,A\x,A\y, bbombexppic, b\x, b\y )
- exx = A\x
- exy = A\y
- aliensalive = aliensalive-1
- checkalienstep()
- For p.player=Each player
- p\score=p\score+75
- Next
- If expcount = 0
- explosionchannel = PlaySound (explosionsound)
- expcount = expcountmax
- EndIf
- expkind = 0
- createexplosion ()
- Delete a
- EndIf
- EndIf
- Next
- newtime=MilliSecs()
- b\timeelapsed=newtime-b\animationstart
- If b\timeelapsed > 50
- b\frame = b\frame + 1
- b\animationstart=MilliSecs ()
- If b\Frame > 15
- b\y = -1
- EndIf
- EndIf
- EndIf
- If b\state = 0
- b\y=b\y - 10
- For a.alien = Each alien
- If a <> Null
- If ImagesCollide ( sfalien,A\x,A\y, 0, bbombpic, b\x, b\y, 0 )
- exx = A\x
- exy = A\y
- aliensalive = aliensalive-1
- checkalienstep()
- explosionchannel = PlaySound (explosionsound)
- For p.player=Each player
- p\score=p\score+75
- Next
- expkind = 0
- createexplosion ()
- Delete a
- b\state=1
- missilechannel = PlaySound (bbombsound)
- b\animationstart = MilliSecs ()
- EndIf
- EndIf
- Next
- EndIf
- EndIf
- If b\y < 0 Then Delete b
- Next
- End Function
- Function drawbbomb ()
- For a.pubbomb = Each pubbomb
- If a <> Null
- If a\state=0 DrawImage bbombpic, a\x, a\y
- If a\state = 1 DrawImage bbombexppic, a\x, a\y, (a\frame)
- EndIf
- Next
- End Function
- ;---------------------------------NAZERLAZER-----------------------------
- Function firenlazer (xposition, yposition)
- a.punlazer = New punlazer
- powerupchannel = PlaySound (nlazersound)
- a\x = xposition
- a\y = yposition
- End Function
- Function Updatenlazer ()
- For b.punlazer = Each punlazer
- If b <> Null
- For a.alien = Each alien
- If a <> Null
- If ImagesCollide ( sfalien,A\x,A\y, 0, nlazerpic, b\x, b\y, 0 )
- exx = A\x
- exy = A\y
- aliensalive = aliensalive-1
- checkalienstep()
- If expcount = 0
- explosionchannel = PlaySound (explosionsound)
- expcount = expcountmax
- EndIf
- For p.player=Each player
- p\score=p\score+75
- Next
- expkind = 0
- createexplosion ()
- Delete a
- EndIf
- EndIf
- Next
- b\y=b\y - 15
- If b\y < 0 Delete b
- EndIf
- Next
- End Function
- Function drawnlazer ()
- For a.punlazer = Each punlazer
- If a <> Null
- DrawImage nlazerpic, a\x, a\y
- EndIf
- Next
- End Function
- ;----------------------BARNARDBEAM---------------------------------
- Function firebbeam ()
- a.pubbeam = New pubbeam
- powerupchannel = PlaySound (bbeamsound)
- a\y = 275
- a\state = 0
- a\frame = 0
- a\animationstart = MilliSecs ()
- End Function
- Function Updatebbeam ()
- For b.pubbeam = Each pubbeam
- If b <> Null
- For p.player = Each player
- b\x = p\x
- If p\alive = 0 Delete b
- Next
- If b <> Null
- For a.alien = Each alien
- If a <> Null
- If ImagesOverlap ( sfalien,A\x,A\y, bbeampic, b\x, b\y )
- exx = A\x
- exy = A\y
- aliensalive = aliensalive-1
- checkalienstep()
- If expcount = 0
- explosionchannel = PlaySound (explosionsound)
- expcount = expcountmax
- EndIf
- For p.player=Each player
- p\score=p\score+75
- Next
- expkind = 0
- createexplosion ()
- Delete a
- EndIf
- EndIf
- Next
- newtime=MilliSecs()
- b\timeelapsed=newtime-b\animationstart
- If b\timeelapsed > 200
- Delete b
- EndIf
- EndIf
- EndIf
- Next
- End Function
- Function drawbbeam ()
- For a.pubbeam = Each pubbeam
- If a <> Null
- DrawImage bbeampic, a\x, a\y
- EndIf
- Next
- End Function
- ;-------------------------------ASTEROID FUNCTIONS------------------------------------
- Function checkasteroid()
- If level = 5 exx = Rnd (100)
- If level = 15 exx = Rnd (75)
- If level = 25 exx = Rnd (50)
- If level = 35 exx = Rnd (25)
- If exx=10
- a.asteroid = New asteroid
- a\x = Rnd (800)
- a\y = 0
- a\frame = Rnd (4)
- End If
- End Function
- Function updateasteroid ()
- For a.asteroid=Each asteroid
- a\y=a\y+4
- a\x=a\x+3
- If a\x>800 a\x=0
- If a\y>600 Delete a
- For p.player= Each player
- If a <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, fbomb,a\x,a\y, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete a
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawasteroid ()
- For a.asteroid=Each asteroid
- DrawImage asteroidbomb, a\x, a\y, (a\frame)
- Next
- End Function
- ;-------------------------------MISSILE FUNCTION---------------------------------------
- Function FireMissile (image, xposition, yposition)
- If maxmissiles = -1 Or missilecount < maxmissiles ;(-1)
- a.missile = New missile
- missilechannel = PlaySound (missilesound)
- a\image = image
- a\x = xposition
- a\y = yposition
- EndIf
- End Function
- Function UpdateMissiles ()
- missilecount = -1
- For a.missile = Each missile
- If a <> Null
- missilecount = missilecount + 1
- a\y = a\y - missilestep
- If a\y < 0 Then Delete a
- EndIf
- Next
- End Function
- Function drawmissiles ()
- For a.missile = Each missile
- If a <> Null
- If level<38 Or level>38
- DrawImage a\image, a\x, a\y
- EndIf
- If level = 38
- DrawImage firevintage, a\x, a\y
- EndIf
- EndIf
- Next
- End Function
- ;----------------------INITIALIZE FRAME COUNTER
- Function initializeframecounter ()
- animationstart=MilliSecs
- animationtimer=50
- End Function
- Function updateframecounter ()
- newtime=MilliSecs()
- timeelapsed=newtime-AnimationStart
- If timeelapsed > AnimationTimer
- animframe = animframe + 1
- animframetwo = animframetwo + 1
- If animFrame > 7
- animFrame = 0
- EndIf
- If animframetwo > 15
- animframetwo = 0
- EndIf
- AnimationStart=MilliSecs()
- EndIf
- If animframe < 4 animframethree = 0
- If animframe > 3 animframethree = 1
- End Function
- ;----------------------INITIALIZE ALIEN------------------------------------------
- Function InitializeAlien()
- If level = 1 Restore level1
- If level = 2 Restore level2
- If level = 3 Restore level3
- If level = 4 Restore level4
- If level = 5 Restore level5
- If level = 6 Restore level6
- If level = 7 Restore level7
- If level = 8 Restore level8
- If level = 9 Restore level9
- If level = 11 Restore level11
- If level = 12 Restore level12
- If level = 13 Restore level13
- If level = 14 Restore level14
- If level = 15 Restore level15
- If level = 16 Restore level16
- If level = 17 Restore level17
- If level = 18 Restore level18
- If level = 19 Restore level19
- If level = 21 Restore level21
- If level = 22 Restore level22
- If level = 23 Restore level23
- If level = 24 Restore level24
- If level = 25 Restore level25
- If level = 26 Restore level26
- If level = 27 Restore level27
- If level = 28 Restore level28
- If level = 29 Restore level29
- If level = 31 Restore level31
- If level = 32 Restore level32
- If level = 33 Restore level33
- If level = 34 Restore level34
- If level = 35 Restore level35
- If level = 36 Restore level36
- If level = 37 Restore level37
- If level = 38 Restore level38
- If level = 39 Restore level39
- For t = 1 To 12 : For h = 1 To 4
- a.alien = New Alien
- a\x = 20+spacer * t
- a\y = 20+spacer * h
- direction=0
- a\frame = 0
- Read a\kind
- aliensalive = aliensalive+1
- If a\kind=99 Delete a : aliensalive=aliensalive-1
- Next : Next
- End Function
- ;---------------------DIRECT ALIEN--------------------------
- Function directalien ()
- For a.alien = Each alien
- If A\X > 780 Then
- direction = 1
- dropq = 1
- EndIf
- If A\x < 20 Then
- direction=0
- dropq = 1
- EndIf
- If a\y > 540 upaliens ()
- Next
- End Function
- Function upaliens ()
- For a.alien = Each alien
- a\y = a\y-150
- Next
- For p.player= Each player
- If p\invinc=0
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- Next
- End Function
- Function directalien2 ()
- If dropq = 1 And direction = 1 Then
- astep = -astep
- EndIf
- If direction=0 And dropq = 1Then
- astep = -astep
- EndIf
- End Function
- ;---------------------------UPDATE ALIEN----------------------------
- Function UpdateAlien()
- For a.alien = Each alien
- a\x = a\x + astep
- ;------------sfalien
- ;If a\kind = 0
- ;newtime=MilliSecs()
- ;A\time_elapsed=newtime-A\AnimationStart
- ;If A\time_elapsed > A\AnimationTimer
- ;a\frame = a\frame + 1
- ; If A\Frame > 7
- ; A\Frame = 0
- ; EndIf
- ; A\AnimationStart=MilliSecs()
- ; EndIf
- ;EndIf
- ;------------blobalien
- If a\kind = 1
- If a\brnd<100
- a\brnd = Rnd (100)
- EndIf
- If a\brnd = 100 Then
- newtime=MilliSecs()
- A\time_elapsed=newtime-A\AnimationStart
- If A\time_elapsed > A\AnimationTimer
- A\Frame = A\Frame + 1
- If A\Frame > 8
- A\Frame = 0 : a\brnd= Rnd (100)
- EndIf
- A\AnimationStart=MilliSecs()
- EndIf
- EndIf
- If a\frame = 4 Then bombx=a\x - 10 : bomby = a\y: droptripplebomb () : a\frame=5
- EndIf
- ;-------------lightningalien
- If a\kind = 2
- If a\brnd<100
- a\brnd = Rnd (100)
- EndIf
- If a\brnd = 100 Then
- newtime=MilliSecs()
- A\time_elapsed=newtime-A\AnimationStart
- If A\time_elapsed > A\AnimationTimer
- A\Frame = A\Frame + 1
- If a\frame = 4 Then a\extratime = MilliSecs ()
- If newtime - a\extratime < 1350 : a\frame = 6
- If newtime - a\extratime < 350 : a\frame = 5
- EndIf
- EndIf
- If A\Frame > 8
- A\Frame = 0 : a\brnd= Rnd (100)
- EndIf
- A\AnimationStart=MilliSecs()
- EndIf
- EndIf
- If a\frame = 6
- a\alienvariable = a\y+58
- a\alienva = a\alienva+1
- If a\alienva=20 a\alienva = 0
- If a\alienva<10 a\alienv=0
- If a\alienva>10 a\alienv=1
- EndIf
- EndIf
- ;------------domealien/gyro
- If a\kind = 3 Or a\kind = 29 Or a\kind = 30 Or a\kind = 31
- a\brnd = Rnd (300)
- If a\brnd = 100 : bombx=a\x-20 : bomby = a\y
- dropbomb ()
- EndIf
- EndIf
- ;--------------------ashdowncabalien
- If a\kind = 5 Or a\kind = 23
- a\brnd = Rnd (150)
- If a\brnd = 150 : bombx=a\x : bomby = a\y
- dropbomb ()
- EndIf
- EndIf
- ;------------custom
- If a\kind = 7 Or a\kind = 25 Or a\kind = 26 Or a\kind = 27
- a\brnd = Rnd (600)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropbomb ()
- EndIf
- EndIf
- ;------------top20alien
- If a\kind = 10 Or a\kind = 15
- a\brnd = Rnd (400)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropdoublebomb ()
- EndIf
- EndIf
- ;------------custom
- If a\kind = 11 Or a\kind = 16 Or a\kind = 17
- a\brnd = Rnd (400)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropbomb ()
- EndIf
- EndIf
- ;------------six
- If a\kind = 13
- a\brnd = Rnd (300)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropfirebomb ()
- EndIf
- EndIf
- ;------------greenwindow
- If a\kind = 14
- a\brnd = Rnd (600)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropsludgebomb ()
- EndIf
- EndIf
- ;------------dome
- If a\kind = 8
- a\brnd = Rnd (800)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropsludgebomb ()
- EndIf
- If a\brnd = 200 : bombx=a\x : bomby = a\y
- dropbomb ()
- EndIf
- EndIf
- ;-----------blueballs
- If a\kind = 18
- a\brnd = Rnd (300)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropbluebomb ()
- EndIf
- EndIf
- ;-----------chromering
- If a\kind = 20
- a\brnd = Rnd (200)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropbluebomb ()
- EndIf
- EndIf
- ;-----------bluealien
- If a\kind = 22
- a\brnd = Rnd (250)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropfirebomb ()
- EndIf
- EndIf
- ;------------top20alien
- If a\kind = 21
- a\brnd = Rnd (800)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropdoublebomb ()
- EndIf
- EndIf
- ;------------gyrotwo
- If a\kind = 28
- a\brnd = Rnd (500)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropboomerangbomb ()
- EndIf
- EndIf
- ;------------ringalien
- If a\kind = 19
- a\brnd = Rnd (400)
- If a\brnd = 100 : bombx=a\x : bomby = a\y
- dropdoublebomb ()
- EndIf
- EndIf
- ;-----------allaliens
- For b.Missile = Each Missile
- If a <> Null
- collide = 1
- If (a\x+20)< b\x collide = 0
- If (a\x-20)> b\x collide = 0
- If (a\y+20)< b\y collide = 0
- If (a\y-20)> b\y collide = 0
- If collide = 1 Then
- If a\kind=24
- bombx = a\x
- bomby = a\y
- dropshipbomb()
- EndIf
- For p.player=Each player
- p\score=p\score+75
- Next
- exx = A\x
- exy = A\y
- aliensalive = aliensalive-1
- checkalienstep()
- If expcount = 0
- explosionchannel = PlaySound (explosionsound)
- expcount = expcountmax
- EndIf
- expkind = 0
- createexplosion ()
- Delete a
- Delete b
- EndIf
- EndIf
- Next
- Next
- End Function
- Function dropalien ()
- If dropq = 1
- For a.alien=Each alien
- If dropq = 1 Then A\Y = A\Y + drop
- Next
- EndIf
- dropq = 0
- End Function
- Function checkalienstep()
- If direction=0 And aliensalive=30 astep= 2
- If direction=0 And aliensalive=25 astep= 3
- If direction=0 And aliensalive=20 astep= 4
- If direction=0 And aliensalive=15 astep= 5
- If direction=0 And aliensalive=10 astep= 6
- If direction=0 And aliensalive=5 astep= 8
- If direction=0 And aliensalive=4 astep= 9
- If direction=0 And aliensalive=3 astep= 11
- If direction=0 And aliensalive=2 astep= 15
- If direction=0 And aliensalive=1 astep= 19
- If direction=1 And aliensalive=30 astep= -2
- If direction=1 And aliensalive=25 astep= -3
- If direction=1 And aliensalive=20 astep= -4
- If direction=1 And aliensalive=15 astep= -5
- If direction=1 And aliensalive=10 astep= -6
- If direction=1 And aliensalive=5 astep= -8
- If direction=1 And aliensalive=4 astep= -9
- If direction=1 And aliensalive=3 astep= -11
- If direction=1 And aliensalive=2 astep= -15
- If direction=1 And aliensalive=1 astep= -19
- End Function
- Function DrawAlien ()
- For A.alien = Each alien
- If a\kind = 0
- DrawImage sfalien,A\x,A\y, (animframe)
- EndIf
- If a\kind = 1
- DrawImage blobanim,A\x,A\y, (A\frame)
- EndIf
- If a\kind = 2
- DrawImage glowalien,A\x,A\y, (A\frame)
- If a\kind=2 And a\frame = 6
- Repeat
- DrawImage greenlightning, a\x, a\alienvariable,a\alienv
- a\alienvariable=a\alienvariable+96
- Until a\alienvariable>650
- For p.player = Each player
- If ImagesCollide ( ship,p\x,p\y, 0, greenlightning, a\x, p\y, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- Next
- EndIf
- EndIf
- If a\kind = 3
- DrawImage gyroalien,A\x,A\y, (animframe)
- EndIf
- If a\kind = 4
- DrawImage valien,A\x,A\y
- EndIf
- If a\kind = 5
- DrawImage ash,A\x,A\y
- EndIf
- If a\kind = 6
- DrawImage ashcab,A\x,A\y
- EndIf
- If a\kind = 7
- DrawImage custom,A\x,A\y, (animframe)
- EndIf
- If a\kind = 8
- DrawImage domealien,A\x,A\y, (animframe)
- EndIf
- If a\kind = 9
- DrawImage malien,A\x,A\y
- EndIf
- If a\kind = 10
- DrawImage topalien,A\x,A\y, (animframe)
- EndIf
- If a\kind = 11
- DrawImage threealien,A\x,A\y, (animframetwo)
- EndIf
- If a\kind = 12
- DrawImage marshall,A\x,A\y
- EndIf
- If a\kind = 13
- DrawImage sixalien,A\x,A\y, (animframe)
- EndIf
- If a\kind = 14
- DrawImage gwalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 15
- DrawImage ggalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 16
- DrawImage gralien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 17
- DrawImage jetbassalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 18
- DrawImage blueballsalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 19
- DrawImage ringalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 20
- DrawImage chromeringalien, a\x, a\y, (animframe)
- EndIf
- If a\kind = 21
- DrawImage badassalien, a\x, a\y
- EndIf
- If a\kind = 22
- DrawImage bluealien,A\x,A\y, (animframetwo)
- EndIf
- If a\kind = 23
- DrawImage sgalien,A\x,A\y
- EndIf
- If a\kind = 24
- DrawImage scramblealien,A\x,A\y, (animframetwo)
- EndIf
- If a\kind = 25
- DrawImage invader1,A\x,A\y, (animframethree)
- EndIf
- If a\kind = 26
- DrawImage invader2,A\x,A\y, (animframethree)
- EndIf
- If a\kind = 27
- DrawImage invader3,A\x,A\y, (animframethree)
- EndIf
- If a\kind = 28
- DrawImage gyroalientwo,A\x,A\y, (animframe)
- EndIf
- If a\kind = 29
- DrawImage newinvader1,A\x,A\y, (animframe)
- EndIf
- If a\kind = 30
- DrawImage newinvader2,A\x,A\y, (animframe)
- EndIf
- If a\kind = 31
- DrawImage newinvader3,A\x,A\y, (animframe)
- EndIf
- If a\kind = 32
- DrawImage hnhalien, a\x, a\y
- EndIf
- Next
- End Function
- ;---------------------------DROP BOMB------------------------------------------------
- Function dropbomb ()
- c.bomb = New bomb
- c\box = bombx + 20
- c\boy = bomby + 20
- End Function
- Function updatebomb ()
- For c.bomb = Each bomb
- c\boy = c\boy + 5
- If c\boy > 600 Delete c
- For b.Missile = Each Missile
- If c <> Null
- If ImagesCollide ( fire,b\x,b\y, 0, bomb,c\box,c\boy, 0 )
- Delete c
- Delete b
- EndIf
- EndIf
- Next
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, bomb,c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawbomb ()
- For c.bomb = Each bomb
- If level<38 Or level>38
- DrawImage bomb, c\box, c\boy
- EndIf
- If level = 38
- DrawImage bombvintage, c\box, c\boy, (animframethree)
- EndIf
- If level = 39
- DrawImage boss4minibomb, c\box, c\boy
- EndIf
- Next
- End Function
- ;---------------------------DROP SHIP BOMB------------------------------------------------
- Function dropshipbomb ()
- c.shipbomb = New shipbomb
- c\box = bombx
- c\boy = bomby
- c\frame = animframetwo
- End Function
- Function updateshipbomb ()
- For c.shipbomb = Each shipbomb
- c\boy = c\boy + 20
- If c\boy > 600 Delete c
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, scramblealien,c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawshipbomb ()
- For c.shipbomb = Each shipbomb
- DrawImage scramblealien, c\box, c\boy, (c\frame)
- Next
- End Function
- ;---------------------------DROP BLUE BOMB------------------------------------------------
- Function dropbluebomb ()
- c.bluebomb = New bluebomb
- c\box = bombx + 20
- c\boy = bomby + 20
- c\dir = Rnd (1)
- End Function
- Function updatebluebomb ()
- For c.bluebomb = Each bluebomb
- c\boy = c\boy + 5
- If c\dir=1
- c\box = c\box + 2
- EndIf
- If c\dir=0
- c\box= c\box - 2
- EndIf
- If c\box>800
- c\box=0
- EndIf
- If c\box < 0
- c\box=800
- EndIf
- If c\boy > 600 Delete c
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, bomb,c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawbluebomb ()
- For c.bluebomb = Each bluebomb
- DrawImage bluebomb, c\box, c\boy
- Next
- End Function
- ;---------------------------DROP BOOMERANG BOMB------------------------------------------------
- Function dropboomerangbomb ()
- c.boomerangbomb = New boomerangbomb
- c\box = bombx + 20
- c\boy = bomby + 20
- c\incr = Rnd (-5 , 5)
- c\edge = 0
- c\dir = 0
- End Function
- Function updateboomerangbomb ()
- For c.boomerangbomb = Each boomerangbomb
- If c\dir = 0 c\boy = c\boy + 5
- If c\dir = 1 c\boy = c\boy - 5
- c\box = c\box + c\incr
- If c\box>800
- c\box=800
- c\incr = -c\incr
- EndIf
- If c\box < 0
- c\box=0
- c\incr= -c\incr
- EndIf
- If c\boy<0
- c\boy=0
- c\dir=0
- EndIf
- If (c\boy > 600 And c\edge = 0)
- c\edge = 1
- c\dir = 1
- c\boy = 600
- EndIf
- If (c\boy > 600 And c\edge = 1)
- Delete c
- EndIf
- If level=20
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, boomerangbombbig, c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- EndIf
- If level>20
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, boomerangbombbig, c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- EndIf
- Next
- End Function
- Function drawboomerangbomb ()
- For c.boomerangbomb = Each boomerangbomb
- If level = 20 DrawImage boomerangbombbig, c\box, c\boy, (animframe)
- If level>20 DrawImage boomerangbomb, c\box, c\boy, (animframe)
- Next
- End Function
- ;---------------------------DROP SLUDGE BOMB------------------------------------------------
- Function dropsludgebomb ()
- c.sludgebomb = New sludgebomb
- c\box = bombx + 20
- c\boy = bomby + 20
- End Function
- Function updatesludgebomb ()
- For c.sludgebomb = Each sludgebomb
- c\boy = c\boy + 1
- If c\boy > 600 Delete c
- For b.Missile = Each Missile
- If c <> Null
- If ImagesCollide ( fire,b\x,b\y, 0, bomb,c\box,c\boy, 0 )
- Delete b
- EndIf
- EndIf
- Next
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, sludgebomb,c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawsludgebomb ()
- For c.sludgebomb = Each sludgebomb
- DrawImage sludgebomb, c\box, c\boy, (animframetwo)
- Next
- End Function
- ;---------------------------DROP FIREBOMB------------------------------------------------
- Function dropfirebomb ()
- c.firebomb = New firebomb
- c\box = bombx + 20
- c\boy = bomby + 20
- End Function
- Function updatefirebomb ()
- For c.firebomb = Each firebomb
- If c <> Null
- c\boy = c\boy + 9
- If c\boy > 600 Delete c
- For b.Missile = Each Missile
- If c <> Null
- If ImagesCollide ( fire,b\x,b\y, 0, bomb,c\box,c\boy, 0 )
- Delete b
- EndIf
- EndIf
- Next
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, bomb,c\box,c\boy, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- EndIf
- Next
- End Function
- Function drawfirebomb ()
- For c.firebomb = Each firebomb
- DrawImage fbomb, c\box, c\boy
- Next
- End Function
- ;---------------------------DROP TRIPPLE BOMB------------------------------------------------
- Function droptripplebomb ()
- b.tribomb = New tribomb
- b\x1 = bombx + 20
- b\y1 = bomby + 20
- b\x2 = bombx + 20
- b\x3 = bombx + 20
- End Function
- Function updatetribomb ()
- For b.tribomb = Each tribomb
- b\x1 = b\x1 - 5
- b\y1 = b\y1 + 5
- b\x3 = b\x3 + 5
- If b\y1 > 600 Delete b
- For p.player = Each player
- If b <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, ybomb,b\x1,b\y1, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete b
- EndIf
- If b <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, ybomb,b\x2,b\y1, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete b
- EndIf
- EndIf
- If b <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, ybomb,b\x3,b\y1, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete b
- EndIf
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawtribomb ()
- For b.tribomb = Each tribomb
- DrawImage ybomb, b\x1, b\y1
- DrawImage ybomb, b\x2, b\y1
- DrawImage ybomb, b\x3, b\y1
- Next
- End Function
- ;---------------------------DROP DOUBLE BOMB------------------------------------------------
- Function dropdoublebomb ()
- b.doublebomb = New doublebomb
- b\x1 = bombx + 20
- b\y1 = bomby + 20
- b\x2 = bombx + 20
- End Function
- Function updatedoublebomb ()
- For b.doublebomb = Each doublebomb
- b\x1 = b\x1 - 2
- b\y1 = b\y1 + 7
- b\x2 = b\x2 + 2
- If b\y1 > 600 Delete b
- For p.player = Each player
- If b <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, ybomb,b\x1,b\y1, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete b
- EndIf
- If b <> Null
- If ImagesCollide ( ship,p\x,p\y, 0, ybomb,b\x2,b\y1, 0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- Delete b
- EndIf
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawdoublebomb ()
- For b.doublebomb = Each doublebomb
- DrawImage pbomb, b\x1, b\y1
- DrawImage pbomb, b\x2, b\y1
- Next
- End Function
- ;---------------------------BOSS1BOMB------------------------------------------------
- Function dropboss1bomb ()
- c.bombone = New bombone
- c\box = bombx
- c\boy = bomby
- c\frame=0
- c\count=0
- bosschannel = PlaySound (bossbombsound)
- End Function
- Function updateboss1bomb ()
- For c.bombone = Each bombone
- c\boy = c\boy + 5
- If c\boy > 600 c\boy=600
- If c\boy=600 c\count=c\count+1
- If c\count=3 c\count=0 : c\frame=c\frame+1
- If c\frame=5 Delete c
- For b.Missile = Each Missile
- If c <> Null
- If ImagesCollide ( fire,b\x,b\y, 0, bomb,c\box,c\boy, 0 )
- Delete b
- EndIf
- EndIf
- Next
- For p.player = Each player
- If c <> Null
- If ImagesCollide ( ship,p\x,p\y,0, boss1bomb,c\box,c\boy,0 ) And p\invinc=0 And p\alive=1
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- Next
- End Function
- Function drawboss1bomb ()
- For c.bombone = Each bombone
- DrawImage boss1bomb, c\box, c\boy, c\frame
- Next
- End Function
- ;---------------------------DROP boss4 BOMB------------------------------------------------
- Type bomb4
- Field x
- Field y
- Field mode
- Field kind
- Field lft
- Field rght
- End Type
- Function dropboss4bomb ()
- c.bomb4 = New bomb4
- c\x = bombx
- c\y = bomby + 60
- c\kind = exx
- c\mode=0
- End Function
- Function updateboss4bomb ()
- For c.bomb4 = Each bomb4
- If c<>Null
- If c\mode=0
- If c\kind = 0 c\y = c\y + 4
- If c\kind = 1 c\y = c\y + 5
- EndIf
- If c\kind = 1
- If c\y>600
- Delete c
- EndIf
- EndIf
- If c<> Null
- If c\kind = 0 And c\mode=0
- If c\y > 580
- c\y=580
- c\mode = 1
- c\rght = c\x
- c\lft = c\x
- EndIf
- EndIf
- If c\mode=1
- c\rght=c\rght+7
- c\lft=c\lft-7
- If c\rght>800 And c\lft<0
- exx = c\x
- exy = c\y
- explosionchannel = PlaySound (explosionsound)
- expkind = 0
- createexplosion ()
- Delete c
- EndIf
- EndIf
- If c<> Null
- For b.Missile = Each Missile
- If c <> Null
- collide = 1
- If (c\x+22)< b\x collide = 0
- If (c\x-22)> b\x collide = 0
- If (c\y+20)< b\y collide = 0
- If (c\y-20)> b\y collide = 0
- If collide = 1 Then
- exx = c\x
- exy = c\y
- explosionchannel = PlaySound (explosionsound)
- expkind = 0
- createexplosion ()
- Delete c
- Delete b
- EndIf
- EndIf
- Next
- For p.player = Each player
- If c <> Null
- collide = 1
- If (c\x+44)< p\x collide = 0
- If (c\x-44)> p\x collide = 0
- If (c\y+43)< p\y collide = 0
- If (c\y-43)> p\y collide = 0
- If c\mode = 1 And collide = 0
- collide = 1
- If (c\rght+24)< p\x collide = 0
- If (c\rght-24)> p\x collide = 0
- EndIf
- If c\mode = 1 And collide = 0
- collide = 1
- If (c\lft+24)< p\x collide = 0
- If (c\lft-24)> p\x collide = 0
- EndIf
- If collide = 1 And p\invinc=0 And p\alive=1 Then
- exx=p\x
- exy=p\y
- p\alive=0
- Delete c
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- EndIf
- EndIf
- EndIf
- Next
- End Function
- Function drawboss4bomb ()
- For c.bomb4 = Each bomb4
- If c\kind=0 DrawImage boss4star, c\x, c\y
- If c\kind = 1 DrawImage boss4bomb, c\x, c\y
- If c\mode = 1
- DrawImage boss4minibomb, c\lft, c\y
- DrawImage boss4minibomb, c\rght, c\y
- EndIf
- Next
- End Function
- ;---------------------------EXPLOSIONS-----------------------------------------------
- Function createexplosion ()
- e.explosion=New explosion
- e\exx = exx
- e\exy = exy
- e\exf = 0
- e\exfr=0
- e\kind = expkind
- End Function
- Function udateexplosion ()
- For e.explosion = Each explosion
- e\exfr = e\exfr+1 If e\exfr=2
- e\exfr=0
- e\exf = e\exf + 1
- If e\exf = 7 And aliensalive=0 Then
- level=level+1 : astep =1
- If level< 41 initializelevel ()
- ;If level > 40
- ;StopChannel (explosionchannel)
- ;outro()
- ;boss = 0
- ; If difficulty = 0
- ; playerlives = 0
- ; EndIf
- ;If difficulty = 1
- ;level = 1
- ;FreeTimer (timer)
- ;initializelevel()
- ;EndIf
- ;EndIf
- EndIf
- If e <> Null
- If e\exf = 7 Delete e
- EndIf
- EndIf
- Next
- End Function
- Function drawexplosion ()
- For e.explosion = Each explosion
- If level < 38 Or level>38
- If e\kind = 0
- DrawImage explode, e\exx, e\exy, e\exf
- EndIf
- If e\kind = 1
- DrawImage explode2, e\exx, e\exy, e\exf
- EndIf
- EndIf
- If level = 38
- DrawImage explodevintage, e\exx, e\exy
- EndIf
- Next
- End Function
- ;---------------------------------BOSS EXPLOSION-----------------------------
- Function createbossexplosion ()
- e.bossexplosion=New bossexplosion
- e\exx = exx
- e\exy = exy
- e\exf = 0
- e\exfr=0
- End Function
- Function udatebossexplosion ()
- For e.bossexplosion = Each bossexplosion
- e\exfr = e\exfr+1 If e\exfr=3
- e\exfr=0
- e\exf = e\exf + 1
- If e\exf = 7 Then
- Delete e
- level=level+1
- astep =1
- boss=0
- StopChannel (explosionchannel)
- aliensalive=0
- If level<41initializelevel ()
- If level=41
- If ChannelPlaying (ufochannel) = 1
- StopChannel (ufochannel)
- EndIf
- outro()
- If completed = 0 completed = 1 : saveoptions()
- If difficulty = 0
- playerlives = 0
- For p.player = Each player
- playernewscore = p\score
- Next
- EndIf
- If difficulty = 1
- level = 1
- FreeTimer (timer)
- initializelevel()
- EndIf
- EndIf
- EndIf
- EndIf
- Next
- End Function
- Function drawbossexplosion ()
- For e.bossexplosion = Each bossexplosion
- DrawImage bossexplode, e\exx, e\exy, e\exf
- Next
- End Function
- ;---------------------------SHIP EXPLOSION---------------------------------------------
- Function shipexplosion ()
- deathchannel = PlaySound (youdie)
- e.explosion=New explosion
- e\exx = exx
- e\exy = exy
- e\exf = 0
- e\kind=expkind
- e\exfr=0
- End Function
- Function udateshipexplosion ()
- For e.explosion = Each explosion
- If e\kind = 3
- e\exfr = e\exfr+1 If e\exfr=6
- e\exfr=0
- e\exf = e\exf + 1
- EndIf
- For p.player = Each player
- If e\exf = 10 And p\alive=0 Then
- p\lives = p\lives-1
- p\alive=1
- p\x=400
- p\invinc=100
- If p\lives<0
- playerlives = 0
- sco10 = Int(score10)
- playernewscore = p\score
- EndIf
- EndIf
- Next
- If e\exf = 10 Delete e
- EndIf
- Next
- End Function
- Function drawshipexplosion ()
- For e.explosion = Each explosion
- If e <> Null
- If e\kind =3
- DrawImage explode3, e\exx, e\exy, e\exf
- EndIf
- EndIf
- Next
- End Function
- ;----------------------BOSS 1-------------------------------
- Function createboss1 ()
- b.boss1=New boss1
- b\x=400
- b\y= -75
- b\mode=0
- b\life=10
- b\frame=0
- aliensalive=1
- End Function
- Function updateboss1 ()
- For b.boss1 = Each boss1
- If b <> Null
- If b\mode=0
- b\y=b\y+3
- ;DrawImage boss1, b\x, b\y,0
- If b\y>200
- b\mode=1
- b\timer=MilliSecs()
- EndIf
- EndIf
- If b\mode=1
- ;DrawImage boss1, b\x, b\y, b\frame
- b\newtime=MilliSecs()
- If b\timer-b\newtime<-50
- b\frame=1
- EndIf
- If b\timer-b\newtime<-100
- b\frame=2
- EndIf
- If b\timer-b\newtime<-150
- b\frame=3
- If b\timer-b\newtime<-200
- b\frame=4
- EndIf
- If b\timer-b\newtime<-250
- b\mode=2
- b\timer=MilliSecs ()
- EndIf
- EndIf
- EndIf
- If b\mode=2
- ;DrawImage boss1, b\x, b\y, b\frame
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-50
- b\frame=5
- EndIf
- If b\timer-b\newtime<-100
- b\frame=4
- b\timer=MilliSecs ()
- EndIf
- b\x=b\x+3
- If b\x>725 b\x=725 : b\mode=3 : b\timer=MilliSecs ()
- b\random = Rnd (20)
- If b\random = 10 bombx=b\x : bomby = b\y: droptripplebomb ()
- For m.Missile = Each Missile
- If m <> Null
- If ImagesCollide ( fire,m\x,m\y, 0, boss1,b\x,b\y, 0 )
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- If b\life=0
- b\mode=6
- bosschannel = PlaySound (bossdeathsound)
- explosionchannel = PlaySound (loopexpsound)
- EndIf
- EndIf
- EndIf
- Next
- EndIf
- If b\mode = 3
- ;DrawImage boss1, b\x, b\y, b\frame
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-50
- b\frame=6
- EndIf
- If b\timer-b\newtime<-100
- b\frame=7
- EndIf
- If b\timer-b\newtime<-150
- b\frame=8
- EndIf
- If b\timer-b\newtime<-200
- b\frame=9 : b\mode=4
- b\timer=MilliSecs()
- EndIf
- EndIf
- If b\mode = 4
- ;DrawImage boss1, b\x, b\y, b\frame
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-50
- b\frame=10
- EndIf
- If b\timer-b\newtime<-100
- b\frame=11
- EndIf
- If b\timer-b\newtime<-150
- b\frame=12
- EndIf
- If b\timer-b\newtime<-200
- b\frame=9
- b\timer=MilliSecs()
- EndIf
- b\x=b\x-3
- If b\x<75 b\x=75
- If b\x=75 And b\frame=9 b\mode=5 : b\timer=MilliSecs ()
- If b\x=722 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=629 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=533 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=437 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=341 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=245 bombx=b\x : bomby=b\y : dropboss1bomb ()
- If b\x=149 bombx=b\x : bomby=b\y : dropboss1bomb ()
- EndIf
- If b\mode = 5
- ;DrawImage boss1, b\x, b\y, b\frame
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-50
- b\frame=9
- EndIf
- If b\timer-b\newtime<-100
- b\frame=8
- EndIf
- If b\timer-b\newtime<-150
- b\frame=7
- EndIf
- If b\timer-b\newtime<-200
- b\frame=6 : b\mode=2
- b\timer=MilliSecs()
- EndIf
- EndIf
- If b\mode=6
- ;DrawImage boss1, b\x,b\y, b\frame
- b\y=b\y+2
- exx = b\x -75 + Rnd(150)
- exy = b\y-75+Rnd(150)
- expkind = Rnd (1)
- createexplosion ()
- If b\y>450
- exx= b\x
- exy=b\y Delete b
- For p.player=Each player
- p\score=p\score+10000
- Next
- createbossexplosion ()
- EndIf
- EndIf
- End If
- Next
- End Function
- Function drawboss1 ()
- For b.boss1 = Each boss1
- If b <> Null
- If b\mode=0
- DrawImage boss1, b\x, b\y,0
- EndIf
- If b\mode=1
- DrawImage boss1, b\x, b\y, b\frame
- EndIf
- If b\mode=2
- DrawImage boss1, b\x, b\y, b\frame
- EndIf
- If b\mode = 3
- DrawImage boss1, b\x, b\y, b\frame
- EndIf
- If b\mode = 4
- DrawImage boss1, b\x, b\y, b\frame
- EndIf
- If b\mode = 5
- DrawImage boss1, b\x, b\y, b\frame
- EndIf
- If b\mode=6
- DrawImage boss1, b\x,b\y, b\frame
- EndIf
- EndIf
- Next
- End Function
- ;----------------------BOSS 2-------------------------------
- Function createboss2 ()
- b.boss2=New boss2
- b\x=150
- b\y= 200
- b\mode=0
- b\life=15
- b\frame=0
- aliensalive=1
- b\timer=MilliSecs()
- End Function
- Function updateboss2 ()
- For b.boss2 = Each boss2
- If b <> Null
- If b\mode=0
- b\newtime=MilliSecs()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- If b\frame=9
- b\mode=1
- EndIf
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;---------
- If b\mode=1
- b\x = b\x+5
- b\random = Rnd (30)
- If b\random = 10 bombx=b\x : bomby = b\y: bosschannel = PlaySound (bossbomb2sound) : dropboomerangbomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+46)< m\x collide = 0
- If (b\x-46)> m\x collide = 0
- If (b\y+60)< m\y collide = 0
- If (b\y-60)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x > 700
- b\x = 700
- b\mode=2
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;----------
- If b\mode=2
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- If b\frame=15
- b\mode = 3
- EndIf
- b\timer=MilliSecs ()
- EndIf
- EndIf
- ;---------
- If b\mode = 3
- b\x=b\x-5
- b\random = Rnd (30)
- If b\random = 10 bombx=b\x : bomby = b\y: bosschannel = PlaySound (bossbomb2sound) :dropboomerangbomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+46)< m\x collide = 0
- If (b\x-46)> m\x collide = 0
- If (b\y+60)< m\y collide = 0
- If (b\y-60)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x<100
- b\x=100
- b\mode=4
- b\timer=MilliSecs ()
- EndIf
- If (b\x=100 And b\life <8) ;----------LIFE ADJUSTMENT AREA
- b\mode=5
- b\frame=21
- EndIf
- EndIf
- ;-----------
- If b\mode = 4
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- If b\frame=21
- b\frame=9
- b\mode = 1
- EndIf
- b\timer=MilliSecs ()
- EndIf
- EndIf
- ;------------
- If b\mode=5
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- If b\frame=25
- b\mode = 6
- b\newtime=1
- EndIf
- b\timer= MilliSecs()
- EndIf
- EndIf
- If b\mode=6
- b\random = Rnd (40)
- If b\random = 10 bombx=b\x : bomby = b\y: bosschannel = PlaySound (bossbomb2sound) :dropboomerangbomb ()
- If b\random = 20 bombx=b\x : bomby = b\y: dropboss1bomb ()
- If b\newtime=1
- b\x=b\x + 5
- If b\x>700
- b\x=700
- b\newtime=0
- EndIf
- EndIf
- If b\newtime=0
- b\x=b\x - 5
- If b\x<85
- b\x=85
- b\newtime=1
- EndIf
- EndIf
- If b\life<1
- b\mode = 7
- bosschannel = PlaySound (bossdeathsound)
- explosionchannel = PlaySound (loopexpsound)
- EndIf
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+80)< m\x collide = 0
- If (b\x-80)> m\x collide = 0
- If (b\y+15)< m\y collide = 0
- If (b\y-15)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- EndIf
- End If
- ;-----------------
- If b\mode=7
- b\y=b\y+2
- exx = b\x -80 + Rnd(150)
- exy = b\y-20+Rnd(40)
- expkind = Rnd (1)
- createexplosion ()
- If b\y>450
- exx= b\x
- exy=b\y Delete b
- For p.player=Each player
- p\score=p\score+10000
- Next
- createbossexplosion ()
- EndIf
- EndIf
- Next
- End Function
- Function drawboss2 ()
- For b.boss2 = Each boss2
- If b <> Null
- DrawImage boss2, b\x, b\y, b\frame
- EndIf
- Next
- End Function
- ;----------------------BOSS 3-------------------------------
- Function createboss3 ()
- b.boss3=New boss3
- b\x=150
- b\y= 250
- b\mode=0
- b\life=10
- b\frame=0
- aliensalive=1
- b\timer=MilliSecs()
- End Function
- Function updateboss3 ()
- For b.boss3 = Each boss3
- If b <> Null
- If b\mode=0
- b\y=b\y-3
- If b\y<200 b\y=200
- b\newtime=MilliSecs()
- If b\timer-b\newtime<-100
- b\frame=b\frame+1
- If b\frame=5
- b\mode=1
- EndIf
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;---------
- If b\mode=1
- b\x = b\x+5
- b\random = Rnd (8)
- If b\random = 5 bombx=b\x : bomby = b\y: dropdoublebomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+50)< m\x collide = 0
- If (b\x-50)> m\x collide = 0
- If (b\y+50)< m\y collide = 0
- If (b\y-50)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x > 725
- b\x = 725
- b\mode=2
- EndIf
- If b\life<1 b\mode = 16
- EndIf
- ;---------
- If b\mode = 2
- b\x=b\x-5
- b\random = Rnd (8)
- If b\random = 5 bombx=b\x : bomby = b\y: dropdoublebomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+50)< m\x collide = 0
- If (b\x-50)> m\x collide = 0
- If (b\y+50)< m\y collide = 0
- If (b\y-50)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x<75
- b\x=75
- b\mode=3
- b\timer=MilliSecs ()
- EndIf
- If b\life<1 b\mode = 16
- EndIf
- ;-----------
- If b\mode = 3
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- b\timer=MilliSecs ()
- If b\frame=11
- b\mode = 4
- EndIf
- EndIf
- EndIf
- ;------------
- If b\mode = 4
- b\y = b\y+7
- For p.player = Each player
- If p <> Null
- collide = 1
- If (b\x+75)< p\x collide = 0
- If (b\x-75)> p\x collide = 0
- If (b\y+75)< p\y collide = 0
- If (b\y-75)> p\y collide = 0
- If collide = 1 And p\invinc=0 And p\alive=1 Then
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- If b\y>535
- b\y = 535
- b\mode = 5
- EndIf
- EndIf
- ;-------------
- If b\mode = 5
- b\x = b\x+5
- For p.player = Each player
- If p <> Null
- collide = 1
- If (b\x+75)< p\x collide = 0
- If (b\x-75)> p\x collide = 0
- If (b\y+75)< p\y collide = 0
- If (b\y-75)> p\y collide = 0
- If collide = 1 And p\invinc=0 And p\alive=1 Then
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- If b\x>650
- b\x=650
- b\mode = 6
- EndIf
- EndIf
- ;--------------
- If b\mode = 6
- b\y = b\y-7
- If b\y < 200
- b\y = 200
- b\mode = 7
- b\timer=MilliSecs ()
- EndIf
- EndIf
- ;---------------
- If b\mode = 7
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame-1
- b\timer=MilliSecs ()
- If b\frame=5
- b\mode = 8
- EndIf
- EndIf
- EndIf
- ;-------------
- If b\mode=8
- b\x = b\x+5
- b\random = Rnd (8)
- If b\random = 5 bombx=b\x : bomby = b\y: dropdoublebomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+50)< m\x collide = 0
- If (b\x-50)> m\x collide = 0
- If (b\y+50)< m\y collide = 0
- If (b\y-50)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x > 725
- b\x = 725
- b\mode=9
- EndIf
- If b\life<1 b\mode = 16
- EndIf
- ;---------
- If b\mode = 9
- b\x=b\x-5
- b\random = Rnd (8)
- If b\random = 5 bombx=b\x : bomby = b\y: dropdoublebomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+50)< m\x collide = 0
- If (b\x-50)> m\x collide = 0
- If (b\y+50)< m\y collide = 0
- If (b\y-50)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x<75
- b\x=75
- b\mode=10
- EndIf
- If b\life<1 b\mode = 16
- EndIf
- ;-------------
- If b\mode=10
- b\x = b\x+5
- b\random = Rnd (20)
- If b\random = 10 bombx=b\x : bomby = b\y: dropdoublebomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+50)< m\x collide = 0
- If (b\x-50)> m\x collide = 0
- If (b\y+50)< m\y collide = 0
- If (b\y-50)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life-1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x > 710
- b\x = 710
- b\mode=11
- b\timer=MilliSecs ()
- EndIf
- If b\life<1 b\mode = 16
- EndIf
- ;-----------
- If b\mode = 11
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- b\timer=MilliSecs ()
- If b\frame=11
- b\mode = 12
- EndIf
- EndIf
- EndIf
- ;------------
- If b\mode = 12
- b\y = b\y+7
- For p.player = Each player
- If p <> Null
- collide = 1
- If (b\x+75)< p\x collide = 0
- If (b\x-75)> p\x collide = 0
- If (b\y+75)< p\y collide = 0
- If (b\y-75)> p\y collide = 0
- If collide = 1 And p\invinc=0 And p\alive=1 Then
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- If b\y>535
- b\y = 535
- b\mode = 13
- EndIf
- EndIf
- ;-------------
- If b\mode = 13
- b\x = b\x-5
- For p.player = Each player
- If p <> Null
- collide = 1
- If (b\x+75)< p\x collide = 0
- If (b\x-75)> p\x collide = 0
- If (b\y+75)< p\y collide = 0
- If (b\y-75)> p\y collide = 0
- If collide = 1 And p\invinc=0 And p\alive=1 Then
- exx=p\x
- exy=p\y
- p\alive=0
- expkind=3
- shipexplosion ()
- EndIf
- EndIf
- Next
- If b\x<150
- b\x=150
- b\mode = 14
- EndIf
- EndIf
- ;--------------
- If b\mode = 14
- b\y = b\y-7
- If b\y < 200
- b\y = 200
- b\mode = 15
- b\timer=MilliSecs ()
- EndIf
- EndIf
- ;---------------
- If b\mode = 15
- b\newtime=MilliSecs ()
- If b\timer-b\newtime<-75
- b\frame=b\frame-1
- b\timer=MilliSecs ()
- If b\frame=5
- b\mode = 1
- EndIf
- EndIf
- EndIf
- ;-----------------
- If b\mode = 16
- bosschannel = PlaySound (bossdeathsound)
- explosionchannel = PlaySound (loopexpsound)
- b\mode = 17
- EndIf
- ;-----------------
- If b\mode=17
- b\y=b\y+2
- exx = b\x -75 + Rnd(150)
- exy = b\y-75+Rnd(150)
- expkind = Rnd (1)
- createexplosion ()
- If b\y>450
- exx= b\x
- exy=b\y Delete b
- For p.player=Each player
- p\score=p\score+10000
- Next
- createbossexplosion ()
- EndIf
- EndIf
- EndIf
- Next
- End Function
- Function drawboss3 ()
- For b.boss3 = Each boss3
- If b <> Null
- DrawImage boss3, b\x, b\y, b\frame
- EndIf
- Next
- End Function
- ;------------------------------BOSS 4--------------------------------
- Function createboss4 ()
- b.boss1=New boss1
- b\x=400
- b\y= -75
- b\mode=0
- b\life=1
- b\frame=0
- aliensalive=1
- End Function
- Function updateboss4 ()
- For b.boss1 = Each boss1
- If b <> Null
- If b\life=21 b\mode=7
- ;------------------
- If b\mode=0
- b\y=b\y+2
- If b\y>150
- b\y=150
- b\mode=1
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;-----------------
- If b\mode=1
- b\newtime=MilliSecs()
- If b\timer-b\newtime<-75
- b\frame=b\frame+1
- If b\frame=9
- b\mode=2
- EndIf
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;-------------
- If b\mode=2
- b\x=b\x+b\life
- b\random = Rnd (60)
- If b\random = 5 bombx=b\x : bomby = b\y: exx = 0 :dropboss4bomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+110)< m\x collide = 0
- If (b\x-110)> m\x collide = 0
- If (b\y+60)< m\y collide = 0
- If (b\y-60)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life+1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x>670
- b\x=670
- b\mode=3
- EndIf
- EndIf
- ;-----------------
- If b\mode=3
- b\x=b\x-b\life
- b\random = Rnd (60)
- If b\random = 5 bombx=b\x : bomby = b\y: exx = 0 :dropboss4bomb ()
- For m.Missile = Each Missile
- If m <> Null
- collide = 1
- If (b\x+110)< m\x collide = 0
- If (b\x-110)> m\x collide = 0
- If (b\y+60)< m\y collide = 0
- If (b\y-60)> m\y collide = 0
- If collide = 1 Then
- exx = m\x
- exy = m\y
- Delete m
- b\life=b\life+1
- expkind = 0
- createexplosion ()
- EndIf
- EndIf
- Next
- If b\x<130
- b\x=130
- b\mode=4
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;-------------------
- If b\mode=4
- b\newtime=MilliSecs()
- If b\timer-b\newtime<-75
- b\frame=b\frame-1
- If b\frame=0
- b\mode=5
- EndIf
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;-------------
- If b\mode=5
- b\x=b\x+b\life
- b\random = Rnd (30)
- If b\random = 5 bombx=b\x : bomby = b\y: exx = 1 :dropboss4bomb ()
- If b\x>670 ;181
- b\x=670
- b\mode=6
- EndIf
- EndIf
- ;-----------------
- If b\mode=6
- b\x=b\x-b\life
- b\random = Rnd (30)
- If b\random = 5 bombx=b\x : bomby = b\y: exx = 1 :dropboss4bomb ()
- If b\x<130
- b\x=130
- b\mode=1
- b\timer=MilliSecs()
- EndIf
- EndIf
- ;------------------------
- If b\mode = 7
- bosschannel = PlaySound (bossdeathsound)
- explosionchannel = PlaySound (loopexpsound)
- b\mode=8
- b\life=22
- EndIf
- If b\mode=8
- b\y=b\y+2
- exx = b\x -110 + Rnd(220)
- exy = b\y-75+Rnd(150)
- expkind = Rnd (1)
- createexplosion ()
- If b\y>400
- exx= b\x
- exy=b\y Delete b
- For p.player=Each player
- p\score=p\score+10000
- Next
- createbossexplosion ()
- EndIf
- EndIf
- End If
- Next
- End Function
- Function drawboss4 ()
- For b.boss1 = Each boss1
- If b <> Null
- DrawImage boss4, b\x,b\y, b\frame
- EndIf
- Next
- End Function
- ;---------------------------GAME OVER----------------------------
- Function gameover ()
- For a.ufo = Each ufo
- Delete a
- If ChannelPlaying (ufochannel) <> 0 Then
- StopChannel (ufochannel)
- EndIf
- Next
- For b.powerup=Each powerup
- Delete b
- Next
- For c.missile = Each missile
- Delete c
- Next
- For d.bomb = Each bomb
- Delete d
- Next
- For e.firebomb = Each firebomb
- Delete e
- Next
- For f.tribomb = Each tribomb
- Delete f
- Next
- For g.boomerangbomb = Each boomerangbomb
- Delete g
- Next
- ufornd = 30
- For h.asteroid = Each asteroid
- If h <> Null
- Delete h
- EndIf
- Next
- For i.sludgebomb = Each sludgebomb
- Delete i
- Next
- For j.doublebomb = Each doublebomb
- Delete j
- Next
- For k.player = Each player
- Delete k
- Next
- For l.alien = Each alien
- Delete l
- Next
- For m.pubbomb = Each pubbomb
- Delete m
- Next
- For n.pubbeam = Each pubbeam
- Delete n
- Next
- For o.punlazer = Each punlazer
- Delete o
- Next
- For p.explosion = Each explosion
- Delete p
- Next
- For q.bossexplosion = Each bossexplosion
- Delete q
- Next
- For r.shipbomb = Each shipbomb
- Delete r
- Next
- For su.ufoscore = Each ufoscore
- Delete su
- Next
- For t.bluebomb = Each bluebomb
- Delete t
- Next
- For u.bombone = Each bombone
- Delete u
- Next
- For v.boss1 = Each boss1
- Delete v
- Next
- For w.boss2 = Each boss2
- Delete w
- Next
- For z.boss3 = Each boss3
- Delete z
- Next
- aliensalive = 0
- maxmissiles = 0
- astep = 1
- level = 1
- End Function
- ;---------------------------------------------------------------------------------------
- loadoptions ()
- loadhighscores()
- FlushKeys()
- While Not KeyHit (1)
- mainintro()
- howtoplay ()
- If completed = 1 gallery2()
- displaypowerups()
- displayhighscores()
- gallery ()
- alienpoints ()
- sludgesoft()
- Wend
- Function game()
- initializeplayer ()
- initializelevel ()
- ;-----------------main loop---------------------------------------------------------------------
- Repeat
- frames=WaitTimer(timer)
- For k=1 To frames
- If KeyHit (25)
- PauseChannel (rockradio)
- FlushKeys ()
- WaitKey ()
- ResumeChannel (rockradio)
- FreeTimer (timer)
- timer = CreateTimer(45)
- EndIf
- checkmusic ()
- expcount = expcount-1
- If expcount<0 expcount = 0
- checkufo ()
- updateufoscore ()
- If level = 5 Or level = 15 Or level = 25 Or level = 35 checkasteroid ()
- updateufo ()
- updatepowerup ()
- If level = 5 Or level = 15 Or level = 25 Or level = 35 updateasteroid ()
- UpdateMissiles ()
- updateplayer ()
- updateframecounter ()
- updatebomb ()
- updateshipbomb ()
- updatesludgebomb()
- updatefirebomb ()
- updatetribomb ()
- updatedoublebomb ()
- updatebluebomb ()
- updateboomerangbomb ()
- If level = 40 updateboss4bomb ()
- updatebbomb ()
- updatenlazer ()
- updatebbeam ()
- If level = 10 Or level = 20 updateboss1bomb()
- directalien ()
- directalien2 ()
- dropalien ()
- If boss = 0 updatealien ()
- If level = 10 updateboss1 ()
- If level = 20updateboss2 ()
- If level = 30 updateboss3 ()
- If level = 40 updateboss4 ()
- udateexplosion ()
- udateshipexplosion ()
- If boss=1 udatebossexplosion ()
- bgy=bgy+1
- bgx= bgx-2
- Next
- If playerlives = 1
- Cls
- If level< 36 TileBlock background, 400, bgy
- If level = 36 TileBlock background, bgy, 0
- If level = 37 TileBlock background, bgx, 0
- If level = 39 TileBlock background, bgx, bgy
- If level = 40 TileBlock background, bgy, bgx
- If level = 5 Or level = 15 Or level = 25 Or level = 35 drawasteroid ()
- drawbomb ()
- drawshipbomb ()
- drawsludgebomb ()
- drawfirebomb ()
- drawtribomb ()
- drawdoublebomb ()
- drawbluebomb ()
- drawboomerangbomb ()
- drawbbomb ()
- drawnlazer ()
- If level=40 drawboss4bomb
- If boss = 1drawboss1bomb ()
- If boss = 0 DrawAlien ()
- If boss = 1 drawbossexplosion ()
- If level = 10 drawboss1 ()
- If level = 20 drawboss2 ()
- If level = 30 drawboss3 ()
- If level = 40 drawboss4 ()
- drawpowerup ()
- drawmissiles ()
- drawexplosion ()
- drawufoscore ()
- drawplayer ()
- drawufo ()
- drawbbeam ()
- drawshipexplosion ()
- Flip
- EndIf
- Until KeyHit (1) Or playerlives = 0
- StopChannel (rockradio)
- StopChannel (explosionchannel)
- If ChannelPlaying (ufochannel) = 1
- StopChannel ufochannel
- EndIf
- gameoveranim()
- If playernewscore > Int(score10) enterhighscores()
- gameover()
- FreeTimer (timer)
- FlushKeys ()
- timer = CreateTimer (45)
- End Function
- .level1
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 99,0,0,0
- Data 99,0,0,99
- Data 99,99,0,99
- Data 99,99,0,99
- Data 99,0,0,99
- Data 99,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- .level2
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 99,0,0,0
- Data 99,0,0,3
- Data 99,99,0,3
- Data 99,99,0,3
- Data 99,0,0,3
- Data 99,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- .level3
- Data 7,7,7,7
- Data 0,0,0,0
- Data 0,0,0,0
- Data 7,7,7,7
- Data 0,0,0,0
- Data 7,7,7,7
- Data 7,7,7,7
- Data 0,0,0,0
- Data 7,7,7,7
- Data 0,0,0,0
- Data 0,0,0,0
- Data 7,7,7,7
- .level4
- Data 0,0,0,3
- Data 3,0,0,0
- Data 3,0,0,0
- Data 0,3,0,0
- Data 0,3,0,0
- Data 0,0,0,3
- Data 0,0,0,3
- Data 0,3,0,0
- Data 0,3,0,0
- Data 3,0,0,0
- Data 3,0,0,0
- Data 0,0,0,3
- .level5
- Data 32,32,32,32
- Data 32,32,32,32
- Data 99,99,99,99
- Data 99,99,99,99
- Data 32,32,32,32
- Data 32,32,32,32
- Data 32,32,32,32
- Data 32,32,32,32
- Data 99,99,99,99
- Data 99,99,99,99
- Data 32,32,32,32
- Data 32,32,32,32
- .level6
- Data 9,9,9,11
- Data 11,9,11,99
- Data 11,9,9,9
- Data 9,9,9,11
- Data 9,11,9,11
- Data 11,99,9,11
- Data 11,99,9,11
- Data 9,11,9,11
- Data 9,9,9,11
- Data 11,9,9,9
- Data 11,9,11,99
- Data 9,9,9,11
- .level7
- Data 0,0,0,3
- Data 0,0,0,3
- Data 10,0,0,10
- Data 0,0,0,3
- Data 0,0,0,3
- Data 0,0,0,3
- Data 0,0,0,3
- Data 0,0,0,3
- Data 0,0,0,3
- Data 10,0,0,10
- Data 0,0,0,3
- Data 0,0,0,3
- .level8
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- Data 0,11,11,0
- .level9
- Data 10,10,10,10
- Data 99,99,99,99
- Data 10,10,10,10
- Data 0,0,0,0
- Data 99,99,99,99
- Data 0,0,0,0
- Data 0,0,0,0
- Data 99,99,99,99
- Data 0,0,0,0
- Data 10,10,10,10
- Data 99,99,99,99
- Data 10,10,10,10
- .level11
- Data 16,16,16,16
- Data 16,15,15,16
- Data 16,15,15,16
- Data 16,16,16,16
- Data 99,99,99,99
- Data 16,15,15,16
- Data 16,15,15,16
- Data 99,99,99,99
- Data 16,16,16,16
- Data 16,15,15,16
- Data 16,15,15,16
- Data 16,16,16,16
- .level12
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- Data 16,16,14,99
- .level13
- Data 8,8,8,99
- Data 99,8,8,99
- Data 99,8,8,8
- Data 8,99,8,99
- Data 8,99,8,8
- Data 15,8,8,99
- Data 15,8,8,99
- Data 8,99,8,8
- Data 8,99,8,99
- Data 99,8,8,8
- Data 99,8,8,99
- Data 8,8,8,99
- .level14
- Data 14,14,14,14
- Data 14,14,14,14
- Data 14,14,14,14
- Data 99,99,99,99
- Data 99,99,99,99
- Data 14,14,14,14
- Data 14,14,14,14
- Data 99,99,99,99
- Data 99,99,99,99
- Data 14,14,14,14
- Data 14,14,14,14
- Data 14,14,14,14
- .level15
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- Data 16,16,16,16
- .level16
- Data 5,6,8,8
- Data 5,6,99,99
- Data 5,6,8,8
- Data 5,6,99,99
- Data 5,6,8,8
- Data 5,6,99,99
- Data 5,6,99,99
- Data 5,6,8,8
- Data 5,6,99,99
- Data 5,6,8,8
- Data 5,6,99,99
- Data 5,6,8,8
- .level17
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- Data 17,18,17,99
- .level18
- Data 18,99,18,18
- Data 18,18,99,99
- Data 18,99,18,99
- Data 18,99,99,18
- Data 18,99,18,99
- Data 18,18,99,99
- Data 18,18,99,99
- Data 18,99,18,99
- Data 18,99,99,18
- Data 18,99,18,99
- Data 18,18,99,99
- Data 18,99,18,18
- .level19
- Data 16,16,18,16
- Data 16,14,16,16
- Data 16,16,18,16
- Data 16,14,16,16
- Data 16,16,18,16
- Data 16,14,16,16
- Data 16,14,16,16
- Data 16,16,18,16
- Data 16,14,16,16
- Data 16,16,18,16
- Data 16,14,16,16
- Data 16,16,18,16
- .level21
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 1,0,0,0
- Data 1,0,0,0
- Data 0,1,0,1
- Data 0,1,0,1
- Data 1,0,0,0
- Data 1,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- Data 0,0,0,0
- .level22
- Data 0,1,14,1
- Data 0,20,14,20
- Data 0,0,14,20
- Data 0,20,14,20
- Data 0,0,14,20
- Data 0,20,14,20
- Data 0,20,14,20
- Data 0,0,14,20
- Data 0,20,14,20
- Data 0,0,14,20
- Data 0,20,14,20
- Data 0,1,14,1
- .level23
- Data 22,22,22,22
- Data 99,99,99,99
- Data 22,22,22,22
- Data 99,99,99,99
- Data 22,22,22,22
- Data 22,22,22,22
- Data 22,22,22,22
- Data 22,22,22,22
- Data 99,99,99,99
- Data 22,22,22,22
- Data 99,99,99,99
- Data 22,22,22,22
- .level24
- Data 22,22,22,22
- Data 0,0,0,0
- Data 1,22,0,22
- Data 0,22,22,0
- Data 0,22,0,22
- Data 22,0,0,1
- Data 22,0,0,1
- Data 0,22,0,22
- Data 0,22,22,0
- Data 1,22,0,22
- Data 0,0,0,0
- Data 22,22,22,22
- .level25
- Data 21,21,21,21
- Data 99,99,99,99
- Data 21,21,21,21
- Data 21,21,21,21
- Data 99,99,99,99
- Data 21,21,21,21
- Data 21,21,21,21
- Data 99,99,99,99
- Data 21,21,21,21
- Data 21,21,21,21
- Data 99,99,99,99
- Data 21,21,21,21
- .level26
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- .level27
- Data 24,24,24,24
- Data 24,24,24,24
- Data 24,24,24,24
- Data 24,24,24,24
- Data 99,99,99,99
- Data 24,24,24,24
- Data 24,24,24,24
- Data 99,99,99,99
- Data 24,24,24,24
- Data 24,24,24,24
- Data 24,24,24,24
- Data 24,24,24,24
- .level28
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- Data 22,23,24,22
- .level29
- Data 11,11,11,11
- Data 11, 1,1 ,11
- Data 11,11,11,11
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 20,23,20,23
- Data 11,11,11,11
- Data 11,1 ,1 ,11
- Data 11,11,11,11
- .level31
- Data 28,28,28,28
- Data 4 ,4 ,4 ,4
- Data 4 ,4 ,4 ,4
- Data 28,28,28,28
- Data 4 ,4 ,4 ,4
- Data 28,28,28,28
- Data 28,28,28,28
- Data 4 ,4 ,4 ,4
- Data 28,28,28,28
- Data 4 ,4 ,4 ,4
- Data 4 ,4 ,4 ,4
- Data 28,28,28,28
- .level32
- Data 11,11,11,2
- Data 11,11,11,11
- Data 11,11,11,11
- Data 11,11,11,2
- Data 11,11,99,99
- Data 11,2 ,11,11
- Data 11,2 ,11,11
- Data 11,11,99,99
- Data 11,11,11,2
- Data 11,11,11,11
- Data 11,11,11,11
- Data 11,11,11,2
- .level33
- Data 20,24,24,24
- Data 24,20,24,24
- Data 24,24,20,24
- Data 24,24,24,20
- Data 24,24,20,24
- Data 24,20,24,24
- Data 24,20,24,24
- Data 24,24,20,24
- Data 24,24,24,20
- Data 24,24,20,24
- Data 24,20,24,24
- Data 20,24,24,24
- .level34
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- Data 19,19,99,19
- .level35
- Data 18,18,99,22
- Data 18,18,99,22
- Data 22,22,99,18
- Data 22,22,99,18
- Data 99,18,99,22
- Data 99,22,99,18
- Data 99,22,99,18
- Data 99,18,99,22
- Data 22,22,99,18
- Data 22,22,99,18
- Data 18,18,99,22
- Data 18,18,99,22
- .level36
- Data 12,12,12,12
- Data 12,12,12,12
- Data 12,12,12,12
- Data 99,2,99,99
- Data 99,2,99,2
- Data 99,2,99,2
- Data 99,2,99,2
- Data 99,2,99,2
- Data 99,2,99,99
- Data 12,12,12,12
- Data 12,12,12,12
- Data 12,12,12,12
- .level37
- Data 0,1,2,3
- Data 4,5,6,7
- Data 8,9,10,11
- Data 12,14,15,16
- Data 17,18,19,20
- Data 21,22,23,28
- Data 21,22,23,24
- Data 17,18,19,20
- Data 12,14,15,16
- Data 8,9,10,11
- Data 4,5,6,7
- Data 0,1,2,3
- .level38
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- Data 27,26,26,25
- .level39
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
- Data 29,29,30,31
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement