~ubuntu-branches/ubuntu/lucid/warzone2100/lucid

« back to all changes in this revision

Viewing changes to data/script/text/cam1a.slo

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Egger, Paul Wise, Christoph Egger
  • Date: 2009-06-29 17:12:52 UTC
  • mfrom: (1.1.11 upstream) (2.1.7 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090629171252-5ddnlfg3zfchrega
Tags: 2.2.1+dfsg1-1
[ Paul Wise ]
* New upstream release (Closes: #534962)
* Adjust the flex build-depends to take account of the conflict
  with all the versions of flex 2.5.34 (LP: #372872)
* Make the -music Recommends more strict, 2.1 music doesn't work
  with 2.2.
* Upstream moved the downloads to sourceforge, update the watch file
* Bump Standards-Version, no changes needed
* Drop use of dh_desktop since it no longer does anything
* Recommend the new warzone2100-video package, version 2.2 or similar
* Mention the warzone2100 crash reports in the -dbg package description

[ Christoph Egger ]
* Replace CC-2.0 graphic from cybersphinx, create a new tarball
* Add myself to uploaders

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Script file for Cam1A (now start of Campaign 1)*/
2
 
 
3
 
 
4
 
/* structure limit stuff */
5
 
public  STRUCTURESTAT           factory, research, oilDerrick, powerGen;
6
 
public  STRUCTURESTAT           command;
7
 
//public        STRUCTURESTAT           powerModuleHack;
8
 
public  INT                     numPow, numExt, numFac, numRes;
9
 
public  int                     startPower;     //initial power level
10
 
 
11
 
/* Starting Tech */
12
 
public  BODY                    viperBody;
13
 
public  CONSTRUCT               spade;
14
 
public  PROPULSION              wheeledProp;
15
 
public  WEAPON                  mg;
16
 
 
17
 
/* Starting Tech now done as completed research */
18
 
public  int                     numTech;
19
 
public  RESEARCHSTAT            tech[4];
20
 
 
21
 
/* General Values */
22
 
public          int             player;
23
 
public          int             enemy1;
24
 
public          int             enemy2;
25
 
private         int             numart; //keep track of number of artifacts collected
26
 
//private               int             res1x,res1y;
27
 
//public                STRUCTURE       commandCentre;
28
 
 
29
 
/* Base Under Attack Stuff */
30
 
private         STRUCTURE       hitStruc;
31
 
private         BASEOBJ         attackerObj;
32
 
private         int             t;
33
 
public          SOUND           attackSnd1;
34
 
 
35
 
/* Briefing stuff */
36
 
public          INTMESSAGE      MissionBrief, MissionBrief2, obj1Msg;
37
 
public          SOUND                   incomingSnd;
38
 
public          INTMESSAGE              endMsg; //, winMsg;
39
 
 
40
 
//public                SOUND           briefSnd1, briefSnd2;
41
 
 
42
 
/* Proximity: Resources */
43
 
/*
44
 
public          FEATURE         res1;
45
 
public          INTMESSAGE      res1Msg;
46
 
public          SOUND           res1Snd;
47
 
public          STRUCTURESTAT   derrick;
48
 
*/
49
 
 
50
 
/* Proximity: Artifacts */
51
 
public          FEATURESTAT     crate;
52
 
 
53
 
public          int             art1X, art1Y;
54
 
public          STRUCTURE       art1Get;
55
 
public          SOUND           art1Snd2;
56
 
//public                INTMESSAGE      art1Msg;
57
 
public          RESEARCHSTAT    art1Comp;       //Engineering Upgrade
58
 
private         FEATURE         art1ID;
59
 
 
60
 
public          int             art2X, art2Y;
61
 
public          STRUCTURE       art2Get;
62
 
public          SOUND           art2Snd2;
63
 
//public                INTMESSAGE      art2Msg;
64
 
public          RESEARCHSTAT    art2Comp;       //Repair Facility (NOT Robotics)
65
 
private         FEATURE         art2ID;
66
 
 
67
 
public          int             art3X, art3Y;
68
 
public          STRUCTURE       art3Get;
69
 
public          SOUND           art3Snd2;
70
 
//public                INTMESSAGE      art3Msg;
71
 
public          RESEARCHSTAT    art3Comp;       //Flamer
72
 
private         FEATURE         art3ID;
73
 
 
74
 
public          int             art4X, art4Y;
75
 
//public                STRUCTURE       art4Get;        //placed in script
76
 
public          SOUND           art4Snd2;
77
 
//public                INTMESSAGE      art4Msg;
78
 
public          RESEARCHSTAT    art4Comp;       //Light Machine Gun Mk1
79
 
private         FEATURE         art4ID;
80
 
 
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       enm0;
88
 
public          INTMESSAGE      enm0Msg;
89
 
public          SOUND           enm0Snd1;
90
 
public          SOUND           enm0Snd2;
91
 
 
92
 
public          STRUCTURE       enm1;
93
 
public          STRUCTUREID     enm1ID;
94
 
public          INTMESSAGE      enm1Msg;
95
 
public          SOUND           enm1Snd1;
96
 
public          SOUND           enm1Snd2;
97
 
 
98
 
public          STRUCTURE       enm2;
99
 
public          STRUCTUREID     enm2ID;
100
 
public          INTMESSAGE      enm2Msg;
101
 
public          SOUND           enm2Snd1;
102
 
public          SOUND           enm2Snd2;
103
 
public          STRUCTURE       enm22;
104
 
public          STRUCTUREID     enm22ID;
105
 
public          INTMESSAGE      enm22Msg;
106
 
public          SOUND           enm22Snd1;
107
 
//public                SOUND           enm22Snd2;
108
 
private         BOOL            base2Flag;
109
 
 
110
 
/* Enemy Tactics */
111
 
public          TEMPLATE        trike;
112
 
public          TEMPLATE        buggy;
113
 
public          TEMPLATE        bloke;
114
 
public          TEMPLATE        jeep;
115
 
 
116
 
/* Win or lose */
117
 
public          SOUND           lostSnd;
118
 
public          LEVEL           NextLev;
119
 
public          INT             timeLimit;
120
 
 
121
 
//group to stop players droids chsing too much!!
122
 
private         GROUP           allPlayer, scavGroup;
123
 
 
124
 
/* Triggers: Resource */
125
 
/*
126
 
trigger res1SeenTrig(droidHasSeen(res1, player), 10);   //resWait
127
 
trigger res1UsedTrig(every, 10);                        //resWait
128
 
//trigger res1UsedTrig(CALL_RESEX_BUILT);                       //until built function fixed
129
 
*/
130
 
 
131
 
/* Triggers: Artifacts */
132
 
//trigger art1SeenTrig(droidInRange(player, art1X, art1Y, 512), 5);
133
 
//trigger art1SeenTrig(droidHasSeen(art1ID, player), 5);
134
 
trigger art1TakeTrig(droidInRange(player, art1X, art1Y, 171), 5);
135
 
trigger art1PlaceTrig((art1Get==NULLOBJECT), 5);
136
 
 
137
 
//trigger art2SeenTrig(droidInRange(player, art2X, art2Y, 512), 5);
138
 
//trigger art2SeenTrig(droidHasSeen(art2ID, player), 5);
139
 
trigger art2TakeTrig(droidInRange(player, art2X, art2Y, 171), 5);
140
 
trigger art2PlaceTrig((art2Get==NULLOBJECT), 5);
141
 
 
142
 
//trigger art3SeenTrig(droidInRange(player, art3X, art3Y, 512), 5);
143
 
//trigger art3SeenTrig(droidHasSeen(art3ID, player), 5);
144
 
trigger art3TakeTrig(droidInRange(player, art3X, art3Y, 171), 5);
145
 
trigger art3PlaceTrig((art3Get==NULLOBJECT), 5);
146
 
 
147
 
//trigger art4SeenTrig(droidInRange(player, art4X, art4Y, 512), 5);
148
 
//trigger art4SeenTrig(droidHasSeen(art4ID, player), 5);
149
 
trigger art4TakeTrig(droidInRange(player, art4X, art4Y, 171), 5);
150
 
//trigger art4PlaceTrig((art4Get==NULLOBJECT), 5);
151
 
 
152
 
 
153
 
/* Triggers: Enemy */
154
 
trigger enm0SeenTrig(seenStructInArea(player, enemy1, FALSE, 3520, 4416, 4416, 5056), 10);
155
 
trigger enm0DeadTrig((numStructsButNotWallsInArea(enemy1, 3520, 4416, 4416, 5056) == 0), 20);
156
 
 
157
 
trigger enm1SeenTrig(seenStructInArea(player, enemy1, FALSE, 4544, 1856, 5440, 2496), 10);
158
 
trigger enm1DeadTrig((numStructsButNotWallsInArea(enemy1, 4544, 1856, 5440, 2496) == 0), 20);
159
 
 
160
 
trigger enm2SeenTrig(seenStructInArea(player, enemy2, FALSE, 1088, 1216, 2240, 2240), 10);
161
 
trigger enm2DeadTrig((numStructsButNotWallsInArea(enemy2, 1088, 1216, 2240, 2240) == 0), 20);
162
 
 
163
 
trigger enm22SeenTrig(seenStructInArea(player, enemy2, FALSE, 1472, 3776, 2752, 5440), 10);
164
 
trigger enm22DeadTrig((numStructsButNotWallsInArea(enemy2, 1472, 3776, 2752, 5440) == 0), 20);
165
 
 
166
 
 
167
 
 
168
 
/* Triggers: Win or Lose */
169
 
trigger winLoseTrig(every, 5);
170
 
trigger gameLostTrig(every, 20);
171
 
 
172
 
/* initial scav attack */
173
 
trigger scavtrig(every, 100);   //better if checks for HQ built?
174
 
trigger scavtrig2(droidInArea(player, 2496, 6080, 4928, 7232), 5);
175
 
trigger scavtrig3(wait, 1);     //go immediately
176
 
trigger obj1Trig(droidInRange(player, 4928, 6592, 5*128), 20);
177
 
 
178
 
/* Events: Initialise */
179
 
event enm2SeenEvnt;
180
 
event enm2DeadEvnt;
181
 
event wonYetEvnt;
182
 
//event art4SeenEvnt;
183
 
event art4TakeEvnt;
184
 
event scavAttack2;
185
 
event timeUp;
186
 
 
187
 
/* Events: Start */
188
 
event startEvnt(CALL_GAMEINIT)
189
 
{
190
 
    //take over the selectedPlayer's units to avoid id number clashes on later levels
191
 
    takeOverDroidsInArea(0,0, 0,0, mapWidth*128, mapHeight*128);
192
 
 
193
 
//set scroll limits
194
 
//      setScrollParams(0, 0, 64, 70);                  //limit scroll
195
 
        //centreView(commandCentre);
196
 
        centreViewPos(1728, 6720);                      //centre near transport
197
 
//set zoom Level 64x64
198
 
        setRadarZoom(1);
199
 
//set starting power
200
 
        setPowerLevel(startPower,player);
201
 
//set start tech
202
 
/*
203
 
        makeComponentAvailable(viperBody, player);
204
 
        makeComponentAvailable(spade, player);
205
 
        makeComponentAvailable(wheeledProp, player);
206
 
*/
207
 
        makeComponentAvailable(mg, player);             //needs to be done this way so doesn't enable rest of tree!
208
 
 
209
 
        count = 0;
210
 
        while (count < numTech)
211
 
        {
212
 
                completeResearch(tech[count], player);
213
 
                count = count +1;
214
 
        }
215
 
//give player briefing
216
 
        addMessage(MissionBrief, CAMP_MSG, player, false);
217
 
//make sure all buttons available
218
 
        addReticuleButton(OPTIONS);
219
 
        addReticuleButton(CANCEL);
220
 
        addReticuleButton(BUILD);
221
 
        addReticuleButton(MANUFACTURE);
222
 
        addReticuleButton(RESEARCH);
223
 
        addReticuleButton(INTELMAP);
224
 
        addReticuleButton(DESIGN);
225
 
//stop player building on LZ
226
 
        setLandingZone(10, 51, 12, 53);
227
 
//stop players droids from chasing!
228
 
/* not any more - john
229
 
        groupAddArea(allPlayer, player, 0, 30*128, 40*128, 70*128);
230
 
        setGroupSecondary(allPlayer,DSO_HALTTYPE, DSS_HALT_HOLD);
231
 
        */
232
 
 
233
 
//set no time limits (can carry over from previous missions if not set!)
234
 
        setReinforcementTime(-1);
235
 
        setMissionTime(timeLimit);                      //set Mission time limit
236
 
 
237
 
///allow to build stuff
238
 
        setStructureLimits (powerGen,numPow,0);
239
 
        setStructureLimits (oilDerrick,numExt,0);
240
 
        setStructureLimits (research,numRes,0); // numRes changed by Keith to set Research Facility Limits to 1, until.... 1C
241
 
        setStructureLimits (factory,numFac,0);
242
 
        setStructureLimits(command, 1, player);
243
 
        enableStructure(command, player);
244
 
        enableStructure(powerGen,0);
245
 
        enableStructure(oilDerrick,0);
246
 
        enableStructure(research,0);
247
 
        enableStructure(factory,0);
248
 
        //enableStructure(powerModuleHack, 0);
249
 
 
250
 
//add machine gun crate *** BACK IN ***
251
 
//now got from new 1st base
252
 
        art4ID=addFeature(crate, art4X, art4Y);
253
 
        //setEventTrigger(art4SeenEvnt, art4SeenTrig);
254
 
        //setEventTrigger(art4TakeEvnt, art4TakeTrig);  //set from start since didn't always set!!
255
 
 
256
 
//set up initial attack group
257
 
        groupAddArea(scavGroup, enemy1, 4416, 6336, 5440, 7104);
258
 
//set retreat point
259
 
        setGroupRetreatPoint(scavGroup, 4416, 5440);    //retreat to crossroads
260
 
        setGroupRetreatForce(scavGroup, 99);                    //set morale to 1%
261
 
        setGroupRetreatLeadership(scavGroup, 10);               //set leadership chance 10% (small=more likely)
262
 
 
263
 
        setEventTrigger(startEvnt, inactive);
264
 
}
265
 
 
266
 
 
267
 
/* Events: Artifacts */
268
 
event art1TakeEvnt(inactive)
269
 
{
270
 
        numart=numart+1;
271
 
        //playSound(art1Snd2, player);
272
 
        playSoundPos(art1Snd2, player, art1ID.x, art1ID.y, art1ID.z);
273
 
        destroyFeature(art1ID);
274
 
        //removeMessage(art1Msg, PROX_MSG, player);
275
 
        enableResearch(art1Comp, player);
276
 
        setEventTrigger(art1TakeEvnt, inactive);
277
 
}
278
 
 
279
 
event art1PlaceEvnt(art1PlaceTrig)
280
 
{
281
 
        //place artifact crate, and allow check for prox
282
 
        art1ID=addFeature(crate, art1X, art1Y);
283
 
        //setEventTrigger(art1SeenEvnt, art1SeenTrig);
284
 
        setEventTrigger(art1TakeEvnt, art1TakeTrig);
285
 
        setEventTrigger(art1PlaceEvnt, inactive);
286
 
}
287
 
 
288
 
event art2TakeEvnt(inactive)
289
 
{
290
 
        numart=numart+1;
291
 
        //playSound(art2Snd2, player);
292
 
        playSoundPos(art2Snd2, player, art2ID.x, art2ID.y, art2ID.z);
293
 
        destroyFeature(art2ID);
294
 
        //removeMessage(art2Msg, PROX_MSG, player);
295
 
        enableResearch(art2Comp, player);
296
 
        setEventTrigger(art2TakeEvnt, inactive);
297
 
}
298
 
 
299
 
event art2PlaceEvnt(art2PlaceTrig)
300
 
{
301
 
        //place artifact crate, and allow check for prox
302
 
        art2ID=addFeature(crate, art2X, art2Y);
303
 
        //setEventTrigger(art2SeenEvnt, art2SeenTrig);
304
 
        setEventTrigger(art2TakeEvnt, art2TakeTrig);
305
 
        //make sure art2 placed before base2 dead
306
 
        //setEventTrigger(enm2DeadEvnt, enm2DeadTrig);
307
 
        //make sure art2 placed before mission won as well!!!
308
 
        setEventTrigger(wonYetEvnt, winLoseTrig);
309
 
        setEventTrigger(art2PlaceEvnt, inactive);
310
 
}
311
 
 
312
 
event art3TakeEvnt(inactive)
313
 
{
314
 
        numart=numart+1;
315
 
        destroyFeature(art3ID);
316
 
        //playSound(art3Snd2, player);
317
 
        playSoundPos(art3Snd2, player, art3ID.x, art3ID.y, art3ID.z);
318
 
        //removeMessage(art3Msg, PROX_MSG, player);
319
 
        enableResearch(art3Comp, player);
320
 
        setEventTrigger(art3TakeEvnt, inactive);
321
 
}
322
 
 
323
 
event art3PlaceEvnt(art3PlaceTrig)
324
 
{
325
 
        //place artifact crate, and allow check for prox
326
 
        art3ID=addFeature(crate, art3X, art3Y);
327
 
        //setEventTrigger(art3SeenEvnt, art3SeenTrig);
328
 
        setEventTrigger(art3TakeEvnt, art3TakeTrig);
329
 
        setEventTrigger(art3PlaceEvnt, inactive);
330
 
}
331
 
 
332
 
event art4TakeEvnt(art4TakeTrig)                //mg crate (placed at start of script)
333
 
{
334
 
        numart=numart+1;
335
 
        destroyFeature(art4ID);
336
 
        //playSound(art4Snd2, player);
337
 
        playSoundPos(art4Snd2, player, art4ID.x, art4ID.y, art4ID.z);
338
 
        //removeMessage(art4Msg, PROX_MSG, player);
339
 
        enableResearch(art4Comp, player);
340
 
        setEventTrigger(art4TakeEvnt, inactive);
341
 
}
342
 
 
343
 
/* Events: Enemies */
344
 
event enm0DeadEvnt(inactive)                            //newbase dead?
345
 
{
346
 
        killStructsInArea(enemy1, REF_WALL, 3520, 4416, 4416, 5056, TRUE, TRUE);        //remove walls and building features in base
347
 
        killStructsInArea(enemy1, REF_WALLCORNER, 3520, 4416, 4416, 5056, TRUE, FALSE); //remove corner walls in base
348
 
        removeMessage(enm0Msg, PROX_MSG, player);
349
 
        //playSound(enm0Snd2, player);
350
 
        playSoundPos(enm0Snd2, player, 3904, 4672, 0);  //should be same as in prox1a.txt
351
 
        setEventTrigger(enm0DeadEvnt, inactive);
352
 
}
353
 
 
354
 
event enm0SeenEvnt(enm0SeenTrig)                        //base 2 seen
355
 
{
356
 
        addMessage(enm0Msg, PROX_MSG, player, false);
357
 
        //playSound(enm0Snd1, player);
358
 
        playSoundPos(enm0Snd1, player, 3904, 4672, 0);  //should be same as in prox1a.txt
359
 
        setEventTrigger(enm0DeadEvnt, enm0DeadTrig);
360
 
        setEventTrigger(enm0SeenEvnt, inactive);
361
 
}
362
 
 
363
 
event enm1DeadEvnt(inactive)
364
 
{
365
 
        killStructsInArea(enemy1, REF_WALL, 4544, 1856, 5440, 2496, TRUE, TRUE);        //remove walls and features in base
366
 
        killStructsInArea(enemy1, REF_WALLCORNER, 4544, 1856, 5440, 2496, TRUE, FALSE); //remove corner walls in base
367
 
        removeMessage(enm1Msg, PROX_MSG, player);
368
 
        //playSound(enm1Snd2, player);
369
 
        playSoundPos(enm1Snd2, player, 5002, 2154, 135);        //should be same as in prox1a.txt
370
 
//trigger 2nd base blip if not already triggered
371
 
        if (not base2Flag)
372
 
        {
373
 
                base2Flag = TRUE;
374
 
                addMessage(enm2Msg, PROX_MSG, player, false);
375
 
                //playSound(enm2Snd1, player);
376
 
                playSoundPos(enm2Snd1, player, 1600, 1728, 0);  //should be same as in prox1a.txt
377
 
                setEventTrigger(enm2DeadEvnt, enm2DeadTrig);
378
 
                setEventTrigger(enm2SeenEvnt, inactive);
379
 
        }
380
 
        setEventTrigger(enm1DeadEvnt, inactive);
381
 
}
382
 
 
383
 
event enm1SeenEvnt(enm1SeenTrig)
384
 
{
385
 
        addMessage(enm1Msg, PROX_MSG, player, false);
386
 
        //playSound(enm1Snd1, player);
387
 
        playSoundPos(enm1Snd1, player, 5002, 2154, 135);        //should be same as in prox1a.txt
388
 
        setEventTrigger(enm1DeadEvnt, enm1DeadTrig);
389
 
        setEventTrigger(enm1SeenEvnt, inactive);
390
 
}
391
 
 
392
 
event enm2DeadEvnt(inactive)                            //base 2 dead?
393
 
{
394
 
        killStructsInArea(enemy2, REF_WALL, 1088, 1216, 2240, 2240, TRUE, TRUE);        //remove walls and features in base
395
 
        killStructsInArea(enemy2, REF_WALLCORNER, 1088, 1216, 2240, 2240, TRUE, FALSE); //remove corner walls in base
396
 
        removeMessage(enm2Msg, PROX_MSG, player);
397
 
        //playSound(enm2Snd2, player);
398
 
        playSoundPos(enm2Snd2, player, 1600, 1728, 0);  //should be same as in prox1a.txt
399
 
        setEventTrigger(enm2DeadEvnt, inactive);
400
 
}
401
 
 
402
 
event enm2SeenEvnt(enm2SeenTrig)                        //base 2 seen (used to be wrong trigger!)
403
 
{
404
 
        base2Flag = TRUE;
405
 
        addMessage(enm2Msg, PROX_MSG, player, false);
406
 
        //playSound(enm2Snd1, player);
407
 
        playSoundPos(enm2Snd1, player, 1600, 1728, 0);  //should be same as in prox1a.txt
408
 
        setEventTrigger(enm2DeadEvnt, enm2DeadTrig);
409
 
        setEventTrigger(enm2SeenEvnt, inactive);
410
 
}
411
 
 
412
 
event enm22DeadEvnt(inactive)                           //base 2A dead?
413
 
{
414
 
        killStructsInArea(enemy2, REF_WALL, 1472, 3776, 2752, 5440, TRUE, TRUE);        //remove walls and features in base
415
 
        killStructsInArea(enemy2, REF_WALLCORNER, 1472, 3776, 2752, 5440, TRUE, FALSE); //remove corner walls in base
416
 
        removeMessage(enm22Msg, PROX_MSG, player);
417
 
        //playSound(enm2Snd2, player);                  //should this be enm22Snd2?
418
 
        playSoundPos(enm2Snd2, player, 2112, 4544, 0);  //should be same as in prox1a.txt
419
 
        setEventTrigger(enm22DeadEvnt, inactive);
420
 
}
421
 
 
422
 
event enm22SeenEvnt(enm22SeenTrig)                      //base 2A seen
423
 
{
424
 
        addMessage(enm22Msg, PROX_MSG, player, false);
425
 
        //playSound(enm22Snd1, player);
426
 
        playSoundPos(enm22Snd1, player, 2112, 4544, 0); //should be same as in prox1a.txt
427
 
        setEventTrigger(enm22DeadEvnt, enm22DeadTrig);
428
 
        setEventTrigger(enm22SeenEvnt, inactive);
429
 
}
430
 
 
431
 
/* Events: Win or Lose */
432
 
 
433
 
event nextLevEvnt(inactive)             //assumes victory already checked
434
 
{
435
 
        //pause(20);
436
 
        pause(40);              //increased to allow all audio before won
437
 
 
438
 
        // give bonus research (if req'd)
439
 
        count = 0;
440
 
        while (count < numResP0)
441
 
        {
442
 
                enableResearch(resP0[count], 0);
443
 
                count = count +1;
444
 
        }
445
 
 
446
 
        gameLevel=gameLevel+1;          //flag next part of map
447
 
        //removeMessage(MissionBrief, MISS_MSG, player);
448
 
        startMission(CAMP_EXPAND, NextLev);
449
 
        setEventTrigger(nextLevEvnt, inactive);
450
 
}
451
 
 
452
 
event gameLost(inactive)
453
 
{
454
 
//      addMessage(endMsg, MISS_MSG, 0, true);
455
 
//      pause(10);
456
 
//      gameOver(false);
457
 
        gameOverMessage(endMsg, MISS_MSG, 0, false);
458
 
        setEventTrigger(gameLost, inactive);
459
 
}
460
 
 
461
 
event lostYetEvnt(winLoseTrig)
462
 
{
463
 
        if (not anyDroidsLeft(player))
464
 
        {
465
 
                if (not anyStructButWallsLeft(player))
466
 
                {
467
 
                        setEventTrigger(wonYetEvnt,inactive);
468
 
                        setEventTrigger(gameLost, gameLostTrig);        //waits 2 seconds before ending
469
 
                        setEventTrigger(lostYetEvnt, inactive);
470
 
                        setEventTrigger(timeUp, inactive);
471
 
                }
472
 
 
473
 
        }
474
 
}
475
 
 
476
 
event wonYetEvnt(inactive) // have all enemies lost yet, and all artifacts picked up?
477
 
{                                                               
478
 
        if (not anyDroidsLeft(enemy2))
479
 
        {
480
 
                if (not anyStructButWallsLeft(enemy2))
481
 
                {
482
 
                        if (not anyDroidsLeft(enemy1))
483
 
                        {
484
 
                                if (not anyStructButWallsLeft(enemy1))
485
 
                                {
486
 
                                        if (numart==4)
487
 
                                        {
488
 
                                                setEventTrigger(lostYetEvnt, inactive);
489
 
                                                setEventTrigger(nextLevEvnt, winLoseTrig);
490
 
                                                setEventTrigger(wonYetEvnt, inactive);
491
 
                                                setEventTrigger(timeUp, inactive);
492
 
                                        }
493
 
                                }
494
 
                        }
495
 
                }
496
 
        }
497
 
}
498
 
 
499
 
event cheatEvnt(CALL_MISSION_START)     //cheat button ctrl M
500
 
{
501
 
        setEventTrigger(nextLevEvnt, winLoseTrig);
502
 
        setEventTrigger(cheatEvnt, inactive);
503
 
}
504
 
 
505
 
 
506
 
/* Base Under Attack */
507
 
event baseHit(CALL_STRUCT_ATTACKED, selectedPlayer, ref hitStruc, ref attackerObj)
508
 
{
509
 
        if (t >= 20)
510
 
        {
511
 
                t=0;
512
 
                if (hitStruc != NULLOBJECT)
513
 
                {
514
 
                        playSoundPos(attackSnd1, selectedPlayer, hitStruc.x, hitStruc.y, hitStruc.z);   //show position if still alive
515
 
                }
516
 
                else
517
 
                {
518
 
                        playSound(attackSnd1, selectedPlayer);
519
 
                }
520
 
        }
521
 
}
522
 
 
523
 
event everySec(every, 20)
524
 
{
525
 
        t=t+1;
526
 
}
527
 
 
528
 
event seeBaseHit(CALL_MISSION_END)
529
 
{
530
 
//go to where the structure being attacked is on CTRL B
531
 
        if (hitStruc!=NULLOBJECT)
532
 
        {
533
 
                centreView(hitStruc);
534
 
                t=0;                    //flag known about!
535
 
        }
536
 
}
537
 
 
538
 
event removeObj1(inactive)
539
 
{
540
 
        removeMessage(obj1Msg, PROX_MSG, player);
541
 
        setEventTrigger(removeObj1, inactive);
542
 
}
543
 
 
544
 
/*
545
 
event scavAttack(scavtrig)
546
 
{
547
 
        setEventTrigger(scavAttack2, inactive);
548
 
        setEventTrigger(scavAttack, inactive);
549
 
        //setEventTrigger(removeObj1, obj1Trig);
550
 
        //addMessage(MissionBrief2, MISS_MSG, player, true);
551
 
        //addMessage(obj1Msg, PROX_MSG, player, false);
552
 
        //orderGroupLoc(scavGroup, DORDER_SCOUT, 2100, 6700);
553
 
}
554
 
*/
555
 
 
556
 
event scavAttack2(scavtrig2)
557
 
{
558
 
        //setEventTrigger(scavAttack, inactive);
559
 
        playSound(incomingSnd, player);
560
 
        pause(20);
561
 
        setEventTrigger(scavAttack2, inactive);
562
 
        setEventTrigger(removeObj1, obj1Trig);
563
 
        addMessage(MissionBrief2, MISS_MSG, player, true);
564
 
        addMessage(obj1Msg, PROX_MSG, player, false);
565
 
        orderGroupLoc(scavGroup, DORDER_SCOUT, 2100, 6700);
566
 
}
567
 
 
568
 
event timeUp(CALL_MISSION_TIME)
569
 
{
570
 
        setEventTrigger(wonYetEvnt,inactive);
571
 
        setEventTrigger(lostYetEvnt,inactive);
572
 
        setEventTrigger(gameLost, gameLostTrig);
573
 
        setEventTrigger(timeUp, inactive);
574
 
}