home *** CD-ROM | disk | FTP | other *** search
/ Top 50 Space / SPACE.bin / data / siege / siege.ace / training / training4.cs < prev    next >
Encoding:
Text File  |  1999-03-19  |  22.3 KB  |  977 lines

  1. $toldAboutTurrets         = false;
  2. $toldToWatchLead          = false;
  3. $currentWayPoint          = 0;
  4. $bigKludge                = false;
  5. $squadMate1Id             = 0;
  6. $squadMate2Id             = 0;
  7. $squadMate1Attacked       = 0;
  8. $squadMate2Attacked       = 0;
  9. $playedTip                = false;
  10. $iCheck                   = 0;
  11. $bunkerScanned            = false;
  12. $squadHalted              = false;
  13. $squadOrderedToAttack     = false;
  14. $alphaComplete            = false;
  15. $playedCharlieMessage     = false;
  16. $playedDeltaMessage       = false;
  17. $turret1Destroyed         = false;
  18. $turret2Destroyed         = false;
  19. $herc1Destroyed           = false;
  20. $herc2Destroyed           = false;
  21. $squadMateAttackingTurret = false;
  22. $Client::Camera           = "player";
  23. $Client::Weapon0InGroup0  = true;
  24. $Client::Weapon1InGroup0  = true;
  25. $Client::Weapon2InGroup0  = true;
  26. $Client::Weapon3InGroup0  = true;
  27. $Client::Weapon0InGroup1  = true;
  28. $Client::Weapon1InGroup1  = true;
  29.  
  30. exec("training_fns.cs");
  31.  
  32. function checkForMissilesLinked()
  33. {
  34.    %pause = 0;
  35.  
  36.    if ($Client::WeaponGroup1Mode == 1)
  37.    {
  38.       $iCheck = 0;
  39.       msay(0, 1234, *IDSTR_TR4_HNTR24, "TR04_HNTR24.WAV");
  40.       schedule("setNavBravo();", 20);
  41.    }
  42.    else
  43.    {
  44.       $iCheck ++;
  45.  
  46.       if ($iCheck == 10)
  47.       {
  48.          %pause  = 3;
  49.          $iCheck = 0;
  50.          msay(0, 1234, *IDSTR_TR4_HNTR23, "TR04_HNTR23.WAV");
  51.       }
  52.       schedule("checkForMissilesLinked();", 1 + %pause);
  53.    }
  54. }
  55.  
  56. function explainTacticalStrategy()
  57. {
  58.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR32, \"TR04_HNTR32.WAV\");",  2);
  59.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR33, \"TR04_HNTR33.WAV\");", 12);
  60.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR34, \"TR04_HNTR34.WAV\");", 27);
  61.    schedule("setNavCharlie();", 34);
  62. }
  63.  
  64. function onTurretsDestroyed()
  65. {
  66.    onArriveNavPoint($bravoId);
  67.  
  68.    msay(0, 1234, *IDSTR_TRG_HNTRGS, "TR_HNTRGS.WAV");
  69.    explainTacticalStrategy();
  70. }
  71.  
  72. function checkForTurretsDestroyed()
  73. {
  74.    if ($turret1Destroyed == true && $turret2Destroyed == true)
  75.    {
  76.       onTurretsDestroyed();
  77.    }
  78.    else
  79.    {
  80.       schedule("checkForTurretsDestroyed();", 1);
  81.    }
  82. }
  83.  
  84. function checkForLasersRemoved()
  85. {
  86.    %pause = 0;
  87.  
  88.    if ($Client::Weapon0InGroup1 == false && $Client::Weapon1InGroup1 == false)
  89.    {
  90.       $iCheck = 0;
  91.  
  92.       msay(0, 1234, *IDSTR_TR4_HNTR23, "TR04_HNTR23.WAV");
  93.       schedule("checkForMissilesLinked();", 3);
  94.    }
  95.    else
  96.    {
  97.       $iCheck ++;
  98.  
  99.       if ($iCheck == 10)
  100.       {
  101.          %pause  = 8;
  102.          $iCheck = 0;
  103.          msay(0, 1234, *IDSTR_TR4_HNTR20, "TR04_HNTR20.WAV");
  104.       }
  105.  
  106.       schedule("checkForLasersRemoved();", 1 + %pause);
  107.    }
  108. }
  109.  
  110. function checkForSecondMissileRemoved()
  111. {
  112.    %pause = 0;
  113.  
  114.    if ($Client::Weapon3InGroup0 == false)
  115.    {
  116.       $iCheck = 0;
  117.       msay(0, 1234, *IDSTR_TR4_HNTR20, "TR04_HNTR20.WAV");
  118.       schedule("checkForLasersRemoved();", 8);
  119.    }
  120.    else
  121.    {
  122.       $iCheck ++;
  123.  
  124.       if ($iCheck == 10)
  125.       {
  126.          %pause  = 6;
  127.          $iCheck = 0;
  128.          msay(0, 1234, *IDSTR_TR4_HNTR19, "TR04_HNTR19.WAV");
  129.       }
  130.       schedule("checkForSecondMissileRemoved();", 1 + %pause);
  131.    }
  132. }
  133.  
  134. function checkForFirstMissileRemoved()
  135. {
  136.    %pause = 0;
  137.  
  138.    if ($Client::Weapon2InGroup0 == false)
  139.    {
  140.       $iCheck = 0;
  141.       msay(0, 1234, *IDSTR_TR4_HNTR19, "TR04_HNTR19.WAV");
  142.       schedule("checkForSecondMissileRemoved();", 6);
  143.    }
  144.    else
  145.    {
  146.       $iCheck ++;
  147.  
  148.       if ($iCheck == 10)
  149.       {
  150.          %pause  = 10;
  151.          $iCheck =  0;
  152.          msay(0, 1234, *IDSTR_TR4_HNTR16, "TR04_HNTR16.WAV");
  153.       }
  154.       schedule("checkForFirstMissileRemoved();", 1 + %pause);
  155.    }
  156. }
  157.  
  158. function explainFiringChains()
  159. {
  160.    msay(0, 1234, *IDSTR_TR4_HNTR14, "TR04_HNTR14.WAV");
  161.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR15, \"TR04_HNTR15.WAV\");", 18);
  162.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR16, \"TR04_HNTR16.WAV\");", 29);
  163.    schedule("checkForFirstMissileRemoved();", 39);
  164. }
  165.  
  166. function checkForShieldsMovedForward()
  167. {
  168.    %pause = 0;
  169.  
  170.    if (getShieldDirStr($playerId) == 1.0)
  171.    {
  172.       setNavDelta();
  173.    }
  174.    else
  175.    {
  176.       $iShieldCheck ++;
  177.  
  178.       if ($iShieldCheck == 10)
  179.       {
  180.          %pause        = 7;
  181.          $iShieldCheck = 0;
  182.          msay(0, 1234, *IDSTR_TR4_HNTR43, "TR04_HNTR43.WAV");
  183.       }
  184.  
  185.       schedule("checkForShieldsMovedForward();", 1 + %pause);
  186.    }
  187. }
  188.  
  189. function checkForLocalEnemiesDestroyed()
  190. {
  191.    %pause = 0;
  192.  
  193.    if ($herc1Destroyed == true && $herc2Destroyed == true)
  194.    {
  195.       msay(0, 1234, *IDSTR_TR4_HNTR40, "TR04_HNTR40.WAV");
  196.       schedule("msay(0, 1234, *IDSTR_TR4_HNTR41, \"TR04_HNTR41.WAV\");", 6);
  197.       schedule("msay(0, 1234, *IDSTR_TR4_HNTR42, \"TR04_HNTR42.WAV\");", 20);
  198.       schedule("msay(0, 1234, *IDSTR_TR4_HNTR43, \"TR04_HNTR43.WAV\");", 35);
  199.       schedule("checkForShieldsMovedForward();", 42);
  200.    }
  201.    else
  202.    {
  203.       if ($playedCharlieMessage == false)
  204.       {
  205.          %pause                = 3;
  206.          $playedCharlieMessage = true;
  207.          msay(0, 1234, *IDSTR_TR4_HNTR39, "TR04_HNTR39.WAV");
  208.       }
  209.       schedule("checkForLocalEnemiesDestroyed();", 1 + %pause);
  210.    }
  211. }
  212.  
  213. function checkForScan()
  214. {
  215.    %pause = 0;
  216.  
  217.    if ($bunkerScanned == true)
  218.    {
  219.       $iCheck = 0;
  220.  
  221.       onArriveNavPoint($charlieId);
  222.       msay(0, 1234, *IDSTR_TR4_HNTR38, "TR04_HNTR38.WAV");
  223.       schedule("checkForLocalEnemiesDestroyed();", 8);
  224.    }
  225.    else
  226.    {
  227.       $iCheck ++;
  228.  
  229.       if ($iCheck == 5)
  230.       {
  231.          %pause  = 4;
  232.          $iCheck = 0;
  233.          msay(0, 1234, *IDSTR_TR4_HNTR37, "TR04_HNTR37.WAV");
  234.       }
  235.  
  236.       schedule("checkForScan();", 1 + %pause);
  237.    }
  238. }
  239.  
  240. function orderPlayerCamera()
  241. {
  242.    if ($Client::Camera == "player")
  243.    {
  244.       if (isCloaked($playerId))
  245.       {
  246.          msay(0, 1234, *IDSTR_TR4_HNTR12, "TR04_HNTR12.WAV");
  247.          schedule("checkForCloak(false);", 5);
  248.       }
  249.       else
  250.       {
  251.          %pause = 0;
  252.  
  253.          if ($alphaComplete == false)
  254.          {
  255.             %pause = 2;
  256.             msay(0, 1234, *IDSTR_TR4_HNTR13, "TR04_HNTR13.WAV");
  257.          }
  258.          schedule("waitForAlphaCompletion();", %pause);
  259.       }
  260.    }
  261.    else
  262.    {
  263.       msay(0, 1234, *IDSTR_TR4_HNTR11, "TR04_HNTR11.WAV");
  264.       schedule("checkForView(\"player\");", 6);
  265.    }
  266. }
  267.  
  268. function onObserverCamera()
  269. {
  270.    if (isCloaked($playerId))
  271.    {
  272.       msay(0, 1234, *IDSTR_TR4_HNTR10, "TR04_HNTR10.WAV");
  273.       schedule("orderPlayerCamera();", 14);
  274.    }
  275.    else
  276.    {
  277.       $bigKludge = true;
  278.       msay(0, 1234, *IDSTR_TR4_HNTR47, "TR04_HNTR47.WAV");
  279.       schedule("checkForCloak(true);", 6);
  280.    }
  281. }
  282.  
  283. function checkForView(%arg)
  284. {
  285.    %pause = 0;
  286.  
  287.    if ($Client::Camera == %arg)
  288.    {
  289.       $iCheck = 0;
  290.  
  291.       if (%arg == "orbitCamera")
  292.       {
  293.          onObserverCamera();
  294.       }
  295.       else
  296.       {
  297.          if (isCloaked($playerId))
  298.          {
  299.             msay(0, 1234, *IDSTR_TR4_HNTR12, "TR04_HNTR12.WAV");
  300.             schedule("checkForCloak(false);", 5);
  301.          }
  302.          else
  303.          {
  304.             %pause = 0;
  305.             if ($alphaComplete == false)
  306.             {
  307.                %pause = 2;
  308.                msay(0, 1234, *IDSTR_TR4_HNTR13, "TR04_HNTR13.WAV");
  309.             }
  310.             schedule("waitForAlphaCompletion();", %pause);
  311.          }
  312.       }
  313.    }
  314.    else
  315.    {
  316.       $iCheck ++;
  317.  
  318.       if ($iCheck == 5)
  319.       {
  320.          $iCheck = 0;
  321.  
  322.          if (%arg == "orbitCamera")
  323.          {
  324.             %pause = 5;
  325.             msay(0, 1234, *IDSTR_TR4_HNTR09, "TR04_HNTR09.WAV");
  326.          }
  327.          else
  328.          {
  329.             %pause = 6;
  330.             msay(0, 1234, *IDSTR_TR4_HNTR11, "TR04_HNTR11.WAV");
  331.          }
  332.       }
  333.  
  334.       schedule("checkForView(\""@%arg@"\");", 1 + %pause);
  335.    }
  336. }
  337.  
  338. function waitForAlphaCompletion()
  339. {
  340.    if ($alphaComplete == true)
  341.    {
  342.       explainFiringChains();
  343.    }
  344.    else
  345.    {
  346.       schedule("waitForAlphaCompletion();", 1);
  347.    }
  348. }
  349.  
  350. function onCloaked()
  351. {
  352.    if ($Client::Camera == "orbitCamera")
  353.    {
  354.       onObserverCamera();
  355.    }
  356.    else
  357.    {
  358.       if (isCloaked($playerId))
  359.       {
  360.          msay(0, 1234, *IDSTR_TR4_HNTR09, "TR04_HNTR09.WAV");
  361.          schedule("checkForView(\"orbitCamera\");", 5);
  362.       }
  363.       else
  364.       {
  365.          msay(0, 1234, *IDSTR_TR4_HNTR08, "TR04_HNTR08.WAV");
  366.          schedule("checkForCloak("@%arg@");", 9);
  367.       }
  368.    }
  369. }
  370.  
  371. function checkForCloak(%arg)
  372. {
  373.    %pause = 0;
  374.  
  375.    if (isCloaked($playerId) == %arg)
  376.    {
  377.       $iCheck = 0;
  378.  
  379.       if (%arg == true)
  380.       {
  381.          if ($bigKludge == false || $Client::Camera == "player")
  382.          {
  383.             $bigKludge = false;
  384.             onCloaked();
  385.          }
  386.          else
  387.          {
  388.             msay(0, 1234, *IDSTR_TR4_HNTR10, "TR04_HNTR10.WAV");
  389.             schedule("orderPlayerCamera();", 14);
  390.          }
  391.       }
  392.       else
  393.       {
  394.          waitForAlphaCompletion();
  395.       }
  396.    }
  397.    else
  398.    {
  399.       $iCheck ++;
  400.  
  401.       if ($iCheck == 5)
  402.       {
  403.          $iCheck = 0;
  404.  
  405.          if (%arg == true)
  406.          {
  407.             if ($bigKludge == false)
  408.             {
  409.                %pause = 10;
  410.                msay(0, 1234, *IDSTR_TR4_HNTR08, "TR04_HNTR08.WAV");
  411.             }
  412.             else
  413.             {
  414.                %pause = 6;
  415.                msay(0, 1234, *IDSTR_TR4_HNTR47, "TR04_HNTR47.WAV");
  416.             }
  417.          }
  418.          else
  419.          {
  420.             %pause = 5;
  421.             msay(0, 1234, *IDSTR_TR4_HNTR12, "TR04_HNTR12.WAV");
  422.          }
  423.       }
  424.  
  425.       schedule("checkForCloak("@%arg@");", 1 + %pause);
  426.    }
  427. }
  428.  
  429. function checkForSquadHalted(%arg)
  430. {
  431.    %pause = 0;
  432.  
  433.    if ($squadHalted == %arg)
  434.    {
  435.       $iCheck = 0;
  436.  
  437.       if (%arg == true)
  438.       {
  439.          msay(0, 1234, *IDSTR_TR4_HNTR06, "TR04_HNTR06.WAV");
  440.          schedule("msay(0, 1234, *IDSTR_TR4_HNTR07, \"TR04_HNTR07.WAV\");", 3);
  441.          schedule("checkForSquadHalted(false);", 10);
  442.       }
  443.       else
  444.       {
  445.          if (isCloaked($playerId))
  446.          {
  447.             onCloaked();
  448.          }
  449.          else
  450.          {
  451.             msay(0, 1234, *IDSTR_TR4_HNTR08, "TR04_HNTR08.WAV");
  452.             schedule("checkForCloak(true);", 10);
  453.          }
  454.       }
  455.    }
  456.    else
  457.    {
  458.       $iCheck ++;
  459.  
  460.       if ($iCheck == 5)
  461.       {
  462.          $iCheck = 0;
  463.  
  464.          if (%arg == true)
  465.          {
  466.             %pause = 4;
  467.             msay(0, 1234, *IDSTR_TR4_HNTR05, "TR04_HNTR05.WAV");
  468.          }
  469.          else
  470.          {
  471.             %pause = 5;
  472.             msay(0, 1234, *IDSTR_TR4_HNTR07, "TR04_HNTR07.WAV");
  473.          }
  474.       }
  475.  
  476.       schedule("checkForSquadHalted("@%arg@");", 1 + %pause);
  477.    }
  478. }
  479.  
  480. function checkForCommandMenu(%arg)
  481. {
  482.    %pause = 0;
  483.  
  484.    if ($Client::InCommandMenu == %arg)
  485.    {
  486.       $iCheck = 0;
  487.       msay(0, 1234, *IDSTR_TR4_HNTR05, "TR04_HNTR05.WAV");
  488.       schedule("checkForSquadHalted(true);", 4);
  489.    }
  490.    else
  491.    {
  492.       $iCheck ++;
  493.  
  494.       if ($iCheck == 5)
  495.       {
  496.          %pause  = 4;
  497.          $iCheck = 0;
  498.          msay(0, 1234, *IDSTR_TR4_HNTR04, "TR04_HNTR04.WAV");
  499.       }
  500.  
  501.       schedule("checkForCommandMenu("@%arg@");", 1 + %pause);
  502.    }
  503. }
  504.  
  505. function orderAttackTurrets()
  506. {
  507.    %pause = 0;
  508.  
  509.    // If either turret is un-destroyed ...
  510.    if ($turret1Destroyed == false || $turret2Destroyed == false)
  511.    {
  512.       %pause = 5;
  513.  
  514.       // Tell them to engage the turrets
  515.       msay(0, 1234, *IDSTR_TR4_HNTR31, "TR04_HNTR31.WAV");
  516.    }
  517.  
  518.    // Otherwise, just wait for them to kill them
  519.    schedule("checkForTurretsDestroyed();", 1 + %pause);
  520. }
  521.  
  522. function checkForSquadOrderedToAttack()
  523. {
  524.    %pause = 0;
  525.  
  526.    if ($squadOrderedToAttack)
  527.    {
  528.       $iCheck = 0;
  529.  
  530.       if ($turret1Destroyed && $turret2Destroyed)
  531.       {
  532.          onTurretsDestroyed();
  533.       }
  534.       else
  535.       {
  536.          orderAttackTurrets();
  537.       }
  538.    }  
  539.    else
  540.    {
  541.       if ($turret1Destroyed && $turret2Destroyed)
  542.       {
  543.          onMissionFailed(0, true);
  544.       }
  545.       else
  546.       {
  547.          $iCheck ++;
  548.  
  549.          if ($iCheck == 10)
  550.          {
  551.             %pause  = 8;
  552.             $iCheck = 0;
  553.             msay(0, 1234, *IDSTR_TR4_HNTR29, "TR04_HNTR29.WAV");
  554.          }
  555.  
  556.          schedule("checkForSquadOrderedToAttack();", 1 + %pause);
  557.       }
  558.    }
  559. }
  560.  
  561. function orderSquadMatesAttackTurret()
  562. {
  563.    $toldAboutTurrets = true;
  564.    if ($squadOrderedToAttack == false)
  565.    {
  566.       // Tell them to sic their squadmates on the turrets ...
  567.       msay(0, 1234, *IDSTR_TR4_HNTR29, "TR04_HNTR29.WAV");
  568.       schedule("checkForSquadOrderedToAttack();", 8);
  569.    }
  570.    else
  571.    {
  572.       orderAttackTurrets();
  573.    }
  574. }
  575.  
  576. function onTurretTargeted()
  577. {
  578.    %pause = 0;
  579.  
  580.    if ($toldToWatchLead == false)
  581.    {
  582.       %pause           = 15;
  583.       $toldToWatchLead = true;
  584.  
  585.       // Tell them to check range marker / lead indicator ...
  586.       msay(0, 1234, *IDSTR_TR4_HNTR28, "TR04_HNTR28.WAV");
  587.    }
  588.  
  589.    // Schedule check for squadmates attacking turret
  590.    schedule("orderSquadMatesAttackTurret();", 1 + %pause);
  591. }
  592.  
  593. function checkForTargetAcquired(%arg)
  594. {
  595.    %pause       = 0;
  596.    %continue    = true;
  597.    %curTargetID = getCurrentTargetID($playerId);
  598.  
  599.    if (%arg == $bravoId)
  600.    {
  601.       if (%curTargetID == getObjectId("MissionGroup/Targets/Nav Bravo/Turret1") ||
  602.           %curTargetID == getObjectId("MissionGroup/Targets/Nav Bravo/Turret2"))
  603.       {
  604.          %continue     = false;
  605.          $iTargetCheck = 0;
  606.  
  607.          onTurretTargeted();
  608.       }
  609.    }
  610.    else if (%arg == $charlieId)
  611.    {
  612.       if (%curTargetId == getObjectId("MissionGroup/Targets/Nav Charlie/Bunker"))
  613.       {
  614.          %continue     = false;
  615.          $iTargetCheck = 0;
  616.  
  617.          msay(0, 1234, *IDSTR_TR4_HNTR37, "TR04_HNTR37.WAV");
  618.          schedule("checkForScan();", 4);
  619.       }
  620.    }
  621.  
  622.    if (%continue)
  623.    {
  624.       $iTargetCheck ++;
  625.  
  626.       if ($iTargetCheck == 5)
  627.       {
  628.          $iTargetCheck = 0;
  629.  
  630.          if (%arg == $bravoId)
  631.          {
  632.             %pause = 2;
  633.             msay(0, 1234, *IDSTR_TR4_HNTR27, "TR04_HNTR27.WAV");
  634.          }
  635.          else if(%arg == $charlieId)
  636.          {
  637.             %pause = 5;
  638.             msay(0, 1234, *IDSTR_TR4_HNTR36, "TR04_HNTR36.WAV");
  639.          }
  640.       }
  641.  
  642.       schedule("checkForTargetAcquired("@%arg@");", 1 + %pause);
  643.    }
  644. }
  645.  
  646. function startCharlieHercPatrol()
  647. {
  648.    order("MissionGroup/Targets/Nav Charlie", Formation, Wedge);
  649.    order("MissionGroup/Targets/Nav Charlie", Guard, "MissionGroup/Paths/Nav Charlie");
  650. }
  651.  
  652. function startDeltaHercPatrol()
  653. {
  654.    order("MissionGroup/Targets/Nav Delta", Guard, "MissionGroup/Paths/Nav Delta");
  655. }
  656.  
  657. function evaluateTurretStatus()
  658. {
  659.    %target = getCurrentTargetID($playerId);
  660.  
  661.    // If they have a turret targeted, tell them about the lead indicator
  662.    if (%target == getObjectId("MissionGroup/Targets/Nav Bravo/Turret1") ||
  663.        %target == getObjectId("MissionGroup/Targets/Nav Bravo/Turret2"))
  664.    {
  665.       onTurretTargeted();
  666.    }
  667.    // Otherwise, tell them to target the turret
  668.    else
  669.    {
  670.       msay(0, 1234, *IDSTR_TR4_HNTR27, "TR04_HNTR27.WAV");
  671.       schedule("checkForTargetAcquired("@$bravoId@");", 2);
  672.    }
  673. }
  674.  
  675. function onNearingNavPoint(%arg)
  676. {
  677.    if (%arg == $alphaId)
  678.    {
  679.       msay(0, 1234, *IDSTR_TR4_HNTR04, "TR04_HNTR04.WAV");
  680.       schedule("checkForCommandMenu(true);", 4);
  681.    }
  682.    else if (%arg == $bravoId)
  683.    {
  684.       // Tell them they can see the turrets
  685.       msay(0, 1234, *IDSTR_TR4_HNTR26, "TR04_HNTR26.WAV");
  686.       schedule("evaluateTurretStatus();", 8);
  687.    }
  688.    else if (%arg == $charlieId)
  689.    {
  690.       msay(0, 1234, *IDSTR_TR4_HNTR36, "TR04_HNTR36.WAV");
  691.       schedule("checkForTargetAcquired("@$charlieId@");", 5);
  692.    }
  693.    else if (%arg == $deltaId)
  694.    {
  695.       if ($playedDeltaMessage == false)
  696.       {
  697.          $playedDeltaMessage = true;
  698.  
  699.          if (getCurrentTargetId($playerId) == getObjectId("MissionGroup/Targets/Nav Delta/BadAssHerc1"))
  700.          {
  701.             msay(0, 1234, *IDSTR_TR4_HNTR46, "TR04_HNTR46.WAV");
  702.          }
  703.          else
  704.          {
  705.             msay(0, 1234, *IDSTR_TR4_HNTR45, "TR04_HNTR45.WAV");
  706.          }
  707.       }
  708.    }
  709. }
  710.  
  711. function onArriveNavPoint(%arg)
  712. {
  713.    if (%arg == $alphaId)
  714.    {
  715.       $alphaComplete = true;
  716.  
  717.       //squawkEnabled(false);
  718.       //onHalt();
  719.       //squawkEnabled(true);
  720.    }
  721.    setNavMarker(%arg, false, -1);
  722. }
  723.  
  724. function setNavDelta()
  725. {
  726.    $currentWayPoint = $deltaId;
  727.    setNavMarker("MissionGroup/Nav Points/Nav Delta", true, -1);
  728.    startDeltaHercPatrol();
  729.    msay(0, 1234, *IDSTR_TR4_HNTR44, "TR04_HNTR44.WAV");
  730.    schedule("monitorProgress("@$deltaId@", 0, 600, 50);", 2);
  731. }
  732.  
  733. function setNavCharlie()
  734. {
  735.    $currentWayPoint = $charlieId;
  736.    setNavMarker("MissionGroup/Nav Points/Nav Charlie", true, -1);
  737.    startCharlieHercPatrol();
  738.    msay(0, 1234, *IDSTR_TR4_HNTR35, "TR04_HNTR35.WAV");
  739.    schedule("monitorProgress("@$charlieId@", 200, 0, 100);", 4);
  740. }
  741.  
  742. function setNavBravo()
  743. {
  744.    $currentWayPoint = $bravoId;
  745.  
  746.    squawkEnabled(false);
  747.    orderSquadMate($squadMate1Id, HoldFire, true);
  748.    orderSquadMate($squadMate2Id, HoldFire, true);
  749.    squawkEnabled(true);
  750.  
  751.    setNavMarker("MissionGroup/Nav Points/Nav Bravo", true, -1);
  752.    msay(0, 1234, *IDSTR_TR4_HNTR25, "TR04_HNTR25.WAV");
  753.    schedule("monitorProgress("@$bravoId@", 1400, 100, 50);", 3);
  754. }
  755.  
  756. function setNavAlpha()
  757. {
  758.    $currentWayPoint = $alphaId;
  759.    setNavMarker("MissionGroup/Nav Points/Nav Alpha", true, -1);
  760.    msay(0, 1234, *IDSTR_TR4_HNTR03, "TR04_HNTR03.WAV");
  761.    schedule("monitorProgress("@$alphaId@", 2000, 100, 50);", 3);
  762. }
  763.  
  764. function initTrainer()
  765. {
  766.    squawkChatEnabled(false);
  767.  
  768.    $squadMate1Id = getObjectId("PlayerSquad/SquadMate1");
  769.    $squadMate2Id = getObjectId("PlayerSquad/SquadMate2");
  770.  
  771.    msay(0, 1234, "", "TR_INTR01.WAV");
  772.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR01, \"TR04_HNTR01.WAV\");",  3);
  773.    schedule("msay(0, 1234, *IDSTR_TR4_HNTR02, \"TR04_HNTR02.WAV\");", 15);
  774.  
  775.    schedule("setNavAlpha();", 40);
  776. }
  777.  
  778. function vehicle::onAttacked(%this, %who)
  779. {
  780.    if (%this == $squadMate1Id && %who == $playerId)
  781.    {
  782.       if ($squadMate1Attacked >= 6)
  783.       {
  784.          if ($playedTip == false)
  785.          {
  786.             $playedTip = true;
  787.             msay(0, 1234, *IDSTR_TRG_HNTRDP, "TR_HNTRDP.WAV");
  788.          }
  789.  
  790.          $missionFailed = true;
  791.          order($squadMate1Id, Attack, $playerId);
  792.          order($squadMate2Id, Attack, $playerId);
  793.       }
  794.       else
  795.       {
  796.          $squadMate1Attacked ++;
  797.       }
  798.    }
  799.  
  800.    else if (%this == $squadMate2Id && %who == $playerId)
  801.    {
  802.       if ($squadMate2Attacked >= 6)
  803.       {
  804.          if ($playedTip == false)
  805.          {
  806.             $playedTip = true;
  807.             msay(0, 1234, *IDSTR_TRG_HNTRDP, "TR_HNTRDP.WAV");
  808.          }
  809.  
  810.          $missionFailed = true;
  811.          order($squadMate1Id, Attack, $playerId);
  812.          order($squadMate2Id, Attack, $playerId);
  813.       }
  814.       else
  815.       {
  816.          $squadMate2Attacked ++;
  817.       }
  818.    }
  819. }
  820.  
  821. function attackPlayer()
  822. {
  823.    if ($playedDeltaMessage == false)
  824.    {
  825.       $playedDeltaMessage = true;
  826.       onArriveNavPoint($deltaId);
  827.  
  828.       if (getCurrentTargetId($playerId) == getObjectId("MissionGroup/Targets/Nav Delta/BadAssHerc1"))
  829.       {
  830.          msay(0, 1234, *IDSTR_TR4_HNTR48, "TR04_HNTR48.WAV");
  831.       }
  832.       else
  833.       {
  834.          msay(0, 1234, *IDSTR_TR4_HNTR45, "TR04_HNTR45.WAV");
  835.       }
  836.       order("MissionGroup/Targets/Nav Delta/BadAssHerc1", Attack, $playerId);
  837.    }
  838. }
  839.  
  840. function BadAssHerc1::vehicle::onDestroyed(%this, %who)
  841. {
  842.    if ($currentWayPoint == $deltaId)
  843.    {
  844.       onMissionCompleted(*IDSTR_TR4_HNTR46, "TR04_HNTR46.WAV");
  845.    }
  846.    else
  847.    {
  848.       onMissionFailed(0, true);
  849.    }
  850. }
  851.  
  852. function BadAssHerc1::vehicle::onTargeted(%this, %who)
  853. {
  854.    attackPlayer();
  855. }
  856.  
  857. function BadAssHerc1::vehicle::onAttacked(%this, %who)
  858. {
  859.    attackPlayer();
  860. }
  861.  
  862. function herc1::vehicle::onDestroyed(%this, %who)
  863. {
  864.    $herc1Destroyed = true;
  865.  
  866.    if ($currentWayPoint != $charlieId)
  867.    {
  868.       onMissionFailed(0, true);
  869.    }
  870. }
  871.  
  872. function herc2::vehicle::onDestroyed(%this, %who)
  873. {
  874.    $herc2Destroyed = true;
  875.  
  876.    if ($currentWayPoint != $charlieId)
  877.    {
  878.       onMissionFailed(0, true);
  879.    }
  880. }
  881.  
  882. function turret1::turret::onDestroyed(%this, %who)
  883. {
  884.    $turret1Destroyed = true;
  885.  
  886.    if ($currentWayPoint != $bravoId || $toldAboutTurrets == false)
  887.    {
  888.       onMissionFailed(0, true);
  889.    }
  890. }
  891.  
  892. function turret2::turret::onDestroyed(%this, %who)
  893. {
  894.    $turret2Destroyed = true;
  895.  
  896.    if ($currentWayPoint != $bravoId || $toldAboutTurrets == false)
  897.    {
  898.       onMissionFailed(0, true);
  899.    }
  900. }
  901.  
  902. function turret::onAttacked(%this, %who)
  903. {
  904.    // Kind of a loophole - the squadmate may start to attack by his/her self,
  905.    // and it is a resonable response to not order them
  906.    if (%who != $playerId)
  907.    {
  908.       $squadOrderedToAttack = true;
  909.    }
  910. }
  911.  
  912. function bunker::structure::onScan(%scanned, %scanner, %string)
  913. {
  914.    $bunkerScanned = true;
  915.  
  916.    if ($currentWayPoint != $charlieId)
  917.    {
  918.       onMissionFailed(0, true);
  919.    }
  920. }
  921.  
  922. function onHalt()
  923. {
  924.    $squadHalted = true;
  925.    orderSquadMate($Order::Recipient, Clear, True );
  926.    orderSquadMate($Order::Recipient, HoldPosition, True );
  927.    orderSquadMate($Order::Recipient, Acknowledge, True );
  928. }
  929.  
  930. function onJoinOnMe()
  931. {
  932.    $squadHalted = false;
  933.    orderSquadMate($Order::Recipient, Formation);
  934.    orderSquadMate($Order::Recipient, HoldPosition, True);
  935. }
  936.  
  937. function onAttackMyTarget()
  938. {
  939.    if ($currentWayPoint == $bravoId)
  940.    {
  941.       $squadOrderedToAttack = true;
  942.  
  943.       //%curTargetID = getCurrentTargetID($playerId);
  944.  
  945.       //if (%curTargetID == getObjectId("MissionGroup/Targets/Nav Bravo/Turret1"))
  946.       //{
  947.       //   $squadOrderedToAttack1 = true;
  948.       //}
  949.       //if (%curTargetID == getObjectId("MissionGroup/Targets/Nav Bravo/Turret2"))
  950.       //{
  951.       //   $squadOrderedToAttack2 = true;
  952.       //}
  953.    }
  954.    orderSquadMate($Order::Recipient, Attack, $Order::Target);
  955.    orderSquadMate($Order::Recipient, HoldPosition, True);
  956. }
  957.  
  958. function vehicle::onDestroyed(%this, %who)
  959. {
  960.    // If player killed or player killed a squadmate, terminate
  961.    if(%this == $playerId || 
  962.      (%who  == $playerId && (%this == $squadMate1Id || %this == $squadMate2Id)))
  963.    {
  964.        $missionFailed = true;
  965.        $Client::TrainingMissionStatus = "ONE_OR_MORE_FAILED";
  966.  
  967.       if (%this == $playerId)
  968.       {
  969.           onForceToDebrief(*IDSTR_MISSION_FAILED);
  970.       }
  971.       else
  972.       {
  973.          onForceToDebrief(*IDSTR_TRG_FOLLOWORDERS);
  974.       }
  975.    }
  976. }
  977.