// don't want this executing when building graphs if($OFFLINE_NAV_BUILD) return; // script for training mission 2 //------------------------------------------------------------- //init //------------------------------------------------------------- error("Running Mission 2 Script"); activatePackage(Training2); activatePackage(singlePlayerMissionAreaEnforce); $numberOfEnemies[1] = 6; $numberOfEnemies[2] = 8; $numberOfEnemies[3] = 11; //globals for base defense part $numberOfWaves[1] = 3; $numberOfWaves[2] = 4; $numberOfWaves[3] = 5; $numberInWave[1] = 2; $numberInWave[2] = 3; $numberInWave[3] = 5; $numberOfTeammates = 1; $missionBotSkill[1] = 0.0; $missionBotSkill[2] = 0.5; $missionBotSkill[3] = 0.9; $victimSet[1] = "0 1 6 8"; $victimSet[2] = "2 3 9"; $victimSet[3] = "4 5 7 10"; // Team $TeammateWarnom0 = "Dogkiller"; // mount plasma, missile launcher, targeting laser------------------- addMessageCallback('MsgWeaponMount', playerMountWeapon); // touch with pack on addMessageCallback('MsgItemCollisionHavePack', playerTouchItemHavePack); //repair initial pickup addMessageCallback('MsgPackPickup', playerPickUp); //repair self addMessageCallback('MsgRepairPackPlayerSelfRepair', playerRepairSelf); //repair nothing addMessageCallback('MsgRepairPackNoTarget', noRepair); //repair unpowered addMessageCallback('MsgRepairPackRepairingObj', ObjRepair); //enter inv station addMessageCallback('msgEnterInvStation', StationInvEnter); // shield pack //addMessageCallback('MsgShieldPackOn', playerTurnsOnShield); // for many of the objectives we are going to periodically // check the players distance vs some object // you could do this much prettier but its going to be very specific // so a cut and paste eyesore will be fine game.sensor = nameToID("MissionGroup/Teams/team2/base1/initialPulseSensor"); game.base1 = nameToID("MissionGroup/Teams/team2/base1/base"); game.base1.threshold1 = 240; game.base1.threshold2 = 190; game.base2 = nameToID("MissionGroup/Teams/team2/base2/base"); game.base2.threshold1 = 300; game.base2.threshold2 = 250; game.base3 = nameToID("MissionGroup/Teams/team2/base3/base"); game.base3.threshold1 = 330; game.base3.threshold2 = 130; package training2 { //--Training2 package begin ----------------------------------------------------------------- function toggleScoreScreen(%val) { if ( %val ) //error("No Score Screen in training......."); messageClient($player, 0, $player.miscMsg[noScoreScreen]); } function toggleCommanderMap(%val) { if ( %val ) messageClient($player, 0, $player.miscMsg[noCC]); } function MP3Audio::play(%this) { //too bad...no mp3 in training } function countTurretsAllowed(%type) { return $TeamDeployableMax[%type]; } function FlipFlop::objectiveInit(%data, %flipflop) { } function giveall() { error("When the going gets tough...wussies like you start cheating!"); messageClient($player, 0, "Cheating eh? What\'s next? Camping?"); } function kobayashi_maru() { $testCheats = true; commandToServer('giveAll'); } function ClientCmdSetHudMode(%mode, %type, %node) { parent::ClientCmdSetHudMode(%mode, %type, %node); movemap.push(); // hopefully this works //TrainingMap.push(); } function AIEngageTask::assume(%task, %client) { Parent::assume(%task, %client); if(%client.team != $playerTeam) game.biodermAssume(%client); } // get the ball rolling function startCurrentMission(%game) { createText( $player); setFlipFlopSkins(); schedule(2000, %game, openingSpiel); //$player.timeLimit = schedule(45000, $player.player, playerHurryUp1); schedule(2000, %game, objectiveDistanceChecks); giveEscortTask($teammate0, $player); $AIDisableChat = true; buildTraining2Team2ObjectiveQs(); updateTrainingObjectiveHud(obj1); createTrainingSpecificBanList(); } function SinglePlayerGame::gameOver(%game) { $InvBanList[SinglePlayer, "TurretOutdoorDeployable"] = ""; $InvBanList[SinglePlayer, "TurretIndoorDeployable"] = ""; $InvBanList[SinglePlayer, "ElfBarrelPack"] = ""; $InvBanList[SinglePlayer, "MortarBarrelPack"] = ""; $InvBanList[SinglePlayer, "PlasmaBarrelPack"] = ""; $InvBanList[SinglePlayer, "AABarrelPack"] = ""; $InvBanList[SinglePlayer, "MissileBarrelPack"] = ""; $InvBanList[SinglePlayer, "InventoryDeployable"] = ""; parent::GameOver(%game); } function giveEscortTask(%bot, %player) { %newObjective = new AIObjective(AIOEscortPlayer) { dataBlock = "AIObjectiveMarker"; weightLevel1 = 10000; description = "Escort Player"; targetClientId = $player; offense = true; }; //echo(%newObjective); MissionCleanup.add(%newObjective); $ObjectiveQ[$playerTeam].add(%newObjective); $teammate0.DogKillerEscort = %newObjective; schedule(6000, %game, dogKillerSpeaks, 'ChatTaskCover'); } function dogKillerSpeaks(%line) { if(isObject($teammate0.player)) serverCmdCannedChat($teammate0, %line, true); } function findDogKillerNextRespawn() { %num = game.respawnPoint; %group = nameToId("Team1/DropPoints/Respawns"); %object = %group.getObject(%num); return %object; } function getTeammateGlobals() { $TeammateWarnom0 = "Dogkiller"; $teammateskill0 = 0.7; $teammateVoice0 = Male5; $teammateEquipment0 = 2; $teammateGender0 = Male; } function SinglePlayerGame::AIChooseGameObjective(%game, %client) { if(! %client.player) return; if (%client.team == $playerTeam) AIChooseObjective(%client); else AIChooseObjective(%client, $T2ObjectiveQ[%client.SpecialObjectives]); } function SinglePlayerGame::equip(%game, %player) { //ya start with nothing...NOTHING! %player.clearInventory(); for(%i =0; %i<$InventoryHudCount; %i++) %player.client.setInventoryHudItem($InventoryHudData[%i, itemDataName], 0, 1); %set = %player.client.equipment; //error("equping Player "@%player@" with set"@%set); switch (%set) { case 0: %player.setArmor("Medium"); %player.setInventory(ShieldPack, 1); %player.setInventory(RepairKit,1); %player.setInventory(Grenade,6); %player.setInventory(Plasma, 1); %player.setInventory(PlasmaAmmo, 25); %player.setInventory(Disc,1); %player.setInventory(DiscAmmo, 20); %player.setInventory(ElfGun, 1); %player.setInventory(MissileLauncher,1); %player.setInventory(MissileLauncherAmmo, 10); %player.setInventory(TargetingLaser, 1); %player.weaponCount = 4; %player.use("Disc"); case 1: %player.setArmor("Light"); %player.setInventory(EnergyPack, 1); %player.setInventory(RepairKit,1); %player.setInventory(Grenade,6); %player.setInventory(Chaingun, 1); %player.setInventory(ChaingunAmmo, 25); %player.setInventory(Disc,1); %player.setInventory(DiscAmmo, 20); %player.setInventory(ElfGun, 1); %player.weaponCount = 3; %player.use("Disc"); case 2: %player.setArmor("Medium"); %player.setInventory(AmmoPack, 1); %player.setInventory(RepairKit,2); %player.setInventory(Grenade,6); %player.setInventory(Plasma, 1); %player.setInventory(PlasmaAmmo, 50); %player.setInventory(Disc,1); %player.setInventory(DiscAmmo, 40); %player.setInventory(ElfGun, 1); %player.setInventory(MissileLauncher,1); %player.setInventory(MissileLauncherAmmo, 10); %player.setInventory(TargetingLaser, 1); %player.weaponCount = 4; %player.use("Disc"); case 3: //echo("Heavy Inside Attacker"); %player.setArmor("Heavy"); %player.setInventory(ShieldPack, 1); %player.setInventory(RepairKit,1); %player.setInventory(Grenade,8); %player.setInventory(Mine,3); %player.setInventory(Plasma, 1); %player.setInventory(PlasmaAmmo, 50); %player.setInventory(Disc,1); %player.setInventory(DiscAmmo, 15); %player.setInventory(Mortar, 1); %player.setInventory(MortarAmmo, 10); %player.setInventory(ShockLance,1); %player.setInventory(Chaingun,1); %player.setInventory(ChaingunAmmo,200); %player.setInventory(TargetingLaser, 1); %player.use("Mortar"); %player.weaponCount = 5; } } // Mission Part 2: Tower Defense-------------------------------------------- //=========================================================================== function missionSpawnedAI(%client) { %client.specialObjectives = 2; %wave = %client.memberOfWave; if(!game.trainingspawnedWaveLine[%wave]) { game.trainingspawnedWaveLine[%wave] = true; switch(%wave) { case 1: %turret = nameToId("MissionGroup/Teams/Team2/Base3/TurtleTurret"); if(%turret.isDisabled || %turret.isDestroyed) doText(T2_tipDefense02); else doText(T2_tipDefense03); case 2: doText(T2_12); case 3: doText(T2_defense06); checkForAllDead(); } } } function pickEquipment() { return 1; } function playerMountWeapon(%tag, %text, %image, %player, %slot) { if( game.firstTime++ < 2 || $pref::trainingDifficulty == 3) return; // initial weapon mount doesnt count //this also turns off after a time so it doesnt show up in real combat if( game.base1t1) return; //echo("the problem is the image name: "@%image.getName()); if(%image.getName() $= "PlasmaImage" && !game.msgPlas) { game.msgPlas = true; doText(T2_TipPlasma); //echo("Plasma mount"); } if(%image.getName() $= "MissileLauncherImage" && !game.msgMisl) { game.msgMisl = true; doText(T2_TipMissile); //echo("Missile mount"); } if(%image.getName() $= "ELFGunImage" && !game.msgElf) { game.msgElf = true; doText(T2_TipElf); //echo("Elf mount"); } if(%image.getName() $= "TargetingLaserImage" && !game.msgLaze) { game.msgLaze = true; doText(T2_Tiptlaser); } } function Pack::onCollision(%data, %obj, %col) { //error("ItemData::onCollision("@%data@", "@%obj@", "@%col@")"); if($player.player.getMountedImage($backPackSlot)){ messageClient($player, 'MsgItemCollisionHavePack', "", %data, %obj, %col); } parent::onCollision(%data,%obj,%col); } function FlipFlop::playerTouch(%data, %flipFlop, %player) { if(!Parent::playerTouch(%data, %flipflop, %player)) return; if(!game.msgFlop && %flipFlop == nameToId("Base1/CommandSwitch")) { game.msgFlop = true; doText(T2_05b); doText(T2_05c); checkObjectives(); updateTrainingObjectiveHud(obj4); game.respawnPoint = 1; } schedule(1000, game, checkObjectives); } function shapeBase::throwpack(%this, %data) { if(!game.selfDestructSpeak && %this == $player.player) { game.selfDestructSpeak = true; doText(T3_tipEquipment01); } parent::throwPack(%this, %data); } function WeaponImage::onMount(%this,%obj,%slot) { messageClient(%obj.client, 'MsgWeaponMount', "", %this, %obj, %slot); parent::onMount(%this,%obj,%slot); } // I need to find out exactly what gets called on sensor destruction function SensorLargePulse::onDestroyed(%dataBlock, %destroyedObj, %prevState) { if(%destroyedObj.getName() $= "InitialPulseSensor" && !game.initialSensorMsg) { game.initialSensorMsg = true; doText(T2_02); updateTrainingObjectiveHud(obj1); } Parent::onDestroyed(%data, %destroyObj, %prevState); } function Generator::onDestroyed(%data, %destroyedObj, %prevState) { if(%destroyedObj == nameToId("MissionGroup/Teams/Team2/Base1/Generator") && !game.msgGenDestroyed) { game.msgGenDestroyed = true; doText(T2_TipGens01); } Parent::onDestroyed(%data, %destroyObj, %prevState); } function TurretBaseLarge::onDestroyed(%dataBlock, %destroyedObj, %prevState) { //error("Lg*Turret Disabled"); if(!game.turretsDestroyed) { doText(Any_Kudo03); game.turretsDestroyed = true; updateTrainingObjectiveHud(obj1); checkObjectives(); } Parent::onDestroyed(%data, %destroyObj, %prevState); } function stationTrigger::onEnterTrigger(%data, %obj, %colObj) { if(%colObj == $player.player) messageClient(%colObj.client, 'msgEnterInvStation', ""); parent::onEnterTrigger(%data, %obj, %colObj); } function createTrainingSpecificBanList() { $InvBanList[SinglePlayer, "TurretOutdoorDeployable"] = 1; $InvBanList[SinglePlayer, "TurretIndoorDeployable"] = 1; $InvBanList[SinglePlayer, "ElfBarrelPack"] = 1; $InvBanList[SinglePlayer, "MortarBarrelPack"] = 1; $InvBanList[SinglePlayer, "PlasmaBarrelPack"] = 1; $InvBanList[SinglePlayer, "AABarrelPack"] = 1; $InvBanList[SinglePlayer, "MissileBarrelPack"] = 1; $InvBanList[SinglePlayer, "InventoryDeployable"] = 1; } //im putting all the callbacks into the package... just in case //---------------------------------------------------------------- function playerTouchItemHavePack(%this, %text, %data, %collided, %collider) { //error("playerTouchItemHavePack("@%this@", "@%text@", "@%data@", "@%collided@", "@%collider@")"); if(%collider == $player.player && !game.msghavePack && !game.tower3Secure) { game.msghavePack = true; doText(T2_TipDropit); } } function RepairPack::onPickUp(%this, %obj, %player) { //error("RepairPack::onPickUp("@%this@", "@%obj@", "@%player@")"); if( !game.msgRepairPackPickUp && %player == $player.player) { game.msgRepairPackPickUp = true; //doText(T2_repairPack, 1500); doText(T2_tipRepair01); dotext(T2_TipRepair03); } } // function playerRepairSelf(%tag, %text) // { // if(!game.msgSelf){ // game.msgSelf = true; // dotext(T2_TipRepair03); // } // } function noRepair(%tag, %text) { if(!game.msgRep){ game.msgRep = true; doText(T2_TipRepair02); } } function ObjRepair(%tag, %string, %objName, %objID) { if(%objID.getDatablock().classname !$= "generator" && %objID.isPowered() && game.tower3Secure && !game.tipD2) { game.tipD2 = true; //doText(T2_tipDefense02); } } // function StationInvEnter(%a1, %a2) // { // //error("Inv Enter.........."); // if(!game.msgEnterInv){ // game.msgEnterInv = true; // doText(T2_tipInventory); // //doText(T2_tipDefense01); // } // } // function playerTurnsOnShield() // { // if(!game.msgShield) { // game.msgShield++; // doText(T2_TipShieldpack); // } // } function openingSpiel() { doText(T2_01, 6000); doText(T2_TipShieldpack); } function SinglePlayerGame::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement) { if(%damageType == $DamageType::sentryTurret && !game.sentryTurretKill && %clVictim.team != $playerTeam) { game.sentryTurretKill = true; doText(T2_tipDefense05); } if(%clVictim == $player && game.respawnPoint != 3) { %point = findDogKillerNextRespawn(); %DKdefend = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = %point.position; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the players next respawn"; location = %point.position; weightLevel1 = 7000; targetClientId = "-1"; targetObjectId = %point; }; MissionCleanup.add(%DKdefend); $ObjectiveQ[$playerTeam].add(%DKdefend); game.dogKillersPlayerDefend = %DKdefend; } Parent::onClientKilled(%game, %clVictim, %clKiller, %damageType, %implement); } function spawnSinglePlayer() { if(isObject(game.dogKillersPlayerDefend)) { AIClearObjective($teammate0.dogKillersPlayerDefend); $teammate0.dogKillersPlayerDefend.weightLevel1 = 0; game.dogKillersPlayerDefend.delete(); } parent::spawnSinglePlayer(); } function missionClientKilled(%clVictim, %killer) { if(%killer == $player && %clVictim.team == $enemyTeam) schedule(3000, $player.player, adviseHealthKit); if(%killer == $teammate0 && %clVictim.team == $enemyTeam) %random = getRandom(50); if(%random == 1) { schedule(500, game, dogKillerSpeaks, 'ChatBrag'); } else if(%random == 2) { schedule(500, game, dogKillerSpeaks, 'ChatAwesome'); } %set = checkForSequenceSkillCompletion(%clvictim); game.victimSetKilled[%set] = true; if(%set == 1 && nameToId("base1/CommandSwitch").team != $playerTeam) if(%killer == $player) schedule(800, $player.player, doText, Any_Jingo03); //no mercy, remember Ymir schedule(3000, game, checkObjectives); } function adviseHealthKit() { if($player.player.getdamageLevel() > 0.3 && $player.player.getInventory(RepairKit) && !game.useHeath) { game.useHealth = true; doText(Any_HealthKit); } } function checkForSequenceSkillCompletion(%victim) { %set = findVictimSet(%victim); //how is everbody esle in the set doing for(%i = 0; %i < getWordCount($victimSet[%set]); %i++){ %enemy = getWord($victimSet[%set], %i); if($enemy[%enemy] && $enemy[%enemy].player && $enemy[%enemy] != %victim) { error("There is $Enemy"@%enemy@" still in set "@ %set); return 0; } } return %set; } function findVictimSet(%victim) { for(%i = 1; %i <= 3; %i++) { for(%word = 0; %word < getWordCount($victimSet[%i]); %word++) { %num = getWord($victimSet[%i], %word); if($enemy[%num] == %victim) { error("Victim is member of victim set "@%i); return %i; } } } } function checkObjectives() { if( !isSafe($player, 100) ) { error("player is not safe"); schedule(10000, game, checkObjectives); return; //objectives cannot be met if enemies are near } else if(nameToId("base1/CommandSwitch").team == $playerTeam && !game.train07) { game.initialSensorMsg = true; //so you cant double back to get the sensorDestoyed msg game.train07 = true; schedule(5000, $player, doText, T2_07); } else if(game.turretsDestroyed && !game.train10 && game.victimSetKilled2) { game.train10 = true; tower2clean(); } else if(nameToId("base3/EasternFortification").team == $playerTeam && game.victimSetKilled3 && !game.tower3Secure) { game.tower3Secure = true; //Dogkiller can now pick up team objectives AIClearObjective($teammate0.DogKillerEscort); $teammate0.DogKillerEscort.weightLevel1 = 0; schedule(6000, game, dogKillerSpeaks, 'ChatSelfDefendBase'); doText(T2_10); doText(T2_10a); doText(T2_11, 2000); // first get the gens up if( ! nameToId("base3/EasternFortification").isPowered() ) { //echo("switch is not powered"); doText(t2_TipDefense02, 1000); } // now the inventory stuff doText(T2_inventory01); doText(T2_tipInventory01); doText(T2_tipInventory03); %timeToFirstWave = (2.1 - $pref::trainingDifficulty) * 10000; schedule(%timeToFirstWave, game, spawnWave, 1); //beginTowerDefense convertPassedEnemies(); updateTrainingObjectiveHud(obj2); game.respawnPoint = 3; } } function missionWaveDestroyed() { // there have been cases where this didnt seem to get called // lets try again convertPassedEnemies(); } function tower2clean() { doText(ANY_Waypoint02); %newWaypoint = "797.596 -652.19 162.924"; schedule(2000, game, setWaypointAt, %newWaypoint, "Control Switch"); updateTrainingObjectiveHud(obj3); game.respawnPoint = 2; } function convertPassedEnemies() { %num = clientGroup.getCount(); for(%i = 0; %i < %num; %i++) { %client = clientGroup.getObject(%i); if(%client.player) { if(%client.specialObjectives != 2) { %client.specialObjectives = 2; // and to make sure the bot doesnt THINK what its // currently doing is more important aiUnassignClient(%client); } } } } function singlePlayerGame::pickTeamSpawn(%game, %client, %respawn) { if(game.tower3Secure && %client.team == $enemyTeam) Training2LaterPickTeamSpawn(%game, %client); else parent::pickTeamSpawn(%game, %client, %respawn); } function Training2LaterPickTeamSpawn(%game, %client) { %dp = game.pickRandomDropPoint(%client); InitContainerRadiusSearch(%dp.position, 2, $TypeMasks::PlayerObjectType); if( containerSearchNext() ) { //error("Too close object, picking again?"); if(game.DPRetries++ > 100) return "0 0 300"; else return game.pickTeamSpawn(%client); } else { game.DPRetries = 0; return %dp.getTransform(); } } function singlePlayerGame::pickRandomDropPoint(%game, %client) { //error("picking random point for "@%client); %group = nameToID("MissionGroup/Teams/team2/DropPoints/Respawns"); %num = %group.getCount(); %random = getRandom(1,%num); %dp = %group.getObject( %random ); return %dp; } function checkForAllDead() { //none of this matters if you're dead if(!$player.player) { //error("You have no player!"); schedule(5000, game, checkForAllDead); return; } %num = clientGroup.getCount(); for(%i = 0; %i < %num; %i++) { %client = ClientGroup.getObject(%i); if(%client.player && %client.team == $enemyTeam) { //error("Client " @ %client @ " is still alive."); schedule(5000, game, checkForAllDead); return; } } //messageAll(0, "Debug: I dont think there are any enemies alive"); doText(T2_13); schedule(2000, game, missionComplete, $player.miscMsg[training2win]); } function objectiveDistanceChecks() { %playerPosition = $player.player.getTransform(); if(!%playerPosition) { schedule(5000, game, objectiveDistanceChecks); return; } %sensorDist = vectorDist(%playerPosition, game.sensor.position); if(%sensorDist < 250 && !game.sensorText) { game.sensorText = true; cancel($player.timeLimit); doText(T2_01a, 3000); doText(T2_01b); doText(T2_tipScanned); schedule(4000, game, updateTrainingObjectiveHud, obj5); } %base1distance = vectorDist( %playerPosition, game.base1.position ); //error("debug distance: base1- "@%base1distance); if(%base1distance < game.base1.threshold1 && !game.base1t1 ) { game.base1t1 = true; doText(T2_03); cancel($player.timeLimit); } if(%base1distance < game.base1.threshold2 && !game.base1t2 ) { game.base1t2 = true; doText(T2_04); doText(T2_04a); doText(T2_05); updateTrainingObjectiveHud(obj3); } %base2distance = vectorDist( %playerPosition, game.base2.position ); //error("debug distance: base2- "@%base2distance); if(%base2distance < game.base2.threshold1 && !game.base2t1 && !game.turretsDestroyed) { game.base2t1 = true; doText(T2_08); updateTrainingObjectiveHud(obj6); } //error(game.turretsDestroyed); if(%base2distance < game.base2.threshold2 && !game.base2t2 && !game.turretsDestroyed) { game.base2t2 = true; doText(T2_TipTurret02); if( getPlayersOnTeam($playerTeam) < 2) doText(T2_Cya01); } %base3distance = vectorDist( %playerPosition, game.base3.position ); //error("debug distance: base3- "@%base3distance); if(%base3distance < game.base3.threshold1 && !game.base3t1) { game.base3t1 = true; doText(T2_09a); } if(%base3distance < game.base3.threshold2 && !game.base3t2) { game.base3t2 = true; doText(T2_09b); if($player.player.getMountedImage($backpackSlot) $= "ShieldPackImage") doText(T2_ShieldPack02); } schedule(4000, game, objectiveDistanceChecks); } function buildTraining2Team2ObjectiveQs() { $T2ObjectiveQ[0] = new AIObjectiveQ(); MissionCleanup.add($T2ObjectiveQ[0]); $T2ObjectiveQ[1] = new AIObjectiveQ(); MissionCleanup.add($T2ObjectiveQ[1]); $T2ObjectiveQ[2] = new AIObjectiveQ(); MissionCleanup.add($T2ObjectiveQ[2]); //////////////////objectiveQ 0-------------------------------------------------------------- %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "-163.766 126.029 103.831"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the initial SensorLargePulse"; targetObject = "InitialPulseSensor"; targetClientId = "-1"; targetObjectId = nameToId("InitialPulseSensor"); location = "-163.766 126.029 103.831"; weightLevel1 = "4000"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "Light RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[0].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "-33.7195 -131.864 133.096"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the base1 Gen"; targetObject = "generator"; targetClientId = "-1"; targetObjectId = nameToId("base1/generator"); location = "-33.7195 -131.864 133.096"; weightLevel1 = "3200"; weightLevel2 = "1600"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[0].add(%newObjective); %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "-33.7195 -131.864 133.096"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the base1 gen"; targetObject = "generator"; targetClientId = "-1"; targetObjectId = nameToId("base1/generator"); location = "-12 -131.864 133.096"; weightLevel1 = "3100"; weightLevel2 = "1500"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[0].add(%newObjective); %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "-8.82616 -131.779 121.39"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the base 1 flipflop"; targetObject = "CommandSwitch"; targetClientId = "-1"; targetObjectId = nameToId("CommandSwitch"); location = "-8.82616 -131.779 121.39"; weightLevel1 = "3900"; weightLevel2 = "2000"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[0].add(%newObjective); %newObjective = new AIObjective(AIOTouchObject) { datablock = "AIObjectiveMarker"; position = "-8.82616 -131.779 121.39"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Capture the base1 FlFlop"; mode = "TouchFlipFlop"; targetObject = "CommandSwitch"; targetClientId = "-1"; targetObjectId = nameToID("CommandSwitch"); location = "-8.82616 -131.779 121.39"; weightLevel1 = "3850"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "1"; defense = "0"; equipment = "light"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); if($pref::trainingDifficulty != 1) $T2ObjectiveQ[0].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "-11.5761 -131.662 172.204"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the Sensor Pulsation"; targetObject = "Team2SensorMediumPulse1"; targetClientId = "-1"; targetObjectId = nameToId("Team2SensorMediumPulse1"); location = "-11.5761 -131.662 172.204"; weightLevel1 = "3100"; weightLevel2 = "1000"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[0].add(%newObjective); ///////////////objectiveQ 1--------------------------------------------------------------- %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "380.576 -301.298 101.843"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the Base2 Gen"; targetObject = "generator"; targetClientId = "-1"; targetObjectId = nameToId("base2/generator"); location = "380.576 -301.298 101.843"; weightLevel1 = "3100"; weightLevel2 = "1500"; weightLevel3 = "1000"; weightLevel4 = "0"; offense = "0"; defense = "1"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[1].add(%newObjective); ///////////////objectiveQ 2--------------------------------------------------------------- %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "787.866 -647.605 164.343"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair gen3"; targetObject = "Generator3"; targetClientId = "-1"; targetObjectId = nameToId("Generator3"); location = "787.866 -647.605 164.343"; weightLevel1 = "4000"; weightLevel2 = ""; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "787.866 -647.605 164.343"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend gen3"; targetObject = "Generator3"; targetClientId = "-1"; targetObjectId = nameToId("Generator3"); location = "787.866 -647.605 164.343"; weightLevel1 = "3400"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIOAttackObject) { datablock = "AIObjectiveMarker"; position = "785.96 -659.402 138.593"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Attack the Station Alpha"; targetObject = "Inventory_Alpha"; targetClientId = "-1"; targetObjectId = nameToId("Inventory_Alpha"); location = "785.96 -659.402 138.593"; weightLevel1 = "2900"; weightLevel2 = "1400"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "1"; defense = "0"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIOAttackObject) { datablock = "AIObjectiveMarker"; position = "793.435 -647.88 138.499"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Attack the Station Beta"; targetObject = "Inventory_Beta"; targetClientId = "-1"; targetObjectId = nameToId("Inventory_Beta"); location = "793.435 -647.88 138.499"; weightLevel1 = "2900"; weightLevel2 = "1400"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "1"; defense = "0"; desiredEquipment = ""; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "792.748 -656.036 143.914"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the SentryTurret"; targetObject = "TurtleTurret"; targetClientId = "-1"; targetObjectId = nameToId("TurtleTurret"); location = "792.748 -656.036 143.914"; weightLevel1 = "3100"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIOTouchObject) { datablock = "AIObjectiveMarker"; position = "797.596 -652.19 164.558"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Capture the Base3 FlipFlop"; mode = "TouchFlipFlop"; targetObject = "EasternFortification"; targetClientId = "-1"; targetObjectId = nameToId("EasternFortification"); location = "797.596 -652.19 164.558"; weightLevel1 = "3850"; weightLevel2 = "3400"; weightLevel3 = "3000"; weightLevel4 = "0"; offense = "1"; defense = "0"; desiredEquipment = "Light"; buyEquipmentSet = ""; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); if($pref::trainingDifficulty != 1) $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIOAttackObject) { datablock = "AIObjectiveMarker"; position = "787.866 -647.605 164.343"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Attack the generatorLarge"; targetObject = "Generator3"; targetClientId = "-1"; targetObjectId = nameToId("Generator3"); location = "787.866 -647.605 164.343"; weightLevel1 = "3100"; weightLevel2 = "1600"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "1"; defense = "0"; desiredEquipment = "ShieldPack"; buyEquipmentSet = "HeavyAmmoSet"; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "785.96 -659.402 138.593"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the StationInventory"; targetObject = "Inventory_Alpha"; targetClientId = "-1"; targetObjectId = nameToId("Inventory_Alpha"); location = "785.96 -659.402 138.593"; weightLevel1 = "3500"; weightLevel2 = "1400"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = "MediumRepairSet"; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "793.435 -647.88 138.499"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the StationInventory"; targetObject = "Inventory_Beta"; targetClientId = "-1"; targetObjectId = nameToId("Inventory_Beta"); location = "793.435 -647.88 138.499"; weightLevel1 = "3500"; weightLevel2 = "1400"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = "MediumRepairSet"; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "791.311 -655.22 156.159"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the Base 3FlipFlop"; targetObject = "EasternFortification"; targetClientId = "-1"; targetObjectId = nameToId("EasternFortification"); //location = "797.596 -652.19 164.558"; location = "791.311 -655.22 156.159"; weightLevel1 = "3900"; weightLevel2 = "2900"; weightLevel3 = "300"; weightLevel4 = "100"; offense = "0"; defense = "1"; desiredEquipment = "ShieldPack Plasma PlasmaAmmo"; buyEquipmentSet = "HeavyShieldSet"; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIORepairObject) { datablock = "AIObjectiveMarker"; position = "556.144 -411.448 133.224"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Repair the SensorMediumPulse"; targetObject = "MidwaySensor"; targetClientId = "-1"; targetObjectId = nameToId("MidwaySensor"); location = "556.144 -411.448 133.224"; weightLevel1 = "4000"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; equipment = "RepairPack"; buyEquipmentSet = ""; issuedByHuman = "0"; issuedByClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); %newObjective = new AIObjective(AIODefendLocation) { datablock = "AIObjectiveMarker"; position = "785.96 -659.402 138.593"; rotation = "1 0 0 0"; scale = "1 1 1"; description = "Defend the Downstairs//Stations"; targetObject = "Inventory_Alpha"; targetClientId = "-1"; targetObjectId = nameToId("Inventory_Alpha"); location = "785.96 -659.402 138.593"; weightLevel1 = "3700"; weightLevel2 = "0"; weightLevel3 = "0"; weightLevel4 = "0"; offense = "0"; defense = "1"; desiredEquipment = "ShieldPack Plasma PlasmaAmmo"; buyEquipmentSet = "HeavyShieldSet"; issuedByHuman = "0"; issuingClientId = "-1"; forceClientId = "-1"; locked = "0"; }; MissionCleanup.add(%newObjective); $T2ObjectiveQ[2].add(%newObjective); } //--Training2 package END ----------------------------------------------------------------- };