//Generic VLO file template //for demo map version of fastplay level script "fastdemo.slo" run { /* Next level stuff */ NextLev LEVEL "SUBDEMO_START" //points to next level /* Define Players/Enemies */ numEnemies int 1 //MAX 2. Must define same as number of enemy players given next enemy[0] int 7 //enemy[1] int 1 allianceFlag BOOL FALSE //TRUE if want enemies to ally, otherwise mark FALSE /* Starting Enemy Power */ power[0] int 300 //starting power values for each enemy listed above /* Structure Limits */ numStrucStats int 5 //MAX 5. Must be same as number of limits given next strucStat[0] STRUCTURESTAT "A0PowerGenerator" strucLimit[0] int 1 strucStat[1] STRUCTURESTAT "A0ResourceExtractor" strucLimit[1] int 200 strucStat[2] STRUCTURESTAT "A0ResearchFacility" strucLimit[2] int 5 strucStat[3] STRUCTURESTAT "A0LightFactory" strucLimit[3] int 5 strucStat[4] STRUCTURESTAT "A0CommandCentre" strucLimit[4] int 1 /* Initialisation */ centreX int 1088 //starting view centre (in world units) centreY int 6592 scrollX1 int 0 //scroll limits (in tile units) scrollY1 int 0 scrollX2 int 64 scrollY2 int 64 zoomLevel int 1 //starting radar: 0=zoomed out, 2=zoomed in numLZ int 1 //MAX 8. Number of Landing zones/areas can't build on (0 = LZ) LZX[0] int 5 //coords of LZs in tile units LZY[0] int 54 /* starting technology for enemy */ //NOTE: need to set first number in array for enemy player //second number needs to correspond to numTechs[enemy] //MAX 2 enemies, 10 technologies numTechs[0] int 0 startTech[0][0] RESEARCHSTAT "R-Wpn-MG-Damage03" startTech[0][1] RESEARCHSTAT "R-Wpn-Rocket-Damage02" /* numTechs[1] int 3 startTech[1][0] RESEARCHSTAT "R-Vehicle-Body01" startTech[1][1] RESEARCHSTAT "R-Sys-Spade1Mk1" startTech[1][2] RESEARCHSTAT "R-Vehicle-Prop-Wheels" //startTech[1][3] RESEARCHSTAT "R-Wpn-MG1Mk1" //done as makeComponent available! */ /* Briefings */ numBriefs int 1 //MAX 2. Needs to be same as the number of briefings given next brief[0] INTMESSAGE "MBDEMO_MSG" //brief[1] INTMESSAGE "MB1C2_MSG" endMsg INTMESSAGE "END" winMsg INTMESSAGE "WIN" /* Objectives */ numObjectives int 1 //MAX 3. Needs to be the same as the number of objective blips given next objective[0] INTMESSAGE "FAST_OBJ1" objectiveX[0] int 1728 //doesn't use index to array, use world coords objectiveY[0] int 1216 /* Victory Conditions */ //NOTE: always assumes vcitory condition of: number of artifacts collected = victoryArt numVictory int 1 //number of victory conditions to be met (not including artifacts) //DOESN'T need to be same as number given next (these are set TRUE/FALSE) //if victory condition required. Can have 2 set to TRUE and numVictory = 1 //This will then let player win if EITHER condition is true! victory[0] BOOL TRUE //all enemy vehicles and structures need to be killed victory[1] BOOL FALSE //all players vehicles at landing zone (in transport?) /* Artifacts */ victoryArt int 5 //number of artifacts required for victory (must be <= numArt) numArt int 5 //MAX 6. Number of artifacts in total (even if not in game, but added as extra research!) //new improved way of doing artifacts //artType: 0 = artifact starts on map, 1 = get from STRUCTURE, 2 = get from FEATURE, 3 = get from DROID, 4 = at end of level //artVal: index to relevant type, ie FEATURE(crate), FEATURE, STRUCTURE, DROID //artX, artY: artifact coords (this is updated for DROIDS moving by script, but still needs an array to store them in!) artType [0] int 0 //already on map artVal [0] int 0 artX [0] int 576 artY [0] int 3008 artComp [0] RESEARCHSTAT "R-Wpn-Flamer01Mk1" artType [1] int 1 artVal [1] int 0 //get this from base 1 factory artX [1] int 3136 artY [1] int 832 artComp [1] RESEARCHSTAT "R-Defense-Tower01" artType [2] int 1 artVal [2] int 1 //get this from radar tower artX [2] int 4416 artY [2] int 2752 artComp [2] RESEARCHSTAT "R-Sys-Sensor-Turret01" artType [3] int 1 artVal [3] int 2 //get this from base 2 factory artX [3] int 5696 artY [3] int 1856 artComp [3] RESEARCHSTAT "R-Vehicle-Prop-Halftracks" //"R-Sys-Engineering01" /* artType [4] int 1 artVal [4] int 3 //get this from base 3 factory artX [4] int 4928 artY [4] int 6464 artComp [4] RESEARCHSTAT "R-Wpn-Mortar01Lt" */ artType [4] int 1 //get this from bunker artVal [4] int 4 artX [4] int 3136 artY [4] int 3904 artComp [4] RESEARCHSTAT "R-Sys-Engineering01" //"R-Wpn-MG-Damage01" /* lists of stuff referred to by index number */ //features (inc crates, by ID number) MAX = 10 features [0] FEATURE 649 //crate artifact (1st in valley) //features [1] FEATURE 661 //crate artifact (2nd by huts) (CHANGED TO BUNKER) //structures (by ID number) MAX = 10 structures [0] STRUCTURE 223 //Base 1 Factory structures [1] STRUCTURE 650 //radar Tower structures [2] STRUCTURE 481 //Base 2 Factory structures [3] STRUCTURE 623 //Base 3 Factory structures [4] STRUCTURE 666 //Bunker //droids (by ID number) MAX = 10 //droids [0] DROID 3279 //testdroid // list of templates (by name) MAX = 20 templates [0] TEMPLATE "BaBaPeople" //Truck template is always in position 0? templates [1] TEMPLATE "BarbarianTrike" //scavenger templates templates [2] TEMPLATE "BarbarianBuggy" templates [3] TEMPLATE "BabaJeep" templates [4] TEMPLATE "BabaRKJeep" templates [5] TEMPLATE "BarbarianRKBuggy" templates [6] TEMPLATE "BabaBusCan" templates [7] TEMPLATE "BabaFireCan" //coordinates (world coords) MAX = 10 coordsX [0] int 3136 //base 1 Assembly coordsY [0] int 1472 coordsX [1] int 5824 //base 2 Assembly (and valley group retreat!) coordsY [1] int 2368 coordsX [2] int 5184 //base 3 Assembly coordsY [2] int 6592 coordsX [3] int 832 //1088 //valley group attack coords (player base) coordsY [3] int 6848 //6208 coordsX [4] int 1856 //valley group 2nd coord so can reinforce coordsY [4] int 7104 coordsX [5] int 2624 //hillgroup waypoint1 coordsY [5] int 5952 coordsX [6] int 2752 //hillgroup waypoint2 coordsY [6] int 6720 coordsX [7] int 2496 //hillgroup waypoint3 coordsY [7] int 7488 coordsX [8] int 1728 //hillgroup waypoint4 coordsY [8] int 7744 //regions (world coords) MAX = 20 regionsX1 [0] int 2624 //enemy base1 blip regionsY1 [0] int 448 regionsX2 [0] int 3648 regionsY2 [0] int 1344 regionsX1 [1] int 4800 //enemy base2 blip regionsY1 [1] int 1472 regionsX2 [1] int 6464 regionsY2 [1] int 2880 regionsX1 [2] int 4288 //enemy base3 blip regionsY1 [2] int 5952 regionsX2 [2] int 6208 regionsY2 [2] int 7488 regionsX1 [3] int 320 //base 1 Factory start regionsY1 [3] int 4160 //crossed by 1st derrick regionsX2 [3] int 2368 regionsY2 [3] int 5184 regionsX1 [4] int 1984 //base 2 Factory start regionsY1 [4] int 832 //round first corner near base1 regionsX2 [4] int 3008 regionsY2 [4] int 2368 regionsX1 [5] int 3904 //base 3 Factory start regionsY1 [5] int 2496 //crossed by radar tower regionsX2 [5] int 5312 regionsY2 [5] int 4288 regionsX1 [6] int 704 //region group 0 (along valley) regionsY1 [6] int 4544 regionsX2 [6] int 1728 //include guys on hill! regionsY2 [6] int 4800 regionsX1 [7] int 576 //region group 1 regionsY1 [7] int 4032 regionsX2 [7] int 1728 regionsY2 [7] int 4543 regionsX1 [8] int 576 //region group 2 regionsY1 [8] int 3136 regionsX2 [8] int 1216 regionsY2 [8] int 4032 regionsX1 [9] int 576 //region group 3 regionsY1 [9] int 1728 regionsX2 [9] int 1600 regionsY2 [9] int 4032 regionsX1 [10] int 704 //region group 4 regionsY1 [10] int 704 regionsX2 [10] int 2112 regionsY2 [10] int 1728 regionsX1 [11] int 1728 //region group 5 (radar defenders) regionsY1 [11] int 320 regionsX2 [11] int 6208 regionsY2 [11] int 3904 regionsX1 [12] int 4032 //protect region group 5 (radar object) regionsY1 [12] int 2368 regionsX2 [12] int 4800 regionsY2 [12] int 3136 /* sector Stuff */ /*reuse //sectors to attack (covers 1A-C expansion area, in order of priority to attack) //MAX = 20 //sect15 sectorsX1 [0] int 10432 sectorsY1 [0] int 12736 sectorsX2 [0] int 14272 sectorsY2 [0] int 15552 //sect21 sectorsX1 [1] int 8896 sectorsY1 [1] int 13760 sectorsX2 [1] int 10304 sectorsY2 [1] int 15040 //sect20 sectorsX1 [2] int 6336 sectorsY1 [2] int 13760 sectorsX2 [2] int 8768 sectorsY2 [2] int 14144 //ravine entrance to 1B //sect sectorsX1 [3] int 2112 sectorsY1 [3] int 12736 sectorsX2 [3] int 6336 sectorsY2 [3] int 14784 //sect sectorsX1 [4] int 1600 sectorsY1 [4] int 10176 sectorsX2 [4] int 5952 sectorsY2 [4] int 12608 //sect sectorsX1 [5] int 4672 sectorsY1 [5] int 8640 sectorsX2 [5] int 5696 sectorsY2 [5] int 10048 //sect sectorsX1 [6] int 4160 sectorsY1 [6] int 6464 sectorsX2 [6] int 5056 sectorsY2 [6] int 8512 //sect (base) sectorsX1 [7] int 832 sectorsY1 [7] int 6336 sectorsX2 [7] int 3392 sectorsY2 [7] int 7104 //sect sectorsX1 [8] int 4800 sectorsY1 [8] int 5056 sectorsX2 [8] int 6208 sectorsY2 [8] int 6208 //sect sectorsX1 [9] int 3392 sectorsY1 [9] int 4672 sectorsX2 [9] int 4160 sectorsY2 [9] int 5440 //sect sectorsX1 [10] int 5056 sectorsY1 [10] int 4160 sectorsX2 [10] int 5312 sectorsY2 [10] int 4928 //sect sectorsX1 [11] int 4032 sectorsY1 [11] int 1216 sectorsX2 [11] int 6208 sectorsY2 [11] int 3264 //sect sectorsX1 [12] int 3392 sectorsY1 [12] int 832 sectorsX2 [12] int 3776 sectorsY2 [12] int 1472 //sect sectorsX1 [13] int 2624 sectorsY1 [13] int 1600 sectorsX2 [13] int 3392 sectorsY2 [13] int 1856 //sect sectorsX1 [14] int 832 sectorsY1 [14] int 1344 sectorsX2 [14] int 2496 sectorsY2 [14] int 3392 //sect sectorsX1 [15] int 1600 sectorsY1 [15] int 3520 sectorsX2 [15] int 2496 sectorsY2 [15] int 4544 //sect sectorsX1 [16] int 832 sectorsY1 [16] int 1344 sectorsX2 [16] int 1728 sectorsY2 [16] int 2880 */ /* Enemy Base Blips */ numBases int 4 //MAX = 5. Must be same as number of bases listed next basePlayer [0] int 7 //enemy player number who owns base baseMsg [0] INTMESSAGE "FAST_BASE1" //enemy base blip message (prox.txt) baseRegion [0] int 0 //index to regions baseWav1 [0] int 2 //index to baseSnd Superior Weapons baseWav2 [0] int 3 //index to baseSnd Eradicated basePlayer [1] int 7 baseMsg [1] INTMESSAGE "FAST_BASE2" baseRegion [1] int 1 baseWav1 [1] int 0 //index to baseSnd enemy detected baseWav2 [1] int 3 //index to baseSnd Eradicated basePlayer [2] int 7 baseMsg [2] INTMESSAGE "FAST_BASE3" baseRegion [2] int 2 baseWav1 [2] int 2 //index to baseSnd Superior Weapons baseWav2 [2] int 3 //index to baseSnd Eradicated basePlayer [3] int 7 //do radar as a base baseMsg [3] INTMESSAGE "FAST_BASE4" baseRegion [3] int 12 baseWav1 [3] int 1 //index to baseSnd Threat to project baseWav2 [3] int -1 //-1 = no sound /* Enemy Groups */ numGroups int 7 //group MAX = 10 //5 valley groups timed 10seconds apart to attack player's base grpType [0] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [0] int 7 //player number (NP) grpRegion [0] int 6 //index in regions array grpTimeGo [0] int 1 //10s. (always make >= 0 for defence forces) grpRegionGo [0] int -1 //index in regions array as trigger grpWhoGo [0] int 0 //player number to cross trigger region (may not need?) grpMorale [0] int 90 //don't set morale/leadership/retreat grpLeadership [0] int 50 //leadership value grpRetreatXY [0] int 0 //retreat to base 1 assembly grpPosStart [0] int 3 //index in coords/sectors array (depends on grpType) grpPosMin [0] int 3 //Minimum index in coords array grpPosMax [0] int 3 //Maximum index in coords array grpPosStep [0] int 0 //Step increase for next 'waypoint' grpPosType [0] int 0 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [0] int -1 //index factory to reinforce group. -1 = any factory. grpIdealSize [0] int 0 //ideal size. If less than this factory will reinforce grpType [1] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [1] int 7 //player number (NP) grpRegion [1] int 7 //index in regions array grpTimeGo [1] int 2 //20s time trigger (always make >= 0 for defence forces) grpRegionGo [1] int -1 //no region. index in regions array as trigger grpWhoGo [1] int 0 //player number to cross trigger region (may not need?) grpMorale [1] int 90 //very timid! morale = 1% grpLeadership [1] int 50 //leadership value grpRetreatXY [1] int 0 //retreat (index in coords array) base1 assembly grpPosStart [1] int 3 //index in sectors array (depends on grpType) grpPosMin [1] int 3 //Minimum index in coords array grpPosMax [1] int 3 //Maximum index in coords array grpPosStep [1] int 0 //Step increase for next 'waypoint' grpPosType [1] int 0 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [1] int -1 //index structure to reinforce group. -1 = any factory. grpIdealSize [1] int 0 //ideal size. If less than this factory will reinforce grpType [2] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [2] int 7 //player number (NP) grpRegion [2] int 8 //index in regions array grpTimeGo [2] int 3 //0s time trigger (always make >= 0 for defence forces) grpRegionGo [2] int -1 //no region. index in regions array as trigger grpWhoGo [2] int 0 //player number to cross trigger region (may not need?) grpMorale [2] int 90 //morale = 25% grpLeadership [2] int 50 //leadership value = 75% grpRetreatXY [2] int 1 //retreat (index in coords array) base2 assembly grpPosStart [2] int 3 //index in coords array (depends on grpType) grpPosMin [2] int 3 //Minimum index in coords array grpPosMax [2] int 4 //Maximum index in coords array grpPosStep [2] int 1 //Step increase for next 'waypoint' grpPosType [2] int 1 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [2] int 0 //index factory to reinforce group. -1 = any factory. grpIdealSize [2] int 2 //ideal size. If less than this factory will reinforce grpType [3] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [3] int 7 //player number (NP) grpRegion [3] int 9 //index in regions array grpTimeGo [3] int 4 //10s time trigger (always make >= 0 for defence forces) grpRegionGo [3] int -1 //no region. index in regions array as trigger grpWhoGo [3] int 0 //player number to cross trigger region (may not need?) grpMorale [3] int 90 //pretty timid! morale = 25% grpLeadership [3] int 50 //leadership value = 0% grpRetreatXY [3] int 1 //retreat (index in coords array) base 2 assembly grpPosStart [3] int 3 //index in coords array (depends on grpType) grpPosMin [3] int 3 //Minimum index in coords array grpPosMax [3] int 4 //Maximum index in coords array grpPosStep [3] int 1 //Step increase for next 'waypoint' grpPosType [3] int 1 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [3] int 1 //index factory to reinforce group. -1 = any factory. grpIdealSize [3] int 4 //ideal size. If less than this factory will reinforce grpType [4] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [4] int 7 //player number (NP) grpRegion [4] int 10 //index in regions array grpTimeGo [4] int 5 //20s time trigger (always make >= 0 for defence forces) grpRegionGo [4] int -1 //no region. index in regions array as trigger grpWhoGo [4] int 0 //player number to cross trigger region (may not need?) grpMorale [4] int 90 //morale = 50% grpLeadership [4] int 50 //leadership value = 75% grpRetreatXY [4] int 1 //retreat (index in coords array) base2 assembly grpPosStart [4] int 3 //index in coords array (depends on grpType) grpPosMin [4] int 3 //Minimum index in coords array grpPosMax [4] int 4 //Maximum index in coords array grpPosStep [4] int 1 //Step increase for next 'waypoint' grpPosType [4] int 1 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [4] int -1 //index factory to reinforce group. -1 = any factory. grpIdealSize [4] int 6 //ideal size. If less than this factory will reinforce //radar tower defenders grpType [5] int 1 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [5] int 7 //player number (NP) grpRegion [5] int 11 //index in regions array grpTimeGo [5] int 0 //20s time trigger (always make >= 0 for defence forces) grpRegionGo [5] int 12 //index in regions array as protect region grpWhoGo [5] int 0 //player number to cross trigger region (may not need?) grpMorale [5] int 25 //morale = 50% grpLeadership [5] int 50 //leadership value = 75% grpRetreatXY [5] int 1 //retreat (index in coords array) base2 assembly grpPosStart [5] int -1 //-1 = no waypoints. index in coords array (depends on grpType) grpPosMin [5] int -1 //Minimum index in coords array grpPosMax [5] int -1 //Maximum index in coords array grpPosStep [5] int 0 //Step increase for next 'waypoint' grpPosType [5] int 0 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [5] int 0 //index factory to reinforce group. -1 = any factory. grpIdealSize [5] int 0 //ideal size. If less than this factory will reinforce //hillgroup grpType [6] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... grpPlayer [6] int 7 //player number (NP) grpRegion [6] int 2 //index in regions array (same as base region) grpTimeGo [6] int -1 //20s time trigger (always make >= 0 for defence forces) grpRegionGo [6] int 5 //no region. index in regions array as trigger grpWhoGo [6] int 0 //player number to cross trigger region (may not need?) grpMorale [6] int 90 //morale = 50% grpLeadership [6] int 50 //leadership value = 75% grpRetreatXY [6] int 2 //retreat (index in coords array) base3 assembly grpPosStart [6] int 5 //index in coords array (depends on grpType) grpPosMin [6] int 5 //Minimum index in coords array grpPosMax [6] int 8 //Maximum index in coords array grpPosStep [6] int 1 //Step increase for next 'waypoint' grpPosType [6] int 2 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints grpFactory [6] int 2 //index factory to reinforce group. -1 = any factory. grpIdealSize [6] int 3 //ideal size. If less than this factory will reinforce /* Factories */ numFactories int 3 //MAX = 10 factID [0] int 0 //index to structures factAssXY [0] int 0 //index to assembly point. -1 for don't set factTimeGo [0] int -1 //delay before starting production in 10s factRegionGo [0] int 3 //-1 = no region for trigger (assume WhoGo = 0) factTempMin [0] int 0 //index to starting template factTempMax [0] int 2 //index to maximum template factID [1] int 2 //index to structures factAssXY [1] int 1 //index to assembly point. -1 for don't set factTimeGo [1] int -1 //delay before starting production in 10s factRegionGo [1] int 4 //-1 = no region for trigger (assume WhoGo = 0) factTempMin [1] int 0 //index to starting template factTempMax [1] int 3 //index to maximum template factID [2] int 3 //index to structures factAssXY [2] int 2 //index to assembly point. -1 for don't set factTimeGo [2] int -1 //delay before starting production in 10s factRegionGo [2] int 5 //-1 = no region for trigger (assume WhoGo = 0) factTempMin [2] int 1 //index to starting template factTempMax [2] int 4 //index to maximum template /* 'Globals' */ //These should be same in each file, but may need slight alterations player int 0 //player's player number crate FEATURESTAT "Crate" artRange int 200 //171 //range to artifact about 1.5 tiles objectiveRange int 640 //range to objective 5 Tiles wayRange int 300 //range to waypoint 2ish tiles targetRange int 768 //range for target spotting targetMax int 4 //maximum number of targets to store for each enemy wonSnd SOUND "pcv460.ogg" //mission done lostSnd SOUND "pcv470.ogg" //mission failed attackSnd1 SOUND "pcv337.ogg" //Base Under Attack artSnd1 SOUND "pcv351.ogg" //artifact sounds artSnd2 SOUND "pcv352.ogg" //base WAVs. MAX = 5 baseSnd[0] SOUND "pcv379.ogg" //Enemy Base Detected baseSnd[1] SOUND "pcv374.ogg" //threat to project baseSnd[2] SOUND "pcv374.ogg" //superior weapons baseSnd[3] SOUND "pcv392.ogg" //scavenger outpost eradicated }