995 lines
29 KiB
Plaintext
995 lines
29 KiB
Plaintext
|
// cam1A-C script
|
||
|
|
||
|
/* General Values */
|
||
|
public int player;
|
||
|
public int enemy1;
|
||
|
public int enemy2;
|
||
|
public int pow1, pow2;
|
||
|
private int numart;
|
||
|
|
||
|
/* structure limit stuff */
|
||
|
public STRUCTURESTAT factory, research, oilDerrick, powerGen;
|
||
|
//public STRUCTURESTAT powerModuleHack;
|
||
|
public STRUCTURESTAT command, comRelay;
|
||
|
public INT numPow, numExt, numFac, numRes;
|
||
|
|
||
|
/* Briefing stuff */
|
||
|
public INTMESSAGE MissionBrief, MissionBrief2;
|
||
|
public INTMESSAGE endMsg; //, winMsg;
|
||
|
|
||
|
public TEMPLATE transporter; //required for enemy transports landing
|
||
|
private DROID transportDroid, loadDroid;
|
||
|
private BOOL transOnMap;
|
||
|
|
||
|
/* Win or lose */
|
||
|
public SOUND lostSnd;
|
||
|
public LEVEL NextLev;
|
||
|
public INT timeLimit;
|
||
|
|
||
|
//public INTMESSAGE obj1;
|
||
|
|
||
|
/* Base Under Attack Stuff */
|
||
|
private STRUCTURE hitStruc;
|
||
|
private BASEOBJ attackerObj;
|
||
|
private int t;
|
||
|
public SOUND attackSnd1;
|
||
|
|
||
|
/* player Bonus Research topics given at end of mission */
|
||
|
public int numResP0;
|
||
|
public RESEARCHSTAT resP0[20]; //need to be declared with value >= numResP0, numResP1, etc.
|
||
|
private INT count;
|
||
|
|
||
|
/* Reinforcement Lists for New Paradigm */
|
||
|
public INT numLZ;
|
||
|
public INT enemyLZX[5], enemyLZY[5];
|
||
|
public INTMESSAGE enemyLZM[5];
|
||
|
public SOUND warnSnd;
|
||
|
private INT reinforceType, reinforceCount, sortieTot, sortieCount, temp1, LZ, LZMess, numTries;
|
||
|
private TEMPLATE reinforceTemplate;
|
||
|
private GROUP transTemp, NPgroup[15]; //needs to be (numLZ * numTargets) for array
|
||
|
private DROID newDroid;
|
||
|
|
||
|
/* ground troops reinforcement lists */
|
||
|
public INT numReinf, reinfNum[3], n1, n2, m1, m2;
|
||
|
public TEMPLATE reinfTemp[3];
|
||
|
public INT reinfPosX1, reinfPosY1, reinfPosX2, reinfPosY2;
|
||
|
private GROUP reinfGroup[2];
|
||
|
|
||
|
//templates
|
||
|
/* Enemy Tactics */
|
||
|
public TEMPLATE template2[13], template3[3];
|
||
|
|
||
|
/* Map Targets/Waypoints for New Paradigm */
|
||
|
public INT numTargets, targetX[15], targetY[15]; //need (numLZ * numTargets) for array
|
||
|
private INT n, targetXoff[15], targetYoff[15]; //for checking near target
|
||
|
private INT targetChoice, targetType, temp;
|
||
|
|
||
|
/* Starting Technology */
|
||
|
public int numtecE2;
|
||
|
public RESEARCHSTAT tecE2[20];
|
||
|
|
||
|
/* Triggers: Win or Lose */
|
||
|
trigger winLoseTrig(every, 5);
|
||
|
trigger winLoseTrig2((numStructsInArea(player, 7360, 5696, 10688, 8640) >= 3), 10);
|
||
|
trigger gameLostTrig(every, 20);
|
||
|
|
||
|
/* Reinforcement triggers */
|
||
|
trigger NPTransTrig(every, 100); //every 10 secs
|
||
|
trigger NPTransTrig2(every, 20); //every 2 seconds for retries
|
||
|
trigger NPTransTrig3(every, 450); //every 45 secs
|
||
|
|
||
|
//trigger obj1Trig(structInArea(player, 7360, 5696, 10688, 8640), 20);
|
||
|
|
||
|
trigger checkSector1Trig((numObjectsInArea(player, enemyLZX[0] - 1280, enemyLZY[0] - 1280, enemyLZX[0] + 1280, enemyLZY[0] + 1280) > 0), 300);
|
||
|
trigger checkSector2Trig((numObjectsInArea(player, enemyLZX[1] - 1280, enemyLZY[1] - 1280, enemyLZX[1] + 1280, enemyLZY[1] + 1280) > 0), 300);
|
||
|
trigger checkSector3Trig((numObjectsInArea(player, enemyLZX[2] - 1280, enemyLZY[2] - 1280, enemyLZX[2] + 1280, enemyLZY[2] + 1280) > 0), 300);
|
||
|
trigger checkSector4Trig((numObjectsInArea(player, enemyLZX[3] - 1280, enemyLZY[3] - 1280, enemyLZX[3] + 1280, enemyLZY[3] + 1280) > 0), 300);
|
||
|
trigger checkSector5Trig((numObjectsInArea(player, enemyLZX[4] - 1280, enemyLZY[4] - 1280, enemyLZX[4] + 1280, enemyLZY[4] + 1280) > 0), 300);
|
||
|
|
||
|
trigger clearedSector1Trig((numObjectsInArea(player, enemyLZX[0] - 1280, enemyLZY[0] - 1280, enemyLZX[0] + 1280, enemyLZY[0] + 1280) == 0), 100);
|
||
|
trigger clearedSector2Trig((numObjectsInArea(player, enemyLZX[1] - 1280, enemyLZY[1] - 1280, enemyLZX[1] + 1280, enemyLZY[1] + 1280) == 0), 100);
|
||
|
trigger clearedSector3Trig((numObjectsInArea(player, enemyLZX[2] - 1280, enemyLZY[2] - 1280, enemyLZX[2] + 1280, enemyLZY[2] + 1280) == 0), 100);
|
||
|
trigger clearedSector4Trig((numObjectsInArea(player, enemyLZX[3] - 1280, enemyLZY[3] - 1280, enemyLZX[3] + 1280, enemyLZY[3] + 1280) == 0), 100);
|
||
|
trigger clearedSector5Trig((numObjectsInArea(player, enemyLZX[4] - 1280, enemyLZY[4] - 1280, enemyLZX[4] + 1280, enemyLZY[4] + 1280) == 0), 100);
|
||
|
|
||
|
trigger reinfSector1Trig(((numObjectsInArea(player, reinfPosX1 - 64, reinfPosY1 - 64, reinfPosX1 + 64, reinfPosY1 + 64) == 0) and (numObjectsInArea(enemy2, reinfPosX1 - 64, reinfPosY1 - 64, reinfPosX1 + 64, reinfPosY1 + 64) == 0)), 30);
|
||
|
trigger reinfSector2Trig(((numObjectsInArea(player, reinfPosX2 - 64, reinfPosY2 - 64, reinfPosX2 + 64, reinfPosY2 + 64) == 0) and (numObjectsInArea(enemy2, reinfPosX2 - 64, reinfPosY2 - 64, reinfPosX2 + 64, reinfPosY2 + 64) == 0)), 30);
|
||
|
|
||
|
//trigger reinfSector1Trig(every, 30);
|
||
|
//trigger reinfSector2Trig(every, 30);
|
||
|
|
||
|
trigger sortieDelayTrig(wait, 600); //wait 60 seconds before testing
|
||
|
trigger nextSortieTrig(every, 100); //check every 10 seconds
|
||
|
|
||
|
event wonYetEvnt;
|
||
|
event checkSector1;
|
||
|
event clearedSector1;
|
||
|
event checkSector2;
|
||
|
event clearedSector2;
|
||
|
event checkSector3;
|
||
|
event clearedSector3;
|
||
|
event checkSector4;
|
||
|
event clearedSector4;
|
||
|
event checkSector5;
|
||
|
event clearedSector5;
|
||
|
event reinfSector1;
|
||
|
event reinfSector2;
|
||
|
event sortieDelay;
|
||
|
event timeUp;
|
||
|
|
||
|
event start2Evnt(CALL_VIDEO_QUIT)
|
||
|
{
|
||
|
//remove first part of two part message, and play second part
|
||
|
removeMessage(MissionBrief, MISS_MSG, 0);
|
||
|
setEventTrigger(start2Evnt, inactive);
|
||
|
//test how close to edge can go!
|
||
|
//addDroid(scorpRkt, reinfPosX2, reinfPosY2, enemy2);
|
||
|
|
||
|
addMessage(MissionBrief2, MISS_MSG, 0, true);
|
||
|
}
|
||
|
|
||
|
event startEvnt(CALL_GAMEINIT)
|
||
|
{
|
||
|
//set scroll limits
|
||
|
centreViewPos(11*128, 52*128);
|
||
|
// setScrollParams(0, 0, 128, 128); //limit scroll
|
||
|
//set zoom Level 128x128
|
||
|
setRadarZoom(0);
|
||
|
//stop player building on LZ
|
||
|
setLandingZone(10, 51, 12, 53);
|
||
|
addMessage(MissionBrief, MISS_MSG, 0, true);
|
||
|
//createAlliance(enemy1, enemy2);
|
||
|
setPowerLevel(pow1, enemy1);
|
||
|
setPowerLevel(pow2, enemy2);
|
||
|
setEventTrigger(startEvnt, inactive);
|
||
|
//Blip Given at start
|
||
|
//addMessage(obj1, PROX_MSG, player, false);
|
||
|
//allow to build stuff
|
||
|
setStructureLimits (powerGen,numPow,0);
|
||
|
setStructureLimits (oilDerrick,numExt,0);
|
||
|
setStructureLimits (research,numRes,0);
|
||
|
setStructureLimits (factory,numFac,0);
|
||
|
setStructureLimits(command, 1, player);
|
||
|
setStructureLimits(comRelay, 1, player);
|
||
|
enableStructure(command, player);
|
||
|
enableStructure(powerGen,0);
|
||
|
enableStructure(oilDerrick,0);
|
||
|
enableStructure(research,0);
|
||
|
enableStructure(factory,0);
|
||
|
//enableStructure(powerModuleHack, 0);
|
||
|
|
||
|
//set no time limits (can carry over from previous missions if not set!)
|
||
|
setReinforcementTime(-1);
|
||
|
setMissionTime(timeLimit); //set Mission time limit
|
||
|
|
||
|
// player specific technology startups
|
||
|
count = 0;
|
||
|
while (count < numtecE2)
|
||
|
{
|
||
|
completeResearch(tecE2[count], enemy2);
|
||
|
count = count +1;
|
||
|
}
|
||
|
|
||
|
|
||
|
LZMess = numLZ+1; //force to recalc
|
||
|
randomiseSeed();
|
||
|
/*
|
||
|
//also don't allow building on 1CA's enemy LZs!
|
||
|
count = 0;
|
||
|
while (count < numLZ)
|
||
|
{
|
||
|
setNoGoArea((enemyLZX[count]/128) - 1, (enemyLZY[count]/128) - 1, (enemyLZX[count]/128) + 1, (enemyLZY[count]/128) + 1, count + 2); //count+2 so doesn't set NP's LZ (since changes later!)
|
||
|
count = count + 1;
|
||
|
}
|
||
|
*/
|
||
|
//add enemy transport (once!)
|
||
|
setNoGoArea((enemyLZX[0] / 128) - 1, (enemyLZY[0] / 128) - 1, (enemyLZX[0] / 128) + 1, (enemyLZY[0] / 128) + 1, enemy2);
|
||
|
transportDroid = addDroidToMissionList(transporter, enemy2);
|
||
|
}
|
||
|
|
||
|
/* Events: Win or Lose */
|
||
|
|
||
|
event nextLevEvnt(inactive) //assumes victory already checked
|
||
|
{
|
||
|
pause(20); //increased to allow all audio before won
|
||
|
// give bonus research (if req'd)
|
||
|
count = 0;
|
||
|
while (count < numResP0)
|
||
|
{
|
||
|
enableResearch(resP0[count], 0);
|
||
|
count = count +1;
|
||
|
}
|
||
|
|
||
|
gameLevel=gameLevel+1; //flag next part of map
|
||
|
|
||
|
//removeMessage(MissionBrief2, MISS_MSG, player);
|
||
|
startMission(BETWEEN, NextLev); //SUB1-4A next so BETWEEN rather than OFF_KEEP
|
||
|
|
||
|
//End game here for now! (don't try next mission)
|
||
|
//gameOver(true);
|
||
|
|
||
|
setEventTrigger(nextLevEvnt, inactive);
|
||
|
}
|
||
|
|
||
|
|
||
|
event gameLost(inactive)
|
||
|
{
|
||
|
// addMessage(endMsg, MISS_MSG, 0, true);
|
||
|
// pause(10);
|
||
|
// gameOver(false);
|
||
|
gameOverMessage(endMsg, MISS_MSG, 0, false);
|
||
|
setEventTrigger(gameLost, inactive);
|
||
|
}
|
||
|
|
||
|
event lostYetEvnt(winLoseTrig)
|
||
|
{
|
||
|
if (not anyDroidsLeft(player))
|
||
|
{
|
||
|
if (not anyStructButWallsLeft(player))
|
||
|
{
|
||
|
setEventTrigger(wonYetEvnt,inactive);
|
||
|
setEventTrigger(gameLost, gameLostTrig); //waits 2 seconds before ending
|
||
|
setEventTrigger(lostYetEvnt, inactive);
|
||
|
setEventTrigger(timeUp, inactive);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
event wonYetEvnt(inactive) // have all enemies lost yet?
|
||
|
{
|
||
|
if (not anyDroidsLeft(enemy2))
|
||
|
{
|
||
|
if (not anyStructButWallsLeft(enemy2))
|
||
|
{
|
||
|
setEventTrigger(lostYetEvnt, inactive);
|
||
|
setEventTrigger(nextLevEvnt, winLoseTrig);
|
||
|
setEventTrigger(wonYetEvnt, inactive);
|
||
|
setEventTrigger(timeUp, inactive);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event cheatEvnt(CALL_MISSION_START) //cheat button ctrl M
|
||
|
{
|
||
|
setEventTrigger(nextLevEvnt, winLoseTrig);
|
||
|
setEventTrigger(cheatEvnt, inactive);
|
||
|
}
|
||
|
|
||
|
/* Base Under Attack */
|
||
|
event baseHit(CALL_STRUCT_ATTACKED, selectedPlayer, ref hitStruc, ref attackerObj)
|
||
|
{
|
||
|
if (t >= 20)
|
||
|
{
|
||
|
t=0;
|
||
|
if (hitStruc != NULLOBJECT)
|
||
|
{
|
||
|
playSoundPos(attackSnd1, selectedPlayer, hitStruc.x, hitStruc.y, hitStruc.z); //show position if still alive
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
playSound(attackSnd1, selectedPlayer);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event everySec(every, 10)
|
||
|
{
|
||
|
t=t+1;
|
||
|
}
|
||
|
|
||
|
event seeBaseHit(CALL_MISSION_END)
|
||
|
{
|
||
|
//go to where the structure being attacked is on CTRL B
|
||
|
if (hitStruc!=NULLOBJECT)
|
||
|
{
|
||
|
centreView(hitStruc);
|
||
|
t=0; //flag known about!
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
event removeObj1(winLoseTrig2)
|
||
|
{
|
||
|
//remove if forward base established
|
||
|
removeMessage(obj1, PROX_MSG, player);
|
||
|
setEventTrigger(removeObj1, inactive);
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
|
||
|
/* make NP Transport "land" */
|
||
|
event NPTransEvnt(NPTransTrig)
|
||
|
{
|
||
|
//check we have a transporter to load!
|
||
|
if (transportDroid != NULLOBJECT)
|
||
|
{
|
||
|
if (not transOnMap) //make sure transporter not still on map!
|
||
|
{
|
||
|
if (LZ < numLZ)
|
||
|
{
|
||
|
//check no player droids or structures near NP LZ, before landing
|
||
|
if ((not droidInArea(player, enemyLZX[LZ] - 512, enemyLZY[LZ] - 512, enemyLZX[LZ] + 512, enemyLZY[LZ] + 512)) and (not structInArea(player, enemyLZX[LZ] - 512, enemyLZY[LZ] - 512, enemyLZX[LZ] + 512, enemyLZY[LZ] + 512))
|
||
|
and (not droidInArea(enemy2, enemyLZX[LZ] - 200, enemyLZY[LZ] - 200, enemyLZX[LZ] + 200, enemyLZY[LZ] + 200)))
|
||
|
|
||
|
{
|
||
|
if (LZMess < numLZ)
|
||
|
{
|
||
|
//remove last warning (if any!)
|
||
|
removeMessage(enemyLZM[LZMess], PROX_MSG, player);
|
||
|
}
|
||
|
//numTries = 0; //reset number of tries
|
||
|
//warn player!!
|
||
|
addMessage(enemyLZM[LZ], PROX_MSG, player, false);
|
||
|
LZMess = LZ; //store so can remove later
|
||
|
|
||
|
//set landing zone first
|
||
|
setNoGoArea((enemyLZX[LZ] / 128) - 1, (enemyLZY[LZ] / 128) - 1, (enemyLZX[LZ] / 128) + 1, (enemyLZY[LZ] / 128) + 1, enemy2);
|
||
|
|
||
|
//place paratroops
|
||
|
//addDroid(template3[0], enemyLZX[LZ] - 128, enemyLZY[LZ] - 128, enemy2);
|
||
|
//addDroid(template3[0], enemyLZX[LZ], enemyLZY[LZ] - 128, enemy2);
|
||
|
//addDroid(template3[1], enemyLZX[LZ] + 128, enemyLZY[LZ] - 128, enemy2);
|
||
|
//addDroid(template3[1], enemyLZX[LZ] + 128, enemyLZY[LZ], enemy2);
|
||
|
//addDroid(template3[2], enemyLZX[LZ] - 128, enemyLZY[LZ] + 128, enemy2);
|
||
|
//addDroid(template3[2], enemyLZX[LZ], enemyLZY[LZ] + 128, enemy2);
|
||
|
loadDroid = addDroidToMissionList(template3[0], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
numTries = 0; //reset number of tries
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
transOnMap = TRUE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
numTries = numTries + 10; //let code know can't land
|
||
|
}
|
||
|
loadDroid = addDroidToMissionList(template3[0], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
}
|
||
|
loadDroid = addDroidToMissionList(template3[1], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
}
|
||
|
loadDroid = addDroidToMissionList(template3[1], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
}
|
||
|
loadDroid = addDroidToMissionList(template3[2], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
}
|
||
|
loadDroid = addDroidToMissionList(template3[2], enemy2);
|
||
|
if (loadDroid != NULLOBJECT)
|
||
|
{
|
||
|
addDroidToTransporter(transportDroid, loadDroid);
|
||
|
}
|
||
|
|
||
|
//call in transport, using random-ish positions
|
||
|
setTransporterExit(enemy2, 126, 50 + random(32));
|
||
|
flyTransporterIn(enemy2, 126, 50 + random(32), false);
|
||
|
//transOnMap = TRUE;
|
||
|
|
||
|
//not sure about this, but moved proper check to groupTrans event
|
||
|
if (targetChoice < 3) //check for next LZ
|
||
|
{
|
||
|
//can only set new trigger once, so hopefully this won't override longer delay set earlier!
|
||
|
setEventTrigger(NPTransEvnt, NPTransTrig3);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//try again soon
|
||
|
setEventTrigger(NPTransEvnt, NPTransTrig2);
|
||
|
numTries = numTries + 1;
|
||
|
}
|
||
|
if (numTries > 5) //try 5 times before moving on to next LZ!
|
||
|
{
|
||
|
numTries = 0;
|
||
|
LZ = LZ +1;
|
||
|
//setEventTrigger(NPTransEvnt, inactive);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
removeMessage(enemyLZM[LZMess], PROX_MSG, player); //remove last LZ message
|
||
|
setEventTrigger(NPTransEvnt, inactive); //don't allow any more!
|
||
|
setEventTrigger(wonYetEvnt, winLoseTrig); //allow victory conditions
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//if haven't managed to get a transporter - this allows the player to win
|
||
|
setEventTrigger(wonYetEvnt, winLoseTrig); //allow victory conditions
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
event groupTrans(CALL_TRANSPORTER_LANDED, NPgroup[(LZ * numTargets) + targetChoice], enemy2)
|
||
|
{
|
||
|
//playSound(warnSnd, player);
|
||
|
playSoundPos(warnSnd, player, enemyLZX[LZMess] * 128, enemyLZY[LZMess] * 128, 0);
|
||
|
pause(10);
|
||
|
//now get going!
|
||
|
//groupAddArea(NPgroup[(LZ * numTargets) + targetChoice], enemy2, enemyLZX[LZ] - 128, enemyLZY[LZ] - 128, enemyLZX[LZ] + 256, enemyLZY[LZ] + 256);
|
||
|
//keep track of total in this sortie
|
||
|
sortieTot = sortieTot + NPgroup[(LZ * numTargets) + targetChoice].members;
|
||
|
orderGroupLoc(NPgroup[(LZ * numTargets) + targetChoice], DORDER_SCOUT, targetX[(LZ * numTargets) + targetChoice], targetY[(LZ * numTargets) + targetChoice]);
|
||
|
|
||
|
targetChoice = targetChoice + 1;
|
||
|
if (targetChoice >= 3) //check for next LZ
|
||
|
{
|
||
|
LZ = LZ + 1;
|
||
|
targetChoice = 0;
|
||
|
//longer delay before next attack
|
||
|
//playSound(wonSnd,0);
|
||
|
setEventTrigger(NPTransEvnt, inactive);
|
||
|
setEventTrigger(sortieDelay, sortieDelayTrig);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//can only set new trigger once, so hopefully this won't override longer delay set earlier!
|
||
|
setEventTrigger(NPTransEvnt, NPTransTrig3);
|
||
|
}
|
||
|
//do checks here so can trigger forces from edge of map...
|
||
|
if (LZ == 1)
|
||
|
{
|
||
|
setEventTrigger(checkSector1, checkSector1Trig);
|
||
|
setEventTrigger(clearedSector1, clearedSector1Trig);
|
||
|
setEventTrigger(reinfSector1, reinfSector1Trig);
|
||
|
}
|
||
|
if (LZ == 2)
|
||
|
{
|
||
|
setEventTrigger(checkSector2, checkSector2Trig);
|
||
|
setEventTrigger(clearedSector2, clearedSector2Trig);
|
||
|
setEventTrigger(reinfSector2, reinfSector2Trig);
|
||
|
}
|
||
|
if (LZ == 3)
|
||
|
{
|
||
|
setEventTrigger(checkSector3, checkSector3Trig);
|
||
|
setEventTrigger(clearedSector3, clearedSector3Trig);
|
||
|
//setEventTrigger(reinfSector3, reinfSector3Trig);
|
||
|
}
|
||
|
if (LZ == 4)
|
||
|
{
|
||
|
setEventTrigger(checkSector4, checkSector4Trig);
|
||
|
setEventTrigger(clearedSector4, clearedSector4Trig);
|
||
|
//setEventTrigger(reinfSector4, reinfSector4Trig);
|
||
|
}
|
||
|
if (LZ >= 5)
|
||
|
{
|
||
|
setEventTrigger(checkSector5, checkSector5Trig);
|
||
|
setEventTrigger(clearedSector5, clearedSector5Trig);
|
||
|
//setEventTrigger(reinfSector5, reinfSector5Trig);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
event nextSortie(inactive)
|
||
|
{
|
||
|
//check status of current sortie
|
||
|
temp1 = (NPgroup[LZ - 1].members + NPgroup[LZ].members + NPgroup[LZ + 1].members);
|
||
|
sortieCount = sortieCount + 1; //keep track of number of tries
|
||
|
if (sortieCount > 12) //wait another 2 minutes before forcing the next one
|
||
|
{
|
||
|
temp1 = 0; //force new sortie if waited too long!
|
||
|
}
|
||
|
if (temp1 <= sortieTot / 2)
|
||
|
{
|
||
|
sortieTot = 0;
|
||
|
setEventTrigger(NPTransEvnt, NPTransTrig);
|
||
|
setEventTrigger(nextSortie, inactive);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event sortieDelay(inactive)
|
||
|
{
|
||
|
//now set up check for sortie health level
|
||
|
setEventTrigger(nextSortie, nextSortieTrig);
|
||
|
setEventTrigger(sortieDelay, inactive);
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
event moveTrans(inactive)
|
||
|
{
|
||
|
//have Scouts got close to target?
|
||
|
groupAddArea(transTemp, enemy2, targetX[targetChoice] - 512, targetY[targetChoice] - 512, targetX[targetChoice] + 512, targetY[targetChoice] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
targetChoice = targetChoice + numTargets; //go from near to mid to far
|
||
|
if (targetChoice >= numTargets * 3)
|
||
|
{
|
||
|
//choose new target randomly
|
||
|
targetChoice=random(numTargets);
|
||
|
}
|
||
|
groupAddGroup(transScout, transTemp);
|
||
|
//get going to next one!!
|
||
|
orderGroupLoc(transScout, DORDER_SCOUT, targetX[targetChoice], targetY[targetChoice]);
|
||
|
}
|
||
|
|
||
|
//have Heavies got close to target?
|
||
|
groupAddArea(transTemp, enemy2, targetX[targetChoice] - 512, targetY[targetChoice] - 512, targetX[targetChoice] + 512, targetY[targetChoice] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
targetChoice = targetChoice + numTargets; //go from near to mid to far
|
||
|
if (targetChoice >= numTargets * 3)
|
||
|
{
|
||
|
//choose new target randomly
|
||
|
targetChoice=random(numTargets);
|
||
|
}
|
||
|
groupAddGroup(transHeavy, transTemp);
|
||
|
//get going to next one!!
|
||
|
orderGroupLoc(transHeavy, DORDER_SCOUT, targetX[targetChoice], targetY[targetChoice]);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
event clearedSector1(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
//choose a new sector now this one clear!
|
||
|
n = 0;
|
||
|
while (n < 3)
|
||
|
{
|
||
|
//do random walk type thing
|
||
|
enemyLZX[0] = enemyLZX[0] + random(128 * 20) - (128 * 10);
|
||
|
enemyLZY[0] = enemyLZY[0] + random(128 * 30) - (128 * 20);
|
||
|
if (enemyLZX[0] < 1000)
|
||
|
{
|
||
|
enemyLZX[0] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZX[0] > 16000)
|
||
|
{
|
||
|
enemyLZX[0] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
if (enemyLZY[0] < 1000)
|
||
|
{
|
||
|
enemyLZY[0] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZY[0] > 16000)
|
||
|
{
|
||
|
enemyLZY[0] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, enemyLZX[0], enemyLZY[0]);
|
||
|
targetX[n] = enemyLZX[0];
|
||
|
targetY[n] = enemyLZY[0];
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event checkSector1(inactive)
|
||
|
{
|
||
|
n = 0;
|
||
|
orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
while (n < 3)
|
||
|
{
|
||
|
//check if group got near to destination
|
||
|
/* bad way of doing this
|
||
|
groupAddArea(transTemp, enemy2, targetX[n] - 512, targetY[n] - 512, targetX[n] + 512, targetY[n] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
//give group new destination within 10 tiles of main
|
||
|
groupAddGroup(NPgroup[n], transTemp);
|
||
|
*/
|
||
|
if (idleGroup(NPgroup[n]) >= (NPgroup[n].members / 2))
|
||
|
{
|
||
|
targetX[n] = enemyLZX[0] + random(128 * 20) - (128 * 10);
|
||
|
targetY[n] = enemyLZY[0] + random(128 * 20) - (128 * 10);
|
||
|
if (enemyLZX[0] + targetX[n] < 1000)
|
||
|
{
|
||
|
targetX[n] = enemyLZX[0] + 1000;
|
||
|
}
|
||
|
if (enemyLZX[0] + targetX[n] > 16000)
|
||
|
{
|
||
|
targetX[n] = 16000 - enemyLZX[0];
|
||
|
}
|
||
|
if (enemyLZY[0] + targetY[n] < 1000)
|
||
|
{
|
||
|
targetY[n] = enemyLZY[0] + 1000;
|
||
|
}
|
||
|
if (enemyLZY[0] + targetY[n] > 16000)
|
||
|
{
|
||
|
targetY[n] = 16000 - enemyLZY[0];
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
}
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event clearedSector2(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
//choose a new sector now this one clear!
|
||
|
n = 3;
|
||
|
while (n < 6)
|
||
|
{
|
||
|
//do random walk type thing
|
||
|
enemyLZX[1] = enemyLZX[1] + random(128 * 30) - (128 * 20);
|
||
|
enemyLZY[1] = enemyLZY[1] + random(128 * 30) - (128 * 15);
|
||
|
if (enemyLZX[1] < 1000)
|
||
|
{
|
||
|
enemyLZX[1] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZX[1] > 16000)
|
||
|
{
|
||
|
enemyLZX[1] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
if (enemyLZY[1] < 1000)
|
||
|
{
|
||
|
enemyLZY[1] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZY[1] > 16000)
|
||
|
{
|
||
|
enemyLZY[1] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, enemyLZX[1], enemyLZY[1]);
|
||
|
targetX[n] = enemyLZX[1];
|
||
|
targetY[n] = enemyLZY[1];
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event checkSector2(inactive)
|
||
|
{
|
||
|
n = 3;
|
||
|
orderGroupLoc(reinfGroup[1], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
while (n < 6)
|
||
|
{
|
||
|
//check if group got near to destination
|
||
|
/* bad way of doing this
|
||
|
groupAddArea(transTemp, enemy2, targetX[n] - 512, targetY[n] - 512, targetX[n] + 512, targetY[n] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
//give group new destination within 10 tiles of main
|
||
|
groupAddGroup(NPgroup[n], transTemp);
|
||
|
*/
|
||
|
if (idleGroup(NPgroup[n]) >= (NPgroup[n].members / 2))
|
||
|
{
|
||
|
|
||
|
targetX[n] = enemyLZX[1] + random(128 * 20) - (128 * 10);
|
||
|
targetY[n] = enemyLZY[1] + random(128 * 20) - (128 * 10);
|
||
|
if (enemyLZX[1] + targetX[n] < 1000)
|
||
|
{
|
||
|
targetX[n] = enemyLZX[1] + 1000;
|
||
|
}
|
||
|
if (enemyLZX[1] + targetX[n] > 16000)
|
||
|
{
|
||
|
targetX[n] = 16000 - enemyLZX[1];
|
||
|
}
|
||
|
if (enemyLZY[1] + targetY[n] < 1000)
|
||
|
{
|
||
|
targetY[n] = enemyLZY[1] + 1000;
|
||
|
}
|
||
|
if (enemyLZY[1] + targetY[n] > 16000)
|
||
|
{
|
||
|
targetY[n] = 16000 - enemyLZY[1];
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
}
|
||
|
n = n + 1;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event clearedSector3(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
//choose a new sector now this one clear!
|
||
|
n = 6;
|
||
|
while (n < 9)
|
||
|
{
|
||
|
//do random walk type thing
|
||
|
enemyLZX[2] = enemyLZX[2] + random(128 * 30) - (128 * 15);
|
||
|
enemyLZY[2] = enemyLZY[2] + random(128 * 30) - (128 * 15);
|
||
|
if (enemyLZX[2] < 1000)
|
||
|
{
|
||
|
enemyLZX[2] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZX[2] > 16000)
|
||
|
{
|
||
|
enemyLZX[2] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
if (enemyLZY[2] < 1000)
|
||
|
{
|
||
|
enemyLZY[2] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZY[2] > 16000)
|
||
|
{
|
||
|
enemyLZY[2] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, enemyLZX[2], enemyLZY[2]);
|
||
|
targetX[n] = enemyLZX[2];
|
||
|
targetY[n] = enemyLZY[2];
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event checkSector3(inactive)
|
||
|
{
|
||
|
n = 6;
|
||
|
//orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
while (n < 9)
|
||
|
{
|
||
|
//check if group got near to destination
|
||
|
/* bad way of doing this
|
||
|
groupAddArea(transTemp, enemy2, targetX[n] - 512, targetY[n] - 512, targetX[n] + 512, targetY[n] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
//give group new destination within 10 tiles of main
|
||
|
groupAddGroup(NPgroup[n], transTemp);
|
||
|
*/
|
||
|
if (idleGroup(NPgroup[n]) >= (NPgroup[n].members / 2))
|
||
|
{
|
||
|
targetX[n] = enemyLZX[2] + random(128 * 20) - (128 * 10);
|
||
|
targetY[n] = enemyLZY[2] + random(128 * 20) - (128 * 10);
|
||
|
if (enemyLZX[2] + targetX[n] < 1000)
|
||
|
{
|
||
|
targetX[n] = enemyLZX[2] + 1000;
|
||
|
}
|
||
|
if (enemyLZX[2] + targetX[n] > 16000)
|
||
|
{
|
||
|
targetX[n] = 16000 - enemyLZX[2];
|
||
|
}
|
||
|
if (enemyLZY[2] + targetY[n] < 1000)
|
||
|
{
|
||
|
targetY[n] = enemyLZY[2] + 1000;
|
||
|
}
|
||
|
if (enemyLZY[2] + targetY[n] > 16000)
|
||
|
{
|
||
|
targetY[n] = 16000 - enemyLZY[2];
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
}
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event clearedSector4(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
//choose a new sector now this one clear!
|
||
|
n = 9;
|
||
|
while (n < 12)
|
||
|
{
|
||
|
//do random walk type thing
|
||
|
enemyLZX[3] = enemyLZX[3] + random(128 * 10) - (128 * 5);
|
||
|
enemyLZY[3] = enemyLZY[3] + random(128 * 30) - (128 * 15); //bias South
|
||
|
if (enemyLZX[3] < 1000)
|
||
|
{
|
||
|
enemyLZX[3] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZX[3] > 16000)
|
||
|
{
|
||
|
enemyLZX[3] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
if (enemyLZY[3] < 1000)
|
||
|
{
|
||
|
enemyLZY[3] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZY[3] > 16000)
|
||
|
{
|
||
|
enemyLZY[3] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, enemyLZX[3], enemyLZY[3]);
|
||
|
targetX[n] = enemyLZX[3];
|
||
|
targetY[n] = enemyLZY[3];
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event checkSector4(inactive)
|
||
|
{
|
||
|
n = 9;
|
||
|
//orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
while (n < 12)
|
||
|
{
|
||
|
//check if group got near to destination
|
||
|
/* bad way of doing this
|
||
|
groupAddArea(transTemp, enemy2, targetX[n] - 512, targetY[n] - 512, targetX[n] + 512, targetY[n] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
//give group new destination within 10 tiles of main
|
||
|
groupAddGroup(NPgroup[n], transTemp);
|
||
|
*/
|
||
|
if (idleGroup(NPgroup[n]) >= (NPgroup[n].members / 2))
|
||
|
{
|
||
|
targetX[n] = enemyLZX[3] + random(128 * 20) - (128 * 10);
|
||
|
targetY[n] = enemyLZY[3] + random(128 * 20) - (128 * 10);
|
||
|
if (enemyLZX[3] + targetX[n] < 1000)
|
||
|
{
|
||
|
targetX[n] = enemyLZX[3] + 1000;
|
||
|
}
|
||
|
if (enemyLZX[3] + targetX[n] > 16000)
|
||
|
{
|
||
|
targetX[n] = 16000 - enemyLZX[3];
|
||
|
}
|
||
|
if (enemyLZY[3] + targetY[n] < 1000)
|
||
|
{
|
||
|
targetY[n] = enemyLZY[3] + 1000;
|
||
|
}
|
||
|
if (enemyLZY[3] + targetY[n] > 16000)
|
||
|
{
|
||
|
targetY[n] = 16000 - enemyLZY[3];
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
}
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event clearedSector5(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
//choose a new sector now this one clear!
|
||
|
n = 12;
|
||
|
while (n < 15)
|
||
|
{
|
||
|
//do random walk type thing
|
||
|
enemyLZX[4] = enemyLZX[4] + random(128 * 20) - (128 * 20);
|
||
|
enemyLZY[4] = enemyLZY[4] + random(128 * 30) - (128 * 12);
|
||
|
if (enemyLZX[4] < 1000)
|
||
|
{
|
||
|
enemyLZX[4] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZX[4] > 16000)
|
||
|
{
|
||
|
enemyLZX[4] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
if (enemyLZY[4] < 1000)
|
||
|
{
|
||
|
enemyLZY[4] = random(128 * 20) + 1000;
|
||
|
}
|
||
|
if (enemyLZY[4] > 16000)
|
||
|
{
|
||
|
enemyLZY[4] = 16000 - random(128 * 20);
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, enemyLZX[4], enemyLZY[4]);
|
||
|
targetX[n] = enemyLZX[4];
|
||
|
targetY[n] = enemyLZY[4];
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event checkSector5(inactive)
|
||
|
{
|
||
|
n = 12;
|
||
|
//orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
while (n < 15)
|
||
|
{
|
||
|
//check if group got near to destination
|
||
|
/* Bad way of doing this
|
||
|
groupAddArea(transTemp, enemy2, targetX[n] - 512, targetY[n] - 512, targetX[n] + 512, targetY[n] + 512);
|
||
|
if (transTemp.members > 0)
|
||
|
{
|
||
|
//give group new destination within 10 tiles of main
|
||
|
groupAddGroup(NPgroup[n], transTemp);
|
||
|
*/
|
||
|
if (idleGroup(NPgroup[n]) >= (NPgroup[n].members / 2))
|
||
|
{
|
||
|
targetX[n] = enemyLZX[4] + random(128 * 20) - (128 * 10);
|
||
|
targetY[n] = enemyLZY[4] + random(128 * 20) - (128 * 10);
|
||
|
if (enemyLZX[4] + targetX[n] < 1000)
|
||
|
{
|
||
|
targetX[n] = enemyLZX[4] + 1000;
|
||
|
}
|
||
|
if (enemyLZX[4] + targetX[n] > 16000)
|
||
|
{
|
||
|
targetX[n] = 16000 - enemyLZX[4];
|
||
|
}
|
||
|
if (enemyLZY[4] + targetY[n] < 1000)
|
||
|
{
|
||
|
targetY[n] = enemyLZY[4] + 1000;
|
||
|
}
|
||
|
if (enemyLZY[4] + targetY[n] > 16000)
|
||
|
{
|
||
|
targetY[n] = 16000 - enemyLZY[4];
|
||
|
}
|
||
|
orderGroupLoc(NPgroup[n], DORDER_SCOUT, targetX[n], targetY[n]);
|
||
|
}
|
||
|
n = n + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//keep reinforcements moving
|
||
|
event reinfMove(every, 55)
|
||
|
{
|
||
|
if ((reinfGroup[0].members > 0) and (idleGroup(reinfGroup[0]) >= reinfGroup[0].members /2))
|
||
|
{
|
||
|
temp = random(numTargets);
|
||
|
orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[temp], targetY[temp]);
|
||
|
}
|
||
|
if ((reinfGroup[1].members > 0) and (idleGroup(reinfGroup[1]) >= reinfGroup[1].members /2))
|
||
|
{
|
||
|
temp = 14; //random(numTargets);
|
||
|
orderGroupLoc(reinfGroup[1], DORDER_SCOUT, targetX[temp], targetY[temp]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event reinfSector1(inactive)
|
||
|
{
|
||
|
if (n1 < numReinf)
|
||
|
{
|
||
|
if (m1 < reinfNum[n1])
|
||
|
{
|
||
|
/* Bad way of doing this!
|
||
|
addDroid(reinfTemp[n1], reinfPosX1, reinfPosY1, enemy2);
|
||
|
groupAddArea(reinfGroup[0], enemy2, reinfPosX1 - 64, reinfPosY1 - 64, reinfPosX1 + 64, reinfPosY1 + 64);
|
||
|
orderGroupLoc(reinfGroup[0], DORDER_SCOUT, targetX[0], targetY[0]);
|
||
|
*/
|
||
|
newDroid = addDroid(reinfTemp[n1], reinfPosX1, reinfPosY1, enemy2);
|
||
|
if (newDroid != NULLOBJECT)
|
||
|
{
|
||
|
orderDroidLoc(newDroid, DORDER_SCOUT, targetX[14], targetY[14]);
|
||
|
groupAddDroid(reinfGroup[0], newDroid);
|
||
|
}
|
||
|
//increment count even if we don't get a droid otherwise we'll sit in an infinite loop!
|
||
|
m1 = m1 + 1; //keep track of number required for this template
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m1 = 0;
|
||
|
n1 = n1 + 1; //update template for next pass
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
setEventTrigger(reinfSector1, inactive);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event reinfSector2(inactive)
|
||
|
{
|
||
|
//playSound(wonSnd,0);
|
||
|
if (n2 < numReinf)
|
||
|
{
|
||
|
if (m2 < reinfNum[n2])
|
||
|
{
|
||
|
/* Bad way of doing this!
|
||
|
addDroid(reinfTemp[n2], reinfPosX2, reinfPosY2, enemy2);
|
||
|
groupAddArea(reinfGroup[1], enemy2, reinfPosX2 - 64, reinfPosY2 - 64, reinfPosX2 + 64, reinfPosY2 + 64);
|
||
|
orderGroupLoc(reinfGroup[1], DORDER_SCOUT, targetX[4], targetY[4]);
|
||
|
*/
|
||
|
newDroid = addDroid(reinfTemp[n2], reinfPosX2, reinfPosY2, enemy2);
|
||
|
if (newDroid != NULLOBJECT)
|
||
|
{
|
||
|
orderDroidLoc(newDroid, DORDER_SCOUT, targetX[14], targetY[14]);
|
||
|
groupAddDroid(reinfGroup[1], newDroid);
|
||
|
}
|
||
|
|
||
|
//increment count even if we don't get a droid otherwise we'll sit in an infinite loop!
|
||
|
m2 = m2 + 1; //keep track of number required for this template
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m2 = 0;
|
||
|
n2 = n2 + 1; //update template for next pass
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
setEventTrigger(reinfSector2, inactive);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
event transOff(CALL_TRANSPORTER_OFFMAP, enemy2)
|
||
|
{
|
||
|
transOnMap = FALSE;
|
||
|
|
||
|
}
|
||
|
event timeUp(CALL_MISSION_TIME)
|
||
|
{
|
||
|
setEventTrigger(wonYetEvnt,inactive);
|
||
|
setEventTrigger(lostYetEvnt,inactive);
|
||
|
setEventTrigger(gameLost, gameLostTrig);
|
||
|
setEventTrigger(timeUp, inactive);
|
||
|
}
|