home *** CD-ROM | disk | FTP | other *** search
- global bgOffset
-
- on initializeBulletStreaks
- global bStreakData
- bStreakData = []
- repeat with wStreak = 1 to 8
- add(bStreakData, [0, 0])
- wSprite = 520 + wStreak
- sprite(wSprite).visible = 1
- set the width of sprite wSprite to 1
- set the height of sprite wSprite to 200
- set the loc of sprite wSprite to point(25, 200)
- set the blend of sprite wSprite to 100
- set the ink of sprite wSprite to 36
- sprite(wSprite).locZ = 200
- end repeat
- end
-
- on runBulletStreaks
- global bStreakData
- repeat with wStreak = 1 to count(bStreakData)
- if bStreakData[wStreak][2] > 0 then
- wSprite = 520 + wStreak
- bStreakData[wStreak][2] = bStreakData[wStreak][2] - 1
- if bStreakData[wStreak][2] = 0 then
- sprite(wSprite).visible = 0
- next repeat
- end if
- sprite(wSprite).visible = 1
- set the height of sprite wSprite to bStreakData[wStreak][1]
- bStreakData[wStreak][1] = bStreakData[wStreak][1] * 0.59999999999999998
- end if
- end repeat
- end
-
- on addStreak impactLoc, streakLength, streakAim
- global bStreakData
- validSlot = 0
- repeat with wScan = 1 to count(bStreakData)
- if (validSlot = 0) and (bStreakData[wScan][2] = 0) then
- validSlot = wScan
- end if
- end repeat
- if validSlot <> 0 then
- wSprite = 520 + validSlot
- set the loc of sprite wSprite to impactLoc
- set the height of sprite wSprite to streakLength
- sprite(wSprite).rotation = streakAim
- sprite(wSprite).visible = 1
- bStreakData[validSlot] = [streakLength, 10]
- end if
- end
-
- on initializeTerrain
- global terrainSO, tileSize, prevLocation, playerViewPoint, levelWidth, levelheight
- terrainSO = 30
- levelWidth = 15
- levelheight = 10
- tileSize = point(40, 40)
- bgOffset = point(-10, 0)
- wSprite = terrainSO - 1
- repeat with wY = 1 to levelheight
- repeat with wX = 1 to levelWidth
- wSprite = wSprite + 1
- puppetSprite(wSprite, 1)
- set the loc of sprite wSprite to (point(wX, wY) * tileSize) - (tileSize / 2) + bgOffset
- set the member of sprite wSprite to 244
- set the ink of sprite wSprite to 36
- sprite(wSprite).visible = 1
- set the ink of sprite wSprite to 36
- end repeat
- end repeat
- prevLocation = VOID
- playerViewPoint = point(0, 4000)
- sprite(1).locZ = 1
- set the ink of sprite 1 to 36
- puppetSprite(201, 1)
- set the member of sprite 201 to "Satellite 1"
- set the ink of sprite 201 to 36
- sprite(201).rotation = 90
- set the loc of sprite 201 to point(290, -100)
- end
-
- on initializeMap
- global roadMapData, playerViewPoint, levelWidth, levelheight, totalDistance, lSide, rSide, lDelay, rDelay
- roadMapData = []
- repeat with wY = 1 to 100
- oneLiner = []
- if wY >= 27 then
- repeat with wX = 1 to levelWidth
- add(oneLiner, 1)
- end repeat
- else
- repeat with wX = 1 to levelWidth
- case wX of
- 1:
- add(oneLiner, 2)
- levelWidth:
- add(oneLiner, 3)
- otherwise:
- add(oneLiner, 12)
- end case
- end repeat
- end if
- add(roadMapData, oneLiner)
- end repeat
- lSide = 0
- rSide = 0
- totalDistance = 0
- end
-
- on appendmap appendType
- global roadMapData, playerData, levelWidth, tileSize, roadBarLength, lSide, rSide, playerlevel, totalDistance, enemyData, particleData, blasterData, gatewayData
- oneLiner = []
- repeat with wX = 1 to levelWidth
- if wX <= (1 + lSide) then
- if wX = (1 + lSide) then
- add(oneLiner, 2)
- else
- add(oneLiner, 1)
- end if
- next repeat
- end if
- if wX >= (levelWidth - rSide) then
- if wX = (levelWidth - rSide) then
- add(oneLiner, 3)
- else
- add(oneLiner, 1)
- end if
- next repeat
- end if
- add(oneLiner, 12)
- end repeat
- if appendType = #Finish then
- if lSide > 2 then
- lSide = lSide - 1
- oneLiner[lSide + 2] = 10
- oneLiner[lSide + 1] = 8
- else
- if lSide < 2 then
- lSide = lSide + 1
- oneLiner[1 + lSide] = 6
- oneLiner[lSide] = 4
- end if
- end if
- if rSide > 2 then
- rSide = rSide - 1
- oneLiner[levelWidth - rSide - 1] = 11
- oneLiner[levelWidth - rSide] = 9
- else
- if rSide < 2 then
- rSide = rSide + 1
- oneLiner[levelWidth - rSide + 1] = 5
- oneLiner[levelWidth - rSide] = 7
- end if
- end if
- else
- case random(4) of
- 1:
- if lSide > 1 then
- lSide = lSide - 1
- oneLiner[lSide + 2] = 10
- oneLiner[lSide + 1] = 8
- end if
- 2:
- if lSide < 5 then
- lSide = lSide + 1
- oneLiner[1 + lSide] = 6
- oneLiner[lSide] = 4
- end if
- otherwise:
- if random([5, 4, 3][playerlevel]) = 1 then
- case playerlevel of
- 1:
- eClass = 1
- 2:
- eClass = random(2)
- 3:
- eClass = 2
- end case
- case eClass of
- 1:
- addEnemy(3, point((lSide * 40) + 20, -10), [0, 0, 0, 3, 5, 60, 8, 40, 90])
- 2:
- addEnemy(6, point((lSide * 40) + 20, -10), [0, 0, 0, 1, 2, 0, 30, 60, 90])
- 3:
- end case
- end if
- end case
- case random(4) of
- 1:
- if rSide > 1 then
- rSide = rSide - 1
- oneLiner[levelWidth - rSide - 1] = 11
- oneLiner[levelWidth - rSide] = 9
- end if
- 2:
- if rSide < 5 then
- rSide = rSide + 1
- oneLiner[levelWidth - rSide + 1] = 5
- oneLiner[levelWidth - rSide] = 7
- end if
- otherwise:
- if random([5, 4, 3][playerlevel]) = 1 then
- case playerlevel of
- 1:
- eClass = 1
- 2:
- eClass = 1
- 3:
- eClass = random(2)
- end case
- case eClass of
- 1:
- addEnemy(3, point(((levelWidth - rSide) * 40) - 20, -10), [0, 0, 0, 3, 5, 60, 8, 50, 90])
- 2:
- addEnemy(6, point(((levelWidth - rSide) * 40) - 20, -10), [0, 0, 0, 1, 2, 0, 30, 90, 270])
- 3:
- end case
- end if
- end case
- if random([12, 10, 8][playerlevel]) = 1 then
- case playerlevel of
- 1:
- eClass = random(2)
- 2:
- eClass = random(3)
- 3:
- eClass = random(3)
- end case
- rMid = random((levelWidth - rSide - lSide - 2) * 40) + (lSide * 40) + 40
- case eClass of
- 1:
- addEnemy(4, point(rMid, -20), [0, 0, 0, 3, 5, 60, 12, 50, 6])
- 2:
- addEnemy(5, point(rMid, -20), [0, 0, 0, 3, 5, 60, 12, 50, 6])
- 3:
- addEnemy(7, point(rMid, -10), [35, 0, 0, 1, 25, 25, 6, 90, 12, 0])
- end case
- end if
- end if
- randomX = random(6) + 2
- addAt(roadMapData, 1, oneLiner)
- totalDistance = totalDistance + 1
- shiftTiles = 0
- repeat while count(roadMapData) > 100
- deleteAt(roadMapData, count(roadMapData))
- shiftTiles = shiftTiles + 1
- end repeat
- pLoc = playerData[2]
- pLoc = pLoc + point(0, shiftTiles * tileSize[2])
- repeat with wEnemy = 1 to count(enemyData)
- enemyData[wEnemy][3] = enemyData[wEnemy][3] + point(0, shiftTiles * tileSize[2])
- end repeat
- repeat with wPart = 1 to count(particleData)
- if particleData[wPart][1] = 1 then
- particleData[wPart][4] = particleData[wPart][4] + point(0, shiftTiles * tileSize[2])
- end if
- end repeat
- repeat with wEffect = 1 to count(particleData)
- if particleData[wEffect][1] <> 0 then
- particleData[wEffect][4] = particleData[wEffect][4] + point(0, shiftTiles * tileSize[2])
- end if
- end repeat
- blasterData[2] = blasterData[2] + point(0, shiftTiles * tileSize[2])
- if gatewayData[1] = 1 then
- gatewayData[2] = gatewayData[2] + (shiftTiles * tileSize[2])
- end if
- playerData[2] = pLoc
- end
-
- on initializeEnemies
- global enemyData, enemySO
- enemySO = 450
- enemyData = []
- repeat with wEnemy = 1 to 30
- wSprite = enemySO + wEnemy
- add(enemyData, [0, 0, point(0, 0), point(0, 0), 0, 0])
- puppetSprite(wSprite, 1)
- set the member of sprite wSprite to "Fixed Cannon"
- set the ink of sprite wSprite to 36
- set the loc of sprite wSprite to point(-50, -50)
- sprite(wSprite).locZ = 400
- end repeat
- end
-
- on addEnemy spawnType, spawnloc, spawnParameters
- global enemyData, enemySO
- validSlot = 0
- repeat with wSlot = 1 to count(enemyData)
- if (enemyData[wSlot][1] = 0) and (validSlot = 0) then
- validSlot = wSlot
- end if
- end repeat
- if validSlot <> 0 then
- enemySprite = enemySO + validSlot
- enemyData[validSlot] = [1, spawnType, spawnloc, 0, 0, 0, spawnParameters]
- case spawnType of
- 1:
- set the member of sprite enemySprite to "Small Bullet 1"
- 2:
- set the member of sprite enemySprite to "Shield Pickup"
- 3:
- set the member of sprite enemySprite to "Fixed Cannon"
- 4:
- set the member of sprite enemySprite to "Satellite 1"
- 5:
- set the member of sprite enemySprite to "Space mine 1"
- 6:
- set the member of sprite enemySprite to "Fixed Cannon"
- 7:
- set the member of sprite enemySprite to "Enemy Fighter"
- end case
- set the backColor of sprite enemySprite to 255
- set the foreColor of sprite enemySprite to 255
- set the ink of sprite enemySprite to 36
- sprite(enemySprite).rotation = 0
- end if
- end
-
- on addpoints pValue
- global playerlevel, playerScore, totalScore
- playerScore = playerScore + integer(pValue * 0.5)
- member("Score Display").text = string(totalScore + playerScore)
- end
-
- on moveEnemy
- global enemyData, enemySO, playerData, playerViewPoint
- repeat with wEnemy = 1 to count(enemyData)
- enemySprite = enemySO + wEnemy
- if enemyData[wEnemy][1] = 1 then
- playerAim = findAngle(enemyData[wEnemy][3], playerData[2])
- playerDist = findDistance(enemyData[wEnemy][3], playerData[2])
- case enemyData[wEnemy][2] of
- 1:
- enemyData[wEnemy][3] = enemyData[wEnemy][3] - enemyData[wEnemy][7][1]
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][2] - 1
- if enemyData[wEnemy][7][2] <= 0 then
- enemyData[wEnemy][1] = 0
- set the loc of sprite enemySprite to point(-50, -50)
- addparticle(enemyData[wEnemy][3], 0, 2)
- else
- if (enemyData[wEnemy][3][1] <= 0) or (enemyData[wEnemy][3][1] >= 580) then
- enemyData[wEnemy][1] = 0
- set the loc of sprite enemySprite to point(-50, -50)
- else
- if playerDist <= 20 then
- enemyData[wEnemy][1] = 0
- set the loc of sprite enemySprite to point(-50, -50)
- addparticle(enemyData[wEnemy][3], 0, 2)
- damagePlayer(10)
- else
- bname = ["Small Bullet", "Big Bullet", "Thin Bullet"][enemyData[wEnemy][7][3]]
- set the ink of sprite enemySprite to 33
- case enemyData[wEnemy][7][2] mod 2 of
- 0:
- set the member of sprite enemySprite to bname & " 1"
- 1:
- set the member of sprite enemySprite to bname & " 2"
- end case
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- end if
- end if
- end if
- 2:
- if playerDist <= 30 then
- set the ink of sprite enemySprite to 33
- case enemyData[wEnemy][7][3] of
- 1:
- damagePlayer(-10)
- addpoints(25)
- 2:
- playerData[5] = 1000
- addpoints(50)
- end case
- set the backColor of sprite enemySprite to 255
- set the foreColor of sprite enemySprite to 255
- set the loc of sprite enemySprite to point(-50, -50)
- enemyData[wEnemy][1] = 0
- else
- locY = cos(playerAim * PI / 180) * -0.5
- locX = sin(playerAim * PI / 180) * 0.5
- enemyData[wEnemy][3] = enemyData[wEnemy][3] + point(locX, locY)
- if enemyData[wEnemy][3][2] < 100 then
- enemyData[wEnemy][1] = 0
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][1] = 0
- end if
- end if
- case enemyData[wEnemy][7][3] of
- 1:
- set the member of sprite enemySprite to "Shield Pickup"
- 2:
- set the member of sprite enemySprite to "Weapon Pickup"
- end case
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- end if
- 3:
- if enemyData[wEnemy][6] > 0 then
- if enemyData[wEnemy][6] > 20 then
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 10
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 10
- else
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- end if
- end if
- moveSpeed = point(0, 0)
- if enemyData[wEnemy][7][1] > 0 then
- if enemyData[wEnemy][7][2] > 0 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][2] - 1
- else
- if playerDist <= 450 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][5]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][1] - 1
- locY = cos(playerAim * PI / 180) * enemyData[wEnemy][7][7]
- locX = sin(playerAim * PI / 180) * -enemyData[wEnemy][7][7]
- addEnemy(1, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, 2])
- playSound("enemy cannon", 1)
- end if
- end if
- else
- if enemyData[wEnemy][7][3] > 0 then
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][3] - 1
- else
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][6]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][4]
- end if
- end if
- enemyData[wEnemy][3] = enemyData[wEnemy][3] - moveSpeed
- if enemyData[wEnemy][3][2] < 100 then
- enemyData[wEnemy][3][2] = 2500
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][1] = 0
- end if
- end if
- if enemyData[wEnemy][5] > enemyData[wEnemy][7][8] then
- enemyData[wEnemy][1] = 0
- if random(15) = 1 then
- addEnemy(2, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, 2])
- end if
- set the loc of sprite enemySprite to point(-50, -50)
- addparticle(enemyData[wEnemy][3], 0, 1)
- addpoints(40)
- playSound("enemy explosion", 2)
- else
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- sprite(enemySprite).rotation = playerAim
- end if
- 4:
- if playerDist <= 30 then
- enemyData[wEnemy][1] = 0
- addparticle(enemyData[wEnemy][3], 0, 1)
- damagePlayer(10)
- set the loc of sprite enemySprite to point(-50, -50)
- else
- maxDamage = enemyData[wEnemy][7][1]
- if enemyData[wEnemy][6] > 0 then
- if enemyData[wEnemy][6] > 6 then
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 5
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 5
- else
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- end if
- if enemyData[wEnemy][6] = 0 then
- set the foreColor of sprite enemySprite to 255
- else
- set the foreColor of sprite enemySprite to [1, 2][(enemyData[wEnemy][6] mod 2) + 1]
- end if
- end if
- enemyData[wEnemy][3] = enemyData[wEnemy][3] - moveSpeed
- if enemyData[wEnemy][3][2] < 0 then
- enemyData[wEnemy][1] = 2500
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][1] = 0
- end if
- end if
- if enemyData[wEnemy][5] > maxDamage then
- enemyData[wEnemy][1] = 0
- addEnemy(2, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, random(2)])
- rMove = random(50)
- enemyData[wEnemy][1] = 0
- addparticle(enemyData[wEnemy][3], 0, 1)
- addpoints(15)
- playSound("enemy explosion", 2)
- set the loc of sprite enemySprite to point(-50, -50)
- else
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- end if
- end if
- 5:
- maxDamage = enemyData[wEnemy][7][1]
- enemyData[wEnemy][3] = enemyData[wEnemy][3] - moveSpeed
- if enemyData[wEnemy][3][2] < 100 then
- enemyData[wEnemy][3][2] = 2500
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][1] = 0
- end if
- end if
- if enemyData[wEnemy][6] > 0 then
- if enemyData[wEnemy][6] > 6 then
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 5
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 5
- else
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- end if
- if enemyData[wEnemy][6] = 0 then
- set the foreColor of sprite enemySprite to 255
- else
- set the foreColor of sprite enemySprite to [1, 2][(enemyData[wEnemy][6] mod 2) + 1]
- end if
- end if
- if (enemyData[wEnemy][5] > maxDamage) or (playerData[2][2] < enemyData[wEnemy][3][2]) then
- enemyData[wEnemy][1] = 0
- repeat with whichShrap = 1 to 16
- rSpeed = 4 + random(4)
- locY = cos(((whichShrap * 45) + random(45)) * PI / 180) * (rSpeed / 2)
- locX = sin(((whichShrap * 45) + random(45)) * PI / 180) * -rSpeed
- addEnemy(1, enemyData[wEnemy][3], [point(locX, locY) + point(0, 8), 30 + random(20), 1])
- end repeat
- rMove = random(50)
- if playerData[2][2] >= enemyData[wEnemy][3][2] then
- addpoints(30)
- end if
- playSound("enemy explosion", 2)
- set the loc of sprite enemySprite to point(-50, -50)
- else
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- end if
- 6:
- straightAim = enemyData[wEnemy][7][9]
- if enemyData[wEnemy][6] > 0 then
- if enemyData[wEnemy][6] > 20 then
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 10
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 10
- else
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- end if
- end if
- moveSpeed = point(0, 0)
- if enemyData[wEnemy][7][1] > 0 then
- if enemyData[wEnemy][7][2] > 0 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][2] - 1
- else
- if playerDist <= 450 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][5]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][1] - 1
- locY = cos(straightAim * PI / 180) * enemyData[wEnemy][7][7]
- locX = sin(straightAim * PI / 180) * -enemyData[wEnemy][7][7]
- addEnemy(1, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, 3])
- playSound("enemy Cannon", 3)
- end if
- end if
- else
- if enemyData[wEnemy][7][3] > 0 then
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][3] - 1
- else
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][6]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][4]
- end if
- end if
- if enemyData[wEnemy][3][2] < 100 then
- enemyData[wEnemy][1] = 0
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][1] = 0
- end if
- end if
- if enemyData[wEnemy][5] > enemyData[wEnemy][7][8] then
- enemyData[wEnemy][1] = 0
- if random(12) = 1 then
- addEnemy(2, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, 2])
- end if
- set the loc of sprite enemySprite to point(-50, -50)
- addparticle(enemyData[wEnemy][3], 0, 1)
- addpoints(75)
- playSound("enemy explosion", 2)
- else
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- sprite(enemySprite).rotation = straightAim
- end if
- 7:
- maxDamage = enemyData[wEnemy][7][1]
- if enemyData[wEnemy][3][2] < (playerData[2][2] - 150) then
- if enemyData[wEnemy][7][9] > 8 then
- enemyData[wEnemy][7][9] = enemyData[wEnemy][7][9] - 1
- end if
- if enemyData[wEnemy][3][1] < playerData[2][1] then
- enemyData[wEnemy][7][10] = enemyData[wEnemy][7][10] + 0.20000000000000001
- if enemyData[wEnemy][7][10] > 6 then
- enemyData[wEnemy][7][10] = 6
- end if
- else
- enemyData[wEnemy][7][10] = enemyData[wEnemy][7][10] - 0.20000000000000001
- if enemyData[wEnemy][7][10] < -6 then
- enemyData[wEnemy][7][10] = -6
- end if
- end if
- else
- if enemyData[wEnemy][7][10] > 0 then
- enemyData[wEnemy][7][10] = enemyData[wEnemy][7][10] - 0.20000000000000001
- else
- if enemyData[wEnemy][7][10] < 0 then
- enemyData[wEnemy][7][10] = enemyData[wEnemy][7][10] + 0.20000000000000001
- end if
- end if
- if enemyData[wEnemy][7][9] < 16 then
- enemyData[wEnemy][7][9] = enemyData[wEnemy][7][9] + 1
- end if
- end if
- enemyData[wEnemy][3] = enemyData[wEnemy][3] + point(enemyData[wEnemy][7][10], 0)
- enemyData[wEnemy][3] = enemyData[wEnemy][3] - point(0, enemyData[wEnemy][7][9])
- if enemyData[wEnemy][3][2] < 100 then
- enemyData[wEnemy][3][2] = 2500
- else
- if enemyData[wEnemy][3][2] > 2500 then
- enemyData[wEnemy][3][2] = 100
- end if
- end if
- if enemyData[wEnemy][7][1] > 0 then
- if enemyData[wEnemy][7][2] > 0 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][2] - 1
- else
- if playerDist <= 450 then
- enemyData[wEnemy][7][2] = enemyData[wEnemy][7][5]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][1] - 1
- locY = cos(playerAim * PI / 180) * enemyData[wEnemy][7][7]
- locX = sin(playerAim * PI / 180) * -enemyData[wEnemy][7][7]
- addEnemy(1, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, 1])
- playSound("enemy Ship", 3)
- end if
- end if
- else
- if enemyData[wEnemy][7][3] > 0 then
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][3] - 1
- else
- enemyData[wEnemy][7][3] = enemyData[wEnemy][7][6]
- enemyData[wEnemy][7][1] = enemyData[wEnemy][7][4]
- end if
- end if
- if enemyData[wEnemy][6] > 0 then
- if enemyData[wEnemy][6] > 6 then
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 5
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 5
- enemyData[wEnemy][7][9] = enemyData[wEnemy][7][9] + 5
- else
- enemyData[wEnemy][6] = enemyData[wEnemy][6] - 1
- enemyData[wEnemy][5] = enemyData[wEnemy][5] + 1
- enemyData[wEnemy][7][9] = enemyData[wEnemy][7][9] + 1
- end if
- if enemyData[wEnemy][6] = 0 then
- set the foreColor of sprite enemySprite to 255
- else
- set the foreColor of sprite enemySprite to [1, 2][(enemyData[wEnemy][6] mod 2) + 1]
- end if
- end if
- if enemyData[wEnemy][5] > maxDamage then
- enemyData[wEnemy][1] = 0
- if random(5) = 1 then
- addEnemy(2, enemyData[wEnemy][3], [point(locX, locY) + moveSpeed, 45, random(2)])
- end if
- rMove = random(50)
- repeat with wTurn = 1 to 5
- locY = cos((rMove + (wTurn * 72)) * PI / 180) * 30
- locX = sin((rMove + (wTurn * 72)) * PI / 180) * -30
- addparticle(enemyData[wEnemy][3] + point(locX, locY), 0, 1)
- end repeat
- addpoints(100)
- playSound("enemy explosion", 2)
- set the loc of sprite enemySprite to point(-50, -50)
- else
- set the loc of sprite enemySprite to enemyData[wEnemy][3] - playerViewPoint + bgOffset
- end if
- end case
- end if
- end repeat
- end
-
- on damagePlayer damageAmount
- global playerData
- playerData[4] = playerData[4] - damageAmount
- if playerData[4] > 100 then
- playerData[4] = 100
- end if
- if playerData[4] < 0 then
- playerData[4] = 0
- end if
- set the width of sprite 506 to integer(playerData[4] / 100.0 * 152)
- if playerData[4] = 0 then
- playerData[1] = 0
- end if
- end
-
- on checkTerrainPoint checkPoint
- global roadMapData, tileSize, tileLoc
- xPoint = (checkPoint[1] / tileSize[1]) + 1
- yPoint = (checkPoint[2] / tileSize[2]) + 1
- tileLoc = point(xPoint, yPoint)
- xmod = checkPoint[1] mod tileSize[1]
- ymod = checkPoint[2] mod tileSize[2]
- pointLoc = point(xmod, ymod)
- if (tileLoc[1] >= 1) and (tileLoc[2] >= 1) and (tileLoc[1] <= count(roadMapData[1])) and (tileLoc[2] <= count(roadMapData)) then
- tType = roadMapData[tileLoc[2]][tileLoc[1]]
- case tType of
- 1:
- terrainState = 2
- 2:
- if xmod > 20 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 3:
- if xmod < 20 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 6:
- if (xmod + ymod) > 40 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 7:
- if (40 - xmod + ymod) > 40 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 10:
- if (40 - xmod + ymod) < 40 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 11:
- if (xmod + ymod) < 40 then
- terrainState = 1
- else
- terrainState = 2
- end if
- 12:
- terrainState = 1
- otherwise:
- terrainState = 2
- end case
- else
- terrainState = 0
- end if
- return terrainState
- end
-
- on initializeplayer
- global playerData, playerSO
- playerData = [1, point(200, 1000), point(0, 0), 100, 0, 0, 0, 3000, 40]
- playerSO = 250
- puppetSprite(playerSO, 1)
- puppetSprite(playerSO + 1, 1)
- puppetSprite(playerSO + 2, 1)
- set the member of sprite playerSO to "Spy Hunter Car"
- set the loc of sprite playerSO to point(0, 0)
- set the ink of sprite playerSO to 36
- set the member of sprite (playerSO + 1) to "Muzzle Flash B1"
- set the loc of sprite (playerSO + 1) to point(0, 0)
- set the ink of sprite (playerSO + 1) to 36
- sprite(playerSO + 1).visible = 0
- set the member of sprite (playerSO + 1) to "Muzzle Flash B1"
- set the loc of sprite (playerSO + 1) to point(0, 0)
- set the ink of sprite (playerSO + 1) to 36
- sprite(playerSO + 1).visible = 0
- end
-
- on moveplayer
- global playerData, playerSO, playerViewPoint, mouseinput, inputString, enemyData, blasterData, alternatingGun, watchme
- if inputString[5] = 1 then
- if playerData[7] >= 10 then
- playerData[7] = playerData[7] - 10
- end if
- else
- if playerData[7] <= 90 then
- playerData[7] = playerData[7] + 10
- end if
- end if
- mousepos = playerData[2] - playerViewPoint
- moveAim = findAngle(mousepos, the mouseLoc)
- moveSpeed = integer(findDistance(mousepos, the mouseLoc) / 15 / 100.0 * playerData[7])
- if moveSpeed > 12 then
- moveSpeed = 12
- end if
- locY = cos(moveAim * PI / 180) * -moveSpeed
- locX = sin(moveAim * PI / 180) * moveSpeed
- if (playerData[2][2] > 2500) and (locY > 0) then
- ratio = (1000 - (playerData[2][2] - 2500)) / 1000.0
- locY = locY * ratio
- end if
- playerData[3] = point(locX, locY)
- pLoc = playerData[2]
- pLoc = pLoc + playerData[3]
- playerData[2] = point(integer(pLoc[1]), integer(pLoc[2]))
- if mouseinput = 1 then
- fireMGUN = 1
- if playerData[6] < 4 then
- playerData[6] = playerData[6] + 4
- end if
- else
- fireMGUN = 0
- end if
- gunPower = 2
- if playerData[5] > 0 then
- playerData[5] = playerData[5] - 4
- gunType = 2
- else
- gunType = 1
- end if
- streakLength = 400
- case gunType of
- 1:
- muzzleHidden = 0
- if playerData[6] > 0 then
- playerData[6] = playerData[6] - 1
- if playerData[6] = 0 then
- sprite(playerSO + 1).visible = 0
- else
- sprite(playerSO + 1).visible = 1
- case playerData[6] mod 4 of
- 1:
- sprite(playerSO + 1).flipH = 1
- set the member of sprite (playerSO + 1) to "Muzzle Flash " & ["A", "B", "C", "D"][gunPower] & "1"
- set the loc of sprite (playerSO + 1) to playerData[2] - playerViewPoint + bgOffset
- sprite(playerSO + 1).rotation = moveAim
- 3:
- sprite(playerSO + 1).flipH = 1
- set the member of sprite (playerSO + 1) to "Muzzle Flash " & ["A", "B", "C", "D"][gunPower] & "2"
- set the loc of sprite (playerSO + 1) to playerData[2] - playerViewPoint + bgOffset
- sprite(playerSO + 1).rotation = moveAim
- otherwise:
- sprite(playerSO + 1).visible = 0
- playSound("player secondary weapon", 5)
- muzzleHidden = 1
- end case
- end if
- muzzUsed = 0
- targRange = 450
- targID = 0
- repeat with wEnemy = 1 to count(enemyData)
- if enemyData[wEnemy][1] = 1 then
- if [0, 0, 1, 1, 1, 1, 1][enemyData[wEnemy][2]] = 1 then
- enemyloc = enemyData[wEnemy][3]
- playerloc = playerData[2]
- relativeLoc = enemyloc - playerloc
- relativeAim = findAngle(point(0, 0), relativeLoc)
- relativeDistance = findDistance(point(0, 0), relativeLoc)
- newAim = relativeAim - moveAim
- locY = cos(newAim * PI / 180) * -relativeDistance
- locX = sin(newAim * PI / 180) * relativeDistance
- if (abs(locX) <= 20) and (locY < 0) then
- if relativeDistance < targRange then
- targID = wEnemy
- targRange = relativeDistance
- streakLength = relativeDistance
- end if
- end if
- end if
- end if
- end repeat
- end if
- if targID <> 0 then
- enemyData[targID][6] = enemyData[targID][6] + 4
- rpoint = point(random(30) - 15, random(30) - 15)
- addparticle(enemyData[targID][3] + rpoint, 0, 3)
- end if
- 2:
- sprite(playerSO + 1).visible = 0
- if playerData[6] > 0 then
- if blasterData[1] = 0 then
- blasterData[1] = 1
- blasterData[2] = playerData[2]
- locY = cos(moveAim * PI / 180) * -35
- locX = sin(moveAim * PI / 180) * 35
- blasterData[3] = point(locX, locY)
- blasterData[4] = 45
- playSound("player Laser", 5)
- end if
- playerData[6] = 0
- end if
- fireMGUN = 0
- end case
- blastOn = 0
- leftSolid = checkTerrainPoint(playerData[2] + point(-20, 0))
- repeat while leftSolid = 2
- leftSolid = checkTerrainPoint(playerData[2] + point(-20, 0))
- if leftSolid = 2 then
- playerData[2] = playerData[2] + point(2, 0)
- blastOn = 1
- blastloc = playerData[2] + point(-20, 0)
- end if
- end repeat
- rightSolid = checkTerrainPoint(playerData[2] + point(20, 0))
- repeat while rightSolid = 2
- rightSolid = checkTerrainPoint(playerData[2] + point(20, 0))
- if rightSolid = 2 then
- playerData[2] = playerData[2] + point(-2, 0)
- blastOn = 1
- blastloc = playerData[2] + point(20, 0)
- end if
- end repeat
- rightSolid = checkTerrainPoint(playerData[2] + point(0, 15))
- repeat while rightSolid = 2
- rightSolid = checkTerrainPoint(playerData[2] + point(0, 15))
- if rightSolid = 2 then
- playerData[2] = playerData[2] + point(0, -2)
- blastOn = 1
- blastloc = playerData[2] + point(0, 15)
- end if
- end repeat
- if blastOn = 1 then
- rloc = point(random(20) - 10, random(20) - 10)
- addparticle(blastloc + rloc, 0, 1 + random(2))
- damagePlayer(1)
- playSound("Grind Wall", 4)
- end if
- if fireMGUN = 1 then
- if alternatingGun = 1 then
- alternatingGun = 2
- locY = cos((moveAim + 90) * PI / 180) * -8
- locX = sin((moveAim + 90) * PI / 180) * 8
- else
- alternatingGun = 1
- locY = cos((moveAim - 90) * PI / 180) * -8
- locX = sin((moveAim - 90) * PI / 180) * 8
- end if
- streakLength = streakLength - random(25)
- locY2 = cos(moveAim * PI / 180) * -streakLength
- locX2 = sin(moveAim * PI / 180) * streakLength
- coreloc = playerData[2] - playerViewPoint + bgOffset + point(locX, locY) + point(locX2, locY2)
- addStreak(coreloc, streakLength * 0.40000000000000002, moveAim)
- end if
- case checkTerrainPoint(playerData[2]) of
- 1:
- watchme = #Safe
- 2:
- watchme = #dead
- end case
- set the loc of sprite playerSO to playerData[2] - playerViewPoint + bgOffset
- sprite(playerSO).rotation = moveAim
- end
-
- on moveterrain
- global terrainSO, tileSize, prevLocation, roadMapData, levelWidth, levelheight, playerData, playerViewPoint, tileLoc
- displayOffset = playerViewPoint[2] mod tileSize[2]
- tileOffset = playerViewPoint[2] / tileSize[2]
- screenShake = point(0, 0)
- wSprite = terrainSO - 1
- repeat with wY = 1 to levelheight
- repeat with wX = 1 to levelWidth
- wSprite = wSprite + 1
- tType = roadMapData[wY + tileOffset][wX]
- set the locV of sprite wSprite to ((point(wX, wY) * tileSize) - (tileSize[2] * 0.5) - point(0, displayOffset) - screenShake)[2] + 11 + bgOffset[2]
- if prevLocation <> tileOffset then
- prevtType = roadMapData[wY + prevLocation][wX]
- tileNameList = ["Grass", "Left Side", "Right Side", "Left Elbow Down", "Right Elbow Down", "Left Corner Down", "Right Corner Down", "Left Elbow Up", "Right Elbow Up", "Left Corner Up", "Right Corner Up", "Pavement"]
- set the member of sprite wSprite to 232 + tType
- if prevLocation = VOID then
- set the member of sprite wSprite to 232 + tType
- next repeat
- end if
- if tType = 12 then
- sprite(wSprite).visible = 0
- next repeat
- end if
- set the member of sprite wSprite to 232 + tType
- sprite(wSprite).visible = 1
- end if
- end repeat
- end repeat
- if prevLocation <> tileOffset then
- prevLocation = tileOffset
- end if
- end
-