mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 07:08:06 -05:00
143 lines
3.8 KiB
Plaintext
143 lines
3.8 KiB
Plaintext
#include maps\mp\zm_buried_sq_ip;
|
|
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\zombies\_zm_utility;
|
|
#include maps\mp\zombies\_zm_sidequests;
|
|
#include maps\mp\zm_buried_sq;
|
|
#include maps\mp\zombies\_zm_zonemgr;
|
|
|
|
init()
|
|
{
|
|
flag_init( "sq_ip_puzzle_complete" );
|
|
level.sq_bp_buttons = [];
|
|
s_lightboard = getstruct( "zm_sq_lightboard", "targetname" );
|
|
s_lightboard sq_bp_spawn_board();
|
|
declare_sidequest_stage( "sq", "ip", ::init_stage, ::stage_logic, ::exit_stage );
|
|
}
|
|
|
|
stage_logic()
|
|
{
|
|
if ( flag( "sq_is_max_tower_built" ) )
|
|
{
|
|
a_button_structs = getstructarray( "sq_bp_button", "targetname" );
|
|
array_thread( a_button_structs, ::sq_bp_spawn_trigger );
|
|
m_lightboard = getent( "sq_bp_board", "targetname" );
|
|
m_lightboard setclientfield( "buried_sq_bp_set_lightboard", 1 );
|
|
|
|
while ( !flag( "sq_ip_puzzle_complete" ) )
|
|
{
|
|
sq_bp_start_puzzle_lights();
|
|
sq_bp_delete_green_lights();
|
|
wait_network_frame();
|
|
wait_network_frame();
|
|
wait_network_frame();
|
|
wait_network_frame();
|
|
wait_network_frame();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sq_ml_spawn_levers();
|
|
a_levers = getentarray( "sq_ml_lever", "targetname" );
|
|
array_thread( a_levers, ::sq_ml_spawn_trigger );
|
|
level thread sq_ml_puzzle_logic();
|
|
flag_wait( "sq_ip_puzzle_complete" );
|
|
}
|
|
|
|
wait_network_frame();
|
|
stage_completed( "sq", level._cur_stage_name );
|
|
}
|
|
|
|
sq_bp_start_puzzle_lights()
|
|
{
|
|
level endon( "sq_bp_wrong_button" );
|
|
level endon( "sq_bp_timeout" );
|
|
a_button_structs = getstructarray( "sq_bp_button", "targetname" );
|
|
a_tags = [];
|
|
|
|
foreach ( m_button in a_button_structs )
|
|
a_tags[a_tags.size] = m_button.script_string;
|
|
|
|
a_tags = array_randomize( a_tags );
|
|
m_lightboard = getent( "sq_bp_board", "targetname" );
|
|
|
|
foreach ( str_tag in a_tags )
|
|
{
|
|
level waittill( "sq_bp_correct_button" );
|
|
}
|
|
|
|
flag_set( "sq_ip_puzzle_complete" );
|
|
a_button_structs = getstructarray( "sq_bp_button", "targetname" );
|
|
|
|
foreach ( s_button in a_button_structs )
|
|
{
|
|
if ( isdefined( s_button.trig ) )
|
|
s_button.trig delete();
|
|
}
|
|
}
|
|
|
|
sq_bp_spawn_trigger()
|
|
{
|
|
level endon( "sq_ip_puzzle_complete" );
|
|
self.trig = spawn( "trigger_radius_use", self.origin, 0, 16, 16 );
|
|
self.trig setcursorhint( "HINT_NOICON" );
|
|
self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" );
|
|
self.trig triggerignoreteam();
|
|
self.trig usetriggerrequirelookat();
|
|
|
|
while ( true )
|
|
{
|
|
self.trig waittill( "trigger" );
|
|
|
|
self.trig sethintstring( "" );
|
|
level thread sq_bp_button_pressed( self.script_string, self.trig );
|
|
wait 1;
|
|
self.trig sethintstring( &"ZM_BURIED_SQ_BUT_U" );
|
|
}
|
|
}
|
|
|
|
sq_bp_button_pressed( str_tag, trig )
|
|
{
|
|
trig playsound( "zmb_sq_bell_yes" );
|
|
|
|
if ( is_true( trig.triggered ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
trig.triggered = 1;
|
|
sq_bp_light_on( str_tag, "green" );
|
|
level notify( "sq_bp_correct_button" );
|
|
}
|
|
|
|
sq_ml_puzzle_logic()
|
|
{
|
|
a_levers = getentarray( "sq_ml_lever", "targetname" );
|
|
level.sq_ml_curr_lever = 0;
|
|
a_levers = array_randomize( a_levers );
|
|
|
|
for ( i = 0; i < a_levers.size; i++ )
|
|
a_levers[i].n_lever_order = i;
|
|
|
|
while ( true )
|
|
{
|
|
level.sq_ml_curr_lever = 0;
|
|
sq_ml_puzzle_wait_for_levers();
|
|
n_correct = 0;
|
|
|
|
foreach ( m_lever in a_levers )
|
|
{
|
|
playfxontag( level._effect["sq_spark"], m_lever, "tag_origin" );
|
|
n_correct++;
|
|
m_lever playsound( "zmb_sq_maze_correct_spark" );
|
|
}
|
|
|
|
if ( n_correct == a_levers.size )
|
|
flag_set( "sq_ip_puzzle_complete" );
|
|
|
|
level waittill( "zm_buried_maze_changed" );
|
|
|
|
level notify( "sq_ml_reset_levers" );
|
|
wait 1;
|
|
}
|
|
} |