home *** CD-ROM | disk | FTP | other *** search
/ PC Games.EXE 1999 January / pcgamesexe-1999-01.iso / Warzone / data1.cab / Program_Executable_Files / script / fastplay / s-demo.slo < prev    next >
Text File  |  1998-10-27  |  16KB  |  556 lines

  1. // SCRIPT file for Cam 1-2
  2.  
  3. /* General Values */
  4. public        int        player;
  5. public        int        enemy1;
  6. public        int        enemy2;
  7. private        int        numart;
  8. public        int        pow1, pow2;
  9.  
  10. /* structure limit stuff */
  11. public    STRUCTURESTAT        factory, research, oilDerrick, powerGen;
  12. //public    STRUCTURESTAT        powerModuleHack;
  13. public    STRUCTURESTAT        command;
  14. public    INT            numPow, numExt, numFac, numRes;
  15.  
  16. /* Win or lose */
  17. public        SOUND        wonSnd;
  18. public        SOUND        lostSnd;
  19. public        LEVEL        NextLev;
  20. private        GROUP        allPlayer, nearLZ;
  21. private        int        totDroids;
  22.  
  23. /* Starting Technology */
  24. public        int        numtecE1;
  25. public        RESEARCHSTAT    tecE1[3];
  26. private        int        tecCount;
  27.  
  28. /* Base Under Attack Stuff */
  29. private        STRUCTURE    hitStruc;
  30. private        BASEOBJ        attackerObj;
  31. private        int        t;
  32. public        SOUND        attackSnd1;
  33. public        SOUND        LZSnd;
  34.  
  35. /* LZ Message */
  36. public        INTMESSAGE        LZ_MSG;
  37. public        SOUND            LZComp, LZClear, reinfSnd;
  38. public        INTMESSAGE        obj1;
  39. public        TEXTSTRING        RetLZMsg;
  40. public        INT            ReinforceTime;
  41.  
  42. /* Briefing stuff */
  43. public        INTMESSAGE        endMsg, winMsg;
  44. public        INTMESSAGE        InFlight;
  45. public        INTMESSAGE        MissionBrief;    //, MissionBrief2;
  46. public        SOUND            incomingSnd;
  47. private        BOOL            brief2Flag;
  48.  
  49. /* Proximity: Resources */
  50. /*
  51. public        FEATURE        res1;
  52. public        INTMESSAGE    res1Msg;
  53. public        SOUND        res1Snd;
  54. public        STRUCTURESTAT    derrick;
  55. private        int        res1x,res1y;    //temp values to cope with oil disappearing!
  56. */
  57.  
  58. /* Proximity: Artifacts */
  59. public        FEATURESTAT    crate;
  60.  
  61. public        int        art1X, art1Y;
  62. public        STRUCTURE    art1Get;
  63. public        SOUND        art1Snd1, art1Snd2;
  64. //public        INTMESSAGE    art1Msg;
  65. public        RESEARCHSTAT    art1Comp;
  66. private        FEATURE        art1ID;
  67.  
  68. public        int        art2X, art2Y;
  69. public        STRUCTURE    art2Get;
  70. public        SOUND        art2Snd1, art2Snd2;
  71. //public        INTMESSAGE    art2Msg;
  72. public        RESEARCHSTAT    art2Comp;
  73. private        FEATURE        art2ID;
  74.  
  75. public        int        art3X, art3Y;
  76. public        STRUCTURE    art3Get;
  77. public        SOUND        art3Snd1, art3Snd2;
  78. //public        INTMESSAGE    art3Msg;
  79. public        RESEARCHSTAT    art3Comp;
  80. private        FEATURE        art3ID;
  81. /* player Bonus Research topics given at end of mission */
  82. public    int            numResP0;
  83. public    RESEARCHSTAT        resP0[20];    //need to be declared with value >= numResP0, numResP1, etc.
  84. private    INT            count;
  85.  
  86. /* Proximity: Enemy */
  87. public        STRUCTURE    enm1;
  88. public        STRUCTUREID    enm1ID;
  89. public        INTMESSAGE    enm1Msg;
  90. public        SOUND        enm1Snd1;
  91. public        SOUND        enm1Snd2;
  92.  
  93. public        STRUCTURE    enm2;
  94. public        STRUCTUREID    enm2ID;
  95. public        INTMESSAGE    enm2Msg;
  96. public        SOUND        enm2Snd1;
  97. public        SOUND        enm2Snd2;
  98.  
  99. //extra blips for guard entrances
  100. public        INTMESSAGE    guard1Msg, guard2Msg;
  101. public        SOUND        guard1Snd1, guard2Snd1, guard1Snd2, guard2Snd2;
  102.  
  103. /* Triggers: Win or Lose */
  104. trigger winLoseTrig(every, 5);
  105.  
  106. /* Triggers: Briefing */
  107. trigger vidEndTrig(CALL_VIDEO_QUIT);
  108.  
  109. /* Triggers: Resource */
  110. /*
  111. trigger res1SeenTrig(droidHasSeen(res1, player), 10);
  112. trigger res1UsedTrig(every, 10);
  113. */
  114.  
  115. /* Triggers: Artifacts */
  116. //trigger art1SeenTrig(droidHasSeen(art1ID, player), 5);
  117. trigger art1TakeTrig(droidInRange(player, art1X, art1Y, 200), 5);
  118. trigger art1PlaceTrig((art1Get==NULLOBJECT), 5);
  119.  
  120. //trigger art2SeenTrig(droidHasSeen(art2ID, player), 5);
  121. trigger art2TakeTrig(droidInRange(player, art2X, art2Y, 200), 5);
  122. trigger art2PlaceTrig((art2Get==NULLOBJECT), 5);
  123.  
  124. trigger art3TakeTrig(droidInRange(player, art3X, art3Y, 200), 5);
  125. trigger art3PlaceTrig((art3Get==NULLOBJECT), 5);
  126.  
  127. /* Triggers: Enemy */
  128. trigger enm1SeenTrig(seenStructInArea(player, enemy1, FALSE, 3136, 1728, 5440, 2624), 10);
  129. trigger enm1DeadTrig(numStructsButNotWallsInArea(enemy1, 3136, 1728, 5440, 2624) == 0, 20);
  130.  
  131. trigger enm2SeenTrig(seenStructInArea(player, enemy1, FALSE, 1600, 6464, 2368, 7232), 10);
  132. trigger enm2DeadTrig(numStructsButNotWallsInArea(enemy1, 1600, 6464, 2368, 7232) == 0, 20);
  133.  
  134. trigger guard1SeenTrig(seenStructInArea(player, enemy1, FALSE, 2368, 5568, 3392, 6592), 10);
  135. trigger guard1DeadTrig(numStructsButNotWallsInArea(enemy1, 2368, 5568, 3392, 6592) == 0, 20);
  136.  
  137. trigger guard2SeenTrig(seenStructInArea(player, enemy1, FALSE, 4544, 2880, 5924, 4928), 10);
  138. trigger guard2DeadTrig(numStructsButNotWallsInArea(enemy1, 4544, 2880, 5924, 4928) == 0, 20);
  139.  
  140. /* part 2 briefing */
  141. trigger brief2Trig(brief2Flag, 15);
  142. trigger retLZTrig(numart == 3, 20);
  143.  
  144. //LZ contains enemies?
  145. //trigger LZNoGoTrig((objectInArea(enemy1, 6000, 7000, 7000, 8000)), 35);
  146. //LZ clear of enemies?
  147. //trigger LZ_OKTrig((not objectInArea(enemy1, 6000, 7000, 7000, 8000)), 35);
  148.  
  149. trigger gameLostTrig    (every, 20);
  150.  
  151. trigger researchTrig(every, 1200);    //2 minute delay between topics completed
  152.  
  153. event startEvnt(CALL_VIDEO_QUIT)    //(CALL_GAMEINIT)
  154. {
  155.     //setLandingZone(LZ_X1, LZ_Y1, LZ_X2, LZ_Y2);
  156.     //centreView(enm1);        //temporary solution for thin maps
  157.     removeMessage(InFlight, MISS_MSG, 0);
  158.     centreViewPos(52*128, 55*128);
  159. //set scroll limits
  160.     setScrollParams(0, 0, 64, 64);            //limit scroll
  161. //set zoom Level 64x64
  162.     setRadarZoom(1);
  163. //make sure all buttons available/unavailable
  164.     //removeReticuleButton(DESIGN);
  165.     //removeReticuleButton(BUILD);
  166. //set starting power
  167.     setPowerLevel(pow1, enemy1);
  168.     setPowerLevel(pow2, enemy2);
  169.     addMessage(MissionBrief, MISS_MSG, 0, false);
  170.     flashOff(INTELMAP);
  171.  
  172. //Blip Given at start
  173.     addMessage(obj1, PROX_MSG, player, false);
  174. //allow to build stuff
  175.     setStructureLimits (powerGen,numPow,0);
  176.     setStructureLimits (oilDerrick,numExt,0);
  177.     setStructureLimits (research,numRes,0);
  178.     setStructureLimits (factory,numFac,0);
  179.     setStructureLimits(command, 0, player);
  180.     enableStructure(command, player);
  181.     enableStructure(powerGen,0);
  182.     enableStructure(oilDerrick,0);
  183.     enableStructure(research,0);
  184.     enableStructure(factory,0);
  185.     //enableStructure(powerModuleHack, 0);
  186. //give first topic for enemy
  187.     completeResearch(tecE1[tecCount], enemy1);
  188.     tecCount = tecCount + 1;
  189. //set transport time
  190.     setReinforcementTime(ReinforceTime);
  191. //set up resource coords (since oil pools diappear when built on!!!)
  192.     //res1x=res1.x;
  193.     //res1y=res1.y;
  194.     setEventTrigger(startEvnt, inactive);
  195. }
  196.  
  197. event flightEvnt(CALL_GAMEINIT)
  198. {
  199.     addMessage(InFlight, MISS_MSG, 0, true);
  200.     setEventTrigger(flightEvnt, inactive);
  201. }
  202.  
  203. /*Events: */
  204.  
  205. /* Events: Artifacts */
  206. event art1TakeEvnt(inactive)
  207. {
  208.     numart=numart+1;
  209.     brief2Flag = TRUE;
  210.     destroyFeature(art1ID);
  211.     playSound(art1Snd2, player);
  212.     removeMessage(obj1, PROX_MSG, player);
  213.     //removeMessage(art1Msg, PROX_MSG, player);
  214.     enableResearch(art1Comp, player);
  215.     setEventTrigger(art1TakeEvnt, inactive);
  216. }
  217. /*
  218. event art1SeenEvnt(inactive)
  219. {
  220.     addMessage(art1Msg, PROX_MSG, player, false);
  221.     playSound(art1Snd1, player);
  222.     pause(40);
  223.     setEventTrigger(art1TakeEvnt, art1TakeTrig);
  224.     setEventTrigger(art1SeenEvnt, inactive);
  225. }
  226. */
  227. event art1PlaceEvnt(art1PlaceTrig)
  228. {
  229.     //place artifact crate, and allow check for prox
  230.     art1ID=addFeature(crate, art1X, art1Y);
  231.     //setEventTrigger(art1SeenEvnt, art1SeenTrig);
  232.     setEventTrigger(art1TakeEvnt, art1TakeTrig);
  233.     setEventTrigger(art1PlaceEvnt, inactive);
  234. }
  235.  
  236. event art2TakeEvnt(inactive)
  237. {
  238.     numart=numart+1;
  239.     destroyFeature(art2ID);
  240.     playSound(art2Snd2, player);
  241.     //removeMessage(art2Msg, PROX_MSG, player);
  242.     enableResearch(art2Comp, player);
  243.     setEventTrigger(art2TakeEvnt, inactive);
  244. }
  245. /*
  246. event art2SeenEvnt(inactive)
  247. {
  248.     addMessage(art2Msg, PROX_MSG, player, false);
  249.     playSound(art2Snd1, player);
  250.     pause(40);
  251.     setEventTrigger(art2TakeEvnt, art2TakeTrig);
  252.     setEventTrigger(art2SeenEvnt, inactive);
  253. }
  254. */
  255. event art2PlaceEvnt(art2PlaceTrig)
  256. {
  257.     //place artifact crate, and allow check for prox
  258.     art2ID=addFeature(crate, art2X, art2Y);
  259.     //setEventTrigger(art2SeenEvnt, art2SeenTrig);
  260.     setEventTrigger(art2TakeEvnt, art2TakeTrig);
  261.     setEventTrigger(art2PlaceEvnt, inactive);
  262. }
  263.  
  264. event art3TakeEvnt(inactive)
  265. {
  266.     numart=numart+1;
  267.     destroyFeature(art3ID);
  268.     playSound(art3Snd2, player);
  269.     //removeMessage(art3Msg, PROX_MSG, player);
  270.     enableResearch(art3Comp, player);
  271.     setEventTrigger(art3TakeEvnt, inactive);
  272. }
  273.  
  274. event art3PlaceEvnt(art3PlaceTrig)
  275. {
  276.     //place artifact crate, and allow check for prox
  277.     art3ID=addFeature(crate, art3X, art3Y);
  278.     //setEventTrigger(art3SeenEvnt, art3SeenTrig);
  279.     setEventTrigger(art3TakeEvnt, art3TakeTrig);
  280.     setEventTrigger(art3PlaceEvnt, inactive);
  281. }
  282.  
  283. /* Events: Enemies */
  284. event enm1DeadEvnt(inactive)
  285. {
  286.     killStructsInArea(enemy1, REF_WALL, 3136, 1728, 5440, 2624, TRUE, TRUE);    //remove walls and features in base
  287.     killStructsInArea(enemy1, REF_WALLCORNER, 3136, 1728, 5440, 2624, TRUE, FALSE);    //remove corner walls in base
  288.     removeMessage(enm1Msg, PROX_MSG, player);
  289.     playSound(enm1Snd2, player);
  290.     setEventTrigger(enm1DeadEvnt, inactive);
  291. }
  292.  
  293. event enm1SeenEvnt(enm1SeenTrig)
  294. {
  295.     brief2Flag = TRUE;
  296.     pause(20);
  297.     addMessage(enm1Msg, PROX_MSG, player, false);
  298.     playSound(enm1Snd1, player);
  299.     setEventTrigger(enm1DeadEvnt, enm1DeadTrig);
  300.     setEventTrigger(enm1SeenEvnt, inactive);
  301. }
  302.  
  303. event enm2DeadEvnt(inactive)
  304. {
  305.     killStructsInArea(enemy2, REF_WALL, 1600, 6464, 2368, 7232, TRUE, TRUE);    //remove walls and features in base
  306.     killStructsInArea(enemy2, REF_WALLCORNER, 1600, 6464, 2368, 7232, TRUE, FALSE);    //remove corner walls in base
  307.     removeMessage(enm2Msg, PROX_MSG, player);
  308.     playSound(enm2Snd2, player);
  309.     setEventTrigger(enm2DeadEvnt, inactive);
  310. }
  311.  
  312. event enm2SeenEvnt(enm2SeenTrig)            //base 2 seen
  313. {
  314.     addMessage(enm2Msg, PROX_MSG, player, false);
  315.     playSound(enm2Snd1, player);
  316.     setEventTrigger(enm2DeadEvnt, enm2DeadTrig);
  317.     setEventTrigger(enm2SeenEvnt, inactive);
  318. }
  319.  
  320. //Extra blips for guard entrances
  321. event guard1DeadEvnt(inactive)
  322. {
  323.     killStructsInArea(enemy1, REF_WALL, 2368, 5568, 3392, 6592, TRUE, TRUE);    //remove walls and features in base
  324.     killStructsInArea(enemy1, REF_WALLCORNER, 2368, 5568, 3392, 6592, TRUE, FALSE);    //remove corner walls in base
  325.     removeMessage(guard1Msg, PROX_MSG, player);
  326.     //playSound(guard1Snd2, player);
  327.     setEventTrigger(guard1DeadEvnt, inactive);
  328. }
  329.  
  330. event guard1SeenEvnt(guard1SeenTrig)
  331. {
  332.     addMessage(guard1Msg, PROX_MSG, player, false);
  333.     playSound(guard1Snd1, player);
  334.     setEventTrigger(guard1DeadEvnt, guard1DeadTrig);
  335.     setEventTrigger(guard1SeenEvnt, inactive);
  336. }
  337.  
  338. event guard2DeadEvnt(inactive)
  339. {
  340.     killStructsInArea(enemy2, REF_WALL, 4544, 3392, 5924, 4928, TRUE, TRUE);    //remove walls and features in base
  341.     killStructsInArea(enemy2, REF_WALLCORNER, 4544, 3392, 5924, 4928, TRUE, FALSE);    //remove corner walls in base
  342.     removeMessage(guard2Msg, PROX_MSG, player);
  343.     //playSound(guard2Snd2, player);
  344.     setEventTrigger(guard2DeadEvnt, inactive);
  345. }
  346.  
  347. event guard2SeenEvnt(guard2SeenTrig)            //base 2 seen
  348. {
  349.     addMessage(guard2Msg, PROX_MSG, player, false);
  350.     playSound(guard2Snd1, player);
  351.     setEventTrigger(guard2DeadEvnt, guard2DeadTrig);
  352.     setEventTrigger(guard2SeenEvnt, inactive);
  353. }
  354.  
  355. /* Disabled for demo
  356. event brief2Evnt(brief2Trig)
  357. {
  358.     playSound(incomingSnd, player);
  359.     pause(20);
  360.     addMessage(MissionBrief2, MISS_MSG, 0, true);
  361.     setEventTrigger(brief2Evnt, inactive);
  362. }
  363. */
  364.  
  365. event giveLZmess(inactive)    //don't use for demo!
  366. //(retLZTrig)
  367. {
  368. //add LZ blip and WAV message
  369.     addMessage(LZ_MSG, PROX_MSG, player, false);
  370.     addConsoleText(RetLZMsg, player);
  371.     playSound(LZSnd, player);
  372.     setEventTrigger(giveLZmess, inactive);
  373. }
  374.  
  375. //event wonYetEvnt;
  376. event wonYetLZEvnt;
  377. event timeUp;
  378.  
  379. /* Events: Win or Lose */
  380.  
  381. event nextLevEvnt(inactive)        //assumes victory already checked
  382. {
  383.     //playSound(wonSnd,0);
  384.     //pause(20);
  385.  
  386.     // give bonus research (if req'd)
  387.     count = 0;
  388.     while (count < numResP0)
  389.     {
  390.         enableResearch(resP0[count], 0);
  391.         count = count +1;
  392.     }
  393.  
  394.     gameLevel=gameLevel+1;        //flag next part of map
  395.     setLandingZone(10, 51, 12, 53);
  396. //enable research
  397.     enableResearch(art1Comp, player);
  398.     removeMessage(MissionBrief, MISS_MSG, player);
  399.     //startMission(BETWEEN, NextLev);
  400.     //End game here for now! (don't try next mission)
  401.     addMessage(winMsg, MISS_MSG, 0, true);
  402.     pause(10);
  403.     gameOver(true);
  404.  
  405.     setEventTrigger(nextLevEvnt, inactive);
  406. }
  407.  
  408. event gameLost(inactive)
  409. {
  410.     addMessage(endMsg, MISS_MSG, 0, true);
  411.     pause(10);
  412.     gameOver(false);
  413.     setEventTrigger(gameLost, inactive);
  414. }
  415.  
  416. event    lostYetEvnt(winLoseTrig)
  417. {
  418.     if (not anyDroidsLeft(player))
  419.     {
  420.         if (not anyStructButWallsLeft(player))
  421.         {
  422.             //setEventTrigger(wonYetEvnt,inactive);
  423.             setEventTrigger(wonYetLZEvnt, inactive);
  424.             setEventTrigger(timeUp, inactive);
  425.             //playSound(lostSnd,0);
  426.             //pause(20);
  427.             //addMessage(endMsg, MISS_MSG, 0, true);
  428.             //gameOver(false);
  429.             setEventTrigger(gameLost, gameLostTrig);    //waits 2 seconds before ending
  430.             setEventTrigger(lostYetEvnt, inactive);
  431.         }
  432.  
  433.     }
  434. }
  435.  
  436. //out of time?
  437. event timeUp(CALL_MISSION_TIME)
  438. {
  439.     //setEventTrigger(wonYetEvnt,inactive);
  440.     setEventTrigger(lostYetEvnt,inactive);
  441.     setEventTrigger(wonYetLZEvnt, inactive);
  442.     //playSound(lostSnd,0);
  443.     //pause(20);
  444.     //gameOver(false);
  445.     setEventTrigger(gameLost, gameLostTrig);    //waits 2 seconds before ending
  446.     setEventTrigger(timeUp, inactive);
  447. }
  448.  
  449. event wonYetLZEvnt(retLZTrig)    //triggered when all artifacts picked up
  450. // have all enemies lost yet? FOR DEMO ONLY!
  451. {                                
  452.       if (not anyDroidsLeft(enemy1))
  453.     {
  454.         if (not anyStructButWallsLeft(enemy1))
  455.         {
  456.             setEventTrigger(lostYetEvnt, inactive);
  457.             setEventTrigger(timeUp, inactive);
  458.             setEventTrigger(nextLevEvnt, winLoseTrig);
  459.             //setEventTrigger(wonYetEvnt, inactive);
  460.             setEventTrigger(wonYetLZEvnt, inactive);
  461.         }
  462.     }
  463. }
  464.  
  465. /* not used for demo (need to kill everything!)
  466. event wonYetLZEvnt(winLoseTrig)    //alternate victory condition, got artifact(s) and back at LZ
  467. {
  468.     totDroids = numDroidsInArea(player, 0, 0, 64*128, 64*128);
  469.     if (totDroids == numDroidsInArea(player, 6080, 6464, 7616, 7616))
  470.     {
  471.         if (totDroids!=0)
  472.         {
  473.             if (numart==3)
  474.             {
  475.                 setEventTrigger(lostYetEvnt, inactive);
  476.                 setEventTrigger(timeUp, inactive);
  477.                 setEventTrigger(nextLevEvnt, winLoseTrig);
  478.                 //setEventTrigger(wonYetEvnt, inactive);
  479.                 setEventTrigger(wonYetLZEvnt, inactive);
  480.             }
  481.         }
  482.     }
  483. }
  484. */
  485.  
  486. event cheatEvnt(CALL_MISSION_START)    //cheat button ctrl M
  487. {
  488.     setEventTrigger(nextLevEvnt, winLoseTrig);
  489.     setEventTrigger(cheatEvnt, inactive);
  490. }
  491.  
  492. /* base under attack */
  493. event baseHit(CALL_STRUCT_ATTACKED, selectedPlayer, ref hitStruc, ref attackerObj)
  494. {
  495.     if (t>=20)
  496.     {
  497.         t=0;
  498.         playSound(attackSnd1, selectedPlayer);
  499.     }
  500. }
  501.  
  502. event everySec(every, 10)
  503. {
  504.     t=t+1;
  505. }
  506.  
  507. event seeBaseHit(CALL_MISSION_END)
  508. {
  509. //go to where the structure being attacked is on CTRL B
  510.     if (hitStruc!=NULLOBJECT)
  511.     {
  512.         centreView(hitStruc);
  513.         t=0;            //flag known about!
  514.     }
  515. }
  516.  
  517. /* LZ Compromised DISABLED!
  518. event LZ_OK;
  519. event LZNoGo(LZNoGoTrig)
  520. {
  521. //check LZ area for enemy structures and/or vehicles (in Trigger)
  522.     playSound(LZComp, player);    //"LZ Compromised"
  523. //disallow reinforcements
  524.     setReinforcementTime(18000);    //(set to mission time)
  525. //allow check for clear!
  526.     setEventTrigger(LZ_OK,LZ_OKTrig);
  527.     setEventTrigger(LZNoGo, inactive);
  528. }
  529.  
  530. event LZ_OK(inactive)
  531. {
  532. //check LZ area clear of enemy structures and/or vehicles (in Trigger)
  533.     playSound(LZClear, player);    //"LZ Clear"
  534. //allow reinforcements now base found
  535.     setReinforcementTime(ReinforceTime); //(set back to normal)
  536.     setEventTrigger(LZNoGo, LZNoGoTrig);
  537.     setEventTrigger(LZ_OK, inactive);
  538. }
  539. */
  540. /* Disabled for difficulty check
  541. event researchEvnt(researchTrig)
  542. {
  543. // player specific technology startups
  544.     if (tecCount >= numtecE1)
  545.     {
  546.         setEventTrigger(researchEvnt, inactive);
  547.     }
  548.     else
  549.     {
  550.         completeResearch(tecE1[tecCount], enemy1);
  551.         tecCount = tecCount + 1;
  552.     }
  553. }
  554. */
  555.  
  556.