Guest User

Untitled

a guest
Sep 29th, 2010
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.31 KB | None | 0 0
  1. #include maps\mp\_utility;
  2. #include common_scripts\utility;
  3.  
  4.  
  5. init()
  6. {
  7. level._effect[ "emp_flash" ] = loadfx( "explosions/emp_flash_mp" );
  8.  
  9. level.teamEMPed["allies"] = false;
  10. level.teamEMPed["axis"] = false;
  11. level.empPlayer = undefined;
  12.  
  13. if ( level.teamBased )
  14. level thread EMP_TeamTracker();
  15. else
  16. level thread EMP_PlayerTracker();
  17.  
  18. level.killstreakFuncs["emp"] = ::EMP_Use;
  19.  
  20. level thread onPlayerConnect();
  21.  
  22. }
  23.  
  24.  
  25.  
  26. onPlayerConnect()
  27. {
  28. for(;;)
  29. {
  30. level waittill("connected", player);
  31. player thread onPlayerSpawned();
  32. }
  33. }
  34.  
  35.  
  36. onPlayerSpawned()
  37. {
  38. self endon("disconnect");
  39.  
  40. for(;;)
  41. {
  42. self waittill( "spawned_player" );
  43.  
  44. if ( (level.teamBased && level.teamEMPed[self.team]) || (!level.teamBased && isDefined( level.empPlayer ) && level.empPlayer != self) )
  45. self setEMPJammed( true );
  46. }
  47. }
  48.  
  49.  
  50. EMP_Use( lifeId, delay )
  51. {
  52. assert( isDefined( self ) );
  53.  
  54. if ( !isDefined( delay ) )
  55. delay = 5.0;
  56.  
  57. myTeam = self.pers["team"];
  58. otherTeam = level.otherTeam[myTeam];
  59.  
  60. if ( level.teamBased )
  61. self thread EMP_JamTeam( otherTeam, 60.0, delay );
  62. else
  63. self thread EMP_JamPlayers( self, 60.0, delay );
  64.  
  65. self maps\mp\_matchdata::logKillstreakEvent( "emp", self.origin );
  66. self notify( "used_emp" );
  67.  
  68. return true;
  69. }
  70.  
  71.  
  72. EMP_JamTeam( teamName, duration, delay )
  73. {
  74. level endon ( "game_ended" );
  75.  
  76. assert( teamName == "allies" || teamName == "axis" );
  77.  
  78. //wait ( delay );
  79.  
  80. thread teamPlayerCardSplash( "used_emp", self );
  81.  
  82. level notify ( "EMP_JamTeam" + teamName );
  83. level endon ( "EMP_JamTeam" + teamName );
  84.  
  85. foreach ( player in level.players )
  86. {
  87. player playLocalSound( "emp_activate" );
  88.  
  89. if ( player.team != teamName )
  90. continue;
  91.  
  92. if ( player _hasPerk( "specialty_localjammer" ) )
  93. player RadarJamOff();
  94. }
  95.  
  96. visionSetNaked( "coup_sunblind", 0.1 );
  97. thread empEffects();
  98.  
  99. wait ( 0.1 );
  100.  
  101. // resetting the vision set to the same thing won't normally have an effect.
  102. // however, if the client receives the previous visionset change in the same packet as this one,
  103. // this will force them to lerp from the bright one to the normal one.
  104. visionSetNaked( "coup_sunblind", 0 );
  105. visionSetNaked( getDvar( "mapname" ), 3.0 );
  106.  
  107. level.teamEMPed[teamName] = true;
  108. level notify ( "emp_update" );
  109.  
  110. level destroyActiveVehicles( self );
  111.  
  112. maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( duration );
  113.  
  114. level.teamEMPed[teamName] = false;
  115.  
  116. foreach ( player in level.players )
  117. {
  118. if ( player.team != teamName )
  119. continue;
  120.  
  121. if ( player _hasPerk( "specialty_localjammer" ) )
  122. player RadarJamOn();
  123. }
  124.  
  125. level notify ( "emp_update" );
  126. }
  127.  
  128. EMP_JamPlayers( owner, duration, delay )
  129. {
  130. level notify ( "EMP_JamPlayers" );
  131. level endon ( "EMP_JamPlayers" );
  132.  
  133. assert( isDefined( owner ) );
  134.  
  135. //wait ( delay );
  136.  
  137. foreach ( player in level.players )
  138. {
  139. player playLocalSound( "emp_activate" );
  140.  
  141. if ( player == owner )
  142. continue;
  143.  
  144. if ( player _hasPerk( "specialty_localjammer" ) )
  145. player RadarJamOff();
  146. }
  147.  
  148. visionSetNaked( "coup_sunblind", 0.1 );
  149. thread empEffects();
  150.  
  151. wait ( 0.1 );
  152.  
  153. // resetting the vision set to the same thing won't normally have an effect.
  154. // however, if the client receives the previous visionset change in the same packet as this one,
  155. // this will force them to lerp from the bright one to the normal one.
  156. visionSetNaked( "coup_sunblind", 0 );
  157. visionSetNaked( getDvar( "mapname" ), 3.0 );
  158.  
  159. level notify ( "emp_update" );
  160.  
  161. level.empPlayer = owner;
  162. level.empPlayer thread empPlayerFFADisconnect();
  163. level destroyActiveVehicles( owner );
  164.  
  165. level notify ( "emp_update" );
  166.  
  167. maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( duration );
  168.  
  169. foreach ( player in level.players )
  170. {
  171. if ( player == owner )
  172. continue;
  173.  
  174. if ( player _hasPerk( "specialty_localjammer" ) )
  175. player RadarJamOn();
  176. }
  177.  
  178. level.empPlayer = undefined;
  179. level notify ( "emp_update" );
  180. level notify ( "emp_ended" );
  181. }
  182.  
  183. empPlayerFFADisconnect()
  184. {
  185. level endon ( "EMP_JamPlayers" );
  186. level endon ( "emp_ended" );
  187.  
  188. self waittill( "disconnect" );
  189. level notify ( "emp_update" );
  190. }
  191.  
  192. empEffects()
  193. {
  194. foreach( player in level.players )
  195. {
  196. playerForward = anglestoforward( player.angles );
  197. playerForward = ( playerForward[0], playerForward[1], 0 );
  198. playerForward = VectorNormalize( playerForward );
  199.  
  200. empDistance = 20000;
  201.  
  202. empEnt = Spawn( "script_model", player.origin + ( 0, 0, 8000 ) + Vector_Multiply( playerForward, empDistance ) );
  203. empEnt setModel( "tag_origin" );
  204. empEnt.angles = empEnt.angles + ( 270, 0, 0 );
  205. empEnt thread empEffect( player );
  206. }
  207. }
  208.  
  209. empEffect( player )
  210. {
  211. player endon( "disconnect" );
  212.  
  213. wait( 0.5 );
  214. PlayFXOnTagForClients( level._effect[ "emp_flash" ], self, "tag_origin", player );
  215. }
  216.  
  217. EMP_TeamTracker()
  218. {
  219. level endon ( "game_ended" );
  220.  
  221. for ( ;; )
  222. {
  223. level waittill_either ( "joined_team", "emp_update" );
  224.  
  225. foreach ( player in level.players )
  226. {
  227. if ( player.team == "spectator" )
  228. continue;
  229.  
  230. player setEMPJammed( level.teamEMPed[player.team] );
  231. }
  232. }
  233. }
  234.  
  235.  
  236. EMP_PlayerTracker()
  237. {
  238. level endon ( "game_ended" );
  239.  
  240. for ( ;; )
  241. {
  242. level waittill_either ( "joined_team", "emp_update" );
  243.  
  244. foreach ( player in level.players )
  245. {
  246. if ( player.team == "spectator" )
  247. continue;
  248.  
  249. if ( isDefined( level.empPlayer ) && level.empPlayer != player )
  250. player setEMPJammed( true );
  251. else
  252. player setEMPJammed( false );
  253. }
  254. }
  255. }
  256.  
  257. destroyActiveVehicles( attacker )
  258. {
  259. if ( isDefined( attacker ) )
  260. {
  261. foreach ( heli in level.helis )
  262. radiusDamage( heli.origin, 384, 5000, 5000, attacker );
  263.  
  264. foreach ( littleBird in level.littleBird )
  265. radiusDamage( littleBird.origin, 384, 5000, 5000, attacker );
  266.  
  267. foreach ( turret in level.turrets )
  268. radiusDamage( turret.origin, 16, 5000, 5000, attacker );
  269.  
  270. foreach ( rocket in level.rockets )
  271. rocket notify ( "death" );
  272.  
  273. if ( level.teamBased )
  274. {
  275. foreach ( uav in level.uavModels["allies"] )
  276. radiusDamage( uav.origin, 384, 5000, 5000, attacker );
  277.  
  278. foreach ( uav in level.uavModels["axis"] )
  279. radiusDamage( uav.origin, 384, 5000, 5000, attacker );
  280. }
  281. else
  282. {
  283. foreach ( uav in level.uavModels )
  284. radiusDamage( uav.origin, 384, 5000, 5000, attacker );
  285. }
  286.  
  287. if ( isDefined( level.ac130player ) )
  288. radiusDamage( level.ac130.planeModel.origin+(0,0,10), 1000, 5000, 5000, attacker );
  289. }
  290. else
  291. {
  292. foreach ( heli in level.helis )
  293. radiusDamage( heli.origin, 384, 5000, 5000 );
  294.  
  295. foreach ( littleBird in level.littleBird )
  296. radiusDamage( littleBird.origin, 384, 5000, 5000 );
  297.  
  298. foreach ( turret in level.turrets )
  299. radiusDamage( turret.origin, 16, 5000, 5000 );
  300.  
  301. foreach ( rocket in level.rockets )
  302. rocket notify ( "death" );
  303.  
  304. if ( level.teamBased )
  305. {
  306. foreach ( uav in level.uavModels["allies"] )
  307. radiusDamage( uav.origin, 384, 5000, 5000 );
  308.  
  309. foreach ( uav in level.uavModels["axis"] )
  310. radiusDamage( uav.origin, 384, 5000, 5000 );
  311. }
  312. else
  313. {
  314. foreach ( uav in level.uavModels )
  315. radiusDamage( uav.origin, 384, 5000, 5000 );
  316. }
  317.  
  318. if ( isDefined( level.ac130player ) )
  319. radiusDamage( level.ac130.planeModel.origin+(0,0,10), 1000, 5000, 5000 );
  320. }
  321. }
Advertisement
Add Comment
Please, Sign In to add comment