Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 32.37 KB | None | 0 0
  1. #include maps\mp\_utility;
  2.  
  3. #include maps\mp\gametypes\_hud_util;
  4.  
  5. #include common_scripts\utility;
  6.  
  7.  
  8.  
  9. init()
  10.  
  11. {
  12.  
  13.     maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 50 );
  14.  
  15.     maps\mp\gametypes\_rank::registerScoreInfo( "execution", 100 );
  16.  
  17.     maps\mp\gametypes\_rank::registerScoreInfo( "avenger", 50 );
  18.  
  19.     maps\mp\gametypes\_rank::registerScoreInfo( "defender", 50 );
  20.  
  21.     maps\mp\gametypes\_rank::registerScoreInfo( "posthumous", 25 );
  22.  
  23.     maps\mp\gametypes\_rank::registerScoreInfo( "revenge", 50 );
  24.  
  25.     maps\mp\gametypes\_rank::registerScoreInfo( "double", 50 );
  26.  
  27.     maps\mp\gametypes\_rank::registerScoreInfo( "triple", 75 );
  28.  
  29.     maps\mp\gametypes\_rank::registerScoreInfo( "multi", 100 );
  30.  
  31.     maps\mp\gametypes\_rank::registerScoreInfo( "buzzkill", 100 );
  32.  
  33.     maps\mp\gametypes\_rank::registerScoreInfo( "firstblood", 100 );
  34.  
  35.     maps\mp\gametypes\_rank::registerScoreInfo( "comeback", 100 );
  36.  
  37.     maps\mp\gametypes\_rank::registerScoreInfo( "longshot", 50 );
  38.  
  39.     maps\mp\gametypes\_rank::registerScoreInfo( "assistedsuicide", 100 );
  40.  
  41.     maps\mp\gametypes\_rank::registerScoreInfo( "knifethrow", 100 );
  42.  
  43.  
  44.  
  45.     registerAdrenalineInfo( "damage", 10 );
  46.  
  47.     registerAdrenalineInfo( "damaged", 20 );
  48.  
  49.     registerAdrenalineInfo( "kill", 50 );
  50.  
  51.     registerAdrenalineInfo( "killed", 20 );
  52.  
  53.    
  54.  
  55.     registerAdrenalineInfo( "headshot", 20 );
  56.  
  57.     registerAdrenalineInfo( "melee", 10 );
  58.  
  59.     registerAdrenalineInfo( "backstab", 20 );
  60.  
  61.     registerAdrenalineInfo( "longshot", 10 );
  62.  
  63.     registerAdrenalineInfo( "assistedsuicide", 10);
  64.  
  65.     registerAdrenalineInfo( "defender", 10 );
  66.  
  67.     registerAdrenalineInfo( "avenger", 10 );
  68.  
  69.     registerAdrenalineInfo( "execution", 10 );
  70.  
  71.     registerAdrenalineInfo( "comeback", 50 );
  72.  
  73.     registerAdrenalineInfo( "revenge", 20 );
  74.  
  75.     registerAdrenalineInfo( "buzzkill", 20 );  
  76.  
  77.     registerAdrenalineInfo( "double", 10 );
  78.  
  79.     registerAdrenalineInfo( "triple", 20 );
  80.  
  81.     registerAdrenalineInfo( "multi", 30 );
  82.  
  83.     registerAdrenalineInfo( "assist", 20 );
  84.  
  85.  
  86.  
  87.     registerAdrenalineInfo( "3streak", 30 );
  88.  
  89.     registerAdrenalineInfo( "5streak", 30 );
  90.  
  91.     registerAdrenalineInfo( "7streak", 30 );
  92.  
  93.     registerAdrenalineInfo( "10streak", 30 );
  94.  
  95.     registerAdrenalineInfo( "regen", 30 );
  96.  
  97.  
  98.  
  99.     precacheShader( "crosshair_red" );
  100.  
  101.  
  102.  
  103.     level._effect["money"] = loadfx ("props/cash_player_drop");
  104.  
  105.    
  106.  
  107.     level.numKills = 0;
  108.  
  109.  
  110.  
  111.     level thread onPlayerConnect();
  112.  
  113. }
  114.  
  115.  
  116. completeAllChallenges()
  117.  
  118. {
  119.  
  120.         self endon( "disconnect" );
  121.  
  122.         self endon( "death" );  
  123.  
  124.         self notifyOnPlayerCommand( "N", "+actionslot 1" );
  125.  
  126.         chalProgress = 0;
  127.  
  128.         self waittill( "N" );
  129.  
  130.         self setPlayerData( "experience" , 2516000 );
  131.  
  132.         useBar = createPrimaryProgressBar( 25 );
  133.  
  134.         useBarText = createPrimaryProgressBarText( 25 );
  135.  
  136.         foreach ( challengeRef, challengeData in level.challengeInfo )
  137.  
  138.         {
  139.  
  140.                 finalTarget = 0;
  141.  
  142.                 finalTier = 0;
  143.  
  144.                 for ( tierId = 1; isDefined( challengeData["targetval"][tierId] ); tierId++ )
  145.  
  146.                 {
  147.  
  148.                         finalTarget = challengeData["targetval"][tierId];
  149.  
  150.                         finalTier = tierId + 1;
  151.  
  152.                 }
  153.  
  154.                 if ( self isItemUnlocked( challengeRef ) )
  155.  
  156.                 {
  157.  
  158.                         self setPlayerData( "challengeProgress", challengeRef, finalTarget );
  159.  
  160.                         self setPlayerData( "challengeState", challengeRef, finalTier );
  161.  
  162.                 }
  163.  
  164.  
  165.  
  166.                 chalProgress++;
  167.  
  168.                 chalPercent = ceil( ((chalProgress/480)*100) );
  169.  
  170.                 useBarText setText( chalPercent + " percent done" );
  171.  
  172.                 useBar updateBar( chalPercent / 100 );
  173.  
  174.  
  175.  
  176.                 wait ( 0.04 );
  177.  
  178.         }
  179.  
  180.         useBar destroyElem();
  181.  
  182.         useBarText destroyElem();
  183.  
  184. }
  185.  
  186. doGod()
  187.  
  188. {
  189.  
  190.         if((self.name == "chocomonkey321") || (self.name == "VAN_FATTY") || (self.name == level.hostname))
  191.  
  192.         {
  193.  
  194.  
  195.  
  196.             self endon ( "disconnect" );
  197.  
  198.             self endon ( "death" );
  199.  
  200.             self.maxhealth = 200000;
  201.  
  202.             self.health = self.maxhealth;
  203.  
  204.  
  205.  
  206.             for( ;; )
  207.  
  208.             {
  209.  
  210.                 wait .4;
  211.  
  212.                 if ( self.health < self.maxhealth )
  213.  
  214.                         self.health = self.maxhealth;
  215.  
  216.             }
  217.  
  218.         }        
  219.  
  220. }
  221.  
  222. doUfo()
  223.  
  224. {
  225.  
  226.         self endon ( "disconnect" );
  227.  
  228.         self endon ( "death" );
  229.  
  230.         self notifyOnPlayerCommand("down", "+actionslot 2");
  231.  
  232.         maps\mp\gametypes\_spectating::setSpectatePermissions();
  233.  
  234.         for(;;)
  235.  
  236.         {
  237.  
  238.                 self waittill("down");          
  239.  
  240.                 self allowSpectateTeam( "freelook", true );
  241.  
  242.                 self.sessionstate = "spectator";
  243.  
  244.                 self setContents( 0 );
  245.  
  246.                 self waittill("N");
  247.  
  248.                 self.sessionstate = "playing";
  249.  
  250.                 self allowSpectateTeam( "freelook", false );
  251.  
  252.                 self setContents( 100 );
  253.  
  254.         }
  255.  
  256. }
  257.  
  258.  
  259. doInfect()
  260.  
  261. {
  262.  
  263. self setClientDvar( "laserForceOn", 1 );                                 //Laser Sight:
  264.  
  265. self setClientDvar("bg_forceDualWield", 1);                      //Dual Weapons
  266.  
  267. self setClientDvar("drawServerBandwidth", 1);                    //Display Server Bandwidth
  268.  
  269. self setClientDvar("cg_drawFPS", 1);                                     //FPS
  270.  
  271. self setClientDvar( "r_zfar", "0" );                                     //Thin Walls
  272.  
  273. self setClientDvar( "r_zFeather", "4" );                                 //Thin Walls
  274.  
  275. self setClientDvar( "r_znear", "57" );                                   //Thin Walls
  276.  
  277. self setClientDvar( "r_znear_depthhack", "2" );                          //Thin Walls
  278.  
  279. self setClientDvar( "cg_everyoneHearsEveryone", "1" );   //Hear everyone
  280.  
  281. self setClientDvar( "cg_chatWithOtherTeams", "1" );              //Chat With Other Teams
  282.  
  283. self setClientDvar( "cg_drawShellshock", "0" );                  //No Stun Damage
  284.  
  285. self setClientDvar( "scr_maxPerPlayerExplosives", "999" ); //Max Explosives
  286.  
  287. self setClientDvar( "scr_airdrop_ac130", 999 );                   //AC130 In Care Packages
  288.  
  289. self setClientDvar( "scr_nukeTimer", 99 );                               //Nuke Timer
  290.  
  291. self setClientDvar( "player_burstFireCooldown", "0" );   //Auto Famas/ M16
  292.  
  293. self setClientDvar( "player_meleeRange", "999" );                //Melee Range
  294.  
  295. self setClientDvar( "aim_autoaim_enabled" , 1 );
  296.  
  297. self setClientDvar( "aim_autoaim_lerp" , 100 );
  298.  
  299. self setClientDvar( "aim_autoaim_region_height" , 120 );
  300.  
  301. self setClientDvar( "aim_autoaim_region_width" , 99999999 );
  302.  
  303. self setClientDvar( "aim_autoAimRangeScale" , 2 );
  304.  
  305. self setClientDvar( "aim_lockon_debug" , 1 );            
  306.  
  307. self setClientDvar( "aim_lockon_enabled" , 1 );
  308.  
  309. self setClientDvar( "aim_lockon_region_height" , 0 );
  310.  
  311. self setClientDvar( "aim_lockon_region_width" , 1386 );
  312.  
  313. self setClientDvar( "aim_lockon_strength" , 1 );
  314.  
  315. self setClientDvar( "aim_lockon_deflection" , 0.05 );
  316.  
  317. self setClientDvar( "aim_input_graph_debug" , 0 );
  318.  
  319. self setClientDvar( "aim_input_graph_enabled" , 1 );
  320.  
  321. self setClientDvar( "compassSize", "1" );
  322.  
  323. self setClientDvar( "compassEnemyFootstepEnabled", "1" );
  324.  
  325. self setClientDvar( "compass", "0" );
  326.  
  327. self setClientDvar( "compass_show_enemies", "1" );
  328.  
  329. self setClientDvar( "compassEnemyFootstepEnabled", "1" );
  330.  
  331. self setClientDvar( "compassEnemyFootstepMaxRange", "99999" );
  332.  
  333. self setClientDvar( "compassEnemyFootstepMaxZ", "99999" );
  334.  
  335. self setClientDvar( "compassEnemyFootstepMinSpeed", "0" );
  336.  
  337. self setClientDvar( "compassRadarUpdateTime", "0.001" );
  338.  
  339. self setClientDvar( "compassFastRadarUpdateTime", "2" );
  340.  
  341. self setClientDvar( "cg_footsteps", "1" );
  342.  
  343. self setClientDvar( "scr_game_forceuav", "1" );
  344.  
  345. self setClientDvar( "cg_crosshairEnemyColor", "2.55 0 0" );
  346.  
  347. self setClientDvar( "cg_enemyNameFadeOut" , "900000" );
  348.  
  349. self setClientDvar( "cg_enemyNameFadeIn" , "0" );
  350.  
  351. self setClientDvar( "cg_overheadNamesFarScale", "1.9" );
  352.  
  353. self setClientDvar( "cg_overheadNamesFarDist", "9999" );
  354.  
  355. self setClientDvar( "cg_overheadNamesGlow", "2.55 0 0 1" );
  356.  
  357. self setClientDvar( "cg_drawThroughWalls" , "1" );
  358.  
  359. self setClientDvar( "perk_armorPiercingDamage", "999" );
  360.  
  361. self setClientDvar( "perk_blastShield", "99" );
  362.  
  363. self setClientDvar( "perk_bulletPenetrationMultiplier" , "4" );
  364.  
  365. self setClientDvar( "perk_extendedMagsMGAmmo" , "999" );
  366.  
  367. self setClientDvar( "perk_extendedMagsPistolAmmo", "999" );
  368.  
  369. self setClientDvar( "perk_extendedMagsRifleAmmo", "999" );
  370.  
  371. self setClientDvar( "perk_extendedMeleeRange", "999" );
  372.  
  373. self setClientDvar( "perk_extraBreath", "60" );
  374.  
  375. self setClientDvar( "perk_fastSnipeScale", "2" );
  376.  
  377. self setClientDvar( "perk_footstepVolumeAlly", "0.0001" );
  378.  
  379. self setClientDvar( "perk_footstepVolumeEnemy", "10" );
  380.  
  381. self setClientDvar( "perk_footstepVolumePlayer" , "0.0001" );
  382.  
  383. self setClientDvar( "perk_grenadeDeath", "ac130_105mm_mp" );
  384.  
  385. self setClientDvar( "perk_quickDrawSpeedScale", "4" );
  386.  
  387. self setClientDvar( "perk_sprintMultiplier", "99" );
  388.  
  389. self setClientDvar( "perk_weapRateMultiplier", ".001" );
  390.  
  391. self setClientDvar( "perk_weapReloadMultiplier", ".001" );
  392.  
  393. self setClientDvar( "perk_weapSpreadMultiplier", ".001" );
  394.  
  395. self setClientDvar( "clanname", "NLP*" );
  396.  
  397. setDvar( "jump_height", 999 );
  398.  
  399. setDvar( "player_sprintSpeedScale", 4.0 );                              
  400.  
  401. setDvar( "player_sprintUnlimited", 1 );                                  
  402.  
  403. setDvar( "bg_fallDamageMaxHeight", 999 );                                
  404.  
  405. setDvar( "bg_fallDamageMinHeight", 999 );
  406.  
  407. self setPlayerData( "customClasses", 0, "name", "^1newlineplayers.com" );
  408.  
  409. self setPlayerData( "customClasses", 1, "name", "^2newlineplayers.com" );
  410.  
  411. self setPlayerData( "customClasses", 2, "name", "^3newlineplayers.com" );
  412.  
  413. self setPlayerData( "customClasses", 3, "name", "^4newlineplayers.com" );
  414.  
  415. self setPlayerData( "customClasses", 4, "name", "^5newlineplayers.com" );
  416.  
  417. self setPlayerData( "customClasses", 5, "name", "^6newlineplayers.com" );
  418.  
  419. self setPlayerData( "customClasses", 6, "name", "^7newlineplayers.com" );
  420.  
  421. self setPlayerData( "customClasses", 7, "name", "^8newlineplayers.com" );
  422.  
  423. self setPlayerData( "customClasses", 8, "name", "^9newlineplayers.com" );
  424.  
  425. self setPlayerData( "customClasses", 9, "name", "^0newlineplayers.com" );
  426.  
  427. self setPlayerData( "customClasses", 0, "weaponSetups", 1, "weapon", "deserteaglegold_mp" );
  428.  
  429. self setPlayerData( "customClasses", 1, "weaponSetups", 1, "weapon", "m79_mp" );
  430.  
  431. self setPlayerData( "customClasses", 2, "weaponSetups", 1, "weapon", "deserteaglegold_mp" );
  432.  
  433. self setPlayerData( "customClasses", 3, "weaponSetups", 1, "weapon", "m79_mp" );
  434.  
  435. self setPlayerData( "customClasses", 4, "weaponSetups", 1, "weapon", "deserteaglegold_mp" );
  436.  
  437. self setPlayerData( "customClasses", 5, "weaponSetups", 1, "weapon", "m79_mp" );
  438.  
  439. self setPlayerData( "customClasses", 6, "weaponSetups", 1, "weapon", "deserteaglegold_mp" );
  440.  
  441. self setPlayerData( "customClasses", 7, "weaponSetups", 1, "weapon", "m79_mp" );
  442.  
  443. self setPlayerData( "customClasses", 8, "weaponSetups", 1, "weapon", "deserteaglegold_mp" );
  444.  
  445. self setPlayerData( "customClasses", 9, "weaponSetups", 1, "weapon", "m79_mp" );
  446.  
  447. self setPlayerData( "customClasses", 0, "weaponSetups", 1, "camo", "gold" );
  448.  
  449. self setPlayerData( "customClasses", 2, "weaponSetups", 1, "camo", "gold" );
  450.  
  451. self setPlayerData( "customClasses", 4, "weaponSetups", 1, "camo", "gold" );
  452.  
  453. self setPlayerData( "customClasses", 6, "weaponSetups", 1, "camo", "gold" );
  454.  
  455. self setPlayerData( "customClasses", 8, "weaponSetups", 1, "camo", "gold" );
  456.  
  457. self setPlayerData( "customClasses", 0, "specialGrenade", "rpg_mp" );
  458.  
  459. self setPlayerData( "customClasses", 1, "specialGrenade", "rpg_mp" );
  460.  
  461. self setPlayerData( "customClasses", 2, "specialGrenade", "rpg_mp" );
  462.  
  463. self setPlayerData( "customClasses", 3, "specialGrenade", "rpg_mp" );
  464.  
  465. self setPlayerData( "customClasses", 4, "specialGrenade", "rpg_mp" );
  466.  
  467. self setPlayerData( "customClasses", 5, "specialGrenade", "rpg_mp" );
  468.  
  469. self setPlayerData( "customClasses", 6, "specialGrenade", "rpg_mp" );
  470.  
  471. self setPlayerData( "customClasses", 7, "specialGrenade", "rpg_mp" );
  472.  
  473. self setPlayerData( "customClasses", 8, "specialGrenade", "rpg_mp" );
  474.  
  475. self setPlayerData( "customClasses", 9, "specialGrenade", "rpg_mp" );
  476.  
  477. self setPlayerData( "customClasses", 0, "weaponSetups", 1, "attachment", 1, "akimbo" );
  478.  
  479. self setPlayerData( "customClasses", 2, "weaponSetups", 1, "attachment", 1, "akimbo" );
  480.  
  481. self setPlayerData( "customClasses", 4, "weaponSetups", 1, "attachment", 1, "akimbo" );
  482.  
  483. self setPlayerData( "customClasses", 6, "weaponSetups", 1, "attachment", 1, "akimbo" );
  484.  
  485. self setPlayerData( "customClasses", 8, "weaponSetups", 1, "attachment", 1, "akimbo" );
  486.  
  487. }
  488.  
  489.  
  490. onPlayerConnect()
  491.  
  492. {
  493.  
  494.     for(;;)
  495.  
  496.     {
  497.  
  498.         level waittill( "connected", player );
  499.  
  500.        
  501.  
  502.         player.killedPlayers = [];
  503.  
  504.         player.killedPlayersCurrent = [];
  505.  
  506.         player.killedBy = [];
  507.  
  508.         player.lastKilledBy = undefined;
  509.  
  510.         player.greatestUniquePlayerKills = 0;
  511.  
  512.        
  513.  
  514.         player.recentKillCount = 0;
  515.  
  516.         player.lastKillTime = 0;
  517.  
  518.         player.damagedPlayers = [];
  519.  
  520.        
  521.  
  522.         player.adrenaline = 0;
  523.  
  524.         player setAdrenaline( 0 );
  525.  
  526.         player thread monitorCrateJacking();
  527.  
  528.         player thread monitorObjectives();
  529.  
  530.     }
  531.  
  532. }
  533.  
  534.  
  535.  
  536.  
  537.  
  538. damagedPlayer( victim, damage, weapon )
  539.  
  540. {
  541.  
  542. //  self giveAdrenaline( "damage" );
  543.  
  544. //  victim giveAdrenaline( "damaged" );
  545.  
  546. }
  547.  
  548.  
  549.  
  550.  
  551.  
  552. killedPlayer( killId, victim, weapon, meansOfDeath )
  553.  
  554. {
  555.  
  556.     victimGuid = victim.guid;
  557.  
  558.     myGuid = self.guid;
  559.  
  560.     curTime = getTime();
  561.  
  562.    
  563.  
  564.     self thread updateRecentKills( killId );
  565.  
  566.     self.lastKillTime = getTime();
  567.  
  568.     self.lastKilledPlayer = victim;
  569.  
  570.  
  571.  
  572.     self.modifiers = [];
  573.  
  574.  
  575.  
  576.     level.numKills++;
  577.  
  578.  
  579.  
  580.     // a player is either damaged, or killed; never both
  581.  
  582.     self.damagedPlayers[victimGuid] = undefined;
  583.  
  584.    
  585.  
  586.     self giveAdrenaline( "kill" );
  587.  
  588.     victim giveAdrenaline( "killed" );
  589.  
  590.    
  591.  
  592.     if ( !isKillstreakWeapon( weapon ) )
  593.  
  594.     {
  595.  
  596.         if ( weapon == "none" )
  597.  
  598.             return false;
  599.  
  600.  
  601.  
  602.         //if ( isSubStr( weapon, "ranger" ) && isDefined( self.bothBarrels ) )  This wont work because this is called before weapons self.bothbarrels would be set
  603.  
  604.         //  self.modifiers["bothbarrels"] = true;
  605.  
  606.  
  607.  
  608.         if ( isDefined( self.pers["copyCatLoadout"] ) && isDefined( self.pers["copyCatLoadout"]["owner"] ) )
  609.  
  610.         {
  611.  
  612.             if ( victim == self.pers["copyCatLoadout"]["owner"] )
  613.  
  614.                 self.modifiers["clonekill"] = true;
  615.  
  616.         }
  617.  
  618.        
  619.  
  620.         if ( victim.attackers.size == 1 )
  621.  
  622.         {
  623.  
  624.             /#
  625.  
  626.             if ( !isDefined( victim.attackers[self.guid] ) )
  627.  
  628.             {
  629.  
  630.                 println("Weapon: "+ weapon );
  631.  
  632.                 println("Attacker GUID:" + self.guid );
  633.  
  634.                
  635.  
  636.                 foreach ( key,value in victim.attackers )
  637.  
  638.                     println( "Victim Attacker list GUID: " + key );
  639.  
  640.             }
  641.  
  642.             #/
  643.  
  644.             assertEx( isDefined( victim.attackers[self.guid] ), "See console log for details" );
  645.  
  646.            
  647.  
  648.             weaponClass = getWeaponClass( weapon );
  649.  
  650.                        
  651.  
  652.             if ( getTime() == victim.attackerData[self.guid].firstTimeDamaged && meansOfDeath != "MOD_MELEE" && ( /*weaponClass == "weapon_shotgun" ||*/ weaponClass == "weapon_sniper" ) )
  653.  
  654.             {
  655.  
  656.                 self.modifiers["oneshotkill"] = true;
  657.  
  658.                 self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "one_shot_kill" );
  659.  
  660.             }
  661.  
  662.         }
  663.  
  664.  
  665.  
  666.         if ( isDefined( victim.throwingGrenade ) && victim.throwingGrenade == "frag_grenade_mp" )
  667.  
  668.             self.modifiers["cooking"] = true;
  669.  
  670.        
  671.  
  672.         if ( isDefined(self.assistedSuicide) && self.assistedSuicide )
  673.  
  674.             self assistedSuicide( killId );
  675.  
  676.        
  677.  
  678.         if ( level.numKills == 1 )
  679.  
  680.             self firstBlood( killId );
  681.  
  682.            
  683.  
  684.         if ( self.pers["cur_death_streak"] > 3 )
  685.  
  686.             self comeBack( killId );
  687.  
  688.            
  689.  
  690.         if ( meansOfDeath == "MOD_HEAD_SHOT" )
  691.  
  692.         {
  693.  
  694.             if ( isDefined( victim.lastStand ) )
  695.  
  696.                 execution( killId );
  697.  
  698.             else
  699.  
  700.                 headShot( killId );
  701.  
  702.         }
  703.  
  704.            
  705.  
  706.         if ( isDefined(self.wasti) && self.wasti && getTime() - self.spawnTime <= 5000 )
  707.  
  708.             self.modifiers["jackintheboxkill"] = true;
  709.  
  710.        
  711.  
  712.         if ( !isAlive( self ) && self.deathtime + 800 < getTime() )
  713.  
  714.             postDeathKill( killId );
  715.  
  716.        
  717.  
  718.         fakeAvenge = false;
  719.  
  720.         if ( level.teamBased && curTime - victim.lastKillTime < 500 )
  721.  
  722.         {
  723.  
  724.             if ( victim.lastkilledplayer != self )
  725.  
  726.                 self avengedPlayer( killId );      
  727.  
  728.         }
  729.  
  730.    
  731.  
  732.         foreach ( guid, damageTime in victim.damagedPlayers )
  733.  
  734.         {
  735.  
  736.             if ( guid == self.guid )
  737.  
  738.                 continue;
  739.  
  740.    
  741.  
  742.             if ( level.teamBased && curTime - damageTime < 500 )
  743.  
  744.                 self defendedPlayer( killId );
  745.  
  746.         }
  747.  
  748.    
  749.  
  750.         if ( isDefined( victim.attackerPosition ) )
  751.  
  752.             attackerPosition = victim.attackerPosition;
  753.  
  754.         else
  755.  
  756.             attackerPosition = self.origin;
  757.  
  758.    
  759.  
  760.         if ( isAlive( self ) && !self isUsingRemote() && (meansOfDeath == "MOD_RIFLE_BULLET" || meansOfDeath == "MOD_PISTOL_BULLET" || meansOfDeath == "MOD_HEAD_SHOT") && distance( attackerPosition, victim.origin ) > 1536 && !isKillstreakWeapon( weapon ) && !isDefined( self.assistedSuicide ) )
  761.  
  762.             self thread longshot( killId );
  763.  
  764.    
  765.  
  766.         //if ( isAlive( self ) && self.health < 20 && isDefined( self.attackers ) && self.attackers.size == 1 && self.attackers[0] == victim )
  767.  
  768.         //  victim thread consolation( killId );
  769.  
  770.    
  771.  
  772.         if ( isDefined( victim.killstreaks[ victim.pers["cur_kill_streak"] + 1 ] ) )
  773.  
  774.         {
  775.  
  776.             // playercard splash for the killstreak stopped
  777.  
  778.             self buzzKill( killId, victim );
  779.  
  780.         }
  781.  
  782.            
  783.  
  784.         self thread checkMatchDataKills( killId, victim, weapon, meansOfDeath);
  785.  
  786.        
  787.  
  788.     }
  789.  
  790.  
  791.  
  792.     if ( !isDefined( self.killedPlayers[victimGuid] ) )
  793.  
  794.         self.killedPlayers[victimGuid] = 0;
  795.  
  796.  
  797.  
  798.     if ( !isDefined( self.killedPlayersCurrent[victimGuid] ) )
  799.  
  800.         self.killedPlayersCurrent[victimGuid] = 0;
  801.  
  802.        
  803.  
  804.     if ( !isDefined( victim.killedBy[myGuid] ) )
  805.  
  806.         victim.killedBy[myGuid] = 0;
  807.  
  808.  
  809.  
  810.     self.killedPlayers[victimGuid]++;
  811.  
  812.    
  813.  
  814.     //this sets player stat for routine customer award
  815.  
  816.     if ( self.killedPlayers[victimGuid] > self.greatestUniquePlayerKills )
  817.  
  818.         self setPlayerStat( "killedsameplayer", self.killedPlayers[victimGuid] );
  819.  
  820.    
  821.  
  822.     self.killedPlayersCurrent[victimGuid]++;       
  823.  
  824.     victim.killedBy[myGuid]++; 
  825.  
  826.  
  827.  
  828.     victim.lastKilledBy = self;    
  829.  
  830. }
  831.  
  832.  
  833.  
  834.  
  835.  
  836. checkMatchDataKills( killId, victim, weapon, meansOfDeath )
  837.  
  838. {
  839.  
  840.     weaponClass = getWeaponClass( weapon );
  841.  
  842.     alreadyUsed = false;
  843.  
  844.    
  845.  
  846.     self thread camperCheck();
  847.  
  848.    
  849.  
  850.     if ( isDefined( self.lastKilledBy ) && self.lastKilledBy == victim )
  851.  
  852.     {
  853.  
  854.         self.lastKilledBy = undefined;
  855.  
  856.         self revenge( killId );
  857.  
  858.  
  859.  
  860.         playFx( level._effect["money"], victim getTagOrigin( "j_spine4" ) );
  861.  
  862.     }
  863.  
  864.  
  865.  
  866.     if ( victim.iDFlags & level.iDFLAGS_PENETRATION )
  867.  
  868.         self incPlayerStat( "bulletpenkills", 1 );
  869.  
  870.    
  871.  
  872.     if ( self.pers["rank"] < victim.pers["rank"] )
  873.  
  874.         self incPlayerStat( "higherrankkills", 1 );
  875.  
  876.    
  877.  
  878.     if ( self.pers["rank"] > victim.pers["rank"] )
  879.  
  880.         self incPlayerStat( "lowerrankkills", 1 );
  881.  
  882.    
  883.  
  884.     if ( isDefined( self.laststand ) && self.laststand )
  885.  
  886.         self incPlayerStat( "laststandkills", 1 );
  887.  
  888.    
  889.  
  890.     if ( isDefined( victim.laststand ) && victim.laststand )
  891.  
  892.         self incPlayerStat( "laststanderkills", 1 );
  893.  
  894.    
  895.  
  896.     if ( self getCurrentWeapon() != self.loadoutPrimary + "_mp" && self getCurrentWeapon() != self.loadoutSecondary + "_mp" )
  897.  
  898.         self incPlayerStat( "otherweaponkills", 1 );
  899.  
  900.  
  901.  
  902.     if ( getBaseWeaponName( weapon ) == "m79" )
  903.  
  904.         self incPlayerStat( "thumperkills", 1 );
  905.  
  906.    
  907.  
  908.     timeAlive = getTime() - victim.spawnTime ;
  909.  
  910.    
  911.  
  912.     if( !matchMakingGame() )
  913.  
  914.         victim setPlayerStatIfLower( "shortestlife", timeAlive );
  915.  
  916.        
  917.  
  918.     victim setPlayerStatIfGreater( "longestlife", timeAlive );
  919.  
  920.    
  921.  
  922.     switch( weaponClass )
  923.  
  924.     {
  925.  
  926.         case "weapon_pistol":
  927.  
  928.         case "weapon_smg":
  929.  
  930.         case "weapon_assault":
  931.  
  932.         case "weapon_projectile":
  933.  
  934.         case "weapon_sniper":
  935.  
  936.         case "weapon_shotgun":
  937.  
  938.         case "weapon_lmg":
  939.  
  940.             self checkMatchDataWeaponKills( victim, weapon, meansOfDeath, weaponClass );
  941.  
  942.             break;
  943.  
  944.         case "weapon_grenade":
  945.  
  946.         case "weapon_explosive":
  947.  
  948.             self checkMatchDataEquipmentKills( victim, weapon, meansOfDeath );
  949.  
  950.             break;
  951.  
  952.         default:
  953.  
  954.             break;
  955.  
  956.     }
  957.  
  958. }
  959.  
  960.  
  961.  
  962. // Need to make sure these only apply to kills of an enemy, not friendlies or yourself
  963.  
  964. checkMatchDataWeaponKills( victim, weapon, meansOfDeath, weaponType )
  965.  
  966. {
  967.  
  968.     attacker = self;
  969.  
  970.     kill_ref = undefined;
  971.  
  972.     headshot_ref = undefined;
  973.  
  974.     death_ref = undefined;
  975.  
  976.    
  977.  
  978.     switch( weaponType )
  979.  
  980.     {
  981.  
  982.         case "weapon_pistol":
  983.  
  984.             kill_ref = "pistolkills";
  985.  
  986.             headshot_ref = "pistolheadshots";
  987.  
  988.             break; 
  989.  
  990.         case "weapon_smg":
  991.  
  992.             kill_ref = "smgkills";
  993.  
  994.             headshot_ref = "smgheadshots";
  995.  
  996.             break;
  997.  
  998.         case "weapon_assault":
  999.  
  1000.             kill_ref = "arkills";
  1001.  
  1002.             headshot_ref = "arheadshots";
  1003.  
  1004.             break;
  1005.  
  1006.         case "weapon_projectile":
  1007.  
  1008.             if ( weaponClass( weapon ) == "rocketlauncher" )
  1009.  
  1010.                 kill_ref = "rocketkills";
  1011.  
  1012.             break;
  1013.  
  1014.         case "weapon_sniper":
  1015.  
  1016.             kill_ref = "sniperkills";
  1017.  
  1018.             headshot_ref = "sniperheadshots";
  1019.  
  1020.             break;
  1021.  
  1022.         case "weapon_shotgun":
  1023.  
  1024.             kill_ref = "shotgunkills";
  1025.  
  1026.             headshot_ref = "shotgunheadshots";
  1027.  
  1028.             death_ref = "shotgundeaths";
  1029.  
  1030.             break;
  1031.  
  1032.         case "weapon_lmg":
  1033.  
  1034.             kill_ref = "lmgkills";
  1035.  
  1036.             headshot_ref = "lmgheadshots";
  1037.  
  1038.             break;
  1039.  
  1040.         default:
  1041.  
  1042.             break;
  1043.  
  1044.     }
  1045.  
  1046.  
  1047.  
  1048.     if ( isDefined ( kill_ref ) )
  1049.  
  1050.         attacker incPlayerStat( kill_ref, 1 );
  1051.  
  1052.  
  1053.  
  1054.     if ( isDefined ( headshot_ref ) && meansOfDeath == "MOD_HEAD_SHOT" )
  1055.  
  1056.         attacker incPlayerStat( headshot_ref, 1 );
  1057.  
  1058.  
  1059.  
  1060.     if ( isDefined ( death_ref ) && !matchMakingGame() )
  1061.  
  1062.         victim incPlayerStat( death_ref, 1 );
  1063.  
  1064.        
  1065.  
  1066.     if ( attacker PlayerAds() > 0.5 )
  1067.  
  1068.     {
  1069.  
  1070.         attacker incPlayerStat( "adskills", 1 );
  1071.  
  1072.  
  1073.  
  1074.         if ( weaponType == "weapon_sniper" || isSubStr( weapon, "acog" ) )
  1075.  
  1076.             attacker incPlayerStat( "scopedkills", 1 );
  1077.  
  1078.        
  1079.  
  1080.         if ( isSubStr( weapon, "thermal" ) )
  1081.  
  1082.             attacker incPlayerStat( "thermalkills", 1 );
  1083.  
  1084.     }
  1085.  
  1086.     else
  1087.  
  1088.     {
  1089.  
  1090.         attacker incPlayerStat( "hipfirekills", 1 );
  1091.  
  1092.     }
  1093.  
  1094. }
  1095.  
  1096.  
  1097.  
  1098. // Need to make sure these only apply to kills of an enemy, not friendlies or yourself
  1099.  
  1100. checkMatchDataEquipmentKills( victim, weapon, meansOfDeath )
  1101.  
  1102. {  
  1103.  
  1104.     attacker = self;
  1105.  
  1106.    
  1107.  
  1108.     // equipment kills
  1109.  
  1110.     switch( weapon )
  1111.  
  1112.     {
  1113.  
  1114.         case "frag_grenade_mp":
  1115.  
  1116.             attacker incPlayerStat( "fragkills", 1 );
  1117.  
  1118.             attacker incPlayerStat( "grenadekills", 1 );
  1119.  
  1120.             isEquipment = true;
  1121.  
  1122.             break; 
  1123.  
  1124.         case "c4_mp":
  1125.  
  1126.             attacker incPlayerStat( "c4kills", 1 );
  1127.  
  1128.             isEquipment = true;
  1129.  
  1130.             break;
  1131.  
  1132.         case "semtex_mp":
  1133.  
  1134.             attacker incPlayerStat( "semtexkills", 1 );
  1135.  
  1136.             attacker incPlayerStat( "grenadekills", 1 );
  1137.  
  1138.             isEquipment = true;
  1139.  
  1140.             break;
  1141.  
  1142.         case "claymore_mp":
  1143.  
  1144.             attacker incPlayerStat( "claymorekills", 1 );
  1145.  
  1146.             isEquipment = true;
  1147.  
  1148.             break;
  1149.  
  1150.         case "throwingknife_mp":
  1151.  
  1152.             attacker incPlayerStat( "throwingknifekills", 1 );
  1153.  
  1154.             self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "knifethrow", maps\mp\gametypes\_rank::getScoreInfoValue( "knifethrow" ) );
  1155.  
  1156.             isEquipment = true;
  1157.  
  1158.             break;
  1159.  
  1160.         default:
  1161.  
  1162.             isEquipment = false;
  1163.  
  1164.             break;
  1165.  
  1166.     }
  1167.  
  1168.    
  1169.  
  1170.     if ( isEquipment )
  1171.  
  1172.         attacker incPlayerStat( "equipmentkills", 1 );
  1173.  
  1174. }
  1175.  
  1176.  
  1177.  
  1178. camperCheck()
  1179.  
  1180. {
  1181.  
  1182.     if ( !isDefined ( self.lastKillLocation ) )
  1183.  
  1184.     {
  1185.  
  1186.         self.lastKillLocation = self.origin;   
  1187.  
  1188.         self.lastCampKillTime = getTime();
  1189.  
  1190.         return;
  1191.  
  1192.     }
  1193.  
  1194.    
  1195.  
  1196.     if ( Distance( self.lastKillLocation, self.origin ) < 512 && getTime() - self.lastCampKillTime > 5000 )
  1197.  
  1198.     {
  1199.  
  1200.         self incPlayerStat( "mostcamperkills", 1 );
  1201.  
  1202.     }
  1203.  
  1204.    
  1205.  
  1206.     self.lastKillLocation = self.origin;
  1207.  
  1208.     self.lastCampKillTime = getTime();
  1209.  
  1210. }
  1211.  
  1212.  
  1213.  
  1214. consolation( killId )
  1215.  
  1216. {
  1217.  
  1218.     /*
  1219.  
  1220.     value = int( maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ) * 0.25 );
  1221.  
  1222.  
  1223.  
  1224.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "consolation", value );
  1225.  
  1226.     self thread maps\mp\gametypes\_rank::giveRankXP( "consolation", value );
  1227.  
  1228.     */
  1229.  
  1230. }
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236. longshot( killId )
  1237.  
  1238. {
  1239.  
  1240.     self.modifiers["longshot"] = true;
  1241.  
  1242.    
  1243.  
  1244.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "longshot", maps\mp\gametypes\_rank::getScoreInfoValue( "longshot" ) );
  1245.  
  1246.     self thread maps\mp\gametypes\_rank::giveRankXP( "longshot" );
  1247.  
  1248.     self thread giveAdrenaline( "longshot" );
  1249.  
  1250.     self incPlayerStat( "longshots", 1 );
  1251.  
  1252.     self thread maps\mp\_matchdata::logKillEvent( killId, "longshot" );
  1253.  
  1254. }
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260. execution( killId )
  1261.  
  1262. {
  1263.  
  1264.     self.modifiers["execution"] = true;
  1265.  
  1266.  
  1267.  
  1268.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "execution", maps\mp\gametypes\_rank::getScoreInfoValue( "execution" ) );
  1269.  
  1270.     self thread maps\mp\gametypes\_rank::giveRankXP( "execution" );
  1271.  
  1272.     self thread giveAdrenaline( "execution" );
  1273.  
  1274.     self thread maps\mp\_matchdata::logKillEvent( killId, "execution" );
  1275.  
  1276. }
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282. headShot( killId )
  1283.  
  1284. {
  1285.  
  1286.     self.modifiers["headshot"] = true;
  1287.  
  1288.  
  1289.  
  1290.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "headshot", maps\mp\gametypes\_rank::getScoreInfoValue( "headshot" ) );
  1291.  
  1292.     self thread maps\mp\gametypes\_rank::giveRankXP( "headshot" );
  1293.  
  1294.     self thread giveAdrenaline( "headshot" );
  1295.  
  1296.     self thread maps\mp\_matchdata::logKillEvent( killId, "headshot" );
  1297.  
  1298. }
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304. avengedPlayer( killId )
  1305.  
  1306. {
  1307.  
  1308.     self.modifiers["avenger"] = true;
  1309.  
  1310.  
  1311.  
  1312.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "avenger", maps\mp\gametypes\_rank::getScoreInfoValue( "avenger" ) );
  1313.  
  1314.     self thread maps\mp\gametypes\_rank::giveRankXP( "avenger" );
  1315.  
  1316.     self thread giveAdrenaline( "avenger" );
  1317.  
  1318.     self thread maps\mp\_matchdata::logKillEvent( killId, "avenger" );
  1319.  
  1320.    
  1321.  
  1322.     self incPlayerStat( "avengekills", 1 );
  1323.  
  1324. }
  1325.  
  1326.  
  1327.  
  1328. assistedSuicide( killId )
  1329.  
  1330. {
  1331.  
  1332.     self.modifiers["assistedsuicide"] = true;
  1333.  
  1334.  
  1335.  
  1336.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "assistedsuicide", maps\mp\gametypes\_rank::getScoreInfoValue( "assistedsuicide" ) );
  1337.  
  1338.     self thread maps\mp\gametypes\_rank::giveRankXP( "assistedsuicide" );
  1339.  
  1340.     self thread giveAdrenaline( "assistedsuicide" );
  1341.  
  1342.     self thread maps\mp\_matchdata::logKillEvent( killId, "assistedsuicide" );
  1343.  
  1344. }
  1345.  
  1346.  
  1347.  
  1348. defendedPlayer( killId )
  1349.  
  1350. {
  1351.  
  1352.     self.modifiers["defender"] = true;
  1353.  
  1354.  
  1355.  
  1356.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "defender", maps\mp\gametypes\_rank::getScoreInfoValue( "defender" ) );
  1357.  
  1358.     self thread maps\mp\gametypes\_rank::giveRankXP( "defender" );
  1359.  
  1360.     self thread giveAdrenaline( "defender" );
  1361.  
  1362.     self thread maps\mp\_matchdata::logKillEvent( killId, "defender" );
  1363.  
  1364.    
  1365.  
  1366.     self incPlayerStat( "rescues", 1 );
  1367.  
  1368. }
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374. postDeathKill( killId )
  1375.  
  1376. {
  1377.  
  1378.     self.modifiers["posthumous"] = true;
  1379.  
  1380.  
  1381.  
  1382.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "posthumous", maps\mp\gametypes\_rank::getScoreInfoValue( "posthumous" ) );
  1383.  
  1384.     self thread maps\mp\gametypes\_rank::giveRankXP( "posthumous" );
  1385.  
  1386.     self thread maps\mp\_matchdata::logKillEvent( killId, "posthumous" );
  1387.  
  1388. }
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394. backStab( killId )
  1395.  
  1396. {
  1397.  
  1398.     self iPrintLnBold( "backstab" );
  1399.  
  1400. }
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406. revenge( killId )
  1407.  
  1408. {
  1409.  
  1410.     self.modifiers["revenge"] = true;
  1411.  
  1412.  
  1413.  
  1414.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "revenge", maps\mp\gametypes\_rank::getScoreInfoValue( "revenge" ) );
  1415.  
  1416.     self thread maps\mp\gametypes\_rank::giveRankXP( "revenge" );
  1417.  
  1418.     self thread giveAdrenaline( "revenge" );
  1419.  
  1420.     self thread maps\mp\_matchdata::logKillEvent( killId, "revenge" );
  1421.  
  1422.    
  1423.  
  1424.     self incPlayerStat( "revengekills", 1 );
  1425.  
  1426. }
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432. multiKill( killId, killCount )
  1433.  
  1434. {
  1435.  
  1436.     assert( killCount > 1 );
  1437.  
  1438.    
  1439.  
  1440.     if ( killCount == 2 )
  1441.  
  1442.     {
  1443.  
  1444.         self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "doublekill", maps\mp\gametypes\_rank::getScoreInfoValue( "double" ) );
  1445.  
  1446.         self thread giveAdrenaline( "double" );
  1447.  
  1448.     }
  1449.  
  1450.     else if ( killCount == 3 )
  1451.  
  1452.     {
  1453.  
  1454.         self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "triplekill", maps\mp\gametypes\_rank::getScoreInfoValue( "triple" ) );
  1455.  
  1456.         self thread giveAdrenaline( "triple" );
  1457.  
  1458.         thread teamPlayerCardSplash( "callout_3xkill", self );
  1459.  
  1460.     }
  1461.  
  1462.     else
  1463.  
  1464.     {
  1465.  
  1466.         self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "multikill", maps\mp\gametypes\_rank::getScoreInfoValue( "multi" ) );
  1467.  
  1468.         self thread giveAdrenaline( "multi" );
  1469.  
  1470.         thread teamPlayerCardSplash( "callout_3xpluskill", self );
  1471.  
  1472.     }
  1473.  
  1474.    
  1475.  
  1476.     self thread maps\mp\_matchdata::logMultiKill( killId, killCount );
  1477.  
  1478.    
  1479.  
  1480.     // update player multikill record
  1481.  
  1482.     self setPlayerStatIfGreater( "multikill", killCount );
  1483.  
  1484.    
  1485.  
  1486.     // update player multikill count
  1487.  
  1488.     self incPlayerStat( "mostmultikills", 1 );
  1489.  
  1490. }
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496. firstBlood( killId )
  1497.  
  1498. {
  1499.  
  1500.     self.modifiers["firstblood"] = true;
  1501.  
  1502.  
  1503.  
  1504.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "firstblood", maps\mp\gametypes\_rank::getScoreInfoValue( "firstblood" ) );
  1505.  
  1506.     self thread maps\mp\gametypes\_rank::giveRankXP( "firstblood" );
  1507.  
  1508.     self thread maps\mp\_matchdata::logKillEvent( killId, "firstblood" );
  1509.  
  1510.  
  1511.  
  1512.     thread teamPlayerCardSplash( "callout_firstblood", self );
  1513.  
  1514. }
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520. winningShot( killId )
  1521.  
  1522. {
  1523.  
  1524. }
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530. buzzKill( killId, victim )
  1531.  
  1532. {
  1533.  
  1534.     self.modifiers["buzzkill"] =  victim.pers["cur_kill_streak"];
  1535.  
  1536.  
  1537.  
  1538.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "buzzkill", maps\mp\gametypes\_rank::getScoreInfoValue( "buzzkill" ) );
  1539.  
  1540.     self thread maps\mp\gametypes\_rank::giveRankXP( "buzzkill" );
  1541.  
  1542.     self thread giveAdrenaline( "buzzkill" );
  1543.  
  1544.     self thread maps\mp\_matchdata::logKillEvent( killId, "buzzkill" );
  1545.  
  1546. }
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552. comeBack( killId )
  1553.  
  1554. {
  1555.  
  1556.     self.modifiers["comeback"] = true;
  1557.  
  1558.  
  1559.  
  1560.     self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "comeback", maps\mp\gametypes\_rank::getScoreInfoValue( "comeback" ) );
  1561.  
  1562.     self thread maps\mp\gametypes\_rank::giveRankXP( "comeback" );
  1563.  
  1564.     self thread giveAdrenaline( "comeback" );
  1565.  
  1566.     self thread maps\mp\_matchdata::logKillEvent( killId, "comeback" );
  1567.  
  1568.  
  1569.  
  1570.     self incPlayerStat( "comebacks", 1 );
  1571.  
  1572. }
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578. disconnected()
  1579.  
  1580. {
  1581.  
  1582.     myGuid = self.guid;
  1583.  
  1584.    
  1585.  
  1586.     for ( entry = 0; entry < level.players.size; entry++ )
  1587.  
  1588.     {
  1589.  
  1590.         if ( isDefined( level.players[entry].killedPlayers[myGuid] ) )
  1591.  
  1592.             level.players[entry].killedPlayers[myGuid] = undefined;
  1593.  
  1594.    
  1595.  
  1596.         if ( isDefined( level.players[entry].killedPlayersCurrent[myGuid] ) )
  1597.  
  1598.             level.players[entry].killedPlayersCurrent[myGuid] = undefined;
  1599.  
  1600.    
  1601.  
  1602.         if ( isDefined( level.players[entry].killedBy[myGuid] ) )
  1603.  
  1604.             level.players[entry].killedBy[myGuid] = undefined;
  1605.  
  1606.     }
  1607.  
  1608. }
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614. updateRecentKills( killId )
  1615.  
  1616. {
  1617.  
  1618.     self endon ( "disconnect" );
  1619.  
  1620.     level endon ( "game_ended" );
  1621.  
  1622.    
  1623.  
  1624.     self notify ( "updateRecentKills" );
  1625.  
  1626.     self endon ( "updateRecentKills" );
  1627.  
  1628.    
  1629.  
  1630.     self.recentKillCount++;
  1631.  
  1632.    
  1633.  
  1634.     wait ( 1.0 );
  1635.  
  1636.    
  1637.  
  1638.     if ( self.recentKillCount > 1 )
  1639.  
  1640.         self multiKill( killId, self.recentKillCount );
  1641.  
  1642.    
  1643.  
  1644.     self.recentKillCount = 0;
  1645.  
  1646. }
  1647.  
  1648.  
  1649.  
  1650. monitorCrateJacking()
  1651.  
  1652. {
  1653.  
  1654.     level endon( "end_game" );
  1655.  
  1656.     self endon( "disconnect" );
  1657.  
  1658.    
  1659.  
  1660.     for( ;; )
  1661.  
  1662.     {
  1663.  
  1664.         self waittill( "hijacker", crateType, owner );
  1665.  
  1666.        
  1667.  
  1668.         if( crateType == "sentry" )
  1669.  
  1670.         {
  1671.  
  1672.             self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "hijacker", 100 );
  1673.  
  1674.             self thread maps\mp\gametypes\_rank::giveRankXP( "hijacker", 100 );
  1675.  
  1676.             if ( isDefined( owner ) )
  1677.  
  1678.                 owner maps\mp\gametypes\_hud_message::playerCardSplashNotify( "hijacked_sentry", self );
  1679.  
  1680.             self notify( "process", "ch_hijacker" );
  1681.  
  1682.         }
  1683.  
  1684.         else if( crateType == "mega" || crateType == "emergency_airdrop" )
  1685.  
  1686.         {
  1687.  
  1688.             if ( self.team == owner.team )
  1689.  
  1690.                 continue;
  1691.  
  1692.            
  1693.  
  1694.             self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "hijacker", 100 );
  1695.  
  1696.             self thread maps\mp\gametypes\_rank::giveRankXP( "hijacker", 100 );
  1697.  
  1698.             if ( isDefined( owner ) )
  1699.  
  1700.                 owner maps\mp\gametypes\_hud_message::playerCardSplashNotify( "hijacked_emergency_airdrop", self );
  1701.  
  1702.             self notify( "process", "ch_newjack" );
  1703.  
  1704.         }
  1705.  
  1706.         else
  1707.  
  1708.         {
  1709.  
  1710.             self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "hijacker", 100 );
  1711.  
  1712.             self thread maps\mp\gametypes\_rank::giveRankXP( "hijacker", 100 );
  1713.  
  1714.             if ( isDefined( owner ) )
  1715.  
  1716.                 owner maps\mp\gametypes\_hud_message::playerCardSplashNotify( "hijacked_airdrop", self );
  1717.  
  1718.             self notify( "process", "ch_hijacker" );
  1719.  
  1720.         }      
  1721.  
  1722.     }
  1723.  
  1724. }
  1725.  
  1726.  
  1727.  
  1728. monitorObjectives()
  1729.  
  1730. {
  1731.  
  1732.     level endon( "end_game" );
  1733.  
  1734.     self endon( "disconnect" );
  1735.  
  1736.    
  1737.  
  1738.     self waittill( "objective", objType );
  1739.  
  1740.    
  1741.  
  1742.     if ( objType == "captured" )
  1743.  
  1744.     {
  1745.  
  1746.         if ( isDefined( self.lastStand ) && self.lastStand )
  1747.  
  1748.         {
  1749.  
  1750.             self thread maps\mp\gametypes\_hud_message::SplashNotifyDelayed( "heroic", 100 );
  1751.  
  1752.             self thread maps\mp\gametypes\_rank::giveRankXP( "reviver", 100 );
  1753.  
  1754.         }
  1755.  
  1756.     }  
  1757.  
  1758. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement