warzone2100/data/script/text/cam3cx.slo

150 lines
4.0 KiB
Plaintext

//SLO file for changing colour of player units on map,
//for Gamma Base on Cam3C
//cam3CX.SLO
/* ******************** */
/* Declared Variables */
/* ******************** */
public int curPlayer, player, enemy, powerBoost;
public SOUND powTransSnd, rescuedSnd;
public int numRegions, RegionsX1[2], RegionsY1[2], RegionsX2[2], RegionsY2[2];
//public INTMESSAGE MissionBrief;
public SOUND incomingSnd;
public int limboX1, limboY1, limboX2, limboY2;
/* Structure Limits */
public int numStrucStats1, numStrucStats2, strucLimit[11];
public STRUCTURESTAT strucStat[11];
//starting Tech
public int numTechs, numDroids, timeLimit;
public RESEARCHSTAT startTech[10];
public DROID droids[6];
private int count, newColour, temp, oldColour;
private DROID objectDroid, viewerDroid;
private BASEOBJ objectObj, viewerObj;
trigger brief2Trig(wait, 30); //delay between "incoming.." and brief.
trigger clearMessageTrig(wait, 100); //10 second delay
event betaDead;
event start(CALL_GAMEINIT)
{
//set structure limits
count = 0;
while (count < numStrucStats1)
{
setStructureLimits (strucStat[count], strucLimit[count], player);
enableStructure(strucStat[count], player);
count = count + 1;
}
//don't let player see his base on 3A!!!
setScrollParams(0, 137, 64, 192); //(0, 140, 64, 192);
//set position for limbo units for this map
setLimboLanding(limboX1, limboY1, limboX2, limboY2);
createAlliance(player, curPlayer);
newColour = getPlayerColour(player);
//store the old colour so we can reset it later
oldColour = getPlayerColour(curPlayer);
setPlayerColour(newColour, curPlayer); //make curPlayer units player colour
//give gamma base starting tech
count = 0;
while (count < numTechs)
{
completeResearch(startTech[count], curPlayer);
count = count + 1;
}
}
//has player found gamma base (after briefing)
event seen(inactive)
{
setEventTrigger(betaDead, inactive);
//give player briefing
//don't use briefing anymore!!!
//addMessage(MissionBrief, MISS_MSG, 0, true);
playSound(rescuedSnd, player);
count = 0;
while (count < numRegions)
{
takeOverDroidsInArea(curPlayer, player, RegionsX1[count], RegionsY1[count], RegionsX2[count], RegionsY2[count]);
takeOverStructsInArea(curPlayer, player, RegionsX1[count], RegionsY1[count], RegionsX2[count], RegionsY2[count]);
count = count + 1;
}
extraVictoryFlag = TRUE;
resetLimboMission(); //allow access to base
setScrollParams(0, 0, 64, 192); //allow full map access
//set radar zoom level
setRadarZoom(0);
//set timelimit
setMissionTime(timeLimit);
//reset structure limits
count = 0;
while (count < numStrucStats1)
{
setStructureLimits (strucStat[count], 200, player);
enableStructure(strucStat[count], player);
count = count + 1;
}
while (count < numStrucStats1 + numStrucStats2)
{
setStructureLimits (strucStat[count], strucLimit[count], player);
enableStructure(strucStat[count], player);
count = count + 1;
}
//reset the player's colour
setPlayerColour(oldColour, curPlayer);
addPower(powerBoost, player);
playSound(powTransSnd, player);
//stop player from failing now they've reached Gamma Base!
setEventTrigger(seen, inactive);
}
//has player found gamma base?
//needs to be object seen
//CALL_OBJ_SEEN, INT player, ref BASEOBJ object, ref BASEOBJ viewer
//event seen2(CALL_DROID_SEEN, player, ref objectDroid, ref viewerDroid)
event seen2(CALL_OBJ_SEEN, player, ref objectObj, ref viewerObj)
{
if (objectObj.player == curPlayer)
{
playSound(incomingSnd, player);
setEventTrigger(seen, brief2Trig);
setEventTrigger(seen2, inactive);
}
}
event betaDead(every, 10) //45)
{
//check to see if team beta (limbo units) still alive (otherwise lose!)
temp = 0;
count = 0;
//get count of team gamma units
while (count < numDroids)
{
if (droids[count] != NULLOBJECT)
{
temp = temp + 1;
}
count = count + 1;
}
if (temp >= getDroidCount(player)) //only gamma units alive => limbo units all dead!!
{
extraFailFlag = TRUE;
//reset the player's colour
setPlayerColour(oldColour, curPlayer);
setEventTrigger(betaDead, inactive);
}
}