mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
320 lines
8.6 KiB
Plaintext
320 lines
8.6 KiB
Plaintext
#include maps\mp\zm_transit_sq;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include maps\mp\zombies\_zm_sidequests;
|
|
#include maps\mp\zm_transit_utility;
|
|
#include maps\mp\zombies\_zm_spawner;
|
|
#include maps\mp\gametypes_zm\_globallogic_score;
|
|
#include maps\mp\zombies\_zm_stats;
|
|
#include maps\mp\zombies\_zm_zonemgr;
|
|
#include maps\mp\zombies\_zm_weapons;
|
|
#include maps\mp\zombies\_zm_powerups;
|
|
#include maps\mp\zombies\_zm_buildables;
|
|
#include maps\mp\zombies\_zm_unitrigger;
|
|
|
|
maxis_sidequest_a()
|
|
{
|
|
level endon("power_on");
|
|
level.sq_progress["maxis"]["A_turbine_1"] = undefined;
|
|
level.sq_progress["maxis"]["A_turbine_2"] = undefined;
|
|
|
|
if (!(isdefined(level.sq_progress["maxis"]["B_complete"]) && level.sq_progress["maxis"]["B_complete"]))
|
|
level.sq_progress["maxis"]["A_complete"] = 0;
|
|
|
|
while (true)
|
|
{
|
|
players = get_players();
|
|
|
|
foreach (player in players)
|
|
{
|
|
if (isdefined(player.buildableturbine) && player.buildableturbine istouching(level.sq_volume))
|
|
{
|
|
level notify("maxi_terminal_vox");
|
|
player.buildableturbine thread turbine_watch_cleanup();
|
|
|
|
if (!isdefined(level.sq_progress["maxis"]["A_turbine_1"]))
|
|
{
|
|
level.sq_progress["maxis"]["A_turbine_1"] = player.buildableturbine;
|
|
level.sq_progress["maxis"]["A_turbine_1"] thread turbine_power_watcher(player);
|
|
continue;
|
|
}
|
|
|
|
if (!isdefined(level.sq_progress["maxis"]["A_turbine_2"]))
|
|
{
|
|
level.sq_progress["maxis"]["A_turbine_2"] = player.buildableturbine;
|
|
level.sq_progress["maxis"]["A_turbine_2"] thread turbine_power_watcher(player);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (get_how_many_progressed_from("maxis", "A_turbine_1", "A_turbine_2") >= 1)
|
|
{
|
|
if (avogadro_at_tower())
|
|
level thread maxissay("vox_maxi_turbine_2tower_avo_0", (7737, -416, -142));
|
|
else
|
|
level thread maxissay("vox_maxi_turbine_2tower_0", (7737, -416, -142));
|
|
|
|
update_sidequest_stats("sq_transit_maxis_stage_2");
|
|
level thread maxis_sidequest_complete_check("A_complete");
|
|
}
|
|
|
|
level waittill_either("turbine_deployed", "equip_turbine_zm_cleaned_up");
|
|
|
|
if (!level.sq_progress["maxis"]["B_complete"])
|
|
level.sq_progress["maxis"]["A_complete"] = 0;
|
|
else
|
|
break;
|
|
}
|
|
}
|
|
|
|
turbine_power_watcher(player)
|
|
{
|
|
level endon("end_avogadro_turbines");
|
|
self endon("death");
|
|
self.powered = undefined;
|
|
turbine_failed_vo = undefined;
|
|
|
|
while (isdefined(self))
|
|
{
|
|
wait 0.05;
|
|
|
|
if (is_true(player.turbine_power_is_on) && !is_true(player.turbine_emped))
|
|
{
|
|
self.powered = 1;
|
|
}
|
|
else if (is_true(player.turbine_emped) || !is_true(player.turbine_power_is_on))
|
|
{
|
|
wait 2;
|
|
self.powered = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
maxis_sidequest_b()
|
|
{
|
|
level endon("power_on");
|
|
|
|
while (true)
|
|
{
|
|
level waittill("stun_avogadro", avogadro);
|
|
|
|
if ((isdefined(level.sq_progress["maxis"]["A_turbine_1"]) && is_true(level.sq_progress["maxis"]["A_turbine_1"].powered)) || (isdefined(level.sq_progress["maxis"]["A_turbine_2"]) && is_true(level.sq_progress["maxis"]["A_turbine_2"].powered)))
|
|
{
|
|
if (isdefined(avogadro) && avogadro istouching(level.sq_volume))
|
|
{
|
|
level notify("end_avogadro_turbines");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
level notify("maxis_stage_b");
|
|
level thread maxissay("vox_maxi_avogadro_emp_0", (7737, -416, -142));
|
|
update_sidequest_stats("sq_transit_maxis_stage_3");
|
|
player = get_players();
|
|
player[0] setclientfield("sq_tower_sparks", 1);
|
|
player[0] setclientfield("screecher_maxis_lights", 1);
|
|
level thread maxis_sidequest_complete_check("B_complete");
|
|
}
|
|
|
|
maxis_sidequest_c()
|
|
{
|
|
flag_wait("power_on");
|
|
flag_waitopen("power_on");
|
|
level endon("power_on");
|
|
level.sq_progress["maxis"]["C_screecher_dark"] = 0;
|
|
|
|
for (i = 0; i < 8; i++)
|
|
{
|
|
level.sq_progress["maxis"]["C_screecher_" + i] = undefined;
|
|
}
|
|
|
|
level.sq_progress["maxis"]["C_complete"] = 0;
|
|
turbine_1_talked = 0;
|
|
turbine_2_talked = 0;
|
|
screech_zones = getstructarray("screecher_escape", "targetname");
|
|
|
|
while (true)
|
|
{
|
|
players = get_players();
|
|
|
|
foreach (player in players)
|
|
{
|
|
if (isdefined(player.buildableturbine))
|
|
{
|
|
for (x = 0; x < screech_zones.size; x++)
|
|
{
|
|
zone = screech_zones[x];
|
|
|
|
if (distancesquared(player.buildableturbine.origin, zone.origin) < zone.radius * zone.radius)
|
|
{
|
|
player.buildableturbine thread turbine_watch_cleanup();
|
|
|
|
zone_used = 0;
|
|
|
|
for (i = 0; i < 8; i++)
|
|
{
|
|
if (isdefined(level.sq_progress["maxis"]["C_screecher_" + i]) && zone == level.sq_progress["maxis"]["C_screecher_" + i])
|
|
{
|
|
zone_used = 1;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!zone_used)
|
|
{
|
|
if (level.sq_progress["maxis"]["B_complete"] && level.sq_progress["maxis"]["A_complete"])
|
|
{
|
|
if (!turbine_1_talked)
|
|
{
|
|
turbine_1_talked = 1;
|
|
level thread maxissay("vox_maxi_turbine_1light_0", zone.origin);
|
|
}
|
|
|
|
level thread set_screecher_zone_origin_and_notify(zone.script_noteworthy, "sq_max");
|
|
level.sq_progress["maxis"]["C_screecher_" + level.sq_progress["maxis"]["C_screecher_dark"]] = zone;
|
|
level.sq_progress["maxis"]["C_screecher_dark"]++;
|
|
|
|
if (level.sq_progress["maxis"]["C_screecher_dark"] >= 8)
|
|
{
|
|
if (!turbine_2_talked)
|
|
{
|
|
turbine_2_talked = 1;
|
|
level thread maxissay("vox_maxi_turbine_2light_on_0", zone.origin);
|
|
}
|
|
|
|
player = get_players();
|
|
player[0] setclientfield("screecher_maxis_lights", 0);
|
|
level maxis_sidequest_complete_check("C_complete");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
level waittill_either("turbine_deployed", "equip_turbine_zm_cleaned_up");
|
|
level.sq_progress["maxis"]["C_complete"] = 0;
|
|
}
|
|
}
|
|
|
|
maxis_sidequest_complete()
|
|
{
|
|
update_sidequest_stats("sq_transit_maxis_complete");
|
|
level sidequest_complete("maxis");
|
|
level.sq_progress["maxis"]["FINISHED"] = 1;
|
|
level.maxcompleted = 1;
|
|
clientnotify("sq_kfx");
|
|
|
|
if (isdefined(level.richcompleted) && level.richcompleted)
|
|
level clientnotify("sq_krt");
|
|
|
|
wait 1;
|
|
clientnotify("sqm");
|
|
level thread droppowerup("maxis");
|
|
}
|
|
|
|
richtofen_sidequest_c()
|
|
{
|
|
level endon("power_off");
|
|
level endon("richtofen_sq_complete");
|
|
screech_zones = getstructarray("screecher_escape", "targetname");
|
|
level thread screecher_light_hint();
|
|
level.sq_richtofen_c_screecher_lights = [];
|
|
|
|
while (true)
|
|
{
|
|
level waittill("safety_light_power_off", screecher_zone);
|
|
|
|
if (!level.sq_progress["rich"]["A_complete"] || !level.sq_progress["rich"]["B_complete"])
|
|
{
|
|
level thread richtofensay("vox_zmba_sidequest_emp_nomag_0");
|
|
continue;
|
|
}
|
|
|
|
if (isinarray(level.sq_richtofen_c_screecher_lights, screecher_zone.target.script_noteworthy))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
level thread set_screecher_zone_origin_and_notify(screecher_zone.target.script_noteworthy, "sq_rich");
|
|
level.sq_richtofen_c_screecher_lights[level.sq_richtofen_c_screecher_lights.size] = screecher_zone.target.script_noteworthy;
|
|
level.sq_progress["rich"]["C_screecher_light"]++;
|
|
|
|
if (level.sq_progress["rich"]["C_screecher_light"] >= 8)
|
|
break;
|
|
}
|
|
|
|
level thread richtofensay("vox_zmba_sidequest_4emp_mag_0");
|
|
level notify("richtofen_c_complete");
|
|
player = get_players();
|
|
player[0] setclientfield("screecher_sq_lights", 0);
|
|
level thread richtofen_sidequest_complete_check("C_complete");
|
|
}
|
|
|
|
richtofen_sidequest_complete()
|
|
{
|
|
update_sidequest_stats("sq_transit_rich_complete");
|
|
level thread sidequest_complete("richtofen");
|
|
level.sq_progress["rich"]["FINISHED"] = 1;
|
|
level.richcompleted = 1;
|
|
clientnotify("sq_kfx");
|
|
|
|
if (isdefined(level.maxcompleted) && level.maxcompleted)
|
|
level clientnotify("sq_kmt");
|
|
|
|
wait 1;
|
|
clientnotify("sqr");
|
|
level thread droppowerup("richtofen");
|
|
}
|
|
|
|
set_screecher_zone_origin_and_notify(script_noteworthy, notify_str)
|
|
{
|
|
level set_screecher_zone_origin(script_noteworthy);
|
|
wait 1;
|
|
clientnotify(notify_str);
|
|
}
|
|
|
|
droppowerup(story)
|
|
{
|
|
level thread scripts\zm\reimagined\_zm_sq::sq_complete_time_hud();
|
|
|
|
level thread scripts\zm\reimagined\_zm_sq::sq_play_song();
|
|
|
|
players = get_players();
|
|
|
|
foreach (player in players)
|
|
{
|
|
if (is_player_valid(player))
|
|
{
|
|
player thread scripts\zm\reimagined\_zm_sq::sq_give_player_all_perks();
|
|
}
|
|
}
|
|
|
|
center_struct = getstruct("sq_common_tower_fx", "targetname");
|
|
trace = bullettrace(center_struct.origin, center_struct.origin - vectorscale((0, 0, 1), 999999.0), 0, undefined);
|
|
poweruporigin = trace["position"] + vectorscale((0, 0, 1), 25.0);
|
|
mintime = 120;
|
|
maxtime = 360;
|
|
|
|
while (true)
|
|
{
|
|
trail = spawn("script_model", center_struct.origin);
|
|
trail setmodel("tag_origin");
|
|
wait 0.5;
|
|
playfxontag(level._effect[story + "_sparks"], trail, "tag_origin");
|
|
trail moveto(poweruporigin, 10);
|
|
|
|
trail waittill("movedone");
|
|
|
|
level thread droppoweruptemptation(story, poweruporigin);
|
|
wait 1;
|
|
trail delete();
|
|
wait(randomintrange(mintime, maxtime));
|
|
}
|
|
} |