So I just tried to copy paste the source of my main dba file for my game, and the forum told me my post had bad language... I am a bad commenter!
Here is a different, less offenseive section of code
REM *** Include File: enemy.dba ***
REM Created: 9/4/2009 3:20:31 PM
REM
REM Included in Project: C:\Program Files\The Game Creators\Dark Basic Professional\Projects\Nonsense, Violence, and More Violence\Nonsense, Violence, and More Violence.dbpro
REM
Function enemy_setUp()
global MaxEnemies as integer : maxEnemies = 180
global enemyStart as integer : enemyStart = 200
global nextEnemy as integer :
Global enemiesAlive as integer:
Global minesAlive as integer
Global trackersAlive as integer
Global gravityMonstersAlive as integer
Global sharksAlive as integer
Global foxsAlive as integer
Global lemmysAlive as integer
Global spiesAlive as integer
Global dashersAlive as integer
Global spawnersAlive as integer
Global swapImages as integer
dim enemies(maxEnemies) as enemyType
for e = 0 to maxEnemies
enemies(e).sprNum = e + enemyStart
next e
Endfunction
Function enemy_spawn(aiType,x#,y#)
a = nextEnemy
`check to make sure there will only be 40 enemies active at one time
if enemies(a).alive AND enemies(a).aitype = 2
inc nextEnemy
if nextEnemy > maxEnemies then nextEnemy = 0
a = nextEnemy
endif
if enemiesAlive<30
`see what kind of enemy ai kind needs to be made, and adjust image to reflect that enemy
if aiType = 0 then imageNum = mineImage
if aiType = 1 then imageNum = trackerImage
if aiType = 2 then imageNum = gravityMonsterImage
if aiType = 3 then imageNUm = sharkImage
if aiType = 4 then imageNum = foxImage
if aiType = 5 then imageNum = lemmyImage
if aiType = 6 then imageNUm = playerImage
if aiType = 7 then imageNUm = dasherImage
if aiType = 8 then imagenum = spawnerImage
`draw the enemy
sprite enemies(a).sprNum,x#,y#,imageNum
offset sprite enemies(a).sprNum,sprite width(enemies(a).sprNum)/2,sprite height(enemies(a).sprNum)/2
rotate sprite enemies(a).sprNum,180
set sprite priority enemies(a).sprNum,6
scale sprite enemies(a).sprNum,convertToScreenScale(100.0)
set sprite alpha enemies(a).sprNum,255
set sprite diffuse enemies(a).sprnum,255,255,255
`set enemy x/y to the read in values
enemies(a).x# = x#
enemies(a).y# = y#
enemies(a).alive = 1
`set enemy variables to suit the mine kind of enemy.
enemies(a).flag = 0
if aiType = 0
enemies(a).health = 50
enemies(a).speed# =speedModify#* 5
enemies(a).frictionDrag# = speedModify#*.1
enemies(a).maxSpeed# =speedModify#* 15
enemies(a).turnSpeed# = speedModify#*10+rnd(5)
enemies(a).aitype = 0
enemies(a).scale# = 100
enemies(a).defaultAngle = rnd(359)
enemies(a).imageNum = mineImage
enemies(a).score = 1
endif
`set enemy variables to suit the tracker kind of enemy
if aiType = 1
enemies(a).health = 100
speedAdj = speedModify#* rnd(5)
enemies(a).speed# = speedModify#* 4 +speedAdj
enemies(a).frictionDrag# = speedModify#* 1
enemies(a).maxSpeed# = speedModify#* 6+speedAdj+(speedAdj/2)
enemies(a).turnSpeed# = speedModify#* 20+rnd(20)
enemies(a).aitype = 1
enemies(a).scale# = (110-((enemies(a).speed#/speedModify#)*3))
enemies(a).imageNum = trackerImage
enemies(a).score = 1
endif
`set the enemy variables to suit the gravity monster kind of enemy
if aiType = 2
enemies(a).health = 500
speedAdj = speedModify#* rnd(1)
enemies(a).speed# = speedModify#* 3 +speedAdj
enemies(a).frictionDrag# = speedModify#* 1
enemies(a).maxSpeed# = speedModify#* 3+speedAdj+(speedAdj/2)
enemies(a).turnSpeed# = speedModify#* 10+rnd(5)
enemies(a).aitype = 2
enemies(a).scale# = (100.0)
enemies(a).imageNum = GravitymonsterImage
enemies(a).score = 12
endif
`set the enemy variablest o suit the shark enemy
if aiType = 3
enemies(a).health = 100
speedAdj = speedModify#* rnd(2)+1
enemies(a).speed# = speedModify#* 8+speedAdj
enemies(a).frictionDrag# = speedModify#* .1
enemies(a).maxSpeed# = speedModify#* 20
enemies(a).turnSpeed# = speedModify#* 2+rnd(10)
enemies(a).aiType = 3
enemies(a).scale# = (100.0)
enemies(a).imageNum =sharkImage
enemies(a).score = 2
endif
`set the enemy variables to suit the fox enemy
if aiType = 4
enemies(a).health = 100
speedAdj =speedModify#* rnd(2)+1
enemies(a).speed# =speedModify#* 4+speedAdj
enemies(a).frictionDrag# =speedModify#* 1
enemies(a).maxSpeed# =speedModify#* 10+rnd(5)
enemies(a).aiType = 4
enemies(a).scale# = (100.0)
set sprite alpha enemies(a).sprNum,80
enemies(a).imageNum = foxImage
enemies(a).score = 1
endif
`set the enemy variables to suit lemmy and his comrades!
if aiType = 5
enemies(a).health = 100
speedAdj =speedModify#* rnd(2)+1
enemies(a).speed# =speedModify#* 8+speedAdj
enemies(a).frictionDrag#=speedModify#* .1
enemies(a).maxSpeed# =speedModify#* 20
enemies(a).turnSpeed# = 5+rnd(5)/speedModify#
enemies(a).aiType = 5
enemies(a).scale# = (100.0)
enemies(a).imageNum =lemmyImage
enemies(a).score = 3
endif
`set the enemy variables to suit the spy kind of enemy
newImage = rnd(5)
if newImage = 0 then enemies(a).backUpImage = trackerImage
if newImage = 1 then enemies(a).backUpImage = mineImage
if newImage = 2 then enemies(a).backUpImage = trackerImage
if newImage = 3 then enemies(a).backUpImage = sharkImage
if newImage = 4 then enemies(a).backUpImage = sharkImage
if newImage = 5 then enemies(a).backUpImage = lemmyImage
if aiType = 6
enemies(a).health = 1000
speedAdj = speedModify#*rnd(1)+1
enemies(a).speed# = speedModify#*2 +speedAdj
enemies(a).frictionDrag# =speedModify#* 1
enemies(a).maxSpeed# = speedModify#*3+speedAdj+(speedAdj/2)
enemies(a).turnSpeed# =speedModify#* 10+rnd(5)
enemies(a).aitype = 6
enemies(a).scale# = (100.0)
enemies(a).imageNum = playerImage
newImage = rnd(3)+1
if newImage = 1 then player.backUpImage = mineImage
if newImage = 2 then player.backUpImage = trackerImage
if newImage = 3 then player.backUpImage = sharkImage
if newImage = 4 then player.backUpImage = lemmyImage
backGroundColor = rgb(255,255,255)
swapImages = 1
enemies(a).score = 5
endif
`suit enemy variables to go to with the DAMNABLE DASHER!
if aiType = 7
enemies(a).health = 100
speedAdj =speedModify#* rnd(2)+1
enemies(a).speed# = speedModify#*6+speedAdj
enemies(a).frictionDrag# =speedModify#* .5
enemies(a).maxSpeed# =speedModify#* 10
enemies(a).turnSpeed# = speedModify#*10+rnd(2)
enemies(a).aiType = 7
enemies(a).scale# = (100.0)
enemies(a).imageNum =dasherImage
enemies(a).flag = 1
enemies(a).score = 3
endif
`suit enemy variables to go to with the spawner
if aiType = 8
enemies(a).health = 100
speedAdj =speedModify#* rnd(2)+1
enemies(a).speed# = speedModify#*3+speedAdj
enemies(a).frictionDrag# =speedModify#* .5
enemies(a).maxSpeed# =speedModify#* 6
enemies(a).turnSpeed# = speedModify#*10+rnd(2)
enemies(a).aiType =8
enemies(a).scale# = (100.0)
enemies(a).imageNum =spawnerImage
enemies(a).flag = 0
enemies(a).score = 3
endif
scale sprite enemies(a).sprNum,enemies(a).scale#
rotate sprite enemies(a).sprNum,enemies(a).defaultAngle
`set the next enemy to be created to use the next enemy in stack
inc nextEnemy
if nextEnemy > maxEnemies then nextEnemy = 0
endif
Endfunction
Function enemy_clear()
for e= 0 to maxEnemies
if enemies(e).alive
enemies(e).alive = 0
delete sprite enemies(e).sprNum
endif
next e
endfunction
Function enemy_handle()
playerMarked = 0
`set alive tallies to 0, so that they can be re-calculated arcurately in the following loop
enemiesAlive = 0
minesAlive = 0
trackersAlive = 0
gravityMonstersAlive = 0
sharksAlive = 0
foxsAlive = 0
spiesAlive = 0
LemmysALive = 0
dashersAlive = 0
spawnersAlive = 0
if sprite exist(7001) then delete sprite 7001
if keystate(16) OR musicTime# < 5
`sprite 7001,enemies(1).x#+image width(THEMIMAGE),enemies(1).y#-image height(THEMIMAGE),THEMIMAGE
`set sprite priority 7001,100
endif
for e = 0 to maxEnemies
rocketBoom = 0
if enemies(e).alive
inc enemiesAlive
explode = 0
if sprite exist(enemies(e).sprnum) then delete sprite enemies(e).sprNum
sprite enemies(e).sprNum,x#,y#,enemies(e).imageNum
offset sprite enemies(e).sprnum,sprite width(enemies(e).sprNum)/2,sprite height(enemies(e).sprNum)/2
set sprite priority enemies(e).sprNum,6
`handle AI stuff
rotate sprite enemies(e).sprNum,enemies(e).oldAngle
`get distance from player
distX = player.x# - enemies(e).x#
distY = player.y# - enemies(e).y#
distance = SQRT( (distX*distX) + (distY*distY) )
`get angle to player
angle = 180+atanfull(distX,distY) * -1
`check for player collision
if distance<sprite width(enemies(e).sprNum)*.8
dec enemies(e).health,500
star_spawn(player.x#,player.y#,20,400+rnd(20),255,0,0)
`decrease the players health
if player.health# > 0
if difficulty = 1 then dec player.health#,.1
if difficulty = 2 then dec player.health#,.15
if difficulty = 3 then dec player.health#,.2
endif
`check to see if the payer is hitting a grav
if enemies(e).aitype = 2
playerDead = 1
endif
playSound(playerHitSound,90,0,1)
endif
if player.health# < 0 then player.health# = 0
`handle Mine AI
if enemies(e).aitype = 0
inc minesAlive
if distance > 500
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#/4)
rotate sprite enemies(e).sprNum,angletracker
enemies(e).xVel# = (enemies(e).speed#/3) * cos(angletracker-90)
enemies(e).yVel# = (enemies(e).speed#/3) * sin(angletracker-90)
enemies(e).goingAngle = angletracker
endif
if distance < 500
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angletracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
endif
endif
`handle sharkAI
if enemies(e).aiType = 3
inc sharksAlive
if distance > 500
`angleTracker = angle
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
enemies(e).goingAngle = angletracker
endif
rotate sprite enemies(e).sprNum,enemies(e).goingAngle
enemies(e).xVel# = enemies(e).speed# * cos(enemies(e).goingAngle-90)
enemies(e).yVel# = enemies(e).speed# * sin(enemies(e).goingAngle-90)
endif
`handle lemmyAI
if enemies(e).aiType = 5
inc lemmysAlive
if distance > 500
`angleTracker = angle
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
enemies(e).goingAngle = angletracker
endif
if distance > 220
if enemies(e).flag = 1
if enemies(e).flag = 1
dec enemies(e).health,105
endif
endif
endif
if distance < 200
enemies(e).flag = 1
endif
if enemies(e).flag < 0
inc enemies(e).flag
if enemies(e).flag >-2
dec enemies(e).health,105
endif
endif
rotate sprite enemies(e).sprNum,enemies(e).goingAngle
enemies(e).xVel# = enemies(e).speed# * cos(enemies(e).goingAngle-90)
enemies(e).yVel# = enemies(e).speed# * sin(enemies(e).goingAngle-90)
endif
`handle foxAI
if enemies(e).aitype = 4
inc foxsAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
alpha = 80
newR = 255 - rgbr(backGroundColor) : if (newR < 0) then newR = 255-newR
newG = 255 - rgbg(backGroundColor) : if (newG < 0) then newG = 255-newG
newB = 255 - rgbb(backGroundColor) : if (newB < 0) then newB = 255-newB
set sprite diffuse enemies(e).sprNum,newR,newG,newB
set sprite alpha enemies(e).sprNum,80
if distance < 500
newAlpha = alpha + ((500-distance)*(155+20))/500
set sprite alpha enemies(e).sprNum,newAlpha
endif
endif
`handle tracker AI
if enemies(e).aitype = 1
inc trackersAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
endif
`handle DAHSER AI
if enemies(e).aitype = 7
inc dashersAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
if distance > 1200
enemies(e).flag = 1
endif
if wrapValue(angleTracker+180) > wrapValue(player.angle# - 30) AND wrapvalue(angleTracker+180) < wrapValue(player.angle# + 30) AND distance < 450
enemies(e).flag = -2
if wrapVALUE(angleTracker + 180) > wrapVALUE(player.angle#)
angleTracker = (angleTracker +30)/2
else
angleTracker = (angleTracker -30)/2
endif
endif
enemies(e).xVel# = (enemies(e).speed# * cos(angletracker-90) ) * enemies(e).flag
enemies(e).yVel# = (enemies(e).speed# * sin(angletracker-90) ) * enemies(e).flag
enemies(e).goingAngle = angletracker
endif
`handle gravity monster
if enemies(e).aitype = 2
inc gravityMonstersAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
if sprite scale x(enemies(e).sprNum) < 1200
inc enemies(e).scale#,.5
scale sprite enemies(e).sprNum,enemies(e).scale#
endif
endif
`handle spawner enemy
if enemies(e).aitype = 8
inc spawnersAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
if sprite scale x(enemies(e).sprNum) > 100
dec enemies(e).scale#,.5
scale sprite enemies(e).sprNum,enemies(e).scale#
endif
endif
`handle spy
if enemies(e).aitype = 6
inc spiesAlive
angleTracker = curveAngle(angle,sprite angle(enemies(e).sprNum),enemies(e).turnSpeed#)
rotate sprite enemies(e).sprNum,angleTracker
enemies(e).xVel# = enemies(e).speed# * cos(angletracker-90)
enemies(e).yVel# = enemies(e).speed# * sin(angletracker-90)
enemies(e).goingAngle = angletracker
swapImages = 1
backGroundColor = fadeColor( backGroundColor,rgb( 155-(player.health#*100),63+(player.health#*50),255-(rnd(1)*10) ) )
blurScreenAlpha = 40
endif
scale Sprite enemies(e).sprNum,convertToSCreenScale(enemies(e).scale#)
`update velocity by checking for blackholes in world
for b = 0 to maxBlackHoles
if blackHoles(b).alive
`calculate all the needed bits of info to find how hard to pull the enemies in
blackHoleDistX = enemies(e).x# - blackHoles(b).x#
blackHoleDistY = enemies(e).y# - blackHoles(b).y#
blackHoleDist# = SQRT( (blackHoleDistX*blackHoleDistX) + (blackHoleDistY*blackHoleDistY) )
blackHoleAngle =ATANFULL(blackHoleDistX,blackHoleDistY)*-1
`update the enemies velocity with this new info
adjAngle = blackHoleAngle
strength# = blackHoles(b).strength# * (1+(1.0/blackHoleDist#)) * enemies(e).speed#
inc enemies(e).xVel#, strength# * cos(adjAngle-90)
inc enemies(e).yVel#, strength# * sin(adjAngle-90)
stretch sprite enemies(e).sprNum,100+(cos(blackHoleAngle)*5),100+(sin(blackHoleAngle)*5)
`if the enemy is too close to the hole, end it by rapidly decreasing its health
if blackHoleDist# < 50
dec enemies(e).health,100
endif
endif
next b
if swapImages = 1
if enemies(e).aiType <> 2 AND enemies(e).aiType <> 6 AND enemies(e).aitype<>8
set sprite image enemies(e).sprNum,enemies(e).backUpImage
set sprite image player.sprNum,player.backUpImage
scale sprite player.sprNum,convertToScreenScale(95)
set sprite alpha enemies(e).sprNum,255
set sprite diffuse enemies(e).sprNum,255,255,255
endif
endif
`calculate fricion on enemy velocities
if enemies(e).xVel# > 0 then dec enemies(e).xVel#,enemies(e).frictionDrag#
if enemies(e).xVel# < 0 then inc enemies(e).xVel#,enemies(e).frictionDrag#
if enemies(e).yVel# > 0 then dec enemies(e).yVel#,enemies(e).frictionDrag#
if enemies(e).yVel# < 0 then inc enemies(e).yVel#,enemies(e).frictionDrag#
`if the enemy velocity is close enough to 0, just set it to 0. This is really only used for the mine enemy type.
if enemies(e).xVel# > -1 and enemies(e).xVel# < 1 then enemies(e).xVel# = 0
if enemies(e).yVel# > -1 and enemies(e).yVel# < 1 then enemies(e).yVel# = 0
`put a cap on the velocity
if enemies(e).xVel# > enemies(e).maxSpeed# then enemies(e).xVel# = enemies(e).maxSpeed#
if enemies(e).yVel# > enemies(e).maxSpeed# then enemies(e).yVel# = enemies(e).maxSpeed#
if enemies(e).xVel# < enemies(e).maxSpeed#*-1 then enemies(e).xVel# = enemies(e).maxSpeed#*-1
if enemies(e).yVel# < enemies(e).maxSpeed#*-1 then enemies(e).yVel# = enemies(e).maxSpeed#*-1
`move
`check boundries
remstart
if enemies(e).x# < borderx1#
enemies(e).xVel# = enemies(e).xVel# * -1.4
endif
if enemies(e).x# > borderx2#
enemies(e).xVel# = enemies(e).xVel# * -1.4
endif
if enemies(e).y# > bordery2#
enemies(e).yVel# = enemies(e).yVel# * -1.4
endif
if enemies(e).y# < bordery1#
enemies(e).yVel# = enemies(e).yVel# * -1.4
endif
`this is a secondary measure, some how the enemies can end up outside the boundries, if they do, I kill them.
if enemies(e).x# < borderx1#-10 then
dec enemies(e).health,1000
if enemies(e).x# > borderx2#+10 then
dec enemies(e).health,1000
if enemies(e).y# < bordery1#-10 then
dec enemies(e).health,1000
if enemies(e).y# > bordery2#+10 then
dec enemies(e).health,1000
remend
`move enemies with player
inc enemies(e).x#,convertToScreenX(player.xVel#/-1)
inc enemies(e).y#,convertToScreenY(player.yVel#/-1)
inc enemies(e).x#,convertToScreenX(enemies(e).xVel#)
inc enemies(e).y#,convertToScreenY(enemies(e).yVel#)
sprite enemies(e).sprNum,enemies(e).x#,enemies(e).y#,sprite image(enemies(e).sprNum)
`if the music has stopped playing, kill all of the enemies
if is playing mp3(tracks(music)) = 0` OR volume# < 2
dec enemies(e).health,1000
swapImages = 0
endif
`if player has a bomb
if bombExplosion
dec enemies(e).health,200
endif
`do collision tests for bullets
for b = 0 to maxBullets
if bullets(b).alive = 1
`get the distance from a bullet to the enemy
distxB = enemies(e).x# - sprite x(bullets(b).sprnum)
distyB = enemies(e).y# - sprite y(bullets(b).sprnum)
distB = Sqrt( (distxB*distxB) + (distyB*distyB) )
`if the distance is too short, the bullet hits
if distB < sprite width(bullets(b).sprNum)*.8 OR distB < sprite width(enemies(e).sprNum)*.6
if enemies(e).aitype <>2
if player.health# < 1.0 AND playerDead = 0
if difficulty = 1 then inc player.health#,.02
if difficulty = 2 then inc player.health#,.009
if difficulty = 3 then inc player.health#,.008
if gameMode = 3 then dec player.health#,.004
endif
endif
if bullets(b).speed# > convertToScreenScale(30)
for q = 1 to 2
speed# = (rnd(10.0) / 10.0) *2.4
scale# = rnd(80)
particle_spawn(sprite x(bullets(b).sprNUm),sprite y(bullets(b).sprNum),bloodparticleImage,angleTracker+rnd(120)-60,speed#,0,8+rnd(3),scale#,0,particleCOlor)
next q
endif
`if the enemy being hit is a gravity monster, we add a little explosion to show the hit, because the other enemies die in one hit
if enemies(e).aitype = 2
if bullets(b).kind = 1
for q = 1 to 30-bullets(b).speed#+12
speed# = (rnd(10.0) / 10.0) *2.4
scale# = 100 + rnd(80)
particle_spawn(sprite x(bullets(b).sprNUm),sprite y(bullets(b).sprNum),bloodparticleImage,angleTracker+rnd(120)-60,speed#,0,8+rnd(3),scale#,0,particleCOlor)
next q
endif
`and we increase the gravity monsters scale, because it looks cool
if enemies(e).scale# > convertToScreenScale(49.0) then
dec enemies(e).scale#,convertToScreenScale(5)
if enemies(e).scale# < convertToScreenScale(50.0)
dec enemies(e).health,bullets(b).damage
endif
endif
`if the enemy being hit is a gravity monster, we add a little explosion to show the hit, because the other enemies die in one hit
if enemies(e).aitype = 8
if bullets(b).kind = 1
for q = 1 to 30-bullets(b).speed#+12
speed# = (rnd(10.0) / 10.0) *2.4
scale# = 60 + rnd(80)
particle_spawn(sprite x(bullets(b).sprNUm),sprite y(bullets(b).sprNum),bloodparticleImage,angleTracker+rnd(120)-60,speed#,0,8+rnd(3),scale#,0,particleCOlor)
next q
endif
`and we increase the gravity monsters scale, because it looks cool
if enemies(e).scale# > convertToScreenScale(340.0) then
dec enemies(e).health,bullets(b).damage
if enemies(e).scale# < convertToScreenScale(350.0)
inc enemies(e).scale#,convertToScreenScale(5)
endif
endif
if enemies(e).aitype = 6
for q = 1 to 30
speed# = (rnd(10.0) / 10.0) *2.4
scale# = 100 + rnd(80)
particle_spawn(sprite x(bullets(b).sprNUm),sprite y(bullets(b).sprNum),bloodparticleImage,angleTracker+rnd(120)-60,speed#,0,8+rnd(3),scale#,0,particleCOlor)
next q
endif
`subtract health from the enemy
if enemies(e).aitype = 1 or enemies(e).aitype = 0 or enemies(e).aitype = 3 or enemies(e).aitype = 4 or enemies(e).aitype = 5 or enemies(e).aitype = 6 or enemies(e).aitype = 7
dec enemies(e).health,bullets(b).damage
endif
`get rid of the bullet sprite and set its variables to be un-active
if bullets(b).kind = 1
delete sprite bullets(b).sprNum
bullets(b).alive = 0
endif
if bullets(b).kind = 4
rocketBoom = 1
rocketX = sprite x(bullets(b).sprNum)
rocketY = sprite y(bullets(b).sprNum)
makeExplosion(rocketX,rocketY,200)
delete sprite bullets(b).sprNum
bullets(b).alive = 0
endif
endif
endif
next b
enemies(e).oldAngle = sprite angle(enemies(e).sprNum)
rotate sprite enemies(e).sprNum,angle
for e2 = 1 to nextExplosion
if explosion(e2).explosionX > 0 AND explosion(e2).explosionY > 0
distEX = enemies(e).x# - explosion(e2).explosionX
distEY = enemies(e).y# - explosion(e2).explosionY
distE = SQRT( (distEX*distEX) + (distEY*distEY) )
if distE < explosion(e2).size
if enemies(e).aiType <> 5
dec enemies(e).health,100
endif
if enemies(e).aiType = 5
enemies(e).flag = -100-rnd(100)
endif
endif
endif
next e2
`check to see if the enemy is dead
if enemies(e).health =< 0
`set the enemies variables to be un-active
enemies(e).alive = 0
`if the ai was a mine or tracker, it blows up with a little explosion
if enemies(e).aitype = 0 or enemies(e).aitype = 1 or enemies(e).aitype = 3 or enemies(e).aitype = 4 or enemies(e).aitype = 5 or enemies(e).aitype = 6 or enemies(e).aitype = 7
if bombExplosion =0
for q = 1 to 30
speed# = (rnd(10.0) / 10.0) *2.4
scale# = 100 + rnd(80)
particle_spawn(enemies(e).x#,enemies(e).y#,bloodparticleImage,rnd(359),speed#*1.5,0,8+rnd(3),scale#,0,particleCOlor)
next q
`and we pass a 1 or 0 to the blood function, which calls for a smaller blot of blood
bloodKind = rnd(1)
size = 1
endif
endif
`if the enemy was a gravity monster, we make a bigger boom
if enemies(e).aitype = 2
player.health# = 1
for q = 1 to 30
speed# = (rnd(40.0) / 20.0) *4.4
scale# = 300 + rnd(80)
particle_spawn(enemies(e).x#,enemies(e).y#,bloodparticleImage,rnd(359),speed#*1.5,1,8+rnd(3),scale#,0,particleCOlor)
next q
`and we pass a 2 to the blood function, to make a big blood splat
bloodKind = 2
size = 2
`we also create a black hole where the gravity monster was.
blackHole_spawn(enemies(e).x#,enemies(e).y#)
endif
`if the enemy was a gravity monster, we make a bigger boom
if enemies(e).aitype = 8
for q = 1 to 30
speed# = (rnd(40.0) / 20.0) *4.4
scale# = 300 + rnd(80)
particle_spawn(enemies(e).x#,enemies(e).y#,bloodparticleImage,rnd(359),speed#*1.5,1,8+rnd(3),scale#,0,particleCOlor)
next q
`and we pass a 2 to the blood function, to make a big blood splat
bloodKind = 2
size = 2
`we also create a black hole where the gravity monster was.
for spawn = 0 to 25
enemy_spawn(1+(rnd(1)*2),enemies(e).x#,enemies(e).y#)
next spawn
endif
`spawn up some yummy gore, and get rid of the enemy
blood_spawn(bloodKind,enemies(e).x#,enemies(e).y#,size,(interCeptAngle+player.angle#+player.angle#+player.angle#)/4)
delete sprite enemies(e).sprNum
if enemies(e).aiType = 5 AND bombexplosion=0
callExplosion(enemies(e).x#,enemies(e).y#,200,1,rgb(0,200-rnd(50),100+rnd(50)),rgb(0,255,150+rnd(55)),0)
if player.health# < 1.0
if difficulty = 1 then inc player.health#,.02
if difficulty = 2 then inc player.health#,.009
if difficulty = 3 then inc player.health#,.008
if gameMode = 3 then dec player.health#,.008
endif
endif
if enemies(e).aiType = 6
swapImages = 0
backGroundColor = rgb(255,255,255)
endif
inc enemiesKilled
if combo < 10
inc combo
endif
comboTime = timer() + 500
inc score,volumeAvg#*enemies(e).score*combo*difficulty / 10.0
playSound(gutSounds(rnd(4)),90,0,1)
endif
endif
if rocketBoom = 1
callExplosion(rocketX,rocketY,200,3,rgb(205,180+rnd(20),30+rnd(50)),rgb(255,0,0),1)
endif
if playerDead = 1
player.health# = 0
endif
next e
Endfunction
Function callExplosion(x,y,size,realsize,backColor as dword,frontColor as dword,resevered)
for p = 0 to 15
scale# = 100 + rnd(20)
speed# =.5* rnd(5)+1
particle_spawn(x,y,particleCloudImage,rnd(359),speed#,0,8+rnd(3),scale#*realsize,1,backColor)
next p
for p = 0 to 15
scale# = 100 + rnd(10)
speed# =.5* rnd(8)+5
particle_spawn(x,y,particleLineImage,rnd(359),speed#,0,8+rnd(5),scale#*realsize,1,frontColor)
next p
if size > 0
makeExplosion(x,y,size)
endif
playSound(cannonSound,100,0,1)
Endfunction
FUnction makeExplosion(x,y,size)
inc nextExplosion
e2 = nextExplosion
explosion(e2).ExplosionX = x
explosion(e2).ExplosionY = y
explosion(e2).size = size
if nextExplosion > 10 then nextExplosion = 0
Endfunction
