Guest User

Untitled

a guest
Jul 27th, 2011
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.39 KB | None | 0 0
  1. #include common_scripts\utility;
  2. #include maps\mp\_utility;
  3. #include maps\mp\gametypes\_hud_util;
  4. #include maps\mp\perks\_perkfunctions;
  5.  
  6. init()
  7. {
  8. level.perkFuncs = [];
  9.  
  10. precacheShader( "combathigh_overlay" );
  11. precacheShader( "specialty_painkiller" );
  12.  
  13. precacheModel( "weapon_riot_shield_mp" );
  14. precacheModel( "viewmodel_riot_shield_mp" );
  15. precacheString( &"MPUI_CHANGING_KIT" );
  16.  
  17. //level.spawnGlowSplat = loadfx( "misc/flare_ambient_destroy" );
  18.  
  19. level.spawnGlowModel["enemy"] = "mil_emergency_flare_mp";
  20. level.spawnGlowModel["friendly"] = "mil_emergency_flare_mp";
  21. level.spawnGlow["enemy"] = loadfx( "misc/flare_ambient" );
  22. level.spawnGlow["friendly"] = loadfx( "misc/flare_ambient_green" );
  23. level.c4Death = loadfx( "explosions/oxygen_tank_explosion" );
  24.  
  25. level.spawnFire = loadfx( "props/barrelexp" );
  26.  
  27. precacheModel( level.spawnGlowModel["friendly"] );
  28. precacheModel( level.spawnGlowModel["enemy"] );
  29.  
  30. precacheString( &"MP_DESTROY_TI" );
  31.  
  32. precacheShaders();
  33.  
  34. level._effect["ricochet"] = loadfx( "impacts/large_metalhit_1" );
  35.  
  36. // perks that currently only exist in script: these will error if passed to "setPerk", etc... CASE SENSITIVE! must be lower
  37. level.scriptPerks = [];
  38. level.perkSetFuncs = [];
  39. level.perkUnsetFuncs = [];
  40. level.fauxPerks = [];
  41.  
  42. level.scriptPerks["specialty_blastshield"] = true;
  43. level.scriptPerks["_specialty_blastshield"] = true;
  44. level.scriptPerks["specialty_akimbo"] = true;
  45. level.scriptPerks["specialty_siege"] = true;
  46. level.scriptPerks["specialty_falldamage"] = true;
  47. level.scriptPerks["specialty_fmj"] = true;
  48. level.scriptPerks["specialty_shield"] = true;
  49. level.scriptPerks["specialty_feigndeath"] = true;
  50. level.scriptPerks["specialty_shellshock"] = true;
  51. level.scriptPerks["specialty_delaymine"] = true;
  52. level.scriptPerks["specialty_localjammer"] = true;
  53. level.scriptPerks["specialty_thermal"] = true;
  54. level.scriptPerks["specialty_finalstand"] = true;
  55. level.scriptPerks["specialty_blackbox"] = true;
  56. level.scriptPerks["specialty_steelnerves"] = true;
  57. level.scriptPerks["specialty_flashgrenade"] = true;
  58. level.scriptPerks["specialty_smokegrenade"] = true;
  59. level.scriptPerks["specialty_concussiongrenade"] = true;
  60. level.scriptPerks["specialty_challenger"] = true;
  61. level.scriptPerks["specialty_tacticalinsertion"] = true;
  62. level.scriptPerks["specialty_saboteur"] = true;
  63. level.scriptPerks["specialty_endgame"] = true;
  64. level.scriptPerks["specialty_rearview"] = true;
  65. level.scriptPerks["specialty_hardline"] = true;
  66. level.scriptPerks["specialty_ac130"] = true;
  67. level.scriptPerks["specialty_sentry_minigun"] = true;
  68. level.scriptPerks["specialty_predator_missile"] = true;
  69. level.scriptPerks["specialty_helicopter_minigun"] = true;
  70. level.scriptPerks["specialty_tank"] = true;
  71. level.scriptPerks["specialty_precision_airstrike"] = true;
  72. level.scriptPerks["specialty_bling"] = true;
  73. level.scriptPerks["specialty_carepackage"] = true;
  74. level.scriptPerks["specialty_onemanarmy"] = true;
  75. level.scriptPerks["specialty_littlebird_support"] = true;
  76. level.scriptPerks["specialty_primarydeath"] = true;
  77. level.scriptPerks["specialty_secondarybling"] = true;
  78. level.scriptPerks["specialty_combathigh"] = true;
  79. level.scriptPerks["specialty_c4death"] = true;
  80. level.scriptPerks["specialty_explosivedamage"] = true;
  81. level.scriptPerks["specialty_copycat"] = true;
  82. level.scriptPerks["specialty_laststandoffhand"] = true;
  83. level.scriptPerks["specialty_dangerclose"] = true;
  84.  
  85. level.scriptPerks["specialty_extraspecialduration"] = true;
  86. level.scriptPerks["specialty_rollover"] = true;
  87. level.scriptPerks["specialty_armorpiercing"] = true;
  88. level.scriptPerks["specialty_omaquickchange"] = true;
  89. level.scriptPerks["specialty_fastmeleerecovery"] = true;
  90.  
  91. level.scriptPerks["_specialty_rearview"] = true;
  92. level.scriptPerks["_specialty_onemanarmy"] = true;
  93.  
  94. level.fauxPerks["specialty_tacticalinsertion"] = true;
  95. level.fauxPerks["specialty_shield"] = true;
  96.  
  97.  
  98. /*
  99. level.perkSetFuncs[""] = ::;
  100. level.perkUnsetFuncs[""] = ::;
  101. */
  102.  
  103. level.perkSetFuncs["specialty_blastshield"] = ::setBlastShield;
  104. level.perkUnsetFuncs["specialty_blastshield"] = ::unsetBlastShield;
  105.  
  106. level.perkSetFuncs["specialty_siege"] = ::setSiege;
  107. level.perkUnsetFuncs["specialty_siege"] = ::unsetSiege;
  108.  
  109. level.perkSetFuncs["specialty_falldamage"] = ::setFreefall;
  110. level.perkUnsetFuncs["specialty_falldamage"] = ::unsetFreefall;
  111.  
  112. level.perkSetFuncs["specialty_localjammer"] = ::setLocalJammer;
  113. level.perkUnsetFuncs["specialty_localjammer"] = ::unsetLocalJammer;
  114.  
  115. level.perkSetFuncs["specialty_thermal"] = ::setThermal;
  116. level.perkUnsetFuncs["specialty_thermal"] = ::unsetThermal;
  117.  
  118. level.perkSetFuncs["specialty_blackbox"] = ::setBlackBox;
  119. level.perkUnsetFuncs["specialty_blackbox"] = ::unsetBlackBox;
  120.  
  121. level.perkSetFuncs["specialty_lightweight"] = ::setLightWeight;
  122. level.perkUnsetFuncs["specialty_lightweight"] = ::unsetLightWeight;
  123.  
  124. level.perkSetFuncs["specialty_steelnerves"] = ::setSteelNerves;
  125. level.perkUnsetFuncs["specialty_steelnerves"] = ::unsetSteelNerves;
  126.  
  127. level.perkSetFuncs["specialty_delaymine"] = ::setDelayMine;
  128. level.perkUnsetFuncs["specialty_delaymine"] = ::unsetDelayMine;
  129.  
  130. level.perkSetFuncs["specialty_finalstand"] = ::setFinalStand;
  131. level.perkUnsetFuncs["specialty_finalstand"] = ::unsetFinalStand;
  132.  
  133. level.perkSetFuncs["specialty_combathigh"] = ::setCombatHigh;
  134. level.perkUnsetFuncs["specialty_combathigh"] = ::unsetCombatHigh;
  135.  
  136. level.perkSetFuncs["specialty_challenger"] = ::setChallenger;
  137. level.perkUnsetFuncs["specialty_challenger"] = ::unsetChallenger;
  138.  
  139. level.perkSetFuncs["specialty_saboteur"] = ::setSaboteur;
  140. level.perkUnsetFuncs["specialty_saboteur"] = ::unsetSaboteur;
  141.  
  142. level.perkSetFuncs["specialty_endgame"] = ::setEndGame;
  143. level.perkUnsetFuncs["specialty_endgame"] = ::unsetEndGame;
  144.  
  145. level.perkSetFuncs["specialty_rearview"] = ::setRearView;
  146. level.perkUnsetFuncs["specialty_rearview"] = ::unsetRearView;
  147.  
  148. level.perkSetFuncs["specialty_ac130"] = ::setAC130;
  149. level.perkUnsetFuncs["specialty_ac130"] = ::unsetAC130;
  150.  
  151. level.perkSetFuncs["specialty_sentry_minigun"] = ::setSentryMinigun;
  152. level.perkUnsetFuncs["specialty_sentry_minigun"] = ::unsetSentryMinigun;
  153.  
  154. level.perkSetFuncs["specialty_predator_missile"] = ::setPredatorMissile;
  155. level.perkUnsetFuncs["specialty_predator_missile"] = ::unsetPredatorMissile;
  156.  
  157. level.perkSetFuncs["specialty_tank"] = ::setTank;
  158. level.perkUnsetFuncs["specialty_tank"] = ::unsetTank;
  159.  
  160. level.perkSetFuncs["specialty_precision_airstrike"] = ::setPrecision_airstrike;
  161. level.perkUnsetFuncs["specialty_precision_airstrike"] = ::unsetPrecision_airstrike;
  162.  
  163. level.perkSetFuncs["specialty_helicopter_minigun"] = ::setHelicopterMinigun;
  164. level.perkUnsetFuncs["specialty_helicopter_minigun"] = ::unsetHelicopterMinigun;
  165.  
  166. level.perkSetFuncs["specialty_carepackage"] = ::setCarePackage;
  167. level.perkUnsetFuncs["specialty_carepackage"] = ::unsetCarePackage;
  168.  
  169. level.perkSetFuncs["specialty_onemanarmy"] = ::setOneManArmy;
  170. level.perkUnsetFuncs["specialty_onemanarmy"] = ::unsetOneManArmy;
  171.  
  172. level.perkSetFuncs["specialty_littlebird_support"] = ::setLittlebirdSupport;
  173. level.perkUnsetFuncs["specialty_littlebird_support"] = ::unsetLittlebirdSupport;
  174.  
  175. level.perkSetFuncs["specialty_c4death"] = ::setC4Death;
  176. level.perkUnsetFuncs["specialty_c4death"] = ::unsetC4Death;
  177.  
  178. level.perkSetFuncs["specialty_tacticalinsertion"] = ::setTacticalInsertion;
  179. level.perkUnsetFuncs["specialty_tacticalinsertion"] = ::unsetTacticalInsertion;
  180.  
  181. initPerkDvars();
  182.  
  183. level thread onPlayerConnect();
  184. }
  185.  
  186.  
  187.  
  188. precacheShaders()
  189. {
  190. precacheShader( "specialty_blastshield" );
  191. }
  192.  
  193.  
  194. givePerk( perkName )
  195. {
  196. if ( IsSubStr( perkName, "_mp" ) )
  197. {
  198. if ( perkName == "frag_grenade_mp" )
  199. self SetOffhandPrimaryClass( "frag" );
  200. if ( perkName == "throwingknife_mp" )
  201. self SetOffhandPrimaryClass( "throwingknife" );
  202.  
  203. self _giveWeapon( perkName, 0 );
  204. self giveStartAmmo( perkName );
  205.  
  206. self setPerk( perkName, false );
  207. return;
  208. }
  209.  
  210. if ( isSubStr( perkName, "specialty_null" ) || isSubStr( perkName, "specialty_weapon_" ) )
  211. {
  212. self setPerk( perkName, false );
  213. return;
  214. }
  215.  
  216. self _setPerk( perkName );
  217.  
  218. }
  219.  
  220.  
  221. validatePerk( perkIndex, perkName )
  222. {
  223. if ( getDvarInt ( "scr_game_perks" ) == 0 )
  224. {
  225. if ( tableLookup( "mp/perkTable.csv", 1, perkName, 5 ) != "equipment" )
  226. return "specialty_null";
  227. }
  228.  
  229. /* Validation disabled for now
  230. if ( tableLookup( "mp/perkTable.csv", 1, perkName, 5 ) != ("perk"+perkIndex) )
  231. {
  232. println( "^1Warning: (" + self.name + ") Perk " + perkName + " is not allowed for perk slot index " + perkIndex + "; replacing with no perk" );
  233. return "specialty_null";
  234. }
  235. */
  236.  
  237. return perkName;
  238. }
  239.  
  240.  
  241. onPlayerConnect()
  242. {
  243. for(;;)
  244. {
  245. level waittill( "connected", player );
  246. player thread onPlayerSpawned();
  247. }
  248. }
  249.  
  250.  
  251. onPlayerSpawned()
  252. {
  253. self endon( "disconnect" );
  254.  
  255. self.perks = [];
  256. self.weaponList = [];
  257. self.omaClassChanged = false;
  258.  
  259. for( ;; )
  260. {
  261. self waittill( "spawned_player" );
  262.  
  263. self.omaClassChanged = false;
  264. self thread gambitUseTracker();
  265. }
  266. }
  267.  
  268.  
  269. drawLine( start, end, timeSlice )
  270. {
  271. drawTime = int(timeSlice * 20);
  272. for( time = 0; time < drawTime; time++ )
  273. {
  274. line( start, end, (1,0,0),false, 1 );
  275. wait ( 0.05 );
  276. }
  277. }
  278.  
  279.  
  280. cac_modified_damage( victim, attacker, damage, meansofdeath, weapon, impactPoint, impactDir, hitLoc )
  281. {
  282. assert( isPlayer( victim ) );
  283. assert( isDefined( victim.team ) );
  284.  
  285. damageAdd = 0;
  286.  
  287. if ( isPrimaryDamage( meansOfDeath ) )
  288. {
  289. assert( isDefined( attacker ) );
  290.  
  291. if ( isPlayer( attacker ) && weaponInheritsPerks( weapon ) && attacker _hasPerk( "specialty_bulletdamage" ) && victim _hasPerk( "specialty_armorvest" ) )
  292. damageAdd += 0;
  293. else if ( isPlayer( attacker ) && weaponInheritsPerks( weapon ) && attacker _hasPerk( "specialty_bulletdamage" ) )
  294. damageAdd += damage*level.bulletDamageMod;
  295. else if ( victim _hasPerk( "specialty_armorvest" ) )
  296. damageAdd -= damage*(1-level.armorVestMod);
  297.  
  298. if ( isPlayer( attacker ) && attacker _hasPerk( "specialty_fmj" ) && victim _hasPerk ( "specialty_armorvest" ) )
  299. damageAdd += damage*level.hollowPointDamageMod;
  300. }
  301. else if ( isExplosiveDamage( meansOfDeath ) )
  302. {
  303. if ( isPlayer( attacker ) && weaponInheritsPerks( weapon ) && attacker _hasPerk( "specialty_explosivedamage" ) && victim _hasPerk( "_specialty_blastshield" ) )
  304. damageAdd += 0;
  305. else if ( isPlayer( attacker ) && weaponInheritsPerks( weapon ) && attacker _hasPerk( "specialty_explosivedamage" ) )
  306. damageAdd += damage*level.explosiveDamageMod;
  307. else if ( victim _hasPerk( "_specialty_blastshield" ) )
  308. damageAdd -= damage*(1-level.blastShieldMod);
  309.  
  310. if ( isKillstreakWeapon( weapon ) && isPlayer( attacker ) && attacker _hasPerk("specialty_dangerclose") )
  311. damageAdd += damage*level.dangerCloseMod;
  312. }
  313. else if (meansOfDeath == "MOD_FALLING")
  314. {
  315. if ( victim _hasPerk( "specialty_falldamage" ) )
  316. {
  317. //eventually set a msg to do a roll
  318. damageAdd = 0;
  319. damage = 0;
  320. }
  321. }
  322.  
  323. if ( ( victim.xpScaler == 2 && isDefined( attacker ) ) && ( isPlayer( attacker ) || attacker.classname == "scrip_vehicle" ) )
  324. damageAdd += 200;
  325.  
  326. if ( victim _hasperk( "specialty_combathigh" ) )
  327. {
  328. if ( IsDefined( self.damageBlockedTotal ) && (!level.teamBased || (isDefined( attacker ) && isDefined( attacker.team ) && victim.team != attacker.team)) )
  329. {
  330. damageTotal = damage + damageAdd;
  331. damageBlocked = (damageTotal - ( damageTotal / 3 ));
  332. self.damageBlockedTotal += damageBlocked;
  333.  
  334. if ( self.damageBlockedTotal >= 101 )
  335. {
  336. self notify( "combathigh_survived" );
  337. self.damageBlockedTotal = undefined;
  338. }
  339. }
  340.  
  341. if ( weapon != "throwingknife_mp" )
  342. {
  343. switch ( meansOfDeath )
  344. {
  345. case "MOD_FALLING":
  346. case "MOD_MELEE":
  347. break;
  348. default:
  349. damage = damage/3;
  350. damageAdd = damageAdd/3;
  351. break;
  352. }
  353. }
  354. }
  355.  
  356. return int( damage + damageAdd );
  357. }
  358.  
  359. initPerkDvars()
  360. {
  361. level.bulletDamageMod = getIntProperty( "perk_bulletDamage", 40 )/100; // increased bullet damage by this %
  362. level.hollowPointDamageMod = getIntProperty( "perk_hollowPointDamage", 65 )/100; // increased bullet damage by this %
  363. level.armorVestMod = getIntProperty( "perk_armorVest", 75 )/100; // percentage of damage you take
  364. level.explosiveDamageMod = getIntProperty( "perk_explosiveDamage", 40 )/100; // increased explosive damage by this %
  365. level.blastShieldMod = getIntProperty( "perk_blastShield", 45 )/100; // percentage of damage you take
  366. level.riotShieldMod = getIntProperty( "perk_riotShield", 100 )/100;
  367. level.dangerCloseMod = getIntProperty( "perk_dangerClose", 100 )/100;
  368. level.armorPiercingMod = getIntProperty( "perk_armorPiercingDamage", 40 )/100; // increased bullet damage by this %
  369. }
  370.  
  371. // CAC: Selector function, calls the individual cac features according to player's class settings
  372. // Info: Called every time player spawns during loadout stage
  373. cac_selector()
  374. {
  375. perks = self.specialty;
  376.  
  377. /*
  378. self.detectExplosives = false;
  379.  
  380. if ( self _hasPerk( "specialty_detectexplosive" ) )
  381. self.detectExplosives = true;
  382.  
  383. maps\mp\gametypes\_weapons::setupBombSquad();
  384. */
  385. }
  386.  
  387.  
  388. gambitUseTracker()
  389. {
  390. self endon ( "death" );
  391. self endon ( "disconnect" );
  392. level endon ( "game_ended" );
  393.  
  394. if ( getDvarInt ( "scr_game_perks" ) != 1 )
  395. return;
  396.  
  397. gameFlagWait( "prematch_done" );
  398.  
  399. self notifyOnPlayerCommand( "gambit_on", "+frag" );
  400. }
Add Comment
Please, Sign In to add comment