1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00
BO2-Reimagined/scripts/zm/replaced/zm_highrise_sq_atd.gsc
2023-12-16 20:01:17 -08:00

119 lines
2.9 KiB
Plaintext

#include maps\mp\zm_highrise_sq_atd;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_sidequests;
#include maps\mp\zm_highrise_sq;
init()
{
flag_init("sq_atd_elevator0");
flag_init("sq_atd_elevator1");
flag_init("sq_atd_elevator2");
flag_init("sq_atd_elevator3");
flag_init("sq_atd_elevator_activated");
flag_init("sq_atd_drg_puzzle_1st_error");
flag_init("sq_atd_drg_puzzle_complete");
declare_sidequest_stage("sq", "atd", ::init_stage, ::stage_logic, ::exit_stage_1);
sq_atd_dragon_icon_setup();
}
stage_logic()
{
sq_atd_elevators();
sq_atd_drg_puzzle();
stage_completed("sq", level._cur_stage_name);
}
sq_atd_elevators()
{
a_elevators = array("elevator_bldg1b_trigger", "elevator_bldg1d_trigger", "elevator_bldg3b_trigger", "elevator_bldg3c_trigger");
a_elevator_flags = array("sq_atd_elevator0", "sq_atd_elevator1", "sq_atd_elevator2", "sq_atd_elevator3");
for (i = 0; i < a_elevators.size; i++)
{
trig_elevator = getent(a_elevators[i], "targetname");
trig_elevator thread sq_atd_watch_elevator(a_elevator_flags[i]);
}
while (!flag("sq_atd_elevator0") || !flag("sq_atd_elevator1") || !flag("sq_atd_elevator2") || !flag("sq_atd_elevator3"))
{
flag_wait_any_array(a_elevator_flags);
wait 0.5;
}
flag_set("sq_atd_elevator_activated");
vo_richtofen_atd_elevators();
level thread vo_maxis_atd_elevators();
}
sq_atd_watch_elevator(str_flag)
{
level endon("sq_atd_elevator_activated");
while (true)
{
self waittill("trigger", e_who);
if (!isplayer(e_who))
{
wait 0.05;
continue;
}
a_dragon_icons = getentarray("elevator_dragon_icon", "targetname");
foreach (m_icon in a_dragon_icons)
{
if (issubstr(self.targetname, m_icon.script_noteworthy))
{
v_off_pos = m_icon.m_lit_icon.origin;
m_icon.m_lit_icon unlink();
m_icon unlink();
m_icon.m_lit_icon.origin = m_icon.origin;
m_icon.origin = v_off_pos;
m_icon.m_lit_icon linkto(m_icon.m_elevator);
m_icon linkto(m_icon.m_elevator);
m_icon playsound("zmb_sq_symbol_light");
break;
}
}
flag_set(str_flag);
return;
}
}
sq_atd_drg_puzzle()
{
level.sq_atd_cur_drg = 0;
a_puzzle_trigs = getentarray("trig_atd_drg_puzzle", "targetname");
a_puzzle_trigs = array_randomize(a_puzzle_trigs);
for (i = 0; i < a_puzzle_trigs.size; i++)
a_puzzle_trigs[i] thread drg_puzzle_trig_think(i);
while (level.sq_atd_cur_drg < 4)
wait 1;
flag_set("sq_atd_drg_puzzle_complete");
level thread vo_maxis_atd_order_complete();
}
drg_puzzle_trig_think(n_order_id)
{
self.drg_active = 0;
m_unlit = getent(self.target, "targetname");
m_lit = m_unlit.lit_icon;
v_top = m_unlit.origin;
v_hidden = m_lit.origin;
self waittill("trigger", e_who);
m_lit.origin = v_top;
m_unlit.origin = v_hidden;
m_lit playsound("zmb_sq_symbol_light");
self.drg_active = 1;
level thread vo_richtofen_atd_order(level.sq_atd_cur_drg);
level.sq_atd_cur_drg++;
}