home *** CD-ROM | disk | FTP | other *** search
- property COUNTDOWNSPRITE, myCountdown, myPaceTime, FirstWave, SecondWave, ThirdWave, timerStart, DELAYTIMER, QUALIFYLEVEL, weaponStatus, myEnergyLevel, myLastLevel, nukesArmed, myGameTimer
- global asteroidList, weaponList, asteroidDataList, gGUIobj
-
- on new me
- append(the actorList, me)
- return me
- end
-
- on init me, spriteIndex, gametime, thePace
- set COUNTDOWNSPRITE to spriteIndex
- set myCountdown to integer(gametime * 60 * 60)
- set myPaceTime to thePace
- setWaveTimes(me, gametime)
- set timerStart to the timer
- set DELAYTIMER to the timer
- set weaponStatus to 1
- set QUALIFYLEVEL to 200
- set myEnergyLevel to 0
- set myLastLevel to 0
- set nukesArmed to 0
- repeat with i = 1 to 6
- puppetSprite(COUNTDOWNSPRITE + (i - 1), 1)
- end repeat
- end
-
- on setWaveTimes me, gametime
- set newGameTime to (gametime * 60 * 60) - (myPaceTime * 60)
- set FirstWave to (newGameTime / 4.0 * 3.0) + (myPaceTime * 60)
- set SecondWave to (newGameTime / 4.0 * 2.0) + (myPaceTime * 60)
- set ThirdWave to (newGameTime / 4.0 * 1.0) + (myPaceTime * 60)
- end
-
- on stepFrame me
- updateCountdown(me)
- gameStageRoutine(me)
- end
-
- on gameStageRoutine me
- if myGameTimer < (30 * 60) then
- if not nukesArmed then
- set nukesArmed to 1
- if getNuclearCount(me) > 0 then
- updateWeaponStatus(me, 5)
- end if
- createMegaAsteroid(me)
- end if
- else
- if myGameTimer < (myPaceTime * 60) then
- if not soundBusy(3) then
- playSound(3, "warning")
- end if
- else
- if the timer > (DELAYTIMER + (1.5 * 60)) then
- set DELAYTIMER to the timer
- createAsteroidWaves(me)
- end if
- updateWeapons(me)
- end if
- end if
- end
-
- on updateCountdown me
- set myGameTimer to the timer - timerStart
- set myGameTimer to myCountdown - myGameTimer
- set myMinutes to integer(myGameTimer / (60 * 60))
- set mySeconds to integer((myGameTimer - (myMinutes * 60 * 60)) / 60)
- set myTicks to integer(myGameTimer - ((myMinutes * 60 * 60) + (mySeconds * 60)))
- set myMinutes to truncateTime(myMinutes)
- set mySeconds to truncateTime(mySeconds)
- set myTicks to truncateTime(myTicks)
- set timeString to myMinutes & mySeconds & myTicks
- repeat with i = 1 to 6
- set the member of sprite (COUNTDOWNSPRITE + (i - 1)) to member (char i of timeString & ".PCT")
- end repeat
- end
-
- on truncateTime myDigit
- if myDigit < 0.10000000000000001 then
- return "00"
- else
- if myDigit < 10 then
- return "0" & myDigit
- end if
- end if
- return myDigit
- end
-
- on createAsteroidWaves me
- if count(asteroidList) < 10 then
- set mySelection to random(getSelectionRange())
- set myMember to getIndex(asteroidDataList, 1, mySelection)
- set mySpeed to getIndex(asteroidDataList, 2, mySelection)
- set myEnergy to getIndex(asteroidDataList, 3, mySelection)
- set mySound to getIndex(asteroidDataList, 4, mySelection)
- set newRock to new(script "asteroidScript", float(random(72) + 8), myMember, mySpeed, myEnergy, mySound)
- append(asteroidList, newRock)
- end if
- end
-
- on createMegaAsteroid me
- set myMember to getIndex(asteroidDataList, 1, 5)
- set mySpeed to getIndex(asteroidDataList, 2, 5)
- set myEnergy to getIndex(asteroidDataList, 3, 5)
- set mySound to getIndex(asteroidDataList, 4, 5)
- set newRock to new(script "megaAsteroidScript", 45, myMember, mySpeed, myEnergy, mySound)
- append(asteroidList, newRock)
- end
-
- on getSelectionRange
- if myGameTimer < ThirdWave then
- return 4
- else
- if myGameTimer < SecondWave then
- return 3
- else
- if myGameTimer < FirstWave then
- return 2
- end if
- end if
- end if
- return 1
- end
-
- on logShot me
- if nukesArmed then
- if getNuclearCount(me) > 0 then
- removeNuclearWeapon(me)
- else
- if weaponStatus > 4 then
- updateWeapons(me, 1)
- end if
- end if
- end if
- end
-
- on increaseEnergyLevel me, newValue
- set myEnergyLevel to myEnergyLevel + newValue
- if myEnergyLevel < 0 then
- set myEnergyLevel to 0
- end if
- end
-
- on getnukesArmed me
- return nukesArmed
- end
-
- on getGameTimer me
- return myGameTimer
- end
-
- on getEnergyRatio me
- return QUALIFYLEVEL
- end
-
- on updateWeapons me, endFlag
- if (myEnergyLevel >= (QUALIFYLEVEL * 13)) and voidp(endFlag) then
- addNuclearWeapon(me)
- set myEnergyLevel to myEnergyLevel - (QUALIFYLEVEL * 6)
- doEnergyBar(me, 7)
- else
- if myEnergyLevel >= (QUALIFYLEVEL * 7) then
- updateWeaponStatus(me, 4)
- doEnergyBar(me, 7)
- else
- if myEnergyLevel >= (QUALIFYLEVEL * 3) then
- updateWeaponStatus(me, 3)
- doEnergyBar(me, 3)
- else
- if myEnergyLevel >= QUALIFYLEVEL then
- updateWeaponStatus(me, 2)
- doEnergyBar(me, 1)
- else
- if myEnergyLevel >= 0 then
- updateWeaponStatus(me, 1)
- doEnergyBar(me, 0)
- end if
- end if
- end if
- end if
- end if
- end
-
- on doEnergyBar me, myDeficit
- setEnergyRatio(gGUIobj, QUALIFYLEVEL * (myDeficit + 1))
- set myEnergyPos to myEnergyLevel - (myDeficit * QUALIFYLEVEL)
- updateEnergyBar(gGUIobj, weaponStatus - 1, myEnergyPos)
- end
-
- on updateWeaponStatus me, newFigure
- set weaponStatus to newFigure
- callChangeWeapon(me)
- updateWeaponIcon(gGUIobj, weaponStatus)
- end
-
- on addNuclearWeapon me
- set nuclearCount to getNuclearCount(me)
- if nuclearCount < 3 then
- set nuclearCount to nuclearCount + 1
- SetIndex(weaponList, 5, 4, nuclearCount)
- playSound(1, "upgrade")
- updateNukeIcons(gGUIobj, nuclearCount)
- end if
- end
-
- on removeNuclearWeapon me
- set nuclearCount to getNuclearCount(me)
- if nuclearCount > 0 then
- set nuclearCount to nuclearCount - 1
- SetIndex(weaponList, 5, 4, nuclearCount)
- updateNukeIcons(gGUIobj, nuclearCount)
- end if
- end
-
- on getNuclearCount me
- return getIndex(weaponList, 5, 4)
- end
-
- on callChangeWeapon me
- set myType to getIndex(weaponList, weaponStatus, 1)
- set myReload to getIndex(weaponList, weaponStatus, 2)
- set myPower to getIndex(weaponList, weaponStatus, 3)
- set mySound to getIndex(weaponList, weaponStatus, 5)
- changeWeapon(gShipObj, myType, myReload, myPower, mySound)
- end
-