1
//Generic VLO file template for start/expand levels
9
NextLev LEVEL "CAM_2B" //points to next level
12
/* Define Players/Enemies */
13
numEnemies int 1 //MAX 2. Must define same as number of enemy players given next
15
//cyborgs now player 2!!!
17
alliancePlayer int 0 //ally player with self (could be a different player number
18
allianceEnemy[0] int 2 //7 //ally enemy with self (could be a different player number
19
//allianceEnemy[1] int 2
20
allianceFlag BOOL FALSE //TRUE if want enemies to use each others targets, otherwise mark FALSE
23
/* Starting Enemy Power */
24
power[0] int 10000 //starting power values for each enemy listed above
27
/* Structure Limits */
28
numStrucStats int 6 //MAX 5. Must be same as number of limits given next
29
strucStat[0] STRUCTURESTAT "A0PowerGenerator"
31
strucStat[1] STRUCTURESTAT "A0ResourceExtractor"
33
strucStat[2] STRUCTURESTAT "A0ResearchFacility"
35
strucStat[3] STRUCTURESTAT "A0LightFactory"
37
strucStat[4] STRUCTURESTAT "A0CommandCentre"
39
strucStat[5] STRUCTURESTAT "A0ComDroidControl"
43
centreX int 960 //starting view centre (in world units)
45
scrollX1 int 0 //scroll limits (in tile units)
49
zoomLevel int 1 //starting radar: 0=zoomed out, 2=zoomed in
51
numLZ int 1 //MAX 8. Number of Landing zones/areas can't build on (0 = LZ)
52
//These now represent the coords for the current map - ie cam2-1! Hurrah!
53
LZX[0] int 7 //coords of LZs in tile units
55
//special, last LZ is for next map!! (don't count in numLZ) DON'T NEED ANYMORE
56
//LZX[1] int 87 //coords of Campaign Map LZ in tile units
59
/* Transport exit and entry */
60
transX[0] int 1 //entry
62
transX[1] int 10 //exit
65
ReinforceTime INT -1 // number of seconds*10 for transport, -1 for no reinforcements
67
/* starting technology for enemy */
68
//NOTE: need to set first number in array for enemy player
69
//second number needs to correspond to numTechs[enemy]
70
//MAX 2 enemies, 10 technologies
72
startTech [0] [0] RESEARCHSTAT "R-Defense-WallUpgrade03"
73
startTech [0] [1] RESEARCHSTAT "R-Struc-Materials03"
74
startTech [0] [2] RESEARCHSTAT "R-Vehicle-Engine04"
75
startTech [0] [3] RESEARCHSTAT "R-Vehicle-Metals03"
76
startTech [0] [4] RESEARCHSTAT "R-Cyborg-Metals03"
77
startTech [0] [5] RESEARCHSTAT "R-Vehicle-Armor-Heat01"
78
startTech [0] [6] RESEARCHSTAT "R-Cyborg-Armor-Heat01"
79
startTech [0] [7] RESEARCHSTAT "R-Wpn-Cannon-Accuracy02"
80
startTech [0] [8] RESEARCHSTAT "R-Wpn-Cannon-Damage04"
81
startTech [0] [9] RESEARCHSTAT "R-Wpn-Cannon-ROF01"
82
startTech [0] [10] RESEARCHSTAT "R-Wpn-Flamer-Damage04"
83
startTech [0] [11] RESEARCHSTAT "R-Wpn-Flamer-ROF01"
84
startTech [0] [12] RESEARCHSTAT "R-Wpn-MG-Damage04"
85
startTech [0] [13] RESEARCHSTAT "R-Wpn-MG-ROF02"
86
startTech [0] [14] RESEARCHSTAT "R-Sys-Sensor-Upgrade01"
87
startTech [0] [15] RESEARCHSTAT "R-Wpn-Mortar-Damage03"
88
startTech [0] [16] RESEARCHSTAT "R-Wpn-Mortar-Damage04" //"R-Wpn-Mortar-ROF01"
89
startTech [0] [17] RESEARCHSTAT "R-Wpn-RocketSlow-Accuracy03"
90
startTech [0] [18] RESEARCHSTAT "R-Wpn-RocketSlow-Damage03"
91
startTech [0] [19] RESEARCHSTAT "R-Wpn-RocketSlow-ROF03"
94
numBriefs int 1 //MAX 5. Needs to be same as the number of briefings given next
95
brief[0] INTMESSAGE "MB2_1_MSG2"
96
briefVal[0] int 2 //0 remove after playing, 1 keep, 2 don't play immediately
97
endMsg INTMESSAGE "END"
101
numObjectives int 1 //MAX 3. Needs to be the same as the number of objective blips given next
102
objective[0] INTMESSAGE "C21_OBJECTIVE"
103
objectiveX[0] int 6464 //doesn't use index to array, use world coords
104
objectiveY[0] int 1728
106
/* Victory Conditions */
107
//NOTE: always assumes victory condition of: number of artifacts collected = victoryArt
108
numVictory int 0 //number of victory conditions to be met (not including artifacts)
109
//DOESN'T need to be same as number given next (these are set TRUE/FALSE)
110
//if victory condition required. Can have 2 set to TRUE and numVictory = 1
111
//This will then let player win if EITHER condition is true!
112
//Use numVictory of 0 if just want player to get artifacts
114
//these now done as integers NOT bools!! Use -1 for False, # for True (often an index to check!)
115
//for this reason must specify ALL victory[]!
116
victory[0] int -1 //all enemy vehicles and structures need to be killed
117
victory[1] int -1 //all players vehicles at REGION index # (eg LZ REGION)
118
victory[2] int -1 //number of objectives to get to (uses objective[0] to objective[#])
119
victory[3] int -1 //number of bases to destroy (uses base[0] to base[#])
121
/* might use these later if necessary
122
victory[4] int -1 //kill all UNITS belonging to enemy # index
123
victory[5] int -1 //kill all STRUCTURES belonging to enemy # index
124
victory[6] int -1 //REGION index to check for defences built
125
victory[7] int -1 //# of EXTRA defences to build in REGION
127
linkVictory BOOL TRUE //got to transport (other script)
129
/* Failure Conditions */
130
//Extra conditions above ALL player units and structures dead, or TIME LIMIT expired
131
//numFail int 0 //number required to be met (usually one if used!)
132
//only one of these has to be met
133
//Use -1 for False, # for True (often an index to check!)
135
fail [0] int -1 //0 //group # index all got to REGION
136
fail [1] int -1 //2 //REGION index for above (these count as one condition!)
138
/* might use these later if necessary
139
fail [2] int -1 //only Player UNITS need to be killed to lose
140
fail [3] int -1 //only Player STRUCTURES need to be killed to lose
141
fail [4] int -1 //Structure index # to be destroyed to lose????
146
victoryArt int 0 //number of artifacts required for victory (must be <= numArt)
147
numArt int 0 //MAX 6. Number of artifacts in total (even if not in game, but added as extra research!)
149
//new improved way of doing artifacts
150
//artType: 0 = artifact starts on map, 1 = get from STRUCTURE, 2 = get from FEATURE, 3 = get from DROID, 4 = at end of level
151
//artVal: index to relevant type, ie FEATURE(crate), FEATURE, STRUCTURE, DROID
152
//artX, artY: artifact coords (this is updated for DROIDS moving by script, but still needs an array to store them in!)
154
artType [0] int 1 //get from STRUCTURE
155
artVal [0] int 0 //get from Medium Factory
158
artComp [0] RESEARCHSTAT "CAM2RESEARCH" //"R-Wpn-TUTMG" //CHANGE THIS RESEARCH STAT
161
/* ******************************************** */
162
/* lists of stuff referred to by index number */
163
/* ******************************************** */
165
/* ******************************************** */
166
/* FEATURES (inc crates, by ID number) MAX = 10 */
167
//features [0] FEATURE 649 //crate artifact (1st in valley)
168
//features [1] FEATURE 661 //crate artifact (2nd by huts) (CHANGED TO BUNKER)
170
/* ******************************************** */
171
/* STRUCTURES (by ID number) MAX = 10 */
172
//structures [0] STRUCTURE 423 //Collective Base 1 Factory
173
//structures [1] STRUCTURE 650 //radar Tower
174
//structures [2] STRUCTURE 481 //Base 2 Factory
175
//structures [3] STRUCTURE 623 //Base 3 Factory
176
//structures [4] STRUCTURE 666 //Bunker
178
/* ******************************************** */
179
/* DROIDS (by ID number) MAX = 10 */
180
//droids [0] DROID 3279 //testdroid
182
/* ******************************************** */
183
/* list of templates (by name) MAX = 20 */
184
/* ******************************************** */
186
templates [5] TEMPLATE "CO-M-Rocket-LtA-T-Halftrack"
187
templates [6] TEMPLATE "CO-M-MedCan-Tracks"
188
templates [7] TEMPLATE "CO-M-Mortar1-Halftrack"
191
templates [0] TEMPLATE "CO-M-Con-T" //Truck Vehicle
192
templates [1] TEMPLATE "CO-M-Repair-T" //Repair Vehicle
193
templates [2] TEMPLATE "CO-M-Sensor-T" //Sensor Vehicle
194
templates [3] TEMPLATE "CO-M-CBS-T"
195
templates [4] TEMPLATE "CO-M-HMG-T"
197
templates [5] TEMPLATE "CO-M-Rocket-LtA-T-T"
198
templates [6] TEMPLATE "CO-M-MedCan-Tracks"
199
templates [7] TEMPLATE "CO-M-HvMortar-T"
202
templates [8] TEMPLATE "CO-M-HvMortar-T"
203
templates [9] TEMPLATE "CO-H-Command-Track"
204
templates [10] TEMPLATE "CO-M-Rocket-LtA-T-Halftrack"
206
//Collective VTOL Templates
207
templates [11] TEMPLATE "CO-L-Rocket-VTOL-Pod-VTOL"
208
templates [12] TEMPLATE "CO-L-Rocket-LtA-T-VTOL"
209
templates [13] TEMPLATE "CO-M-Bomb1-VTOL"
211
//Cyborg Templates (SHARED)
212
templates [14] TEMPLATE "Cyb-Flamer-GROUND"
213
templates [15] TEMPLATE "Cyb-Cannon-GROUND"
214
templates [16] TEMPLATE "Cyb-Rocket-GROUND"
217
/* Templates available for this level */
220
TEMPLATE "CO-M-Con-T"
223
TEMPLATE "CO-M-Repair-T"
226
TEMPLATE "CO-M-Sensor-T"
227
TEMPLATE "CO-M-CBS-T"
228
TEMPLATE "CO-M-Vstrike-T"
229
//TEMPLATE "CO-M-VTOLCBS-Halftrack"
232
TEMPLATE "CO-H-Command-Track"
235
TEMPLATE "CO-M-HMG-T"
236
TEMPLATE "CO-M-MedCan-Tracks"
237
TEMPLATE "CO-H-HvyCan-Tracks"
238
TEMPLATE "CO-M-HvMortar-T"
239
TEMPLATE "CO-M-Rocket-LtA-T-T" //NEW
242
TEMPLATE "Cyb-Chain-GROUND"
243
TEMPLATE "Cyb-Cannon-GROUND"
244
TEMPLATE "Cyb-Rocket-GROUND"
245
TEMPLATE "Cyb-Flamer-GROUND" //NEW
248
TEMPLATE "CO-M-Bomb1-VTOL"
249
TEMPLATE "CO-L-Rocket-LtA-T-VTOL" //NEW
252
TEMPLATE "Sys-SensoTower02"
253
TEMPLATE "Sys-CB-Tower01"
256
TEMPLATE "CO-Tower-MG3"
257
TEMPLATE "CO-Tower-LtATRkt"
258
TEMPLATE "CO-Tower-MdCan"
261
/* ******************************************** */
262
//coordinates (world coords) MAX = 10
263
/* ******************************************** */
264
coordsX [0] int 4416 //base 1 Assembly
267
coordsX [1] int 5824 //base 2 Assembly (and valley group retreat!)
270
coordsX [2] int 5184 //base 3 Assembly
273
coordsX [3] int 3904 //Factory waypoint 1
275
coordsX [4] int 5952 //Factory waypoint 2
277
coordsX [5] int 5952 //Factory waypoint 3
279
coordsX [6] int 3776 //Factory waypoint 4
282
coordsX [7] int 960 //player's LZ
285
coordsX [8] int 832 //cyborg base
288
coordsX [9] int 5696 //Cyb Group way1
290
coordsX [10] int 7104 //Cyb Group way2
291
coordsY [10] int 7104
292
coordsX [11] int 7232 //Cyb Group way3
293
coordsY [11] int 3904
295
/* ******************************************** */
296
//regions (world coords) MAX = 20
297
/* ******************************************** */
298
regionsX1 [0] int 2496 //enemy base1 blip
299
regionsY1 [0] int 3904
300
regionsX2 [0] int 3776
301
regionsY2 [0] int 5440
303
regionsX1 [1] int 3904 //enemy base2 blip
304
regionsY1 [1] int 3904
305
regionsX2 [1] int 5824
306
regionsY2 [1] int 5952
308
regionsX1 [2] int 832 //enemy base3 blip (cyborg group also)
309
regionsY1 [2] int 960
310
regionsX2 [2] int 1856
311
regionsY2 [2] int 1728
313
regionsX1 [3] int 320 //base 1 Factory start
314
regionsY1 [3] int 4160 //crossed by 1st derrick
315
regionsX2 [3] int 2368
316
regionsY2 [3] int 5184
318
regionsX1 [4] int 192 //Player's LZ region for victory
319
regionsY1 [4] int 6720
320
regionsX2 [4] int 1856
321
regionsY2 [4] int 8000
323
regionsX1 [5] int 7104 //SE Cyborg group
324
regionsY1 [5] int 6336
325
regionsX2 [5] int 7616
326
regionsY2 [5] int 6848
329
regionsX1 [6] int 704 //region group 0 (along valley)
330
regionsY1 [6] int 4544
331
regionsX2 [6] int 1728 //include guys on hill!
332
regionsY2 [6] int 4800
333
regionsX1 [7] int 576 //region group 1
334
regionsY1 [7] int 4032
335
regionsX2 [7] int 1728
336
regionsY2 [7] int 4543
337
regionsX1 [8] int 576 //region group 2
338
regionsY1 [8] int 3136
339
regionsX2 [8] int 1216
340
regionsY2 [8] int 4032
341
regionsX1 [9] int 576 //region group 3
342
regionsY1 [9] int 1728
343
regionsX2 [9] int 1600
344
regionsY2 [9] int 4032
345
regionsX1 [10] int 704 //region group 4
346
regionsY1 [10] int 704
347
regionsX2 [10] int 2112
348
regionsY2 [10] int 1728
350
regionsX1 [11] int 1728 //region group 5 (radar defenders)
351
regionsY1 [11] int 320
352
regionsX2 [11] int 6208
353
regionsY2 [11] int 3904
354
regionsX1 [12] int 4032 //protect region group 5 (radar object)
355
regionsY1 [12] int 2368
356
regionsX2 [12] int 4800
357
regionsY2 [12] int 3136
359
/* ******************************************** */
361
/* ******************************************** */
363
//sectors to attack (covers 1A-C expansion area, in order of priority to attack)
366
sectorsX1 [0] int 10432
367
sectorsY1 [0] int 12736
368
sectorsX2 [0] int 14272
369
sectorsY2 [0] int 15552
371
sectorsX1 [1] int 8896
372
sectorsY1 [1] int 13760
373
sectorsX2 [1] int 10304
374
sectorsY2 [1] int 15040
376
sectorsX1 [2] int 6336
377
sectorsY1 [2] int 13760
378
sectorsX2 [2] int 8768
379
sectorsY2 [2] int 14144
380
//ravine entrance to 1B
382
sectorsX1 [3] int 2112
383
sectorsY1 [3] int 12736
384
sectorsX2 [3] int 6336
385
sectorsY2 [3] int 14784
387
sectorsX1 [4] int 1600
388
sectorsY1 [4] int 10176
389
sectorsX2 [4] int 5952
390
sectorsY2 [4] int 12608
392
sectorsX1 [5] int 4672
393
sectorsY1 [5] int 8640
394
sectorsX2 [5] int 5696
395
sectorsY2 [5] int 10048
397
sectorsX1 [6] int 4160
398
sectorsY1 [6] int 6464
399
sectorsX2 [6] int 5056
400
sectorsY2 [6] int 8512
402
sectorsX1 [7] int 832
403
sectorsY1 [7] int 6336
404
sectorsX2 [7] int 3392
405
sectorsY2 [7] int 7104
407
sectorsX1 [8] int 4800
408
sectorsY1 [8] int 5056
409
sectorsX2 [8] int 6208
410
sectorsY2 [8] int 6208
412
sectorsX1 [9] int 3392
413
sectorsY1 [9] int 4672
414
sectorsX2 [9] int 4160
415
sectorsY2 [9] int 5440
417
sectorsX1 [10] int 5056
418
sectorsY1 [10] int 4160
419
sectorsX2 [10] int 5312
420
sectorsY2 [10] int 4928
422
sectorsX1 [11] int 4032
423
sectorsY1 [11] int 1216
424
sectorsX2 [11] int 6208
425
sectorsY2 [11] int 3264
427
sectorsX1 [12] int 3392
428
sectorsY1 [12] int 832
429
sectorsX2 [12] int 3776
430
sectorsY2 [12] int 1472
432
sectorsX1 [13] int 2624
433
sectorsY1 [13] int 1600
434
sectorsX2 [13] int 3392
435
sectorsY2 [13] int 1856
437
sectorsX1 [14] int 832
438
sectorsY1 [14] int 1344
439
sectorsX2 [14] int 2496
440
sectorsY2 [14] int 3392
442
sectorsX1 [15] int 1600
443
sectorsY1 [15] int 3520
444
sectorsX2 [15] int 2496
445
sectorsY2 [15] int 4544
447
sectorsX1 [16] int 832
448
sectorsY1 [16] int 1344
449
sectorsX2 [16] int 1728
450
sectorsY2 [16] int 2880
453
/* ******************************************** */
454
/* Enemy Base Blips */
455
/* ******************************************** */
456
numBases int 0 //MAX = 5. Must be same as number of bases listed next
457
basePlayer [0] int 0 //enemy player number who owns base
458
baseMsg [0] INTMESSAGE "C21_BASE1" //enemy base blip message (prox.txt)
459
baseRegion [0] int 0 //index to regions
460
baseWav1 [0] int 0 //index to baseSnd Superior Weapons
461
baseWav2 [0] int 3 //index to baseSnd Eradicated
464
baseMsg [1] INTMESSAGE "C21_BASE2"
466
baseWav1 [1] int 0 //index to baseSnd enemy detected
467
baseWav2 [1] int 3 //index to baseSnd Eradicated
470
baseMsg [2] INTMESSAGE "C21_BASE3"
472
baseWav1 [2] int 0 //index to baseSnd enemy detected
473
baseWav2 [2] int 3 //index to baseSnd Eradicated
475
/* ******************************************** */
477
/* ******************************************** */
478
numGroups int 3 //group MAX = 10
479
//one group to patrol around the collective base
480
grpType [0] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack...
481
grpPlayer [0] int 0 //player number (Collective)
482
grpRegion [0] int -1 //index in regions array
483
grpTimeGo [0] int 1 //10s. (always make >= 0 for defence forces)
484
grpRegionGo [0] int -1 //index in regions array as trigger
485
grpWhoGo [0] int 0 //player number to cross trigger region (may not need?)
486
grpMorale [0] int 50 //don't set morale/leadership/retreat
487
grpLeadership [0] int 50 //leadership value
488
grpRetreatXY [0] int 0 //retreat to base 1 assembly
489
grpPosStart [0] int 3 //index in coords/sectors array (depends on grpType)
490
grpPosMin [0] int 3 //Minimum index in coords array
491
grpPosMax [0] int 6 //Maximum index in coords array
492
grpPosStep [0] int 1 //Step increase for next 'waypoint'
493
grpPosType [0] int 1 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints
494
grpFactory [0] int 0 //index factory to reinforce group. -1 = any factory.
495
grpIdealSize [0] int 8 //ideal size. If less than this factory will reinforce
498
grpType [1] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack...
499
grpPlayer [1] int 0 //player number (Collective)
500
grpRegion [1] int 2 //cyborg base region
501
grpTimeGo [1] int 3 //move after 30 seconds
502
grpRegionGo [1] int -1 //no region. index in regions array as trigger
503
grpWhoGo [1] int 0 //player number to cross trigger region (may not need?)
504
grpMorale [1] int 50 //morale = 50%
505
grpLeadership [1] int 50 //leadership value
506
grpRetreatXY [1] int 0 //retreat (index in coords array) base1 assembly
507
grpPosStart [1] int 7 //player's LZ
508
grpPosMin [1] int 6 //main base
509
grpPosMax [1] int 8 //cyborg base
510
grpPosStep [1] int 1 //
511
grpPosType [1] int 2 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints
512
grpFactory [1] int -1 //index structure to reinforce group. -1 = any factory.
513
grpIdealSize [1] int 0 //ideal size. If less than this factory will reinforce
516
grpType [2] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack...
517
grpPlayer [2] int 0 //player number (Collective)
518
grpRegion [2] int 5 //cyborg base region
519
grpTimeGo [2] int 0 //move after 30 seconds
520
grpRegionGo [2] int -1 //no region. index in regions array as trigger
521
grpWhoGo [2] int 0 //player number to cross trigger region (may not need?)
522
grpMorale [2] int -1 //morale = 50%
523
grpLeadership [2] int 0 //leadership value
524
grpRetreatXY [2] int 0 //retreat (index in coords array) base1 assembly
525
grpPosStart [2] int 9 //L shaped patrol region
526
grpPosMin [2] int 9 //
527
grpPosMax [2] int 11 //
528
grpPosStep [2] int 1 //
529
grpPosType [2] int 2 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints
530
grpFactory [2] int -1 //index structure to reinforce group. -1 = any factory.
531
grpIdealSize [2] int 0 //ideal size. If less than this factory will reinforce
534
numFactories int 0 //MAX = 10
535
//collective tank factory
536
factID [0] int 0 //index to structures
537
factAssXY [0] int 0 //index to assembly point. -1 for don't set
538
factTimeGo [0] int 0 //delay before starting production in 10s
539
factRegionGo [0] int -1 //-1 = no region for trigger (assume WhoGo = 0)
540
factTempMin [0] int 5 //index to starting template
541
factTempMax [0] int 7 //index to maximum template
542
factEvery [0] int 9 //1.5 min. Time in 10s for factory to try to produce again
545
//These should be same in each file, but may need slight alterations
546
player int 0 //player's player number
547
crate FEATURESTAT "Crate"
548
artRange int 200 //171 //range to artifact about 1.5 tiles
549
objectiveRange int 640 //range to objective 5 Tiles
550
wayRange int 300 //range to waypoint 2ish tiles
551
targetRange int 768 //range for target spotting
552
targetMax int 4 //maximum number of targets to store for each enemy
553
lostSnd SOUND "pcv470.ogg" //mission failed
554
attackSnd1 SOUND "pcv337.ogg" //Base Under Attack
555
artSnd1 SOUND "pcv351.ogg" //artifact sounds
556
artSnd2 SOUND "pcv352.ogg"
557
transporter TEMPLATE "Transporter" //for enemy transports
558
LZComp SOUND "pcv445.ogg"
559
LZClear SOUND "lz-clear.ogg"
562
baseSnd[0] SOUND "pcv379.ogg" //Enemy Base Detected
563
baseSnd[1] SOUND "pcv379.ogg" //Enemy Base Detected
564
baseSnd[2] SOUND "pcv379.ogg" //Enemy Base Detected
565
baseSnd[3] SOUND "pcv394.ogg" //Enemy base eradicated
567
/* NEW STUFF FOR THREAT ASSESSMENT */
568
//this only works on groups with Morale Values
569
//if not declared just won't do anything!!
570
threatLight int 2 //value for light vehicles
571
threatMedium int 4 //value for medium vehicles
572
threatHeavy int 8 //value for large vehicles
573
threatRange int 512 //range to check for enemy and player threats
574
/* end of NEW STUFF */