T2-BoL/missions/Beginning.cs

416 lines
11 KiB
PHP
Raw Normal View History

// don't want this executing when building graphs
if($OFFLINE_NAV_BUILD)
return;
// Script for Training
//===================================================================================
//error("Training 1 script");
//Note: Quite messy right now.. I'll organize when it's done
//Not sure why this mission causes lots of console spam..
// variables
$numberOfEnemies[1] = 6;
$numberOfEnemies[2] = 6;
$numberOfEnemies[3] = 6;
$numberOfTeammates = 1;
$missionBotSkill[1] = 0.2;
$missionBotSkill[2] = 0.4;
$missionBotSkill[3] = 0.7;
// package and callbacks
package Beginning {
//BEGIN BEGINNING PACKAGE =======================================================================
function SinglePlayerGame::initGameVars(%game)
{
echo("initializing beginning (TDS mission 1) game vars");
Game.captorName = "Alchaldes"; //Main dude speaking
Game.controllerName = "Hammurabi"; //Guy at control panel
Game.guardOneName = "Romulus";
Game.guardTwoName = "Hercules";
}
function PlayGui::onWake(%this)
{
parent::onWake(%this);
//error("Waking training play gui");
// okay we know the victim...erm...player is looking
// and we hope they have a body so lets do this
if(!game.playedIntro) {
game.PlayGuiAwake = true;
beginBeginning();
}
}
function getTeammateGlobals()
{
$TeammateWarnom0 = "Gila";
$teammateSkill0 = 0.5;
$teammateVoice0 = Derm3;
$teammateEquipment0 = 0;
$teammateGender0 = B;
}
function MP3Audio::play(%this)
{
//too bad...no mp3 in training
}
function toggleCommanderMap(%val)
{
// No command Circuit fer' you!
}
function toggleTaskListDlg( %val )
{
// Tasks? What tasks? Get the ef out of there when given the chance!
}
function toggleInventoryHud( %val )
{
// Not even a message
}
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 giveall()
{
error("When the going gets tough...wussies like you start cheating!");
messageClient($player, 0, "Cheating eh? What\'s next? Camping?");
}
// get the ball rolling
//------------------------------------------------------------------------------
function startCurrentMission()
{
playGui.add(outerChatHud);
//fade up from black
ServerConnection.setBlackOut(true, 0);
new actionMap(ModifiedMap);
modifiedMap.bind(mouse0, "xaxis", yaw);
modifiedMap.bind(mouse0, "yaxis", pitch);
}
function singlePlayerDead()
{
missionFailed($player.miscMsg[TDSGenericLoss]);
AIMissionEnd();
$objectiveQ[$enemyTeam].clear();
}
function beginBeginning()
{
if(game.playedIntro)
return;
$Beginning = ServerConnection.schedule(3000, setBlackOut, false, 4000);
$player.player.setTransform(DP.getTransform());
$enemy0.stepMove(AlchaldesVisit.getPosition());
yaw(1);
return;
game.playedIntro = true;
lockArmorHack(true); //Don't let our playah move
//Now set up the victim
turnPlayerToPosition($enemy0.player.getPosition());
$player.player.schedule(3000,"setInvincibleMode",$InvincibleTime,0.02);
schedule(3200,0,"hideHudHACK",false);
pitch(40);
if(!$firstperson)//Make sure we're in first person every time
toggleFirstPerson($player);
//Although both can't jet.. apparently b0ts need them to get around (even jumping down from stuff)
$player.player.setRechargeRate(0);
$player.player.setEnergyLevel(0);
$teammate0.player.setTransform(Warnom0.getTransform());
//Alchaldes (leader of Criollos)
$enemy0.aimAt($player.player.getPosition());
$enemy0.player.clearInventory();
$enemy0.player.setInventory("EnergyPack",1); //Has a med condition; needs energy pack at all times
setName($enemy0,Game.CaptorName);
setSkin($enemy0,"HALO_SKIN");
//Hammurabi (Cloning -- lead researcher)
$enemy1.aimAt($player.player.getPosition());
$enemy1.player.clearInventory();
$enemy1.player.setInventory("EnergyPack",1);
setName($enemy1,Game.ControllerName);
setVoice($enemy1,"Derm3");
setSkin($enemy1,"HALO_SKIN");
//Guard 1 (Looking at Dolosus)
$enemy2.aimAt($player.player.getPosition());
setName($enemy2,Game.GuardOneName);
setVoice($enemy2,"Derm3");
setSkin($enemy2,"HALO_SKIN");
//Guard 2 (Looking at Gila)
$enemy3.aimAt($teammate0.player.getPosition());
setName($enemy3,Game.GuardTwoName);
setVoice($enemy3,"Derm3");
setSkin($enemy3,"HALO_SKIN");
doText(TDS_M101);
doText(TDS_M102,3000);
doText(TDS_M103,3100);
doText(TDS_M104,3200);
doText(TDS_M105,3300);
doText(TDS_M106,3400);
doText(TDS_M107,3500);
doText(TDS_M108,3600);
doText(TDS_M109,3700);
doText(TDS_M101b,3800);
doText(TDS_M102b,3900);
doText(TDS_M103b,4000);
doText(TDS_M104b,4100);
doText(TDS_M105b,4200);
doText(TDS_M106b,4300);
doText(TDS_M107b,4400);
doText(TDS_M108b,4500);
doText(TDS_M109b,4600);
doText(TDS_M101c,4700);
doText(TDS_M102c,4800);
doText(TDS_M103c,4900);
doText(TDS_M104c,5000);
doText(TDS_M105c,5100);
doText(TDS_M106c,5200);
doText(TDS_M107c,5300);
}
function giveEscortTask(%bot, %target)
{
%newObjective = new AIObjective(AIOEscortPlayer)
{
dataBlock = "AIObjectiveMarker";
weightLevel1 = 10000;
description = "Escort Player";
targetClientId = %target;
offense = true;
};
//echo(%newObjective);
MissionCleanup.add(%newObjective);
$ObjectiveQ[$playerTeam].add(%newObjective);
%bot.stepEscort(%target);
%bot.escort = %newObjective;
}
function detonateAll()
{
ResearchTurret.applyDamage(400);
SecondaryResearch.applyDamage(400);
MainResearch.applyDamage(400);
Turret1.applyDamage(400);
Turret2.applyDamage(400);
Turret3.applyDamage(400);
BaseSensor.applyDamage(400);
BaseGen2.applyDamage(400);
DefenceGen.applyDamage(400);
ReactorGen2.applyDamage(400);
ReactorGen1.applyDamage(0.5);
InventoryStation1.applyDamage(400);
InventoryStation2.applyDamage(400);
InventoryStation3.applyDamage(400);
InventoryStation5.applyDamage(400);
messageAll('msgAll',"\c4Intercom: Main reactor absorbed most of the energy; high damage has been done to the whole network!");
schedule(1500,0,"messageAll",'msgAll',"\c4Gila: Good! Sounds like any defences they have is down.");
//Alright, give the guards and other b0ts the objectives
$enemy2.addTask(AIEngageTask);
$enemy3.addTask(AIEngageTask);
$enemy4.addTask(AIEngageTask);
$enemy5.addTask(AIEngageTask);
}
function storyMoveToHammurabi()
{
$enemy0.stepMove(AlchaldesWorried.getPosition());
$enemy0.schedule(2000,"aimAt",$enemy1.player.getPosition());
$enemy2.aimAt($enemy0.player.getPosition());
$enemy3.aimAt($enemy0.player.getPosition());
}
function storyMoveToGila()
{
$enemy0.stepMove(AlchaldesObserve.getPosition());
$enemy1.stepMove(HammurabiObserve.getPosition());
$enemy0.schedule(2000,"aimAt",$teammate0.player.getPosition());
$enemy1.schedule(2000,"aimAt",$teammate0.player.getPosition());
}
function storyMoveToDolosus()
{
$enemy0.stepMove(enemy0.getPosition());
$enemy1.stepMove(enemy1.getPosition());
$enemy0.schedule(2000,"aimAt",$player.player.getPosition());
$enemy1.schedule(2000,"aimAt",$player.player.getPosition());
}
function hideHudHACK(%bool)
{
objectiveHud.setVisible(%bool);
hudClusterBack.setVisible(%bool);
inventoryHud.setVisible(%bool);
backPackFrame.setVisible(%bool);
weaponsHud.setVisible(%bool);
clockHUD.setVisible(%bool);
retCenterHUD.setVisible(%bool);
}
//------------------------------------------------------------------------------
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);
%player.client.clearBackpackIcon();
%set = %player.client.equipment;
if (%player.client.race $= "Draakan")
{
%player.setInventory(Flamer,1);
%player.use(Flamer);
}
else
{
%player.setInventory("Chaingun",1,true);
%player.setInventory("ChaingunAmmo",999,true);
%player.setInventory("Disc",1,true);
%player.setInventory("DiscAmmo",999,true);
%player.setInventory("Shocklance",1,true);
%player.setInventory("AmmoPack",1,true);
%player.use("Chaingun");
}
}
function spawnSinglePlayer()
{
resetWildCat();
parent::spawnSinglePlayer();
}
function turnPlayerToPosition(%pos)
{
%vec = VectorSub($player.player.position, %pos);
%angle = mATan( getWord(%vec, 0), getWord(%vec, 1) );
%angle = %angle + 3.141529;
%newTransform = $player.player.position SPC "0 0 1" SPC %angle;
$player.player.setTransform(%newTransform);
}
function singlePlayerGame::onAIRespawn(%game, %client)
{
// DONT add the default tasks
//error("default tasks not added");
}
function singlePlayerGame::playerSpawned(%game, %player)
{
parent::playerSpawned(%game, %player);
}
function singlePlayerGame::gameOver(%game)
{
//enable the voice chat menu again...
if (isObject(training1BlockMap))
{
training1BlockMap.pop();
training1BlockMap.delete();
}
if(HelpTextGui.isVisible())
helpTextGui.setVisible(false);
//Make sure our hidden HUD elements are visible again
hideHudHACK(true);
//Make sure our sounds stopped playing
doSpecialEffect(5);
//re-enable the use of the settings button...
SinglePlayerEscSettingsBtn.setActive(1);
Parent::gameOver();
}
function trainingPreloads() //Load any skins..
{
navGraph.preload("skins/Gecko.lbioderm", true);
navGraph.preload("skins/Gecko.mbioderm", true);
navGraph.preload("skins/Gecko.hbioderm", true);
navGraph.preload("skins/base.lbioderm", true);
navGraph.preload("skins/HALO_Skin.lbioderm", true);
navGraph.preload("skins/HALO_Skin.mbioderm", true);
navGraph.preload("skins/HALO_Skin.hbioderm", true);
navGraph.preload("skins/sensor_pulse_large", true);
navGraph.preload("skins/base.hmale", false);
navGraph.preload("skins/beagle.hmale", false);
navGraph.preload("skins/base.mmale", false);
navGraph.preload("skins/beagle.mmale", false);
navGraph.preload("skins/base.lmale", false);
navGraph.preload("skins/swolf.mmale", false);
navGraph.preload("skins/beagle.lmale", false);
}
function SinglePlayerGame::missionLoadDone(%game)
{
Parent::missionLoadDone(%game);
trainingPreloads();
}
function serverCmdBuildClientTask(%client, %task, %team)
{
// player shouldnt be able to use the voice commands to do anything
}
function cancel(%sched)
{
parent::Cancel(%sched);
return true;
}
function lockArmorHack(%val)
{
if (%val)
{
movemap.pop();
modifiedmap.push();
}
else
{
movemap.push();
modifiedmap.pop();
}
//$player.player.setMoveState(true);
//$player.player.schedule(1000,"setMoveState", false);
}
function SinglePlayerGame::enterMissionArea(%game, %player){}
function SinglePlayerGame::leaveMissionArea(%game, %player)
{
schedule(1000,0,"missionComplete", $player.miscMsg[TDSBeginningWin] );
moveMap.schedule(1000, "pop");
}
};
activatePackage(Beginning);