mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-08 22:31:36 -05:00
833 lines
21 KiB
Plaintext
833 lines
21 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 = &"ZOMBIE_POWERUP_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)
|
|
{
|
|
if (weaponMaxAmmo(primary_weapons[x]) == 0)
|
|
{
|
|
x++;
|
|
continue;
|
|
}
|
|
|
|
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 = &"ZOMBIE_POWERUP_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, &"ZOMBIE_ZGRIEF_NUKE_GRABBED_SCORE");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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");
|
|
} |