From 656b6ffd96a6d0a052325788ac5c18cf3b6a7b54 Mon Sep 17 00:00:00 2001 From: KJeff01 Date: Wed, 2 Aug 2017 17:32:53 -0500 Subject: [PATCH] Convert cam3-1(s) {.vlo,.slo} to cam3-1(s).js Combines 3-1x.vlo and count3-1.vlo in addition to any other related files for this mission. Delete cam3-1.vlo Delete cam3-1s.vlo Delete cam3-1x.vlo Delete count3-1.vlo Delete vtols3-1.vlo Delete cam3-1x.slo --- data/base/script/campaign/cam3-1.js | 385 +++++++++++++++++ data/base/script/campaign/cam3-1s.js | 29 ++ data/base/script/data/cam3-1.vlo | 580 -------------------------- data/base/script/data/cam3-1s.vlo | 58 --- data/base/script/data/cam3-1x.vlo | 77 ---- data/base/script/data/count3-1.vlo | 88 ---- data/base/script/data/vtols3-1.vlo | 94 ----- data/base/script/text/cam3-1x.slo | 165 -------- data/base/wrf/cam3/sub3-1.wrf | 18 +- data/base/wrf/cam3/sub3-1/labels.json | 43 ++ data/base/wrf/cam3/sub3-1s.wrf | 10 +- 11 files changed, 466 insertions(+), 1081 deletions(-) create mode 100644 data/base/script/campaign/cam3-1.js create mode 100644 data/base/script/campaign/cam3-1s.js delete mode 100644 data/base/script/data/cam3-1.vlo delete mode 100644 data/base/script/data/cam3-1s.vlo delete mode 100644 data/base/script/data/cam3-1x.vlo delete mode 100644 data/base/script/data/count3-1.vlo delete mode 100644 data/base/script/data/vtols3-1.vlo delete mode 100644 data/base/script/text/cam3-1x.slo create mode 100644 data/base/wrf/cam3/sub3-1/labels.json diff --git a/data/base/script/campaign/cam3-1.js b/data/base/script/campaign/cam3-1.js new file mode 100644 index 00000000000..da26ad8d9e7 --- /dev/null +++ b/data/base/script/campaign/cam3-1.js @@ -0,0 +1,385 @@ +include("script/campaign/libcampaign.js"); +include("script/campaign/templates.js"); + +const NEXUS_RES = [ + "R-Sys-Engineering03", "R-Defense-WallUpgrade07", + "R-Struc-Materials07", "R-Struc-Factory-Upgrade06", + "R-Struc-Factory-Cyborg-Upgrade06", "R-Struc-VTOLFactory-Upgrade06", + "R-Struc-VTOLPad-Upgrade06", "R-Vehicle-Engine09", "R-Vehicle-Metals06", + "R-Cyborg-Metals07", "R-Vehicle-Armor-Heat05", "R-Cyborg-Armor-Heat05", + "R-Vehicle-Prop-Hover02", "R-Vehicle-Prop-VTOL02", "R-Cyborg-Legs02", + "R-Wpn-Bomb-Accuracy03", "R-Wpn-Missile-Damage01", "R-Wpn-Missile-ROF01", + "R-Sys-Sensor-Upgrade01", "R-Sys-NEXUSrepair", "R-Wpn-Rail-Damage01", + "R-Wpn-Rail-ROF01", "R-Wpn-Rail-Accuracy01", "R-Wpn-Flamer-Damage06", +]; +var launchTimes; +var detTimes; +var launchSounds; +var detSounds; +var videoIndex; //What video sequence should be played. + +//Remove Nexus VTOL droids. +camAreaEvent("vtolRemoveZone", function(droid) +{ + if (droid.player !== CAM_HUMAN_PLAYER) + { + if (isVTOL(droid)) + { + camSafeRemoveObject(droid, false); + } + } + + resetLabel("vtolRemoveZone", NEXUS); +}); + +camAreaEvent("hillTriggerZone", function(droid) +{ + camManageGroup(camMakeGroup("hillGroupHovers"), CAM_ORDER_PATROL, { + pos: [ + camMakePos("hillPos1"), + camMakePos("hillPos2"), + camMakePos("hillPos3"), + ], + interval: 25000, + regroup: true, + count: -1 + //morale: 25, + //fallback: camMakePos("hillRetreat") + }); + + camManageGroup(camMakeGroup("hillGroupCyborgs"), CAM_ORDER_PATROL, { + pos: [ + camMakePos("hillPos1"), + camMakePos("hillPos2"), + camMakePos("hillPos3"), + ], + interval: 15000, + regroup: true, + count: -1 + //morale: 25, + //fallback: camMakePos("hillRetreat") + }); +}); + +//Play videos. +function eventVideoDone() +{ + const VIDEOS = ["MB3_1B_MSG", "MB3_1B_MSG2"]; + if(!camDef(videoIndex)) + { + videoIndex = 0; + } + + if(videoIndex < VIDEOS.length) + { + hackAddMessage(VIDEOS[videoIndex], MISS_MSG, CAM_HUMAN_PLAYER, true); + videoIndex += 1; + } +} + +//VTOL units stop coming when the Nexus HQ is destroyed. +function checkNexusHQ() +{ + if(getObject("NXCommandCenter") === null) + { + camToggleVtolSpawn(); + } + else + { + queue("checkNexusHQ", 8000); + } +} + +//Setup Nexus VTOL hit and runners. +function vtolAttack() +{ + var list; with (camTemplates) list = [nxlscouv, nxmtherv]; + camSetVtolData(NEXUS, "vtolAppearPos", "vtolRemovePos", list, camChangeOnDiff(300000)); //5 min + checkNexusHQ(); +} + +//These groups are active immediately. +function cyborgAttack() +{ + camManageGroup(camMakeGroup("lzAttackCyborgs"), CAM_ORDER_ATTACK, { + pos: [ + camMakePos("swRetreat"), + camMakePos("hillPos1"), + camMakePos("hillPos2"), + camMakePos("hillPos3"), + ], + regroup: true, + count: -1, + morale: 90, + fallback: camMakePos("swRetreat") + }); +} + +function hoverAttack() +{ + camManageGroup(camMakeGroup("lzAttackHovers"), CAM_ORDER_ATTACK, { + pos: [ + camMakePos("swRetreat"), + camMakePos("hillPos1"), + camMakePos("hillPos2"), + camMakePos("hillPos3"), + ], + regroup: true, + count: -1, + morale: 90, + fallback: camMakePos("swRetreat") + }); +} + +//Setup next mission part if all missile silos are destroyed (setupNextMission()). +function missileSilosDestroyed() +{ + const SILO_COUNT = 4; + const SILO_ALIAS = "NXMissileSilo"; + var destroyed = 0; + + for(var i = 0; i < SILO_COUNT; ++i) + { + destroyed += (getObject(SILO_ALIAS + (i + 1)) === null) ? 1 : 0; + } + + return ((destroyed === SILO_COUNT) ? true : false); +} + +//Nuclear missile destroys everything not in safe zone. +function nukeAndCountSurvivors() +{ + var nuked = enumArea(0, 0, mapWidth, mapHeight, ALL_PLAYERS, false); + var safeZone = enumArea("valleySafeZone", CAM_HUMAN_PLAYER, false); + var safeLen = safeZone.length; + + //Make em' explode! + for(var i = 0, t = nuked.length; i < t; ++i) + { + var nukeIt = true; + for(var s = 0; s < safeLen; ++s) + { + if(nuked[i].id === safeZone[s].id) + { + nukeIt = false; + break; + } + } + + if(nukeIt && camDef(nuked[i]) && (nuked[i].id !== 0)) + { + camSafeRemoveObject(nuked[i], true); + } + } + + return safeLen; //Must be at least 1 to win. +} + +//Expand the map and play video and prevent transporter reentry. +function setupNextMission() +{ + if(missileSilosDestroyed()) + { + const MISSLE_ABORT = "labort.ogg"; + eventVideoDone(); + playSound(MISSLE_ABORT, CAM_HUMAN_PLAYER); + + setScrollLimits(0, 0, 64, 64); //Reveal the whole map. + + if(getMissionTime() > 3600) + { + setMissionTime(camChangeOnDiff(3600)); + } + + hackRemoveMessage("CM31_TAR_UPLINK", PROX_MSG, CAM_HUMAN_PLAYER); + hackAddMessage("CM31_HIDE_LOC", PROX_MSG, CAM_HUMAN_PLAYER); + + setReinforcementTime(-1); + } + else + { + queue("setupNextMission", 2000); + } +} + + +//Play countdown sounds. Elements are shifted out of the sound arrays as they play. +function getCountdown() +{ + var missilesDead = missileSilosDestroyed() ? true : false; + var times = missilesDead ? detTimes : launchTimes; + var sounds = missilesDead ? detSounds : launchSounds; + var skip = false; + + for(var i = 0, t = times.length; i < t; ++i) + { + var currentTime = getMissionTime(); + if(currentTime <= times[0]) + { + if(camDef(times[1]) && (currentTime <= times[1])) + { + skip = true; //Huge time jump? + } + + if(!skip) + { + playSound(sounds[0], CAM_HUMAN_PLAYER); + } + + if(missilesDead) + { + detTimes.shift(); + detSounds.shift(); + } + else + { + launchSounds.shift(); + launchTimes.shift(); + } + + break; + } + } + + queue("getCountdown", 120); +} + +function enableAllFactories() +{ + camEnableFactory("NXCybFac1"); + camEnableFactory("NXCybFac2"); + camEnableFactory("NXMediumFac"); +} + +//For now just make sure we have all the droids in the canyon. +function unitsInValley() +{ + var safeZone = enumArea("valleySafeZone", CAM_HUMAN_PLAYER, false); + var allDroids = enumArea(0, 0, mapWidth, mapHeight, CAM_HUMAN_PLAYER, false).filter(function(obj) { + return (obj.type === DROID); + }); + + if(safeZone.length === allDroids.length) + { + if(nukeAndCountSurvivors()) + { + return true; + } + else + { + return false; + } + } +} + +function enableReinforcements() +{ + const REINFORCEMENT_TIME = camChangeOnDiff(180); //3 minutes. + playSound("pcv440.ogg"); // Reinforcements are available. + camSetStandardWinLossConditions(CAM_VICTORY_OFFWORLD, "CAM_3B", { + area: "RTLZ", + reinforcements: camChangeOnDiff(REINFORCEMENT_TIME, true), + callback: "unitsInValley" + }); +} + +function eventStartLevel() +{ + const MISSION_TIME = camChangeOnDiff(7200); //120 minutes. + const NEXUS_POWER = camChangeOnDiff(20000); + var startpos = getObject("startPosition"); + var lz = getObject("landingZone"); + var tent = getObject("transporterEntry"); + var text = getObject("transporterExit"); + + launchTimes = [ + 3600, 3000, 2400, 1800, 1200, 600, 310, 300, + 240, 180, 120, 60, 25, 11, 2, + ]; + detTimes = [ + 3591, 3590, 3000, 2400, 1800, 1200, 600, 300, + 240, 180, 120, 60, 20, 10, + ]; + launchSounds = [ + "60min.ogg", "50min.ogg", "40min.ogg", "30min.ogg", "20min.ogg", + "10min.ogg", "meflp.ogg", "5min.ogg", "4min.ogg", "3min.ogg", + "2min.ogg", "1min.ogg", "flseq.ogg", "10to1.ogg", "mlaunch.ogg", + ]; + detSounds = [ + "mlaunch.ogg", "det60min.ogg", "det50min.ogg", "det40min.ogg", + "det30min.ogg", "det20min.ogg", "det10min.ogg", "det5min.ogg", + "det4min.ogg", "det3min.ogg", "det2min.ogg", "det1min.ogg", + "fdetseq.ogg", "10to1.ogg", + ]; + + camSetStandardWinLossConditions(CAM_VICTORY_OFFWORLD, "CAM_3B", { + area: "RTLZ", + reinforcements: -1, + callback: "unitsInValley" + }); + setMissionTime(MISSION_TIME); + + centreView(startpos.x, startpos.y); + setNoGoArea(lz.x, lz.y, lz.x2, lz.y2, CAM_HUMAN_PLAYER); + startTransporterEntry(tent.x, tent.y, CAM_HUMAN_PLAYER); + setTransporterExit(text.x, text.y, CAM_HUMAN_PLAYER); + setScrollLimits(0, 32, 64, 64); + + setPower(NEXUS_POWER, NEXUS); + camCompleteRequiredResearch(NEXUS_RES, NEXUS); + + camSetEnemyBases({ + "NX-SWBase": { + cleanup: "baseCleanupArea", + detectMsg: "CM31_BASE1", + detectSnd: "pcv379.ogg", + eliminateSnd: "pcv394.ogg", + }, + }); + + with (camTemplates) camSetFactories({ + "NXCybFac1": { + order: CAM_ORDER_ATTACK, + groupSize: 4, + throttle: camChangeOnDiff(120000), + regroup: true, + repair: 40, + templates: [nxcyrail, nxcyscou, nxcylas] + }, + "NXCybFac2": { + order: CAM_ORDER_ATTACK, + groupSize: 4, + throttle: camChangeOnDiff(180000), + regroup: true, + repair: 40, + templates: [nxcyrail, nxcyscou, nxcylas] + }, + "NXMediumFac": { + order: CAM_ORDER_DEFEND, + data: { + pos: [ + camMakePos("defenderPos1"), + camMakePos("defenderPos2"), + camMakePos("defenderPos3"), + ] + }, + group: camMakeGroup("baseDefenderGroup"), + groupSize: 5, + throttle: camChangeOnDiff(120000), + regroup: true, + repair: 40, + templates: [nxmscouh, nxmrailh] + }, + }); + + hackAddMessage("CM31_TAR_UPLINK", PROX_MSG, CAM_HUMAN_PLAYER); + + cyborgAttack(); + getCountdown(); + + queue("setupNextMission", 8000); + queue("enableReinforcements", 10000); + queue("hoverAttack", camChangeOnDiff(240000)); // 4 min + queue("vtolAttack", camChangeOnDiff(300000)); //5 min + queue("enableAllFactories", camChangeOnDiff(300000)); //5 min +} diff --git a/data/base/script/campaign/cam3-1s.js b/data/base/script/campaign/cam3-1s.js new file mode 100644 index 00000000000..4731b96e871 --- /dev/null +++ b/data/base/script/campaign/cam3-1s.js @@ -0,0 +1,29 @@ +include("script/campaign/libcampaign.js"); + +var index; + +function eventVideoDone() +{ + const VIDEOS = ["MB3_1A_MSG", "MB3_1A_MSG2"]; + + if(!camDef(index)) + { + index = 0; + } + + if(index < VIDEOS.length) + { + hackAddMessage(VIDEOS[index], MISS_MSG, CAM_HUMAN_PLAYER, true); + index = index + 1; + } +} + +function eventStartLevel() +{ + camSetupTransporter(56, 120, 25, 87); + centreView(57, 119); + setNoGoArea(55, 119, 57, 121, CAM_HUMAN_PLAYER); + setMissionTime(camChangeOnDiff(4200)); // 70 minutes + eventVideoDone(); + camSetStandardWinLossConditions(CAM_VICTORY_PRE_OFFWORLD, "SUB_3_1"); +} diff --git a/data/base/script/data/cam3-1.vlo b/data/base/script/data/cam3-1.vlo deleted file mode 100644 index 3bb9c873e7a..00000000000 --- a/data/base/script/data/cam3-1.vlo +++ /dev/null @@ -1,580 +0,0 @@ -//Generic VLO file template for start/expand levels - -//Cam3-1.vlo - -script "GenExp.slo" -run -{ -/* Next level stuff */ -NextLev LEVEL "CAM_3B" //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 3 -alliancePlayer int 0 //ally player with self (could be a different player number -allianceEnemy[0] int 3 //ally enemy with self (could be a different player number -allianceFlag BOOL FALSE //TRUE if want enemies to use each others targets, otherwise mark FALSE - -/* Starting Enemy Power */ -power[0] int 20000 //starting power values for each enemy listed above - -/*Health Retreat Level for each of the enemies listed above*/ -healthRetreat[0] int 80 -healthRetreatX[0] int 832 //default retreat for non-group units -healthRetreatY[0] int 6720 -runOffFlag BOOL TRUE - -/* Structure Limits */ -numStrucStats int 6 //MAX 5. Must be same as number of limits given next -strucStat[0] STRUCTURESTAT "A0PowerGenerator" -strucLimit[0] int 0 -strucStat[1] STRUCTURESTAT "A0ResourceExtractor" -strucLimit[1] int 0 -strucStat[2] STRUCTURESTAT "A0ResearchFacility" -strucLimit[2] int 0 -strucStat[3] STRUCTURESTAT "A0LightFactory" -strucLimit[3] int 0 -strucStat[4] STRUCTURESTAT "A0CommandCentre" -strucLimit[4] int 0 -strucStat[5] STRUCTURESTAT "A0ComDroidControl" -strucLimit[5] int 0 - -/* Initialisation */ -centreX int 7616 //starting view centre (in world units) -centreY int 7360 -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 57 //coords of LZs in tile units -LZY[0] int 57 - -/* Transport exit and entry */ -transX[0] int 55 //entry coords -transY[0] int 63 -transX[1] int 63 //exit coords -transY[1] int 60 - -ReinforceTime INT 1800 // (3 minute) number of seconds*10 for transport, -1 for no reinforcements - -/* 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 22 -startTech [0] [0] RESEARCHSTAT "R-Defense-WallUpgrade07" -startTech [0] [1] RESEARCHSTAT "R-Struc-Materials07" -startTech [0] [2] RESEARCHSTAT "R-Struc-Factory-Upgrade06" -startTech [0] [3] RESEARCHSTAT "R-Struc-Factory-Cyborg-Upgrade06" -startTech [0] [4] RESEARCHSTAT "R-Struc-VTOLFactory-Upgrade06" -startTech [0] [5] RESEARCHSTAT "R-Struc-VTOLPad-Upgrade06" -startTech [0] [6] RESEARCHSTAT "R-Vehicle-Engine09" -startTech [0] [7] RESEARCHSTAT "R-Vehicle-Metals06" -startTech [0] [8] RESEARCHSTAT "R-Cyborg-Metals07" -startTech [0] [9] RESEARCHSTAT "R-Vehicle-Armor-Heat05" -startTech [0] [10] RESEARCHSTAT "R-Cyborg-Armor-Heat05" -startTech [0] [11] RESEARCHSTAT "R-Sys-Engineering03" -startTech [0] [12] RESEARCHSTAT "R-Vehicle-Prop-Hover02" -startTech [0] [13] RESEARCHSTAT "R-Vehicle-Prop-VTOL02" -startTech [0] [14] RESEARCHSTAT "R-Wpn-Bomb-Accuracy03" -startTech [0] [15] RESEARCHSTAT "R-Wpn-Missile-Damage01" -startTech [0] [16] RESEARCHSTAT "R-Wpn-Missile-ROF01" -startTech [0] [17] RESEARCHSTAT "R-Wpn-Rail-Damage01" -startTech [0] [18] RESEARCHSTAT "R-Wpn-Rail-ROF01" -startTech [0] [19] RESEARCHSTAT "R-Sys-Sensor-Upgrade01" -startTech [0] [20] RESEARCHSTAT "R-Sys-NEXUSrepair" -startTech [0] [21] RESEARCHSTAT "R-Wpn-Flamer-Damage06" -/* Briefings */ -numBriefs int 1 //MAX 5. Needs to be same as the number of briefings given next -brief[0] INTMESSAGE "MB3_1A_MSG2" -briefVal[0] int 2 //0 remove after playing, 1 keep, 2 don't play immediately -endMsg INTMESSAGE "END" - -/* Objectives */ -numObjectives int 0 //MAX 3. Needs to be the same as the number of objective blips given next - -/* Victory Conditions */ -//NOTE: always assumes victory condition of: number of artifacts collected = victoryArt -numVictory int 0 //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! - //Use numVictory of 0 if just want player to get artifacts - -//these now done as integers NOT bools!! Use -1 for False, # for True (often an index to check!) -//for this reason must specify ALL victory[]! -victory[0] int -1 //all enemy vehicles and structures need to be killed -victory[1] int -1 //5 //all players vehicles at REGION index # (eg LZ REGION) -victory[2] int -1 //number of objectives to get to (uses objective[0] to objective[#]) -victory[3] int -1 //number of bases to destroy (uses base[0] to base[#]) -//use this to communicate extra victory conditions in another script run beside the generic one -linkVictory BOOL TRUE - -/* Failure Conditions */ -//Extra conditions above ALL player units and structures dead, or TIME LIMIT expired -//Use -1 for False, # for True (often an index to check!) -fail [0] int -1 //group # index all got to REGION -fail [1] int -1 //REGION index for above (these count as one condition!) - -/* Artifacts */ -victoryArt int 0 //number of artifacts required for victory (must be <= numArt) -numArt int 0 //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 "CAM3RESEARCH" //"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 "CAM3RESEARCH" //"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 "CAM3RESEARCH" //"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 "CAM3RESEARCH" //"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 "CAM3RESEARCH" //"R-Wpn-Mortar01Lt" - -artType [5] int 1 //get this from bunker -artVal [5] int 4 -artX [5] int 3136 -artY [5] int 3904 -artComp [5] RESEARCHSTAT "CAM3RESEARCH" //"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 730 // VTOL factory -structures [1] STRUCTURE 251 // Cyborg factory 1 -//structures [2] STRUCTURE 252 // Cyborg factory 2 -structures [3] STRUCTURE 229 // Cyborg factory 3 -structures [4] STRUCTURE 731 // Medium factory - -/* ******************************************** */ -/* DROIDS (by ID number) MAX = 10 */ -//droids [0] DROID 3279 //testdroid - -/* ******************************************** */ -/* list of templates (by name) MAX = 20 */ -/* ******************************************** */ -templates [0] TEMPLATE "NX-M-Con-Hover" //Truck -templates [1] TEMPLATE "NX-M-Missile-A-T-Hover" //tanks -templates [2] TEMPLATE "NX-M-Rail2-Hover" -templates [3] TEMPLATE "NX-M-Missile-A-T-Hover" -templates [4] TEMPLATE "NX-M-Missile-A-T-Hover" -templates [5] TEMPLATE "NX-M-Com-Hover" //commander -//Cyborgs -templates [6] TEMPLATE "NX-Cyb-Rail1-JUMP" -templates [7] TEMPLATE "NX-Cyb-Miss-JUMP" -templates [8] TEMPLATE "NX-Cyb-PulseLas-JUMP" -//VTOLS -templates [9] TEMPLATE "NX-L-Missile-A-T-VTOL" -templates [10] TEMPLATE "NX-L-Rail1-VTOL" - -/* Templates available for this level */ -/* -//Trucks -TEMPLATE "NX-M-Con-Hover" -//Repairs -TEMPLATE "NX-L-Repair-Hover" -//Sensors -TEMPLATE "NX-L-Sens-Hov" -//Commanders -TEMPLATE "NX-M-Com-Hover" //NEW -//Tanks -TEMPLATE "NX-M-Missile-A-T-Hover" -TEMPLATE "NX-M-Rail2-Hover" -TEMPLATE "NX-M-PulseLas-Hover" //NEW 3-1B only -//Cyborgs -TEMPLATE "NX-Cyb-Rail1-JUMP" -TEMPLATE "NX-Cyb-Miss-JUMP" -TEMPLATE "NX-Cyb-PulseLas-JUMP" //NEW -//VTOLS -TEMPLATE "NX-L-Missile-A-T-VTOL" -TEMPLATE "NX-L-Rail1-VTOL" -*/ - -/* ******************************************** */ -//coordinates (world coords) MAX = 10 -/* ******************************************** */ -coordsX [0] int 832 //retreat Point SW -coordsY [0] int 7488 - -coordsX [1] int 4160 //hill patrol way1 -coordsY [1] int 2880 -coordsX [2] int 3648 //Patrol OUTSIDE valley rather than inside!! //6464 //hill patrol way2 and hill retreat -coordsY [2] int 2368 //1600 -coordsX [3] int 4928 //hill patrol way3 (optional) -coordsY [3] int 960 - -coordsX [4] int 4032 //cyborg LZ attackers way1 (missile silo) -coordsY [4] int 6720 -coordsX [5] int 7616 //cyborg & hover attackers way2 (player's LZ) -coordsY [5] int 6976 -coordsX [6] int 4032 //hovers LZ attackers way1 (entrance to hills) -coordsY [6] int 2880 -coordsX [7] int 7000 //hovers (other entrance to hills) -coordsY [7] int 2880 - -coordsX [8] int 1344 //hillgroups retreat -coordsY [8] int 832 - -coordsX [9] int 2112 //defenders way1 -coordsY [9] int 7104 -coordsX [10] int 1088 //defenders way2 -coordsY [10] int 6208 -coordsX [11] int 960 //defenders way3 -coordsY [11] int 7232 - -/* ******************************************** */ -//regions (world coords) MAX = 20 -/* ******************************************** */ -regionsX1 [0] int 192 //enemy base2 blip -regionsY1 [0] int 5568 -regionsX2 [0] int 3136 -regionsY2 [0] int 7872 - -/*reuse -regionsX1 [1] int 2496 //enemy base3 blip (and base3 defenders group 5) -regionsY1 [1] int 5824 -regionsX2 [1] int 4928 -regionsY2 [1] int 8000 -*/ - -regionsX1 [2] int 320 //hill groups trigger region -regionsY1 [2] int 3136 -regionsX2 [2] int 7616 -regionsY2 [2] int 4160 - -/* -regionsX1 [3] int 192 // enemy base 5 blip -regionsY1 [3] int 6080 -regionsX2 [3] int 2496 -regionsY2 [3] int 8000 - -regionsX1 [4] int 320 // enemy base 6 blip -regionsY1 [4] int 4032 -regionsX2 [4] int 2368 -regionsY2 [4] int 5952 -*/ - -regionsX1 [5] int 5312 // valley victory position -regionsY1 [5] int 1344 -regionsX2 [5] int 7360 -regionsY2 [5] int 2368 - -regionsX1 [6] int 2880 //5056 //LZ attacker cyborgs group 0 -regionsY1 [6] int 6592 //5568 -regionsX2 [6] int 3264 //5568 -regionsY2 [6] int 6976 //5952 - -regionsX1 [7] int 3008 //4672 //LZ attacker hovers group 1 -regionsY1 [7] int 4928 //3904 -regionsX2 [7] int 3520 //6592 -regionsY2 [7] int 5696 //4928 - -regionsX1 [8] int 1088 //hill hovers group 2 -regionsY1 [8] int 2368 -regionsX2 [8] int 2368 -regionsY2 [8] int 3264 - -regionsX1 [9] int 5696 //6208 //hill cyborgs group 3 -regionsY1 [9] int 1088 -regionsX2 [9] int 7360 -regionsY2 [9] int 2240 - -regionsX1 [10] int 960 //base defenders group 4 -regionsY1 [10] int 6208 -regionsX2 [10] int 2112 -regionsY2 [10] int 7616 - -regionsX1 [11] int 576 //whole of sw base area -regionsY1 [11] int 3776 -regionsX2 [11] int 4928 -regionsY2 [11] int 8000 - -/* ******************************************** */ -/* sector Stuff */ -/* ******************************************** */ -//sectors to attack (covers 1A-C expansion area, in order of priority to attack) -//MAX = 20 -//Retreat Sector (base) -sectorsX1 [0] int 448 -sectorsY1 [0] int 6208 -sectorsX2 [0] int 2112 -sectorsY2 [0] int 7616 -//East Sector -sectorsX1 [1] int 2496 -sectorsY1 [1] int 5056 -sectorsX2 [1] int 5312 -sectorsY2 [1] int 7616 -//Player's LZ Sector -sectorsX1 [2] int 6080 -sectorsY1 [2] int 6080 -sectorsX2 [2] int 7744 -sectorsY2 [2] int 7616 -//North Sector -sectorsX1 [3] int 576 -sectorsY1 [3] int 4288 -sectorsX2 [3] int 3136 -sectorsY2 [3] int 5952 -/*reuse -//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 1 //MAX = 5. Must be same as number of bases listed next - -basePlayer [0] int 0 //enemy player number who owns base -baseMsg [0] INTMESSAGE "CM31_BASE1" //enemy base blip message (prox.txt) -baseRegion [0] int 0 //index to regions -baseWav1 [0] int 0 -baseWav2 [0] int 3 //index to baseSnd Eradicated - -/* ******************************************** */ -/* Enemy Groups */ -/* ******************************************** */ -numGroups int 5 //group MAX = 10 - -//Cyborg LZ attackers (attack type) -grpType [0] int 3 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... -grpPlayer [0] int 0 //player number (NP) -grpRegion [0] int 6 //index in regions array -grpTimeGo [0] int 1 //10. (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 0 //leadership value -grpRetreatXY [0] int 0 //retreat to bas3 sector -grpPosStart [0] int 1 //index in coords/sectors array (depends on grpType) -grpPosMin [0] int 0 //Minimum index in coords array -grpPosMax [0] int 3 //Maximum index in coords array -grpPosStep [0] int 1 //Step increase for next 'waypoint' -grpPosType [0] int 1 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints -grpFactory [0] int 0 //index factory to reinforce group. -1 = any factory. -grpIdealSize [0] int 6 //ideal size. If less than this factory will reinforce - -//Hover LZ attackers (Scout type) -grpType [1] int 2 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... -grpPlayer [1] int 0 //player number (NP) -grpRegion [1] int 7 //index in regions array -grpTimeGo [1] int 24 //4min 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 0 //leadership value -grpRetreatXY [1] int 0 //retreat (index in coords array) base1 assembly -grpPosStart [1] int 2 //index in sectors array (depends on grpType) -grpPosMin [1] int 0 //Minimum index in coords array -grpPosMax [1] int 3 //Maximum index in coords array -grpPosStep [1] int 1 //Step increase for next 'waypoint' -grpPosType [1] int 2 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints -grpFactory [1] int 2 //index structure to reinforce group. -1 = any factory. -grpIdealSize [1] int 5 //ideal size. If less than this factory will reinforce - -//Hill Hovers -grpType [2] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... -grpPlayer [2] int 0 //player number (NP) -grpRegion [2] int 8 //index in regions array -grpTimeGo [2] int 60 //10min time trigger (always make >= 0 for defence forces) -grpRegionGo [2] int 2 //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 0 //leadership value = 75% -grpRetreatXY [2] int 8 //retreat (index in coords array) base2 assembly -grpPosStart [2] int 3 //index in coords array (depends on grpType) -grpPosMin [2] int 1 //Minimum index in coords array -grpPosMax [2] int 3 //Maximum index in coords array -grpPosStep [2] int 1 //Step increase for next 'waypoint' -grpPosType [2] int 3 //0 = stop, 1 = loop, 2 = pingpong, 3 = random thru waypoints -grpFactory [2] int -1 //index factory to reinforce group. -1 = any factory. -grpIdealSize [2] int 0 //ideal size. If less than this factory will reinforce - -//Hill Cyborgs -grpType [3] int 0 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... -grpPlayer [3] int 0 //player number (NP) -grpRegion [3] int 9 //index in regions array -grpTimeGo [3] int -1 //10s time trigger (always make >= 0 for defence forces) -grpRegionGo [3] int 2 //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 0 //leadership value = 0% -grpRetreatXY [3] int 8 //retreat (index in coords array) base 2 assembly -grpPosStart [3] int 1 //index in coords array (depends on grpType) -grpPosMin [3] int 1 //Minimum index in coords array -grpPosMax [3] int 3 //Maximum index in coords array -grpPosStep [3] int 1 //Step increase for next 'waypoint' -grpPosType [3] int 2 //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 0 //ideal size. If less than this factory will reinforce - - -//Main base defenders -grpType [4] int 1 //0 = Ambush/Patrol, 1 = Defence, 2 = Scout, 3 = Attack... -grpPlayer [4] int 0 //player number (NP) -grpRegion [4] int 10 //index in regions array -grpTimeGo [4] int 30 //5min time trigger (always make >= 0 for defence forces) -grpRegionGo [4] int 11 //region to defend. 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 0 //leadership value = 75% -grpRetreatXY [4] int 0 //retreat (index in coords array) base2 assembly -grpPosStart [4] int 9 //index in coords array (depends on grpType) -grpPosMin [4] int 9 //Minimum index in coords array -grpPosMax [4] int 11 //Maximum index in coords array -grpPosStep [4] int 1 //Step increase for next 'waypoint' -grpPosType [4] int 3 //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 10 //ideal size. If less than this factory will reinforce - - -/* Factories */ -numFactories int 3 //MAX = 10 - -// cyborg factory 1 -factID [0] int 1 //index to structures -factAssXY [0] int -1 //index to assembly point. -1 for don't set -factTimeGo [0] int 30 //5mindelay before starting production in 10s -factRegionGo [0] int -1 //-1 = no region for trigger (assume WhoGo = 0) -factTempMin [0] int 6 //index to starting template -factTempMax [0] int 8 //index to maximum template -factEvery [0] int 42 //7mins .Time in 10s for factory to try to produce again - -// cyborg factory 3 -factID [1] int 3 //index to structures -factAssXY [1] int -1 //index to assembly point. -1 for don't set -factTimeGo [1] int 56 //8mindelay before starting production in 10s -factRegionGo [1] int -1 //-1 = no region for trigger (assume WhoGo = 0) -factTempMin [1] int 6 //index to starting template -factTempMax [1] int 8 //index to maximum template -factEvery [1] int 48 //8mins .Time in 10s for factory to try to produce again - -// medium factory -factID [2] int 4 //index to structures -factAssXY [2] int -1 //index to assembly point. -1 for don't set -factTimeGo [2] int 54 //9min delay before starting production in 10s -factRegionGo [2] int -1 //near or in base -factTempMin [2] int 1 //index to starting template -factTempMax [2] int 2 //index to maximum template -factEvery [2] int 48 //8mins .Time in 10s for factory to try to produce again - -/* '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 -lostSnd SOUND "pcv470.ogg" //mission failed -attackSnd1 SOUND "pcv337.ogg" //Base Under Attack -artSnd1 SOUND "pcv351.ogg" //artifact sounds -artSnd2 SOUND "pcv352.ogg" -transporter TEMPLATE "Transporter" //for enemy transports -LZComp SOUND "pcv445.ogg" -LZClear SOUND "lz-clear.ogg" - -//base WAVs. MAX = 5 -baseSnd[0] SOUND "pcv379.ogg" //Enemy Base Detected -baseSnd[1] SOUND "pcv379.ogg" //Enemy Base Detected -baseSnd[2] SOUND "pcv379.ogg" //Enemy Base Detected -baseSnd[3] SOUND "pcv394.ogg" //Enemy base eradicated -} diff --git a/data/base/script/data/cam3-1s.vlo b/data/base/script/data/cam3-1s.vlo deleted file mode 100644 index dd32492a0fe..00000000000 --- a/data/base/script/data/cam3-1s.vlo +++ /dev/null @@ -1,58 +0,0 @@ -//Generic VLO file template for between levels - -//cam3-1s.vlo - -script "GenBet.slo" -run -{ -/* Next level stuff */ -NextLev LEVEL "SUB_3_1" //Sub map to load - -/* Structure Limits */ -numStrucStats int 6 //MAX 5. Must be same as number of limits given next -strucStat[0] STRUCTURESTAT "A0PowerGenerator" -strucLimit[0] int 4 //5 -strucStat[1] STRUCTURESTAT "A0ResourceExtractor" -strucLimit[1] int 200 -strucStat[2] STRUCTURESTAT "A0ResearchFacility" -strucLimit[2] int 4 //5 -strucStat[3] STRUCTURESTAT "A0LightFactory" -strucLimit[3] int 4 //5 -strucStat[4] STRUCTURESTAT "A0CommandCentre" -strucLimit[4] int 1 -strucStat[5] STRUCTURESTAT "A0ComDroidControl" -strucLimit[5] int 1 - -/* Initialisation */ -centreX int 7360 //starting view centre (in world units) -centreY int 15296 -scrollX1 int 0 //scroll limits (in tile units) -scrollY1 int 61 -scrollX2 int 64 -scrollY2 int 130 -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 56 //57 //coords of LZ in tile units -LZY[0] int 120 //122 -/* Transport exit coords */ -exitX int 25 //63 -exitY int 87 //118 - -/* Briefings */ -numBriefs int 2 //MAX 5. Needs to be same as the number of briefings given next -brief[0] INTMESSAGE "MB3_1A_MSG" -brief[1] INTMESSAGE "MB3_1A_MSG2" -briefVal[0] int 0 //0 remove after playing, 1 keep, 2 don't play immediately -briefVal[1] int 1 //0 remove after playing, 1 keep, 2 don't play immediately -endMsg INTMESSAGE "END" - -/* Time Limit for this and Sub map */ -timeLimit int 42000 // 70 mins //set -1 for no time limit, otherwise time in 1/10s - -/* 'Globals' */ -//These should be same in each file, but may need slight alterations -player int 0 //player's player number -lostSnd SOUND "pcv470.ogg" //mission failed -transporter TEMPLATE "Transporter" -} diff --git a/data/base/script/data/cam3-1x.vlo b/data/base/script/data/cam3-1x.vlo deleted file mode 100644 index 2fcd8aed9fb..00000000000 --- a/data/base/script/data/cam3-1x.vlo +++ /dev/null @@ -1,77 +0,0 @@ -/* - * cam3-1x.vlo - * - */ - - -script "cam3-1x.slo" -run -{ - // human player - player int 0 - - // computer player - enemy[0] int 3 - - // mission targets - numTargets int 4 - //tarStructs[0] STRUCTURE 293 //Uplink - tarStructs[0] STRUCTURE 735 //silo - tarStructs[1] STRUCTURE 686 //silo - tarStructs[2] STRUCTURE 733 //silo - tarStructs[3] STRUCTURE 278 //silo - - // mission target messages -/* - targets[0] INTMESSAGE "CM31_TAR_UPLINK" - targets[0] INTMESSAGE "CM31_TAR_SILO1" - targets[1] INTMESSAGE "CM31_TAR_SILO2" - targets[2] INTMESSAGE "CM31_TAR_SILO3" - targets[3] INTMESSAGE "CM31_TAR_SILO4" -*/ -//only need one - targets INTMESSAGE "CM31_TAR_UPLINK" - - // mission target area - tarX1 int 3200 - tarY1 int 6900 - tarX2 int 3700 - tarY2 int 7300 - - // sub3-1a breifing - so we can remove it when we get to sub3-1b - cam3_1ABrief INTMESSAGE "MB3_1A_MSG2" - // sub3-1b breifing - briefing INTMESSAGE "MB3_1B_MSG" - briefing2 INTMESSAGE "MB3_1B_MSG2" - - // time for the next mission - secondMissionTime INT 15000 - - // sound for the start of the mext bit of mission - missileAbort SOUND "labort.ogg" - - /* 'get to Mountains' victory condition blip and audio */ - hideLocBlip INTMESSAGE "CM31_HIDE_LOC" //Blip for location - -//valley areas -numSafe int 1 -safeX1[0] int 5056 //valley SAFE area -safeY1[0] int 576 -safeX2[0] int 8128 -safeY2[0] int 2752 - -numDead int 2 -deadX1[0] int 64 //valley DEAD area -deadY1[0] int 64 -deadX2[0] int 5055 -deadY2[0] int 8128 - -deadX1[1] int 5055 //valley DEAD area -deadY1[1] int 2753 -deadX2[1] int 8128 -deadY2[1] int 8128 - - - -} - diff --git a/data/base/script/data/count3-1.vlo b/data/base/script/data/count3-1.vlo deleted file mode 100644 index 06c634f64bb..00000000000 --- a/data/base/script/data/count3-1.vlo +++ /dev/null @@ -1,88 +0,0 @@ -/* - * count3-1.vlo - * - * countdown data for sub map 3-1 - * - */ - - -script "countdown.slo" -run -{ -// who to play the sounds for -player INT 0 - -// how many sets of sounds -numSoundSets INT 2 - -// how many stages for the countdown -numStages[0] INT 15 -numStages[1] INT 14 - -// what times to play each sound for the countdown -stageTime[0][14] INT 36000 -stageTime[0][13] INT 30000 -stageTime[0][12] INT 24000 -stageTime[0][11] INT 18000 -stageTime[0][10] INT 12000 -stageTime[0][9] INT 6000 -stageTime[0][8] INT 3100 -stageTime[0][7] INT 3000 -stageTime[0][6] INT 2400 -stageTime[0][5] INT 1800 -stageTime[0][4] INT 1200 -stageTime[0][3] INT 600 -stageTime[0][2] INT 250 -stageTime[0][1] INT 110 -stageTime[0][0] INT 20 - -//stageTime[1][14] INT 850 -stageTime[1][13] INT 35910 -stageTime[1][12] INT 35900 -stageTime[1][11] INT 30000 -stageTime[1][10] INT 24000 -stageTime[1][9] INT 18000 -stageTime[1][8] INT 12000 -stageTime[1][7] INT 6000 -stageTime[1][6] INT 3000 -stageTime[1][5] INT 2400 -stageTime[1][4] INT 1800 -stageTime[1][3] INT 1200 -stageTime[1][2] INT 600 -stageTime[1][1] INT 200 -stageTime[1][0] INT 115 - -// the sounds to play as each time point is reached -stageSound[0][14] SOUND "60min.ogg" -stageSound[0][13] SOUND "50min.ogg" -stageSound[0][12] SOUND "40min.ogg" -stageSound[0][11] SOUND "30min.ogg" -stageSound[0][10] SOUND "20min.ogg" -stageSound[0][9] SOUND "10min.ogg" -stageSound[0][8] SOUND "meflp.ogg" -stageSound[0][7] SOUND "5min.ogg" -stageSound[0][6] SOUND "4min.ogg" -stageSound[0][5] SOUND "3min.ogg" -stageSound[0][4] SOUND "2min.ogg" -stageSound[0][3] SOUND "1min.ogg" -stageSound[0][2] SOUND "flseq.ogg" -stageSound[0][1] SOUND "10to1.ogg" -stageSound[0][0] SOUND "mlaunch.ogg" - -stageSound[1][13] SOUND "wactivat.ogg" -stageSound[1][12] SOUND "det60min.ogg" -stageSound[1][11] SOUND "det50min.ogg" -stageSound[1][10] SOUND "det40min.ogg" -stageSound[1][9] SOUND "det30min.ogg" -stageSound[1][8] SOUND "det20min.ogg" -stageSound[1][7] SOUND "det10min.ogg" -stageSound[1][6] SOUND "det5min.ogg" -stageSound[1][5] SOUND "det4min.ogg" -stageSound[1][4] SOUND "det3min.ogg" -stageSound[1][3] SOUND "det2min.ogg" -stageSound[1][2] SOUND "det1min.ogg" -stageSound[1][1] SOUND "fdetseq.ogg" -stageSound[1][0] SOUND "10to1.ogg" - -} - diff --git a/data/base/script/data/vtols3-1.vlo b/data/base/script/data/vtols3-1.vlo deleted file mode 100644 index c6b71457c96..00000000000 --- a/data/base/script/data/vtols3-1.vlo +++ /dev/null @@ -1,94 +0,0 @@ -//VLO file for VTOLS with factory production - -//VTOL3-1.VLO - -script "VTOLS.slo" -run -{ -// don't add any pads but setup the pad player -padPlayer int 3 -numPads int 0 //MAX = 5 - -// vtol groups - MAX 4 -numGroups int 2 - - -groupX [0] int 192 //place to put VTOLS -groupY [0] int 192 -VTOLsize [0] int 2 //number of droids in group -templates [0] TEMPLATE "NX-L-Missile-A-T-VTOL" -targetObjType [0] int 0 // 0 - droid, 1 - structure -startTime [0] int 30 //5mins (*10secs) -everyTime [0] int 36 //6mins (*10secs) - -groupX [1] int 192 //place to put VTOLS -groupY [1] int 192 -VTOLsize [1] int 3 //number of droids in group -templates [1] TEMPLATE "NX-M-Bomb4-VTOL" -targetObjType [1] int 1 // 0 - droid, 1 - structure -startTime [1] int 45 //7.5mins (*10secs) -everyTime [1] int 54 //9mins (*10secs) - -HQbuilding STRUCTUREID 680 //HQ when destroyed stops VTOLS - -vanishX int 15 -vanishY int 1 - -//preferred targets (max 4 each struc/droid) -numPrefStruc int 4 -prefStruc [0] int 2048 //Sensor -prefStruc [1] int 1024 //RearmPad -prefStruc [2] int 16384 //IDF -prefStruc [3] int 64 //Repair -/* Structure Target preference types and values -ST_HQ = 1, -ST_FACTORY = 2, -ST_POWER_GEN = 4, -ST_RESOURCE_EXTRACTOR = 8, -ST_WALL = 16, -ST_RESEARCH = 32, -ST_REPAIR_FACILITY = 64, -ST_COMMAND_CONTROL = 128, -ST_CYBORG_FACTORY = 256, -ST_VTOL_FACTORY = 512, -ST_REARM_PAD = 1024, -ST_SENSOR = 2048, -ST_DEF_GROUND = 4096, -ST_DEF_AIR = 8192, -ST_DEF_IDF = 16384, -ST_DEF_ALL = 28672, - ground/air/idf structures -*/ - -numPrefDroid int 2 -prefDroid [0] int 2 //sensor -prefDroid [1] int 64 //IDFS -//prefDroid [2] int 2048 //tracks -//prefDroid [3] int 1 //commander - -/* Droid target preference types and values -// turret types -DT_COMMAND = 1, -DT_SENSOR = 2, -DT_CONSTRUCT = 4, -DT_REPAIR = 8, -DT_WEAP_GROUND = 16, -DT_WEAP_AIR = 32, -DT_WEAP_IDF = 64, -DT_WEAP_ALL = 112, - ground/air/idf droids - -// body types -DT_LIGHT = 128, -DT_MEDIUM = 256, -DT_HEAVY = 512, -DT_SUPER_HEAVY = 1024, - transporter only - -// propulsion -DT_TRACK = 2048, -DT_HTRACK = 4096, -DT_WHEEL = 8192, -DT_LEGS = 16384, -DT_GROUND = 30720, -DT_VTOL = 32768, -DT_HOVER = 65536, - any ground propulsion -*/ -} \ No newline at end of file diff --git a/data/base/script/text/cam3-1x.slo b/data/base/script/text/cam3-1x.slo deleted file mode 100644 index e3ef7a992f0..00000000000 --- a/data/base/script/text/cam3-1x.slo +++ /dev/null @@ -1,165 +0,0 @@ -/* - * cam3-1x.slo - * - * Extra scripting for level 3-1 - * - */ - -// general use variables -private INT count; -private BOOL flag; - -// the player side -public INT player; - -// the computer sides -public INT enemy[2]; - -// the specific mission target buildings -public INT numTargets; -public STRUCTURE tarStructs[5]; -public INTMESSAGE targets; -private BOOL tarGone[5]; -private BOOL msgAdded; - -// the target area -public INT tarX1,tarY1,tarX2,tarY2; - -// the briefing from the first part of the mission -public INTMESSAGE cam3_1ABrief; -// the briefing message once the silos are dead -public INTMESSAGE briefing, briefing2; -//the proximity message for the hide location -public INTMESSAGE hideLocBlip; - -// the time for the next mission -public INT secondMissionTime; - -// the wav to play for the second bit of the mission -public SOUND missileAbort; - -private DROID droid; -private STRUCTURE struct; - -//valley areas -public int numSafe, safeX1[2], safeY1[2], safeX2[2], safeY2[2]; -public int numDead, deadX1[2], deadY1[2], deadX2[2], deadY2[2]; -private int temp; -private GROUP deadGroup; - -// pause before playing the 1B breifing -trigger briefPause(wait, 30); -trigger vidTrig(CALL_VIDEO_QUIT); -trigger nukeTrig((missionTimeRemaining() <= 50), 5); -trigger checkValleyTrig(every, 55); - -event checkValley; -event nuke; - -event start(CALL_GAMEINIT) -{ - setScrollParams(0, 32, 64, 64); - // add the blip over the uplink sensor - addMessage(targets, PROX_MSG, player, false); - tarGone[0] = FALSE; - msgAdded = FALSE; - //we don't want the coded countdown - setPlayCountDown(FALSE); -} - -event playBrief2(inactive) -{ - removeMessage(cam3_1ABrief, MISS_MSG, player); //remove cam3-1A message - removeMessage(briefing, MISS_MSG, player); //remove earlier bit - addMessage(briefing2, MISS_MSG, player, TRUE); //summary to keep - pause(20); - setMissionTime(secondMissionTime); - setEventTrigger(playBrief2, inactive); -} - -// play the mission breifing for 1B -event playBriefing(inactive) -{ - setEventTrigger(playBrief2, vidTrig); - addMessage(briefing, MISS_MSG, player, TRUE); - // set the reinforcement time to -1 so that the timer widget disappears - setReinforcementTime(-1); - // set up the proximity message for the hideaway location - addMessage(hideLocBlip, PROX_MSG, player, false); - setScrollParams(0, 0, 64, 64); - //allow valley checks - setEventTrigger(checkValley, checkValleyTrig); - setEventTrigger(nuke, nukeTrig); -} - -// check to see if all the missile silos are dead -event silosDead(every, 21) -{ - count = 0; - flag = TRUE; - while (count < numTargets) - { - if (tarStructs[count] != NULLOBJECT) - { - flag = FALSE; - } - count = count + 1; - } - - if (flag) - { - removeMessage(targets, PROX_MSG, player); - //extraVictoryFlag = TRUE; - playSound(missileAbort, player); - setMissionTime(-1); - setEventTrigger(silosDead, inactive); - setEventTrigger(playBriefing, briefPause); - } -} - -event checkValley(inactive) -{ - //check to see if all players forces in valley for winning - temp = 0; - count = 0; - while (count < numSafe) - { - temp = temp + numDroidsInArea(player, safeX1[count], safeY1[count], safeX2[count],safeY2[count]); - count = count + 1; - } - if ((temp == getDroidCount(player)) and (getDroidCount(player) > 0)) //all units safe - { - //flag won - extraVictoryFlag = TRUE; - setEventTrigger(checkValley, inactive); - } -} - -event nuke(inactive) -{ - //kill off all player units outside of the valley when time almost up - //check to see if any in valley first and set "extraVictoryFlag = TRUE" first - //then wait short time before killing them all off - count = 0; - temp = 0; - while (count < numSafe) - { - temp = temp + numDroidsInArea(player, safeX1[count], safeY1[count], safeX2[count],safeY2[count]); - count = count + 1; - } - - if (temp > 0) //some units safe - { - //flag won - extraVictoryFlag = TRUE; - pause(35); - count = 0; - while (count < numDead) - { - killDroidsInArea(deadX1[count], deadY1[count], deadX2[count], deadY2[count], player); - //killDroidsInArea(deadX1[count], deadY1[count], deadX2[count], deadY2[count], enemy); - count = count + 1; - } - setEventTrigger(nuke, inactive); //oneshot - } -} diff --git a/data/base/wrf/cam3/sub3-1.wrf b/data/base/wrf/cam3/sub3-1.wrf index 16b18408f4f..5ab6efc6b63 100644 --- a/data/base/wrf/cam3/sub3-1.wrf +++ b/data/base/wrf/cam3/sub3-1.wrf @@ -4,7 +4,7 @@ */ -/* Aditional audio for the level */ +/* Additional audio for the level */ directory "audio/countdown" file WAV "60min.ogg" file WAV "50min.ogg" @@ -44,21 +44,13 @@ file SMSG "prox3-1.txt" /* Directory for uncompiled script files */ directory "script/text" -file SCRIPT "setdisk.slo" -file SCRIPT "genexp.slo" -file SCRIPT "cam3-1x.slo" -file SCRIPT "vtols.slo" file SCRIPT "cam3daynight.slo" -file SCRIPT "countdown.slo" /* Directory for script value files*/ directory "script/data" -file SCRIPTVAL "cam3-1.vlo" -file SCRIPTVAL "cam3-1x.vlo" -file SCRIPTVAL "vtols3-1.vlo" -file SCRIPTVAL "count3-1.vlo" -file SCRIPTVAL "disk2.vlo" file SCRIPTVAL "cam3mkday.vlo" -directory "script" -file JAVASCRIPT "rules.js" +directory "script" +file JAVASCRIPT "rules.js" +directory "script/campaign" +file JAVASCRIPT "cam3-1.js" diff --git a/data/base/wrf/cam3/sub3-1/labels.json b/data/base/wrf/cam3/sub3-1/labels.json new file mode 100644 index 00000000000..0194663b7a9 --- /dev/null +++ b/data/base/wrf/cam3/sub3-1/labels.json @@ -0,0 +1,43 @@ +{ + "position_0": { "label": "startPosition", "pos": [ 7616, 7360 ] }, + "position_1": { "label": "transporterEntry", "pos": [ 7040, 8064 ] }, + "position_2": { "label": "transporterExit", "pos": [ 8064, 7680 ] }, + "position_3": { "label": "vtolAppearPos", "pos": [ 192, 192 ] }, + "position_4": { "label": "vtolRemovePos", "pos": [ 1920, 128 ] }, + "position_5": { "label": "healthRetreatPos", "pos": [ 832, 6720 ] }, + "position_6": { "label": "playerLZ", "pos": [ 7296, 7296 ] }, + "position_7": { "label": "swRetreat", "pos": [ 832, 7488 ] }, + "position_8": { "label": "hillPos1", "pos": [ 4160, 2880 ] }, + "position_9": { "label": "hillPos2", "pos": [ 3648, 2368 ] }, + "position_10": { "label": "hillPos3", "pos": [ 4928, 960 ] }, + "position_11": { "label": "hillCybPos1", "pos": [ 4032, 6720 ] }, + "position_12": { "label": "hillLzPos", "pos": [ 7616, 6976 ] }, + "position_13": { "label": "hillLzHover", "pos": [ 4032, 2880 ] }, + "position_14": { "label": "hillLzHover2", "pos": [ 7000, 2880 ] }, + "position_15": { "label": "hillRetreat", "pos": [ 1344, 832 ] }, + "position_16": { "label": "defenderPos1", "pos": [ 2112, 7104 ] }, + "position_17": { "label": "defenderPos2", "pos": [ 1088, 6208 ] }, + "position_18": { "label": "defenderPos3", "pos": [ 960, 7232 ] }, + + "area_0": { "label": "landingZone", "pos1": [ 7296, 7040 ], "pos2": [ 7552, 7424 ] }, + "area_1": { "label": "RTLZ", "pos1": [ 6800, 6800 ], "pos2": [ 7900, 7900 ] }, + "area_2": { "label": "valleySafeZone", "pos1": [ 4480, 128 ], "pos2": [ 7936, 2560 ] }, + "area_3": { "label": "baseCleanupArea", "pos1": [ 192, 5568 ], "pos2": [ 3136, 7872 ] }, + "area_4": { "label": "hillTriggerZone", "subscriber": 0, "pos1": [ 320, 3136 ], "pos2": [ 7616, 4160 ] }, + "area_5": { "label": "lzAttackCyborgs", "pos1": [ 2880, 6592 ], "pos2": [ 3264, 6976 ] }, + "area_6": { "label": "lzAttackHovers", "pos1": [ 3008, 4928 ], "pos2": [ 3520, 5696 ] }, + "area_7": { "label": "hillGroupHovers", "pos1": [ 1088, 2368 ], "pos2": [ 2368, 3264 ] }, + "area_8": { "label": "hillGroupCyborgs", "pos1": [ 5696, 1088 ], "pos2": [ 7360, 2240 ] }, + "area_9": { "label": "baseDefenderGroup", "pos1": [ 960, 6208 ], "pos2": [ 2112, 7616 ] }, + + "object_0": { "label": "NXCommandCenter", "id": 680, "player": 3, "type": 1 }, + "object_1": { "label": "NXMissileSilo1", "id": 735, "player": 3, "type": 1 }, + "object_2": { "label": "NXMissileSilo2", "id": 686, "player": 3, "type": 1 }, + "object_3": { "label": "NXMissileSilo3", "id": 733, "player": 3, "type": 1 }, + "object_4": { "label": "NXMissileSilo4", "id": 278, "player": 3, "type": 1 }, + "object_5": { "label": "NXCybFac1", "id": 251, "player": 3, "type": 1 }, + "object_6": { "label": "NXCybFac2", "id": 229, "player": 3, "type": 1 }, + "object_7": { "label": "NXMediumFac", "id": 731, "player": 3, "type": 1 }, + + "radius_0": { "label": "vtolRemoveZone", "subscriber": 3, "pos" : [ 1920, 128 ], "radius": 250 } +} diff --git a/data/base/wrf/cam3/sub3-1s.wrf b/data/base/wrf/cam3/sub3-1s.wrf index 4eb21c435bb..b3e59c30e75 100644 --- a/data/base/wrf/cam3/sub3-1s.wrf +++ b/data/base/wrf/cam3/sub3-1s.wrf @@ -10,15 +10,13 @@ file SMSG "prox3-1.txt" /* Directory for uncompiled script files */ directory "script/text" -file SCRIPT "setdisk.slo" -file SCRIPT "genbet.slo" file SCRIPT "cam3daynight.slo" /* Directory for script value files*/ directory "script/data" -file SCRIPTVAL "cam3-1s.vlo" -file SCRIPTVAL "disk2.vlo" file SCRIPTVAL "cam3night.vlo" -directory "script" -file JAVASCRIPT "rules.js" +directory "script" +file JAVASCRIPT "rules.js" +directory "script/campaign" +file JAVASCRIPT "cam3-1s.js"