home *** CD-ROM | disk | FTP | other *** search
/ GQ - Louise, World Cup, …remy Clarkson, Armageddon / GQCD.iso / files / game.dxr / 00002_gameScript.ls < prev    next >
Encoding:
Text File  |  1998-05-21  |  5.9 KB  |  225 lines

  1. property COUNTDOWNSPRITE, myCountdown, myPaceTime, FirstWave, SecondWave, ThirdWave, timerStart, DELAYTIMER, QUALIFYLEVEL, weaponStatus, myEnergyLevel, myLastLevel, nukesArmed, myGameTimer
  2. global asteroidList, weaponList, asteroidDataList, gGUIobj
  3.  
  4. on new me
  5.   append(the actorList, me)
  6.   return me
  7. end
  8.  
  9. on init me, spriteIndex, gametime, thePace
  10.   set COUNTDOWNSPRITE to spriteIndex
  11.   set myCountdown to integer(gametime * 60 * 60)
  12.   set myPaceTime to thePace
  13.   setWaveTimes(me, gametime)
  14.   set timerStart to the timer
  15.   set DELAYTIMER to the timer
  16.   set weaponStatus to 1
  17.   set QUALIFYLEVEL to 200
  18.   set myEnergyLevel to 0
  19.   set myLastLevel to 0
  20.   set nukesArmed to 0
  21.   repeat with i = 1 to 6
  22.     puppetSprite(COUNTDOWNSPRITE + (i - 1), 1)
  23.   end repeat
  24. end
  25.  
  26. on setWaveTimes me, gametime
  27.   set newGameTime to (gametime * 60 * 60) - (myPaceTime * 60)
  28.   set FirstWave to (newGameTime / 4.0 * 3.0) + (myPaceTime * 60)
  29.   set SecondWave to (newGameTime / 4.0 * 2.0) + (myPaceTime * 60)
  30.   set ThirdWave to (newGameTime / 4.0 * 1.0) + (myPaceTime * 60)
  31. end
  32.  
  33. on stepFrame me
  34.   updateCountdown(me)
  35.   gameStageRoutine(me)
  36. end
  37.  
  38. on gameStageRoutine me
  39.   if myGameTimer < (30 * 60) then
  40.     if not nukesArmed then
  41.       set nukesArmed to 1
  42.       if getNuclearCount(me) > 0 then
  43.         updateWeaponStatus(me, 5)
  44.       end if
  45.       createMegaAsteroid(me)
  46.     end if
  47.   else
  48.     if myGameTimer < (myPaceTime * 60) then
  49.       if not soundBusy(3) then
  50.         playSound(3, "warning")
  51.       end if
  52.     else
  53.       if the timer > (DELAYTIMER + (1.5 * 60)) then
  54.         set DELAYTIMER to the timer
  55.         createAsteroidWaves(me)
  56.       end if
  57.       updateWeapons(me)
  58.     end if
  59.   end if
  60. end
  61.  
  62. on updateCountdown me
  63.   set myGameTimer to the timer - timerStart
  64.   set myGameTimer to myCountdown - myGameTimer
  65.   set myMinutes to integer(myGameTimer / (60 * 60))
  66.   set mySeconds to integer((myGameTimer - (myMinutes * 60 * 60)) / 60)
  67.   set myTicks to integer(myGameTimer - ((myMinutes * 60 * 60) + (mySeconds * 60)))
  68.   set myMinutes to truncateTime(myMinutes)
  69.   set mySeconds to truncateTime(mySeconds)
  70.   set myTicks to truncateTime(myTicks)
  71.   set timeString to myMinutes & mySeconds & myTicks
  72.   repeat with i = 1 to 6
  73.     set the member of sprite (COUNTDOWNSPRITE + (i - 1)) to member (char i of timeString & ".PCT")
  74.   end repeat
  75. end
  76.  
  77. on truncateTime myDigit
  78.   if myDigit < 0.10000000000000001 then
  79.     return "00"
  80.   else
  81.     if myDigit < 10 then
  82.       return "0" & myDigit
  83.     end if
  84.   end if
  85.   return myDigit
  86. end
  87.  
  88. on createAsteroidWaves me
  89.   if count(asteroidList) < 10 then
  90.     set mySelection to random(getSelectionRange())
  91.     set myMember to getIndex(asteroidDataList, 1, mySelection)
  92.     set mySpeed to getIndex(asteroidDataList, 2, mySelection)
  93.     set myEnergy to getIndex(asteroidDataList, 3, mySelection)
  94.     set mySound to getIndex(asteroidDataList, 4, mySelection)
  95.     set newRock to new(script "asteroidScript", float(random(72) + 8), myMember, mySpeed, myEnergy, mySound)
  96.     append(asteroidList, newRock)
  97.   end if
  98. end
  99.  
  100. on createMegaAsteroid me
  101.   set myMember to getIndex(asteroidDataList, 1, 5)
  102.   set mySpeed to getIndex(asteroidDataList, 2, 5)
  103.   set myEnergy to getIndex(asteroidDataList, 3, 5)
  104.   set mySound to getIndex(asteroidDataList, 4, 5)
  105.   set newRock to new(script "megaAsteroidScript", 45, myMember, mySpeed, myEnergy, mySound)
  106.   append(asteroidList, newRock)
  107. end
  108.  
  109. on getSelectionRange
  110.   if myGameTimer < ThirdWave then
  111.     return 4
  112.   else
  113.     if myGameTimer < SecondWave then
  114.       return 3
  115.     else
  116.       if myGameTimer < FirstWave then
  117.         return 2
  118.       end if
  119.     end if
  120.   end if
  121.   return 1
  122. end
  123.  
  124. on logShot me
  125.   if nukesArmed then
  126.     if getNuclearCount(me) > 0 then
  127.       removeNuclearWeapon(me)
  128.     else
  129.       if weaponStatus > 4 then
  130.         updateWeapons(me, 1)
  131.       end if
  132.     end if
  133.   end if
  134. end
  135.  
  136. on increaseEnergyLevel me, newValue
  137.   set myEnergyLevel to myEnergyLevel + newValue
  138.   if myEnergyLevel < 0 then
  139.     set myEnergyLevel to 0
  140.   end if
  141. end
  142.  
  143. on getnukesArmed me
  144.   return nukesArmed
  145. end
  146.  
  147. on getGameTimer me
  148.   return myGameTimer
  149. end
  150.  
  151. on getEnergyRatio me
  152.   return QUALIFYLEVEL
  153. end
  154.  
  155. on updateWeapons me, endFlag
  156.   if (myEnergyLevel >= (QUALIFYLEVEL * 13)) and voidp(endFlag) then
  157.     addNuclearWeapon(me)
  158.     set myEnergyLevel to myEnergyLevel - (QUALIFYLEVEL * 6)
  159.     doEnergyBar(me, 7)
  160.   else
  161.     if myEnergyLevel >= (QUALIFYLEVEL * 7) then
  162.       updateWeaponStatus(me, 4)
  163.       doEnergyBar(me, 7)
  164.     else
  165.       if myEnergyLevel >= (QUALIFYLEVEL * 3) then
  166.         updateWeaponStatus(me, 3)
  167.         doEnergyBar(me, 3)
  168.       else
  169.         if myEnergyLevel >= QUALIFYLEVEL then
  170.           updateWeaponStatus(me, 2)
  171.           doEnergyBar(me, 1)
  172.         else
  173.           if myEnergyLevel >= 0 then
  174.             updateWeaponStatus(me, 1)
  175.             doEnergyBar(me, 0)
  176.           end if
  177.         end if
  178.       end if
  179.     end if
  180.   end if
  181. end
  182.  
  183. on doEnergyBar me, myDeficit
  184.   setEnergyRatio(gGUIobj, QUALIFYLEVEL * (myDeficit + 1))
  185.   set myEnergyPos to myEnergyLevel - (myDeficit * QUALIFYLEVEL)
  186.   updateEnergyBar(gGUIobj, weaponStatus - 1, myEnergyPos)
  187. end
  188.  
  189. on updateWeaponStatus me, newFigure
  190.   set weaponStatus to newFigure
  191.   callChangeWeapon(me)
  192.   updateWeaponIcon(gGUIobj, weaponStatus)
  193. end
  194.  
  195. on addNuclearWeapon me
  196.   set nuclearCount to getNuclearCount(me)
  197.   if nuclearCount < 3 then
  198.     set nuclearCount to nuclearCount + 1
  199.     SetIndex(weaponList, 5, 4, nuclearCount)
  200.     playSound(1, "upgrade")
  201.     updateNukeIcons(gGUIobj, nuclearCount)
  202.   end if
  203. end
  204.  
  205. on removeNuclearWeapon me
  206.   set nuclearCount to getNuclearCount(me)
  207.   if nuclearCount > 0 then
  208.     set nuclearCount to nuclearCount - 1
  209.     SetIndex(weaponList, 5, 4, nuclearCount)
  210.     updateNukeIcons(gGUIobj, nuclearCount)
  211.   end if
  212. end
  213.  
  214. on getNuclearCount me
  215.   return getIndex(weaponList, 5, 4)
  216. end
  217.  
  218. on callChangeWeapon me
  219.   set myType to getIndex(weaponList, weaponStatus, 1)
  220.   set myReload to getIndex(weaponList, weaponStatus, 2)
  221.   set myPower to getIndex(weaponList, weaponStatus, 3)
  222.   set mySound to getIndex(weaponList, weaponStatus, 5)
  223.   changeWeapon(gShipObj, myType, myReload, myPower, mySound)
  224. end
  225.