mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
789 lines
25 KiB
Plaintext
789 lines
25 KiB
Plaintext
#include maps\mp\_utility;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
|
|
powerup_drop( drop_point )
|
|
{
|
|
if ( level.powerup_drop_count >= level.zombie_vars["zombie_powerup_drop_max_per_round"] )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( !isdefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 )
|
|
return;
|
|
|
|
rand_drop = randomint( 100 );
|
|
|
|
powerup_chance = 2;
|
|
|
|
if ( rand_drop >= powerup_chance )
|
|
{
|
|
if ( !level.zombie_vars["zombie_drop_item"] )
|
|
return;
|
|
|
|
debug = "score";
|
|
}
|
|
else
|
|
debug = "random";
|
|
|
|
playable_area = getentarray( "player_volume", "script_noteworthy" );
|
|
level.powerup_drop_count++;
|
|
powerup = maps\mp\zombies\_zm_net::network_safe_spawn( "powerup", 1, "script_model", drop_point + vectorscale( ( 0, 0, 1 ), 40.0 ) );
|
|
valid_drop = 0;
|
|
|
|
for ( i = 0; i < playable_area.size; i++ )
|
|
{
|
|
if ( powerup istouching( playable_area[i] ) )
|
|
valid_drop = 1;
|
|
}
|
|
|
|
if ( valid_drop && level.rare_powerups_active )
|
|
{
|
|
pos = ( drop_point[0], drop_point[1], drop_point[2] + 42 );
|
|
|
|
if ( check_for_rare_drop_override( pos ) )
|
|
{
|
|
level.zombie_vars["zombie_drop_item"] = 0;
|
|
valid_drop = 0;
|
|
}
|
|
}
|
|
|
|
if ( !valid_drop )
|
|
{
|
|
level.powerup_drop_count--;
|
|
powerup delete();
|
|
return;
|
|
}
|
|
|
|
powerup powerup_setup();
|
|
print_powerup_drop( powerup.powerup_name, debug );
|
|
powerup thread powerup_timeout();
|
|
powerup thread powerup_wobble();
|
|
powerup thread powerup_grab();
|
|
powerup thread powerup_move();
|
|
powerup thread powerup_emp();
|
|
level.zombie_vars["zombie_drop_item"] = 0;
|
|
level notify( "powerup_dropped", powerup );
|
|
}
|
|
|
|
get_next_powerup()
|
|
{
|
|
powerup = level.zombie_powerup_array[level.zombie_powerup_index];
|
|
level.zombie_powerup_index++;
|
|
|
|
if ( level.zombie_powerup_index >= level.zombie_powerup_array.size )
|
|
{
|
|
level.zombie_powerup_index = 0;
|
|
randomize_powerups();
|
|
level thread play_fx_on_powerup_dropped();
|
|
}
|
|
|
|
return powerup;
|
|
}
|
|
|
|
play_fx_on_powerup_dropped()
|
|
{
|
|
level waittill( "powerup_dropped", powerup );
|
|
|
|
if ( powerup.solo )
|
|
{
|
|
playfx( level._effect["powerup_grabbed_solo"], powerup.origin );
|
|
playfx( level._effect["powerup_grabbed_wave_solo"], powerup.origin );
|
|
}
|
|
else if ( powerup.caution )
|
|
{
|
|
playfx( level._effect["powerup_grabbed_caution"], powerup.origin );
|
|
playfx( level._effect["powerup_grabbed_wave_caution"], powerup.origin );
|
|
}
|
|
else
|
|
{
|
|
playfx( level._effect["powerup_grabbed"], powerup.origin );
|
|
playfx( level._effect["powerup_grabbed_wave"], powerup.origin );
|
|
}
|
|
}
|
|
|
|
powerup_grab( powerup_team )
|
|
{
|
|
if ( isdefined( self ) && self.zombie_grabbable )
|
|
{
|
|
self thread powerup_zombie_grab( powerup_team );
|
|
return;
|
|
}
|
|
|
|
self endon( "powerup_timedout" );
|
|
self endon( "powerup_grabbed" );
|
|
range_squared = 4096;
|
|
|
|
while ( isdefined( self ) )
|
|
{
|
|
players = array_randomize(get_players());
|
|
|
|
for ( i = 0; i < players.size; i++ )
|
|
{
|
|
if ( ( self.powerup_name == "minigun" || self.powerup_name == "tesla" || self.powerup_name == "random_weapon" || self.powerup_name == "meat_stink" ) && ( players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || players[i] usebuttonpressed() && players[i] in_revive_trigger() ) )
|
|
continue;
|
|
|
|
if ( isdefined( self.can_pick_up_in_last_stand ) && !self.can_pick_up_in_last_stand && players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
|
continue;
|
|
|
|
if ( players[i].sessionstate != "playing" )
|
|
continue;
|
|
|
|
ignore_range = 0;
|
|
|
|
if ( isdefined( players[i].ignore_range_powerup ) && players[i].ignore_range_powerup == self )
|
|
{
|
|
players[i].ignore_range_powerup = undefined;
|
|
ignore_range = 1;
|
|
}
|
|
|
|
if ( distancesquared( players[i] getCentroid(), self.origin ) < range_squared || ignore_range )
|
|
{
|
|
if ( isdefined( level._powerup_grab_check ) )
|
|
{
|
|
if ( !self [[ level._powerup_grab_check ]]( players[i] ) )
|
|
continue;
|
|
}
|
|
|
|
self.power_up_grab_player = players[i];
|
|
|
|
if ( isdefined( level.zombie_powerup_grab_func ) )
|
|
level thread [[ level.zombie_powerup_grab_func ]]();
|
|
else
|
|
{
|
|
switch ( self.powerup_name )
|
|
{
|
|
case "nuke":
|
|
level thread nuke_powerup( self, players[i].team );
|
|
players[i] thread powerup_vo( "nuke" );
|
|
zombies = getaiarray( level.zombie_team );
|
|
players[i].zombie_nuked = arraysort( zombies, self.origin );
|
|
players[i] notify( "nuke_triggered" );
|
|
break;
|
|
case "full_ammo":
|
|
level thread full_ammo_powerup( self, players[i] );
|
|
players[i] thread powerup_vo( "full_ammo" );
|
|
break;
|
|
case "double_points":
|
|
level thread double_points_powerup( self, players[i] );
|
|
players[i] thread powerup_vo( "double_points" );
|
|
break;
|
|
case "insta_kill":
|
|
level thread insta_kill_powerup( self, players[i] );
|
|
players[i] thread powerup_vo( "insta_kill" );
|
|
break;
|
|
case "carpenter":
|
|
if ( is_classic() )
|
|
players[i] thread maps\mp\zombies\_zm_pers_upgrades::persistent_carpenter_ability_check();
|
|
|
|
if ( isdefined( level.use_new_carpenter_func ) )
|
|
level thread [[ level.use_new_carpenter_func ]]( self.origin );
|
|
else
|
|
level thread start_carpenter( self.origin );
|
|
|
|
players[i] thread powerup_vo( "carpenter" );
|
|
break;
|
|
case "fire_sale":
|
|
level thread start_fire_sale( self );
|
|
players[i] thread powerup_vo( "firesale" );
|
|
break;
|
|
case "bonfire_sale":
|
|
level thread start_bonfire_sale( self );
|
|
players[i] thread powerup_vo( "firesale" );
|
|
break;
|
|
case "minigun":
|
|
level thread minigun_weapon_powerup( players[i] );
|
|
players[i] thread powerup_vo( "minigun" );
|
|
break;
|
|
case "free_perk":
|
|
level thread free_perk_powerup( self );
|
|
break;
|
|
case "tesla":
|
|
level thread tesla_weapon_powerup( players[i] );
|
|
players[i] thread powerup_vo( "tesla" );
|
|
break;
|
|
case "random_weapon":
|
|
if ( !level random_weapon_powerup( self, players[i] ) )
|
|
continue;
|
|
break;
|
|
case "bonus_points_player":
|
|
level thread bonus_points_player_powerup( self, players[i] );
|
|
players[i] thread powerup_vo( "bonus_points_solo" );
|
|
break;
|
|
case "bonus_points_team":
|
|
level thread bonus_points_team_powerup( self );
|
|
players[i] thread powerup_vo( "bonus_points_team" );
|
|
break;
|
|
case "teller_withdrawl":
|
|
level thread teller_withdrawl( self, players[i] );
|
|
break;
|
|
default:
|
|
if ( isdefined( level._zombiemode_powerup_grab ) )
|
|
level thread [[ level._zombiemode_powerup_grab ]]( self, players[i] );
|
|
break;
|
|
}
|
|
}
|
|
|
|
maps\mp\_demo::bookmark( "zm_player_powerup_grabbed", gettime(), players[i] );
|
|
|
|
if ( should_award_stat( self.powerup_name ) )
|
|
{
|
|
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( "drops" );
|
|
players[i] maps\mp\zombies\_zm_stats::increment_player_stat( "drops" );
|
|
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( self.powerup_name + "_pickedup" );
|
|
players[i] maps\mp\zombies\_zm_stats::increment_player_stat( self.powerup_name + "_pickedup" );
|
|
}
|
|
|
|
if ( self.solo )
|
|
{
|
|
playfx( level._effect["powerup_grabbed_solo"], self.origin );
|
|
playfx( level._effect["powerup_grabbed_wave_solo"], self.origin );
|
|
}
|
|
else if ( self.caution )
|
|
{
|
|
playfx( level._effect["powerup_grabbed_caution"], self.origin );
|
|
playfx( level._effect["powerup_grabbed_wave_caution"], self.origin );
|
|
}
|
|
else
|
|
{
|
|
playfx( level._effect["powerup_grabbed"], self.origin );
|
|
playfx( level._effect["powerup_grabbed_wave"], self.origin );
|
|
}
|
|
|
|
if ( isdefined( self.stolen ) && self.stolen )
|
|
level notify( "monkey_see_monkey_dont_achieved" );
|
|
|
|
if ( isdefined( self.grabbed_level_notify ) )
|
|
level notify( self.grabbed_level_notify );
|
|
|
|
self.claimed = 1;
|
|
wait 0.1;
|
|
playsoundatposition( "zmb_powerup_grabbed", self.origin );
|
|
self stoploopsound();
|
|
self hide();
|
|
|
|
if ( self.powerup_name != "fire_sale" )
|
|
{
|
|
if ( isdefined( self.power_up_grab_player ) )
|
|
{
|
|
if ( isdefined( level.powerup_intro_vox ) )
|
|
{
|
|
level thread [[ level.powerup_intro_vox ]]( self );
|
|
return;
|
|
}
|
|
else if ( isdefined( level.powerup_vo_available ) )
|
|
{
|
|
can_say_vo = [[ level.powerup_vo_available ]]();
|
|
|
|
if ( !can_say_vo )
|
|
{
|
|
self powerup_delete();
|
|
self notify( "powerup_grabbed" );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( self.powerup_name, self.power_up_grab_player.pers["team"] );
|
|
self powerup_delete();
|
|
self notify( "powerup_grabbed" );
|
|
}
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
full_ammo_powerup( drop_item, player )
|
|
{
|
|
clip_only = 0;
|
|
if(level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
clip_only = 1;
|
|
drop_item.hint = &"Clip Ammo!";
|
|
}
|
|
|
|
players = get_players( player.team );
|
|
if ( isdefined( level._get_game_module_players ) )
|
|
{
|
|
players = [[ level._get_game_module_players ]]( player );
|
|
}
|
|
i = 0;
|
|
while ( i < players.size )
|
|
{
|
|
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
primary_weapons = players[ i ] getweaponslist( 1 );
|
|
|
|
players[ i ] notify( "zmb_max_ammo" );
|
|
players[ i ] notify( "zmb_lost_knife" );
|
|
players[ i ] notify( "zmb_disable_claymore_prompt" );
|
|
players[ i ] notify( "zmb_disable_spikemore_prompt" );
|
|
|
|
x = 0;
|
|
while ( x < primary_weapons.size )
|
|
{
|
|
if ( level.headshots_only && is_lethal_grenade(primary_weapons[ x ] ) )
|
|
{
|
|
x++;
|
|
continue;
|
|
}
|
|
if ( isdefined( level.zombie_include_equipment ) && isdefined( level.zombie_include_equipment[ primary_weapons[ x ] ] ) )
|
|
{
|
|
x++;
|
|
continue;
|
|
}
|
|
if ( isdefined( level.zombie_weapons_no_max_ammo ) && isdefined( level.zombie_weapons_no_max_ammo[ primary_weapons[ x ] ] ) )
|
|
{
|
|
x++;
|
|
continue;
|
|
}
|
|
if ( players[ i ] hasweapon( primary_weapons[ x ] ) )
|
|
{
|
|
if(clip_only)
|
|
{
|
|
new_ammo = players[i] getWeaponAmmoStock(primary_weapons[x]) + weaponClipSize(primary_weapons[x]);
|
|
if(weaponDualWieldWeaponName(primary_weapons[x]) != "none")
|
|
{
|
|
new_ammo += weaponClipSize(weaponDualWieldWeaponName(primary_weapons[x]));
|
|
}
|
|
|
|
if(new_ammo > weaponMaxAmmo(primary_weapons[x]))
|
|
{
|
|
new_ammo = weaponMaxAmmo(primary_weapons[x]);
|
|
}
|
|
|
|
players[i] setWeaponAmmoStock(primary_weapons[x], new_ammo);
|
|
}
|
|
else
|
|
{
|
|
players[i] givemaxammo(primary_weapons[x]);
|
|
}
|
|
}
|
|
x++;
|
|
}
|
|
|
|
players[i] notify("weapon_ammo_change");
|
|
|
|
i++;
|
|
}
|
|
level thread full_ammo_on_hud( drop_item, player.team );
|
|
|
|
if(level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
level thread empty_clip_powerup( drop_item, player );
|
|
}
|
|
}
|
|
|
|
full_ammo_on_hud( drop_item, player_team )
|
|
{
|
|
self endon( "disconnect" );
|
|
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring( "objective", 2, player_team );
|
|
hudelem maps\mp\gametypes_zm\_hud_util::setpoint( "TOP", undefined, 0, level.zombie_vars["zombie_timer_offset"] - level.zombie_vars["zombie_timer_offset_interval"] * 2 );
|
|
hudelem.sort = 0.5;
|
|
hudelem.alpha = 0;
|
|
hudelem fadeovertime( 0.5 );
|
|
hudelem.alpha = 1;
|
|
|
|
if ( isdefined( drop_item ) )
|
|
hudelem.label = drop_item.hint;
|
|
|
|
hudelem thread full_ammo_move_hud( player_team );
|
|
}
|
|
|
|
full_ammo_move_hud( player_team )
|
|
{
|
|
players = get_players( player_team );
|
|
players[0] playsoundtoteam( "zmb_full_ammo", player_team );
|
|
wait 0.5;
|
|
move_fade_time = 1.5;
|
|
self fadeovertime( move_fade_time );
|
|
self moveovertime( move_fade_time );
|
|
self.y = 270;
|
|
self.alpha = 0;
|
|
wait( move_fade_time );
|
|
self destroyelem();
|
|
}
|
|
|
|
empty_clip_powerup( drop_item, player )
|
|
{
|
|
team = getOtherTeam(player.team);
|
|
|
|
i = 0;
|
|
players = get_players(team);
|
|
while(i < players.size)
|
|
{
|
|
if ( players[ i ] maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
|
{
|
|
i++;
|
|
continue;
|
|
}
|
|
|
|
primaries = players[i] getweaponslistprimaries();
|
|
foreach(weapon in primaries)
|
|
{
|
|
dual_wield_weapon = weaponDualWieldWeaponName(weapon);
|
|
alt_weapon = weaponAltWeaponName(weapon);
|
|
|
|
if(dual_wield_weapon != "none")
|
|
{
|
|
players[i] scripts\zm\_zm_reimagined::set_weapon_ammo_clip_left(weapon, 0);
|
|
}
|
|
|
|
players[i] setweaponammoclip(weapon, 0);
|
|
players[i] setweaponammoclip(alt_weapon, 0);
|
|
}
|
|
|
|
players[i] setweaponammoclip(players[i] get_player_lethal_grenade(), 0);
|
|
players[i] setweaponammoclip(players[i] get_player_tactical_grenade(), 0);
|
|
players[i] setweaponammoclip(players[i] get_player_placeable_mine(), 0);
|
|
|
|
i++;
|
|
}
|
|
|
|
level thread empty_clip_on_hud( drop_item, team );
|
|
}
|
|
|
|
empty_clip_on_hud( drop_item, team )
|
|
{
|
|
self endon( "disconnect" );
|
|
hudelem = maps\mp\gametypes_zm\_hud_util::createserverfontstring( "objective", 2, team );
|
|
hudelem maps\mp\gametypes_zm\_hud_util::setpoint( "TOP", undefined, 0, level.zombie_vars[ "zombie_timer_offset" ] - ( level.zombie_vars[ "zombie_timer_offset_interval" ] * 2 ) );
|
|
hudelem.sort = 0.5;
|
|
hudelem.color = (0.21, 0, 0);
|
|
hudelem.alpha = 0;
|
|
hudelem fadeovertime( 0.5 );
|
|
hudelem.alpha = 1;
|
|
hudelem.label = &"Clip Empty!";
|
|
hudelem thread empty_clip_move_hud( team );
|
|
}
|
|
|
|
empty_clip_move_hud( team )
|
|
{
|
|
wait 0.5;
|
|
move_fade_time = 1.5;
|
|
self fadeovertime( move_fade_time );
|
|
self moveovertime( move_fade_time );
|
|
self.y = 270;
|
|
self.alpha = 0;
|
|
wait move_fade_time;
|
|
self destroy();
|
|
}
|
|
|
|
nuke_powerup( drop_item, player_team )
|
|
{
|
|
location = drop_item.origin;
|
|
player = drop_item.power_up_grab_player;
|
|
playfx( drop_item.fx, location );
|
|
level thread maps\mp\zombies\_zm_powerups::nuke_flash( player_team );
|
|
wait 0.5;
|
|
zombies = getaiarray( level.zombie_team );
|
|
zombies = arraysort( zombies, location );
|
|
zombies_nuked = [];
|
|
|
|
for ( i = 0; i < zombies.size; i++ )
|
|
{
|
|
if ( isdefined( zombies[i].ignore_nuke ) && zombies[i].ignore_nuke )
|
|
continue;
|
|
|
|
if ( isdefined( zombies[i].marked_for_death ) && zombies[i].marked_for_death )
|
|
continue;
|
|
|
|
if ( isdefined( zombies[i].nuke_damage_func ) )
|
|
{
|
|
zombies[i] thread [[ zombies[i].nuke_damage_func ]]();
|
|
continue;
|
|
}
|
|
|
|
if ( is_magic_bullet_shield_enabled( zombies[i] ) )
|
|
continue;
|
|
|
|
zombies[i].marked_for_death = 1;
|
|
zombies[i].nuked = 1;
|
|
zombies_nuked[zombies_nuked.size] = zombies[i];
|
|
}
|
|
|
|
for ( i = 0; i < zombies_nuked.size; i++ )
|
|
{
|
|
if ( !isdefined( zombies_nuked[i] ) )
|
|
continue;
|
|
|
|
if ( is_magic_bullet_shield_enabled( zombies_nuked[i] ) )
|
|
continue;
|
|
|
|
if ( i < 5 && !zombies_nuked[i].isdog )
|
|
zombies_nuked[i] thread maps\mp\animscripts\zm_death::flame_death_fx();
|
|
|
|
if ( !zombies_nuked[i].isdog )
|
|
{
|
|
if ( !( isdefined( zombies_nuked[i].no_gib ) && zombies_nuked[i].no_gib ) )
|
|
zombies_nuked[i] maps\mp\zombies\_zm_spawner::zombie_head_gib();
|
|
|
|
zombies_nuked[i] playsound( "evt_nuked" );
|
|
}
|
|
|
|
zombies_nuked[i] dodamage( zombies_nuked[i].health + 666, zombies_nuked[i].origin );
|
|
}
|
|
|
|
players = get_players( player_team );
|
|
for ( i = 0; i < players.size; i++ )
|
|
{
|
|
players[ i ] maps\mp\zombies\_zm_score::player_add_points( "nuke_powerup", 400 );
|
|
}
|
|
|
|
if(level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
players = get_players(getOtherTeam(player_team));
|
|
for(i = 0; i < players.size; i++)
|
|
{
|
|
if(is_player_valid(players[i]))
|
|
{
|
|
score = 400 * maps\mp\zombies\_zm_score::get_points_multiplier(player);
|
|
|
|
if(players[i].score < score)
|
|
{
|
|
players[i] maps\mp\zombies\_zm_score::minus_to_player_score(players[i].score);
|
|
}
|
|
else
|
|
{
|
|
players[i] maps\mp\zombies\_zm_score::minus_to_player_score(score);
|
|
}
|
|
|
|
radiusDamage(players[i].origin + (0, 0, 5), 10, 75, 75);
|
|
}
|
|
else if(players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
|
{
|
|
if (isDefined(level.player_suicide_func))
|
|
{
|
|
players[i] thread [[level.player_suicide_func]]();
|
|
}
|
|
}
|
|
}
|
|
|
|
if(level.scr_zm_ui_gametype_obj == "zrace")
|
|
{
|
|
if (isDefined(level.increment_score_func))
|
|
{
|
|
[[level.increment_score_func]](player_team, 10, 1, "nuke_powerup");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
insta_kill_powerup( drop_item, player )
|
|
{
|
|
if ( isDefined( level.insta_kill_powerup_override ) )
|
|
{
|
|
level thread [[ level.insta_kill_powerup_override ]]( drop_item, player );
|
|
return;
|
|
}
|
|
|
|
if ( is_classic() )
|
|
{
|
|
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_insta_kill_upgrade_check();
|
|
}
|
|
|
|
team = player.team;
|
|
|
|
time = 30;
|
|
if(level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
time = 15;
|
|
level thread half_damage_powerup( drop_item, player );
|
|
}
|
|
|
|
if ( level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] )
|
|
{
|
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] += time;
|
|
return;
|
|
}
|
|
|
|
temp_enta = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
temp_enta playloopsound( "zmb_insta_kill_loop" );
|
|
|
|
level.zombie_vars[ team ][ "zombie_half_damage" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_insta_kill" ] = !is_true(level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ]);
|
|
|
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 1;
|
|
|
|
while ( level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] >= 0 )
|
|
{
|
|
wait 0.05;
|
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] -= 0.05;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_half_damage" ] = is_true(level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ]);
|
|
level.zombie_vars[ team ][ "zombie_insta_kill" ] = 0;
|
|
|
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_powerup_insta_kill_time" ] = time;
|
|
|
|
get_players()[ 0 ] playsoundtoteam( "zmb_insta_kill", team );
|
|
temp_enta stoploopsound( 2 );
|
|
temp_enta delete();
|
|
|
|
players = get_players( team );
|
|
i = 0;
|
|
while ( i < players.size )
|
|
{
|
|
if ( isDefined( players[ i ] ) )
|
|
{
|
|
players[ i ] notify( "insta_kill_over" );
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
half_damage_powerup( drop_item, player )
|
|
{
|
|
team = getOtherTeam(player.team);
|
|
|
|
time = 15;
|
|
|
|
if ( level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] )
|
|
{
|
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] += time;
|
|
return;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_insta_kill" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_half_damage" ] = !is_true(level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ]);
|
|
|
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] = 1;
|
|
|
|
while ( level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] >= 0 )
|
|
{
|
|
wait 0.05;
|
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] -= 0.05;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_insta_kill" ] = is_true(level.zombie_vars[ team ][ "zombie_powerup_insta_kill_on" ]);
|
|
level.zombie_vars[ team ][ "zombie_half_damage" ] = 0;
|
|
|
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_on" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_powerup_half_damage_time" ] = time;
|
|
}
|
|
|
|
double_points_powerup( drop_item, player )
|
|
{
|
|
team = player.team;
|
|
|
|
time = 30;
|
|
if(level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
time = 15;
|
|
level thread half_points_powerup( drop_item, player );
|
|
}
|
|
|
|
if ( level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] )
|
|
{
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] += time;
|
|
return;
|
|
}
|
|
|
|
if ( is_true( level.pers_upgrade_double_points ) )
|
|
{
|
|
player thread maps\mp\zombies\_zm_pers_upgrades_functions::pers_upgrade_double_points_pickup_start();
|
|
}
|
|
|
|
if ( isDefined( level.current_game_module ) && level.current_game_module == 2 )
|
|
{
|
|
if ( isDefined( player._race_team ) )
|
|
{
|
|
if ( player._race_team == 1 )
|
|
{
|
|
level._race_team_double_points = 1;
|
|
}
|
|
else
|
|
{
|
|
level._race_team_double_points = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
players = get_players( team );
|
|
for ( i = 0; i < players.size; i++ )
|
|
{
|
|
players[ i ] setclientfield( "score_cf_double_points_active", 1 );
|
|
}
|
|
|
|
temp_ent = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
temp_ent playloopsound( "zmb_double_point_loop" );
|
|
|
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] *= 2;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 1;
|
|
|
|
while ( level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] >= 0 )
|
|
{
|
|
wait 0.05;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] -= 0.05;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] /= 2;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_on" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_doubler_time" ] = time;
|
|
|
|
temp_ent stoploopsound( 2 );
|
|
temp_ent delete();
|
|
|
|
players = get_players( team );
|
|
for ( i = 0; i < players.size; i++ )
|
|
{
|
|
players[ i ] playsound( "zmb_points_loop_off" );
|
|
players[ i ] setclientfield( "score_cf_double_points_active", 0 );
|
|
}
|
|
|
|
level._race_team_double_points = undefined;
|
|
}
|
|
|
|
half_points_powerup( drop_item, player )
|
|
{
|
|
team = getOtherTeam(player.team);
|
|
|
|
time = 15;
|
|
|
|
if ( level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] )
|
|
{
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] += time;
|
|
return;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] /= 2;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] = 1;
|
|
|
|
while ( level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] >= 0 )
|
|
{
|
|
wait 0.05;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] -= 0.05;
|
|
}
|
|
|
|
level.zombie_vars[ team ][ "zombie_point_scalar" ] *= 2;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_on" ] = 0;
|
|
level.zombie_vars[ team ][ "zombie_powerup_point_halfer_time" ] = time;
|
|
}
|
|
|
|
start_fire_sale( item )
|
|
{
|
|
level thread maps\mp\zombies\_zm_audio_announcer::leaderdialog( "fire_sale", getotherteam( item.power_up_grab_player.pers["team"] ) );
|
|
|
|
if ( level.zombie_vars["zombie_powerup_fire_sale_time"] > 0 && is_true( level.zombie_vars["zombie_powerup_fire_sale_on"] ) )
|
|
{
|
|
level.zombie_vars["zombie_powerup_fire_sale_time"] += 30;
|
|
return;
|
|
}
|
|
|
|
level notify( "powerup fire sale" );
|
|
level endon( "powerup fire sale" );
|
|
level.zombie_vars["zombie_powerup_fire_sale_on"] = 1;
|
|
level thread toggle_fire_sale_on();
|
|
|
|
for ( level.zombie_vars["zombie_powerup_fire_sale_time"] = 30; level.zombie_vars["zombie_powerup_fire_sale_time"] > 0; level.zombie_vars["zombie_powerup_fire_sale_time"] -= 0.05 )
|
|
wait 0.05;
|
|
|
|
level.zombie_vars["zombie_powerup_fire_sale_on"] = 0;
|
|
level notify( "fire_sale_off" );
|
|
} |