home *** CD-ROM | disk | FTP | other *** search
/ Classic Fond 54 / ClassicFond54.iso / games / stars.rar / multiplayer / CTF_Titanic_Assault.cs < prev    next >
Text File  |  1999-02-19  |  9KB  |  295 lines

  1. // FILENAME:    CTF_Titanic_Assault.cs
  2. //
  3. // AUTHORS:      Chupie Doll & Youth in Asia
  4. //
  5. // NOTE: This script overrides some of the CTF standard functionality.
  6. //       Cybrids are red, Humans are yellow; no tech mixing. --TSL
  7. //
  8. //------------------------------------------------------------------------------
  9.  
  10. ///////////////////////////////////////////////////////////////////////////////////////////////////
  11. // Cybrids vs Humans      
  12. //
  13. // Any vehicle on the wrong side will get a message and be automatically set to the
  14. // correct team. -- TSL
  15. ///////////////////////////////////////////////////////////////////////////////////////////////////
  16.  
  17. $missionName = "CTF_Titanic_Assault";
  18.  
  19. $maxFlagCount  = 8;        
  20. $flagValue     = 5;        
  21. $carrierValue  = 2;        
  22. $killPoints    = 1;
  23. $deathPoints   = 1;
  24. $flagTime = 300;
  25.  
  26. exec("multiplayerStdLib.cs");
  27. exec("CTFstdLib.cs");
  28.  
  29. $server::HudMapViewOffsetX = -6300;
  30. $server::HudMapViewOffsetY = 2400;
  31.  
  32. function setDefaultMissionOptions()
  33. {
  34.     $server::TeamPlay = true;
  35.     $server::AllowDeathmatch = false;
  36.     $server::AllowTeamPlay = true;    
  37.  
  38.     $server::AllowTeamRed = false;
  39.     $server::AllowTeamBlue = true;
  40.     $server::AllowTeamYellow = false;
  41.     $server::AllowTeamPurple = true;
  42.  
  43.    // what can the server admin choose for available teams
  44.    $server::disableTeamRed = true;
  45.    $server::disableTeamBlue = false;
  46.    $server::disableTeamYellow = true;
  47.    $server::disableTeamPurple = false;
  48. }
  49.  
  50. function onMissionStart()
  51. {
  52.     initGlobalVars();
  53.  
  54.     titanSounds();
  55. }   
  56.  
  57. function onMissionLoad(){
  58.    cdAudioCycle("Yougot", "Purge", "SS1"); 
  59.  
  60.    %rules = "<tIDMULT_CTF_GAMETYPE>"      @        
  61.             "<tIDMULT_STD_CYBRID_VS_HUMAN_1>"  @
  62.             "<tIDMULT_CTF_MAPNAME>"       @ 
  63.             $missionName                  @  
  64.             "<tIDMULT_CTF_OBJECTIVES>"    @
  65.             "<tIDMULT_CTF_OBJECTIVES_2>"  @
  66.             timeDifference($flagTime,0)   @
  67.             "<tIDMULT_CTF_OBJECTIVES_3>"  @
  68.             "<tIDMULT_CTF_SCORING_1>"     @
  69.             "<tIDMULT_CTF_SCORING_2>"     @
  70.             $flagValue                    @
  71.             "<tIDMULT_CTF_SCORING_3>"     @
  72.             "<tIDMULT_CTF_SCORING_4>"     @
  73.             $carrierValue                 @
  74.             "<tIDMULT_CTF_SCORING_5>"     @
  75.             "<tIDMULT_CTF_SCORING_6>"     @
  76.             $deathPoints                  @
  77.             "<tIDMULT_CTF_SCORING_7>"     @
  78.             "<tIDMULT_CTF_SCORING_8>"     @
  79.             $killPoints                   @
  80.             "<tIDMULT_CTF_SCORING_9>"     @
  81.             "<tIDMULT_CTF_SCORING_10>"    @ 
  82.             $maxFlagCount                 @
  83.             "<tIDMULT_CTF_SCORING_11>"    @
  84.             "<tIDMULT_STD_ITEMS>"         @
  85.             "<tIDMULT_CTF_FLAGS>"         @
  86.             "<tIDMULT_CTF_GLOW>"          @
  87.             "<tIDMULT_STD_HEAL>"          @
  88.             "<tIDMULT_STD_RELOAD_1>"      @
  89.             $PadWaitTime                  @
  90.             "<tIDMULT_STD_RELOAD_2>"      @
  91.             "<tIDMULT_STD_ZEN_1>"         @
  92.             $ZenWaitTime                  @
  93.             "<tIDMULT_STD_ZEN_2>";
  94.  
  95.    setGameInfo(%rules);
  96. }
  97.  
  98. function vehicle::onAdd(%this)
  99. {
  100.    // Cybrid vs Humans ... Cybrids must be red, Humans must be yellow
  101.   
  102.    if(getVehicleTechBase(%this) == "H" && getTeam(%this) != *IDSTR_TEAM_BLUE)
  103.    {
  104.       setTeam(%this, *IDSTR_TEAM_BLUE);
  105.       say(PlayerManager::vehicleIdToPlayerNum(%this), 1234, *IDMULT_CHANGING_TEAM_BLUE);
  106.       redrop(%this);
  107.    }
  108.    else if(getVehicleTechBase(%this) == "C" && getTeam(%this) != *IDSTR_TEAM_PURPLE)
  109.    {
  110.       setTeam(%this, *IDSTR_TEAM_PURPLE);
  111.       say(PlayerManager::vehicleIdToPlayerNum(%this), 1234, *IDMULT_CHANGING_TEAM_PURPLE);
  112.       redrop(%this);
  113.    }
  114.    
  115.    %team = getTeam(playerManager::vehicleIdToPlayerNum(%this));
  116.    %color = teamToColor(%team);
  117.    %flagKey = strcat(%color, "FlagCount");
  118.  
  119.     adjTeamCount(%team, 1);
  120.  
  121.    //if the flag isn't at the base, but no one has it, correct situation
  122.    if(dataRetrieve(0, %flagKey) && !dataRetrieve(0, strcat(%color, "FlagCarried")))
  123.    {
  124.        setFlag(%team, true);
  125.    }
  126. }
  127.  
  128. //--------------------------------------------------------------------------------
  129. //--easter code
  130.  
  131. function vanishTrigger1::trigger::onAdd(%this)
  132. {
  133.     dataStore(%this, "isActive", true); // bool for trigger active
  134. }
  135. function vanishTrigger1::trigger::onEnter(%this, %object)
  136. {
  137.     triggerOnEnter(1, %object);    
  138. }
  139. function vanishTrigger2::trigger::onAdd(%this)
  140. {
  141.     dataStore(%this, "isActive", false); // bool for trigger active
  142. }
  143.  
  144. function vanishTrigger2::trigger::onEnter(%this, %object)
  145. {
  146.     triggerOnEnter(2, %object);    
  147. }
  148. function vanishTrigger3::trigger::onAdd(%this, %object)
  149. {
  150.     dataStore(%this, "isActive", false); // bool for trigger active
  151. }
  152. function vanishTrigger3::trigger::onEnter(%this, %object)
  153. {
  154.     triggerOnEnter(3, %object);    
  155. }
  156. function teleportTrigger::trigger::onAdd(%this)
  157. {
  158.     dataStore(%this, "isActive", false); // bool for trigger active
  159. }
  160. function teleportTrigger::trigger::onEnter(%this, %object)
  161. {
  162.     triggerOnEnter(teleport, %object);    
  163. }
  164. function triggerOnEnter(%index, %object)
  165. {
  166.     %thisTrigger = "";
  167.     %nextTrigger = "";
  168.     %chatMsg = "";
  169.     
  170.     if(%index == 1)
  171.     {
  172.         %thisTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger1");
  173.         %nextTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger2");
  174.         %thisFlag =       getObjectId("MissionGroup\\extra\\flag1");
  175.         %nextFlag =    getObjectId("MissionGroup\\extra\\flag2");
  176.         %chatMsg  = "Trigger 2 activated.";                  
  177.     }
  178.  
  179.     if(%index == 2)
  180.     {
  181.         %thisTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger2");
  182.         %nextTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger3");
  183.         %thisFlag =       getObjectId("MissionGroup\\extra\\flag2");
  184.         %nextFlag =    getObjectId("MissionGroup\\extra\\flag3");
  185.         %chatMsg = "Trigger 3 activated.";    
  186.     }
  187.  
  188.     if(%index == 3)
  189.     {
  190.         %thisTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger3");
  191.         %nextTrigger = getObjectId("MissionGroup\\extra\\teleportTrigger");
  192.         %thisFlag =       getObjectId("MissionGroup\\extra\\flag3");
  193.         %nextFlag =    getObjectId("MissionGroup\\extra\\teleport");
  194.         %chatMsg = "Teleportation device online."; 
  195.         setShapeVisibility(getObjectId("MissionGroup\\Extra\\fx_tele_t1"), true);    
  196.     }
  197.  
  198.     if(%index == teleport)
  199.     {
  200.         %thisTrigger = getObjectId("MissionGroup\\extra\\teleportTrigger");
  201.         %nextTrigger = getObjectId("MissionGroup\\extra\\vanishTrigger1");
  202.         %thisFlag =       getObjectId("MissionGroup\\extra\\teleport");
  203.         %nextFlag =    getObjectId("MissionGroup\\extra\\flag1");
  204.         %chatMsg = "Teleportation Device is inoperable.";    
  205.     }
  206.     
  207.     if(%thisTrigger == "" || %nextTrigger == "")
  208.     {
  209.         echo("bad triggerIds!");
  210.         return;
  211.     }
  212.     
  213.     %isActive = dataRetrieve(%thisTrigger, "isActive");
  214.  
  215.     if(%isActive != false)
  216.     {
  217.         dataStore(%thisTrigger, "isActive", false);
  218.         dataStore(%nextTrigger, "isActive", true);
  219.         
  220.         if(%index != 3)
  221.         {
  222.             setShapeVisibility(%nextFlag, true);
  223.         }
  224.                 
  225.         if(%index == teleport)
  226.         {
  227.             %malfunctionChance = randomFloat(0.0,0.1);
  228.             if(%malfunctionChance > randomFloat(0.0,1.0))
  229.             {
  230.                 malfunction(%object);
  231.             }
  232.             else
  233.             {
  234.                 teleport(%object);
  235.                 setShapeVisibility(getObjectId("MissionGroup\\Extra\\fx_tele_t1"), false);
  236.             }
  237.         }
  238.         else
  239.         {
  240.             setShapeVisibility(%thisFlag, false);
  241.             // chat(%object, 0, %chatMsg);    
  242.            Say( playerManager::vehicleIdToPlayerNum(%object), %object, %chatMsg );
  243.       }                    
  244.     }
  245.     else if(%index == teleport)
  246.     {
  247.         // chat(%object, 0, %chatMsg);
  248.        Say( playerManager::vehicleIdToPlayerNum(%object), %object, %chatMsg );
  249.    }    
  250. }
  251. function teleport(%object)
  252. {
  253.     %flagNum = randomInt(1,2);
  254.     %x = %y = 0;
  255.  
  256.     if(%flagNum == 1)
  257.     {
  258.         %x = -5099;
  259.         %y = 4310;
  260.     }
  261.  
  262.     if(%flagNum == 2)
  263.     {
  264.         %x = -4863;
  265.         %y = 893;
  266.     }
  267.     
  268.     %playerNum = playerManager::vehicleIdToPlayerNum(%object);
  269.     
  270.     Say( %object, %object, "Teleportation initiated." );
  271.    
  272.        healObject(%object, 600.0);
  273.     reloadObject(%object, 60.0);
  274.  
  275.     randomTransport(%object, %x, %y, %x, %y);
  276.        %str = "Say( %object, %object, \"Teleportat