mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-10 07:08:06 -05:00
218 lines
6.4 KiB
Plaintext
218 lines
6.4 KiB
Plaintext
#include maps\mp\zm_highrise_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_highrise_sq_atd;
|
|
#include maps\mp\zm_highrise_sq_slb;
|
|
#include maps\mp\zm_highrise_sq_ssp;
|
|
#include maps\mp\zm_highrise_sq_pts;
|
|
#include maps\mp\gametypes_zm\_globallogic_score;
|
|
#include maps\mp\zombies\_zm_stats;
|
|
#include maps\mp\zombies\_zm_buildables;
|
|
#include maps\mp\zombies\_zm_unitrigger;
|
|
#include maps\mp\zombies\_zm_perks;
|
|
|
|
init()
|
|
{
|
|
if ( isdefined( level.gamedifficulty ) && level.gamedifficulty == 0 )
|
|
{
|
|
sq_easy_cleanup();
|
|
return;
|
|
}
|
|
|
|
flag_init( "sq_disabled" );
|
|
flag_init( "sq_branch_complete" );
|
|
flag_init( "sq_tower_active" );
|
|
flag_init( "sq_player_has_sniper" );
|
|
flag_init( "sq_player_has_ballistic" );
|
|
flag_init( "sq_ric_tower_complete" );
|
|
flag_init( "sq_max_tower_complete" );
|
|
flag_init( "sq_players_out_of_sync" );
|
|
flag_init( "sq_ball_picked_up" );
|
|
register_map_navcard( "navcard_held_zm_highrise", "navcard_held_zm_transit" );
|
|
ss_buttons = getentarray( "sq_ss_button", "targetname" );
|
|
|
|
for ( i = 0; i < ss_buttons.size; i++ )
|
|
{
|
|
ss_buttons[i] usetriggerrequirelookat();
|
|
ss_buttons[i] sethintstring( "" );
|
|
ss_buttons[i] setcursorhint( "HINT_NOICON" );
|
|
}
|
|
|
|
level thread mahjong_tiles_setup();
|
|
flag_init( "sq_nav_built" );
|
|
declare_sidequest( "sq", ::init_sidequest, ::sidequest_logic, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete );
|
|
maps\mp\zm_highrise_sq_atd::init();
|
|
maps\mp\zm_highrise_sq_slb::init();
|
|
declare_sidequest( "sq_1", ::init_sidequest_1, ::sidequest_logic_1, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete );
|
|
maps\mp\zm_highrise_sq_ssp::init_1();
|
|
maps\mp\zm_highrise_sq_pts::init_1();
|
|
declare_sidequest( "sq_2", ::init_sidequest_2, ::sidequest_logic_2, ::complete_sidequest, ::generic_stage_start, ::generic_stage_complete );
|
|
maps\mp\zm_highrise_sq_ssp::init_2();
|
|
maps\mp\zm_highrise_sq_pts::init_2();
|
|
level thread init_navcard();
|
|
level thread init_navcomputer();
|
|
precache_sidequest_assets();
|
|
}
|
|
|
|
sidequest_logic()
|
|
{
|
|
level thread watch_nav_computer_built();
|
|
level thread navcomputer_waitfor_navcard();
|
|
flag_wait( "power_on" );
|
|
level thread vo_richtofen_power_on();
|
|
flag_wait( "sq_nav_built" );
|
|
|
|
if ( !is_true( level.navcomputer_spawned ) )
|
|
update_sidequest_stats( "sq_highrise_started" );
|
|
|
|
stage_start( "sq", "atd" );
|
|
|
|
level waittill( "sq_atd_over" );
|
|
|
|
stage_start( "sq", "slb" );
|
|
|
|
level waittill( "sq_slb_over" );
|
|
|
|
if ( !is_true( level.richcompleted ) )
|
|
level thread sidequest_start( "sq_1" );
|
|
|
|
if ( !is_true( level.maxcompleted ) )
|
|
level thread sidequest_start( "sq_2" );
|
|
|
|
flag_wait( "sq_branch_complete" );
|
|
tower_punch_watcher();
|
|
|
|
if ( flag( "sq_ric_tower_complete" ) )
|
|
update_sidequest_stats( "sq_highrise_rich_complete" );
|
|
else if ( flag( "sq_max_tower_complete" ) )
|
|
update_sidequest_stats( "sq_highrise_maxis_complete" );
|
|
}
|
|
|
|
tower_punch_watcher()
|
|
{
|
|
level thread playtoweraudio();
|
|
a_leg_trigs = [];
|
|
|
|
foreach ( str_wind in level.a_wind_order )
|
|
a_leg_trigs[a_leg_trigs.size] = "sq_tower_" + str_wind;
|
|
|
|
level.n_cur_leg = 0;
|
|
level.sq_leg_punches = 0;
|
|
|
|
foreach ( str_leg in a_leg_trigs )
|
|
{
|
|
t_leg = getent( str_leg, "script_noteworthy" );
|
|
t_leg thread tower_punch_watch_leg( a_leg_trigs );
|
|
}
|
|
|
|
flag_wait( "sq_tower_active" );
|
|
|
|
if ( flag( "sq_ric_tower_complete" ) )
|
|
{
|
|
exploder_stop( 1002 );
|
|
exploder_stop( 903 );
|
|
exploder( 1003 );
|
|
}
|
|
else
|
|
{
|
|
exploder_stop( 902 );
|
|
exploder_stop( 1003 );
|
|
exploder( 903 );
|
|
}
|
|
|
|
wait 1;
|
|
level thread tower_in_sync_lightning();
|
|
wait 1;
|
|
level thread sq_give_all_perks();
|
|
}
|
|
|
|
tower_punch_watch_leg( a_leg_trigs )
|
|
{
|
|
level.legs_hit = [];
|
|
|
|
while ( !flag( "sq_tower_active" ) )
|
|
{
|
|
self waittill( "trigger", who );
|
|
|
|
if ( !isinarray( level.legs_hit, self.script_noteworthy ) && isplayer( who ) && ( who.current_melee_weapon == "tazer_knuckles_zm" || who.current_melee_weapon == "tazer_knuckles_upgraded_zm" ) )
|
|
{
|
|
level.legs_hit[level.legs_hit.size] = self.script_noteworthy;
|
|
self playsound( "zmb_sq_leg_powerup_" + level.legs_hit.size );
|
|
|
|
if ( level.legs_hit.size == 4 )
|
|
flag_set( "sq_tower_active" );
|
|
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
sq_give_all_perks()
|
|
{
|
|
vending_triggers = getentarray( "zombie_vending", "targetname" );
|
|
perks = [];
|
|
|
|
for ( i = 0; i < vending_triggers.size; i++ )
|
|
{
|
|
perk = vending_triggers[i].script_noteworthy;
|
|
|
|
if ( perk == "specialty_weapupgrade" )
|
|
continue;
|
|
|
|
perks[perks.size] = perk;
|
|
}
|
|
|
|
if ( flag( "sq_ric_tower_complete" ) )
|
|
{
|
|
v_fireball_start_loc = ( 1946, 608, 3338 );
|
|
n_fireball_exploder = 1001;
|
|
}
|
|
else
|
|
{
|
|
v_fireball_start_loc = ( 1068, -1362, 3340.5 );
|
|
n_fireball_exploder = 901;
|
|
}
|
|
|
|
level thread scripts\zm\replaced\_zm_sq::sq_complete_time_hud();
|
|
|
|
players = getplayers();
|
|
foreach ( player in players )
|
|
{
|
|
player thread sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder );
|
|
|
|
level waittill( "sq_fireball_hit_player" );
|
|
}
|
|
}
|
|
|
|
sq_give_player_perks( perks, v_fireball_start_loc, n_fireball_exploder )
|
|
{
|
|
self endon("disconnect");
|
|
|
|
exploder( n_fireball_exploder );
|
|
m_fireball = spawn( "script_model", v_fireball_start_loc );
|
|
m_fireball setmodel( "tag_origin" );
|
|
playfxontag( level._effect["sidequest_dragon_fireball_max"], m_fireball, "tag_origin" );
|
|
|
|
do
|
|
{
|
|
wait_network_frame();
|
|
v_to_player = vectornormalize( self gettagorigin( "J_SpineLower" ) - m_fireball.origin );
|
|
v_move_spot = m_fireball.origin + v_to_player * 48;
|
|
m_fireball.origin = v_move_spot;
|
|
}
|
|
while ( distancesquared( m_fireball.origin, self gettagorigin( "J_SpineLower" ) ) > 2304 );
|
|
|
|
m_fireball.origin = self gettagorigin( "J_SpineLower" );
|
|
m_fireball linkto( self, "J_SpineLower" );
|
|
wait 1.5;
|
|
playfx( level._effect["sidequest_flash"], m_fireball.origin );
|
|
m_fireball delete();
|
|
level notify( "sq_fireball_hit_player" );
|
|
|
|
if ( is_player_valid( self ) )
|
|
{
|
|
self thread scripts\zm\replaced\_zm_sq::sq_give_player_all_perks();
|
|
}
|
|
} |