checked 15 zm_tomb_patch scripts

Checked zm_tomb_ee_main_step_1 thru 8, zm_tomb_ambient_scripts.gsc, zm_tomb_capture_zone_ffotd.gsc, zm_tomb_challenges.gsc, zm_tomb_ee_lights.gsc, zm_tomb_gamemodes.gsc, zm_tomb_giant_robot_ffotd.gsc, zm_tomb_standard.gsc.
This commit is contained in:
JezuzLizard 2020-08-06 00:34:39 -07:00
parent 5779552ba1
commit d8e90458da
16 changed files with 253 additions and 276 deletions

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/animscripts/zm_death; #include maps/mp/animscripts/zm_death;
#include maps/mp/zombies/_zm_laststand; #include maps/mp/zombies/_zm_laststand;
#include maps/mp/zombies/_zm_score; #include maps/mp/zombies/_zm_score;
@ -12,7 +13,7 @@ tomb_ambient_precache()
precachemodel( "veh_t6_dlc_zm_zeppelin" ); precachemodel( "veh_t6_dlc_zm_zeppelin" );
} }
init_tomb_ambient_scripts() init_tomb_ambient_scripts() //checked matches cerberus output
{ {
tomb_ambient_precache(); tomb_ambient_precache();
registerclientfield( "world", "sky_battle_ambient_fx", 14000, 1, "int" ); registerclientfield( "world", "sky_battle_ambient_fx", 14000, 1, "int" );
@ -23,11 +24,11 @@ init_tomb_ambient_scripts()
level thread vista_robot_pose(); level thread vista_robot_pose();
} }
init_zeppelin( str_script_noteworthy, str_ender ) init_zeppelin( str_script_noteworthy, str_ender ) //checked changed to match cerberus output
{ {
level endon( str_ender ); level endon( str_ender );
a_path_structs = getstructarray( str_script_noteworthy, "script_noteworthy" ); a_path_structs = getstructarray( str_script_noteworthy, "script_noteworthy" );
while ( a_path_structs.size > 0 ) if ( a_path_structs.size > 0 )
{ {
m_zeppelin = spawn( "script_model", ( 0, 0, 0 ) ); m_zeppelin = spawn( "script_model", ( 0, 0, 0 ) );
m_zeppelin setmodel( "veh_t6_dlc_zm_zeppelin" ); m_zeppelin setmodel( "veh_t6_dlc_zm_zeppelin" );
@ -39,40 +40,41 @@ init_zeppelin( str_script_noteworthy, str_ender )
} }
} }
move_zeppelin_down_new_path( a_structs ) move_zeppelin_down_new_path( a_structs ) //checked matches cerberus output
{ {
s_path_start = get_unused_struct( a_structs ); s_path_start = get_unused_struct( a_structs );
self ghost(); self ghost();
self moveto( s_path_start.origin, 0,1 ); self moveto( s_path_start.origin, 0.1 );
self rotateto( s_path_start.angles, 0,1 ); self rotateto( s_path_start.angles, 0.1 );
self waittill( "movedone" ); self waittill( "movedone" );
self show(); self show();
if ( !isDefined( s_path_start.goal_struct ) ) if ( !isDefined( s_path_start.goal_struct ) )
{ {
/*
/# /#
assert( isDefined( s_path_start.target ), "move_zeppelin_down_new_path found start struct at " + s_path_start.origin + " without a target! These are needed for zeppelin splines!" ); assert( isDefined( s_path_start.target ), "move_zeppelin_down_new_path found start struct at " + s_path_start.origin + " without a target! These are needed for zeppelin splines!" );
#/ #/
*/
s_path_start.goal_struct = getstruct( s_path_start.target, "targetname" ); s_path_start.goal_struct = getstruct( s_path_start.target, "targetname" );
/*
/# /#
assert( isDefined( s_path_start.goal_struct ), "move_zeppelin_down_new_path couldn't find goal for path start struct at " + s_path_start.origin ); assert( isDefined( s_path_start.goal_struct ), "move_zeppelin_down_new_path couldn't find goal for path start struct at " + s_path_start.origin );
#/ #/
*/
} }
n_move_time = randomfloatrange( 120, 150 ); n_move_time = randomfloatrange( 120, 150 );
self moveto( s_path_start.goal_struct.origin, n_move_time ); self moveto( s_path_start.goal_struct.origin, n_move_time );
self waittill( "movedone" ); self waittill( "movedone" );
} }
get_unused_struct( a_structs ) get_unused_struct( a_structs ) //checked changed to match cerberus output
{ {
a_valid_structs = []; a_valid_structs = [];
b_no_unused_structs = 0; b_no_unused_structs = 0;
while ( !a_valid_structs.size ) while ( !a_valid_structs.size )
{ {
_a90 = a_structs; foreach ( struct in a_structs )
_k90 = getFirstArrayKey( _a90 );
while ( isDefined( _k90 ) )
{ {
struct = _a90[ _k90 ];
if ( !isDefined( struct.used ) || b_no_unused_structs ) if ( !isDefined( struct.used ) || b_no_unused_structs )
{ {
struct.used = 0; struct.used = 0;
@ -81,7 +83,6 @@ get_unused_struct( a_structs )
{ {
a_valid_structs[ a_valid_structs.size ] = struct; a_valid_structs[ a_valid_structs.size ] = struct;
} }
_k90 = getNextArrayKey( _a90, _k90 );
} }
if ( !a_valid_structs.size ) if ( !a_valid_structs.size )
{ {
@ -93,18 +94,17 @@ get_unused_struct( a_structs )
return s_unused; return s_unused;
} }
start_sky_battle() start_sky_battle() //checked matches cerberus output
{ {
flag_wait( "start_zombie_round_logic" ); flag_wait( "start_zombie_round_logic" );
level setclientfield( "sky_battle_ambient_fx", 1 ); level setclientfield( "sky_battle_ambient_fx", 1 );
} }
vista_robot_pose() vista_robot_pose() //checked changed to match cerberus output
{ {
flag_wait( "start_zombie_round_logic" ); flag_wait( "start_zombie_round_logic" );
a_robots = getstructarray( "trench_downed_robot_struct", "targetname" ); a_robots = getstructarray( "trench_downed_robot_struct", "targetname" );
i = 0; for ( i = 0; i < a_robots.size; i++ )
while ( i < a_robots.size )
{ {
if ( !isDefined( a_robots[ i ].angles ) ) if ( !isDefined( a_robots[ i ].angles ) )
{ {
@ -117,6 +117,6 @@ vista_robot_pose()
e_robot setmodel( "veh_t6_dlc_zm_robot" ); e_robot setmodel( "veh_t6_dlc_zm_robot" );
e_robot useanimtree( -1 ); e_robot useanimtree( -1 );
e_robot setanim( %ai_zombie_giant_robot_vista, 1, 0, 1 ); e_robot setanim( %ai_zombie_giant_robot_vista, 1, 0, 1 );
i++;
} }
} }

View File

@ -1,27 +1,29 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_utility; #include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
capture_zone_init_start() capture_zone_init_start() //checked matches cerberus output
{ {
} }
capture_zone_init_end() capture_zone_init_end() //checked matches cerberus output
{ {
} }
capture_event_start() capture_event_start() //checked matches cerberus output
{ {
} }
capture_event_end() capture_event_end() //checked matches cerberus output
{ {
} }
recapture_event_start() recapture_event_start() //checked matches cerberus output
{ {
} }
recapture_event_end() recapture_event_end() //checked matches cerberus output
{ {
} }

View File

@ -1,10 +1,11 @@
//checked includes changed to match cerberus output
#include maps/mp/zombies/_zm_weap_one_inch_punch; #include maps/mp/zombies/_zm_weap_one_inch_punch;
#include maps/mp/zombies/_zm_perks; #include maps/mp/zombies/_zm_perks;
#include maps/mp/zombies/_zm_powerup_zombie_blood; #include maps/mp/zombies/_zm_powerup_zombie_blood;
#include maps/mp/zombies/_zm_audio_announcer; #include maps/mp/zombies/_zm_audio_announcer;
#include maps/mp/zombies/_zm_powerups; #include maps/mp/zombies/_zm_powerups;
#include maps/mp/zombies/_zm_weapons; #include maps/mp/zombies/_zm_weapons;
#include raw/maps/mp/_zm_challenges; #include maps/mp/zombies/_zm_challenges;
#include maps/mp/zm_tomb_vo; #include maps/mp/zm_tomb_vo;
#include maps/mp/zm_tomb_utility; #include maps/mp/zm_tomb_utility;
#include maps/mp/zombies/_zm_audio; #include maps/mp/zombies/_zm_audio;
@ -12,20 +13,21 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
#using_animtree( "fxanim_props_dlc4" ); //#using_animtree( "fxanim_props_dlc4" );
challenges_init() challenges_init() //checked matches cerberus output
{ {
level.challenges_add_stats = ::tomb_challenges_add_stats; level.challenges_add_stats = ::tomb_challenges_add_stats;
maps/mp/zombies/_zm_challenges::init(); maps/mp/zombies/_zm_challenges::init();
} }
tomb_challenges_add_stats() tomb_challenges_add_stats() //checked matches cerberus output
{ {
n_kills = 115; n_kills = 115;
n_zone_caps = 6; n_zone_caps = 6;
n_points_spent = 30000; n_points_spent = 30000;
n_boxes_filled = 4; n_boxes_filled = 4;
/*
/# /#
if ( getDvarInt( "zombie_cheat" ) > 0 ) if ( getDvarInt( "zombie_cheat" ) > 0 )
{ {
@ -35,13 +37,14 @@ tomb_challenges_add_stats()
n_boxes_filled = 1; n_boxes_filled = 1;
#/ #/
} }
*/
add_stat( "zc_headshots", 0, &"ZM_TOMB_CH1", n_kills, undefined, ::reward_packed_weapon ); add_stat( "zc_headshots", 0, &"ZM_TOMB_CH1", n_kills, undefined, ::reward_packed_weapon );
add_stat( "zc_zone_captures", 0, &"ZM_TOMB_CH2", n_zone_caps, undefined, ::reward_powerup_max_ammo ); add_stat( "zc_zone_captures", 0, &"ZM_TOMB_CH2", n_zone_caps, undefined, ::reward_powerup_max_ammo );
add_stat( "zc_points_spent", 0, &"ZM_TOMB_CH3", n_points_spent, undefined, ::reward_double_tap, ::track_points_spent ); add_stat( "zc_points_spent", 0, &"ZM_TOMB_CH3", n_points_spent, undefined, ::reward_double_tap, ::track_points_spent );
add_stat( "zc_boxes_filled", 1, &"ZM_TOMB_CHT", n_boxes_filled, undefined, ::reward_one_inch_punch, ::init_box_footprints ); add_stat( "zc_boxes_filled", 1, &"ZM_TOMB_CHT", n_boxes_filled, undefined, ::reward_one_inch_punch, ::init_box_footprints );
} }
track_points_spent() track_points_spent() //checked matches cerberus output
{ {
while ( 1 ) while ( 1 )
{ {
@ -50,7 +53,7 @@ track_points_spent()
} }
} }
init_box_footprints() init_box_footprints() //checked matches cerberus output
{ {
level.n_soul_boxes_completed = 0; level.n_soul_boxes_completed = 0;
flag_init( "vo_soul_box_intro_played" ); flag_init( "vo_soul_box_intro_played" );
@ -59,16 +62,18 @@ init_box_footprints()
array_thread( a_boxes, ::box_footprint_think ); array_thread( a_boxes, ::box_footprint_think );
} }
box_footprint_think() box_footprint_think() //checked changed to match cerberus output
{ {
self.n_souls_absorbed = 0; self.n_souls_absorbed = 0;
n_souls_required = 30; n_souls_required = 30;
/*
/# /#
if ( getDvarInt( "zombie_cheat" ) > 0 ) if ( getDvarInt( "zombie_cheat" ) > 0 )
{ {
n_souls_required = 10; n_souls_required = 10;
#/ #/
} }
*/
self useanimtree( -1 ); self useanimtree( -1 );
self thread watch_for_foot_stomp(); self thread watch_for_foot_stomp();
wait 1; wait 1;
@ -86,7 +91,7 @@ box_footprint_think()
self delay_thread( 1, ::setclientfield, "foot_print_box_glow", 1 ); self delay_thread( 1, ::setclientfield, "foot_print_box_glow", 1 );
if ( isDefined( player ) && !flag( "vo_soul_box_intro_played" ) ) if ( isDefined( player ) && !flag( "vo_soul_box_intro_played" ) )
{ {
player delay_thread( 1,5, ::richtofenrespondvoplay, "zm_box_start", 0, "vo_soul_box_intro_played" ); player delay_thread( 1.5, ::richtofenrespondvoplay, "zm_box_start", 0, "vo_soul_box_intro_played" );
} }
} }
if ( self.n_souls_absorbed == floor( n_souls_required / 4 ) ) if ( self.n_souls_absorbed == floor( n_souls_required / 4 ) )
@ -114,25 +119,23 @@ box_footprint_think()
level.n_soul_boxes_completed++; level.n_soul_boxes_completed++;
e_volume = getent( self.target, "targetname" ); e_volume = getent( self.target, "targetname" );
e_volume delete(); e_volume delete();
self delay_thread( 0,5, ::setclientfield, "foot_print_box_glow", 0 ); self delay_thread( 0.5, ::setclientfield, "foot_print_box_glow", 0 );
wait 1; wait 1;
self movez( 30, 1, 1 ); self movez( 30, 1, 1 );
wait 0,5; wait 0.5;
n_rotations = randomintrange( 5, 7 ); n_rotations = randomintrange( 5, 7 );
v_start_angles = self.angles; v_start_angles = self.angles;
i = 0; for ( i = 0; i < n_rotations; i++ )
while ( i < n_rotations )
{ {
v_rotate_angles = v_start_angles + ( randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ) ); v_rotate_angles = v_start_angles + ( randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ), randomfloatrange( -10, 10 ) );
n_rotate_time = randomfloatrange( 0,2, 0,4 ); n_rotate_time = randomfloatrange( 0.2, 0.4 );
self rotateto( v_rotate_angles, n_rotate_time ); self rotateto( v_rotate_angles, n_rotate_time );
self waittill( "rotatedone" ); self waittill( "rotatedone" );
i++;
} }
self rotateto( v_start_angles, 0,3 ); self rotateto( v_start_angles, 0.3 );
self movez( -60, 0,5, 0,5 ); self movez( -60, 0.5, 0.5 );
self waittill( "rotatedone" ); self waittill( "rotatedone" );
trace_start = self.origin + vectorScale( ( 0, 1, 0 ), 200 ); trace_start = self.origin + vectorScale( ( 0, 0, 1 ), 200 );
trace_end = self.origin; trace_end = self.origin;
fx_trace = bullettrace( trace_start, trace_end, 0, self ); fx_trace = bullettrace( trace_start, trace_end, 0, self );
playfx( level._effect[ "mech_booster_landing" ], fx_trace[ "position" ], anglesToForward( self.angles ), anglesToUp( self.angles ) ); playfx( level._effect[ "mech_booster_landing" ], fx_trace[ "position" ], anglesToForward( self.angles ), anglesToUp( self.angles ) );
@ -145,18 +148,15 @@ box_footprint_think()
{ {
player thread richtofenrespondvoplay( "zm_box_complete" ); player thread richtofenrespondvoplay( "zm_box_complete" );
} }
else else if ( level.n_soul_boxes_completed == 4 )
{ {
if ( level.n_soul_boxes_completed == 4 ) player thread richtofenrespondvoplay( "zm_box_final_complete", 1 );
{
player thread richtofenrespondvoplay( "zm_box_final_complete", 1 );
}
} }
} }
self delete(); self delete();
} }
watch_for_foot_stomp() watch_for_foot_stomp() //checked matches cerberus output
{ {
self endon( "box_finished" ); self endon( "box_finished" );
while ( 1 ) while ( 1 )
@ -170,14 +170,11 @@ watch_for_foot_stomp()
} }
} }
footprint_zombie_killed( attacker ) footprint_zombie_killed( attacker ) //checked changed to match cerberus output
{ {
a_volumes = getentarray( "foot_box_volume", "script_noteworthy" ); a_volumes = getentarray( "foot_box_volume", "script_noteworthy" );
_a268 = a_volumes; foreach ( e_volume in a_volumes )
_k268 = getFirstArrayKey( _a268 );
while ( isDefined( _k268 ) )
{ {
e_volume = _a268[ _k268 ];
if ( self istouching( e_volume ) && isDefined( attacker ) && isplayer( attacker ) ) if ( self istouching( e_volume ) && isDefined( attacker ) && isplayer( attacker ) )
{ {
self setclientfield( "foot_print_box_fx", 1 ); self setclientfield( "foot_print_box_fx", 1 );
@ -185,12 +182,11 @@ footprint_zombie_killed( attacker )
m_box notify( "soul_absorbed" ); m_box notify( "soul_absorbed" );
return 1; return 1;
} }
_k268 = getNextArrayKey( _a268, _k268 );
} }
return 0; return 0;
} }
reward_packed_weapon( player, s_stat ) reward_packed_weapon( player, s_stat ) //checked matches cerberus output
{ {
if ( !isDefined( s_stat.str_reward_weapon ) ) if ( !isDefined( s_stat.str_reward_weapon ) )
{ {
@ -200,7 +196,7 @@ reward_packed_weapon( player, s_stat )
m_weapon = spawn( "script_model", self.origin ); m_weapon = spawn( "script_model", self.origin );
m_weapon.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 ); m_weapon.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 );
m_weapon playsound( "zmb_spawn_powerup" ); m_weapon playsound( "zmb_spawn_powerup" );
m_weapon playloopsound( "zmb_spawn_powerup_loop", 0,5 ); m_weapon playloopsound( "zmb_spawn_powerup_loop", 0.5 );
str_model = getweaponmodel( s_stat.str_reward_weapon ); str_model = getweaponmodel( s_stat.str_reward_weapon );
options = player maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( s_stat.str_reward_weapon ); options = player maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( s_stat.str_reward_weapon );
m_weapon useweaponmodel( s_stat.str_reward_weapon, str_model, options ); m_weapon useweaponmodel( s_stat.str_reward_weapon, str_model, options );
@ -221,28 +217,28 @@ reward_packed_weapon( player, s_stat )
player givestartammo( s_stat.str_reward_weapon ); player givestartammo( s_stat.str_reward_weapon );
} }
player switchtoweapon( s_stat.str_reward_weapon ); player switchtoweapon( s_stat.str_reward_weapon );
m_weapon stoploopsound( 0,1 ); m_weapon stoploopsound( 0.1 );
player playsound( "zmb_powerup_grabbed" ); player playsound( "zmb_powerup_grabbed" );
m_weapon delete(); m_weapon delete();
return 1; return 1;
} }
reward_powerup_max_ammo( player, s_stat ) reward_powerup_max_ammo( player, s_stat ) //checked matches cerberus output
{ {
return reward_powerup( player, "full_ammo" ); return reward_powerup( player, "full_ammo" );
} }
reward_powerup_double_points( player, n_timeout ) reward_powerup_double_points( player, n_timeout ) //checked matches cerberus output
{ {
return reward_powerup( player, "double_points", n_timeout ); return reward_powerup( player, "double_points", n_timeout );
} }
reward_powerup_zombie_blood( player, n_timeout ) reward_powerup_zombie_blood( player, n_timeout ) //checked matches cerberus output
{ {
return reward_powerup( player, "zombie_blood", n_timeout ); return reward_powerup( player, "zombie_blood", n_timeout );
} }
reward_powerup( player, str_powerup, n_timeout ) reward_powerup( player, str_powerup, n_timeout ) //checked matches cerberus output
{ {
if ( !isDefined( n_timeout ) ) if ( !isDefined( n_timeout ) )
{ {
@ -257,7 +253,7 @@ reward_powerup( player, str_powerup, n_timeout )
m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 ); m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 );
m_reward setmodel( s_powerup.model_name ); m_reward setmodel( s_powerup.model_name );
m_reward playsound( "zmb_spawn_powerup" ); m_reward playsound( "zmb_spawn_powerup" );
m_reward playloopsound( "zmb_spawn_powerup_loop", 0,5 ); m_reward playloopsound( "zmb_spawn_powerup_loop", 0.5 );
wait_network_frame(); wait_network_frame();
if ( !reward_rise_and_grab( m_reward, 50, 2, 2, n_timeout ) ) if ( !reward_rise_and_grab( m_reward, 50, 2, 2, n_timeout ) )
{ {
@ -268,7 +264,7 @@ reward_powerup( player, str_powerup, n_timeout )
{ {
player = self.player_using; player = self.player_using;
} }
switch( str_powerup ) switch ( str_powerup )
{ {
case "full_ammo": case "full_ammo":
level thread maps/mp/zombies/_zm_powerups::full_ammo_powerup( m_reward, player ); level thread maps/mp/zombies/_zm_powerups::full_ammo_powerup( m_reward, player );
@ -284,14 +280,14 @@ reward_powerup( player, str_powerup, n_timeout )
level thread maps/mp/zombies/_zm_powerup_zombie_blood::zombie_blood_powerup( m_reward, player ); level thread maps/mp/zombies/_zm_powerup_zombie_blood::zombie_blood_powerup( m_reward, player );
level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "zombie_blood", player.pers[ "team" ] ); level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "zombie_blood", player.pers[ "team" ] );
} }
wait 0,1; wait 0.1;
m_reward stoploopsound( 0,1 ); m_reward stoploopsound( 0.1 );
player playsound( "zmb_powerup_grabbed" ); player playsound( "zmb_powerup_grabbed" );
m_reward delete(); m_reward delete();
return 1; return 1;
} }
reward_double_tap( player, s_stat ) reward_double_tap( player, s_stat ) //checked matches cerberus output
{ {
m_reward = spawn( "script_model", self.origin ); m_reward = spawn( "script_model", self.origin );
m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 ); m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 );
@ -309,14 +305,14 @@ reward_double_tap( player, s_stat )
m_reward thread bottle_reject_sink( player ); m_reward thread bottle_reject_sink( player );
return 0; return 0;
} }
m_reward stoploopsound( 0,1 ); m_reward stoploopsound( 0.1 );
player playsound( "zmb_powerup_grabbed" ); player playsound( "zmb_powerup_grabbed" );
m_reward thread maps/mp/zombies/_zm_perks::vending_trigger_post_think( player, "specialty_rof" ); m_reward thread maps/mp/zombies/_zm_perks::vending_trigger_post_think( player, "specialty_rof" );
m_reward delete(); m_reward delete();
return 1; return 1;
} }
bottle_reject_sink( player ) bottle_reject_sink( player ) //checked matches cerberus output
{ {
n_time = 1; n_time = 1;
player playlocalsound( level.zmb_laugh_alias ); player playlocalsound( level.zmb_laugh_alias );
@ -325,14 +321,14 @@ bottle_reject_sink( player )
self delete(); self delete();
} }
reward_one_inch_punch( player, s_stat ) reward_one_inch_punch( player, s_stat ) //checked matches cerberus output
{ {
m_reward = spawn( "script_model", self.origin ); m_reward = spawn( "script_model", self.origin );
m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 ); m_reward.angles = self.angles + vectorScale( ( 0, 1, 0 ), 180 );
m_reward setmodel( "tag_origin" ); m_reward setmodel( "tag_origin" );
playfxontag( level._effect[ "staff_soul" ], m_reward, "tag_origin" ); playfxontag( level._effect[ "staff_soul" ], m_reward, "tag_origin" );
m_reward playsound( "zmb_spawn_powerup" ); m_reward playsound( "zmb_spawn_powerup" );
m_reward playloopsound( "zmb_spawn_powerup_loop", 0,5 ); m_reward playloopsound( "zmb_spawn_powerup_loop", 0.5 );
wait_network_frame(); wait_network_frame();
if ( !reward_rise_and_grab( m_reward, 50, 2, 2, 10 ) ) if ( !reward_rise_and_grab( m_reward, 50, 2, 2, 10 ) )
{ {
@ -346,7 +342,7 @@ reward_one_inch_punch( player, s_stat )
return 1; return 1;
} }
one_inch_punch_watch_for_death( s_stat ) one_inch_punch_watch_for_death( s_stat ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self waittill( "bled_out" ); self waittill( "bled_out" );
@ -364,20 +360,21 @@ reward_beacon( player, s_stat )
str_model = getweaponmodel( "beacon_zm" ); str_model = getweaponmodel( "beacon_zm" );
m_reward setmodel( str_model ); m_reward setmodel( str_model );
m_reward playsound( "zmb_spawn_powerup" ); m_reward playsound( "zmb_spawn_powerup" );
m_reward playloopsound( "zmb_spawn_powerup_loop", 0,5 ); m_reward playloopsound( "zmb_spawn_powerup_loop", 0.5 );
wait_network_frame(); wait_network_frame();
if ( !reward_rise_and_grab( m_reward, 50, 2, 2, 10 ) ) if ( !reward_rise_and_grab( m_reward, 50, 2, 2, 10 ) )
{ {
return 0; return 0;
} }
player maps/mp/zombies/_zm_weapons::weapon_give( "beacon_zm" ); player maps/mp/zombies/_zm_weapons::weapon_give( "beacon_zm" );
if ( isDefined( level.zombie_include_weapons[ "beacon_zm" ] ) && !level.zombie_include_weapons[ "beacon_zm" ] ) if ( !is_true( level.zombie_include_weapons[ "beacon_zm" ] ) )
{ {
level.zombie_include_weapons[ "beacon_zm" ] = 1; level.zombie_include_weapons[ "beacon_zm" ] = 1;
level.zombie_weapons[ "beacon_zm" ].is_in_box = 1; level.zombie_weapons[ "beacon_zm" ].is_in_box = 1;
} }
m_reward stoploopsound( 0,1 ); m_reward stoploopsound( 0.1 );
player playsound( "zmb_powerup_grabbed" ); player playsound( "zmb_powerup_grabbed" );
m_reward delete(); m_reward delete();
return 1; return 1;
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zm_tomb_quest_crypt; #include maps/mp/zm_tomb_quest_crypt;
#include maps/mp/zombies/_zm_net; #include maps/mp/zombies/_zm_net;
#include maps/mp/zm_tomb_utility; #include maps/mp/zm_tomb_utility;
@ -7,7 +8,7 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
main() main() //checked changed to match cerberus output
{ {
registerclientfield( "world", "light_show", 14000, 2, "int" ); registerclientfield( "world", "light_show", 14000, 2, "int" );
flag_init( "show_morse_code" ); flag_init( "show_morse_code" );
@ -15,16 +16,12 @@ main()
flag_wait( "start_zombie_round_logic" ); flag_wait( "start_zombie_round_logic" );
chamber_discs = getentarray( "crypt_puzzle_disc", "script_noteworthy" ); chamber_discs = getentarray( "crypt_puzzle_disc", "script_noteworthy" );
lit_discs = []; lit_discs = [];
_a24 = chamber_discs; foreach ( disc in chamber_discs )
_k24 = getFirstArrayKey( _a24 );
while ( isDefined( _k24 ) )
{ {
disc = _a24[ _k24 ];
if ( isDefined( disc.script_int ) ) if ( isDefined( disc.script_int ) )
{ {
lit_discs[ disc.script_int - 1 ] = disc; lit_discs[ disc.script_int - 1 ] = disc;
} }
_k24 = getNextArrayKey( _a24, _k24 );
} }
flag_wait_any( "ee_all_staffs_upgraded", "show_morse_code" ); flag_wait_any( "ee_all_staffs_upgraded", "show_morse_code" );
while ( 1 ) while ( 1 )
@ -42,22 +39,18 @@ main()
wait 10; wait 10;
setclientfield( "light_show", 2 ); setclientfield( "light_show", 2 );
light_show_morse( lit_discs, level.cipher_key ); light_show_morse( lit_discs, level.cipher_key );
_a56 = level.morse_messages; foreach ( message in level.morse_messages )
_k56 = getFirstArrayKey( _a56 );
while ( isDefined( _k56 ) )
{ {
message = _a56[ _k56 ];
setclientfield( "light_show", 1 ); setclientfield( "light_show", 1 );
cipher = phrase_convert_to_cipher( message, level.cipher_key ); cipher = phrase_convert_to_cipher( message, level.cipher_key );
turn_all_lights_off( lit_discs ); turn_all_lights_off( lit_discs );
wait 10; wait 10;
light_show_morse( lit_discs, cipher ); light_show_morse( lit_discs, cipher );
_k56 = getNextArrayKey( _a56, _k56 );
} }
} }
} }
init_morse_code() init_morse_code() //checked matches cerberus output
{ {
level.morse_letters = []; level.morse_letters = [];
level.morse_letters[ "A" ] = ".-"; level.morse_letters[ "A" ] = ".-";
@ -100,45 +93,34 @@ init_morse_code()
turn_all_lights_off( a_discs ) turn_all_lights_off( a_discs )
{ {
_a114 = a_discs; foreach ( disc in a_discs )
_k114 = getFirstArrayKey( _a114 );
while ( isDefined( _k114 ) )
{ {
disc = _a114[ _k114 ];
disc maps/mp/zm_tomb_quest_crypt::bryce_cake_light_update( 0 ); disc maps/mp/zm_tomb_quest_crypt::bryce_cake_light_update( 0 );
_k114 = getNextArrayKey( _a114, _k114 );
} }
} }
turn_all_lights_on( a_discs ) turn_all_lights_on( a_discs )
{ {
_a122 = a_discs; foreach ( disc in a_discs )
_k122 = getFirstArrayKey( _a122 );
while ( isDefined( _k122 ) )
{ {
disc = _a122[ _k122 ];
disc maps/mp/zm_tomb_quest_crypt::bryce_cake_light_update( 1 ); disc maps/mp/zm_tomb_quest_crypt::bryce_cake_light_update( 1 );
_k122 = getNextArrayKey( _a122, _k122 );
} }
} }
phrase_convert_to_cipher( str_phrase, str_key ) phrase_convert_to_cipher( str_phrase, str_key ) //checked partially changed to match cerberus output see info.md
{ {
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
alphabet_vals = []; alphabet_vals = [];
num = 0; num = 0;
i = 0; for ( i = 0; i < alphabet.size; i++ )
while ( i < alphabet.size )
{ {
letter = alphabet[ i ]; letter = alphabet[ i ];
alphabet_vals[ letter ] = num; alphabet_vals[ letter ] = num;
num++; num++;
i++;
} }
encrypted_phrase = []; encrypted_phrase = [];
j = 0; j = 0;
i = 0; for ( i = 0; i < str_phrase.size; i++ )
while ( i < str_phrase.size )
{ {
cipher_letter = str_key[ j % str_key.size ]; cipher_letter = str_key[ j % str_key.size ];
original_letter = str_phrase[ i ]; original_letter = str_phrase[ i ];
@ -146,8 +128,6 @@ phrase_convert_to_cipher( str_phrase, str_key )
if ( !isDefined( n_original_letter ) ) if ( !isDefined( n_original_letter ) )
{ {
encrypted_phrase[ encrypted_phrase.size ] = original_letter; encrypted_phrase[ encrypted_phrase.size ] = original_letter;
i++;
continue;
} }
else else
{ {
@ -156,15 +136,13 @@ phrase_convert_to_cipher( str_phrase, str_key )
encrypted_phrase[ encrypted_phrase.size ] = alphabet[ n_ciphered_letter ]; encrypted_phrase[ encrypted_phrase.size ] = alphabet[ n_ciphered_letter ];
j++; j++;
} }
i++;
} }
return encrypted_phrase; return encrypted_phrase;
} }
light_show_morse( a_discs, message ) light_show_morse( a_discs, message )
{ {
i = 0; for ( i = 0; i < message.size; i++ )
while ( i < message.size )
{ {
letter = message[ i ]; letter = message[ i ];
letter_code = level.morse_letters[ letter ]; letter_code = level.morse_letters[ letter ];
@ -176,22 +154,22 @@ light_show_morse( a_discs, message )
turn_all_lights_on( a_discs ); turn_all_lights_on( a_discs );
if ( letter_code[ j ] == "." ) if ( letter_code[ j ] == "." )
{ {
wait 0,2; wait 0.2;
} }
else else if ( letter_code[ j ] == "-" )
{ {
if ( letter_code[ j ] == "-" ) wait 1;
{
wait 1;
}
} }
turn_all_lights_off( a_discs ); turn_all_lights_off( a_discs );
wait 0,5; wait 0.5;
j++; j++;
} }
} }
else wait 2; else
wait 1,5; {
i++; wait 2;
}
wait 1.5;
} }
} }

View File

@ -1,29 +1,32 @@
//checked includes matche cerberus output
#include maps/mp/zm_tomb_ee_main; #include maps/mp/zm_tomb_ee_main;
#include maps/mp/zombies/_zm_sidequests; #include maps/mp/zombies/_zm_sidequests;
#include maps/mp/zombies/_zm_utility; #include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_1", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_1", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_1"; level._cur_stage_name = "step_1";
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
flag_wait( "ee_all_staffs_upgraded" ); flag_wait( "ee_all_staffs_upgraded" );
wait_network_frame(); wait_network_frame();
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zm_tomb_craftables; #include maps/mp/zm_tomb_craftables;
#include maps/mp/zombies/_zm_unitrigger; #include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zombies/_zm_powerup_zombie_blood; #include maps/mp/zombies/_zm_powerup_zombie_blood;
@ -7,34 +8,32 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_2", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_2", ::init_stage, ::stage_logic, ::exit_stage );
precachemodel( "p6_zm_tm_staff_holder" ); precachemodel( "p6_zm_tm_staff_holder" );
} }
init_stage() init_stage() //checked changed to match cerberus output
{ {
level._cur_stage_name = "step_2"; level._cur_stage_name = "step_2";
a_structs = getstructarray( "robot_head_staff", "targetname" ); a_structs = getstructarray( "robot_head_staff", "targetname" );
_a21 = a_structs; foreach ( unitrigger_stub in a_structs )
_k21 = getFirstArrayKey( _a21 );
while ( isDefined( _k21 ) )
{ {
unitrigger_stub = _a21[ _k21 ];
level thread create_robot_head_trigger( unitrigger_stub ); level thread create_robot_head_trigger( unitrigger_stub );
wait_network_frame(); wait_network_frame();
wait_network_frame(); wait_network_frame();
wait_network_frame(); wait_network_frame();
_k21 = getNextArrayKey( _a21, _k21 );
} }
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
flag_wait( "ee_all_staffs_placed" ); flag_wait( "ee_all_staffs_placed" );
playsoundatposition( "zmb_squest_robot_alarm_high", ( -14, -1, 871 ) ); playsoundatposition( "zmb_squest_robot_alarm_high", ( -14, -1, 871 ) );
wait 3; wait 3;
@ -42,23 +41,19 @@ stage_logic()
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked changed to match cerberus output
{ {
a_structs = getstructarray( "robot_head_staff", "targetname" ); a_structs = getstructarray( "robot_head_staff", "targetname" );
_a52 = a_structs; foreach ( struct in a_structs )
_k52 = getFirstArrayKey( _a52 );
while ( isDefined( _k52 ) )
{ {
struct = _a52[ _k52 ];
struct thread remove_plinth(); struct thread remove_plinth();
wait_network_frame(); wait_network_frame();
wait_network_frame(); wait_network_frame();
wait_network_frame(); wait_network_frame();
_k52 = getNextArrayKey( _a52, _k52 );
} }
} }
remove_plinth() remove_plinth() //checked matches cerberus output
{ {
playfx( level._effect[ "teleport_1p" ], self.m_plinth.origin ); playfx( level._effect[ "teleport_1p" ], self.m_plinth.origin );
playsoundatposition( "zmb_footprintbox_disappear", self.m_plinth.origin ); playsoundatposition( "zmb_footprintbox_disappear", self.m_plinth.origin );
@ -76,7 +71,7 @@ remove_plinth()
unregister_unitrigger( self ); unregister_unitrigger( self );
} }
create_robot_head_trigger( unitrigger_stub ) create_robot_head_trigger( unitrigger_stub ) //checked matches cerberus output
{ {
playfx( level._effect[ "teleport_1p" ], unitrigger_stub.origin ); playfx( level._effect[ "teleport_1p" ], unitrigger_stub.origin );
playsoundatposition( "zmb_footprintbox_disappear", unitrigger_stub.origin ); playsoundatposition( "zmb_footprintbox_disappear", unitrigger_stub.origin );
@ -102,7 +97,7 @@ create_robot_head_trigger( unitrigger_stub )
m_sign hidepart( "j_ice" ); m_sign hidepart( "j_ice" );
m_sign hidepart( "j_lightning" ); m_sign hidepart( "j_lightning" );
m_sign hidepart( "j_wind" ); m_sign hidepart( "j_wind" );
switch( unitrigger_stub.script_noteworthy ) switch ( unitrigger_stub.script_noteworthy )
{ {
case "fire": case "fire":
m_sign showpart( "j_fire" ); m_sign showpart( "j_fire" );
@ -123,7 +118,7 @@ create_robot_head_trigger( unitrigger_stub )
maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::robot_head_trigger_think ); maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::robot_head_trigger_think );
} }
robot_head_trigger_think() robot_head_trigger_think() //checked matches cerberus output
{ {
self endon( "kill_trigger" ); self endon( "kill_trigger" );
str_weap_staff = "staff_" + self.script_noteworthy + "_upgraded_zm"; str_weap_staff = "staff_" + self.script_noteworthy + "_upgraded_zm";
@ -157,3 +152,4 @@ place_staff( m_plinth )
m_staff show(); m_staff show();
m_plinth playsound( "zmb_squest_robot_place_staff" ); m_plinth playsound( "zmb_squest_robot_place_staff" );
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_unitrigger; #include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zm_tomb_ee_main; #include maps/mp/zm_tomb_ee_main;
#include maps/mp/zombies/_zm_sidequests; #include maps/mp/zombies/_zm_sidequests;
@ -5,30 +6,32 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_3", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_3", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_3"; level._cur_stage_name = "step_3";
level.check_valid_poi = ::mech_zombie_hole_valid; level.check_valid_poi = ::mech_zombie_hole_valid;
create_buttons_and_triggers(); create_buttons_and_triggers();
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
level thread watch_for_triple_attack(); level thread watch_for_triple_attack();
flag_wait( "ee_mech_zombie_hole_opened" ); flag_wait( "ee_mech_zombie_hole_opened" );
wait_network_frame(); wait_network_frame();
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked changed to match cerberus output
{ {
level.check_valid_poi = undefined; level.check_valid_poi = undefined;
level notify( "fire_link_cooldown" ); level notify( "fire_link_cooldown" );
@ -36,24 +39,17 @@ exit_stage( success )
a_buttons = getentarray( "fire_link_button", "targetname" ); a_buttons = getentarray( "fire_link_button", "targetname" );
array_delete( a_buttons ); array_delete( a_buttons );
a_structs = getstructarray( "fire_link", "targetname" ); a_structs = getstructarray( "fire_link", "targetname" );
_a51 = a_structs; foreach ( unitrigger_stub in a_structs )
_k51 = getFirstArrayKey( _a51 );
while ( isDefined( _k51 ) )
{ {
unitrigger_stub = _a51[ _k51 ];
unregister_unitrigger( unitrigger_stub ); unregister_unitrigger( unitrigger_stub );
_k51 = getNextArrayKey( _a51, _k51 );
} }
} }
create_buttons_and_triggers() create_buttons_and_triggers() //checked changed to match cerberus output
{ {
a_structs = getstructarray( "fire_link", "targetname" ); a_structs = getstructarray( "fire_link", "targetname" );
_a60 = a_structs; foreach ( unitrigger_stub in a_structs )
_k60 = getFirstArrayKey( _a60 );
while ( isDefined( _k60 ) )
{ {
unitrigger_stub = _a60[ _k60 ];
unitrigger_stub.radius = 36; unitrigger_stub.radius = 36;
unitrigger_stub.height = 256; unitrigger_stub.height = 256;
unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use";
@ -65,22 +61,21 @@ create_buttons_and_triggers()
m_model.targetname = "fire_link_button"; m_model.targetname = "fire_link_button";
m_model thread ready_to_activate( unitrigger_stub ); m_model thread ready_to_activate( unitrigger_stub );
wait_network_frame(); wait_network_frame();
_k60 = getNextArrayKey( _a60, _k60 );
} }
} }
ready_to_activate( unitrigger_stub ) ready_to_activate( unitrigger_stub ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self playsoundwithnotify( "vox_maxi_robot_sync_0", "sync_done" ); self playsoundwithnotify( "vox_maxi_robot_sync_0", "sync_done" );
self waittill( "sync_done" ); self waittill( "sync_done" );
wait 0,5; wait 0.5;
self playsoundwithnotify( "vox_maxi_robot_await_0", "ready_to_use" ); self playsoundwithnotify( "vox_maxi_robot_await_0", "ready_to_use" );
self waittill( "ready_to_use" ); self waittill( "ready_to_use" );
maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::activate_fire_link ); maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::activate_fire_link );
} }
watch_for_triple_attack() watch_for_triple_attack() //checked matches cerberus output
{ {
t_hole = getent( "fire_link_damage", "targetname" ); t_hole = getent( "fire_link_damage", "targetname" );
while ( !flag( "ee_mech_zombie_hole_opened" ) ) while ( !flag( "ee_mech_zombie_hole_opened" ) )
@ -99,7 +94,7 @@ watch_for_triple_attack()
} }
} }
mech_zombie_hole_valid( valid ) mech_zombie_hole_valid( valid ) //checked matches cerberus output
{ {
t_hole = getent( "fire_link_damage", "targetname" ); t_hole = getent( "fire_link_damage", "targetname" );
if ( self istouching( t_hole ) ) if ( self istouching( t_hole ) )
@ -109,7 +104,7 @@ mech_zombie_hole_valid( valid )
return valid; return valid;
} }
activate_fire_link() activate_fire_link() //checked changed to match cerberus output
{ {
self endon( "kill_trigger" ); self endon( "kill_trigger" );
while ( 1 ) while ( 1 )
@ -120,11 +115,10 @@ activate_fire_link()
{ {
level thread fire_link_cooldown( self ); level thread fire_link_cooldown( self );
self playsound( "zmb_squest_robot_button_activate" ); self playsound( "zmb_squest_robot_button_activate" );
self playloopsound( "zmb_squest_robot_button_timer", 0,5 ); self playloopsound( "zmb_squest_robot_button_timer", 0.5 );
flag_waitopen( "fire_link_enabled" ); flag_waitopen( "fire_link_enabled" );
self stoploopsound( 0,5 ); self stoploopsound( 0.5 );
self playsound( "zmb_squest_robot_button_deactivate" ); self playsound( "zmb_squest_robot_button_deactivate" );
continue;
} }
else else
{ {
@ -135,7 +129,7 @@ activate_fire_link()
} }
} }
fire_link_cooldown( t_button ) fire_link_cooldown( t_button ) //checked matches cerberus output
{ {
level notify( "fire_link_cooldown" ); level notify( "fire_link_cooldown" );
level endon( "fire_link_cooldown" ); level endon( "fire_link_cooldown" );
@ -151,3 +145,4 @@ fire_link_cooldown( t_button )
} }
flag_clear( "fire_link_enabled" ); flag_clear( "fire_link_enabled" );
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/animscripts/zm_shared; #include maps/mp/animscripts/zm_shared;
#include maps/mp/zombies/_zm_powerups; #include maps/mp/zombies/_zm_powerups;
#include maps/mp/zombies/_zm_spawner; #include maps/mp/zombies/_zm_spawner;
@ -14,12 +15,12 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_4", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_4", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_4"; level._cur_stage_name = "step_4";
level.ee_mech_zombies_killed = 0; level.ee_mech_zombies_killed = 0;
@ -28,14 +29,16 @@ init_stage()
level.quadrotor_custom_behavior = ::mech_zombie_hole_search; level.quadrotor_custom_behavior = ::mech_zombie_hole_search;
} }
stage_logic() stage_logic() //checked changed to match cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
flag_wait( "ee_quadrotor_disabled" ); flag_wait( "ee_quadrotor_disabled" );
level thread sndee4music(); level thread sndee4music();
while ( !flag( "ee_mech_zombie_fight_completed" ) ) if ( !flag( "ee_mech_zombie_fight_completed" ) )
{ {
while ( level.ee_mech_zombies_spawned < 8 ) while ( level.ee_mech_zombies_spawned < 8 )
{ {
@ -46,7 +49,7 @@ stage_logic()
level.ee_mech_zombies_alive++; level.ee_mech_zombies_alive++;
level.ee_mech_zombies_spawned++; level.ee_mech_zombies_spawned++;
} }
wait randomfloatrange( 0,5, 1 ); wait randomfloatrange( 0.5, 1 );
} }
} }
flag_wait( "ee_mech_zombie_fight_completed" ); flag_wait( "ee_mech_zombie_fight_completed" );
@ -54,12 +57,12 @@ stage_logic()
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
level.quadrotor_custom_behavior = undefined; level.quadrotor_custom_behavior = undefined;
} }
mech_zombie_hole_search() mech_zombie_hole_search() //checked matches cerberus output
{ {
s_goal = getstruct( "ee_mech_hole_goal_0", "targetname" ); s_goal = getstruct( "ee_mech_hole_goal_0", "targetname" );
if ( distance2dsquared( self.origin, s_goal.origin ) < 250000 ) if ( distance2dsquared( self.origin, s_goal.origin ) < 250000 )
@ -82,7 +85,7 @@ mech_zombie_hole_search()
} }
} }
ee_mechz_spawn( n_spawn_pos ) ee_mechz_spawn( n_spawn_pos ) //checked matches cerberus output
{ {
self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_start(); self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_start();
self endon( "death" ); self endon( "death" );
@ -91,7 +94,7 @@ ee_mechz_spawn( n_spawn_pos )
self mechz_set_starting_health(); self mechz_set_starting_health();
self mechz_setup_fx(); self mechz_setup_fx();
self mechz_setup_snd(); self mechz_setup_snd();
self.closest_player_override = ::maps/mp/zombies/_zm_ai_mechz::get_favorite_enemy; self.closest_player_override = maps/mp/zombies/_zm_ai_mechz::get_favorite_enemy;
self.animname = "mechz_zombie"; self.animname = "mechz_zombie";
self.has_legs = 1; self.has_legs = 1;
self.no_gib = 1; self.no_gib = 1;
@ -139,7 +142,7 @@ ee_mechz_spawn( n_spawn_pos )
self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_end(); self maps/mp/zombies/_zm_ai_mechz_ffotd::spawn_end();
} }
mechz_death_ee() mechz_death_ee() //checked matches cerberus output
{ {
self waittill( "death" ); self waittill( "death" );
level.ee_mech_zombies_killed++; level.ee_mech_zombies_killed++;
@ -158,10 +161,11 @@ mechz_death_ee()
} }
} }
ee_mechz_do_jump( s_spawn_pos ) ee_mechz_do_jump( s_spawn_pos ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "kill_jump" ); self endon( "kill_jump" );
/*
/# /#
if ( getDvarInt( #"E7121222" ) > 0 ) if ( getDvarInt( #"E7121222" ) > 0 )
{ {
@ -174,6 +178,7 @@ ee_mechz_do_jump( s_spawn_pos )
println( "\nMZ: Jump setting not interruptable\n" ); println( "\nMZ: Jump setting not interruptable\n" );
#/ #/
} }
*/
self.not_interruptable = 1; self.not_interruptable = 1;
self setfreecameralockonallowed( 0 ); self setfreecameralockonallowed( 0 );
self animscripted( self.origin, self.angles, "zm_fly_out" ); self animscripted( self.origin, self.angles, "zm_fly_out" );
@ -205,17 +210,19 @@ ee_mechz_do_jump( s_spawn_pos )
self maps/mp/animscripts/zm_shared::donotetracks( "jump_anim" ); self maps/mp/animscripts/zm_shared::donotetracks( "jump_anim" );
self.not_interruptable = 0; self.not_interruptable = 0;
self setfreecameralockonallowed( 1 ); self setfreecameralockonallowed( 1 );
/*
/# /#
if ( getDvarInt( #"E7121222" ) > 1 ) if ( getDvarInt( #"E7121222" ) > 1 )
{ {
println( "\nMZ: Jump clearing not interruptable\n" ); println( "\nMZ: Jump clearing not interruptable\n" );
#/ #/
} }
*/
mechz_jump_cleanup(); mechz_jump_cleanup();
self.closest_jump_point = s_landing_point; self.closest_jump_point = s_landing_point;
} }
sndee4music() sndee4music() //checked matches cerberus output
{ {
shouldplay = sndwait(); shouldplay = sndwait();
if ( !shouldplay ) if ( !shouldplay )
@ -229,11 +236,11 @@ sndee4music()
flag_wait( "ee_mech_zombie_fight_completed" ); flag_wait( "ee_mech_zombie_fight_completed" );
level setclientfield( "mus_zmb_egg_snapshot_loop", 0 ); level setclientfield( "mus_zmb_egg_snapshot_loop", 0 );
level.music_override = 0; level.music_override = 0;
wait 0,05; wait 0.05;
ent delete(); ent delete();
} }
sndwait() sndwait() //checked matches cerberus output
{ {
counter = 0; counter = 0;
while ( is_true( level.music_override ) ) while ( is_true( level.music_override ) )
@ -247,3 +254,4 @@ sndwait()
} }
return 1; return 1;
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_unitrigger; #include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zombies/_zm_powerup_zombie_blood; #include maps/mp/zombies/_zm_powerup_zombie_blood;
#include maps/mp/zm_tomb_utility; #include maps/mp/zm_tomb_utility;
@ -7,12 +8,12 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_5", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_5", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_5"; level._cur_stage_name = "step_5";
level.callbackvehicledamage = ::ee_plane_vehicledamage; level.callbackvehicledamage = ::ee_plane_vehicledamage;
@ -20,26 +21,28 @@ init_stage()
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
level thread spawn_zombie_blood_plane(); level thread spawn_zombie_blood_plane();
flag_wait( "ee_maxis_drone_retrieved" ); flag_wait( "ee_maxis_drone_retrieved" );
wait_network_frame(); wait_network_frame();
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
level.zombie_ai_limit++; level.zombie_ai_limit++;
} }
spawn_zombie_blood_plane() spawn_zombie_blood_plane() //checked changed to match cerberus output
{ {
s_biplane_pos = getstruct( "air_crystal_biplane_pos", "targetname" ); s_biplane_pos = getstruct( "air_crystal_biplane_pos", "targetname" );
vh_biplane = spawnvehicle( "veh_t6_dlc_zm_biplane", "zombie_blood_biplane", "biplane_zm", ( 0, 0, 1 ), ( 0, 0, 1 ) ); vh_biplane = spawnvehicle( "veh_t6_dlc_zm_biplane", "zombie_blood_biplane", "biplane_zm", ( 0, 0, 0 ), ( 0, 0, 0 ) );
vh_biplane ent_flag_init( "biplane_down", 0 ); vh_biplane ent_flag_init( "biplane_down", 0 );
vh_biplane maps/mp/zombies/_zm_powerup_zombie_blood::make_zombie_blood_entity(); vh_biplane maps/mp/zombies/_zm_powerup_zombie_blood::make_zombie_blood_entity();
vh_biplane playloopsound( "zmb_zombieblood_3rd_plane_loop", 1 ); vh_biplane playloopsound( "zmb_zombieblood_3rd_plane_loop", 1 );
@ -80,19 +83,19 @@ spawn_zombie_blood_plane()
level thread spawn_quadrotor_pickup( ai_pilot.origin, ai_pilot.angles ); level thread spawn_quadrotor_pickup( ai_pilot.origin, ai_pilot.angles );
} }
zombie_pilot_sound( ai_pilot ) zombie_pilot_sound( ai_pilot ) //checked matches cerberus output
{ {
sndent = spawn( "script_origin", ai_pilot.origin ); sndent = spawn( "script_origin", ai_pilot.origin );
sndent playloopsound( "zmb_zombieblood_3rd_loop_other" ); sndent playloopsound( "zmb_zombieblood_3rd_loop_other" );
while ( isDefined( ai_pilot ) && isalive( ai_pilot ) ) while ( isDefined( ai_pilot ) && isalive( ai_pilot ) )
{ {
sndent.origin = ai_pilot.origin; sndent.origin = ai_pilot.origin;
wait 0,3; wait 0.3;
} }
sndent delete(); sndent delete();
} }
pilot_loop_logic( s_start ) pilot_loop_logic( s_start ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
s_goal = s_start; s_goal = s_start;
@ -104,7 +107,7 @@ pilot_loop_logic( s_start )
} }
} }
ee_plane_vehicledamage( e_inflictor, e_attacker, n_damage, n_dflags, str_means_of_death, str_weapon, v_point, v_dir, str_hit_loc, psoffsettime, b_damage_from_underneath, n_model_index, str_part_name ) ee_plane_vehicledamage( e_inflictor, e_attacker, n_damage, n_dflags, str_means_of_death, str_weapon, v_point, v_dir, str_hit_loc, psoffsettime, b_damage_from_underneath, n_model_index, str_part_name ) //checked matches cerberus output
{ {
if ( self.vehicletype == "biplane_zm" && !self ent_flag( "biplane_down" ) ) if ( self.vehicletype == "biplane_zm" && !self ent_flag( "biplane_down" ) )
{ {
@ -117,7 +120,7 @@ ee_plane_vehicledamage( e_inflictor, e_attacker, n_damage, n_dflags, str_means_o
return n_damage; return n_damage;
} }
spawn_quadrotor_pickup( v_origin, v_angles ) spawn_quadrotor_pickup( v_origin, v_angles ) //checked matches cerberus output
{ {
m_quadrotor = spawn( "script_model", v_origin + vectorScale( ( 0, 0, 1 ), 30 ) ); m_quadrotor = spawn( "script_model", v_origin + vectorScale( ( 0, 0, 1 ), 30 ) );
m_quadrotor.angles = v_angles; m_quadrotor.angles = v_angles;
@ -136,7 +139,7 @@ spawn_quadrotor_pickup( v_origin, v_angles )
unregister_unitrigger( unitrigger_stub ); unregister_unitrigger( unitrigger_stub );
} }
quadrotor_pickup_think() quadrotor_pickup_think() //checked matches cerberus output
{ {
self endon( "kill_trigger" ); self endon( "kill_trigger" );
m_quadrotor = getent( "quadrotor_pickup", "targetname" ); m_quadrotor = getent( "quadrotor_pickup", "targetname" );
@ -149,3 +152,4 @@ quadrotor_pickup_think()
m_quadrotor delete(); m_quadrotor delete();
} }
} }

View File

@ -1,3 +1,4 @@
//checked includes cerberus output
#include maps/mp/zombies/_zm_weap_one_inch_punch; #include maps/mp/zombies/_zm_weap_one_inch_punch;
#include maps/mp/zombies/_zm_spawner; #include maps/mp/zombies/_zm_spawner;
#include maps/mp/gametypes_zm/_hud; #include maps/mp/gametypes_zm/_hud;
@ -8,22 +9,24 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_6", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_6", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_6"; level._cur_stage_name = "step_6";
maps/mp/zombies/_zm_spawner::add_custom_zombie_spawn_logic( ::ruins_fist_glow_monitor ); maps/mp/zombies/_zm_spawner::add_custom_zombie_spawn_logic( ::ruins_fist_glow_monitor );
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
level setclientfield( "sndChamberMusic", 1 ); level setclientfield( "sndChamberMusic", 1 );
flag_wait( "ee_all_players_upgraded_punch" ); flag_wait( "ee_all_players_upgraded_punch" );
level setclientfield( "sndChamberMusic", 0 ); level setclientfield( "sndChamberMusic", 0 );
@ -31,19 +34,19 @@ stage_logic()
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
} }
ruins_fist_glow_monitor() ruins_fist_glow_monitor() //checked changed to match cerberus output
{ {
if ( flag( "ee_all_players_upgraded_punch" ) ) if ( flag( "ee_all_players_upgraded_punch" ) )
{ {
return; return;
} }
while ( isDefined( self.zone_name ) && self.zone_name == "ug_bottom_zone" ) if ( isDefined( self.zone_name ) && self.zone_name == "ug_bottom_zone" )
{ {
wait 0,1; wait 0.1;
self setclientfield( "ee_zombie_fist_fx", 1 ); self setclientfield( "ee_zombie_fist_fx", 1 );
self.has_soul = 1; self.has_soul = 1;
while ( isalive( self ) ) while ( isalive( self ) )
@ -69,7 +72,7 @@ ruins_fist_glow_monitor()
} }
} }
spawn_punch_upgrade_tablet( v_origin, e_player ) spawn_punch_upgrade_tablet( v_origin, e_player ) //checked changed to match cerberus output
{ {
m_tablet = spawn( "script_model", v_origin + vectorScale( ( 0, 0, 1 ), 50 ) ); m_tablet = spawn( "script_model", v_origin + vectorScale( ( 0, 0, 1 ), 50 ) );
m_tablet setmodel( "p6_zm_tm_tablet" ); m_tablet setmodel( "p6_zm_tm_tablet" );
@ -80,31 +83,27 @@ spawn_punch_upgrade_tablet( v_origin, e_player )
m_tablet linkto( m_fx ); m_tablet linkto( m_fx );
playfxontag( level._effect[ "special_glow" ], m_fx, "tag_origin" ); playfxontag( level._effect[ "special_glow" ], m_fx, "tag_origin" );
m_fx thread rotate_punch_upgrade_tablet(); m_fx thread rotate_punch_upgrade_tablet();
m_tablet playloopsound( "zmb_squest_punchtime_tablet_loop", 0,5 ); m_tablet playloopsound( "zmb_squest_punchtime_tablet_loop", 0.5 );
m_tablet setinvisibletoall(); m_tablet setinvisibletoall();
m_tablet setvisibletoplayer( e_player ); m_tablet setvisibletoplayer( e_player );
while ( isDefined( e_player ) && !e_player istouching( m_tablet ) ) while ( isDefined( e_player ) && !e_player istouching( m_tablet ) )
{ {
wait 0,05; wait 0.05;
} }
m_tablet delete(); m_tablet delete();
m_fx delete(); m_fx delete();
e_player playsound( "zmb_squest_punchtime_tablet_pickup" ); e_player playsound( "zmb_squest_punchtime_tablet_pickup" );
if ( isDefined( e_player ) ) if ( isDefined( e_player ) )
{ {
e_player thread fadetoblackforxsec( 0, 0,3, 0,5, 0,5, "white" ); e_player thread fadetoblackforxsec( 0, 0.3, 0.5, 0.5, "white" );
a_zombies = getaispeciesarray( level.zombie_team, "all" ); a_zombies = getaispeciesarray( level.zombie_team, "all" );
_a137 = a_zombies; foreach ( zombie in a_zombies )
_k137 = getFirstArrayKey( _a137 );
while ( isDefined( _k137 ) )
{ {
zombie = _a137[ _k137 ];
if ( distance2dsquared( e_player.origin, zombie.origin ) < 65536 && !is_true( zombie.is_mechz ) && is_true( zombie.has_legs ) && is_true( zombie.completed_emerging_into_playable_area ) ) if ( distance2dsquared( e_player.origin, zombie.origin ) < 65536 && !is_true( zombie.is_mechz ) && is_true( zombie.has_legs ) && is_true( zombie.completed_emerging_into_playable_area ) )
{ {
zombie.v_punched_from = e_player.origin; zombie.v_punched_from = e_player.origin;
zombie animcustom( ::maps/mp/zombies/_zm_weap_one_inch_punch::knockdown_zombie_animate ); zombie animcustom( maps/mp/zombies/_zm_weap_one_inch_punch::knockdown_zombie_animate );
} }
_k137 = getNextArrayKey( _a137, _k137 );
} }
wait 1; wait 1;
e_player.b_punch_upgraded = 1; e_player.b_punch_upgraded = 1;
@ -130,22 +129,18 @@ spawn_punch_upgrade_tablet( v_origin, e_player )
} }
e_player thread maps/mp/zombies/_zm_weap_one_inch_punch::one_inch_punch_melee_attack(); e_player thread maps/mp/zombies/_zm_weap_one_inch_punch::one_inch_punch_melee_attack();
a_players = getplayers(); a_players = getplayers();
_a178 = a_players; foreach ( player in a_players )
_k178 = getFirstArrayKey( _a178 );
while ( isDefined( _k178 ) )
{ {
player = _a178[ _k178 ];
if ( !isDefined( player.b_punch_upgraded ) || !player.b_punch_upgraded ) if ( !isDefined( player.b_punch_upgraded ) || !player.b_punch_upgraded )
{ {
return; return;
} }
_k178 = getNextArrayKey( _a178, _k178 );
} }
flag_set( "ee_all_players_upgraded_punch" ); flag_set( "ee_all_players_upgraded_punch" );
} }
} }
rotate_punch_upgrade_tablet() rotate_punch_upgrade_tablet() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
while ( 1 ) while ( 1 )
@ -154,3 +149,4 @@ rotate_punch_upgrade_tablet()
self waittill( "rotatedone" ); self waittill( "rotatedone" );
} }
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zm_tomb_chamber; #include maps/mp/zm_tomb_chamber;
#include maps/mp/zm_tomb_vo; #include maps/mp/zm_tomb_vo;
#include maps/mp/zm_tomb_ee_main; #include maps/mp/zm_tomb_ee_main;
@ -6,22 +7,24 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_7", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_7", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_7"; level._cur_stage_name = "step_7";
level.n_ee_portal_souls = 0; level.n_ee_portal_souls = 0;
} }
stage_logic() stage_logic() //checked matches cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
level thread monitor_puzzle_portal(); level thread monitor_puzzle_portal();
level setclientfield( "sndChamberMusic", 2 ); level setclientfield( "sndChamberMusic", 2 );
flag_wait( "ee_souls_absorbed" ); flag_wait( "ee_souls_absorbed" );
@ -30,11 +33,11 @@ stage_logic()
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
} }
ee_zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) ee_zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) //checked changed to match cerberus output
{ {
if ( isDefined( attacker ) && isplayer( attacker ) && maps/mp/zm_tomb_chamber::is_point_in_chamber( self.origin ) ) if ( isDefined( attacker ) && isplayer( attacker ) && maps/mp/zm_tomb_chamber::is_point_in_chamber( self.origin ) )
{ {
@ -43,28 +46,26 @@ ee_zombie_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon
{ {
level thread ee_samantha_say( "vox_sam_generic_encourage_3" ); level thread ee_samantha_say( "vox_sam_generic_encourage_3" );
} }
else if ( level.n_ee_portal_souls == floor( 33,33333 ) ) else if ( level.n_ee_portal_souls == floor( 33.33333 ) )
{ {
level thread ee_samantha_say( "vox_sam_generic_encourage_4" ); level thread ee_samantha_say( "vox_sam_generic_encourage_4" );
} }
else if ( level.n_ee_portal_souls == floor( 66,66666 ) ) else if ( level.n_ee_portal_souls == floor( 66.66666 ) )
{ {
level thread ee_samantha_say( "vox_sam_generic_encourage_5" ); level thread ee_samantha_say( "vox_sam_generic_encourage_5" );
} }
else else if ( level.n_ee_portal_souls == 100 )
{ {
if ( level.n_ee_portal_souls == 100 ) level thread ee_samantha_say( "vox_sam_generic_encourage_0" );
{ flag_set( "ee_souls_absorbed" );
level thread ee_samantha_say( "vox_sam_generic_encourage_0" );
flag_set( "ee_souls_absorbed" );
}
} }
self setclientfield( "ee_zombie_soul_portal", 1 ); self setclientfield( "ee_zombie_soul_portal", 1 );
} }
} }
monitor_puzzle_portal() monitor_puzzle_portal() //checked changed to match cerberus output
{ {
/*
/# /#
if ( is_true( level.ee_debug ) ) if ( is_true( level.ee_debug ) )
{ {
@ -73,6 +74,7 @@ monitor_puzzle_portal()
return; return;
#/ #/
} }
*/
while ( !flag( "ee_souls_absorbed" ) ) while ( !flag( "ee_souls_absorbed" ) )
{ {
if ( all_staffs_inserted_in_puzzle_room() && !flag( "ee_sam_portal_active" ) ) if ( all_staffs_inserted_in_puzzle_room() && !flag( "ee_sam_portal_active" ) )
@ -80,14 +82,11 @@ monitor_puzzle_portal()
flag_set( "ee_sam_portal_active" ); flag_set( "ee_sam_portal_active" );
level setclientfield( "ee_sam_portal", 1 ); level setclientfield( "ee_sam_portal", 1 );
} }
else else if ( !all_staffs_inserted_in_puzzle_room() && flag( "ee_sam_portal_active" ) )
{ {
if ( !all_staffs_inserted_in_puzzle_room() && flag( "ee_sam_portal_active" ) ) flag_clear( "ee_sam_portal_active" );
{ level setclientfield( "ee_sam_portal", 0 );
flag_clear( "ee_sam_portal_active" );
level setclientfield( "ee_sam_portal", 0 );
}
} }
wait 0,5; wait 0.5;
} }
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zm_tomb_chamber; #include maps/mp/zm_tomb_chamber;
#include maps/mp/gametypes_zm/_hud; #include maps/mp/gametypes_zm/_hud;
#include maps/mp/gametypes_zm/_hud_util; #include maps/mp/gametypes_zm/_hud_util;
@ -9,46 +10,40 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
declare_sidequest_stage( "little_girl_lost", "step_8", ::init_stage, ::stage_logic, ::exit_stage ); declare_sidequest_stage( "little_girl_lost", "step_8", ::init_stage, ::stage_logic, ::exit_stage );
} }
init_stage() init_stage() //checked matches cerberus output
{ {
level._cur_stage_name = "step_8"; level._cur_stage_name = "step_8";
level.quadrotor_custom_behavior = ::move_into_portal; level.quadrotor_custom_behavior = ::move_into_portal;
} }
stage_logic() stage_logic() //checked changed to match cerberus output
{ {
/*
/# /#
iprintln( level._cur_stage_name + " of little girl lost started" ); iprintln( level._cur_stage_name + " of little girl lost started" );
#/ #/
*/
level notify( "tomb_sidequest_complete" ); level notify( "tomb_sidequest_complete" );
_a34 = get_players(); foreach ( player in get_players() )
_k34 = getFirstArrayKey( _a34 );
while ( isDefined( _k34 ) )
{ {
player = _a34[ _k34 ];
if ( player is_player_in_chamber() ) if ( player is_player_in_chamber() )
{ {
player thread fadetoblackforxsec( 0, 1, 0,5, 0,5, "white" ); player thread fadetoblackforxsec( 0, 1, 0.5, 0.5, "white" );
} }
_k34 = getNextArrayKey( _a34, _k34 );
} }
wait 0,5; wait 0.5;
level setclientfield( "ee_sam_portal", 2 ); level setclientfield( "ee_sam_portal", 2 );
level notify( "stop_random_chamber_walls" ); level notify( "stop_random_chamber_walls" );
a_walls = getentarray( "chamber_wall", "script_noteworthy" ); a_walls = getentarray( "chamber_wall", "script_noteworthy" );
_a51 = a_walls; foreach ( e_wall in a_walls )
_k51 = getFirstArrayKey( _a51 );
while ( isDefined( _k51 ) )
{ {
e_wall = _a51[ _k51 ];
e_wall thread maps/mp/zm_tomb_chamber::move_wall_up(); e_wall thread maps/mp/zm_tomb_chamber::move_wall_up();
e_wall hide(); e_wall hide();
_k51 = getNextArrayKey( _a51, _k51 );
} }
flag_wait( "ee_quadrotor_disabled" ); flag_wait( "ee_quadrotor_disabled" );
wait 1; wait 1;
@ -58,7 +53,7 @@ stage_logic()
t_portal.require_look_at = 1; t_portal.require_look_at = 1;
t_portal.hint_string = &"ZM_TOMB_TELE"; t_portal.hint_string = &"ZM_TOMB_TELE";
t_portal thread waittill_player_activates(); t_portal thread waittill_player_activates();
level.ee_ending_beam_fx = spawn( "script_model", s_pos.origin + vectorScale( ( 0, 1, 0 ), 300 ) ); level.ee_ending_beam_fx = spawn( "script_model", s_pos.origin + vectorScale( ( 0, 0, -1 ), 300 ) );
level.ee_ending_beam_fx.angles = vectorScale( ( 0, 1, 0 ), 90 ); level.ee_ending_beam_fx.angles = vectorScale( ( 0, 1, 0 ), 90 );
level.ee_ending_beam_fx setmodel( "tag_origin" ); level.ee_ending_beam_fx setmodel( "tag_origin" );
playfxontag( level._effect[ "ee_beam" ], level.ee_ending_beam_fx, "tag_origin" ); playfxontag( level._effect[ "ee_beam" ], level.ee_ending_beam_fx, "tag_origin" );
@ -70,11 +65,11 @@ stage_logic()
stage_completed( "little_girl_lost", level._cur_stage_name ); stage_completed( "little_girl_lost", level._cur_stage_name );
} }
exit_stage( success ) exit_stage( success ) //checked matches cerberus output
{ {
} }
waittill_player_activates() waittill_player_activates() //checked matches cerberus output
{ {
while ( 1 ) while ( 1 )
{ {
@ -83,7 +78,7 @@ waittill_player_activates()
} }
} }
move_into_portal() move_into_portal() //checked matches cerberus output
{ {
s_goal = getstruct( "maxis_portal_path", "targetname" ); s_goal = getstruct( "maxis_portal_path", "targetname" );
if ( distance2dsquared( self.origin, s_goal.origin ) < 250000 ) if ( distance2dsquared( self.origin, s_goal.origin ) < 250000 )
@ -103,3 +98,4 @@ move_into_portal()
level.maxis_quadrotor = undefined; level.maxis_quadrotor = undefined;
} }
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zm_tomb_classic; #include maps/mp/zm_tomb_classic;
#include maps/mp/zm_tomb; #include maps/mp/zm_tomb;
#include maps/mp/gametypes_zm/_zm_gametype; #include maps/mp/gametypes_zm/_zm_gametype;
@ -6,7 +7,7 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked matches cerberus output
{ {
add_map_gamemode( "zclassic", ::maps/mp/zm_tomb::zstandard_preinit, undefined, undefined ); add_map_gamemode( "zclassic", ::maps/mp/zm_tomb::zstandard_preinit, undefined, undefined );
add_map_location_gamemode( "zclassic", "tomb", ::maps/mp/zm_tomb_classic::precache, ::maps/mp/zm_tomb_classic::main ); add_map_location_gamemode( "zclassic", "tomb", ::maps/mp/zm_tomb_classic::precache, ::maps/mp/zm_tomb_classic::main );

View File

@ -1,35 +1,36 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_utility; #include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init_giant_robot_start() init_giant_robot_start() //checked matches cerberus output
{ {
} }
init_giant_robot_end() init_giant_robot_end() //checked matches cerberus output
{ {
} }
init_giant_robot_glows_start() init_giant_robot_glows_start() //checked matches cerberus output
{ {
} }
init_giant_robot_glows_end() init_giant_robot_glows_end() //checked matches cerberus output
{ {
} }
giant_robot_spawn_start() giant_robot_spawn_start() //checked matches cerberus output
{ {
} }
giant_robot_spawn_end() giant_robot_spawn_end() //checked matches cerberus output
{ {
} }
giant_robot_head_player_eject_start() giant_robot_head_player_eject_start() //checked matches cerberus output
{ {
} }
giant_robot_head_player_eject_end() giant_robot_head_player_eject_end() //checked matches cerberus output
{ {
} }

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/zombies/_zm_magicbox; #include maps/mp/zombies/_zm_magicbox;
#include maps/mp/zombies/_zm_game_module; #include maps/mp/zombies/_zm_game_module;
#include maps/mp/gametypes_zm/_zm_gametype; #include maps/mp/gametypes_zm/_zm_gametype;
@ -5,11 +6,11 @@
#include common_scripts/utility; #include common_scripts/utility;
#include maps/mp/_utility; #include maps/mp/_utility;
precache() precache() //checked matches cerberus output
{ {
} }
main() main() //checked matches cerberus output
{ {
maps/mp/gametypes_zm/_zm_gametype::setup_standard_objects( "tomb" ); maps/mp/gametypes_zm/_zm_gametype::setup_standard_objects( "tomb" );
maps/mp/zombies/_zm_game_module::set_current_game_module( level.game_module_standard_index ); maps/mp/zombies/_zm_game_module::set_current_game_module( level.game_module_standard_index );
@ -18,7 +19,7 @@ main()
zm_treasure_chest_init(); zm_treasure_chest_init();
} }
zm_treasure_chest_init() zm_treasure_chest_init() //checked matches cerberus output
{ {
chest1 = getstruct( "start_chest", "script_noteworthy" ); chest1 = getstruct( "start_chest", "script_noteworthy" );
level.chests = []; level.chests = [];

View File

@ -17,20 +17,10 @@ zm_tomb_patch/maps/mp/zm_tomb_amb.gsc
### The following scripts have been checked, but they have not been tested yet ### The following scripts have been checked, but they have not been tested yet
``` ```
zm_tomb_patch/maps/mp/zm_tomb_craftables.gsc
zm_tomb_patch/maps/mp/zm_tomb_main_quest.gsc
```
### The following scripts are not checked yet, uploaded to setup a baseline:
```
zm_tomb_patch/maps/mp/zm_tomb_achivement.gsc
zm_tomb_patch/maps/mp/zm_tomb_ambient_scripts.gsc zm_tomb_patch/maps/mp/zm_tomb_ambient_scripts.gsc
zm_tomb_patch/maps/mp/zm_tomb_capture_zones.gsc
zm_tomb_patch/maps/mp/zm_tomb_capture_zones_ffotd.gsc zm_tomb_patch/maps/mp/zm_tomb_capture_zones_ffotd.gsc
zm_tomb_patch/maps/mp/zm_tomb_challenges.gsc zm_tomb_patch/maps/mp/zm_tomb_challenges.gsc
zm_tomb_patch/maps/mp/zm_tomb_chamber.gsc zm_tomb_patch/maps/mp/zm_tomb_craftables.gsc
zm_tomb_patch/maps/mp/zm_tomb_distance_tracking.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_lights.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_1.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_1.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_2.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_2.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_3.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_3.gsc
@ -39,18 +29,28 @@ zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_5.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_6.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_6.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_7.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_7.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_8.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_main_step_8.gsc
zm_tomb_patch/maps/mp/zm_tomb_gamemodes.gsc
zm_tomb_patch/maps/mp/zm_tomb_giant_robot_ffotd.gsc
zm_tomb_patch/maps/mp/zm_tomb_main_quest.gsc
zm_tomb_patch/maps/mp/zm_tomb_standard.gsc
```
### The following scripts are not checked yet, uploaded to setup a baseline:
```
zm_tomb_patch/maps/mp/zm_tomb_achivement.gsc
zm_tomb_patch/maps/mp/zm_tomb_capture_zones.gsc
zm_tomb_patch/maps/mp/zm_tomb_chamber.gsc
zm_tomb_patch/maps/mp/zm_tomb_distance_tracking.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_lights.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_main.gsc
zm_tomb_patch/maps/mp/zm_tomb_ee_side.gsc zm_tomb_patch/maps/mp/zm_tomb_ee_side.gsc
zm_tomb_patch/maps/mp/zm_tomb_ffotd.gsc zm_tomb_patch/maps/mp/zm_tomb_ffotd.gsc
zm_tomb_patch/maps/mp/zm_tomb_fx.gsc zm_tomb_patch/maps/mp/zm_tomb_fx.gsc
zm_tomb_patch/maps/mp/zm_tomb_gamemodes.gsc
zm_tomb_patch/maps/mp/zm_tomb_giant_robot.gsc zm_tomb_patch/maps/mp/zm_tomb_giant_robot.gsc
zm_tomb_patch/maps/mp/zm_tomb_giant_robot_ffotd.gsc
zm_tomb_patch/maps/mp/zm_tomb_quest_air.gsc zm_tomb_patch/maps/mp/zm_tomb_quest_air.gsc
zm_tomb_patch/maps/mp/zm_tomb_quest_crypt.gsc zm_tomb_patch/maps/mp/zm_tomb_quest_crypt.gsc
zm_tomb_patch/maps/mp/zm_tomb_quest_elec.gsc zm_tomb_patch/maps/mp/zm_tomb_quest_elec.gsc
zm_tomb_patch/maps/mp/zm_tomb_quest_fire.gsc zm_tomb_patch/maps/mp/zm_tomb_quest_fire.gsc
zm_tomb_patch/maps/mp/zm_tomb_quest_ice.gsc zm_tomb_patch/maps/mp/zm_tomb_quest_ice.gsc
zm_tomb_patch/maps/mp/zm_tomb_standard.gsc
zm_tomb_patch/maps/mp/zm_tomb_tank.gsc zm_tomb_patch/maps/mp/zm_tomb_tank.gsc
zm_tomb_patch/maps/mp/zm_tomb_teleporter.gsc zm_tomb_patch/maps/mp/zm_tomb_teleporter.gsc
zm_tomb_patch/maps/mp/zm_tomb_utility.gsc zm_tomb_patch/maps/mp/zm_tomb_utility.gsc