161 lines
4.3 KiB
Plaintext
161 lines
4.3 KiB
Plaintext
|
//SLO file for changing colour of player units on map,
|
||
|
//so can be found later on Cam3-2
|
||
|
|
||
|
//cam3-2X.SLO
|
||
|
|
||
|
/* ******************** */
|
||
|
/* Declared Variables */
|
||
|
/* ******************** */
|
||
|
|
||
|
public int curPlayer, player, enemy;
|
||
|
public int RegionsX1[2], RegionsY1[2], RegionsX2[2], RegionsY2[2];
|
||
|
public INTMESSAGE MissionBrief1, MissionBrief2;
|
||
|
public SOUND incomingSnd, badSnd;
|
||
|
public INT ReinforceTime, numDroids, power;
|
||
|
public TEXTSTRING reinf_msg;
|
||
|
public DROID droids[13];
|
||
|
|
||
|
private int count, newColour, oldColour, temp;
|
||
|
private DROID objectDroid, viewerDroid;
|
||
|
private GROUP teamAlpha;
|
||
|
|
||
|
trigger brief2Trig(wait, 30); //delay between "incoming.." and brief.
|
||
|
trigger alphaDeadTrig(every, 55);
|
||
|
trigger clearMessageTrig(wait, 100); //10 second delay
|
||
|
|
||
|
event alphaDead;
|
||
|
event start(CALL_GAMEINIT)
|
||
|
{
|
||
|
createAlliance(player, curPlayer);
|
||
|
createAlliance(enemy, curPlayer); //to stop them from getting killed to quickly!
|
||
|
newColour = getPlayerColour(player);
|
||
|
|
||
|
//store the old colour so we can reset it later
|
||
|
oldColour = getPlayerColour(curPlayer);
|
||
|
|
||
|
setPlayerColour(newColour, curPlayer); //make curPlayer units player colour
|
||
|
//group team alpha units (player 1) so can fail if all dead
|
||
|
//groupAddArea(teamAlpha, curPlayer, RegionsX1[0], RegionsY1[0], RegionsX2[0], RegionsY2[0]);
|
||
|
//make these experienced
|
||
|
count = 0;
|
||
|
while (count < numDroids)
|
||
|
{
|
||
|
//make sure don't chase Nexus!!!
|
||
|
setDroidSecondary(droids[count], DSO_HALTTYPE, DSS_HALT_GUARD);
|
||
|
if ((droids[count].droidType == DROID_WEAPON) or (droids[count].droidType == DROID_CYBORG)) //set experience
|
||
|
{
|
||
|
setDroidKills(droids[count], random(16) + 31); //experience range 31 to 46
|
||
|
}
|
||
|
count = count + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event givePower(wait, 10)
|
||
|
{
|
||
|
setPowerLevel(power, curPlayer);
|
||
|
}
|
||
|
|
||
|
//has player found these units?
|
||
|
event seen(inactive)
|
||
|
{
|
||
|
//give player briefing
|
||
|
addMessage(MissionBrief2, MISS_MSG, 0, true);
|
||
|
//this needs to change so that the units are taken over by ID!!!!!
|
||
|
//takeOverDroidsInArea(curPlayer, player, RegionsX1[count], RegionsY1[count], RegionsX2[count], RegionsY2[count]);
|
||
|
//structures should be OK
|
||
|
count = 0;
|
||
|
while (count < numDroids)
|
||
|
{
|
||
|
if (droids[count] != NULLOBJECT)
|
||
|
{
|
||
|
droids[count] = takeOverSingleDroid(droids[count], player); //keep track of ID
|
||
|
|
||
|
//just in case out of memory, don't bother with losing
|
||
|
if (droids[count] == NULLOBJECT)
|
||
|
{
|
||
|
setEventTrigger(alphaDead, inactive);
|
||
|
}
|
||
|
}
|
||
|
count = count + 1;
|
||
|
}
|
||
|
takeOverStructsInArea(curPlayer, player, RegionsX1[0], RegionsY1[0], RegionsX2[0], RegionsY2[0]);
|
||
|
extraVictoryFlag = TRUE;
|
||
|
|
||
|
//reset the player's colour
|
||
|
setPlayerColour(oldColour, curPlayer);
|
||
|
|
||
|
//stop player from failing now they've been rescued!
|
||
|
//setEventTrigger(alphaDead, inactive);
|
||
|
setEventTrigger(seen, inactive);
|
||
|
}
|
||
|
|
||
|
//has player found these units?
|
||
|
event seen2(CALL_DROID_SEEN, player, ref objectDroid, ref viewerDroid)
|
||
|
{
|
||
|
if (objectDroid.player == curPlayer)
|
||
|
{
|
||
|
playSound(incomingSnd, player);
|
||
|
setEventTrigger(seen, brief2Trig);
|
||
|
setEventTrigger(seen2, inactive);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event clearMessage(inactive)
|
||
|
{
|
||
|
flushConsoleMessages();
|
||
|
setEventTrigger(clearMessage, inactive);
|
||
|
}
|
||
|
|
||
|
event brief2(inactive)
|
||
|
{
|
||
|
//give player warning about VTOL attacks
|
||
|
addMessage(MissionBrief1, MISS_MSG, 0, true);
|
||
|
|
||
|
//break enemy alliance with team alpha units (player 1)
|
||
|
breakAlliance(enemy, curPlayer);
|
||
|
|
||
|
//allow reinforcements + console message (need audio too!)
|
||
|
setReinforcementTime(ReinforceTime);
|
||
|
showConsoleText(reinf_msg, player);
|
||
|
setEventTrigger(clearMessage, clearMessageTrig);
|
||
|
|
||
|
//allow checks for team alpha dead
|
||
|
setEventTrigger(alphaDead, alphaDeadTrig);
|
||
|
|
||
|
setEventTrigger(brief2, inactive);
|
||
|
}
|
||
|
|
||
|
//trigger brief about VTOLS when player gets to South region
|
||
|
event brief1(numDroidsInArea(player, RegionsX1[1], RegionsY1[1], RegionsX2[1], RegionsY2[1]) > 0, 27)
|
||
|
{
|
||
|
//warn player of incoming MissionBrief1
|
||
|
playSound(incomingSnd, player);
|
||
|
setEventTrigger(brief2, brief2Trig);
|
||
|
setEventTrigger(brief1, inactive);
|
||
|
}
|
||
|
|
||
|
event alphaDead(inactive)
|
||
|
{
|
||
|
//check to see if team alpha still alive (otherwise lose!)
|
||
|
count = 0;
|
||
|
temp = 0;
|
||
|
while (count < numDroids)
|
||
|
{
|
||
|
if (droids[count] == NULLOBJECT)
|
||
|
{
|
||
|
temp = temp + 1;
|
||
|
}
|
||
|
count = count + 1;
|
||
|
}
|
||
|
//are all Team Alpha dead?
|
||
|
if (temp == numDroids)
|
||
|
{
|
||
|
playSound(badSnd, player);
|
||
|
pause(20);
|
||
|
//reset the player's colour
|
||
|
setPlayerColour(oldColour, curPlayer);
|
||
|
setEventTrigger(alphaDead, inactive);
|
||
|
extraFailFlag = TRUE;
|
||
|
}
|
||
|
}
|