checked 6 scripts against the cerberus output

These scripts had not been checked against the cerberus output before so they had many errors that needed to be fixed.
This commit is contained in:
JezuzLizard 2020-04-25 02:57:40 -07:00
parent 3b86338236
commit 698dc4ee5f
7 changed files with 216 additions and 283 deletions

View File

@ -6,7 +6,7 @@
#include maps/mp/_utility;
#include common_scripts/utility;
find_flesh()
find_flesh() //checked partially changed to match cerberus output
{
self endon( "death" );
level endon( "intermission" );
@ -46,66 +46,62 @@ find_flesh()
{
self.ignore_player = [];
}
else
if ( !isDefined( level._should_skip_ignore_player_logic ) || !( [[ level._should_skip_ignore_player_logic ]]() ) )
{
while ( !isDefined( level._should_skip_ignore_player_logic ) || !( [[ level._should_skip_ignore_player_logic ]]() ) )
i = 0;
while ( i < self.ignore_player.size )
{
i = 0;
while ( i < self.ignore_player.size )
if ( isDefined( self.ignore_player[ i ] ) && isDefined( self.ignore_player[ i ].ignore_counter ) && self.ignore_player[ i ].ignore_counter > 3 )
{
while ( isDefined( self.ignore_player[ i ] ) && isDefined( self.ignore_player[ i ].ignore_counter ) && self.ignore_player[ i ].ignore_counter > 3 )
self.ignore_player[ i ].ignore_counter = 0;
self.ignore_player = arrayremovevalue( self.ignore_player, self.ignore_player[ i ] );
if ( !isDefined( self.ignore_player ) )
{
self.ignore_player[ i ].ignore_counter = 0;
self.ignore_player = arrayremovevalue( self.ignore_player, self.ignore_player[ i ] );
if ( !isDefined( self.ignore_player ) )
{
self.ignore_player = [];
}
i = 0;
self.ignore_player = [];
}
i++;
i = 0;
continue;
}
i++;
}
}
player = get_closest_valid_player( self.origin, self.ignore_player );
while ( !isDefined( player ) && !isDefined( zombie_poi ) )
if ( !isDefined( player ) && !isDefined( zombie_poi ) )
{
self maps/mp/zombies/_zm_spawner::zombie_history( "find flesh -> can't find player, continue" );
if ( isDefined( self.ignore_player ) )
{
while ( isDefined( level._should_skip_ignore_player_logic ) && [[ level._should_skip_ignore_player_logic ]]() )
if ( isDefined( level._should_skip_ignore_player_logic ) && [[ level._should_skip_ignore_player_logic ]]() )
{
wait 1;
continue;
}
self.ignore_player = [];
}
wait 1;
continue;
}
if ( !isDefined( level.check_for_alternate_poi ) || !( [[ level.check_for_alternate_poi ]]() ) )
if ( !isDefined( level.check_for_alternate_poi ) || ![[ level.check_for_alternate_poi ]]() )
{
self.enemyoverride = zombie_poi;
self.favoriteenemy = player;
}
self thread zombie_pathing();
while ( players.size > 1 )
if ( players.size > 1 )
{
i = 0;
while ( i < self.ignore_player.size )
for ( i = 0; i < self.ignore_player.size; i++ )
{
if ( isDefined( self.ignore_player[ i ] ) )
{
if ( !isDefined( self.ignore_player[ i ].ignore_counter ) )
{
self.ignore_player[ i ].ignore_counter = 0;
i++;
continue;
}
else
{
self.ignore_player[ i ].ignore_counter += 1;
}
}
i++;
}
}
self thread attractors_generated_listener();
@ -128,12 +124,12 @@ find_flesh()
}
}
init_inert_zombies()
init_inert_zombies() //checked matches cerberus output
{
level init_inert_substates();
}
init_inert_substates()
init_inert_substates() //checked matches cerberus output
{
level.inert_substates = [];
level.inert_substates[ level.inert_substates.size ] = "inert1";
@ -176,7 +172,7 @@ init_inert_substates()
level.inert_crawl_substate_index = 0;
}
get_inert_substate()
get_inert_substate() //checked matches cerberus output
{
substate = level.inert_substates[ level.inert_substate_index ];
level.inert_substate_index++;
@ -188,7 +184,7 @@ get_inert_substate()
return substate;
}
get_inert_crawl_substate()
get_inert_crawl_substate() //checked matches cerberus output
{
substate = level.inert_crawl_substates[ level.inert_crawl_substate_index ];
level.inert_crawl_substate_index++;
@ -200,7 +196,7 @@ get_inert_crawl_substate()
return substate;
}
start_inert( in_place )
start_inert( in_place ) //checked changed to match cerberus output
{
self endon( "death" );
if ( isDefined( self.is_inert ) && self.is_inert )
@ -247,11 +243,11 @@ start_inert( in_place )
self notify( "zombie_acquire_enemy" );
}
}
while ( isDefined( self.is_traversing ) && self.is_traversing )
if ( isDefined( self.is_traversing ) && self.is_traversing )
{
while ( self isinscriptedstate() )
{
wait 0,1;
wait 0.1;
}
}
if ( isDefined( self.doing_equipment_attack ) && self.doing_equipment_attack )
@ -266,7 +262,7 @@ start_inert( in_place )
self inert_think( in_place );
}
inert_think( in_place )
inert_think( in_place ) //checked changed to match cerberus output
{
self endon( "death" );
self.ignoreall = 1;
@ -297,7 +293,7 @@ inert_think( in_place )
}
self setanimstatefromasd( "zm_inert", substate );
self maps/mp/zombies/_zm_spawner::zombie_history( "zm_inert ASD " + getTime() );
if ( substate != "inert3" && substate != "inert4" || substate == "inert5" && substate == "inert6" )
if ( substate == "inert3" && substate == "inert4" || substate == "inert5" && substate == "inert6" )
{
self thread inert_watch_goal();
}
@ -326,15 +322,12 @@ inert_think( in_place )
{
self [[ self.inert_wakeup_override ]]();
}
else
else if ( isDefined( self.completed_emerging_into_playable_area ) && self.completed_emerging_into_playable_area )
{
if ( isDefined( self.completed_emerging_into_playable_area ) && self.completed_emerging_into_playable_area )
self.ignoreall = 0;
if ( isDefined( level.ignore_find_flesh ) && !self [[ level.ignore_find_flesh ]]() )
{
self.ignoreall = 0;
if ( isDefined( level.ignore_find_flesh ) && !( self [[ level.ignore_find_flesh ]]() ) )
{
self thread maps/mp/zombies/_zm_ai_basic::find_flesh();
}
self thread maps/mp/zombies/_zm_ai_basic::find_flesh();
}
}
self.becoming_inert = undefined;
@ -344,7 +337,7 @@ inert_think( in_place )
self maps/mp/zombies/_zm_spawner::zombie_history( "is_inert cleared " + getTime() );
}
inert_watch_goal()
inert_watch_goal() //checked changed to match cerberus output
{
self endon( "death" );
self endon( "stop_zombie_inert" );
@ -352,18 +345,17 @@ inert_watch_goal()
{
self waittill( "goal" );
locs = array_randomize( level.enemy_dog_locations );
_a481 = locs;
_k481 = getFirstArrayKey( _a481 );
while ( isDefined( _k481 ) )
i = 0;
while ( i < locs.size )
{
loc = _a481[ _k481 ];
dist_sq = distancesquared( self.origin, loc.origin );
dist_sq = distancesquared( self.origin, locs[ i ].origin );
if ( dist_sq > 90000 )
{
self setgoalpos( loc.origin );
break;
self setgoalpos( locs[ i ].origin );
i++;
continue;
}
_k481 = getNextArrayKey( _a481, _k481 );
i++;
}
if ( locs.size > 0 )
{
@ -372,7 +364,7 @@ inert_watch_goal()
}
}
inert_wakeup()
inert_wakeup() //checked changed at own discretion parity in behavior to cerberus output
{
self endon( "death" );
self endon( "stop_zombie_inert" );
@ -383,11 +375,8 @@ inert_wakeup()
{
current_time = getTime();
players = get_players();
_a522 = players;
_k522 = getFirstArrayKey( _a522 );
while ( isDefined( _k522 ) )
foreach ( player in players )
{
player = _a522[ _k522 ];
dist_sq = distancesquared( self.origin, player.origin );
if ( dist_sq < 4096 )
{
@ -410,64 +399,60 @@ inert_wakeup()
return;
}
}
_k522 = getNextArrayKey( _a522, _k522 );
}
wait 0.1;
}
}
inert_bump()
inert_bump() //checked changed at own discretion parity in behavior to cerberus output
{
self endon( "death" );
self endon( "stop_zombie_inert" );
while ( 1 )
{
zombies = getaiarray( level.zombie_team );
_a562 = zombies;
_k562 = getFirstArrayKey( _a562 );
while ( isDefined( _k562 ) )
i = 0;
while ( i < zombies.size )
{
zombie = _a562[ _k562 ];
if ( zombie == self )
if ( zombies[ i ] == self )
{
i++;
continue;
}
else if ( isDefined( zombie.is_inert ) && zombie.is_inert )
if ( isDefined( zombies[ i ].is_inert ) && zombies[ i ].is_inert )
{
i++;
continue;
}
else
if ( isDefined( zombies[ i ].becoming_inert ) && zombies[ i ].becoming_inert )
{
if ( isDefined( zombie.becoming_inert ) && zombie.becoming_inert )
{
break;
}
else
{
dist_sq = distancesquared( self.origin, zombie.origin );
if ( dist_sq < 1296 )
{
self stop_inert();
return;
}
}
i++;
continue;
}
_k562 = getNextArrayKey( _a562, _k562 );
dist_sq = distancesquared( self.origin, zombies[ i ].origin );
if ( dist_sq < 1296 )
{
self stop_inert();
return;
}
i++;
}
wait 0.2;
}
}
inert_damage()
inert_damage() //checked changed to match cerberus output
{
self endon( "death" );
self endon( "stop_zombie_inert" );
while ( 1 )
{
self waittill( "damage", amount, inflictor, direction, point, type, tagname, modelname, partname, weaponname, idflags );
while ( weaponname == "emp_grenade_zm" )
if ( weaponname == "emp_grenade_zm" )
{
continue;
}
while ( isDefined( inflictor ) )
if ( isDefined( inflictor ) )
{
if ( isDefined( inflictor._trap_type ) && inflictor._trap_type == "fire" )
{
@ -478,7 +463,7 @@ inert_damage()
self stop_inert();
}
grenade_watcher( grenade )
grenade_watcher( grenade ) //checked changed to match cerberus output
{
grenade waittill( "explode", grenade_origin );
zombies = get_array_of_closest( grenade_origin, get_round_enemy_array(), undefined, undefined, 2400 );
@ -486,22 +471,18 @@ grenade_watcher( grenade )
{
return;
}
_a633 = zombies;
_k633 = getFirstArrayKey( _a633 );
while ( isDefined( _k633 ) )
foreach ( zombie in zombies )
{
zombie = _a633[ _k633 ];
zombie stop_inert();
_k633 = getNextArrayKey( _a633, _k633 );
}
}
stop_inert()
stop_inert() //checked matches cerberus output
{
self notify( "stop_zombie_inert" );
}
inert_transition()
inert_transition() //checked changed to match cerberus output
{
self endon( "death" );
self endon( "stop_zombie_inert_transition" );
@ -526,20 +507,17 @@ inert_transition()
}
trans_num = 2;
}
else
else if ( self.zombie_move_speed == "sprint" )
{
if ( self.zombie_move_speed == "sprint" )
if ( self.has_legs )
{
if ( self.has_legs )
{
trans_set = level.inert_trans_sprint;
}
else
{
trans_set = level.inert_crawl_trans_sprint;
}
trans_num = 2;
trans_set = level.inert_trans_sprint;
}
else
{
trans_set = level.inert_crawl_trans_sprint;
}
trans_num = 2;
}
self thread inert_eye_glow();
self setanimstatefromasd( animstate, trans_set[ randomint( trans_num ) ] );
@ -547,7 +525,7 @@ inert_transition()
maps/mp/animscripts/zm_shared::donotetracks( "inert_trans_anim" );
}
inert_eye_glow()
inert_eye_glow() //checked changed to match cerberus output
{
self endon( "death" );
while ( 1 )
@ -556,16 +534,13 @@ inert_eye_glow()
if ( note == "end" )
{
return;
continue;
}
else
else if ( note == "zmb_awaken" )
{
if ( note == "zmb_awaken" )
{
self maps/mp/zombies/_zm_spawner::zombie_eye_glow();
return;
}
self maps/mp/zombies/_zm_spawner::zombie_eye_glow();
return;
}
}
}

View File

@ -5,7 +5,7 @@
#include maps/mp/_utility;
#include common_scripts/utility;
zombie_faller_delete()
zombie_faller_delete() //checked matches cerberus output
{
level.zombie_total++;
self maps/mp/zombies/_zm_spawner::reset_attack_spot();
@ -17,15 +17,14 @@ zombie_faller_delete()
self delete();
}
faller_script_parameters()
faller_script_parameters() //checked changed to match cerberus output
{
while ( isDefined( self.script_parameters ) )
if ( isDefined( self.script_parameters ) )
{
parms = strtok( self.script_parameters, ";" );
while ( isDefined( parms ) && parms.size > 0 )
if ( isDefined( parms ) && parms.size > 0 )
{
i = 0;
while ( i < parms.size )
for ( i = 0; i < parms.size; i++ )
{
if ( parms[ i ] == "drop_now" )
{
@ -43,13 +42,12 @@ faller_script_parameters()
{
self.emerge_bottom = 1;
}
i++;
}
}
}
}
setup_deathfunc( func_name )
setup_deathfunc( func_name ) //checked matches cerberus output
{
self endon( "death" );
while ( isDefined( self.zombie_init_done ) && !self.zombie_init_done )
@ -70,13 +68,13 @@ setup_deathfunc( func_name )
}
}
do_zombie_fall( spot )
do_zombie_fall( spot ) //checked changed to match cerberus output
{
self endon( "death" );
self.zombie_faller_location = spot;
self.zombie_faller_location.is_enabled = 0;
self.zombie_faller_location faller_script_parameters();
if ( isDefined( self.zombie_faller_location.emerge_bottom ) || self.zombie_faller_location.emerge_bottom && isDefined( self.zombie_faller_location.emerge_top ) && self.zombie_faller_location.emerge_top )
if ( isDefined( self.zombie_faller_location.emerge_bottom ) && self.zombie_faller_location.emerge_bottom || isDefined( self.zombie_faller_location.emerge_top ) && self.zombie_faller_location.emerge_top )
{
self do_zombie_emerge( spot );
return;
@ -89,18 +87,18 @@ do_zombie_fall( spot )
self linkto( self.anchor );
if ( !isDefined( spot.angles ) )
{
spot.angles = ( 0, 0, -1 );
spot.angles = ( 0, 0, 0 );
}
anim_org = spot.origin;
anim_ang = spot.angles;
self ghost();
self.anchor moveto( anim_org, 0,05 );
self.anchor moveto( anim_org, 0.05 );
self.anchor waittill( "movedone" );
target_org = get_desired_origin();
if ( isDefined( target_org ) )
{
anim_ang = vectorToAngles( target_org - self.origin );
self.anchor rotateto( ( 0, anim_ang[ 1 ], 0 ), 0,05 );
self.anchor rotateto( ( 0, anim_ang[ 1 ], 0 ), 0.05 );
self.anchor waittill( "rotatedone" );
}
self unlink();
@ -114,10 +112,10 @@ do_zombie_fall( spot )
self thread zombie_faller_death_wait();
self thread zombie_faller_do_fall();
self.no_powerups = 0;
self notify( "risen" );
self notify( "risen", spot.script_string );
}
zombie_faller_do_fall()
zombie_faller_do_fall() //checked changed to match cerberus output
{
self endon( "death" );
self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_emerge" );
@ -136,7 +134,6 @@ zombie_faller_do_fall()
{
self.zombie_faller_should_drop = 1;
}
continue;
}
else if ( self zombie_faller_always_drop() )
{
@ -153,21 +150,24 @@ zombie_faller_do_fall()
self.zombie_faller_should_drop = 1;
break;
}
else self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_attack" );
self maps/mp/animscripts/zm_shared::donotetracks( "attack_anim", ::handle_fall_notetracks, self.zombie_faller_location );
else
{
self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_attack" );
self maps/mp/animscripts/zm_shared::donotetracks( "attack_anim", ::handle_fall_notetracks, self.zombie_faller_location );
}
}
self notify( "falling" );
spot = self.zombie_faller_location;
self zombie_faller_enable_location();
self animscripted( self.origin, spot.angles, "zm_faller_fall" );
self maps/mp/animscripts/zm_shared::donotetracks( "fall_anim", ::handle_fall_notetracks, spot );
self.deathfunction = ::zombie_death_animscript;
self.deathfunction = maps/mp/zombies/_zm_spawner::zombie_death_animscript;
self notify( "fall_anim_finished" );
spot notify( "stop_zombie_fall_fx" );
self stopanimscripted();
landanimdelta = 15;
ground_pos = groundpos_ignore_water_new( self.origin );
physdist = ( self.origin[ 2 ] - ground_pos[ 2 ] ) + landanimdelta;
physdist = self.origin[ 2 ] - ground_pos[ 2 ] + landanimdelta;
if ( physdist > 0 )
{
self animcustom( ::zombie_fall_loop );
@ -180,33 +180,30 @@ zombie_faller_do_fall()
self.no_powerups = 0;
}
zombie_fall_loop()
zombie_fall_loop() //checked changed to match cerberus output
{
self endon( "death" );
self setanimstatefromasd( "zm_faller_fall_loop" );
while ( 1 )
{
ground_pos = groundpos_ignore_water_new( self.origin );
if ( ( self.origin[ 2 ] - ground_pos[ 2 ] ) < 20 )
if ( self.origin[ 2 ] - ground_pos[ 2 ] < 20 )
{
self notify( "faller_on_ground" );
return;
}
else
{
wait 0.05;
break;
}
wait 0.05;
}
}
zombie_land()
zombie_land() //checked matches cerberus output
{
self setanimstatefromasd( "zm_faller_land" );
maps/mp/animscripts/zm_shared::donotetracks( "land_anim" );
self notify( "zombie_land_done" );
}
zombie_faller_always_drop()
zombie_faller_always_drop() //checked matches cerberus output
{
if ( isDefined( self.zombie_faller_location.drop_now ) && self.zombie_faller_location.drop_now )
{
@ -215,7 +212,7 @@ zombie_faller_always_drop()
return 0;
}
zombie_faller_drop_not_occupied()
zombie_faller_drop_not_occupied() //checked matches cerberus output
{
if ( isDefined( self.zombie_faller_location.drop_not_occupied ) && self.zombie_faller_location.drop_not_occupied )
{
@ -227,18 +224,16 @@ zombie_faller_drop_not_occupied()
return 0;
}
zombie_faller_watch_all_players()
zombie_faller_watch_all_players() //checked changed to match cerberus output
{
players = get_players();
i = 0;
while ( i < players.size )
for ( i = 0; i < players.size; i++ )
{
self thread zombie_faller_watch_player( players[ i ] );
i++;
}
}
zombie_faller_watch_player( player )
zombie_faller_watch_player( player ) //checked changed to match cerberus output
{
self endon( "falling" );
self endon( "death" );
@ -250,7 +245,7 @@ zombie_faller_watch_player( player )
inrangetime = 0;
closerange = 60;
closerangesqr = closerange * closerange;
dirtoplayerenter = ( 0, 0, -1 );
dirtoplayerenter = ( 0, 0, 0 );
incloserange = 0;
while ( 1 )
{
@ -262,7 +257,7 @@ zombie_faller_watch_player( player )
if ( ( inrangetime + timer ) < getTime() )
{
self.zombie_faller_should_drop = 1;
return;
break;
}
}
else
@ -285,35 +280,29 @@ zombie_faller_watch_player( player )
}
incloserange = 1;
}
else
else if ( incloserange )
{
if ( incloserange )
dirtoplayerexit = player.origin - self.origin;
dirtoplayerexit = ( dirtoplayerexit[ 0 ], dirtoplayerexit[ 1 ], 0 );
dirtoplayerexit = vectornormalize( dirtoplayerexit );
if ( vectordot( dirtoplayerenter, dirtoplayerexit ) < 0 )
{
dirtoplayerexit = player.origin - self.origin;
dirtoplayerexit = ( dirtoplayerexit[ 0 ], dirtoplayerexit[ 1 ], 0 );
dirtoplayerexit = vectornormalize( dirtoplayerexit );
if ( vectordot( dirtoplayerenter, dirtoplayerexit ) < 0 )
{
self.zombie_faller_should_drop = 1;
return;
}
self.zombie_faller_should_drop = 1;
break;
}
else
{
incloserange = 0;
}
wait 0.1;
}
incloserange = 0;
wait 0.1;
}
}
zombie_fall_wait()
zombie_fall_wait() //checked changed to match cerberus output
{
self endon( "falling" );
self endon( "death" );
while ( isDefined( self.zone_name ) )
if ( isDefined( self.zone_name ) )
{
while ( isDefined( level.zones ) && isDefined( level.zones[ self.zone_name ] ) )
if ( isDefined( level.zones ) && isDefined( level.zones[ self.zone_name ] ) )
{
zone = level.zones[ self.zone_name ];
while ( 1 )
@ -325,10 +314,13 @@ zombie_fall_wait()
if ( self.health != level.zombie_health )
{
self.zombie_faller_should_drop = 1;
break;
}
else
{
self zombie_faller_delete();
return;
}
else self zombie_faller_delete();
return;
}
}
wait 0.5;
@ -343,7 +335,7 @@ zombie_fall_should_attack( spot )
return victims.size > 0;
}
zombie_fall_get_vicitims( spot )
zombie_fall_get_vicitims( spot ) //checked partially changed to match cerberus output //continues in for loops bad
{
ret = [];
players = getplayers();
@ -358,40 +350,34 @@ zombie_fall_get_vicitims( spot )
i++;
continue;
}
else stance = player getstance();
stance = player getstance();
if ( stance == "crouch" || stance == "prone" )
{
i++;
continue;
}
else
zcheck = self.origin[ 2 ] - player.origin[ 2 ];
if ( zcheck < 0 || zcheck > 120 )
{
zcheck = self.origin[ 2 ] - player.origin[ 2 ];
if ( zcheck < 0 || zcheck > 120 )
{
i++;
continue;
}
else
{
dist2 = distance2dsquared( player.origin, self.origin );
if ( dist2 < checkdist2 )
{
ret[ ret.size ] = player;
}
}
i++;
continue;
}
dist2 = distance2dsquared( player.origin, self.origin );
if ( dist2 < checkdist2 )
{
ret[ ret.size ] = player;
}
i++;
}
return ret;
}
get_fall_anim( spot )
get_fall_anim( spot ) //checked matches cerberus output
{
return level._zombie_fall_anims[ self.animname ][ "fall" ];
}
zombie_faller_enable_location()
zombie_faller_enable_location() //checked matches cerberus output
{
if ( isDefined( self.zombie_faller_location ) )
{
@ -400,7 +386,7 @@ zombie_faller_enable_location()
}
}
zombie_faller_death_wait( endon_notify )
zombie_faller_death_wait( endon_notify ) //checked matches cerberus output
{
self endon( "falling" );
if ( isDefined( endon_notify ) )
@ -411,14 +397,14 @@ zombie_faller_death_wait( endon_notify )
self zombie_faller_enable_location();
}
zombie_fall_death_func()
zombie_fall_death_func() //checked matches cerberus output
{
self animmode( "noclip" );
self.deathanim = "zm_faller_emerge_death";
return self maps/mp/zombies/_zm_spawner::zombie_death_animscript();
}
zombie_fall_death( spot )
zombie_fall_death( spot ) //checked matches cerberus output
{
self endon( "fall_anim_finished" );
while ( self.health > 1 )
@ -429,7 +415,7 @@ zombie_fall_death( spot )
spot notify( "stop_zombie_fall_fx" );
}
_damage_mod_to_damage_type( type )
_damage_mod_to_damage_type( type ) //checked changed to match cerberus output
{
toks = strtok( type, "_" );
if ( toks.size < 2 )
@ -437,17 +423,15 @@ _damage_mod_to_damage_type( type )
return type;
}
returnstr = toks[ 1 ];
i = 2;
while ( i < toks.size )
for ( i = 2; i < toks.size; i++ )
{
returnstr += toks[ i ];
i++;
}
returnstr = tolower( returnstr );
return returnstr;
}
zombie_fall_fx( spot )
zombie_fall_fx( spot ) //checked matches cerberus output
{
spot thread zombie_fall_dust_fx( self );
spot thread zombie_fall_burst_fx();
@ -461,7 +445,7 @@ zombie_fall_fx( spot )
}
}
zombie_fall_burst_fx()
zombie_fall_burst_fx() //checked matches cerberus output
{
self endon( "stop_zombie_fall_fx" );
self endon( "fall_anim_finished" );
@ -470,7 +454,7 @@ zombie_fall_burst_fx()
playfx( level._effect[ "rise_billow" ], self.origin + ( randomintrange( -10, 10 ), randomintrange( -10, 10 ), randomintrange( 5, 10 ) ) );
}
zombie_fall_dust_fx( zombie )
zombie_fall_dust_fx( zombie ) //checked does not match cerberus output did not change
{
dust_tag = "J_SpineUpper";
self endon( "stop_zombie_fall_dust_fx" );
@ -486,42 +470,37 @@ zombie_fall_dust_fx( zombie )
}
}
stop_zombie_fall_dust_fx( zombie )
stop_zombie_fall_dust_fx( zombie ) //checked matches cerberus output
{
zombie waittill( "death" );
self notify( "stop_zombie_fall_dust_fx" );
}
handle_fall_notetracks( note, spot )
handle_fall_notetracks( note, spot ) //checked changed to match cerberus output
{
if ( note == "deathout" )
{
self.deathfunction = ::faller_death_ragdoll;
}
else
if ( note == "fire" )
{
while ( note == "fire" )
victims = zombie_fall_get_vicitims( spot );
for ( i = 0; i < victims.size; i++)
{
victims = zombie_fall_get_vicitims( spot );
i = 0;
while ( i < victims.size )
{
victims[ i ] dodamage( self.meleedamage, self.origin, self, self, "none", "MOD_MELEE" );
self.zombie_faller_should_drop = 1;
i++;
}
victims[ i ] dodamage( self.meleedamage, self.origin, self, self, "none", "MOD_MELEE" );
self.zombie_faller_should_drop = 1;
}
}
}
faller_death_ragdoll()
faller_death_ragdoll() //checked matches cerberus output
{
self startragdoll();
self launchragdoll( ( 0, 0, -1 ) );
return self maps/mp/zombies/_zm_spawner::zombie_death_animscript();
}
in_player_fov( player )
in_player_fov( player ) //checked does not match cerberus output did not change
{
playerangles = player getplayerangles();
playerforwardvec = anglesToForward( playerangles );
@ -538,11 +517,11 @@ in_player_fov( player )
{
banzaivsplayerfovbuffer = 0.2;
}
inplayerfov = anglefromcenter <= ( ( playerfov * 0.5 ) * ( 1 - banzaivsplayerfovbuffer ) );
inplayerfov = anglefromcenter <= ( playerfov * 0.5 ) * ( 1 - banzaivsplayerfovbuffer );
return inplayerfov;
}
potentially_visible( how_close )
potentially_visible( how_close ) //checked changed to match cerberus output
{
if ( !isDefined( how_close ) )
{
@ -550,8 +529,7 @@ potentially_visible( how_close )
}
potentiallyvisible = 0;
players = getplayers();
i = 0;
while ( i < players.size )
for ( i = 0; i < players.size; i++ )
{
dist = distancesquared( self.origin, players[ i ].origin );
if ( dist < how_close )
@ -563,15 +541,11 @@ potentially_visible( how_close )
break;
}
}
else
{
i++;
}
}
return potentiallyvisible;
}
do_zombie_emerge( spot )
do_zombie_emerge( spot ) //checked changed to match cerberus output
{
self endon( "death" );
self thread setup_deathfunc( ::faller_death_ragdoll );
@ -588,11 +562,11 @@ do_zombie_emerge( spot )
self zombie_faller_emerge( spot );
self.create_eyes = 1;
wait 0.1;
self notify( "risen" );
self notify( "risen", spot.script_string );
self zombie_faller_enable_location();
}
zombie_faller_emerge( spot )
zombie_faller_emerge( spot ) //checked matches cerberus output
{
self endon( "death" );
if ( isDefined( self.zombie_faller_location.emerge_bottom ) && self.zombie_faller_location.emerge_bottom )
@ -604,12 +578,12 @@ zombie_faller_emerge( spot )
self animscripted( self.zombie_faller_location.origin, self.zombie_faller_location.angles, "zombie_riser_elevator_from_ceiling" );
}
self maps/mp/animscripts/zm_shared::donotetracks( "rise_anim" );
self.deathfunction = ::zombie_death_animscript;
self.deathfunction = maps/mp/zombies/_zm_spawner::zombie_death_animscript;
self.in_the_ceiling = 0;
self.no_powerups = 0;
}
zombie_emerge_fx( spot )
zombie_emerge_fx( spot ) //checked matches cerberus output
{
spot thread zombie_emerge_dust_fx( self );
playsoundatposition( "zmb_zombie_spawn", spot.origin );
@ -618,7 +592,7 @@ zombie_emerge_fx( spot )
wait 1;
}
zombie_emerge_dust_fx( zombie )
zombie_emerge_dust_fx( zombie ) //checked does not match cerberus output did not change
{
dust_tag = "J_SpineUpper";
self endon( "stop_zombie_fall_dust_fx" );
@ -634,9 +608,10 @@ zombie_emerge_dust_fx( zombie )
}
}
stop_zombie_emerge_dust_fx( zombie )
stop_zombie_emerge_dust_fx( zombie ) //checked matches cerberus output
{
zombie waittill( "death" );
self notify( "stop_zombie_fall_dust_fx" );
}

View File

@ -2,14 +2,14 @@
#include maps/mp/_utility;
#include common_scripts/utility;
//#using_animtree( "zm_ally" );
//#using_animtree( "zm_ally" ); //cannot use this in gsc
init()
init() //checked matches cerberus output
{
init_mover_tree();
}
spawn_player_clone( player, origin, forceweapon, forcemodel )
spawn_player_clone( player, origin, forceweapon, forcemodel ) //checked matches cerberus output
{
if ( !isDefined( origin ) )
{
@ -66,17 +66,17 @@ spawn_player_clone( player, origin, forceweapon, forcemodel )
return clone;
}
clone_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex )
clone_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) //checked changed to match cerberus output
{
idamage = 0;
if ( sweapon != "knife_ballistic_upgraded_zm" && sweapon != "knife_ballistic_bowie_upgraded_zm" || sweapon == "knife_ballistic_no_melee_upgraded_zm" && sweapon == "knife_ballistic_sickle_upgraded_zm" )
if ( sweapon == "knife_ballistic_upgraded_zm" && sweapon == "knife_ballistic_bowie_upgraded_zm" || sweapon == "knife_ballistic_no_melee_upgraded_zm" && sweapon == "knife_ballistic_sickle_upgraded_zm" )
{
self notify( "player_revived" );
}
return idamage;
}
clone_give_weapon( weapon )
clone_give_weapon( weapon ) //checked matches cerberus output
{
weaponmodel = getweaponmodel( weapon );
if ( weaponmodel != "" && weaponmodel != "none" )
@ -85,7 +85,7 @@ clone_give_weapon( weapon )
}
}
clone_animate( animtype )
clone_animate( animtype ) //checked matches cerberus output
{
if ( self.isactor )
{
@ -97,7 +97,7 @@ clone_animate( animtype )
}
}
clone_actor_animate( animtype )
clone_actor_animate( animtype ) //checked matches cerberus output
{
wait 0.1;
switch( animtype )
@ -112,12 +112,12 @@ clone_actor_animate( animtype )
}
}
init_mover_tree()
init_mover_tree() //checked matches cerberus output
{
scriptmodelsuseanimtree( -1 );
}
clone_mover_animate( animtype )
clone_mover_animate( animtype ) //checked matches cerberus output
{
self useanimtree( -1 );
switch( animtype )

View File

@ -3,7 +3,7 @@
#include maps/mp/_utility;
#include common_scripts/utility;
main_start()
main_start() //checked matches cerberus output
{
mapname = tolower( getDvar( "mapname" ) );
gametype = getDvar( "ui_gametype" );
@ -25,24 +25,21 @@ main_start()
}
}
main_end()
main_end() //checked matches cerberus output
{
onfinalizeinitialization_callback( ::force_navcomputer_trigger_think );
level.original_melee_miss_func = level.melee_miss_func;
level.melee_miss_func = ::ffotd_melee_miss_func;
}
force_navcomputer_trigger_think()
force_navcomputer_trigger_think() //checked changed to match cerberus output
{
if ( !isDefined( level.zombie_include_buildables ) || !level.zombie_include_buildables.size )
{
return;
}
_a52 = level.zombie_include_buildables;
_k52 = getFirstArrayKey( _a52 );
while ( isDefined( _k52 ) )
foreach ( buildable in level.zombie_include_buildables )
{
buildable = _a52[ _k52 ];
if ( buildable.name == "sq_common" )
{
if ( isDefined( buildable.triggerthink ) )
@ -55,22 +52,18 @@ force_navcomputer_trigger_think()
return;
}
}
_k52 = getNextArrayKey( _a52, _k52 );
}
}
transit_navcomputer_remove_card_on_success()
transit_navcomputer_remove_card_on_success() //checked changed to match cerberus output
{
wait_for_buildable( "sq_common" );
wait_network_frame();
trig_pos = getstruct( "sq_common_key", "targetname" );
trigs = getentarray( "trigger_radius_use", "classname" );
nav_trig = undefined;
_a81 = trigs;
_k81 = getFirstArrayKey( _a81 );
while ( isDefined( _k81 ) )
foreach ( trig in trigs )
{
trig = _a81[ _k81 ];
if ( trig.origin == trig_pos.origin )
{
nav_trig = trig;
@ -88,33 +81,25 @@ transit_navcomputer_remove_card_on_success()
}
}
players = get_players();
_a101 = players;
_k101 = getFirstArrayKey( _a101 );
while ( isDefined( _k101 ) )
foreach ( player in players )
{
player = _a101[ _k101 ];
player maps/mp/zombies/_zm_stats::set_global_stat( level.navcard_needed, 0 );
_k101 = getNextArrayKey( _a101, _k101 );
}
level thread sq_refresh_player_navcard_hud();
}
}
sq_refresh_player_navcard_hud()
sq_refresh_player_navcard_hud() //checked changed to match cerberus output
{
if ( !isDefined( level.navcards ) )
{
return;
}
players = get_players();
_a116 = players;
_k116 = getFirstArrayKey( _a116 );
while ( isDefined( _k116 ) )
foreach ( player in players )
{
player = _a116[ _k116 ];
navcard_bits = 0;
i = 0;
while ( i < level.navcards.size )
for ( i = 0; i < level.navcards.size; i++ )
{
hasit = player maps/mp/zombies/_zm_stats::get_global_stat( level.navcards[ i ] );
if ( isDefined( player.navcard_grabbed ) && player.navcard_grabbed == level.navcards[ i ] )
@ -125,7 +110,6 @@ sq_refresh_player_navcard_hud()
{
navcard_bits = navcard_bits + 1;
}
i++;
}
wait_network_frame();
player setclientfield( "navcard_held", 0 );
@ -134,17 +118,16 @@ sq_refresh_player_navcard_hud()
wait_network_frame();
player setclientfield( "navcard_held", navcard_bits );
}
_k116 = getNextArrayKey( _a116, _k116 );
}
}
player_in_exploit_area( player_trigger_origin, player_trigger_radius )
{
if ( distancesquared( player_trigger_origin, self.origin ) < ( player_trigger_radius * player_trigger_radius ) )
if ( distancesquared( player_trigger_origin, self.origin ) < player_trigger_radius * player_trigger_radius )
{
/*
/#
iprintlnbold( "player exploit detectect" );
iprintlnbold( "player exploit detected" );
#/
*/
return 1;
@ -152,7 +135,7 @@ player_in_exploit_area( player_trigger_origin, player_trigger_radius )
return 0;
}
path_exploit_fix( zombie_trigger_origin, zombie_trigger_radius, zombie_trigger_height, player_trigger_origin, player_trigger_radius, zombie_goto_point )
path_exploit_fix( zombie_trigger_origin, zombie_trigger_radius, zombie_trigger_height, player_trigger_origin, player_trigger_radius, zombie_goto_point ) //checked matches cerberus output
{
spawnflags = 9;
zombie_trigger = spawn( "trigger_radius", zombie_trigger_origin, spawnflags, zombie_trigger_radius, zombie_trigger_height );
@ -172,7 +155,7 @@ path_exploit_fix( zombie_trigger_origin, zombie_trigger_radius, zombie_trigger_h
}
}
exploit_reroute( zombie_trigger, player_trigger_origin, player_trigger_radius, zombie_goto_point )
exploit_reroute( zombie_trigger, player_trigger_origin, player_trigger_radius, zombie_goto_point ) //checked matches cerberus output
{
self endon( "death" );
self.reroute = 1;
@ -199,7 +182,7 @@ exploit_reroute( zombie_trigger, player_trigger_origin, player_trigger_radius, z
self.reroute = 0;
}
debug_exploit( player_origin, player_radius, enemy_origin, enemy_radius, zombie_goto_point )
debug_exploit( player_origin, player_radius, enemy_origin, enemy_radius, zombie_goto_point ) //dev call commented out
{
/*
/#
@ -215,7 +198,7 @@ debug_exploit( player_origin, player_radius, enemy_origin, enemy_radius, zombie_
*/
}
ffotd_melee_miss_func()
ffotd_melee_miss_func() //checked matches cerberus output
{
if ( isDefined( self.enemy ) )
{

View File

@ -2,7 +2,7 @@
#include maps/mp/_utility;
#include common_scripts/utility;
network_choke_init( id, max )
network_choke_init( id, max ) //checked matches cerberus output
{
if ( !isDefined( level.zombie_network_choke_ids_max ) )
{
@ -14,7 +14,7 @@ network_choke_init( id, max )
level thread network_choke_thread( id );
}
network_choke_thread( id )
network_choke_thread( id ) //checked matches cerberus output
{
while ( 1 )
{
@ -24,12 +24,12 @@ network_choke_thread( id )
}
}
network_choke_safe( id )
network_choke_safe( id ) //checked matches cerberus output
{
return level.zombie_network_choke_ids_count[ id ] < level.zombie_network_choke_ids_max[ id ];
}
network_choke_action( id, choke_action, arg1, arg2, arg3 )
network_choke_action( id, choke_action, arg1, arg2, arg3 ) //checked matches cerberus output
{
/*
/#
@ -56,7 +56,7 @@ network_choke_action( id, choke_action, arg1, arg2, arg3 )
return [[ choke_action ]]( arg1, arg2, arg3 );
}
network_entity_valid( entity )
network_entity_valid( entity ) //checked matches cerberus output
{
if ( !isDefined( entity ) )
{
@ -65,7 +65,7 @@ network_entity_valid( entity )
return 1;
}
network_safe_init( id, max )
network_safe_init( id, max ) //checked matches cerberus output
{
if ( !isDefined( level.zombie_network_choke_ids_max ) || !isDefined( level.zombie_network_choke_ids_max[ id ] ) )
{
@ -78,18 +78,18 @@ network_safe_init( id, max )
*/
}
_network_safe_spawn( classname, origin )
_network_safe_spawn( classname, origin ) //checked matches cerberus output
{
return spawn( classname, origin );
}
network_safe_spawn( id, max, classname, origin )
network_safe_spawn( id, max, classname, origin ) //checked matches cerberus output
{
network_safe_init( id, max );
return network_choke_action( id, ::_network_safe_spawn, classname, origin );
}
_network_safe_play_fx_on_tag( fx, entity, tag )
_network_safe_play_fx_on_tag( fx, entity, tag ) //checked matches cerberus output
{
if ( network_entity_valid( entity ) )
{
@ -97,7 +97,7 @@ _network_safe_play_fx_on_tag( fx, entity, tag )
}
}
network_safe_play_fx_on_tag( id, max, fx, entity, tag )
network_safe_play_fx_on_tag( id, max, fx, entity, tag ) //checked matches cerberus output
{
network_safe_init( id, max );
network_choke_action( id, ::_network_safe_play_fx_on_tag, fx, entity, tag );

View File

@ -2,7 +2,7 @@
#include maps/mp/_utility;
#include common_scripts/utility;
init()
init() //checked matches cerberus output
{
precacheshader( "zombie_stopwatchneedle" );
precacheshader( "zombie_stopwatch" );
@ -13,7 +13,7 @@ init()
}
}
start_timer( time, stop_notify )
start_timer( time, stop_notify ) //checked matches cerberus output
{
self notify( "stop_prev_timer" );
self endon( "stop_prev_timer" );
@ -56,7 +56,7 @@ start_timer( time, stop_notify )
self.stopwatch_elem_glass.alpha = 0;
}
wait_for_stop_notify( stop_notify )
wait_for_stop_notify( stop_notify ) //checked matches cerberus output
{
self endon( "stop_prev_timer" );
self endon( "countdown_finished" );
@ -65,7 +65,7 @@ wait_for_stop_notify( stop_notify )
self.stopwatch_elem_glass.alpha = 0;
}
update_hud_position()
update_hud_position() //checked matches cerberus output
{
self endon( "disconnect" );
self endon( "stop_prev_timer" );

View File

@ -5,10 +5,14 @@ patch_zm/maps/mp/gametypes_zm/_globalentities.gsc
patch_zm/maps/mp/gametypes_zm/_scoreboard.gsc
patch_zm/maps/mp/gametypes_zm/_shellshock.gsc
patch_zm/maps/mp/gametypes_zm/zclassic.gsc
patch_zm/maps/mp/zombies/_zm_ai_basic.gsc
patch_zm/maps/mp/zombies/_zm_ai_dogs.gsc
patch_zm/maps/mp/zombies/_zm_ai_faller.gsc
patch_zm/maps/mp/zombies/_zm_audio.gsc
patch_zm/maps/mp/zombies/_zm_audio_announcer.gsc
patch_zm/maps/mp/zombies/_zm_bot.gsc
patch_zm/maps/mp/zombies/_zm_clone.gsc
patch_zm/maps/mp/zombies/_zm_ffotd.gsc
patch_zm/maps/mp/zombies/_zm_magicbox.gsc
patch_zm/maps/mp/zombies/_zm_net.gsc
patch_zm/maps/mp/zombies/_zm_perk_electric_cherry.gsc
@ -64,12 +68,8 @@ patch_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc
### The following scripts have not been checked using the proper debugging methods:
```
patch_zm/maps/mp/zombies/_zm_ai_basic.gsc
patch_zm/maps/mp/zombies/_zm_ai_faller.gsc
patch_zm/maps/mp/zombies/_zm_clone.gsc
patch_zm/maps/mp/zombies/_zm_equip_hacker.gsc
patch_zm/maps/mp/zombies/_zm_equip_gasmask.gsc
patch_zm/maps/mp/zombies/_zm_ffotd.gsc
patch_zm/maps/mp/zombies/_zm_hackables_boards.gsc
patch_zm/maps/mp/zombies/_zm_hackables_box.gsc
patch_zm/maps/mp/zombies/_zm_hackables_doors.gsc