#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; #include maps\mp\zm_highrise_sq_atd; 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++; }