/* * cam3bx.slo * */ // the human player public INT player, power; // the two computer players public INT enemy[2]; // the player and nexus colour private INT playerColour, nexusColour,oldColour; // gamma base areas public INT regionsX1[2],regionsY1[2], regionsX2[2],regionsY2[2]; //trip regions for springing (NEXUS LZs) public INT X1[2], X2[2], Y1[2], Y2[2]; // number of player droids to get into the gamma base public INT droidsInBase; // the message when gamma base changes player public INTMESSAGE gammaMessage; public SOUND incomingSnd; public SOUND powTransSnd; public INT secondMissionTime; private INT count1, count2; private INT gammaStrucTot, gammaStrucNow, gammaDroidTot, nexusStrucTot, nexusStrucNow; trigger killWait(CALL_VIDEO_QUIT); trigger nowTrig(wait, 0); //trigger trapTimedTrig(wait, 6000); //10min delay after player has seen gamma base for auto trigger trigger trapTimedTrig(every, 25); //check for gamma base losing trigger trapLZTrig((droidInArea(player, X1[0], Y1[0], X2[0], Y2[0])) or (droidInArea(player, X1[0], Y1[0], X2[0], Y2[0])), 20); event changeGammaBase; event trapSprung; event trapTimed; event start(CALL_GAMEINIT) { // set the gamma base to the player colour playerColour = getPlayerColour(player); //store the old colour so we can reset it later oldColour = getPlayerColour(enemy[1]); //get the enemy colour nexusColour = getPlayerColour(enemy[0]); setPlayerColour(playerColour, enemy[1]); //setup alliances done in generic script!! //createAlliance(enemy[0], enemy[1]); //Nexus and Gamma //createAlliance(player, enemy[1]); //player and Gamma //store total structures for gamma base gammaStrucTot = numStructsInArea(enemy[1], regionsX1[1], regionsY1[1], regionsX2[1], regionsY2[1]); gammaDroidTot = getDroidCount(enemy[1]); nexusStrucTot = numStructsInArea(enemy[0], X1[1], Y1[1], X2[1], Y2[1]) + numStructsInArea(enemy[0], X1[0], Y1[0], X2[0], Y2[0]); setEventTrigger(start, inactive); } event powStuff(wait, 5) { //Increase player's power (has to be done outside of GameInit, for savegame reasons!) addPower(power, player); playSound(powTransSnd, player); } // remove briefing event killMessage(inactive) { //removeMessage(gammaMessage, MISS_MSG, player); setEventTrigger(killMessage, inactive); } event makeFight(seenStructInArea(player, enemy[1], FALSE, regionsX1[1], regionsY1[1], regionsX2[1], regionsY2[1]), 5) { //regions[1] is whole gamma base area //regions[0] is inside gamma base area //break alliance between Nexus and Gamma base when player sees Gamma base breakAlliance(enemy[0], enemy[1]); //setEventTrigger(trapTimed, trapTimedTrig); //only allow fight for set period before springing trap setEventTrigger(makeFight, inactive); } event trapTimed(trapTimedTrig) { //only allow fight for set period before springing trap //changed to Gamma player losing 2 structures or 2 vehicles gammaStrucNow = numStructsInArea(enemy[1], regionsX1[1], regionsY1[1], regionsX2[1], regionsY2[1]); nexusStrucNow = numStructsInArea(enemy[0], X1[1], Y1[1], X2[1], Y2[1]) + numStructsInArea(enemy[0], X1[0], Y1[0], X2[0], Y2[0]); if ((gammaStrucNow < gammaStrucTot - 1) or (getDroidCount(enemy[1]) < gammaDroidTot - 1) or (nexusStrucNow < nexusStrucTot)) { setEventTrigger(trapSprung, inactive); setEventTrigger(trapTimed, inactive); setEventTrigger(changeGammaBase, nowTrig); //immediate } } event trapSprung(CALL_ELECTRONIC_TAKEOVER) { //trigger trap earlier if taken over by a tower setEventTrigger(trapSprung, inactive); setEventTrigger(trapTimed, inactive); setEventTrigger(changeGammaBase, nowTrig); //immediate } event changeGammaBase(numDroidsInArea(player, regionsX1[0],regionsY1[0], regionsX2[0],regionsY2[0]) > 0, 19) { /* //John's old version //NB this keeps gamma as player 1, just changes colour to Nexus black //NB these regions have changed since count1 = numDroidsInArea(player, regionsX1[0],regionsY1[0], regionsX2[0],regionsY2[0]); count2 = numDroidsInArea(player, regionsX1[1],regionsY1[1], regionsX2[1],regionsY2[1]); count2 = count2 - count1; if ( (count1 > droidsInBase) or (count2 == 0) ) { setPlayerColour(nexusColour, enemy[1]); breakAlliance(player, enemy[1]); createAlliance(enemy[0], enemy[1]); addMessage(gammaMessage, MISS_MSG, player, TRUE); setEventTrigger(changeGammaBase, inactive); setEventTrigger(killMessage, killWait); } */ //changed from John's version (by Kev) Just needs droidsInBase in gamma base (could be 1) //NB this keeps gamma as player 1, just changes colour to Nexus black setEventTrigger(trapSprung, inactive); setEventTrigger(trapTimed, inactive); setEventTrigger(makeFight, inactive); //need incoming transmission here! playSound(incomingSnd, player); pause(20); setEventTrigger(killMessage, killWait); addMessage(gammaMessage, MISS_MSG, player, TRUE); pause(10); setMissionTime(secondMissionTime); setPlayerColour(nexusColour, enemy[1]); breakAlliance(player, enemy[1]); createAlliance(enemy[0], enemy[1]); setEventTrigger(changeGammaBase, inactive); } //no way of knowing when to set enemy[0]'s colour back to the old value for the end of this mission //it may be a problem for future missions... //hopefully don't want any other colour than player's?? //might want to switch all Gamma stuff over to Nexus to fix this!!