home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 58 / pcpp58b_TRIBES.iso / Tribes / base / scripts.vol / Training_Defend_Destroy.cs < prev    next >
Encoding:
Text File  |  1998-12-16  |  6.9 KB  |  232 lines

  1. //Training_Defend_Destroy.cs
  2.  
  3. exec("game.cs");
  4. exec("Training_AI.cs");
  5. $Train::missionType = "D&D";
  6.  
  7. function Game::initialMissionDrop(%clientId)
  8. {
  9.    GameBase::setTeam(%clientId, 0);
  10.    Client::setGuiMode(%clientId, $GuiModePlay);
  11.    Game::playerSpawn(%clientId, false);
  12.    Training::displayBitmap(0);
  13.    Defend::initTargets(%clientId);
  14.    Training::setupAI( %clientId );
  15. }
  16.  
  17. function Defend::initTargets(%cl)
  18. {
  19.    $numCompleted = 0;
  20.    $TrainMissionComplete = false;
  21.    %group = nameToId("MissionGroup\\Teams\\Team1\\base");
  22.    %numObj = Group::objectCount(%group);
  23.    $numTargets = 0;
  24.    %lineNum = 14;
  25.    $init = true;
  26.  
  27.    %set = newObject(ObjectivesSet, SimSet);
  28.    addToSet(MissionCleanup, ObjectivesSet);
  29.  
  30.    for(%i = 0; %i < %numObj; %i++)
  31.    {
  32.       %Obj = Group::getObject(%group, %i);
  33.  
  34.       if(%Obj.target)
  35.       {
  36.          %Obj.destroyed = false;
  37.          $targets[%i] = %Obj;
  38.          $completed[%i] = false;
  39.          %Obj.lineNum = %lineNum++;
  40.          $numTargets++;
  41.          %Obj.position = GameBase::getPosition(%Obj);
  42.          addToSet(%set, %Obj);
  43.          Defend::checkMissionObjectives(%cl, %Obj);
  44.       }
  45.    }
  46.    Defend::introduction(%cl);
  47. }
  48.  
  49. function Defend::introduction(%cl)
  50. {
  51.    schedule("bottomprint(" @ %cl @ ", \"<f1><jc>Training Mission 8 - Defend and Destroy.\", 5);", 0);
  52.    schedule("messageAll(0, \"~wshell_click.wav\");", 0);
  53.    schedule("bottomprint(" @ %cl @ ", \"<f1><jc>This is your indoctrination to a Defend and Destroy mission.\", 5);", 5);
  54.    schedule("messageAll(0, \"~wshell_click.wav\");", 5);
  55.    schedule("bottomprint(" @ %cl @ ", \"<f1><jc>Press O to bring up the Objectives screen for a gameplay description and a list of targets.\", 5);", 10);
  56.    schedule("messageAll(0, \"~wshell_click.wav\");", 10);
  57.    Defend::setWayPoint(%cl);
  58.    $init = false;
  59. }  
  60.  
  61. function checkTargetsDestroyed(%this)
  62. {
  63.    %cl = Client::getFirst();
  64.    Defend::checkMissionObjectives(%cl, %this);
  65.    
  66.    if(!$TrainMissionComplete)
  67.       Defend::setWayPoint(%cl, %this);
  68.    
  69. }
  70.  
  71. function StaticShape::objectiveDestroyed(%this)
  72. {
  73.    for(%i = 0; %i < $numTargets; %i++)
  74.    {
  75.       if(%this == $targets[%i])
  76.       {
  77.          $numCompleted++;
  78.          $completed[%i] = true;
  79.          %cl = Client::getFirst(); 
  80.          %this.destroyed = true;
  81.          bottomprint(%cl, "<f1><jc>You have destroyed " @ %this.objective, 5);
  82.          messageAll(0, "~wshell_click.wav");
  83.       }
  84.    }
  85.    checkTargetsDestroyed(%this);
  86. }
  87.  
  88. function Defend::setWayPoint(%cl)
  89. {
  90.    %nextTarget = 0;
  91.    %group = nameToID("MissionCleanup/ObjectivesSet");
  92.    %target = Group::getObject(%group, %nextTarget);
  93.    
  94.    while(%target.destroyed)
  95.    {   
  96.       %nextTarget++;
  97.       %target = Group::getObject(%group, %nextTarget);
  98.    } 
  99.    
  100.    %x = getWord(%target.position, 0);
  101.    %y = getWord(%target.position, 1);
  102.  
  103.    if($init)
  104.       %delay = 15;
  105.    else 
  106.       %delay = 5;
  107.    
  108.    schedule("bottomprint(" @ %cl @ ", \"<jc><f1>Waypoint set to " @ %target.objective @ "\", 5);", %delay);
  109.    schedule("messageAll(0, \"~wshell_click.wav\");", %deley);
  110.    issueCommand(%cl, %cl, 0, "Waypoint set to next objective", %x, %y);
  111.    $init = false;
  112. }
  113.  
  114.  
  115. function Defend::checkMissionObjectives(%cl, %shape)
  116. {
  117.    if(Defend::MissionObjectives( Client::getTeam(%cl), %cl, %shape ))
  118.    {
  119.       Defend::MissionComplete( %cl );
  120.    }
  121. }
  122.  
  123. function Defend::MissionObjectives( %teamId, %cl, %this )
  124. {
  125.    %teamName = getTeamName(%teamId); 
  126.    %player = Client::getOwnedObject(%cl);
  127.    %enemyTeamName = getTeamName(%enemyTeam);
  128.   
  129.    if($numCompleted == $numTargets)
  130.    {
  131.      $TrainMissionComplete = true;
  132.      return "True";
  133.    }
  134.    
  135.    Team::setObjective(%teamId, 1, "<f5><jl>GamePlay Description:");
  136.    Team::setObjective(0, 2, "<f1><jl>    In a Defend and Destroy mission, both teams have objectives");  
  137.    Team::setObjective(0, 3, "<f1><jl>    that must be destroyed, such as a generator or other object.");
  138.    Team::setObjective(0, 4, "<f1><jl>    Each team must successfully defend their base while attempting");
  139.    Team::setObjective(0, 5, "<f1><jl>    to infiltrate their enemy's base and destroying their targets. Points are given");
  140.    Team::setObjective(0, 6, "<f1><jl>    for each enemy objective destroyed and for protecting your objectives.");
  141.    Team::setObjective(%teamId, 7, "\n");
  142.    Team::setObjective(%teamId, 8, "<f5><jl>Mission Completion:");
  143.    Team::setObjective(%teamId, 9, "<f1>   -Destroy all enemy generators");
  144.    Team::setObjective(%teamId, 10, "\n");
  145.    Team::setObjective(%teamId, 11, "<f5>Mission Information:");
  146.    Team::setObjective(%teamId, 12, "<f1>   -Mission Name: Defend and Destroy Training");
  147.    Team::setObjective(%teamId, 13, "\n"); 
  148.    Team::setObjective(%teamId, 14, "<f5><jl>Mission Obejectives:");
  149.    
  150.    if(%this.destroyed)
  151.    {
  152.       %status = "<f1><Bitem_ok.bmp>\n    You successfully destroyed the " @ %this.objective;
  153.    }
  154.    else
  155.    {
  156.       %status = "<f1><Bitem_damaged.bmp>\n    You have not destroyed the " @ %this.objective;
  157.    }
  158.  
  159.    if(%this.lineNum == 15)
  160.       Team::setObjective(%teamId, %this.lineNum, %status);
  161.    else if(%this.lineNum == 16)
  162.       Team::setObjective(%teamId, %this.lineNum, %status);
  163.    else if(%this.lineNum == 17)
  164.       Team::setObjective(%teamId, %this.lineNum, %status);
  165.  
  166.    
  167.     
  168.    return "False";
  169. }
  170.  
  171. function missionSummary()
  172. {
  173.    %time = getSimTime() - $MatchStartTime;
  174.    
  175.    Training::displayBitmap(0);
  176.    Team::setObjective(0, 1, "<f5><jl>Mission Completion:");
  177.    Team::setObjective(0, 2, "<f1><t>   -Completed:");
  178.    Team::setObjective(0, 3, "\n");
  179.    Team::setObjective(0, 4, "<f5><jl>Mission Information:");
  180.    Team::setObjective(0, 5, "<f1><t>   -Mission Name: Defend and Destroy Training");
  181.    Team::setObjective(0, 6, "\n");
  182.    Team::setObjective(0, 7, "<f5><j1>Mission Summary:");
  183.    Team::setObjective(0, 8, "<f1><t>   -Enemy Kills: " @ "<f1>" @ $AIKilled @ " out of " @ $numGuards);
  184.    Team::setObjective(0, 9, "<f1><t>   -Total Mission Time: " @ "<f1>" @ Time::getMinutes(%time) @ " Minutes " @ Time::getSeconds(%time) @ " Seconds");
  185.    Team::setObjective(0, 10, "");
  186.    Team::setObjective(0, 11, "");
  187.    Team::setObjective(0, 12, "");
  188.    Team::setObjective(0, 13, "");
  189.    Team::setObjective(0, 14, "");
  190.    Team::setObjective(0, 15, "");
  191.    Team::setObjective(0, 16, "");
  192.    Team::setObjective(0, 17, "");
  193.    Team::setObjective(0, 18, "");
  194.    Team::setObjective(0, 19, "");
  195.    Team::setObjective(0, 20, "");
  196.  
  197. }
  198.  
  199.  
  200. function Defend::missionComplete(%cl)
  201. {
  202.   
  203.   schedule("Client::setGuiMode(" @ %cl @ ", " @ $GuiModeObjectives @ ");", 8);
  204.   missionSummary();
  205.   remoteEval(2049, TrainingEndMission);
  206. }
  207.  
  208. function remoteTrainingEndMission()
  209. {
  210.    schedule("EndGame();", 16);
  211. }
  212.  
  213.  
  214. function StaticShape::objectiveDisabled(%this)
  215. {
  216. }
  217.  
  218. function StaticShape::objectiveEnabled(%this)
  219. {
  220. }
  221.  
  222.  
  223. function remoteScoresOn(%clientId)
  224. {
  225. }
  226.  
  227. function remoteScoresOff(%clientId)
  228. {
  229. }
  230.  
  231.  
  232.