1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-19 03:28:38 -05:00

Buried: Maxis Quest changes

This commit is contained in:
Jbleezy
2023-04-04 04:07:11 -07:00
parent d23c41f776
commit 2def399967
8 changed files with 400 additions and 0 deletions

View File

@ -570,6 +570,12 @@
* Players can no longer get into the corner next to Juggernog * Players can no longer get into the corner next to Juggernog
* Removed buildable table hint icons * Removed buildable table hint icons
* Added buildable table hint strings on buildable purchase * Added buildable table hint strings on buildable purchase
* Quest: all 5 signs must be meleed for wisp to spawn
* Quest: no longer need to activate the Time Bomb to be able to spawn the 2nd wisp
* Quest: no longer need to activate the lever in the Mansion before activating the bells
* Quest: bells can be activated in any order
* Quest: changed number of targets that need to be hit to 20 multiplied by the amount of player
* Quest: completion button always activatable after completing the quest
#### Borough #### Borough
* Tunnels and bank area disabled * Tunnels and bank area disabled

View File

@ -2820,6 +2820,10 @@ onuseplantobject_mtower( player )
self maps\mp\zombies\_zm_buildables::buildablestub_finish_build( player ); self maps\mp\zombies\_zm_buildables::buildablestub_finish_build( player );
player playsound( "zmb_buildable_complete" ); player playsound( "zmb_buildable_complete" );
slot = self.buildablestruct.buildable_slot;
piece = player player_get_buildable_piece( slot );
player player_destroy_piece( piece );
level thread unregister_tower_unitriggers(); level thread unregister_tower_unitriggers();
} }
@ -2835,6 +2839,10 @@ onuseplantobject_rtower( player )
self maps\mp\zombies\_zm_buildables::buildablestub_finish_build( player ); self maps\mp\zombies\_zm_buildables::buildablestub_finish_build( player );
player playsound( "zmb_buildable_complete" ); player playsound( "zmb_buildable_complete" );
slot = self.buildablestruct.buildable_slot;
piece = player player_get_buildable_piece( slot );
player player_destroy_piece( piece );
level thread unregister_tower_unitriggers(); level thread unregister_tower_unitriggers();
} }

View File

@ -0,0 +1,91 @@
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_sidequests;
#include maps\mp\_visionset_mgr;
#include maps\mp\zm_buried_sq_bt;
#include maps\mp\zm_buried_sq_mta;
#include maps\mp\zm_buried_sq_gl;
#include maps\mp\zm_buried_sq_ftl;
#include maps\mp\zm_buried_sq_ll;
#include maps\mp\zm_buried_sq_ts;
#include maps\mp\zm_buried_sq_ctw;
#include maps\mp\zm_buried_sq_tpo;
#include maps\mp\zm_buried_sq_ip;
#include maps\mp\zm_buried_sq_ows;
#include maps\mp\gametypes_zm\_globallogic_score;
#include maps\mp\zombies\_zm_stats;
#include maps\mp\zombies\_zm_buildables;
#include maps\mp\zombies\_zm_audio;
#include maps\mp\zombies\_zm_perks;
#include maps\mp\zombies\_zm_unitrigger;
#include maps\mp\zm_buried_amb;
#include maps\mp\zombies\_zm_powerups;
#include maps\mp\zombies\_zm_spawner;
#include maps\mp\zombies\_zm_score;
#include maps\mp\zm_buried_sq;
sq_metagame()
{
level endon( "sq_metagame_player_connected" );
if ( !is_true( level.buried_sq_maxis_complete ) && !is_true( level.buried_sq_richtofen_complete ) )
level waittill( "buried_sidequest_achieved" );
level thread sq_metagame_turn_off_watcher();
m_endgame_machine = getstruct( "sq_endgame_machine", "targetname" );
a_stat = [];
a_stat[0] = "sq_transit_last_completed";
a_stat[1] = "sq_highrise_last_completed";
a_stat[2] = "sq_buried_last_completed";
level.n_metagame_machine_lights_on = 0;
flag_wait( "start_zombie_round_logic" );
sq_metagame_clear_lights();
players = get_players();
player_count = players.size;
for ( n_player = 0; n_player < player_count; n_player++ )
{
for ( n_stat = 0; n_stat < a_stat.size; n_stat++ )
{
if ( flag( "sq_is_max_tower_built" ) )
{
m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_orange" );
}
else
{
m_endgame_machine sq_metagame_machine_set_light( n_player, n_stat, "sq_bulb_blue" );
}
level setclientfield( "buried_sq_egm_bulb_" + n_stat, 1 );
}
}
m_endgame_machine.activate_trig = spawn( "trigger_radius", m_endgame_machine.origin, 0, 128, 72 );
m_endgame_machine.activate_trig waittill( "trigger" );
m_endgame_machine.activate_trig delete();
m_endgame_machine.activate_trig = undefined;
level setclientfield( "buried_sq_egm_animate", 1 );
m_endgame_machine.endgame_trig = spawn( "trigger_radius_use", m_endgame_machine.origin, 0, 16, 16 );
m_endgame_machine.endgame_trig setcursorhint( "HINT_NOICON" );
m_endgame_machine.endgame_trig sethintstring( &"ZM_BURIED_SQ_EGM_BUT" );
m_endgame_machine.endgame_trig triggerignoreteam();
m_endgame_machine.endgame_trig usetriggerrequirelookat();
m_endgame_machine.endgame_trig waittill( "trigger" );
m_endgame_machine.endgame_trig delete();
m_endgame_machine.endgame_trig = undefined;
level thread sq_metagame_clear_tower_pieces();
playsoundatposition( "zmb_endgame_mach_button", m_endgame_machine.origin );
players = get_players();
sq_metagame_clear_lights();
if ( flag( "sq_is_max_tower_built" ) )
level notify( "end_game_reward_starts_maxis" );
else
level notify( "end_game_reward_starts_richtofen" );
}

View File

@ -0,0 +1,111 @@
#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;
#include maps\mp\zm_buried_sq_ip;
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" );
}

View File

@ -0,0 +1,98 @@
#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\zm_buried_sq_ows;
ows_targets_start()
{
n_cur_second = 0;
flag_clear( "sq_ows_target_missed" );
level thread sndsidequestowsmusic();
a_sign_spots = getstructarray( "otw_target_spot", "script_noteworthy" );
level.targets_hit = 0;
while ( n_cur_second < 40 )
{
a_spawn_spots = ows_targets_get_cur_spots( n_cur_second );
if ( isdefined( a_spawn_spots ) && a_spawn_spots.size > 0 )
ows_targets_spawn( a_spawn_spots );
wait 1;
n_cur_second++;
}
players = get_players();
if ( level.targets_hit < ( 20 * players.size ) )
{
flag_set( "sq_ows_target_missed" );
}
if ( !flag( "sq_ows_target_missed" ) )
{
flag_set( "sq_ows_success" );
playsoundatposition( "zmb_sq_target_success", ( 0, 0, 0 ) );
}
else
playsoundatposition( "zmb_sq_target_fail", ( 0, 0, 0 ) );
level notify( "sndEndOWSMusic" );
}
ows_targets_spawn( a_spawn_spots )
{
i = 0;
foreach ( s_spot in a_spawn_spots )
{
m_target = spawn( "script_model", s_spot.origin );
m_target.angles = s_spot.angles;
m_target setmodel( "p6_zm_bu_target" );
m_target ghost();
wait_network_frame();
m_target show();
playfxontag( level._effect["sq_spawn"], m_target, "tag_origin" );
m_target playsound( "zmb_sq_target_spawn" );
if ( isdefined( s_spot.target ) )
m_target thread ows_target_move( s_spot.target );
m_target thread ows_target_think();
m_target thread sndhit();
m_target thread sndtime();
i++;
}
}
ows_target_think()
{
self setcandamage( 1 );
self thread ows_target_delete_timer();
msg = self waittill_any_return( "ows_target_timeout", "damage" );
if ( msg == "damage" )
{
level.targets_hit++;
}
if ( isdefined( self.m_linker ) )
{
self unlink();
self.m_linker delete();
}
self rotatepitch( -90, 0.15, 0.05, 0.05 );
self waittill( "rotatedone" );
self delete();
}
ows_target_delete_timer()
{
self endon( "death" );
wait 4;
self notify( "ows_target_timeout" );
}

View File

@ -0,0 +1,32 @@
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_sidequests;
#include maps\mp\_visionset_mgr;
#include maps\mp\gametypes_zm\_hud_util;
#include maps\mp\zombies\_zm_buildables;
#include maps\mp\zombies\_zm;
#include maps\mp\zm_buried_sq;
#include maps\mp\zombies\_zm_weap_time_bomb;
#include maps\mp\zombies\_zm_unitrigger;
#include maps\mp\zm_buried_buildables;
#include maps\mp\zm_buried_sq_tpo;
stage_logic_maxis()
{
flag_clear( "sq_wisp_success" );
flag_clear( "sq_wisp_failed" );
while ( !flag( "sq_wisp_success" ) )
{
stage_start( "sq", "ts" );
level waittill( "sq_ts_over" );
stage_start( "sq", "ctw" );
level waittill( "sq_ctw_over" );
}
level._cur_stage_name = "tpo";
}

View File

@ -0,0 +1,44 @@
#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_ts;
ts_sign_damage_watch()
{
level endon( "sq_sign_damaged" );
self ts_sign_deactivate();
while ( true )
{
self waittill( "damage", n_damage, e_attacker, v_direction, v_point, str_type, str_tag, str_model, str_part, str_weapon );
if ( ts_is_bowie_knife( str_weapon ) || ts_is_galvaknuckles( str_weapon ) )
{
self thread ts_sign_activate();
ts_sign_check_all_activated( e_attacker, self );
}
}
}
ts_sign_check_all_activated( e_attacker, m_last_touched )
{
a_signs = getentarray( "sq_tunnel_sign", "targetname" );
a_signs_active = [];
foreach ( m_sign in a_signs )
{
if ( m_sign.ts_sign_activated )
{
a_signs_active[a_signs_active.size] = m_sign;
}
}
if ( a_signs_active.size == a_signs.size )
{
level.m_sq_start_sign = m_last_touched;
level.e_sq_sign_attacker = e_attacker;
level notify( "sq_sign_damaged" );
}
}

View File

@ -6,7 +6,12 @@
#include scripts\zm\replaced\zm_buried_gamemodes; #include scripts\zm\replaced\zm_buried_gamemodes;
#include scripts\zm\replaced\zm_buried_ffotd; #include scripts\zm\replaced\zm_buried_ffotd;
#include scripts\zm\replaced\zm_buried_fountain; #include scripts\zm\replaced\zm_buried_fountain;
#include scripts\zm\replaced\zm_buried_sq;
#include scripts\zm\replaced\zm_buried_sq_bt; #include scripts\zm\replaced\zm_buried_sq_bt;
#include scripts\zm\replaced\zm_buried_sq_ts;
#include scripts\zm\replaced\zm_buried_sq_tpo;
#include scripts\zm\replaced\zm_buried_sq_ip;
#include scripts\zm\replaced\zm_buried_sq_ows;
#include scripts\zm\replaced\_zm_ai_sloth; #include scripts\zm\replaced\_zm_ai_sloth;
#include scripts\zm\replaced\_zm_buildables_pooled; #include scripts\zm\replaced\_zm_buildables_pooled;
#include scripts\zm\replaced\_zm_equip_subwoofer; #include scripts\zm\replaced\_zm_equip_subwoofer;
@ -27,8 +32,13 @@ main()
replaceFunc(maps\mp\zm_buried_gamemodes::buildbuildable, scripts\zm\replaced\zm_buried_gamemodes::buildbuildable); replaceFunc(maps\mp\zm_buried_gamemodes::buildbuildable, scripts\zm\replaced\zm_buried_gamemodes::buildbuildable);
replaceFunc(maps\mp\zm_buried_ffotd::spawned_life_triggers, scripts\zm\replaced\zm_buried_ffotd::spawned_life_triggers); replaceFunc(maps\mp\zm_buried_ffotd::spawned_life_triggers, scripts\zm\replaced\zm_buried_ffotd::spawned_life_triggers);
replaceFunc(maps\mp\zm_buried_fountain::transport_player_to_start_zone, scripts\zm\replaced\zm_buried_fountain::transport_player_to_start_zone); replaceFunc(maps\mp\zm_buried_fountain::transport_player_to_start_zone, scripts\zm\replaced\zm_buried_fountain::transport_player_to_start_zone);
replaceFunc(maps\mp\zm_buried_sq::sq_metagame, scripts\zm\replaced\zm_buried_sq::sq_metagame);
replaceFunc(maps\mp\zm_buried_sq_bt::stage_vo_watch_gallows, scripts\zm\replaced\zm_buried_sq_bt::stage_vo_watch_gallows); replaceFunc(maps\mp\zm_buried_sq_bt::stage_vo_watch_gallows, scripts\zm\replaced\zm_buried_sq_bt::stage_vo_watch_gallows);
replaceFunc(maps\mp\zm_buried_sq_bt::stage_vo_watch_guillotine, scripts\zm\replaced\zm_buried_sq_bt::stage_vo_watch_guillotine); replaceFunc(maps\mp\zm_buried_sq_bt::stage_vo_watch_guillotine, scripts\zm\replaced\zm_buried_sq_bt::stage_vo_watch_guillotine);
replaceFunc(maps\mp\zm_buried_sq_ts::ts_sign_damage_watch, scripts\zm\replaced\zm_buried_sq_ts::ts_sign_damage_watch);
replaceFunc(maps\mp\zm_buried_sq_tpo::stage_logic_maxis, scripts\zm\replaced\zm_buried_sq_tpo::stage_logic_maxis);
replaceFunc(maps\mp\zm_buried_sq_ip::init, scripts\zm\replaced\zm_buried_sq_ip::init);
replaceFunc(maps\mp\zm_buried_sq_ows::ows_targets_start, scripts\zm\replaced\zm_buried_sq_ows::ows_targets_start);
replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_init_start_funcs, scripts\zm\replaced\_zm_ai_sloth::sloth_init_start_funcs); replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_init_start_funcs, scripts\zm\replaced\_zm_ai_sloth::sloth_init_start_funcs);
replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_init_update_funcs, scripts\zm\replaced\_zm_ai_sloth::sloth_init_update_funcs); replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_init_update_funcs, scripts\zm\replaced\_zm_ai_sloth::sloth_init_update_funcs);
replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_check_ragdolls, scripts\zm\replaced\_zm_ai_sloth::sloth_check_ragdolls); replaceFunc(maps\mp\zombies\_zm_ai_sloth::sloth_check_ragdolls, scripts\zm\replaced\_zm_ai_sloth::sloth_check_ragdolls);