checked and fixed scripts in patch_zm

Checked _globallogic_spawn.gsc. Fixed _load.gsc and _zm.gsc in patch_zm/maps/mp/zombies. Fixed zm_transit_patch/maps/mp/gametypes_zm/zgrief.gsc.
This commit is contained in:
JezuzLizard 2020-07-10 08:04:09 -07:00
parent 7817efc738
commit eea54f70b2
5 changed files with 137 additions and 125 deletions

View File

@ -15,7 +15,7 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
timeuntilspawn( includeteamkilldelay ) timeuntilspawn( includeteamkilldelay ) //checked matches cerberus output
{ {
if ( level.ingraceperiod && !self.hasspawned ) if ( level.ingraceperiod && !self.hasspawned )
{ {
@ -46,23 +46,19 @@ timeuntilspawn( includeteamkilldelay )
return respawndelay; return respawndelay;
} }
allteamshaveexisted() allteamshaveexisted() //checked changed to match cerberus output
{ {
_a34 = level.teams; foreach ( team in level.teams )
_k34 = getFirstArrayKey( _a34 );
while ( isDefined( _k34 ) )
{ {
team = _a34[ _k34 ];
if ( !level.everexisted[ team ] ) if ( !level.everexisted[ team ] )
{ {
return 0; return 0;
} }
_k34 = getNextArrayKey( _a34, _k34 );
} }
return 1; return 1;
} }
mayspawn() mayspawn() //checked partially changed to match cerberus output changed at own discretion
{ {
if ( isDefined( level.mayspawn ) && !( self [[ level.mayspawn ]]() ) ) if ( isDefined( level.mayspawn ) && !( self [[ level.mayspawn ]]() ) )
{ {
@ -84,11 +80,16 @@ mayspawn()
} }
else else
{ {
if ( level.maxplayercount > 1 ) gamehasstarted = level.maxplayercount > 1;
if ( gamehasstarted == 0 )
{ {
if ( !isoneround() ) if ( !isoneround() && !isfirstround() )
{ {
gamehasstarted = !isfirstround(); gamehasstarted = 1;
}
else
{
gamehasstarted = 0;
} }
} }
} }
@ -96,21 +97,18 @@ mayspawn()
{ {
return 0; return 0;
} }
else else if ( gamehasstarted )
{ {
if ( gamehasstarted ) if ( !level.ingraceperiod && !self.hasspawned && !level.wagermatch )
{ {
if ( !level.ingraceperiod && !self.hasspawned && !level.wagermatch ) return 0;
{
return 0;
}
} }
} }
} }
return 1; return 1;
} }
timeuntilwavespawn( minimumwait ) timeuntilwavespawn( minimumwait ) //checked matches cerberus output
{ {
earliestspawntime = getTime() + ( minimumwait * 1000 ); earliestspawntime = getTime() + ( minimumwait * 1000 );
lastwavetime = level.lastwave[ self.pers[ "team" ] ]; lastwavetime = level.lastwave[ self.pers[ "team" ] ];
@ -129,7 +127,7 @@ timeuntilwavespawn( minimumwait )
return ( timeofspawn - getTime() ) / 1000; return ( timeofspawn - getTime() ) / 1000;
} }
stoppoisoningandflareonspawn() stoppoisoningandflareonspawn() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self.inpoisonarea = 0; self.inpoisonarea = 0;
@ -138,7 +136,7 @@ stoppoisoningandflareonspawn()
self.ingroundnapalm = 0; self.ingroundnapalm = 0;
} }
spawnplayerprediction() spawnplayerprediction() //checked changed to match cerberus output dvar taken from beta dump
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "end_respawn" ); self endon( "end_respawn" );
@ -147,11 +145,10 @@ spawnplayerprediction()
self endon( "spawned" ); self endon( "spawned" );
while ( 1 ) while ( 1 )
{ {
wait 0,5; wait 0.5;
if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) if ( isDefined( level.onspawnplayerunified ) && getDvarInt( "scr_disableunifiedspawning" ) == 0 )
{ {
maps/mp/gametypes_zm/_spawning::onspawnplayer_unified( 1 ); maps/mp/gametypes_zm/_spawning::onspawnplayer_unified( 1 );
continue;
} }
else else
{ {
@ -160,7 +157,7 @@ spawnplayerprediction()
} }
} }
giveloadoutlevelspecific( team, class ) giveloadoutlevelspecific( team, class ) //checked matches cerberus output
{ {
pixbeginevent( "giveLoadoutLevelSpecific" ); pixbeginevent( "giveLoadoutLevelSpecific" );
if ( isDefined( level.givecustomcharacters ) ) if ( isDefined( level.givecustomcharacters ) )
@ -174,7 +171,7 @@ giveloadoutlevelspecific( team, class )
pixendevent(); pixendevent();
} }
spawnplayer() spawnplayer() //checked matches cerberus output dvars taken from beta dump
{ {
pixbeginevent( "spawnPlayer_preUTS" ); pixbeginevent( "spawnPlayer_preUTS" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -205,9 +202,9 @@ spawnplayer()
self.psoffsettime = 0; self.psoffsettime = 0;
self.statusicon = ""; self.statusicon = "";
self.damagedplayers = []; self.damagedplayers = [];
if ( getDvarInt( #"C8077F47" ) > 0 ) if ( getDvarInt( "scr_csmode" ) > 0 )
{ {
self.maxhealth = getDvarInt( #"C8077F47" ); self.maxhealth = getDvarInt( "scr_csmode" );
} }
else else
{ {
@ -218,10 +215,9 @@ spawnplayer()
self.hasspawned = 1; self.hasspawned = 1;
self.spawntime = getTime(); self.spawntime = getTime();
self.afk = 0; self.afk = 0;
if ( self.pers[ "lives" ] || !isDefined( level.takelivesondeath ) && level.takelivesondeath == 0 ) if ( self.pers[ "lives" ] && !isDefined( level.takelivesondeath ) || level.takelivesondeath == 0 )
{ {
self.pers[ "lives" ]--; self.pers[ "lives" ]--;
if ( self.pers[ "lives" ] == 0 ) if ( self.pers[ "lives" ] == 0 )
{ {
level notify( "player_eliminated" ); level notify( "player_eliminated" );
@ -250,7 +246,7 @@ spawnplayer()
self setdepthoffield( 0, 0, 512, 512, 4, 0 ); self setdepthoffield( 0, 0, 512, 512, 4, 0 );
self resetfov(); self resetfov();
pixbeginevent( "onSpawnPlayer" ); pixbeginevent( "onSpawnPlayer" );
if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) if ( isDefined( level.onspawnplayerunified ) && getDvarInt( "scr_disableunifiedspawning" ) == 0 )
{ {
self [[ level.onspawnplayerunified ]](); self [[ level.onspawnplayerunified ]]();
} }
@ -268,9 +264,11 @@ spawnplayer()
pixbeginevent( "spawnPlayer_postUTS" ); pixbeginevent( "spawnPlayer_postUTS" );
self thread stoppoisoningandflareonspawn(); self thread stoppoisoningandflareonspawn();
self stopburning(); self stopburning();
/*
/# /#
assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) ); assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) );
#/ #/
*/
self giveloadoutlevelspecific( self.team, self.class ); self giveloadoutlevelspecific( self.team, self.class );
if ( level.inprematchperiod ) if ( level.inprematchperiod )
{ {
@ -308,7 +306,7 @@ spawnplayer()
{ {
self thread maps/mp/gametypes_zm/_hud_message::hintmessage( hintmessage ); self thread maps/mp/gametypes_zm/_hud_message::hintmessage( hintmessage );
} }
if ( isDefined( game[ "dialog" ][ "gametype" ] ) || !level.splitscreen && self == level.players[ 0 ] ) if ( isDefined( game[ "dialog" ][ "gametype" ] ) && !level.splitscreen || self == level.players[ 0 ] )
{ {
if ( !isDefined( level.infinalfight ) || !level.infinalfight ) if ( !isDefined( level.infinalfight ) || !level.infinalfight )
{ {
@ -418,35 +416,39 @@ spawnplayer()
self notify( "spawned_player" ); self notify( "spawned_player" );
self logstring( "S " + self.origin[ 0 ] + " " + self.origin[ 1 ] + " " + self.origin[ 2 ] ); self logstring( "S " + self.origin[ 0 ] + " " + self.origin[ 1 ] + " " + self.origin[ 2 ] );
setdvar( "scr_selecting_location", "" ); setdvar( "scr_selecting_location", "" );
/*
/# /#
if ( getDvarInt( #"F8D00F60" ) > 0 ) if ( getDvarInt( "scr_xprate" ) > 0 )
{ {
self thread maps/mp/gametypes_zm/_globallogic_score::xpratethread(); self thread maps/mp/gametypes_zm/_globallogic_score::xpratethread();
#/ #/
} }
*/
self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 );
if ( game[ "state" ] == "postgame" ) if ( game[ "state" ] == "postgame" )
{ {
/*
/# /#
assert( !level.intermission ); assert( !level.intermission );
#/ #/
*/
self maps/mp/gametypes_zm/_globallogic_player::freezeplayerforroundend(); self maps/mp/gametypes_zm/_globallogic_player::freezeplayerforroundend();
} }
} }
spawnspectator( origin, angles ) spawnspectator( origin, angles ) //checked matches cerberus output
{ {
self notify( "spawned" ); self notify( "spawned" );
self notify( "end_respawn" ); self notify( "end_respawn" );
in_spawnspectator( origin, angles ); in_spawnspectator( origin, angles );
} }
respawn_asspectator( origin, angles ) respawn_asspectator( origin, angles ) //checked matches cerberus output
{ {
in_spawnspectator( origin, angles ); in_spawnspectator( origin, angles );
} }
in_spawnspectator( origin, angles ) in_spawnspectator( origin, angles ) //checked matches cerberus output
{ {
pixmarker( "BEGIN: in_spawnSpectator" ); pixmarker( "BEGIN: in_spawnSpectator" );
self setspawnvariables(); self setspawnvariables();
@ -478,7 +480,7 @@ in_spawnspectator( origin, angles )
pixmarker( "END: in_spawnSpectator" ); pixmarker( "END: in_spawnSpectator" );
} }
spectatorthirdpersonness() spectatorthirdpersonness() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "spawned" ); self endon( "spawned" );
@ -487,7 +489,7 @@ spectatorthirdpersonness()
self.spectatingthirdperson = 0; self.spectatingthirdperson = 0;
} }
forcespawn( time ) forcespawn( time ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -514,14 +516,16 @@ forcespawn( time )
self thread [[ level.spawnclient ]](); self thread [[ level.spawnclient ]]();
} }
kickifdontspawn() kickifdontspawn() //checked matches cerberus output
{ {
/*
/# /#
if ( getDvarInt( "scr_hostmigrationtest" ) == 1 ) if ( getDvarInt( "scr_hostmigrationtest" ) == 1 )
{ {
return; return;
#/ #/
} }
*/
if ( self ishost() ) if ( self ishost() )
{ {
return; return;
@ -529,25 +533,25 @@ kickifdontspawn()
self kickifidontspawninternal(); self kickifidontspawninternal();
} }
kickifidontspawninternal() kickifidontspawninternal() //checked matches cerberus output dvars taken from beta dump
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "spawned" ); self endon( "spawned" );
waittime = 90; waittime = 90;
if ( getDvar( #"4257CF5C" ) != "" ) if ( getDvar( "scr_kick_time" ) != "" )
{ {
waittime = getDvarFloat( #"4257CF5C" ); waittime = getDvarFloat( "scr_kick_time" );
} }
mintime = 45; mintime = 45;
if ( getDvar( #"0DF057E0" ) != "" ) if ( getDvar( scr_kick_mintime) != "" )
{ {
mintime = getDvarFloat( #"0DF057E0" ); mintime = getDvarFloat( scr_kick_mintime);
} }
starttime = getTime(); starttime = getTime();
kickwait( waittime ); kickwait( waittime );
timepassed = ( getTime() - starttime ) / 1000; timepassed = ( getTime() - starttime ) / 1000;
if ( timepassed < ( waittime - 0,1 ) && timepassed < mintime ) if ( timepassed < ( waittime - 0.1 ) && timepassed < mintime )
{ {
return; return;
} }
@ -566,13 +570,13 @@ kickifidontspawninternal()
kick( self getentitynumber() ); kick( self getentitynumber() );
} }
kickwait( waittime ) kickwait( waittime ) //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
maps/mp/gametypes_zm/_hostmigration::waitlongdurationwithhostmigrationpause( waittime ); maps/mp/gametypes_zm/_hostmigration::waitlongdurationwithhostmigrationpause( waittime );
} }
spawninterroundintermission() spawninterroundintermission() //checked matches cerberus output
{ {
self notify( "spawned" ); self notify( "spawned" );
self notify( "end_respawn" ); self notify( "end_respawn" );
@ -588,10 +592,10 @@ spawninterroundintermission()
self maps/mp/gametypes_zm/_globallogic_defaults::default_onspawnintermission(); self maps/mp/gametypes_zm/_globallogic_defaults::default_onspawnintermission();
self setorigin( self.origin ); self setorigin( self.origin );
self setplayerangles( self.angles ); self setplayerangles( self.angles );
self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 );
} }
spawnintermission( usedefaultcallback ) spawnintermission( usedefaultcallback ) //checked changed to match cerberus output
{ {
self notify( "spawned" ); self notify( "spawned" );
self notify( "end_respawn" ); self notify( "end_respawn" );
@ -601,7 +605,7 @@ spawnintermission( usedefaultcallback )
self freeze_player_controls( 0 ); self freeze_player_controls( 0 );
if ( level.rankedmatch && waslastround() ) if ( level.rankedmatch && waslastround() )
{ {
if ( !self.postgamemilestones || self.postgamecontracts && self.postgamepromotion ) if ( self.postgamemilestones || self.postgamecontracts || self.postgamepromotion )
{ {
if ( self.postgamepromotion ) if ( self.postgamepromotion )
{ {
@ -623,8 +627,8 @@ spawnintermission( usedefaultcallback )
waittime = 4; waittime = 4;
while ( waittime ) while ( waittime )
{ {
wait 0,25; wait 0.25;
waittime -= 0,25; waittime -= 0.25;
self openmenu( game[ "menu_endgameupdate" ] ); self openmenu( game[ "menu_endgameupdate" ] );
} }
self closemenu(); self closemenu();
@ -644,27 +648,23 @@ spawnintermission( usedefaultcallback )
{ {
[[ level.onspawnintermission ]](); [[ level.onspawnintermission ]]();
} }
self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 );
} }
spawnqueuedclientonteam( team ) spawnqueuedclientonteam( team ) //checked partially changed to match cerberus output see info.md
{ {
player_to_spawn = undefined; player_to_spawn = undefined;
i = 0; for ( i = 0; i < level.deadplayers[team].size; i++ )
while ( i < level.deadplayers[ team ].size )
{ {
player = level.deadplayers[ team ][ i ]; player = level.deadplayers[ team ][ i ];
if ( player.waitingtospawn ) if ( player.waitingtospawn )
{ {
i++;
continue;
} }
else else
{ {
player_to_spawn = player; player_to_spawn = player;
break; break;
} }
i++;
} }
if ( isDefined( player_to_spawn ) ) if ( isDefined( player_to_spawn ) )
{ {
@ -674,7 +674,7 @@ spawnqueuedclientonteam( team )
} }
} }
spawnqueuedclient( dead_player_team, killer ) spawnqueuedclient( dead_player_team, killer ) //checked partially changed to match cerberus output see info.md
{ {
if ( !level.playerqueuedrespawn ) if ( !level.playerqueuedrespawn )
{ {
@ -691,11 +691,8 @@ spawnqueuedclient( dead_player_team, killer )
spawnqueuedclientonteam( spawn_team ); spawnqueuedclientonteam( spawn_team );
return; return;
} }
_a746 = level.teams; foreach ( team in level.teams )
_k746 = getFirstArrayKey( _a746 );
while ( isDefined( _k746 ) )
{ {
team = _a746[ _k746 ];
if ( team == dead_player_team ) if ( team == dead_player_team )
{ {
} }
@ -703,11 +700,10 @@ spawnqueuedclient( dead_player_team, killer )
{ {
spawnqueuedclientonteam( team ); spawnqueuedclientonteam( team );
} }
_k746 = getNextArrayKey( _a746, _k746 );
} }
} }
allteamsnearscorelimit() allteamsnearscorelimit() //checked changed to match cerberus output
{ {
if ( !level.teambased ) if ( !level.teambased )
{ {
@ -717,21 +713,17 @@ allteamsnearscorelimit()
{ {
return 0; return 0;
} }
_a763 = level.teams; foreach ( team in level.teams )
_k763 = getFirstArrayKey( _a763 );
while ( isDefined( _k763 ) )
{ {
team = _a763[ _k763 ]; if ( !( game[ "teamScores" ][ team ] >= ( level.scoreLimit - 1 ) ) )
if ( ( level.scorelimit - 1 ) < game[ "teamScores" ][ team ] )
{ {
return 0; return 0;
} }
_k763 = getNextArrayKey( _a763, _k763 );
} }
return 1; return 1;
} }
shouldshowrespawnmessage() shouldshowrespawnmessage() //checked matches cerberus output
{ {
if ( waslastround() ) if ( waslastround() )
{ {
@ -752,13 +744,13 @@ shouldshowrespawnmessage()
return 1; return 1;
} }
default_spawnmessage() default_spawnmessage() //checked matches cerberus output
{ {
setlowermessage( game[ "strings" ][ "spawn_next_round" ] ); setlowermessage( game[ "strings" ][ "spawn_next_round" ] );
self thread maps/mp/gametypes_zm/_globallogic_ui::removespawnmessageshortly( 3 ); self thread maps/mp/gametypes_zm/_globallogic_ui::removespawnmessageshortly( 3 );
} }
showspawnmessage() showspawnmessage() //checked matches cerberus output
{ {
if ( shouldshowrespawnmessage() ) if ( shouldshowrespawnmessage() )
{ {
@ -766,15 +758,17 @@ showspawnmessage()
} }
} }
spawnclient( timealreadypassed ) spawnclient( timealreadypassed ) //checked matches cerberus output
{ {
pixbeginevent( "spawnClient" ); pixbeginevent( "spawnClient" );
/*
/# /#
assert( isDefined( self.team ) ); assert( isDefined( self.team ) );
#/ #/
/# /#
assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) ); assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) );
#/ #/
*/
if ( !self mayspawn() ) if ( !self mayspawn() )
{ {
currentorigin = self.origin; currentorigin = self.origin;
@ -799,7 +793,7 @@ spawnclient( timealreadypassed )
pixendevent(); pixendevent();
} }
waitandspawnclient( timealreadypassed ) waitandspawnclient( timealreadypassed ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "end_respawn" ); self endon( "end_respawn" );
@ -898,7 +892,7 @@ waitandspawnclient( timealreadypassed )
self thread [[ level.spawnplayer ]](); self thread [[ level.spawnplayer ]]();
} }
waitrespawnorsafespawnbutton() waitrespawnorsafespawnbutton() //checked changed to match cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "end_respawn" ); self endon( "end_respawn" );
@ -908,14 +902,11 @@ waitrespawnorsafespawnbutton()
{ {
return; return;
} }
else wait 0.05;
{
wait 0,05;
}
} }
} }
waitinspawnqueue() waitinspawnqueue() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "end_respawn" ); self endon( "end_respawn" );
@ -928,7 +919,7 @@ waitinspawnqueue()
} }
} }
setthirdperson( value ) setthirdperson( value ) //checked matches cerberus output
{ {
if ( !level.console ) if ( !level.console )
{ {
@ -940,7 +931,7 @@ setthirdperson( value )
if ( value ) if ( value )
{ {
self setclientthirdperson( 1 ); self setclientthirdperson( 1 );
self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 );
} }
else else
{ {
@ -951,9 +942,10 @@ setthirdperson( value )
} }
} }
setspawnvariables() setspawnvariables() //checked matches cerberus output
{ {
resettimeout(); resettimeout();
self stopshellshock(); self stopshellshock();
self stoprumble( "damage_heavy" ); self stoprumble( "damage_heavy" );
} }

View File

@ -1,10 +1,18 @@
//checked includes changed to match cerberus output
#include maps/mp/gametypes_zm/_spawnlogic; #include maps/mp/gametypes_zm/_spawnlogic;
#include maps/mp/animscripts/traverse/shared; #include maps/mp/animscripts/traverse/shared;
#include maps/mp/animscripts/utility; #include maps/mp/animscripts/utility;
#include maps/mp/zombies/_load; #include maps/mp/zombies/_load;
#include maps/mp/_demo;
#include maps/mp/_global_fx;
#include maps/mp/_createfx; #include maps/mp/_createfx;
#include maps/mp/_art;
#include maps/mp/_serverfaceanim_mp;
#include maps/mp/_fxanim;
#include maps/mp/_music; #include maps/mp/_music;
#include maps/mp/_busing; #include maps/mp/_busing;
#include maps/mp/_audio;
#include maps/mp/_interactive_objects;
#include maps/mp/_script_gen; #include maps/mp/_script_gen;
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
@ -39,6 +47,7 @@ main( bscriptgened, bcsvgened, bsgenabled ) //checked partially changed to match
{ {
level.clientscripts = getDvar( "cg_usingClientScripts" ); level.clientscripts = getDvar( "cg_usingClientScripts" );
} }
level._client_exploders = []; level._client_exploders = [];
level._client_exploder_ids = []; level._client_exploder_ids = [];
if ( !isDefined( level.flag ) ) if ( !isDefined( level.flag ) )
@ -94,7 +103,7 @@ main( bscriptgened, bcsvgened, bsgenabled ) //checked partially changed to match
level.physicstracemaskwater = 4; level.physicstracemaskwater = 4;
level.physicstracemaskclip = 8; level.physicstracemaskclip = 8;
level.physicstracecontentsvehicleclip = 16; level.physicstracecontentsvehicleclip = 16;
if ( getDvar( "createfx" ) != "" ) //changed at own discretion if ( getDvar( "createfx" ) != "" )
{ {
level.createfx_enabled = getDvar( "createfx" ); level.createfx_enabled = getDvar( "createfx" );
} }
@ -497,3 +506,5 @@ start_intro_screen_zm() //checked changed to match cerberus output
} }

View File

@ -85,10 +85,6 @@ init() //checked matches cerberus output
{ {
level.disable_deadshot_clientfield = 0; //needs to be 0 even if the map doesn't have the perk level.disable_deadshot_clientfield = 0; //needs to be 0 even if the map doesn't have the perk
} }
if ( !isDefined( level.use_clientside_rock_tearin_fx ) )
{
level.use_clientside_rock_tearin_fx = 0;
}
if ( !isDefined( level.no_end_game_check ) ) if ( !isDefined( level.no_end_game_check ) )
{ {
level.no_end_game_check = 0; level.no_end_game_check = 0;
@ -269,6 +265,7 @@ init() //checked matches cerberus output
level thread onallplayersready(); level thread onallplayersready();
level thread startunitriggers(); level thread startunitriggers();
level thread maps/mp/gametypes_zm/_zm_gametype::post_init_gametype(); level thread maps/mp/gametypes_zm/_zm_gametype::post_init_gametype();
level notify( "_zmFullyParsed" );
} }
post_main() //checked matches cerberus output post_main() //checked matches cerberus output
@ -2711,7 +2708,7 @@ spectator_respawn() //checked changed to match cerberus output
return 1; return 1;
} }
check_for_valid_spawn_near_team( revivee, return_struct ) //checked changed to match cerberus output check_for_valid_spawn_near_team( revivee, return_struct ) //checked partially changed to match beta dump
{ {
if ( isDefined( level.check_for_valid_spawn_near_team_callback ) ) if ( isDefined( level.check_for_valid_spawn_near_team_callback ) )
{ {
@ -2730,10 +2727,9 @@ check_for_valid_spawn_near_team( revivee, return_struct ) //checked changed to m
{ {
return undefined; return undefined;
} }
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
if ( is_player_valid( players[ i ], undefined, 1 ) && players[ i ] != self ) if ( maps/mp/zombies/_zm_utility::is_player_valid( players[ i ], undefined, 1 ) && players[ i ] != self )
{ {
for ( j = 0; j < spawn_points.size; j++ ) for ( j = 0; j < spawn_points.size; j++ )
{ {
@ -2755,13 +2751,14 @@ check_for_valid_spawn_near_team( revivee, return_struct ) //checked changed to m
closest_distance = plyr_dist; closest_distance = plyr_dist;
closest_group = j; closest_group = j;
} }
i++;
continue;
} }
if ( plyr_dist < backup_distance ) else
{ {
backup_group = j; if ( plyr_dist < backup_distance )
backup_distance = plyr_dist; {
backup_group = j;
backup_distance = plyr_dist;
}
} }
} }
} }
@ -2778,31 +2775,33 @@ check_for_valid_spawn_near_team( revivee, return_struct ) //checked changed to m
return spawn_location; return spawn_location;
} }
} }
i++;
} }
return undefined; return undefined;
} }
} }
get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ) //checked changed to match cerberus output get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ) //checked partially changed to match cerberus output see info.md
{ {
spawn_array = getstructarray( spawn_points[ closest_group ].target, "targetname" ); spawn_array = getstructarray( spawn_points[ closest_group ].target, "targetname" );
spawn_array = array_randomize( spawn_array ); spawn_array = array_randomize( spawn_array );
for ( k = 0; k < spawn_array.size; k++ ) k = 0;
while ( k < spawn_array.size )
{ {
if ( isdefined( spawn_array[ k ].plyr ) && spawn_array[ k ].plyr == revivee getentitynumber() ) if ( isdefined( spawn_array[ k ].plyr ) && spawn_array[ k ].plyr == revivee getentitynumber() )
{ {
if ( positionwouldtelefrag( spawn_array[ k ].origin ) ) if ( positionwouldtelefrag( spawn_array[ k ].origin ) )
{ {
spawn_array[k].plyr = undefined; spawn_array[ k ].plyr = undefined;
break; k++;
continue;
} }
if ( isdefined( return_struct ) && return_struct ) if ( isdefined( return_struct ) && return_struct )
{ {
return spawn_array[k]; return spawn_array[ k ];
} }
return spawn_array[k].origin; return spawn_array[ k ].origin;
} }
k++;
} }
k = 0; k = 0;
while ( k < spawn_array.size ) while ( k < spawn_array.size )
@ -2851,7 +2850,7 @@ check_for_valid_spawn_near_position( revivee, v_position, return_struct ) //chec
{ {
ideal_distance = 1000; ideal_distance = 1000;
} }
if(spawn_points[ i ].locked == 0) if ( spawn_points[ i ].locked == 0 )
{ {
dist = distancesquared( v_position, spawn_points[ i ].origin ); dist = distancesquared( v_position, spawn_points[ i ].origin );
if ( dist < ideal_distance * ideal_distance ) if ( dist < ideal_distance * ideal_distance )
@ -3054,6 +3053,7 @@ round_spawning() //checked changed to match cerberus output
level thread zombie_speed_up(); level thread zombie_speed_up();
} }
level.zombie_total = [[ level.max_zombie_func ]]( max ); level.zombie_total = [[ level.max_zombie_func ]]( max );
level notify( "zombie_total_set" ); level notify( "zombie_total_set" );
mixed_spawns = 0; mixed_spawns = 0;
old_spawn = undefined; old_spawn = undefined;
@ -3518,7 +3518,7 @@ round_think( restart ) //checked changed to match cerberus output
{ {
if ( isdefined( player.hostmigrationcontrolsfrozen ) && player.hostmigrationcontrolsfrozen ) if ( isdefined( player.hostmigrationcontrolsfrozen ) && player.hostmigrationcontrolsfrozen )
{ {
player freezecontrols(0); player freezecontrols( 0 );
} }
player maps/mp/zombies/_zm_stats::set_global_stat( "rounds", level.round_number ); player maps/mp/zombies/_zm_stats::set_global_stat( "rounds", level.round_number );
} }
@ -3559,15 +3559,13 @@ round_think( restart ) //checked changed to match cerberus output
level notify( "start_of_round" ); level notify( "start_of_round" );
recordzombieroundstart(); recordzombieroundstart();
players = getplayers(); players = getplayers();
index = 0; for ( index = 0; index < players.size; index++ )
while ( index < players.size )
{ {
zonename = players[ index ] get_current_zone(); zonename = players[ index ] get_current_zone();
if ( isDefined( zonename ) ) if ( isDefined( zonename ) )
{ {
players[ index ] recordzombiezone( "startingZone", zonename ); players[ index ] recordzombiezone( "startingZone", zonename );
} }
index++;
} }
if ( isDefined( level.round_start_custom_func ) ) if ( isDefined( level.round_start_custom_func ) )
{ {
@ -3590,6 +3588,7 @@ round_think( restart ) //checked changed to match cerberus output
} }
else if ( players.size != 1 ) else if ( players.size != 1 )
{ {
//testing definitely broken
level thread spectators_respawn(); level thread spectators_respawn();
} }
players = get_players(); players = get_players();
@ -3688,11 +3687,6 @@ ai_calculate_health( round_number ) //checked changed to match cerberus output
level.zombie_health = int( level.zombie_health + level.zombie_vars[ "zombie_health_increase" ] ); level.zombie_health = int( level.zombie_health + level.zombie_vars[ "zombie_health_increase" ] );
i++; i++;
} }
if ( level.debugLogging_zm )
{
logline8 = "_zm.gsc ai_calculate_health() The value of level.zombie_health is: " + level.zombie_health + "\n";
logprint( logline8 );
}
} }
ai_zombie_health( round_number ) //checked changed to match cerberus output ai_zombie_health( round_number ) //checked changed to match cerberus output
@ -4355,7 +4349,7 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
//checked against bo3 _zm.gsc changed to match //checked against bo3 _zm.gsc changed to match
if ( count < players.size || isDefined( level._game_module_game_end_check ) && ![[ level._game_module_game_end_check ]]() ) if ( count < players.size || isDefined( level._game_module_game_end_check ) && ![[ level._game_module_game_end_check ]]() )
{ {
if ( isDefined( self.lives ) && self.lives > 0 || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive || self hasperk( "specialty_quickrevive" ) ) if ( isDefined( self.lives ) && self.lives > 0 || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && self hasperk( "specialty_quickrevive" ) )
{ {
self thread wait_and_revive(); self thread wait_and_revive();
} }
@ -4367,7 +4361,6 @@ player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath,
{ {
self.intermission = 1; self.intermission = 1;
solo_death = 1; solo_death = 1;
} }
} }
//checked against bo3 _zm.gsc changed to match //checked against bo3 _zm.gsc changed to match

View File

@ -7,6 +7,7 @@ patch_zm/maps/mp/gametypes_zm/_scoreboard.gsc
patch_zm/maps/mp/gametypes_zm/_shellshock.gsc patch_zm/maps/mp/gametypes_zm/_shellshock.gsc
patch_zm/maps/mp/gametypes_zm/_zm_gametype.gsc patch_zm/maps/mp/gametypes_zm/_zm_gametype.gsc
patch_zm/maps/mp/gametypes_zm/zclassic.gsc patch_zm/maps/mp/gametypes_zm/zclassic.gsc
patch_zm/maps/mp/zombies/_load.gsc
patch_zm/maps/mp/zombies/_zm_ai_basic.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_dogs.gsc
patch_zm/maps/mp/zombies/_zm_ai_faller.gsc patch_zm/maps/mp/zombies/_zm_ai_faller.gsc
@ -44,7 +45,6 @@ patch_zm/maps/mp/zombies/_zm_utility.gsc
``` ```
### The following scripts compile but cause a minidump or other severe error: ### The following scripts compile but cause a minidump or other severe error:
``` ```
patch_zm/maps/mp/zombies/_load.gsc
patch_zm/maps/mp/zombies/_zm_pers_upgrades_functions.gsc patch_zm/maps/mp/zombies/_zm_pers_upgrades_functions.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
@ -52,6 +52,7 @@ patch_zm/maps/mp/zombies/_zm_pers_upgrades_functions.gsc
patch_zm/maps/mp/gametypes_zm/_callbacksetup.gsc patch_zm/maps/mp/gametypes_zm/_callbacksetup.gsc
patch_zm/maps/mp/gametypes_zm/_damagefeedback.gsc patch_zm/maps/mp/gametypes_zm/_damagefeedback.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_actor.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_actor.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_spawn.gsc
patch_zm/maps/mp/gametypes_zm/_healthoverlay.gsc patch_zm/maps/mp/gametypes_zm/_healthoverlay.gsc
patch_zm/maps/mp/gametypes_zm/_hostmigration.gsc patch_zm/maps/mp/gametypes_zm/_hostmigration.gsc
patch_zm/maps/mp/gametypes_zm/_hud.gsc patch_zm/maps/mp/gametypes_zm/_hud.gsc
@ -111,7 +112,6 @@ patch_zm/maps/mp/gametypes_zm/_globallogic_audio.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_defaults.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_defaults.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_player.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_player.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_score.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_score.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_spawn.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_ui.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_ui.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_utils.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_utils.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_vehicle.gsc patch_zm/maps/mp/gametypes_zm/_globallogic_vehicle.gsc

View File

@ -117,7 +117,6 @@ custom_end_screen() //checked changed to match cerberus output
if ( isDefined( level.gamemodulewinningteam ) && players[ i ]._encounters_team == level.gamemodulewinningteam ) if ( isDefined( level.gamemodulewinningteam ) && players[ i ]._encounters_team == level.gamemodulewinningteam )
{ {
players[ i ].survived_hud settext( winner_text, level.round_number ); players[ i ].survived_hud settext( winner_text, level.round_number );
break;
} }
else else
{ {
@ -328,15 +327,18 @@ meat_bounce_override(pos, normal, ent) //checked matches cerberus output
players = getplayers(); players = getplayers();
closest_player = undefined; closest_player = undefined;
closest_player_dist = 10000; closest_player_dist = 10000;
for(player_index = 0; player_index < players.size; player_index++) player_index = 0;
while ( player_index < players.size )
{ {
player_to_check = players[player_index]; player_to_check = players[player_index];
if(self.owner == player_to_check) if(self.owner == player_to_check)
{ {
player_index++;
continue; continue;
} }
if(player_to_check maps/mp/zombies/_zm_laststand::player_is_in_laststand()) if(player_to_check maps/mp/zombies/_zm_laststand::player_is_in_laststand())
{ {
player_index++;
continue; continue;
} }
distsq = distancesquared(pos, player_to_check.origin); distsq = distancesquared(pos, player_to_check.origin);
@ -345,6 +347,7 @@ meat_bounce_override(pos, normal, ent) //checked matches cerberus output
closest_player = player_to_check; closest_player = player_to_check;
closest_player_dist = distsq; closest_player_dist = distsq;
} }
player_index++;
} }
if(isdefined(closest_player)) if(isdefined(closest_player))
{ {
@ -605,22 +608,26 @@ grief_laststand_weapons_return() //checked changed to match cerberus output
return 0; return 0;
} }
primary_weapons_returned = 0; primary_weapons_returned = 0;
foreach ( weapon in self.grief_savedweapon_weapons ) i = 0;
while ( i < self.grief_savedweapon_weapons.size )
{ {
if ( isdefined( self.grief_savedweapon_grenades ) && weapon == self.grief_savedweapon_grenades || ( isdefined( self.grief_savedweapon_tactical ) && weapon == self.grief_savedweapon_tactical ) ) if ( isdefined( self.grief_savedweapon_grenades ) && weapon == self.grief_savedweapon_grenades || ( isdefined( self.grief_savedweapon_tactical ) && weapon == self.grief_savedweapon_tactical ) )
{ {
i++;
continue; continue;
} }
if ( isweaponprimary( weapon ) ) if ( isweaponprimary( weapon ) )
{ {
if ( primary_weapons_returned >= 2 ) if ( primary_weapons_returned >= 2 )
{ {
i++;
continue; continue;
} }
primary_weapons_returned++; primary_weapons_returned++;
} }
if ( "item_meat_zm" == weapon ) if ( "item_meat_zm" == weapon )
{ {
i++;
continue; continue;
} }
self giveweapon( weapon, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); self giveweapon( weapon, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) );
@ -632,6 +639,7 @@ grief_laststand_weapons_return() //checked changed to match cerberus output
{ {
self setweaponammostock( weapon, self.grief_savedweapon_weaponsammo_stock[ index ] ); self setweaponammostock( weapon, self.grief_savedweapon_weaponsammo_stock[ index ] );
} }
i++;
} }
if ( isDefined( self.grief_savedweapon_grenades ) ) if ( isDefined( self.grief_savedweapon_grenades ) )
{ {
@ -727,10 +735,11 @@ update_players_on_bleedout_or_disconnect( excluded_player ) //checked changed to
other_team = undefined; other_team = undefined;
players = get_players(); players = get_players();
players_remaining = 0; players_remaining = 0;
foreach ( player in players ) while ( i < players.size )
{ {
if ( player == excluded_player ) if ( player == excluded_player )
{ {
i++;
continue; continue;
} }
if ( player.team == excluded_player.team ) if ( player.team == excluded_player.team )
@ -739,13 +748,16 @@ update_players_on_bleedout_or_disconnect( excluded_player ) //checked changed to
{ {
players_remaining++; players_remaining++;
} }
i++;
continue; continue;
} }
i++;
} }
foreach ( player in players ) while ( i < players.size )
{ {
if ( player == excluded_player ) if ( player == excluded_player )
{ {
i++;
continue; continue;
} }
if ( player.team != excluded_player.team ) if ( player.team != excluded_player.team )
@ -755,10 +767,12 @@ update_players_on_bleedout_or_disconnect( excluded_player ) //checked changed to
{ {
player thread show_grief_hud_msg( &"ZOMBIE_ZGRIEF_ALL_PLAYERS_DOWN", undefined, undefined, 1 ); player thread show_grief_hud_msg( &"ZOMBIE_ZGRIEF_ALL_PLAYERS_DOWN", undefined, undefined, 1 );
player delay_thread_watch_host_migrate( 2, ::show_grief_hud_msg, &"ZOMBIE_ZGRIEF_SURVIVE", undefined, 30, 1 ); player delay_thread_watch_host_migrate( 2, ::show_grief_hud_msg, &"ZOMBIE_ZGRIEF_SURVIVE", undefined, 30, 1 );
i++;
continue; continue;
} }
player thread show_grief_hud_msg( &"ZOMBIE_ZGRIEF_PLAYER_BLED_OUT", players_remaining ); player thread show_grief_hud_msg( &"ZOMBIE_ZGRIEF_PLAYER_BLED_OUT", players_remaining );
} }
i++;
} }
if ( players_remaining == 1 ) if ( players_remaining == 1 )
{ {
@ -808,3 +822,5 @@ grief_round_end_custom_logic() //checked matches cerberus output
} }
} }