1 #using scripts\codescripts\struct;
3 #using scripts\shared\clientfield_shared;
4 #using scripts\shared\flag_shared;
5 #using scripts\shared\lui_shared;
6 #using scripts\shared\system_shared;
7 #using scripts\shared\util_shared;
9 #insert scripts\shared\shared.gsh;
10 #insert scripts\shared\version.gsh;
12 #using scripts\shared\ai\zombie_death;
13 #using scripts\shared\ai\zombie_utility;
14 #using scripts\shared\ai\systems\gib;
16 #using scripts\zm\_zm_daily_challenges;
17 #using scripts\zm\_zm_powerups;
18 #using scripts\zm\_zm_score;
19 #using scripts\zm\_zm_spawner;
20 #using scripts\zm\_zm_utility;
22 #insert scripts\zm\_zm_powerups.gsh;
23 #insert scripts\zm\_zm_utility.gsh;
25 #insert scripts\shared\ai\systems\gib.gsh;
27 #define NUKE_EFFECT "zombie/fx_powerup_nuke_zmb"
29 #precache( "string", "ZOMBIE_POWERUP_NUKE" );
30 #precache( "fx", NUKE_EFFECT );
32 #namespace zm_powerup_nuke;
36 #define N_NUKE_SPAWN_DELAY 3
56 zombies = GetAiTeamArray( level.zombie_team );
58 player.zombie_nuked = ArraySort( zombies,
self.origin );
59 player notify(
"nuke_triggered");
68 location = drop_item.origin;
70 if( isdefined( drop_item.fx ) )
72 PlayFx( drop_item.fx, location );
78 zombies = GetAiTeamArray( level.zombie_team );
80 zombies = ArraySort( zombies, location );
84 for (i = 0; i < zombies.size; i++)
87 if (
IS_TRUE( zombies[i].ignore_nuke ) )
93 if ( IsDefined(zombies[i].marked_for_death) && zombies[i].marked_for_death )
99 if ( IsDefined(zombies[i].nuke_damage_func) )
101 zombies[i] thread [[ zombies[i].nuke_damage_func ]]();
110 zombies[i].marked_for_death =
true;
113 zombies[i].nuked =
true;
114 zombies_nuked[ zombies_nuked.size ] = zombies[i];
119 for (i = 0; i < zombies_nuked.size; i++)
121 wait (randomfloatrange(0.1, 0.7));
122 if( !IsDefined( zombies_nuked[i] ) )
135 if( !(
IS_TRUE( zombies_nuked[i].isdog ) ) )
137 if ( !
IS_TRUE( zombies_nuked[i].no_gib ) )
141 zombies_nuked[i] playsound (
"evt_nuked");
145 zombies_nuked[i] dodamage( zombies_nuked[i].health + 666, zombies_nuked[i].origin );
149 level notify(
"nuke_complete" );
151 players = GetPlayers( player_team );
152 for(i = 0; i < players.size; i++)
168 GetPlayers()[0] PlaySoundToTeam(
"evt_nuke_flash", team);
170 GetPlayers()[0] PlaySound(
"evt_nuke_flash");
177 level endon(
"disable_nuke_delay_spawning" );
179 if(
IS_TRUE( level.disable_nuke_delay_spawning ) )
184 b_spawn_zombies_before_nuke = level
flag::get(
"spawn_zombies" );
188 level waittill(
"nuke_complete" );
190 if(
IS_TRUE( level.disable_nuke_delay_spawning ) )
196 wait( n_spawn_delay );
198 if ( b_spawn_zombies_before_nuke )