mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
265 lines
8.9 KiB
Plaintext
265 lines
8.9 KiB
Plaintext
#include maps\mp\zm_nuked_perks;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include maps\mp\zombies\_zm_weapons;
|
|
#include maps\mp\zombies\_zm_perks;
|
|
#include maps\mp\animscripts\zm_death;
|
|
#include maps\mp\zombies\_zm_game_module;
|
|
|
|
init_nuked_perks()
|
|
{
|
|
level.perk_arrival_vehicle = getent("perk_arrival_vehicle", "targetname");
|
|
level.perk_arrival_vehicle setmodel("tag_origin");
|
|
|
|
level.grief_perk_arrival_vehicles = getentarray("grief_perk_arrival_vehicle", "targetname");
|
|
level.grief_perk_arrival_vehicles_ind = 0;
|
|
|
|
foreach (grief_perk_arrival_vehicle in level.grief_perk_arrival_vehicles)
|
|
{
|
|
grief_perk_arrival_vehicle setmodel("tag_origin");
|
|
}
|
|
|
|
flag_init("perk_vehicle_bringing_in_perk");
|
|
structs = getstructarray("zm_perk_machine", "targetname");
|
|
|
|
for (i = 0; i < structs.size; i++)
|
|
structs[i] structdelete();
|
|
|
|
level.nuked_perks = [];
|
|
level.nuked_perks[0] = spawnstruct();
|
|
level.nuked_perks[0].model = "zombie_vending_revive";
|
|
level.nuked_perks[0].script_noteworthy = "specialty_quickrevive";
|
|
level.nuked_perks[0].turn_on_notify = "revive_on";
|
|
level.nuked_perks[1] = spawnstruct();
|
|
level.nuked_perks[1].model = "zombie_vending_sleight";
|
|
level.nuked_perks[1].script_noteworthy = "specialty_fastreload";
|
|
level.nuked_perks[1].turn_on_notify = "sleight_on";
|
|
level.nuked_perks[2] = spawnstruct();
|
|
level.nuked_perks[2].model = "zombie_vending_doubletap2";
|
|
level.nuked_perks[2].script_noteworthy = "specialty_rof";
|
|
level.nuked_perks[2].turn_on_notify = "doubletap_on";
|
|
level.nuked_perks[3] = spawnstruct();
|
|
level.nuked_perks[3].model = "zombie_vending_jugg";
|
|
level.nuked_perks[3].script_noteworthy = "specialty_armorvest";
|
|
level.nuked_perks[3].turn_on_notify = "juggernog_on";
|
|
level.nuked_perks[4] = spawnstruct();
|
|
level.nuked_perks[4].model = "p6_anim_zm_buildable_pap";
|
|
level.nuked_perks[4].script_noteworthy = "specialty_weapupgrade";
|
|
level.nuked_perks[4].turn_on_notify = "Pack_A_Punch_on";
|
|
|
|
level.override_perk_targetname = "zm_perk_machine_override";
|
|
random_perk_structs = [];
|
|
perk_structs = getstructarray("zm_random_machine", "script_noteworthy");
|
|
|
|
for (i = 0; i < perk_structs.size; i++)
|
|
{
|
|
random_perk_structs[i] = getstruct(perk_structs[i].target, "targetname");
|
|
random_perk_structs[i].script_int = perk_structs[i].script_int;
|
|
}
|
|
|
|
level.random_perk_structs = array_randomize(random_perk_structs);
|
|
|
|
for (i = 0; i < 5; i++)
|
|
{
|
|
level.random_perk_structs[i].targetname = "zm_perk_machine_override";
|
|
level.random_perk_structs[i].model = level.nuked_perks[i].model;
|
|
level.random_perk_structs[i].blocker_model = getent(level.random_perk_structs[i].target, "targetname");
|
|
level.random_perk_structs[i].script_noteworthy = level.nuked_perks[i].script_noteworthy;
|
|
level.random_perk_structs[i].turn_on_notify = level.nuked_perks[i].turn_on_notify;
|
|
|
|
if (!isdefined(level.struct_class_names["targetname"]["zm_perk_machine_override"]))
|
|
level.struct_class_names["targetname"]["zm_perk_machine_override"] = [];
|
|
|
|
level.struct_class_names["targetname"]["zm_perk_machine_override"][level.struct_class_names["targetname"]["zm_perk_machine_override"].size] = level.random_perk_structs[i];
|
|
}
|
|
}
|
|
|
|
perks_from_the_sky()
|
|
{
|
|
level thread turn_perks_on();
|
|
top_height = 8000;
|
|
machines = [];
|
|
machine_triggers = [];
|
|
machines[0] = getent("vending_revive", "targetname");
|
|
|
|
if (!isdefined(machines[0]))
|
|
return;
|
|
|
|
machine_triggers[0] = getent("vending_revive", "target");
|
|
move_perk(machines[0], top_height, 5.0, 0.001);
|
|
machine_triggers[0] trigger_off();
|
|
machines[1] = getent("vending_doubletap", "targetname");
|
|
machine_triggers[1] = getent("vending_doubletap", "target");
|
|
move_perk(machines[1], top_height, 5.0, 0.001);
|
|
machine_triggers[1] trigger_off();
|
|
machines[2] = getent("vending_sleight", "targetname");
|
|
machine_triggers[2] = getent("vending_sleight", "target");
|
|
move_perk(machines[2], top_height, 5.0, 0.001);
|
|
machine_triggers[2] trigger_off();
|
|
machines[3] = getent("vending_jugg", "targetname");
|
|
machine_triggers[3] = getent("vending_jugg", "target");
|
|
move_perk(machines[3], top_height, 5.0, 0.001);
|
|
machine_triggers[3] trigger_off();
|
|
machine_triggers[4] = getent("specialty_weapupgrade", "script_noteworthy");
|
|
machines[4] = getent(machine_triggers[4].target, "targetname");
|
|
move_perk(machines[4], top_height, 5.0, 0.001);
|
|
machine_triggers[4] trigger_off();
|
|
flag_wait("initial_blackscreen_passed");
|
|
|
|
if (level.scr_zm_ui_gametype == "zgrief")
|
|
{
|
|
grief_bring_random_perks(machines, machine_triggers);
|
|
}
|
|
else
|
|
{
|
|
bring_random_perks(machines, machine_triggers);
|
|
}
|
|
}
|
|
|
|
bring_random_perks(machines, machine_triggers)
|
|
{
|
|
wait(randomintrange(10, 20));
|
|
bring_random_perk(machines, machine_triggers);
|
|
|
|
wait_for_round_range(5, 6);
|
|
wait(randomintrange(30, 60));
|
|
bring_random_perk(machines, machine_triggers);
|
|
|
|
wait_for_round_range(10, 11);
|
|
wait(randomintrange(30, 60));
|
|
bring_random_perk(machines, machine_triggers);
|
|
|
|
wait_for_round_range(15, 16);
|
|
wait(randomintrange(60, 120));
|
|
bring_random_perk(machines, machine_triggers);
|
|
|
|
wait_for_round_range(20, 21);
|
|
wait(randomintrange(60, 120));
|
|
bring_random_perk(machines, machine_triggers);
|
|
}
|
|
|
|
grief_bring_random_perks(machines, machine_triggers)
|
|
{
|
|
level waittill("restart_round_start");
|
|
|
|
wait(randomintrange(10, 20));
|
|
grief_bring_random_perk(machines, machine_triggers);
|
|
grief_bring_random_perk(machines, machine_triggers);
|
|
grief_bring_random_perk(machines, machine_triggers);
|
|
grief_bring_random_perk(machines, machine_triggers);
|
|
grief_bring_random_perk(machines, machine_triggers);
|
|
}
|
|
|
|
grief_bring_random_perk(machines, machine_triggers)
|
|
{
|
|
count = machines.size;
|
|
|
|
if (count <= 0)
|
|
return;
|
|
|
|
index = randomintrange(0, count);
|
|
level thread grief_bring_perk(machines[index], machine_triggers[index]);
|
|
arrayremoveindex(machines, index);
|
|
arrayremoveindex(machine_triggers, index);
|
|
}
|
|
|
|
grief_bring_perk(machine, trigger)
|
|
{
|
|
if (is_true(level.scr_zm_ui_gametype_pro) && trigger.script_noteworthy == "specialty_weapupgrade")
|
|
{
|
|
return;
|
|
}
|
|
|
|
initial_perk = level.grief_perk_arrival_vehicles_ind == 0;
|
|
perk_arrival_vehicle = level.grief_perk_arrival_vehicles[level.grief_perk_arrival_vehicles_ind];
|
|
level.grief_perk_arrival_vehicles_ind++;
|
|
|
|
if (initial_perk)
|
|
{
|
|
playsoundatposition("zmb_perks_incoming_quad_front", (0, 0, 0));
|
|
playsoundatposition("zmb_perks_incoming_alarm", (-2198, 486, 327));
|
|
}
|
|
|
|
is_doubletap = 0;
|
|
is_sleight = 0;
|
|
is_revive = 0;
|
|
is_jugger = 0;
|
|
machine setclientfield("clientfield_perk_intro_fx", 1);
|
|
machine.fx = spawn("script_model", machine.origin);
|
|
machine.fx playloopsound("zmb_perks_incoming_loop", 6);
|
|
machine.fx thread perk_incoming_sound();
|
|
machine.fx.angles = machine.angles;
|
|
machine.fx setmodel("tag_origin");
|
|
machine.fx linkto(machine);
|
|
machine linkto(perk_arrival_vehicle, "tag_origin", (0, 0, 0), (0, 0, 0));
|
|
start_node = getvehiclenode("perk_arrival_path_" + machine.script_int, "targetname");
|
|
|
|
perk_arrival_vehicle perk_follow_path(start_node);
|
|
machine unlink();
|
|
offset = (0, 0, 0);
|
|
|
|
if (issubstr(machine.targetname, "doubletap"))
|
|
{
|
|
forward_dir = anglestoforward(machine.original_angles + vectorscale((0, -1, 0), 90.0));
|
|
offset = vectorscale(forward_dir * -1, 20);
|
|
is_doubletap = 1;
|
|
}
|
|
else if (issubstr(machine.targetname, "sleight"))
|
|
{
|
|
forward_dir = anglestoforward(machine.original_angles + vectorscale((0, -1, 0), 90.0));
|
|
offset = vectorscale(forward_dir * -1, 5);
|
|
is_sleight = 1;
|
|
}
|
|
else if (issubstr(machine.targetname, "revive"))
|
|
{
|
|
forward_dir = anglestoforward(machine.original_angles + vectorscale((0, -1, 0), 90.0));
|
|
offset = vectorscale(forward_dir * -1, 10);
|
|
trigger.blocker_model hide();
|
|
is_revive = 1;
|
|
}
|
|
else if (issubstr(machine.targetname, "jugger"))
|
|
{
|
|
forward_dir = anglestoforward(machine.original_angles + vectorscale((0, -1, 0), 90.0));
|
|
offset = vectorscale(forward_dir * -1, 10);
|
|
is_jugger = 1;
|
|
}
|
|
|
|
if (!is_revive)
|
|
trigger.blocker_model delete();
|
|
|
|
machine.original_pos = machine.original_pos + (offset[0], offset[1], 0);
|
|
machine.origin = machine.original_pos;
|
|
machine.angles = machine.original_angles;
|
|
|
|
if (is_revive)
|
|
{
|
|
level.quick_revive_final_pos = machine.origin;
|
|
level.quick_revive_final_angles = machine.angles;
|
|
}
|
|
|
|
machine.fx stoploopsound(0.5);
|
|
machine setclientfield("clientfield_perk_intro_fx", 0);
|
|
playsoundatposition("zmb_perks_incoming_land", machine.origin);
|
|
trigger trigger_on();
|
|
machine thread bring_perk_landing_damage();
|
|
machine.fx unlink();
|
|
machine.fx delete();
|
|
machine notify(machine.turn_on_notify);
|
|
level notify(machine.turn_on_notify);
|
|
machine vibrate(vectorscale((0, -1, 0), 100.0), 0.3, 0.4, 3);
|
|
machine playsound("zmb_perks_power_on");
|
|
machine maps\mp\zombies\_zm_perks::perk_fx(undefined, 1);
|
|
|
|
if (is_revive)
|
|
{
|
|
level.revive_machine_spawned = 1;
|
|
machine thread maps\mp\zombies\_zm_perks::perk_fx("revive_light");
|
|
}
|
|
else if (is_jugger)
|
|
machine thread maps\mp\zombies\_zm_perks::perk_fx("jugger_light");
|
|
else if (is_doubletap)
|
|
machine thread maps\mp\zombies\_zm_perks::perk_fx("doubletap_light");
|
|
else if (is_sleight)
|
|
machine thread maps\mp\zombies\_zm_perks::perk_fx("sleight_light");
|
|
} |