mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
138 lines
3.9 KiB
Plaintext
138 lines
3.9 KiB
Plaintext
#include maps\mp\zombies\_zm_ai_leaper;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include maps\mp\animscripts\zm_utility;
|
|
#include maps\mp\zombies\_zm_spawner;
|
|
#include maps\mp\zombies\_zm_score;
|
|
#include maps\mp\animscripts\zm_shared;
|
|
#include maps\mp\zombies\_zm_ai_basic;
|
|
#include maps\mp\zombies\_zm_zonemgr;
|
|
#include maps\mp\gametypes_zm\_globallogic_score;
|
|
#include maps\mp\zombies\_zm_powerups;
|
|
#include maps\mp\zombies\_zm_audio;
|
|
#include maps\mp\zm_highrise_elevators;
|
|
|
|
leaper_round_tracker()
|
|
{
|
|
level.leaper_round_count = 1;
|
|
level.next_leaper_round = level.round_number + randomintrange(4, 6);
|
|
old_spawn_func = level.round_spawn_func;
|
|
old_wait_func = level.round_wait_func;
|
|
|
|
if (level.next_leaper_round == 5)
|
|
{
|
|
level.prev_leaper_round_amount = 4;
|
|
}
|
|
else
|
|
{
|
|
level.prev_leaper_round_amount = 5;
|
|
}
|
|
|
|
while (true)
|
|
{
|
|
level waittill("between_round_over");
|
|
|
|
if (level.round_number == level.next_leaper_round)
|
|
{
|
|
level.music_round_override = 1;
|
|
old_spawn_func = level.round_spawn_func;
|
|
old_wait_func = level.round_wait_func;
|
|
leaper_round_start();
|
|
level.round_spawn_func = ::leaper_round_spawning;
|
|
level.round_wait_func = ::leaper_round_wait;
|
|
|
|
if (!isdefined(level.prev_leaper_round_amount))
|
|
{
|
|
level.prev_leaper_round_amount = randomintrange(4, 6);
|
|
level.next_leaper_round = level.round_number + level.prev_leaper_round_amount;
|
|
}
|
|
else
|
|
{
|
|
if (level.prev_leaper_round_amount == 4)
|
|
{
|
|
level.next_leaper_round = level.round_number + 5;
|
|
}
|
|
else
|
|
{
|
|
level.next_leaper_round = level.round_number + 4;
|
|
}
|
|
|
|
level.prev_leaper_round_amount = undefined;
|
|
}
|
|
}
|
|
else if (flag("leaper_round"))
|
|
{
|
|
leaper_round_stop();
|
|
level.round_spawn_func = old_spawn_func;
|
|
level.round_wait_func = old_wait_func;
|
|
level.music_round_override = 0;
|
|
level.leaper_round_count += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
leaper_round_accuracy_tracking()
|
|
{
|
|
players = getplayers();
|
|
level.leaper_round_accurate_players = 0;
|
|
|
|
for (i = 0; i < players.size; i++)
|
|
{
|
|
players[i].total_shots_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("total_shots");
|
|
players[i].total_hits_start_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("hits");
|
|
}
|
|
|
|
level waittill("last_leaper_down");
|
|
|
|
players = getplayers();
|
|
|
|
for (i = 0; i < players.size; i++)
|
|
{
|
|
total_shots_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("total_shots") - players[i].total_shots_start_leaper_round;
|
|
total_hits_end_leaper_round = players[i] maps\mp\gametypes_zm\_globallogic_score::getpersstat("hits") - players[i].total_hits_start_leaper_round;
|
|
|
|
if (total_shots_end_leaper_round == total_hits_end_leaper_round)
|
|
level.leaper_round_accurate_players++;
|
|
}
|
|
|
|
if (level.leaper_round_accurate_players == players.size)
|
|
{
|
|
if (isdefined(level.last_leaper_origin))
|
|
{
|
|
trace = groundtrace(level.last_leaper_origin + vectorscale((0, 0, 1), 10.0), level.last_leaper_origin + vectorscale((0, 0, -1), 150.0), 0, undefined, 1);
|
|
power_up_origin = trace["position"];
|
|
level thread maps\mp\zombies\_zm_powerups::specific_powerup_drop("free_perk", power_up_origin + vectorscale((1, 1, 0), 30.0));
|
|
}
|
|
}
|
|
}
|
|
|
|
leaper_death()
|
|
{
|
|
self endon("leaper_cleanup");
|
|
|
|
self waittill("death");
|
|
|
|
self leaper_stop_trail_fx();
|
|
self playsound("zmb_vocals_leaper_death");
|
|
playfx(level._effect["leaper_death"], self.origin);
|
|
|
|
if (get_current_zombie_count() == 0 && level.zombie_total == 0)
|
|
{
|
|
level.last_leaper_origin = self.origin;
|
|
level notify("last_leaper_down");
|
|
}
|
|
|
|
if (isplayer(self.attacker))
|
|
{
|
|
self.deathpoints_already_given = 1;
|
|
|
|
event = "death";
|
|
|
|
if (issubstr(self.damageweapon, "knife_ballistic_"))
|
|
event = "ballistic_knife_death";
|
|
|
|
self.attacker thread do_player_general_vox("general", "leaper_killed", 20, 20);
|
|
self.attacker maps\mp\zombies\_zm_score::player_add_points(event, self.damagemod, self.damagelocation, 1);
|
|
}
|
|
} |