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