Guest User

oh my.

a guest
Jan 30th, 2013
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.09 KB | None | 0 0
  1. #include maps\_utility;
  2. #include common_scripts\utility;
  3. #include maps\_zombiemode_utility;
  4.  
  5. init()
  6. {
  7.  
  8. PrecacheShader( "specialty_doublepoints_zombies" );
  9. PrecacheShader( "specialty_instakill_zombies" );
  10. PrecacheShader( "specialty_electric_shock" );
  11.  
  12.  
  13.  
  14.  
  15. PrecacheShader( "black" );
  16. // powerup Vars
  17. set_zombie_var( "zombie_insta_kill", 0 );
  18. set_zombie_var( "zombie_point_scalar", 1 );
  19. set_zombie_var( "zombie_drop_item", 0 );
  20. set_zombie_var( "zombie_timer_offset", 350 ); // hud offsets
  21. set_zombie_var( "zombie_timer_offset_interval", 30 );
  22. set_zombie_var( "zombie_powerup_insta_kill_on", false );
  23. set_zombie_var( "zombie_powerup_point_doubler_on", false );
  24. set_zombie_var( "zombie_powerup_point_doubler_time", 30 ); // length of point doubler
  25. set_zombie_var( "zombie_powerup_insta_kill_time", 30 ); // length of insta kill
  26. set_zombie_var( "zombie_powerup_drop_increment", 2000 ); // lower this to make drop happen more often
  27. set_zombie_var( "zombie_powerup_drop_max_per_round", 4 ); // lower this to make drop happen more often
  28.  
  29. // Electroshock time
  30. level.electro_on = false;
  31. level.electro_time = 30;
  32.  
  33. // powerups
  34. level._effect["powerup_on"] = loadfx( "misc/fx_zombie_powerup_on" );
  35. level._effect["powerup_grabbed"] = loadfx( "misc/fx_zombie_powerup_grab" );
  36. level._effect["powerup_grabbed_wave"] = loadfx( "misc/fx_zombie_powerup_wave" );
  37.  
  38. init_powerups();
  39.  
  40. thread watch_for_drop();
  41. }
  42.  
  43. init_powerups()
  44. {
  45. if( !IsDefined( level.zombie_powerup_array ) )
  46. {
  47. level.zombie_powerup_array = [];
  48. }
  49. if ( !IsDefined( level.zombie_special_drop_array ) )
  50. {
  51. level.zombie_special_drop_array = [];
  52. }
  53.  
  54. // Random Drops
  55. add_zombie_powerup( "nuke", "zombie_bomb", &"ZOMBIE_POWERUP_NUKE", "misc/fx_zombie_mini_nuke" );
  56. // add_zombie_powerup( "nuke", "zombie_bomb", &"ZOMBIE_POWERUP_NUKE", "misc/fx_zombie_mini_nuke_hotness" );
  57. add_zombie_powerup( "insta_kill", "zombie_skull", &"ZOMBIE_POWERUP_INSTA_KILL" );
  58. add_zombie_powerup( "double_points","zombie_x2_icon", &"ZOMBIE_POWERUP_DOUBLE_POINTS" );
  59. add_zombie_powerup( "full_ammo", "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO");
  60. add_zombie_powerup( "carpenter", "zombie_carpenter", &"ZOMBIE_POWERUP_MAX_AMMO");
  61. add_zombie_powerup( "electroshock", "zombie_zapper_tesla_coil", &"ZOMBIE_POWERUP_MAX_AMMO");
  62.  
  63.  
  64.  
  65. // additional special "drops"
  66. // add_zombie_special_drop( "nothing" );
  67. add_zombie_special_drop( "dog" );
  68.  
  69. // Randomize the order
  70. randomize_powerups();
  71.  
  72. level.zombie_powerup_index = 0;
  73. randomize_powerups();
  74.  
  75. level thread powerup_hud_overlay();
  76. }
  77.  
  78. powerup_hud_overlay()
  79. {
  80.  
  81. level.powerup_hud_array = [];
  82. level.powerup_hud_array[0] = true;
  83. level.powerup_hud_array[1] = true;
  84.  
  85. level.powerup_hud = [];
  86. level.powerup_hud_cover = [];
  87. level endon ("disconnect");
  88.  
  89.  
  90. for(i = 0; i < 2; i++)
  91. {
  92. level.powerup_hud[i] = create_simple_hud();
  93. level.powerup_hud[i].foreground = true;
  94. level.powerup_hud[i].sort = 2;
  95. level.powerup_hud[i].hidewheninmenu = false;
  96. level.powerup_hud[i].alignX = "center";
  97. level.powerup_hud[i].alignY = "bottom";
  98. level.powerup_hud[i].horzAlign = "center";
  99. level.powerup_hud[i].vertAlign = "bottom";
  100. level.powerup_hud[i].x = -32 + (i * 15);
  101. level.powerup_hud[i].y = level.powerup_hud[i].y - 35;
  102. level.powerup_hud[i].alpha = 0.8;
  103. //hud SetShader( shader_inst, 24, 24 );
  104. }
  105. shader_electro- = "specialty_electric_shock";
  106. shader_2x = "specialty_doublepoints_zombies";
  107. shader_insta = "specialty_instakill_zombies";
  108.  
  109. // shader_white = "black";
  110.  
  111.  
  112.  
  113.  
  114. //for(i = 0; i < 2; i++)
  115. //{
  116. // level.powerup_hud_cover[i] = create_simple_hud();
  117. // level.powerup_hud_cover[i].foreground = true;
  118. // level.powerup_hud_cover[i].sort = 1;
  119. // level.powerup_hud_cover[i].hidewheninmenu = false;
  120. // level.powerup_hud_cover[i].alignX = "center";
  121. // level.powerup_hud_cover[i].alignY = "bottom";
  122. // level.powerup_hud_cover[i].horzAlign = "center";
  123. // level.powerup_hud_cover[i].vertAlign = "bottom";
  124. // level.powerup_hud_cover[i].x = -32 + (i * 34);
  125. // level.powerup_hud_cover[i].y = level.powerup_hud_cover[i].y - 30;
  126. // level.powerup_hud_cover[i].alpha = 1;
  127. // //hud SetShader( shader_inst, 24, 24 );
  128. //}
  129.  
  130.  
  131.  
  132. //increment = 0;
  133.  
  134.  
  135. while(true)
  136. {
  137. if(level.zombie_vars["zombie_powerup_insta_kill_time"] < 5)
  138. {
  139. wait(0.1);
  140. level.powerup_hud[1].alpha = 0;
  141. wait(0.1);
  142.  
  143.  
  144. }
  145. else if(level.zombie_vars["zombie_powerup_insta_kill_time"] < 10)
  146. {
  147. wait(0.2);
  148. level.powerup_hud[1].alpha = 0;
  149. wait(0.18);
  150.  
  151. }
  152.  
  153. if(level.zombie_vars["zombie_powerup_point_doubler_time"] < 5)
  154. {
  155. wait(0.1);
  156. level.powerup_hud[0].alpha = 0;
  157. wait(0.1);
  158.  
  159.  
  160. }
  161. else if(level.zombie_vars["zombie_powerup_point_doubler_time"] < 10)
  162. {
  163. wait(0.2);
  164. level.powerup_hud[0].alpha = 0;
  165. wait(0.18);
  166. }
  167.  
  168. if(level.electro_time < 5)
  169. {
  170. wait(0.1);
  171. level.powerup_hud[2].alpha = 0;
  172. wait(0.1);
  173. }
  174. else if(level.electro_time < 10)
  175. {
  176. wait(0.2);
  177. level.powerup_hud[2].alpha = 0;
  178. wait(0.18);
  179. }
  180.  
  181. if(level.electro_on == true)
  182. {
  183. level.powerup_hud[2].x = 72;
  184. level.powerup_hud[2].alpha = 1;
  185. level.powerup_hud[2] setshader(shader_electro, 32, 32);
  186. }
  187.  
  188. //if(level.zombie_vars["zombie_powerup_insta_kill_time"] != 0)
  189. // iprintlnbold(level.zombie_vars["zombie_powerup_insta_kill_time"]);
  190.  
  191. //if(level.zombie_vars["zombie_powerup_point_doubler_time"] != 0)
  192. // iprintlnbold(level.zombie_vars["zombie_powerup_point_doubler_time"]);
  193.  
  194.  
  195. //wait(0.01);
  196.  
  197.  
  198.  
  199. if(level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_insta_kill_on"] == true)
  200. {
  201.  
  202. level.powerup_hud[0].x = -24;
  203. level.powerup_hud[1].x = 24;
  204. level.powerup_hud[0].alpha = 1;
  205. level.powerup_hud[1].alpha = 1;
  206. level.powerup_hud[0] setshader(shader_2x, 32, 32);
  207. level.powerup_hud[1] setshader(shader_insta, 32, 32);
  208. /*level.powerup_hud_cover[0].x = -36;
  209. level.powerup_hud_cover[1].x = 36;
  210. level.powerup_hud_cover[0] setshader(shader_white, 32, i);
  211. level.powerup_hud_cover[1] setshader(shader_white, 32, j);
  212. level.powerup_hud_cover[0].alpha = 1;
  213. level.powerup_hud_cover[1].alpha = 1;*/
  214.  
  215. }
  216. else if(level.zombie_vars["zombie_powerup_point_doubler_on"] == true && level.zombie_vars["zombie_powerup_insta_kill_on"] == false)
  217. {
  218. level.powerup_hud[0].x = 0;
  219. //level.powerup_hud[0].y = level.powerup_hud[0].y - 70;
  220. level.powerup_hud[0] setshader(shader_2x, 32, 32);
  221. level.powerup_hud[1].alpha = 0;
  222. level.powerup_hud[0].alpha = 1;
  223.  
  224. }
  225. else if(level.zombie_vars["zombie_powerup_insta_kill_on"] == true && level.zombie_vars["zombie_powerup_point_doubler_on"] == false)
  226. {
  227.  
  228. level.powerup_hud[1].x = 0;
  229. //level.powerup_hud[1].y = level.powerup_hud[1].y - 70;
  230. level.powerup_hud[1] setshader(shader_insta, 32, 32);
  231. level.powerup_hud[0].alpha = 0;
  232. level.powerup_hud[1].alpha = 1;
  233. }
  234. else
  235. {
  236.  
  237. level.powerup_hud[1].alpha = 0;
  238. level.powerup_hud[0].alpha = 0;
  239.  
  240. }
  241.  
  242. wait(0.01);
  243.  
  244.  
  245.  
  246. //increment += 1;
  247.  
  248. //if(increment >= 20)
  249. //{
  250. // level.powerup_hud[0].alpha = 0;
  251. // level.powerup_hud[1].alpha = 0;
  252. //// level.powerup_hud_cover[0].alpha = 0;
  253. //// level.powerup_hud_cover[1].alpha = 0;
  254. //}
  255. //
  256. //if(increment == 30)
  257. //{
  258.  
  259. // level.powerup_hud_array[1] = false;
  260. // level.powerup_hud_array[0] = false;
  261.  
  262. //}
  263. //wait(0.5);
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270. /* if(randomint(100) > 50)
  271. level.powerup_hud_array[0] = false;
  272. else
  273. level.powerup_hud_array[0] = true;
  274.  
  275.  
  276. if(randomint(100) > 50)
  277. level.powerup_hud_array[1] = false;
  278. else
  279. level.powerup_hud_array[1] = true;*/
  280.  
  281. }
  282.  
  283.  
  284.  
  285.  
  286. //for(i = 0; i < 2; i++)
  287. //{
  288. // level.powerup_hud_cover[i] = create_simple_hud();
  289. // level.powerup_hud_cover[i].foreground = true;
  290. // level.powerup_hud_cover[i].sort = 1;
  291. // level.powerup_hud_cover[i].hidewheninmenu = false;
  292. // level.powerup_hud_cover[i].alignX = "center";
  293. // level.powerup_hud_cover[i].alignY = "bottom";
  294. // level.powerup_hud_cover[i].horzAlign = "center";
  295. // level.powerup_hud_cover[i].vertAlign = "bottom";
  296. // level.powerup_hud_cover[i].x = -32 + (i * 34);
  297. // level.powerup_hud_cover[i].y = level.powerup_hud_cover[i].y - 79;
  298. // level.powerup_hud_cover[i].alpha = 0.5;
  299. // //hud SetShader( shader_inst, 24, 24 );
  300. //}
  301.  
  302.  
  303. //while(true)
  304. //{
  305. // /* for(i = 0; i < 2; i++)
  306. // {
  307. // level.powerup_hud[i].y = level.powerup_hud[i].y - 5;
  308.  
  309. // }*/
  310.  
  311.  
  312.  
  313.  
  314. // wait(1);
  315. //}
  316.  
  317. }
  318.  
  319. randomize_powerups()
  320. {
  321. level.zombie_powerup_array = array_randomize( level.zombie_powerup_array );
  322. }
  323.  
  324. get_next_powerup()
  325. {
  326. if( level.zombie_powerup_index >= level.zombie_powerup_array.size )
  327. {
  328. level.zombie_powerup_index = 0;
  329. randomize_powerups();
  330. }
  331.  
  332. powerup = level.zombie_powerup_array[level.zombie_powerup_index];
  333.  
  334. /#
  335. if( isdefined( level.zombie_devgui_power ) && level.zombie_devgui_power == 1 )
  336. return powerup;
  337.  
  338. #/
  339.  
  340. //level.windows_destroyed = get_num_window_destroyed();
  341.  
  342. while( powerup == "carpenter" && get_num_window_destroyed() < 5)
  343. {
  344.  
  345.  
  346. if( level.zombie_powerup_index >= level.zombie_powerup_array.size )
  347. {
  348. level.zombie_powerup_index = 0;
  349. randomize_powerups();
  350. }
  351.  
  352.  
  353. powerup = level.zombie_powerup_array[level.zombie_powerup_index];
  354. level.zombie_powerup_index++;
  355.  
  356. if( powerup != "carpenter" )
  357. return powerup;
  358.  
  359.  
  360. wait(0.05);
  361. }
  362.  
  363. level.zombie_powerup_index++;
  364.  
  365. return powerup;
  366. }
  367.  
  368. get_num_window_destroyed()
  369. {
  370. num = 0;
  371. for( i = 0; i < level.exterior_goals.size; i++ )
  372. {
  373. /*targets = getentarray(level.exterior_goals[i].target, "targetname");
  374.  
  375. barrier_chunks = [];
  376. for( j = 0; j < targets.size; j++ )
  377. {
  378. if( IsDefined( targets[j].script_noteworthy ) )
  379. {
  380. if( targets[j].script_noteworthy == "clip" )
  381. {
  382. continue;
  383. }
  384. }
  385.  
  386. barrier_chunks[barrier_chunks.size] = targets[j];
  387. }*/
  388.  
  389.  
  390. if( all_chunks_destroyed( level.exterior_goals[i].barrier_chunks ) )
  391. {
  392. num += 1;
  393. }
  394.  
  395. }
  396.  
  397. return num;
  398. }
  399.  
  400. watch_for_drop()
  401. {
  402. players = get_players();
  403. score_to_drop = ( players.size * level.zombie_vars["zombie_score_start"] ) + level.zombie_vars["zombie_powerup_drop_increment"];
  404.  
  405. while (1)
  406. {
  407. players = get_players();
  408.  
  409. curr_total_score = 0;
  410.  
  411. for (i = 0; i < players.size; i++)
  412. {
  413. curr_total_score += players[i].score_total;
  414. }
  415.  
  416. if (curr_total_score > score_to_drop )
  417. {
  418. level.zombie_vars["zombie_powerup_drop_increment"] *= 1.14;
  419. score_to_drop = curr_total_score + level.zombie_vars["zombie_powerup_drop_increment"];
  420. level.zombie_vars["zombie_drop_item"] = 1;
  421. }
  422.  
  423. wait( 0.5 );
  424. }
  425. }
  426.  
  427. add_zombie_powerup( powerup_name, model_name, hint, fx )
  428. {
  429. if( IsDefined( level.zombie_include_powerups ) && !IsDefined( level.zombie_include_powerups[powerup_name] ) )
  430. {
  431. return;
  432. }
  433.  
  434. PrecacheModel( model_name );
  435. PrecacheString( hint );
  436.  
  437. struct = SpawnStruct();
  438.  
  439. if( !IsDefined( level.zombie_powerups ) )
  440. {
  441. level.zombie_powerups = [];
  442. }
  443.  
  444. struct.powerup_name = powerup_name;
  445. struct.model_name = model_name;
  446. struct.weapon_classname = "script_model";
  447. struct.hint = hint;
  448.  
  449. if( IsDefined( fx ) )
  450. {
  451. struct.fx = LoadFx( fx );
  452. }
  453.  
  454. level.zombie_powerups[powerup_name] = struct;
  455. level.zombie_powerup_array[level.zombie_powerup_array.size] = powerup_name;
  456. add_zombie_special_drop( powerup_name );
  457. }
  458.  
  459.  
  460. // special powerup list for the teleporter drop
  461. add_zombie_special_drop( powerup_name )
  462. {
  463. level.zombie_special_drop_array[ level.zombie_special_drop_array.size ] = powerup_name;
  464. }
  465.  
  466. include_zombie_powerup( powerup_name )
  467. {
  468. if( !IsDefined( level.zombie_include_powerups ) )
  469. {
  470. level.zombie_include_powerups = [];
  471. }
  472.  
  473. level.zombie_include_powerups[powerup_name] = true;
  474. }
  475.  
  476. powerup_round_start()
  477. {
  478. level.powerup_drop_count = 0;
  479. }
  480.  
  481. powerup_drop(drop_point)
  482. {
  483. rand_drop = randomint(100);
  484.  
  485. if( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] )
  486. {
  487. println( "^3POWERUP DROP EXCEEDED THE MAX PER ROUND!" );
  488. return;
  489. }
  490.  
  491. if( !isDefined(level.zombie_include_powerups) || level.zombie_include_powerups.size == 0 )
  492. {
  493. return;
  494. }
  495.  
  496. // some guys randomly drop, but most of the time they check for the drop flag
  497. if (rand_drop > 2)
  498. {
  499. if (!level.zombie_vars["zombie_drop_item"])
  500. {
  501. return;
  502. }
  503.  
  504. debug = "score";
  505. }
  506. else
  507. {
  508. debug = "random";
  509. }
  510.  
  511. // never drop unless in the playable area
  512. playable_area = getentarray("playable_area","targetname");
  513.  
  514. powerup = maps\_zombiemode_net::network_safe_spawn( "powerup", 1, "script_model", drop_point + (0,0,40));
  515.  
  516. //chris_p - fixed bug where you could not have more than 1 playable area trigger for the whole map
  517. valid_drop = false;
  518. for (i = 0; i < playable_area.size; i++)
  519. {
  520. if (powerup istouching(playable_area[i]))
  521. {
  522. valid_drop = true;
  523. }
  524. }
  525.  
  526. if(!valid_drop)
  527. {
  528. powerup delete();
  529. return;
  530. }
  531.  
  532. powerup powerup_setup();
  533. level.powerup_drop_count++;
  534.  
  535. print_powerup_drop( powerup.powerup_name, debug );
  536.  
  537. powerup thread powerup_timeout();
  538. powerup thread powerup_wobble();
  539. powerup thread powerup_grab();
  540.  
  541. level.zombie_vars["zombie_drop_item"] = 0;
  542.  
  543.  
  544. //powerup = powerup_setup();
  545.  
  546.  
  547. // if is !is touching trig
  548. // return
  549.  
  550. // spawn the model, do a ground trace and place above
  551. // start the movement logic, spawn the fx
  552. // start the time out logic
  553. // start the grab logic
  554. }
  555.  
  556.  
  557. //
  558. // Special power up drop - done outside of the powerup system.
  559. special_powerup_drop(drop_point)
  560. {
  561. // if( level.powerup_drop_count == level.zombie_vars["zombie_powerup_drop_max_per_round"] )
  562. // {
  563. // println( "^3POWERUP DROP EXCEEDED THE MAX PER ROUND!" );
  564. // return;
  565. // }
  566.  
  567. if( !isDefined(level.zombie_include_powerups) || level.zombie_include_powerups.size == 0 )
  568. {
  569. return;
  570. }
  571.  
  572. powerup = spawn ("script_model", drop_point + (0,0,40));
  573.  
  574. // never drop unless in the playable area
  575. playable_area = getentarray("playable_area","targetname");
  576. //chris_p - fixed bug where you could not have more than 1 playable area trigger for the whole map
  577. valid_drop = false;
  578. for (i = 0; i < playable_area.size; i++)
  579. {
  580. if (powerup istouching(playable_area[i]))
  581. {
  582. valid_drop = true;
  583. break;
  584. }
  585. }
  586.  
  587. if(!valid_drop)
  588. {
  589. powerup Delete();
  590. return;
  591. }
  592.  
  593. powerup special_drop_setup();
  594. }
  595.  
  596.  
  597. //
  598. // Pick the next powerup in the list
  599. powerup_setup()
  600. {
  601. powerup = get_next_powerup();
  602.  
  603. struct = level.zombie_powerups[powerup];
  604. self SetModel( struct.model_name );
  605.  
  606. //TUEY Spawn Powerup
  607. playsoundatposition("spawn_powerup", self.origin);
  608.  
  609. self.powerup_name = struct.powerup_name;
  610. self.hint = struct.hint;
  611.  
  612. if( IsDefined( struct.fx ) )
  613. {
  614. self.fx = struct.fx;
  615. }
  616.  
  617. self PlayLoopSound("spawn_powerup_loop");
  618. }
  619.  
  620.  
  621. //
  622. // Get the special teleporter drop
  623. special_drop_setup()
  624. {
  625. powerup = undefined;
  626. is_powerup = true;
  627. // Always give something at lower rounds or if a player is in last stand mode.
  628. if ( level.round_number <= 10 || maps\_laststand::player_num_in_laststand() )
  629. {
  630. powerup = get_next_powerup();
  631. }
  632. // Gets harder now
  633. else
  634. {
  635. powerup = level.zombie_special_drop_array[ RandomInt(level.zombie_special_drop_array.size) ];
  636. if ( level.round_number > 15 &&
  637. ( RandomInt(100) < (level.round_number - 15)*5 ) )
  638. {
  639. powerup = "nothing";
  640. }
  641. }
  642. //MM test Change this if you want the same thing to keep spawning
  643. // powerup = "dog";
  644. switch ( powerup )
  645. {
  646. // Don't need to do anything special
  647. case "nuke":
  648. case "insta_kill":
  649. case "double_points":
  650. case "carpenter":
  651. break;
  652.  
  653. // Limit max ammo drops because it's too powerful
  654. case "full_ammo":
  655. if ( level.round_number > 10 &&
  656. ( RandomInt(100) < (level.round_number - 10)*5 ) )
  657. {
  658. // Randomly pick another one
  659. powerup = level.zombie_powerup_array[ RandomInt(level.zombie_powerup_array.size) ];
  660. }
  661. break;
  662.  
  663. case "dog":
  664. if ( level.round_number >= 15 )
  665. {
  666. is_powerup = false;
  667. dog_spawners = GetEntArray( "special_dog_spawner", "targetname" );
  668. maps\_zombiemode_dogs::special_dog_spawn( dog_spawners, 1 );
  669. //iprintlnbold( "Samantha Sez: No Powerup For You!" );
  670. thread play_sound_2d( "sam_nospawn" );
  671. }
  672. else
  673. {
  674. powerup = get_next_powerup();
  675. }
  676. break;
  677.  
  678. // Nothing drops!!
  679. default: // "nothing"
  680. is_powerup = false;
  681. Playfx( level._effect["lightning_dog_spawn"], self.origin );
  682. playsoundatposition( "pre_spawn", self.origin );
  683. wait( 1.5 );
  684. playsoundatposition( "bolt", self.origin );
  685.  
  686. Earthquake( 0.5, 0.75, self.origin, 1000);
  687. PlayRumbleOnPosition("explosion_generic", self.origin);
  688. playsoundatposition( "spawn", self.origin );
  689.  
  690. wait( 1.0 );
  691. //iprintlnbold( "Samantha Sez: No Powerup For You!" );
  692. thread play_sound_2d( "sam_nospawn" );
  693. self Delete();
  694. }
  695.  
  696. if ( is_powerup )
  697. {
  698. Playfx( level._effect["lightning_dog_spawn"], self.origin );
  699. playsoundatposition( "pre_spawn", self.origin );
  700. wait( 1.5 );
  701. playsoundatposition( "bolt", self.origin );
  702.  
  703. Earthquake( 0.5, 0.75, self.origin, 1000);
  704. PlayRumbleOnPosition("explosion_generic", self.origin);
  705. playsoundatposition( "spawn", self.origin );
  706.  
  707. // wait( 0.5 );
  708.  
  709. struct = level.zombie_powerups[powerup];
  710. self SetModel( struct.model_name );
  711.  
  712. //TUEY Spawn Powerup
  713. playsoundatposition("spawn_powerup", self.origin);
  714.  
  715. self.powerup_name = struct.powerup_name;
  716. self.hint = struct.hint;
  717.  
  718. if( IsDefined( struct.fx ) )
  719. {
  720. self.fx = struct.fx;
  721. }
  722.  
  723. self PlayLoopSound("spawn_powerup_loop");
  724.  
  725. self thread powerup_timeout();
  726. self thread powerup_wobble();
  727. self thread powerup_grab();
  728. }
  729. }
  730.  
  731. powerup_grab()
  732. {
  733. self endon ("powerup_timedout");
  734. self endon ("powerup_grabbed");
  735.  
  736. while (isdefined(self))
  737. {
  738. players = get_players();
  739.  
  740. for (i = 0; i < players.size; i++)
  741. {
  742. if (distance (players[i].origin, self.origin) < 64)
  743. {
  744. playfx (level._effect["powerup_grabbed"], self.origin);
  745. playfx (level._effect["powerup_grabbed_wave"], self.origin);
  746.  
  747. if( IsDefined( level.zombie_powerup_grab_func ) )
  748. {
  749. level thread [[level.zombie_powerup_grab_func]]();
  750. }
  751. else
  752. {
  753. switch (self.powerup_name)
  754. {
  755. case "nuke":
  756. level thread nuke_powerup( self );
  757.  
  758. //chrisp - adding powerup VO sounds
  759. players[i] thread powerup_vo("nuke");
  760. zombies = getaiarray("axis");
  761. players[i].zombie_nuked = get_array_of_closest( self.origin, zombies );
  762. players[i] notify("nuke_triggered");
  763.  
  764. break;
  765. case "full_ammo":
  766. level thread full_ammo_powerup( self );
  767. players[i] thread powerup_vo("full_ammo");
  768. break;
  769. case "double_points":
  770. level thread double_points_powerup( self );
  771. players[i] thread powerup_vo("double_points");
  772. break;
  773. case "insta_kill":
  774. level thread insta_kill_powerup( self );
  775. players[i] thread powerup_vo("insta_kill");
  776. break;
  777. case "carpenter":
  778. level thread start_carpenter( self.origin );
  779. players[i] thread powerup_vo("carpenter");
  780. break;
  781. case "electroshock":
  782. level thread electro_drop( self );
  783. thread play_sound_2D( "bright_sting" );
  784. break;
  785. default:
  786. println ("Unrecognized poweup.");
  787. break;
  788. }
  789. }
  790.  
  791. wait( 0.1 );
  792.  
  793. playsoundatposition("powerup_grabbed", self.origin);
  794. self stoploopsound();
  795.  
  796. self delete();
  797. self notify ("powerup_grabbed");
  798. }
  799. }
  800. wait 0.1;
  801. }
  802. }
  803.  
  804. start_carpenter( origin )
  805. {
  806.  
  807. level thread play_devil_dialog("carp_vox");
  808. window_boards = getstructarray( "exterior_goal", "targetname" );
  809. total = level.exterior_goals.size;
  810.  
  811. //COLLIN
  812. carp_ent = spawn("script_origin", (0,0,0));
  813. carp_ent playloopsound( "carp_loop" );
  814.  
  815. while(true)
  816. {
  817. windows = get_closest_window_repair(window_boards, origin);
  818. if( !IsDefined( windows ) )
  819. {
  820. carp_ent stoploopsound( 1 );
  821. carp_ent playsound( "carp_end", "sound_done" );
  822. carp_ent waittill( "sound_done" );
  823. break;
  824. }
  825.  
  826. else
  827. window_boards = array_remove(window_boards, windows);
  828.  
  829.  
  830. while(1)
  831. {
  832. if( all_chunks_intact( windows.barrier_chunks ) )
  833. {
  834. break;
  835. }
  836.  
  837. chunk = get_random_destroyed_chunk( windows.barrier_chunks );
  838.  
  839. if( !IsDefined( chunk ) )
  840. break;
  841.  
  842. windows thread maps\_zombiemode_blockers_new::replace_chunk( chunk, false, true );
  843. windows.clip enable_trigger();
  844. windows.clip DisconnectPaths();
  845. wait_network_frame();
  846. wait(0.05);
  847. }
  848.  
  849.  
  850. wait_network_frame();
  851.  
  852. }
  853.  
  854.  
  855. players = get_players();
  856. for(i = 0; i < players.size; i++)
  857. {
  858. players[i].score += 200;
  859. players[i].score_total += 200;
  860. players[i] maps\_zombiemode_score::set_player_score_hud();
  861. }
  862.  
  863.  
  864. carp_ent delete();
  865.  
  866.  
  867. }
  868. get_closest_window_repair( windows, origin )
  869. {
  870. current_window = undefined;
  871. shortest_distance = undefined;
  872. for( i = 0; i < windows.size; i++ )
  873. {
  874. if( all_chunks_intact(windows[i].barrier_chunks ) )
  875. continue;
  876.  
  877. if( !IsDefined( current_window ) )
  878. {
  879. current_window = windows[i];
  880. shortest_distance = DistanceSquared( current_window.origin, origin );
  881.  
  882. }
  883. else
  884. {
  885. if( DistanceSquared(windows[i].origin, origin) < shortest_distance )
  886. {
  887.  
  888. current_window = windows[i];
  889. shortest_distance = DistanceSquared( windows[i].origin, origin );
  890. }
  891.  
  892. }
  893.  
  894. }
  895.  
  896. return current_window;
  897.  
  898.  
  899. }
  900.  
  901. powerup_vo(type)
  902. {
  903. self endon("death");
  904. self endon("disconnect");
  905.  
  906. index = maps\_zombiemode_weapons::get_player_index(self);
  907. sound = undefined;
  908. rand = randomintrange(0,3);
  909. vox_rand = randomintrange(1,100); //RARE: This is to setup the Rare devil response lines
  910. percentage = 1; //What percent chance the rare devil response line has to play
  911.  
  912. if(!isdefined (level.player_is_speaking))
  913. {
  914. level.player_is_speaking = 0;
  915. }
  916.  
  917. wait(randomfloatrange(1,2));
  918.  
  919. switch(type)
  920. {
  921. case "nuke":
  922. if( vox_rand <= percentage )
  923. {
  924. //sound = "plr_" + index + "_vox_resp_dev_rare_" + rand;
  925. //iprintlnbold( "Whoopdedoo, rare Devil Response line" );
  926. }
  927. else
  928. {
  929. sound = "plr_" + index + "_vox_powerup_nuke_" + rand;
  930. }
  931. break;
  932. case "insta_kill":
  933. if( vox_rand <= percentage )
  934. {
  935. //sound = "plr_" + index + "_vox_resp_dev_rare_" + rand;
  936. //iprintlnbold( "Whoopdedoo, rare Devil Response line" );
  937. }
  938. else
  939. {
  940. sound = "plr_" + index + "_vox_powerup_insta_" + rand;
  941. }
  942. break;
  943. case "full_ammo":
  944. if( vox_rand <= percentage )
  945. {
  946. //sound = "plr_" + index + "_vox_resp_dev_rare_" + rand;
  947. //iprintlnbold( "Whoopdedoo, rare Devil Response line" );
  948. }
  949. else
  950. {
  951. sound = "plr_" + index + "_vox_powerup_ammo_" + rand;
  952. }
  953. break;
  954. case "double_points":
  955. if( vox_rand <= percentage )
  956. {
  957. //sound = "plr_" + index + "_vox_resp_dev_rare_" + rand;
  958. //iprintlnbold( "Whoopdedoo, rare Devil Response line" );
  959. }
  960. else
  961. {
  962. sound = "plr_" + index + "_vox_powerup_double_" + rand;
  963. }
  964. break;
  965. case "carpenter":
  966. if( vox_rand <= percentage )
  967. {
  968. //sound = "plr_" + index + "_vox_resp_dev_rare_" + rand;
  969. //iprintlnbold( "Whoopdedoo, rare Devil Response line" );
  970. }
  971. else
  972. {
  973. sound = "plr_" + index + "_vox_powerup_carp_" + rand;
  974. }
  975. break;
  976. }
  977.  
  978. //This keeps multiple voice overs from playing on the same player (both killstreaks and headshots).
  979. if (level.player_is_speaking != 1 && isDefined(sound))
  980. {
  981. level.player_is_speaking = 1;
  982. self playsound(sound, "sound_done");
  983. self waittill("sound_done");
  984. level.player_is_speaking = 0;
  985. }
  986.  
  987.  
  988. }
  989.  
  990. powerup_wobble()
  991. {
  992. self endon ("powerup_grabbed");
  993. self endon ("powerup_timedout");
  994.  
  995. if (isdefined(self))
  996. {
  997. playfxontag (level._effect["powerup_on"], self, "tag_origin");
  998. }
  999.  
  1000. while (isdefined(self))
  1001. {
  1002. waittime = randomfloatrange(2.5, 5);
  1003. yaw = RandomInt( 360 );
  1004. if( yaw > 300 )
  1005. {
  1006. yaw = 300;
  1007. }
  1008. else if( yaw < 60 )
  1009. {
  1010. yaw = 60;
  1011. }
  1012. yaw = self.angles[1] + yaw;
  1013. self rotateto ((-60 + randomint(120), yaw, -45 + randomint(90)), waittime, waittime * 0.5, waittime * 0.5);
  1014. wait randomfloat (waittime - 0.1);
  1015. }
  1016. }
  1017.  
  1018. powerup_timeout()
  1019. {
  1020. self endon ("powerup_grabbed");
  1021.  
  1022. wait 15;
  1023.  
  1024. for (i = 0; i < 40; i++)
  1025. {
  1026. // hide and show
  1027. if (i % 2)
  1028. {
  1029. self hide();
  1030. }
  1031. else
  1032. {
  1033. self show();
  1034. }
  1035.  
  1036. if (i < 15)
  1037. {
  1038. wait 0.5;
  1039. }
  1040. else if (i < 25)
  1041. {
  1042. wait 0.25;
  1043. }
  1044. else
  1045. {
  1046. wait 0.1;
  1047. }
  1048. }
  1049.  
  1050. self notify ("powerup_timedout");
  1051. self delete();
  1052. }
  1053.  
  1054.  
  1055. electro_drop( drop_item, player )
  1056. {
  1057. level notify( "powerup electroshock" );
  1058. level endon( "powerup electroshock" );
  1059. level.electro_on = true;
  1060.  
  1061. players = get_players();
  1062. for(i = 0; i < players.size; i++)
  1063. {
  1064. players[i].score += 350;
  1065. players[i].score_total += 350;
  1066. players[i] maps\_zombiemode_score::set_player_score_hud();
  1067. players[i] setelectrified( 30.4 );
  1068. players[i] shellshock("electrocution", 0.05);
  1069. players[i] thread electro_timeout();
  1070. }
  1071. }
  1072.  
  1073.  
  1074.  
  1075. electro_timeout( drop_item, player)
  1076. {
  1077. self endon ("disconnect");
  1078. self endon("zombified");
  1079.  
  1080. players = get_players();
  1081. for(i=0;i<players.size;i++)
  1082. {
  1083. players[i] PlayLoopSound( "elec_loop" );
  1084. wait 29;
  1085. players[i] StopLoopSound();
  1086. if(self maps\_laststand::player_is_in_laststand())
  1087. self waittill("player_revived");
  1088. level.electro_on = false;
  1089. }
  1090. }
  1091.  
  1092. // kill them all!
  1093. nuke_powerup( drop_item )
  1094. {
  1095. zombies = getaispeciesarray("axis");
  1096.  
  1097. PlayFx( drop_item.fx, drop_item.origin );
  1098. // players = get_players();
  1099. // array_thread (players, ::nuke_flash);
  1100. level thread nuke_flash();
  1101.  
  1102.  
  1103.  
  1104. zombies = get_array_of_closest( drop_item.origin, zombies );
  1105.  
  1106. for (i = 0; i < zombies.size; i++)
  1107. {
  1108. wait (randomfloatrange(0.1, 0.7));
  1109. if( !IsDefined( zombies[i] ) )
  1110. {
  1111. continue;
  1112. }
  1113.  
  1114. if( zombies[i].animname == "boss_zombie" )
  1115. {
  1116. continue;
  1117. }
  1118.  
  1119. if( is_magic_bullet_shield_enabled( zombies[i] ) )
  1120. {
  1121. continue;
  1122. }
  1123.  
  1124. if( i < 5 && !( zombies[i] enemy_is_dog() ) )
  1125. {
  1126. zombies[i] thread animscripts\death::flame_death_fx();
  1127.  
  1128. }
  1129.  
  1130. if( !( zombies[i] enemy_is_dog() ) )
  1131. {
  1132. zombies[i] maps\_zombiemode_spawner::zombie_head_gib();
  1133. }
  1134.  
  1135. zombies[i] dodamage( zombies[i].health + 666, zombies[i].origin );
  1136. playsoundatposition( "nuked", zombies[i].origin );
  1137. }
  1138.  
  1139. players = get_players();
  1140. for(i = 0; i < players.size; i++)
  1141. {
  1142. players[i].score += 400;
  1143. players[i].score_total += 400;
  1144. players[i] maps\_zombiemode_score::set_player_score_hud();
  1145. }
  1146.  
  1147. }
  1148.  
  1149.  
  1150.  
  1151. nuke_flash()
  1152. {
  1153. players = getplayers();
  1154. for(i=0; i<players.size; i ++)
  1155. {
  1156. players[i] play_sound_2d("nuke_flash");
  1157. }
  1158. level thread devil_dialog_delay();
  1159.  
  1160.  
  1161. fadetowhite = newhudelem();
  1162.  
  1163. fadetowhite.x = 0;
  1164. fadetowhite.y = 0;
  1165. fadetowhite.alpha = 0;
  1166.  
  1167. fadetowhite.horzAlign = "fullscreen";
  1168. fadetowhite.vertAlign = "fullscreen";
  1169. fadetowhite.foreground = true;
  1170. fadetowhite SetShader( "white", 640, 480 );
  1171.  
  1172. // Fade into white
  1173. fadetowhite FadeOverTime( 0.2 );
  1174. fadetowhite.alpha = 0.8;
  1175.  
  1176. wait 0.5;
  1177. fadetowhite FadeOverTime( 1.0 );
  1178. fadetowhite.alpha = 0;
  1179.  
  1180. wait 1.1;
  1181. fadetowhite destroy();
  1182. }
  1183.  
  1184. // double the points
  1185. double_points_powerup( drop_item )
  1186. {
  1187. level notify ("powerup points scaled");
  1188. level endon ("powerup points scaled");
  1189.  
  1190. // players = get_players();
  1191. // array_thread(level,::point_doubler_on_hud, drop_item);
  1192. level thread point_doubler_on_hud( drop_item );
  1193.  
  1194. level.zombie_vars["zombie_point_scalar"] = 2;
  1195. wait 30;
  1196.  
  1197. level.zombie_vars["zombie_point_scalar"] = 1;
  1198. }
  1199.  
  1200. full_ammo_powerup( drop_item )
  1201. {
  1202. players = get_players();
  1203.  
  1204. for (i = 0; i < players.size; i++)
  1205. {
  1206. primaryWeapons = players[i] GetWeaponsList();
  1207.  
  1208. for( x = 0; x < primaryWeapons.size; x++ )
  1209. {
  1210. players[i] GiveMaxAmmo( primaryWeapons[x] );
  1211. }
  1212. }
  1213. // array_thread (players, ::full_ammo_on_hud, drop_item);
  1214. level thread full_ammo_on_hud( drop_item );
  1215. }
  1216.  
  1217. insta_kill_powerup( drop_item )
  1218. {
  1219. level notify( "powerup instakill" );
  1220. level endon( "powerup instakill" );
  1221.  
  1222.  
  1223. // array_thread (players, ::insta_kill_on_hud, drop_item);
  1224. level thread insta_kill_on_hud( drop_item );
  1225.  
  1226. level.zombie_vars["zombie_insta_kill"] = 1;
  1227. wait( 30 );
  1228. level.zombie_vars["zombie_insta_kill"] = 0;
  1229. players = get_players();
  1230. for(i = 0; i < players.size; i++)
  1231. {
  1232. players[i] notify("insta_kill_over");
  1233.  
  1234. }
  1235.  
  1236. }
  1237.  
  1238. check_for_instakill( player )
  1239. {
  1240. if( IsDefined( player ) && IsAlive( player ) && level.zombie_vars["zombie_insta_kill"])
  1241. {
  1242. if( is_magic_bullet_shield_enabled( self ) )
  1243. {
  1244. return;
  1245. }
  1246.  
  1247. if( self.animname == "boss_zombie" )
  1248. {
  1249. return;
  1250. }
  1251.  
  1252. if(player.use_weapon_type == "MOD_MELEE")
  1253. {
  1254. player.last_kill_method = "MOD_MELEE";
  1255. }
  1256. else
  1257. {
  1258. player.last_kill_method = "MOD_UNKNOWN";
  1259.  
  1260. }
  1261.  
  1262. if( flag( "dog_round" ) )
  1263. {
  1264. self DoDamage( self.health + 666, self.origin, player );
  1265. player notify("zombie_killed");
  1266. }
  1267. else
  1268. {
  1269. self maps\_zombiemode_spawner::zombie_head_gib();
  1270. self DoDamage( self.health + 666, self.origin, player );
  1271. player notify("zombie_killed");
  1272.  
  1273. }
  1274. }
  1275. }
  1276.  
  1277. insta_kill_on_hud( drop_item )
  1278. {
  1279. self endon ("disconnect");
  1280.  
  1281. // check to see if this is on or not
  1282. if ( level.zombie_vars["zombie_powerup_insta_kill_on"] )
  1283. {
  1284. // reset the time and keep going
  1285. level.zombie_vars["zombie_powerup_insta_kill_time"] = 30;
  1286. return;
  1287. }
  1288.  
  1289. level.zombie_vars["zombie_powerup_insta_kill_on"] = true;
  1290.  
  1291. // set up the hudelem
  1292. //hudelem = maps\_hud_util::createFontString( "objective", 2 );
  1293. //hudelem maps\_hud_util::setPoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] + level.zombie_vars["zombie_timer_offset_interval"]);
  1294. //hudelem.sort = 0.5;
  1295. //hudelem.alpha = 0;
  1296. //hudelem fadeovertime(0.5);
  1297. //hudelem.alpha = 1;
  1298. //hudelem.label = drop_item.hint;
  1299.  
  1300. // set time remaining for insta kill
  1301. level thread time_remaning_on_insta_kill_powerup();
  1302.  
  1303. // offset in case we get another powerup
  1304. //level.zombie_timer_offset -= level.zombie_timer_offset_interval;
  1305. }
  1306.  
  1307. time_remaning_on_insta_kill_powerup()
  1308. {
  1309. //self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] );
  1310. level thread play_devil_dialog("insta_vox");
  1311. temp_enta = spawn("script_origin", (0,0,0));
  1312. temp_enta playloopsound("insta_kill_loop");
  1313.  
  1314. /*
  1315. players = get_players();
  1316. for (i = 0; i < players.size; i++)
  1317. {
  1318. players[i] playloopsound ("insta_kill_loop");
  1319. }
  1320. */
  1321.  
  1322.  
  1323. // time it down!
  1324. while ( level.zombie_vars["zombie_powerup_insta_kill_time"] >= 0)
  1325. {
  1326. wait 0.1;
  1327. level.zombie_vars["zombie_powerup_insta_kill_time"] = level.zombie_vars["zombie_powerup_insta_kill_time"] - 0.1;
  1328. // self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] );
  1329. }
  1330.  
  1331. players = get_players();
  1332. for (i = 0; i < players.size; i++)
  1333. {
  1334. //players[i] stoploopsound (2);
  1335.  
  1336. players[i] playsound("insta_kill");
  1337.  
  1338. }
  1339.  
  1340. temp_enta stoploopsound(2);
  1341. // turn off the timer
  1342. level.zombie_vars["zombie_powerup_insta_kill_on"] = false;
  1343.  
  1344. // remove the offset to make room for new powerups, reset timer for next time
  1345. level.zombie_vars["zombie_powerup_insta_kill_time"] = 30;
  1346. //level.zombie_timer_offset += level.zombie_timer_offset_interval;
  1347. //self destroy();
  1348. temp_enta delete();
  1349. }
  1350.  
  1351. point_doubler_on_hud( drop_item )
  1352. {
  1353. self endon ("disconnect");
  1354.  
  1355. // check to see if this is on or not
  1356. if ( level.zombie_vars["zombie_powerup_point_doubler_on"] )
  1357. {
  1358. // reset the time and keep going
  1359. level.zombie_vars["zombie_powerup_point_doubler_time"] = 30;
  1360. return;
  1361. }
  1362.  
  1363. level.zombie_vars["zombie_powerup_point_doubler_on"] = true;
  1364. //level.powerup_hud_array[0] = true;
  1365. // set up the hudelem
  1366. //hudelem = maps\_hud_util::createFontString( "objective", 2 );
  1367. //hudelem maps\_hud_util::setPoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] );
  1368. //hudelem.sort = 0.5;
  1369. //hudelem.alpha = 0;
  1370. //hudelem fadeovertime( 0.5 );
  1371. //hudelem.alpha = 1;
  1372. //hudelem.label = drop_item.hint;
  1373.  
  1374. // set time remaining for point doubler
  1375. level thread time_remaining_on_point_doubler_powerup();
  1376.  
  1377. // offset in case we get another powerup
  1378. //level.zombie_timer_offset -= level.zombie_timer_offset_interval;
  1379. }
  1380. play_devil_dialog(sound_to_play)
  1381. {
  1382. if(!IsDefined(level.devil_is_speaking))
  1383. {
  1384. level.devil_is_speaking = 0;
  1385. }
  1386. if(level.devil_is_speaking == 0)
  1387. {
  1388. level.devil_is_speaking = 1;
  1389. play_sound_2D( sound_to_play );
  1390. wait 2.0;
  1391. level.devil_is_speaking =0;
  1392. }
  1393.  
  1394. }
  1395. time_remaining_on_point_doubler_powerup()
  1396. {
  1397. //self setvalue( level.zombie_vars["zombie_powerup_point_doubler_time"] );
  1398.  
  1399. temp_ent = spawn("script_origin", (0,0,0));
  1400. temp_ent playloopsound ("double_point_loop");
  1401.  
  1402. level thread play_devil_dialog("dp_vox");
  1403.  
  1404.  
  1405. // time it down!
  1406. while ( level.zombie_vars["zombie_powerup_point_doubler_time"] >= 0)
  1407. {
  1408. wait 0.1;
  1409. level.zombie_vars["zombie_powerup_point_doubler_time"] = level.zombie_vars["zombie_powerup_point_doubler_time"] - 0.1;
  1410. //self setvalue( level.zombie_vars["zombie_powerup_point_doubler_time"] );
  1411. }
  1412.  
  1413. // turn off the timer
  1414. level.zombie_vars["zombie_powerup_point_doubler_on"] = false;
  1415. players = get_players();
  1416. for (i = 0; i < players.size; i++)
  1417. {
  1418. //players[i] stoploopsound("double_point_loop", 2);
  1419. players[i] playsound("points_loop_off");
  1420. }
  1421. temp_ent stoploopsound(2);
  1422.  
  1423.  
  1424. // remove the offset to make room for new powerups, reset timer for next time
  1425. level.zombie_vars["zombie_powerup_point_doubler_time"] = 30;
  1426. //level.zombie_timer_offset += level.zombie_timer_offset_interval;
  1427. //self destroy();
  1428. temp_ent delete();
  1429. }
  1430. devil_dialog_delay()
  1431. {
  1432. wait(1.8);
  1433. level thread play_devil_dialog("nuke_vox");
  1434.  
  1435. }
  1436. full_ammo_on_hud( drop_item )
  1437. {
  1438. self endon ("disconnect");
  1439.  
  1440. // set up the hudelem
  1441. hudelem = maps\_hud_util::createFontString( "objective", 2 );
  1442. hudelem maps\_hud_util::setPoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] - (level.zombie_vars["zombie_timer_offset_interval"] * 2));
  1443. hudelem.sort = 0.5;
  1444. hudelem.alpha = 0;
  1445. hudelem fadeovertime(0.5);
  1446. hudelem.alpha = 1;
  1447. hudelem.label = drop_item.hint;
  1448.  
  1449. // set time remaining for insta kill
  1450. hudelem thread full_ammo_move_hud();
  1451.  
  1452. // offset in case we get another powerup
  1453. //level.zombie_timer_offset -= level.zombie_timer_offset_interval;
  1454. }
  1455.  
  1456. full_ammo_move_hud()
  1457. {
  1458.  
  1459. players = get_players();
  1460. level thread play_devil_dialog("ma_vox");
  1461. for (i = 0; i < players.size; i++)
  1462. {
  1463. players[i] playsound ("full_ammo");
  1464.  
  1465. }
  1466. wait 0.5;
  1467. move_fade_time = 1.5;
  1468.  
  1469. self FadeOverTime( move_fade_time );
  1470. self MoveOverTime( move_fade_time );
  1471. self.y = 270;
  1472. self.alpha = 0;
  1473.  
  1474. wait move_fade_time;
  1475.  
  1476. self destroy();
  1477. }
  1478.  
  1479. //
  1480. // DEBUG
  1481. //
  1482.  
  1483. print_powerup_drop( powerup, type )
  1484. {
  1485. /#
  1486. if( !IsDefined( level.powerup_drop_time ) )
  1487. {
  1488. level.powerup_drop_time = 0;
  1489. level.powerup_random_count = 0;
  1490. level.powerup_score_count = 0;
  1491. }
  1492.  
  1493. time = ( GetTime() - level.powerup_drop_time ) * 0.001;
  1494. level.powerup_drop_time = GetTime();
  1495.  
  1496. if( type == "random" )
  1497. {
  1498. level.powerup_random_count++;
  1499. }
  1500. else
  1501. {
  1502. level.powerup_score_count++;
  1503. }
  1504.  
  1505. println( "========== POWER UP DROPPED ==========" );
  1506. println( "DROPPED: " + powerup );
  1507. println( "HOW IT DROPPED: " + type );
  1508. println( "--------------------" );
  1509. println( "Drop Time: " + time );
  1510. println( "Random Powerup Count: " + level.powerup_random_count );
  1511. println( "Random Powerup Count: " + level.powerup_score_count );
  1512. println( "======================================" );
  1513. #/
  1514. }
Advertisement
Add Comment
Please, Sign In to add comment