150 lines
4.0 KiB
Plaintext
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);
|
|
}
|
|
}
|