mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-03-26 23:59:33 +00:00
Initial commit
This commit is contained in:
parent
2211ed7650
commit
ebb3dc9cdd
10121 changed files with 801 additions and 4 deletions
988
docs/base/@vl2/scripts.vl2/scripts/Training4.cs
Normal file
988
docs/base/@vl2/scripts.vl2/scripts/Training4.cs
Normal file
|
|
@ -0,0 +1,988 @@
|
|||
// don't want this executing when building graphs
|
||||
if($OFFLINE_NAV_BUILD)
|
||||
return;
|
||||
|
||||
echo("Running Mission 4 Script");
|
||||
activatePackage(Training4);
|
||||
activatePackage(singlePlayerMissionAreaEnforce);
|
||||
|
||||
|
||||
//special sound
|
||||
datablock AudioProfile(HudFlashSound)
|
||||
{
|
||||
filename = "gui/buttonover.wav";
|
||||
description = AudioDefault3d;
|
||||
preload = true;
|
||||
};
|
||||
|
||||
$numberOfEnemies[1] = 0;
|
||||
$numberOfEnemies[2] = 0;
|
||||
$numberOfEnemies[3] = 0;
|
||||
|
||||
// Mission Variables
|
||||
$numberOfWaves[1] = 3;
|
||||
$numberOfWaves[2] = 5;
|
||||
$numberOfWaves[3] = 7;
|
||||
|
||||
$numberInWave[1] = 3;
|
||||
$numberInWave[2] = 5;
|
||||
$numberInWave[3] = 7;
|
||||
|
||||
$delayBeforeFirstWave[1] = 300000;
|
||||
$delayBeforeFirstWave[2] = 200000;
|
||||
$delayBeforeFirstWave[3] = 20000;
|
||||
|
||||
$missionBotSkill[1] = 0.0;
|
||||
$missionBotSkill[2] = 0.5;
|
||||
$missionBotSkill[3] = 0.8;
|
||||
|
||||
$numberOfTeammates = 2;
|
||||
|
||||
package training4 {
|
||||
//===============================================begin the training 4 package stuff====
|
||||
function getTeammateGlobals()
|
||||
{
|
||||
$TeammateWarnom0 = "Firecrow";
|
||||
$teammateskill0 = 0.5;
|
||||
$teammateVoice0 = Fem3;
|
||||
$teammateEquipment0 = 0;
|
||||
$teammateGender0 = Female;
|
||||
|
||||
$TeammateWarnom1 = "Proteus";
|
||||
$teammateSkill1 = 0.5;
|
||||
$teammateVoice1 = Male4;
|
||||
$teammateEquipment1 = 0;
|
||||
$teammateGender1 = Male;
|
||||
}
|
||||
|
||||
|
||||
function MP3Audio::play(%this)
|
||||
{
|
||||
//too bad...no mp3 in training
|
||||
}
|
||||
|
||||
|
||||
function ClientCmdSetHudMode(%mode, %type, %node)
|
||||
{
|
||||
parent::ClientCmdSetHudMode(%mode, %type, %node);
|
||||
//TrainingMap.push();
|
||||
}
|
||||
|
||||
// get the ball rolling
|
||||
function startCurrentMission(%game)
|
||||
{
|
||||
game.equip($player.player);
|
||||
|
||||
if($pref::TrainingDifficulty == 3)
|
||||
updateTrainingObjectiveHud(obj10);
|
||||
else{
|
||||
schedule(5000, game, repairSensorTower);
|
||||
updateTrainingObjectiveHud(obj1);
|
||||
}
|
||||
$player.beginSpawn = schedule($delayBeforeFirstWave[$pref::TrainingDifficulty], %game, spawnWave, 1);
|
||||
$AIDisableChat = true;
|
||||
game.missionTime = getSimTime();
|
||||
activateskillSpecificTrainingSettings();
|
||||
}
|
||||
|
||||
function activateskillSpecificTrainingSettings()
|
||||
{
|
||||
%skill = $pref::TrainingDifficulty;
|
||||
|
||||
// all
|
||||
nameToId("Team1SensorLargePulse1").setDamageLevel(1.5);
|
||||
nameToId("Team1SensorLargePulse2").setDamageLevel(1.5);
|
||||
|
||||
//skill 2 & 3 :
|
||||
//no forcefield, no upstairs Inventory deploy, aaturret(in the mis file)
|
||||
if(%skill > 1) {
|
||||
|
||||
%invDepObj = findObjByDescription("Deploy Upstairs Station", 1);
|
||||
removeDescribedObj(%invDepObj, 1);
|
||||
}
|
||||
// skill 3: no turret, no destroy turret or upstairs gen objectives
|
||||
if(%skill > 2) {
|
||||
nameToId(Team1TurretBaseLarge1).hide(true);
|
||||
freeTarget(nameToId(Team1TurretBaseLarge1).getTarget());
|
||||
nameToId(GenForceField).delete();
|
||||
}
|
||||
}
|
||||
|
||||
function countTurretsAllowed(%type)
|
||||
{
|
||||
return $TeamDeployableMax[%type];
|
||||
}
|
||||
|
||||
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 pickEquipment()
|
||||
{
|
||||
return getRandom(10);
|
||||
}
|
||||
|
||||
function AIEngageTask::assume(%task, %client)
|
||||
{
|
||||
Parent::assume(%task, %client);
|
||||
|
||||
if(%client.team != $playerTeam)
|
||||
game.biodermAssume(%client);
|
||||
}
|
||||
|
||||
function toggleScoreScreen(%val)
|
||||
{
|
||||
if ( %val )
|
||||
messageClient($player, 0, $player.miscMsg[noScoreScreen]);
|
||||
}
|
||||
|
||||
function toggleNetDisplayHud( %val )
|
||||
{
|
||||
// Hello, McFly? This is training! There's no net in training!
|
||||
}
|
||||
|
||||
function voiceCapture( %val )
|
||||
{
|
||||
// Uh, who do you think you are talking to?
|
||||
}
|
||||
|
||||
function singlePlayerGame::pickTeamSpawn(%game, %client)
|
||||
{
|
||||
if(%client.team == $player.team)
|
||||
return parent::pickTeamSpawn(%game, %client);
|
||||
%dp = game.pickRandomDropPoint(%client);
|
||||
InitContainerRadiusSearch(%dp.position, 2, $TypeMasks::PlayerObjectType);
|
||||
if( containerSearchNext() ) {
|
||||
//echo("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/team" @ %client.team @ "/DropPoints");
|
||||
%num = %group.getCount();
|
||||
%random = getRandom(1,%num);
|
||||
%dp = %group.getObject( %random );
|
||||
|
||||
return %dp;
|
||||
}
|
||||
|
||||
function spawnSinglePlayer()
|
||||
{
|
||||
$player.lives--;
|
||||
|
||||
%spawn = DefaultGame::pickTeamSpawn(game, $playerTeam);
|
||||
game.createPlayer($player, %spawn);
|
||||
$player.setControlObject($player.player);
|
||||
//messageClient($player, 0, "Respawns Remaining: "@$player.lives);
|
||||
game.equip($player.player, 0);
|
||||
}
|
||||
|
||||
function Generator::onDisabled(%data, %obj, %prevState)
|
||||
{
|
||||
Parent::onDisabled(%data, %obj, %prevState);
|
||||
if(%obj == nameToId(BaseGen)) //its our primary gen
|
||||
{
|
||||
doText(T4_Warning02);
|
||||
game.MissionCounter = schedule(60000, 0, MissionFailedTimer);
|
||||
setWaypointAt(%obj.position, "Repair Generator");
|
||||
clockHud.setTime(1);
|
||||
updateTrainingObjectiveHud(obj5);
|
||||
}
|
||||
else if($pref::trainingDifficulty < 2)
|
||||
{
|
||||
if (getRandom() < 0.5 )
|
||||
doText(T4_ForceFields01);
|
||||
else doText(T4_FFGenDown01);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Generator::onEnabled(%data, %obj, %prevState)
|
||||
{
|
||||
Parent::onEnabled(%data, %obj, %prevState);
|
||||
//error("Gen up somewhere");
|
||||
if(%obj == nameToId(BaseGen)) {
|
||||
cancel(game.MissionCounter);
|
||||
objectiveHud.trainingTimer.setVisible(false);
|
||||
updateTrainingObjectiveHud(obj10);
|
||||
$player.currentWaypoint.delete();
|
||||
cancel($player.player.trainingTimerHide);
|
||||
doText(T4_GenUp);
|
||||
checkForWin();
|
||||
//error("its the main gen");
|
||||
|
||||
//restore the clock
|
||||
%time = getSimTime() - game.missionTime;
|
||||
%dif = %time /60000;
|
||||
clockHud.setTime(%dif * -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// mortar mount
|
||||
function playerMountWeapon(%tag, %text, %image, %player, %slot)
|
||||
{
|
||||
if( game.firstTime++ < 2)
|
||||
return; // initial weapon mount doesnt count
|
||||
if(%image.getName() $= "MortarImage" && !game.msgMortar) {
|
||||
game.msgMortar = true;
|
||||
doText(T4_TipMortar);
|
||||
}
|
||||
}
|
||||
|
||||
// station use
|
||||
function StationInvEnter(%a1, %a2, %data, %obj, %colObj)
|
||||
{
|
||||
if(%colObj != $player.player)
|
||||
return;
|
||||
//clearQueue();
|
||||
//if(!game.blowoff)
|
||||
//blowoff();
|
||||
if(game.msgEnterInv++ == 1){
|
||||
doText(T4_tipDefense05);
|
||||
}
|
||||
}
|
||||
|
||||
function stationTrigger::onEnterTrigger(%data, %obj, %colObj)
|
||||
{
|
||||
Parent::onEnterTrigger(%data, %obj, %colObj);
|
||||
messageClient(%colObj.client, 'msgEnterInvStation', "", %data, %obj, %colObj);
|
||||
}
|
||||
|
||||
|
||||
function serverCmdBuildClientTask(%client, %task, %team)
|
||||
{
|
||||
parent::serverCmdBuildClientTask(%client, %task, %team);
|
||||
error("serverCmdBuildClientTask(" @%client@", "@%task@", "@%team@")");
|
||||
|
||||
if($pref::trainingDifficulty > 2)
|
||||
return;
|
||||
|
||||
//hack: we have to get %objective from the parent function
|
||||
// this seems to work
|
||||
%objective = %client.currentAIObjective;
|
||||
error(%client.currentAIObjective SPC %objective.getName());
|
||||
|
||||
if ((%objective.getName() $= "AIORepairObject") &&
|
||||
(%objective.targetObjectId.getDataBlock().getName() $= "SensorLargePulse")) {
|
||||
|
||||
//error("repair order issued and forced");
|
||||
// force the ai
|
||||
%objective.weightLevel1 = 10000;
|
||||
|
||||
if(!game.issueRepairOrder && game.expectingRepairOrder) {
|
||||
game.issueRepairOrder = true;
|
||||
doText(Any_good, 2000);
|
||||
cameraSpiel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function CommanderMapGui::onWake(%this)
|
||||
{
|
||||
|
||||
parent::onWake(%this);
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
//error("Waking the command map.");
|
||||
messageClient($player, 'commandMapWake', "");
|
||||
}
|
||||
|
||||
function CommanderTree::onCategoryOpen(%this, %category, %open)
|
||||
{
|
||||
//error("commander tree button pressed");
|
||||
parent::onCategoryOpen(%this, %category, %open);
|
||||
|
||||
if(%category $= "Support" && game.ExpectiongSupportButton) {
|
||||
game.ExpectiongSupportButton = false;
|
||||
doText(ANY_check01);
|
||||
doText(T4_03i, 1000);
|
||||
doText(T4_03j);
|
||||
}
|
||||
if(%category $= "Tactical" && game.ExpectiongTacticalButton) {
|
||||
game.ExpectiongTacticalButton = false;
|
||||
doText(ANY_check02);
|
||||
messageClient($player, 0, "Click on the control box after the turrets name to control the turret.");
|
||||
game.CheckingTurretControl = true;
|
||||
}
|
||||
}
|
||||
|
||||
// control turret/camera
|
||||
//------------------------------------------------------------------------------
|
||||
function serverCmdControlObject(%client, %targetId)
|
||||
{
|
||||
parent::serverCmdControlObject(%client, %targetId);
|
||||
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
error("Training 4 serverCmdControlObject");
|
||||
%obj = getTargetObject(%targetId);
|
||||
echo("what do we get back from the parent funtion ? "@%obj);
|
||||
%objType = %obj.getDataBlock().getName();
|
||||
echo("it is a "@%objType);
|
||||
|
||||
if(game.CheckingTurretControl) {
|
||||
if(%objType $= "TurretBaseLarge") {
|
||||
game.CheckingTurretControl = false;
|
||||
schedule(3000, game, turretSpielEnd);
|
||||
//error("Debug: You are controlling a turret f00!");
|
||||
}
|
||||
}
|
||||
// if(game.CheckingCameraControl) {
|
||||
// if(%objType $= "TurretDeployedCamera") {
|
||||
// game.CheckingCameraControl = false;
|
||||
// schedule(3000, $player.player, cameraSpielEnd);
|
||||
// //error("Debug: You are controlling a camera, w00t!");
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
function singlePlayerGame::sensorOnRepaired(%obj, %objName)
|
||||
{
|
||||
//error("singlePlayerGame::sensorOnRepaired called");
|
||||
Parent::sensorOnRepaired(%obj, %objName);
|
||||
if(game.expectingTowerRepair && !game.playedOpening && !game.firstSpawn)
|
||||
openingSpiel();
|
||||
}
|
||||
|
||||
function cameraSpiel()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
doText(T4_tipCamera01);
|
||||
updateTrainingObjectiveHud(obj3);
|
||||
$player.player.setInventory(CameraGrenade , 8); // cheating just in case the player is a dufas
|
||||
game.CheckingCameraControl = true;
|
||||
|
||||
}
|
||||
|
||||
function CameraGrenadeThrown::onThrow(%this, %camGren)
|
||||
{
|
||||
Parent::onThrow(%this, %camGren);
|
||||
if(game.CheckingCameraControl && !game.firstSpawn) {
|
||||
messageClient($player, 0, "Go back to the command map to access camera view.");
|
||||
game.CheckingCameraControl = false;
|
||||
game.wakeExpectingCamera = true;
|
||||
updateTrainingObjectiveHud(obj2);
|
||||
doText(T4_tipCamera02);
|
||||
}
|
||||
}
|
||||
|
||||
//like mission 1 and 2 there is a spiel at the begining
|
||||
function repairSensorTower()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
setWaypointAt(nameToId(Team1SensorLargePulse2).position, "Repair Sensor");
|
||||
game.expectingTowerRepair = true;
|
||||
doText(T4_01);
|
||||
doText(T4_01b);
|
||||
}
|
||||
|
||||
function openingSpiel()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
$player.currentWaypoint.delete();
|
||||
updateTrainingObjectiveHud(obj7);
|
||||
|
||||
game.playedOpening = true;
|
||||
//doText(T4_01c);
|
||||
doText(T4_02a);
|
||||
doText(T4_03);
|
||||
doText(T4_02);
|
||||
//doText(T4_02b);
|
||||
doText(T4_03a);
|
||||
}
|
||||
|
||||
function ThreeAEval()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
game.wakeExpectingSquadOrder = true;
|
||||
updateTrainingObjectiveHud(obj2);
|
||||
}
|
||||
|
||||
function missionSpawnedAI()
|
||||
{
|
||||
if(!game.firstSpawn) {
|
||||
game.firstspawn = true;
|
||||
doText(ANY_warning05);
|
||||
doText(ANY_warning03); // does a playgui check
|
||||
|
||||
//updateTrainingObjectiveHud(obj5);
|
||||
}
|
||||
}
|
||||
|
||||
function singlePlayerPlayGuiCheck()
|
||||
{
|
||||
if(CommanderMapGui.open)
|
||||
CommanderMapGui.close();
|
||||
|
||||
updateTrainingObjectiveHud(obj10);
|
||||
}
|
||||
|
||||
|
||||
function missionWaveDestroyed(%wave)
|
||||
{
|
||||
if(%wave == 1) {
|
||||
doText(T4_06);
|
||||
doText(T4_tipDefense02);
|
||||
}
|
||||
else if(%wave == 2)
|
||||
doText(T4_08);
|
||||
|
||||
else if( %wave == $numberOfWaves[$pref::TrainingDifficulty] ) {
|
||||
//MessageAll(0, "The last wave is destroyed. This mission would end.");
|
||||
game.allEnemiesKilled = true;
|
||||
checkForWin();
|
||||
}
|
||||
}
|
||||
|
||||
function checkForWin()
|
||||
{
|
||||
if(game.allEnemiesKilled && nameToId(BaseGen).isEnabled()) {
|
||||
clearQueue();
|
||||
doText(T4_10);
|
||||
doText(T4_11);
|
||||
schedule(4000, game, missionComplete, $player.miscMsg[training4win]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function cameraSpielEnd()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
doText(T4_tipCamera03);
|
||||
doText(T4_tipCamera04, 2000);
|
||||
doText(T4_controlTurret);
|
||||
game.CheckingTurretControl = true;
|
||||
game.wakeExpectingTurret = true;
|
||||
updateTrainingObjectiveHud(obj4);
|
||||
}
|
||||
|
||||
function turretSpielEnd()
|
||||
{
|
||||
if(game.firstSpawn)
|
||||
return;
|
||||
|
||||
doText(T4_tipObjects);
|
||||
doText(T4_CCend, 4000);
|
||||
|
||||
doText(T4_TipGenerator01, 2000);
|
||||
doText(T4_TipGenerator01a);
|
||||
doText(T4_TipGenerator01b);
|
||||
doText(T4_TipGenerator02, 2000);
|
||||
|
||||
|
||||
doText(T4_tipDefense01);
|
||||
// doText(T4_tipDefense06);
|
||||
// doText(T4_tipDefense07);
|
||||
// doText(T4_tipDefense08);
|
||||
// doText(T4_tipDefense09);
|
||||
updateTrainingObjectiveHud(obj9);
|
||||
//game.blowOff = true; //feel free to use the inventory stations
|
||||
}
|
||||
|
||||
|
||||
// turret deployment advice and messages
|
||||
function singlePlayerFailDeploy(%tag, %message)
|
||||
{
|
||||
%text = detag(%message);
|
||||
%phrase = getWord(%text, 0) SPC getWord(%text, 1);
|
||||
//echo(%phrase);
|
||||
|
||||
switch$(%phrase) {
|
||||
case "\c2Item must":
|
||||
if(!game.tipDep1) {
|
||||
game.tipDep1 = true;
|
||||
doText(T4_tipDeploy01);
|
||||
}
|
||||
case "\c2You cannot":
|
||||
if(!game.tipDep2) {
|
||||
game.tipDep2 = true;
|
||||
doText(T4_tipDeploy02);
|
||||
}
|
||||
case "\c2Interference from":
|
||||
if(!game.tipDepT) {
|
||||
game.tipDepT = true;
|
||||
doText(T4_tipDepTurret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// not really a callback but this prolly goes here
|
||||
function cloakingUnitAdded()
|
||||
{
|
||||
if(game.addedCloak++ < 2) {
|
||||
doText(T4_TipDefense03);
|
||||
}
|
||||
}
|
||||
|
||||
function RepairingObj(%tag, %text, %name, %obj)
|
||||
{
|
||||
if(%obj.getDataBlock().getName() $= "SensorLargePulse" && !game.repairingSensor) {
|
||||
game.repairingSensor = true;
|
||||
schedule(2000, $player.player, doText, T4_01c);
|
||||
}
|
||||
}
|
||||
|
||||
// equipment =======================================================================
|
||||
//===================================================================================
|
||||
|
||||
//there are a plethora of configs in this mission
|
||||
|
||||
function SinglePlayerGame::equip(%game, %player, %set)
|
||||
{
|
||||
if(!isObject(%player))
|
||||
return;
|
||||
|
||||
//ya start with nothing...NOTHING!
|
||||
%player.clearInventory();
|
||||
|
||||
for(%i =0; %i<$InventoryHudCount; %i++)
|
||||
%player.client.setInventoryHudItem($InventoryHudData[%i, itemDataName], 0, 1);
|
||||
%player.client.clearBackpackIcon();
|
||||
|
||||
//error("equping Player "@%player@" with set"@%set);
|
||||
switch (%set)
|
||||
{
|
||||
case 0:
|
||||
//echo("player Heavy");
|
||||
|
||||
%player.setArmor("Heavy");
|
||||
|
||||
%player.setInventory(RepairPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(CameraGrenade,8);
|
||||
%player.setInventory(Mine,3);
|
||||
|
||||
%player.setInventory(Chaingun, 1);
|
||||
%player.setInventory(ChaingunAmmo, 200);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(Mortar, 1);
|
||||
%player.setInventory(MortarAmmo, 10);
|
||||
%player.setInventory(Blaster,1);
|
||||
%player.setInventory(GrenadeLauncher,1);
|
||||
%player.setInventory(GrenadeLauncherAmmo,15);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Disc");
|
||||
%player.weaponCount = 5;
|
||||
|
||||
case 1:
|
||||
//echo("Light Skirmisher");
|
||||
|
||||
%player.setArmor("Light");
|
||||
|
||||
%player.setInventory(EnergyPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(ConcussionGrenade,5);
|
||||
|
||||
%player.setInventory(Blaster,1);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(Chaingun, 1);
|
||||
%player.setInventory(ChaingunAmmo, 100);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Chaingun");
|
||||
%player.weaponCount = 3;
|
||||
|
||||
case 2:
|
||||
//script hook in our equip stuff also
|
||||
cloakingUnitAdded();
|
||||
|
||||
//echo("Light Assassin Config");
|
||||
|
||||
%player.setArmor("Light");
|
||||
|
||||
%player.setInventory(CloakingPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(FlashGrenade,5);
|
||||
%player.setInventory(Mine,3);
|
||||
|
||||
%player.setInventory(Plasma, 1);
|
||||
%player.setInventory(PlasmaAmmo, 20);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(ShockLance,1);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Disc");
|
||||
%player.weaponCount = 3;
|
||||
|
||||
case 3:
|
||||
//echo("Light Sniper");
|
||||
|
||||
%player.setArmor("Light");
|
||||
|
||||
%player.setInventory(EnergyPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(ConcussionGrenade,5);
|
||||
|
||||
%player.setInventory(Chaingun,1);
|
||||
%player.setInventory(ChaingunAmmo,100);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(SniperRifle, 1);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("SniperRifle");
|
||||
%player.weaponCount = 3;
|
||||
|
||||
case 4:
|
||||
echo("Medium Base Rape");
|
||||
|
||||
%player.setArmor("Medium");
|
||||
|
||||
%player.setInventory(ShieldPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(Grenade,6);
|
||||
%player.setInventory(Mine,3);
|
||||
|
||||
%player.setInventory(Plasma, 1);
|
||||
%player.setInventory(PlasmaAmmo, 40);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(ElfGun, 1);
|
||||
%player.setInventory(GrenadeLauncher,1);
|
||||
%player.setInventory(GrenadeLauncherAmmo, 10);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("GrenadeLauncher");
|
||||
%player.weaponCount = 4;
|
||||
|
||||
case 5:
|
||||
//echo("Medium Killing Machine");
|
||||
|
||||
%player.setArmor("Medium");
|
||||
|
||||
%player.setInventory(AmmoPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(Grenade,6);
|
||||
%player.setInventory(Mine,3);
|
||||
|
||||
%player.setInventory(Plasma, 1);
|
||||
%player.setInventory(PlasmaAmmo, 40);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(GrenadeLauncher, 1);
|
||||
%player.setInventory(GrenadeLauncherAmmo, 10);
|
||||
%player.setInventory(MissileLauncher,1);
|
||||
%player.setInventory(MissileLauncherAmmo, 10);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Plasma");
|
||||
%player.weaponCount = 4;
|
||||
|
||||
case 6:
|
||||
//echo("Medium Wuss");
|
||||
|
||||
%player.setArmor("Medium");
|
||||
|
||||
%player.setInventory(EnergyPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(ConcussionGrenade,6);
|
||||
|
||||
%player.setInventory(Blaster, 1);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(Elf, 1);
|
||||
%player.setInventory(Chaingun,1);
|
||||
%player.setInventory(ChaingunAmmo, 150);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Disc");
|
||||
%player.weaponCount = 4;
|
||||
|
||||
case 7:
|
||||
//echo("Heavy Long Range");
|
||||
|
||||
%player.setArmor("Heavy");
|
||||
|
||||
%player.setInventory(EnergyPack, 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(MissileLauncher,1);
|
||||
%player.setInventory(MissileLauncherAmmo, 15);
|
||||
%player.setInventory(GrenadeLauncher,1);
|
||||
%player.setInventory(GrenadeLauncherAmmo,15);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Mortar");
|
||||
%player.weaponCount = 5;
|
||||
|
||||
case 8:
|
||||
//echo("Default Config");
|
||||
|
||||
%player.setArmor("Light");
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
|
||||
%player.setInventory(Blaster,1);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(Chaingun, 1);
|
||||
%player.setInventory(ChaingunAmmo, 100);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Blaster");
|
||||
%player.weaponCount = 3;
|
||||
|
||||
case 9:
|
||||
//echo("Heavy Rate of Fire");
|
||||
|
||||
%player.setArmor("Heavy");
|
||||
|
||||
%player.setInventory(AmmoPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(Grenade,8);
|
||||
%player.setInventory(Mine,3);
|
||||
|
||||
%player.setInventory(Chaingun, 1);
|
||||
%player.setInventory(ChaingunAmmo, 200);
|
||||
%player.setInventory(Disc,1);
|
||||
%player.setInventory(DiscAmmo, 15);
|
||||
%player.setInventory(Mortar, 1);
|
||||
%player.setInventory(MortarAmmo, 10);
|
||||
%player.setInventory(Plasma,1);
|
||||
%player.setInventory(PlasmaAmmo, 50);
|
||||
%player.setInventory(GrenadeLauncher,1);
|
||||
%player.setInventory(GrenadeLauncherAmmo,15);
|
||||
%player.setInventory(TargetingLaser, 1);
|
||||
|
||||
%player.use("Mortar");
|
||||
%player.weaponCount = 5;
|
||||
|
||||
case 10:
|
||||
//echo("Heavy Inside Attacker");
|
||||
|
||||
%player.setArmor("Heavy");
|
||||
|
||||
%player.setInventory(ShieldPack, 1);
|
||||
|
||||
%player.setInventory(RepairKit,1);
|
||||
%player.setInventory(ConcussionGrenade,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;
|
||||
}
|
||||
}
|
||||
|
||||
// silly littly functions
|
||||
function flashButton(%buttonName)
|
||||
{
|
||||
%time = 800;
|
||||
%num = 6;
|
||||
for(%i=0; %i<%num; %i++) {
|
||||
schedule( %time*%i, $player.player, "eval", %buttonName@".setVisible(false);");
|
||||
|
||||
schedule(%time*%i + %time/2, $player.player, "eval", %buttonName@".setVisible(true);");
|
||||
schedule(%time*%i, $player.player, serverPlay2d, HudFlashSound);
|
||||
}
|
||||
}
|
||||
|
||||
function showCommandPulldown(%button)
|
||||
{
|
||||
//this is what I hacked in to make pretty with the showing off of the command tree
|
||||
commanderTree.openCategory(%button, true);
|
||||
mentionPulldown(%button);
|
||||
commanderTree.schedule(3000, openCategory, %button, false);
|
||||
}
|
||||
|
||||
function affectAllCommandPulldown(%open)
|
||||
{
|
||||
commanderTree.openCategory(Clients, %open);
|
||||
commanderTree.openCategory(Tactical, %open);
|
||||
commanderTree.openCategory(Support, %open);
|
||||
commanderTree.openCategory(Waypoints, %open);
|
||||
commanderTree.openCategory(Objectives, %open);
|
||||
}
|
||||
|
||||
function mentionPulldown(%button)
|
||||
{
|
||||
switch$(%button)
|
||||
{
|
||||
case "Clients":
|
||||
doText(T4_03b);
|
||||
|
||||
case "Tactical":
|
||||
doText(T4_03c);
|
||||
|
||||
case "Support":
|
||||
doText(T4_03d);
|
||||
|
||||
case "Waypoints":
|
||||
doText(T4_03e);
|
||||
|
||||
case "Objectives":
|
||||
doText(T4_03f);
|
||||
doText(T4_03g);
|
||||
doText(t4_03h);
|
||||
}
|
||||
}
|
||||
|
||||
function training4CommandMapWake()
|
||||
{
|
||||
error("training4CommandMapWake Called");
|
||||
if(game.wakeExpectingSquadOrder && !game.firstSpawn) {
|
||||
game.wakeExpectingSquadOrder = false;
|
||||
|
||||
// commander map waypoint
|
||||
%pos = nameToId(Base).position;
|
||||
%obj = createClientTarget(-1, %pos);
|
||||
%obj.createWaypoint("Nagakhun Base");
|
||||
|
||||
// cmap objective
|
||||
commanderTree.registerEntryType("Objectives", getTag('Base'), false, "commander/MiniIcons/com_flag_grey", "255 255 255");
|
||||
createTarget(%id, 'Defend', "", "", 'Base', $player.getSensorGroup());
|
||||
|
||||
affectAllCommandPulldown(false);
|
||||
|
||||
//here we go...drop down the thingies
|
||||
schedule( 2500, $player.player, showCommandPulldown, Clients);
|
||||
schedule( 6000, $player.player, showCommandPulldown, Tactical);
|
||||
schedule(10000, $player.player, showCommandPulldown, Support);
|
||||
schedule(14000, $player.player, showCommandPulldown, Waypoints);
|
||||
schedule(18000, $player.player, showCommandPulldown, Objectives);
|
||||
|
||||
//schedule(24000, $player.player, affectAllCommandPulldown, true);
|
||||
}
|
||||
else if(game.wakeExpectingTurret && !game.firstSpawn) {
|
||||
messageClient($player, 0, "Click on \"Tactical Assets\" to view turrets.");
|
||||
//flashButton(CMDTacticalButton);
|
||||
game.ExpectiongTacticalButton = true;
|
||||
game.wakeExpectingTurret = false;
|
||||
}
|
||||
else if(game.wakeExpectingCamera && !game.firstSpawn) {
|
||||
messageClient($player, 0, "Click on the control box to the right of the camera\'s name to control the camera.");
|
||||
cameraSpielEnd();
|
||||
game.wakeExpectingCamera = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Objectives ==================================================================
|
||||
//================================================================================
|
||||
function missionFailedTimer()
|
||||
{
|
||||
missionFailed($player.miscMsg[training4GenLoss]);
|
||||
}
|
||||
|
||||
|
||||
function blowoff()
|
||||
{
|
||||
game.blowoff = true;
|
||||
clearQueue();
|
||||
doText(Any_Blowoff02, 2000, 1);
|
||||
|
||||
// okay, the player wants to play huh?
|
||||
// if we are still waiting for the enemies to spawn at this point
|
||||
// cancel that and spawn them now...well, soon
|
||||
if($player.beginSpawn){
|
||||
cancel($player.beginSpawn);
|
||||
%time = getRandom(1, 20);
|
||||
//error("Blowing off the training: spawning enemies in "@ %time * 1000 @" seconds.");
|
||||
schedule(%time*1000, game, beginTraining4Enemies);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function findObjbyDescription(%desc, %team)
|
||||
{
|
||||
%q = $objectiveQ[%team];
|
||||
for(%i = 0; %i < %q.getCount(); %i++)
|
||||
{
|
||||
%objective = %q.getObject(%i);
|
||||
if(%objective.description $= %desc)
|
||||
return %objective;
|
||||
}
|
||||
}
|
||||
|
||||
function removeDescribedObj( %obj )
|
||||
{
|
||||
%invDepObj.weightLevel1 = 0;
|
||||
%invDepObj.weightLevel2 = 0;
|
||||
%invDepObj.weightLevel3 = 0;
|
||||
%invDepObj.weightLevel4 = 0;
|
||||
$ObjectiveQ[1].remove(%invDepObj);
|
||||
// clear it in case anyone has picked it up
|
||||
AIClearObjective(%invDepObj);
|
||||
}
|
||||
|
||||
//===============================================END the training 4 package stuff====
|
||||
};
|
||||
|
||||
// Dialog stuff ===================================================================
|
||||
//=================================================================================
|
||||
|
||||
|
||||
|
||||
// Callbacks //==================================================================
|
||||
//================================================================================
|
||||
|
||||
//add callbacks
|
||||
addMessageCallback('MsgDeployFailed', singlePlayerFailDeploy);
|
||||
addMessageCallback('MsgWeaponMount', playerMountWeapon);
|
||||
addMessageCallback('msgEnterInvStation', StationInvEnter);
|
||||
addMessageCallback('MsgRepairPackRepairingObj', RepairingObj);
|
||||
addMessageCallback('commandMapWake', training4CommandMapWake);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue