warzone2100/data/script/text/cam3-2x.slo

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;
}
}