checked 3 more scripts

_battlechatter_mp, _persistence, and _pregame have been checked.
This commit is contained in:
JezuzLizard 2020-05-12 21:20:07 -07:00
parent 3b5174634c
commit 62dfea4215
4 changed files with 387 additions and 479 deletions

View File

@ -1,29 +1,28 @@
//checked includes match cerberus output
#include maps/mp/killstreaks/_killstreaks; #include maps/mp/killstreaks/_killstreaks;
#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util; #include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
init() init() //checked changed to match cerberus output
{ {
if ( level.createfx_enabled ) if ( level.createfx_enabled )
{ {
return; return;
} }
_a10 = level.teams; foreach ( team in level.teams )
_k10 = getFirstArrayKey( _a10 );
while ( isDefined( _k10 ) )
{ {
team = _a10[ _k10 ]; /*
/# /#
assert( isDefined( level.teamprefix[ team ] ) ); assert( isDefined( level.teamprefix[ team ] ) );
#/ #/
/# /#
assert( isDefined( level.teamprefix[ team ] ) ); assert( isDefined( level.teamprefix[ team ] ) );
#/ #/
*/
level.isteamspeaking[ team ] = 0; level.isteamspeaking[ team ] = 0;
level.speakers[ team ] = []; level.speakers[ team ] = [];
_k10 = getNextArrayKey( _a10, _k10 );
} }
level.bcsounds = []; level.bcsounds = [];
level.bcsounds[ "inform_attack" ] = "attack"; level.bcsounds[ "inform_attack" ] = "attack";
@ -113,7 +112,7 @@ init()
level.battlechatter_init = 1; level.battlechatter_init = 1;
} }
onplayerconnect() onplayerconnect() //checked matches cerberus output
{ {
for ( ;; ) for ( ;; )
{ {
@ -123,7 +122,7 @@ onplayerconnect()
} }
} }
updatebcdvars() updatebcdvars() //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
for ( ;; ) for ( ;; )
@ -137,7 +136,7 @@ updatebcdvars()
} }
} }
onjoinedteam() onjoinedteam() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
@ -148,7 +147,7 @@ onjoinedteam()
} }
} }
onjoinedspectators() onjoinedspectators() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
@ -157,7 +156,7 @@ onjoinedspectators()
} }
} }
onplayerspawned() onplayerspawned() //checked changed to match cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
@ -172,8 +171,6 @@ onplayerspawned()
{ {
continue; continue;
} }
else
{
self thread reloadtracking(); self thread reloadtracking();
self thread grenadetracking(); self thread grenadetracking();
self thread enemythreat(); self thread enemythreat();
@ -184,12 +181,11 @@ onplayerspawned()
self thread deathvox(); self thread deathvox();
self thread watchmissileusage(); self thread watchmissileusage();
} }
}
} }
enemycontactleveldelay() enemycontactleveldelay()
{ {
while ( 1 ) while ( 1 ) //checked matches cerberus output
{ {
level waittill( "level_enemy_spotted" ); level waittill( "level_enemy_spotted" );
level.enemyspotteddialog = 0; level.enemyspotteddialog = 0;
@ -198,7 +194,7 @@ enemycontactleveldelay()
} }
} }
breathinghurtvox() breathinghurtvox() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -208,7 +204,7 @@ breathinghurtvox()
self waittill( "snd_breathing_hurt" ); self waittill( "snd_breathing_hurt" );
if ( randomintrange( 0, 100 ) >= level.bcmp_breathing_probability ) if ( randomintrange( 0, 100 ) >= level.bcmp_breathing_probability )
{ {
wait 0,5; wait 0.5;
if ( isalive( self ) ) if ( isalive( self ) )
{ {
level thread mpsaylocalsound( self, "breathing", "hurt", 0, 1 ); level thread mpsaylocalsound( self, "breathing", "hurt", 0, 1 );
@ -218,7 +214,7 @@ breathinghurtvox()
} }
} }
onfirescream() onfirescream() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -227,7 +223,7 @@ onfirescream()
self waittill( "snd_burn_scream" ); self waittill( "snd_burn_scream" );
if ( randomintrange( 0, 100 ) >= level.bcmp_breathing_probability ) if ( randomintrange( 0, 100 ) >= level.bcmp_breathing_probability )
{ {
wait 0,5; wait 0.5;
if ( isalive( self ) ) if ( isalive( self ) )
{ {
level thread mpsaylocalsound( self, "fire", "scream" ); level thread mpsaylocalsound( self, "fire", "scream" );
@ -237,7 +233,7 @@ onfirescream()
} }
} }
breathingbettervox() breathingbettervox() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -252,7 +248,7 @@ breathingbettervox()
} }
} }
laststandvox() laststandvox() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -268,7 +264,7 @@ laststandvox()
} }
} }
allyrevive() allyrevive() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -283,7 +279,7 @@ allyrevive()
} }
} }
painvox() painvox() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -302,7 +298,7 @@ painvox()
} }
} }
deathvox() deathvox() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self waittill( "death" ); self waittill( "death" );
@ -313,7 +309,7 @@ deathvox()
} }
} }
stickygrenadetracking() stickygrenadetracking() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -333,7 +329,7 @@ stickygrenadetracking()
} }
} }
onplayersuicideorteamkill( player, type ) onplayersuicideorteamkill( player, type ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
waittillframeend; waittillframeend;
@ -363,22 +359,22 @@ onplayersuicideorteamkill( player, type )
} }
} }
onplayerkillstreak( player ) onplayerkillstreak( player ) //checked matches cerberus output
{ {
player endon( "disconnect" ); player endon( "disconnect" );
} }
onkillstreakused( killstreak, team ) onkillstreakused( killstreak, team ) //checked matches cerberus output
{ {
} }
onplayernearexplodable( object, type ) onplayernearexplodable( object, type ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "explosion_started" ); self endon( "explosion_started" );
} }
shoeboxtracking() shoeboxtracking() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -393,7 +389,7 @@ shoeboxtracking()
} }
} }
checkweaponreload( weapon ) checkweaponreload( weapon ) //checked matches cerberus output
{ {
switch( weapon ) switch( weapon )
{ {
@ -408,7 +404,7 @@ checkweaponreload( weapon )
} }
} }
reloadtracking() reloadtracking() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -427,14 +423,14 @@ reloadtracking()
} }
} }
perkspecificbattlechatter( type, checkdistance ) perkspecificbattlechatter( type, checkdistance ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "perk_done" ); self endon( "perk_done" );
} }
enemythreat() enemythreat() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -466,53 +462,45 @@ enemythreat()
} }
} }
weaponfired() weaponfired() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
{ {
self waittill( "weapon_fired" ); self waittill( "weapon_fired" );
while ( ( getTime() - self.lastbcattempttime ) > level.bcweapondelay ) if ( ( getTime() - self.lastbcattempttime ) > level.bcweapondelay )
{ {
self.lastbcattempttime = getTime(); self.lastbcattempttime = getTime();
while ( randomintrange( 0, 100 ) >= level.bcweaponfireprobability ) if ( randomintrange( 0, 100 ) >= level.bcweaponfireprobability )
{ {
self.landmarkent = self getlandmark(); self.landmarkent = self getlandmark();
while ( isDefined( self.landmarkent ) ) if ( isDefined( self.landmarkent ) )
{ {
myteam = self.team; myteam = self.team;
_a646 = level.teams; foreach ( team in level.teams )
_k646 = getFirstArrayKey( _a646 );
while ( isDefined( _k646 ) )
{ {
team = _a646[ _k646 ];
if ( team == myteam ) if ( team == myteam )
{ {
break;
} }
else
{
keys = getarraykeys( level.squads[ team ] ); keys = getarraykeys( level.squads[ team ] );
i = 0; for ( i = 0; i < keys.size; i++ )
while ( i < keys.size )
{ {
if ( level.squads[ team ][ keys[ i ] ].size ) if ( level.squads[ team ][ keys[ i ] ].size )
{ {
index = randomintrange( 0, level.squads[ team ][ keys[ i ] ].size ); index = randomintrange( 0, level.squads[ team ][ keys[ i ] ].size );
level thread mpsaylocalsound( level.squads[ team ][ keys[ i ] ][ index ], "enemy", "infantry" ); level thread mpsaylocalsound( level.squads[ team ][ keys[ i ] ][ index ], "enemy", "infantry" );
} }
i++;
} }
} }
_k646 = getNextArrayKey( _a646, _k646 );
}
} }
} }
} }
} }
} }
killedbysniper( sniper ) killedbysniper( sniper ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
sniper endon( "disconnect" ); sniper endon( "disconnect" );
@ -539,7 +527,7 @@ killedbysniper( sniper )
} }
} }
playerkilled( attacker ) playerkilled( attacker ) //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
if ( !isplayer( attacker ) ) if ( !isplayer( attacker ) )
@ -572,7 +560,7 @@ playerkilled( attacker )
} }
} }
grenadetracking() grenadetracking() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -588,7 +576,7 @@ grenadetracking()
level thread incominggrenadetracking( self, grenade, "grenade" ); level thread incominggrenadetracking( self, grenade, "grenade" );
continue; continue;
} }
else if ( weaponname == "satchel_charge_mp" ) if ( weaponname == "satchel_charge_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -596,7 +584,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "emp_grenade_mp" ) if ( weaponname == "emp_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -604,7 +592,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "claymore_mp" ) if ( weaponname == "claymore_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -612,7 +600,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "flash_grenade_mp" ) if ( weaponname == "flash_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -620,7 +608,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "sticky_grenade_mp" ) if ( weaponname == "sticky_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -628,7 +616,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "tabun_gas_mp" ) if ( weaponname == "tabun_gas_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -636,7 +624,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "willy_pete_mp" ) if ( weaponname == "willy_pete_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -644,7 +632,7 @@ grenadetracking()
} }
continue; continue;
} }
else if ( weaponname == "hatchet_mp" || weaponname == "proximity_grenade_mp" ) if ( weaponname == "hatchet_mp" || weaponname == "proximity_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
@ -652,50 +640,46 @@ grenadetracking()
} }
continue; continue;
} }
else
{
if ( weaponname == "concussion_grenade_mp" ) if ( weaponname == "concussion_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
level thread mpsaylocalsound( self, "inform_attack", "concussion" ); level thread mpsaylocalsound( self, "inform_attack", "concussion" );
} }
break; continue;
} }
else if ( weaponname == "scrambler_mp" ) if ( weaponname == "scrambler_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
level thread mpsaylocalsound( self, "inform_attack", "scrambler" ); level thread mpsaylocalsound( self, "inform_attack", "scrambler" );
} }
break; continue;
} }
else if ( weaponname == "tactical_insertion_mp" ) if ( weaponname == "tactical_insertion_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
level thread mpsaylocalsound( self, "inform_attack", "tactical" ); level thread mpsaylocalsound( self, "inform_attack", "tactical" );
} }
break; continue;
} }
else if ( weaponname == "bouncingbetty_mp" ) if ( weaponname == "bouncingbetty_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctosstrophyprobability ) if ( randomintrange( 0, 100 ) >= level.bctosstrophyprobability )
{ {
level thread mpsaylocalsound( self, "inform_attack", "c4" ); level thread mpsaylocalsound( self, "inform_attack", "c4" );
} }
break; continue;
} }
else if ( weaponname == "sensor_grenade_mp" ) if ( weaponname == "sensor_grenade_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bctossgrenadeprobability )
{ {
level thread mpsaylocalsound( self, "inform_attack", "hatchet" ); level thread mpsaylocalsound( self, "inform_attack", "hatchet" );
} }
break; continue;
} }
else
{
if ( weaponname == "trophy_system_mp" ) if ( weaponname == "trophy_system_mp" )
{ {
if ( randomintrange( 0, 100 ) >= level.bctosstrophyprobability ) if ( randomintrange( 0, 100 ) >= level.bctosstrophyprobability )
@ -704,11 +688,9 @@ grenadetracking()
} }
} }
} }
}
}
} }
watchmissileusage() watchmissileusage() //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -718,17 +700,13 @@ watchmissileusage()
self waittill( "missile_fire", missile, weapon_name ); self waittill( "missile_fire", missile, weapon_name );
if ( weapon_name == "usrpg_mp" ) if ( weapon_name == "usrpg_mp" )
{ {
level thread incominggrenadetracking( self, missile, "rpg", 0,2 ); level thread incominggrenadetracking( self, missile, "rpg", 0.2 );
continue;
} }
else
{
return; return;
} }
}
} }
incominggrenadetracking( thrower, grenade, type, waittime ) incominggrenadetracking( thrower, grenade, type, waittime ) //checked matches cerberus output
{ {
if ( randomintrange( 0, 100 ) >= level.bcincominggrenadeprobability ) if ( randomintrange( 0, 100 ) >= level.bcincominggrenadeprobability )
{ {
@ -757,7 +735,7 @@ incominggrenadetracking( thrower, grenade, type, waittime )
} }
} }
incomingspecialgrenadetracking( type ) incomingspecialgrenadetracking( type ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -776,7 +754,7 @@ incomingspecialgrenadetracking( type )
} }
} }
gametypespecificbattlechatter( event, team ) gametypespecificbattlechatter( event, team ) //checked changed to match the beta dump _battlechatter_mp.gsc
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -785,30 +763,27 @@ gametypespecificbattlechatter( event, team )
{ {
if ( isDefined( team ) ) if ( isDefined( team ) )
{ {
index = checkdistancetoevent( self, 90000 );
index = CheckDistanceToEvent( self, 300 * 300 );
if ( isDefined( index ) ) if ( isDefined( index ) )
{ {
level thread mpsaylocalsound( level.aliveplayers[ team ][ index ], "gametype", event ); level thread mpSayLocalSound( level.alivePlayers[ team ][ index ], "gametype", event );
self notify( "event_ended" ); self notify( "event_ended" );
} }
} }
else else
{ {
_a939 = level.teams; foreach ( team in level.teams )
_k939 = getFirstArrayKey( _a939 );
while ( isDefined( _k939 ) )
{ {
team = _a939[ _k939 ]; index = randomIntRange( 0, level.alivePlayers[ team ].size );
index = randomintrange( 0, level.aliveplayers[ team ].size ); level thread mpSayLocalSound( level.alivePlayers[ team ][ index ], "gametype", event );
level thread mpsaylocalsound( level.aliveplayers[ team ][ index ], "gametype", event );
_k939 = getNextArrayKey( _a939, _k939 );
} }
} }
wait 1; wait 1;
} }
} }
checkweaponkill( weapon ) checkweaponkill( weapon ) //checked matches cerberus output
{ {
switch( weapon ) switch( weapon )
{ {
@ -820,7 +795,7 @@ checkweaponkill( weapon )
} }
} }
saykillbattlechatter( attacker, sweapon, victim ) saykillbattlechatter( attacker, sweapon, victim ) //checked changed to match cerberus output
{ {
if ( checkweaponkill( sweapon ) ) if ( checkweaponkill( sweapon ) )
{ {
@ -828,22 +803,19 @@ saykillbattlechatter( attacker, sweapon, victim )
} }
if ( isDefined( victim.issniperspotted ) && victim.issniperspotted && randomintrange( 0, 100 ) >= level.bckillinformprobability ) if ( isDefined( victim.issniperspotted ) && victim.issniperspotted && randomintrange( 0, 100 ) >= level.bckillinformprobability )
{ {
level thread saylocalsounddelayed( attacker, "kill", "sniper", 0,75 ); level thread saylocalsounddelayed( attacker, "kill", "sniper", 0.75 );
victim.issniperspotted = 0; victim.issniperspotted = 0;
} }
else else if ( isDefined( level.bckillinformprobability ) && randomintrange( 0, 100 ) >= level.bckillinformprobability )
{
if ( isDefined( level.bckillinformprobability ) && randomintrange( 0, 100 ) >= level.bckillinformprobability )
{ {
if ( !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) ) if ( !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) )
{ {
level thread saylocalsounddelayed( attacker, "kill", "infantry", 0,75 ); level thread saylocalsounddelayed( attacker, "kill", "infantry", 0.75 );
}
} }
} }
} }
saylocalsounddelayed( player, soundtype1, soundtype2, delay ) saylocalsounddelayed( player, soundtype1, soundtype2, delay ) //checked matches cerberus output
{ {
player endon( "death" ); player endon( "death" );
player endon( "disconnect" ); player endon( "disconnect" );
@ -855,7 +827,7 @@ saylocalsounddelayed( player, soundtype1, soundtype2, delay )
mpsaylocalsound( player, soundtype1, soundtype2 ); mpsaylocalsound( player, soundtype1, soundtype2 );
} }
saylocalsound( player, soundtype ) saylocalsound( player, soundtype ) //checked matches cerberus output
{ {
player endon( "death" ); player endon( "death" );
player endon( "disconnect" ); player endon( "disconnect" );
@ -869,7 +841,7 @@ saylocalsound( player, soundtype )
} }
} }
mpsaylocalsound( player, partone, parttwo, checkspeakers, is2d ) mpsaylocalsound( player, partone, parttwo, checkspeakers, is2d ) //checked changed to match cerberus output
{ {
player endon( "death" ); player endon( "death" );
player endon( "disconnect" ); player endon( "disconnect" );
@ -894,7 +866,6 @@ mpsaylocalsound( player, partone, parttwo, checkspeakers, is2d )
if ( isDefined( is2d ) ) if ( isDefined( is2d ) )
{ {
player thread dosound( soundalias, is2d ); player thread dosound( soundalias, is2d );
return;
} }
else else
{ {
@ -903,7 +874,7 @@ mpsaylocalsound( player, partone, parttwo, checkspeakers, is2d )
} }
} }
mpsaylocationallocalsound( player, prefix, partone, parttwo ) mpsaylocationallocalsound( player, prefix, partone, parttwo ) //checked matches cerberus output
{ {
player endon( "death" ); player endon( "death" );
player endon( "disconnect" ); player endon( "disconnect" );
@ -923,7 +894,7 @@ mpsaylocationallocalsound( player, prefix, partone, parttwo )
} }
} }
dosound( soundalias, is2d ) dosound( soundalias, is2d ) //checked changed to match cerberus output
{ {
team = self.team; team = self.team;
level addspeaker( self, team ); level addspeaker( self, team );
@ -931,19 +902,16 @@ dosound( soundalias, is2d )
{ {
self playlocalsound( soundalias ); self playlocalsound( soundalias );
} }
else else if ( level.allowbattlechatter && level.teambased )
{
if ( level.allowbattlechatter && level.teambased )
{ {
self playsoundontag( soundalias, "J_Head" ); self playsoundontag( soundalias, "J_Head" );
} }
}
self thread waitplaybacktime( soundalias ); self thread waitplaybacktime( soundalias );
self waittill_any( soundalias, "death", "disconnect" ); self waittill_any( soundalias, "death", "disconnect" );
level removespeaker( self, team ); level removespeaker( self, team );
} }
dolocationalsound( soundalias1, soundalias2 ) dolocationalsound( soundalias1, soundalias2 ) //checked matches cerberus output
{ {
team = self.team; team = self.team;
level addspeaker( self, team ); level addspeaker( self, team );
@ -956,7 +924,7 @@ dolocationalsound( soundalias1, soundalias2 )
level removespeaker( self, team ); level removespeaker( self, team );
} }
waitplaybacktime( soundalias ) waitplaybacktime( soundalias ) //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -973,15 +941,14 @@ waitplaybacktime( soundalias )
self notify( soundalias ); self notify( soundalias );
} }
isspeakerinrange( player ) isspeakerinrange( player ) //checked changed to match cerberus output
{ {
player endon( "death" ); player endon( "death" );
player endon( "disconnect" ); player endon( "disconnect" );
distsq = 1000000; distsq = 1000000;
while ( isDefined( player ) && isDefined( player.team ) && player.team != "spectator" ) if ( isDefined( player ) && isDefined( player.team ) && player.team != "spectator" )
{ {
index = 0; for ( index = 0; index < level.speakers[player.team].size; index++ )
while ( index < level.speakers[ player.team ].size )
{ {
teammate = level.speakers[ player.team ][ index ]; teammate = level.speakers[ player.team ][ index ];
if ( teammate == player ) if ( teammate == player )
@ -992,18 +959,17 @@ isspeakerinrange( player )
{ {
return 1; return 1;
} }
index++;
} }
} }
return 0; return 0;
} }
addspeaker( player, team ) addspeaker( player, team ) //checked matches cerberus output
{ {
level.speakers[ team ][ level.speakers[ team ].size ] = player; level.speakers[ team ][ level.speakers[ team ].size ] = player;
} }
removespeaker( player, team ) removespeaker( player, team ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{ {
newspeakers = []; newspeakers = [];
index = 0; index = 0;
@ -1014,31 +980,26 @@ removespeaker( player, team )
index++; index++;
continue; continue;
} }
else
{
newspeakers[ newspeakers.size ] = level.speakers[ team ][ index ]; newspeakers[ newspeakers.size ] = level.speakers[ team ][ index ];
}
index++; index++;
} }
level.speakers[ team ] = newspeakers; level.speakers[ team ] = newspeakers;
} }
getlandmark() getlandmark() //checked changed to match cerberus output
{ {
landmarks = level.landmarks; landmarks = level.landmarks;
i = 0; for ( i = 0; i < landmarks.size; i++ )
while ( i < landmarks.size )
{ {
if ( self istouching( landmarks[ i ] ) && isDefined( landmarks[ i ].script_landmark ) ) if ( self istouching( landmarks[ i ] ) && isDefined( landmarks[ i ].script_landmark ) )
{ {
return landmarks[ i ]; return landmarks[ i ];
} }
i++;
} }
return undefined; return undefined;
} }
checkdistancetoevent( player, area ) checkdistancetoevent( player, area ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{ {
if ( !isDefined( player ) ) if ( !isDefined( player ) )
{ {
@ -1053,49 +1014,41 @@ checkdistancetoevent( player, area )
index++; index++;
continue; continue;
} }
else if ( teammate == player ) if ( teammate == player )
{ {
index++; index++;
continue; continue;
} }
else
{
if ( distancesquared( teammate.origin, player.origin ) < area ) if ( distancesquared( teammate.origin, player.origin ) < area )
{ {
return index; return index;
} }
}
index++; index++;
} }
} }
checkdistancetoenemy( enemy, area, team ) checkdistancetoenemy( enemy, area, team ) //checked changed to match cerberus output
{ {
if ( !isDefined( enemy ) ) if ( !isDefined( enemy ) )
{ {
return undefined; return undefined;
} }
index = 0; for ( index = 0; index < level.aliveplayers[team].size; index++ )
while ( index < level.aliveplayers[ team ].size )
{ {
player = level.aliveplayers[ team ][ index ]; player = level.aliveplayers[ team ][ index ];
if ( distancesquared( enemy.origin, player.origin ) < area ) if ( distancesquared( enemy.origin, player.origin ) < area )
{ {
return index; return index;
} }
index++;
} }
} }
checkdistancetoobject( area, object, ignoreteam, ignoreent ) checkdistancetoobject( area, object, ignoreteam, ignoreent ) //checked partially changed to match cerberus output did not change while loops to for loops see github for more info
{ {
if ( isDefined( ignoreteam ) ) if ( isDefined( ignoreteam ) )
{ {
_a1232 = level.teams; foreach ( team in level.teams )
_k1232 = getFirstArrayKey( _a1232 );
while ( isDefined( _k1232 ) )
{ {
team = _a1232[ _k1232 ];
i = 0; i = 0;
while ( i < level.aliveplayers[ team ].size ) while ( i < level.aliveplayers[ team ].size )
{ {
@ -1105,19 +1058,15 @@ checkdistancetoobject( area, object, ignoreteam, ignoreent )
i++; i++;
continue; continue;
} }
else
{
if ( isDefined( object ) && distancesquared( player.origin, object.origin ) < area ) if ( isDefined( object ) && distancesquared( player.origin, object.origin ) < area )
{ {
return player; return player;
} }
}
i++; i++;
} }
_k1232 = getNextArrayKey( _a1232, _k1232 );
} }
} }
else i = 0; i = 0;
while ( i < level.players.size ) while ( i < level.players.size )
{ {
player = level.players[ i ]; player = level.players[ i ];
@ -1126,8 +1075,6 @@ checkdistancetoobject( area, object, ignoreteam, ignoreent )
i++; i++;
continue; continue;
} }
else
{
if ( isalive( player ) ) if ( isalive( player ) )
{ {
if ( isDefined( object ) && distancesquared( player.origin, object.origin ) < area ) if ( isDefined( object ) && distancesquared( player.origin, object.origin ) < area )
@ -1135,48 +1082,37 @@ checkdistancetoobject( area, object, ignoreteam, ignoreent )
return player; return player;
} }
} }
}
i++; i++;
} }
} }
get_closest_player_enemy() get_closest_player_enemy() //checked partially changed to match cerberus output did not use continue in foreach see github for more info
{ {
players = getplayers(); players = getplayers();
players = arraysort( players, self.origin ); players = arraysort( players, self.origin );
_a1269 = players; foreach ( player in players )
_k1269 = getFirstArrayKey( _a1269 );
while ( isDefined( _k1269 ) )
{ {
player = _a1269[ _k1269 ];
if ( !isDefined( player ) || !isalive( player ) ) if ( !isDefined( player ) || !isalive( player ) )
{ {
} }
else else if ( player.sessionstate != "playing" )
{ {
if ( player.sessionstate != "playing" )
{
break;
} }
else if ( player == self ) else if ( player == self )
{ {
break;
} }
else if ( level.teambased && self.team == player.team ) else if ( level.teambased && self.team == player.team )
{ {
break;
} }
else else
{ {
return player; return player;
} }
} }
_k1269 = getNextArrayKey( _a1269, _k1269 );
}
return undefined; return undefined;
} }
get_closest_player_ally() get_closest_player_ally() //checked partially changed to match cerberus output did not use continue in foreach see github for more info
{ {
if ( !level.teambased ) if ( !level.teambased )
{ {
@ -1184,30 +1120,22 @@ get_closest_player_ally()
} }
players = getplayers( self.team ); players = getplayers( self.team );
players = arraysort( players, self.origin ); players = arraysort( players, self.origin );
_a1307 = players; foreach ( player in players )
_k1307 = getFirstArrayKey( _a1307 );
while ( isDefined( _k1307 ) )
{ {
player = _a1307[ _k1307 ];
if ( !isDefined( player ) || !isalive( player ) ) if ( !isDefined( player ) || !isalive( player ) )
{ {
} }
else else if ( player.sessionstate != "playing" )
{ {
if ( player.sessionstate != "playing" )
{
break;
} }
else if ( player == self ) else if ( player == self )
{ {
break;
} }
else else
{ {
return player; return player;
} }
} }
_k1307 = getNextArrayKey( _a1307, _k1307 );
}
return undefined; return undefined;
} }

View File

@ -1,9 +1,16 @@
//checked includes changed to match cerberus output
#include maps/mp/gametypes/_persistence; #include maps/mp/gametypes/_persistence;
#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_globallogic;
#include maps/mp/bots/_bot; #include maps/mp/bots/_bot;
#include maps/mp/_popups;
#include maps/mp/_scoreevents;
#include maps/mp/_medals;
#include maps/mp/_challenges;
#include maps/mp/gametypes/_rank;
#include maps/mp/gametypes/_class;
#include maps/mp/_utility; #include maps/mp/_utility;
init() init() //checked matches cerberus output
{ {
level.persistentdatainfo = []; level.persistentdatainfo = [];
level.maxrecentstats = 10; level.maxrecentstats = 10;
@ -19,7 +26,7 @@ init()
level thread uploadglobalstatcounters(); level thread uploadglobalstatcounters();
} }
onplayerconnect() onplayerconnect() //checked matches cerberus output
{ {
for ( ;; ) for ( ;; )
{ {
@ -28,7 +35,7 @@ onplayerconnect()
} }
} }
initializestattracking() initializestattracking() //checked changed to match cerberus output
{ {
level.globalexecutions = 0; level.globalexecutions = 0;
level.globalchallenges = 0; level.globalchallenges = 0;
@ -61,17 +68,13 @@ initializestattracking()
level.globalcarsdestroyed = 0; level.globalcarsdestroyed = 0;
level.globalbarrelsdestroyed = 0; level.globalbarrelsdestroyed = 0;
level.globalbombsdestroyedbyteam = []; level.globalbombsdestroyedbyteam = [];
_a67 = level.teams; foreach ( team in level.teams )
_k67 = getFirstArrayKey( _a67 );
while ( isDefined( _k67 ) )
{ {
team = _a67[ _k67 ];
level.globalbombsdestroyedbyteam[ team ] = 0; level.globalbombsdestroyedbyteam[ team ] = 0;
_k67 = getNextArrayKey( _a67, _k67 );
} }
} }
uploadglobalstatcounters() uploadglobalstatcounters() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{ {
level waittill( "game_ended" ); level waittill( "game_ended" );
if ( !level.rankedmatch && !level.wagermatch ) if ( !level.rankedmatch && !level.wagermatch )
@ -92,13 +95,9 @@ uploadglobalstatcounters()
totalsdplants = 0; totalsdplants = 0;
totalhumiliations = 0; totalhumiliations = 0;
totalsabdestroyedbyteam = []; totalsabdestroyedbyteam = [];
_a95 = level.teams; foreach ( team in level.teams )
_k95 = getFirstArrayKey( _a95 );
while ( isDefined( _k95 ) )
{ {
team = _a95[ _k95 ];
totalsabdestroyedbyteam[ team ] = 0; totalsabdestroyedbyteam[ team ] = 0;
_k95 = getNextArrayKey( _a95, _k95 );
} }
switch( level.gametype ) switch( level.gametype )
{ {
@ -113,29 +112,20 @@ uploadglobalstatcounters()
index++; index++;
continue; continue;
} }
else
{
level.globaldembombsdestroyed++; level.globaldembombsdestroyed++;
}
index++; index++;
} }
case "sab": case "sab":
_a117 = level.teams; foreach(team in level.teams)
_k117 = getFirstArrayKey( _a117 );
while ( isDefined( _k117 ) )
{ {
team = _a117[ _k117 ];
totalsabdestroyedbyteam[ team ] = level.globalbombsdestroyedbyteam[ team ]; totalsabdestroyedbyteam[ team ] = level.globalbombsdestroyedbyteam[ team ];
_k117 = getNextArrayKey( _a117, _k117 );
} }
} }
players = get_players(); players = get_players();
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
player = players[ i ]; player = players[ i ];
totaltimeplayed += min( player.timeplayed[ "total" ], level.timeplayedcap ); totaltimeplayed += min( player.timeplayed[ "total" ], level.timeplayedcap );
i++;
} }
incrementcounter( "global_executions", level.globalexecutions ); incrementcounter( "global_executions", level.globalexecutions );
incrementcounter( "global_sharedpackagemedals", level.globalsharepackages ); incrementcounter( "global_sharedpackagemedals", level.globalsharepackages );
@ -170,10 +160,9 @@ uploadglobalstatcounters()
{ {
return; return;
} }
wait 0,05; wait 0.05;
players = get_players(); players = get_players();
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
player = players[ i ]; player = players[ i ];
totalkills += player.kills; totalkills += player.kills;
@ -189,30 +178,21 @@ uploadglobalstatcounters()
totalflagscaptured += player.captures; totalflagscaptured += player.captures;
totalflagsreturned += player.returns; totalflagsreturned += player.returns;
break; break;
i++;
continue;
case "koth": case "koth":
totalhqsdestroyed += player.destructions; totalhqsdestroyed += player.destructions;
totalhqscaptured += player.captures; totalhqscaptured += player.captures;
break; break;
i++;
continue;
case "sd": case "sd":
totalsddefused += player.defuses; totalsddefused += player.defuses;
totalsdplants += player.plants; totalsdplants += player.plants;
break; break;
i++;
continue;
case "sab": case "sab":
if ( isDefined( player.team ) && isDefined( level.teams[ player.team ] ) ) if ( isDefined( player.team ) && isDefined( level.teams[ player.team ] ) )
{ {
totalsabdestroyedbyteam[ player.team ] += player.destructions; totalsabdestroyedbyteam[ player.team ] += player.destructions;
} }
break; break;
i++;
continue;
} }
i++;
} }
if ( maps/mp/bots/_bot::is_bot_ranked_match() ) if ( maps/mp/bots/_bot::is_bot_ranked_match() )
{ {
@ -237,11 +217,9 @@ uploadglobalstatcounters()
{ {
incrementcounter( "global_wageredcp", game[ "wager_pot" ] ); incrementcounter( "global_wageredcp", game[ "wager_pot" ] );
} }
}
}
} }
statgetwithgametype( dataname ) statgetwithgametype( dataname ) //checked matches cerberus output
{ {
if ( isDefined( level.nopersistence ) && level.nopersistence ) if ( isDefined( level.nopersistence ) && level.nopersistence )
{ {
@ -254,7 +232,7 @@ statgetwithgametype( dataname )
return self getdstat( "PlayerStatsByGameType", getgametypename(), dataname, "StatValue" ); return self getdstat( "PlayerStatsByGameType", getgametypename(), dataname, "StatValue" );
} }
getgametypename() getgametypename() //checked matches cerberus output
{ {
if ( !isDefined( level.fullgametypename ) ) if ( !isDefined( level.fullgametypename ) )
{ {
@ -271,7 +249,7 @@ getgametypename()
return level.fullgametypename; return level.fullgametypename;
} }
ispartygamemode() ispartygamemode() //checked changed to match cerberus output
{ {
switch( level.gametype ) switch( level.gametype )
{ {
@ -282,18 +260,18 @@ ispartygamemode()
return 1; return 1;
} }
return 0; return 0;
}
} }
isstatmodifiable( dataname ) isstatmodifiable( dataname ) //checked changed at own discretion
{ {
if ( !level.rankedmatch ) if ( level.rankedmatch || level.wagermatch )
{ {
return level.wagermatch; return 1;
} }
return 0;
} }
statsetwithgametype( dataname, value, incvalue ) statsetwithgametype( dataname, value, incvalue ) //checked matches cerberus output
{ {
if ( isDefined( level.nopersistence ) && level.nopersistence ) if ( isDefined( level.nopersistence ) && level.nopersistence )
{ {
@ -310,26 +288,26 @@ statsetwithgametype( dataname, value, incvalue )
self setdstat( "PlayerStatsByGameType", getgametypename(), dataname, "StatValue", value ); self setdstat( "PlayerStatsByGameType", getgametypename(), dataname, "StatValue", value );
} }
adjustrecentstats() adjustrecentstats() //checked matches cerberus output
{ {
/*
/# /#
if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 ) if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 )
{ {
return; return;
#/ #/
} }
*/
initializematchstats(); initializematchstats();
} }
getrecentstat( isglobal, index, statname ) getrecentstat( isglobal, index, statname ) //checked changed to match cerberus output
{ {
if ( level.wagermatch ) if ( level.wagermatch )
{ {
return self getdstat( "RecentEarnings", index, statname ); return self getdstat( "RecentEarnings", index, statname );
} }
else else if ( isglobal )
{
if ( isglobal )
{ {
modename = maps/mp/gametypes/_globallogic::getcurrentgamemode(); modename = maps/mp/gametypes/_globallogic::getcurrentgamemode();
return self getdstat( "gameHistory", modename, "matchHistory", index, statname ); return self getdstat( "gameHistory", modename, "matchHistory", index, statname );
@ -338,10 +316,9 @@ getrecentstat( isglobal, index, statname )
{ {
return self getdstat( "PlayerStatsByGameType", getgametypename(), "prevScores", index, statname ); return self getdstat( "PlayerStatsByGameType", getgametypename(), "prevScores", index, statname );
} }
}
} }
setrecentstat( isglobal, index, statname, value ) setrecentstat( isglobal, index, statname, value ) //checked matches cerberus output
{ {
if ( isDefined( level.nopersistence ) && level.nopersistence ) if ( isDefined( level.nopersistence ) && level.nopersistence )
{ {
@ -376,7 +353,7 @@ setrecentstat( isglobal, index, statname, value )
} }
} }
addrecentstat( isglobal, index, statname, value ) addrecentstat( isglobal, index, statname, value ) //checked matches cerberus output
{ {
if ( isDefined( level.nopersistence ) && level.nopersistence ) if ( isDefined( level.nopersistence ) && level.nopersistence )
{ {
@ -394,21 +371,21 @@ addrecentstat( isglobal, index, statname, value )
setrecentstat( isglobal, index, statname, currstat + value ); setrecentstat( isglobal, index, statname, currstat + value );
} }
setmatchhistorystat( statname, value ) setmatchhistorystat( statname, value ) //checked matches cerberus output
{ {
modename = maps/mp/gametypes/_globallogic::getcurrentgamemode(); modename = maps/mp/gametypes/_globallogic::getcurrentgamemode();
historyindex = self getdstat( "gameHistory", modename, "currentMatchHistoryIndex" ); historyindex = self getdstat( "gameHistory", modename, "currentMatchHistoryIndex" );
setrecentstat( 1, historyindex, statname, value ); setrecentstat( 1, historyindex, statname, value );
} }
addmatchhistorystat( statname, value ) addmatchhistorystat( statname, value ) //checked matches cerberus output
{ {
modename = maps/mp/gametypes/_globallogic::getcurrentgamemode(); modename = maps/mp/gametypes/_globallogic::getcurrentgamemode();
historyindex = self getdstat( "gameHistory", modename, "currentMatchHistoryIndex" ); historyindex = self getdstat( "gameHistory", modename, "currentMatchHistoryIndex" );
addrecentstat( 1, historyindex, statname, value ); addrecentstat( 1, historyindex, statname, value );
} }
initializematchstats() initializematchstats() //checked matches cerberus output
{ {
if ( isDefined( level.nopersistence ) && level.nopersistence ) if ( isDefined( level.nopersistence ) && level.nopersistence )
{ {
@ -427,19 +404,21 @@ initializematchstats()
self gamehistorystartmatch( getgametypeenumfromname( currgametype, level.hardcoremode ) ); self gamehistorystartmatch( getgametypeenumfromname( currgametype, level.hardcoremode ) );
} }
setafteractionreportstat( statname, value, index ) setafteractionreportstat( statname, value, index ) //checked changed to match cerberus output
{ {
if ( self is_bot() ) if ( self is_bot() )
{ {
return; return;
} }
/*
/# /#
if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 ) if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 )
{ {
return; return;
#/ #/
} }
if ( !level.rankedmatch || level.wagermatch && level.leaguematch ) */
if ( level.rankedmatch || level.wagermatch && level.leaguematch )
{ {
if ( isDefined( index ) ) if ( isDefined( index ) )
{ {
@ -453,31 +432,31 @@ setafteractionreportstat( statname, value, index )
} }
} }
codecallback_challengecomplete( rewardxp, maxval, row, tablenumber, challengetype, itemindex, challengeindex ) codecallback_challengecomplete( rewardxp, maxval, row, tablenumber, challengetype, itemindex, challengeindex ) //checked matches cerberus output
{ {
self luinotifyevent( &"challenge_complete", 7, challengeindex, itemindex, challengetype, tablenumber, row, maxval, rewardxp ); self luinotifyevent( &"challenge_complete", 7, challengeindex, itemindex, challengetype, tablenumber, row, maxval, rewardxp );
self luinotifyeventtospectators( &"challenge_complete", 7, challengeindex, itemindex, challengetype, tablenumber, row, maxval, rewardxp ); self luinotifyeventtospectators( &"challenge_complete", 7, challengeindex, itemindex, challengetype, tablenumber, row, maxval, rewardxp );
} }
codecallback_gunchallengecomplete( rewardxp, attachmentindex, itemindex, rankid ) codecallback_gunchallengecomplete( rewardxp, attachmentindex, itemindex, rankid ) //checked matches cerberus output
{ {
self luinotifyevent( &"gun_level_complete", 4, rankid, itemindex, attachmentindex, rewardxp ); self luinotifyevent( &"gun_level_complete", 4, rankid, itemindex, attachmentindex, rewardxp );
self luinotifyeventtospectators( &"gun_level_complete", 4, rankid, itemindex, attachmentindex, rewardxp ); self luinotifyeventtospectators( &"gun_level_complete", 4, rankid, itemindex, attachmentindex, rewardxp );
} }
checkcontractexpirations() checkcontractexpirations() //checked matches cerberus output
{ {
} }
incrementcontracttimes( timeinc ) incrementcontracttimes( timeinc ) //checked matches cerberus output
{ {
} }
addcontracttoqueue( index, passed ) addcontracttoqueue( index, passed ) //checked matches cerberus output
{ {
} }
uploadstatssoon() uploadstatssoon() //checked matches cerberus output
{ {
self notify( "upload_stats_soon" ); self notify( "upload_stats_soon" );
self endon( "upload_stats_soon" ); self endon( "upload_stats_soon" );
@ -486,14 +465,15 @@ uploadstatssoon()
uploadstats( self ); uploadstats( self );
} }
codecallback_onaddplayerstat( dataname, value ) codecallback_onaddplayerstat( dataname, value ) //checked matches cerberus output
{ {
} }
codecallback_onaddweaponstat( weapname, dataname, value ) codecallback_onaddweaponstat( weapname, dataname, value ) //checked matches cerberus output
{ {
} }
processcontractsonaddstat( stattype, dataname, value, weapname ) processcontractsonaddstat( stattype, dataname, value, weapname ) //checked matches cerberus output
{ {
} }

View File

@ -1,19 +1,26 @@
//checked includes changed to match cerberus output
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_globallogic_utils; #include maps/mp/gametypes/_globallogic_utils;
#include maps/mp/gametypes/_globallogic_ui; #include maps/mp/gametypes/_globallogic_ui;
#include maps/mp/gametypes/_hud; #include maps/mp/gametypes/_hud;
#include maps/mp/gametypes/_globallogic_player; #include maps/mp/gametypes/_globallogic_player;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util; #include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility; #include maps/mp/_utility;
main()
main() //checked matches cerberus output
{ {
level.pregame = 1; level.pregame = 1;
/*
/# /#
println( "Pregame main() level.pregame = " + level.pregame + "\n" ); println( "Pregame main() level.pregame = " + level.pregame + "\n" );
#/ #/
*/
maps/mp/gametypes/_globallogic::init(); maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks(); maps/mp/gametypes/_callbacksetup::setupcallbacks();
maps/mp/gametypes/_globallogic::setupcallbacks(); maps/mp/gametypes/_globallogic::setupcallbacks();
@ -39,16 +46,13 @@ main()
setmatchtalkflag( "EveryoneHearsEveryone", 1 ); setmatchtalkflag( "EveryoneHearsEveryone", 1 );
} }
onstartgametype() onstartgametype() //checked changed to match cerberus output
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
level.spawnmins = ( 1, 1, 1 ); level.spawnmins = ( 0, 0, 0 );
level.spawnmaxs = ( 1, 1, 1 ); level.spawnmaxs = ( 0, 0, 0 );
_a85 = level.teams; foreach(team in level.teams)
_k85 = getFirstArrayKey( _a85 );
while ( isDefined( _k85 ) )
{ {
team = _a85[ _k85 ];
setobjectivetext( team, &"OBJECTIVES_PREGAME" ); setobjectivetext( team, &"OBJECTIVES_PREGAME" );
setobjectivehinttext( team, &"OBJECTIVES_PREGAME_HINT" ); setobjectivehinttext( team, &"OBJECTIVES_PREGAME_HINT" );
if ( level.splitscreen ) if ( level.splitscreen )
@ -60,7 +64,6 @@ onstartgametype()
setobjectivescoretext( team, &"OBJECTIVES_PREGAME_SCORE" ); setobjectivescoretext( team, &"OBJECTIVES_PREGAME_SCORE" );
} }
maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_dm_spawn" ); maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_dm_spawn" );
_k85 = getNextArrayKey( _a85, _k85 );
} }
maps/mp/gametypes/_spawning::updateallspawnpoints(); maps/mp/gametypes/_spawning::updateallspawnpoints();
level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs ); level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs );
@ -81,7 +84,7 @@ onstartgametype()
startpregame(); startpregame();
} }
startpregame() startpregame() //checked matches cerberus output
{ {
game[ "strings" ][ "waiting_for_players" ] = &"MP_WAITING_FOR_X_PLAYERS"; game[ "strings" ][ "waiting_for_players" ] = &"MP_WAITING_FOR_X_PLAYERS";
game[ "strings" ][ "pregame" ] = &"MP_PREGAME"; game[ "strings" ][ "pregame" ] = &"MP_PREGAME";
@ -94,12 +97,12 @@ startpregame()
thread pregamemain(); thread pregamemain();
} }
onspawnplayerunified() onspawnplayerunified() //checked matches cerberus output
{ {
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
} }
onspawnplayer( predictedspawn ) onspawnplayer( predictedspawn ) //checked matches cerberus output
{ {
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( self.pers[ "team" ] ); spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( self.pers[ "team" ] );
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_dm( spawnpoints ); spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_dm( spawnpoints );
@ -113,21 +116,19 @@ onspawnplayer( predictedspawn )
} }
} }
onplayerclasschange( response ) onplayerclasschange( response ) //checked matches cerberus output
{ {
self.pregameclassresponse = response; self.pregameclassresponse = response;
} }
endpregame() endpregame() //checked changed to match cerberus output
{ {
level.pregame = 0; level.pregame = 0;
players = level.players; players = level.players;
index = 0; for ( index = 0; index < players.size; index++ )
while ( index < players.size )
{ {
player = players[ index ]; player = players[ index ];
player maps/mp/gametypes/_globallogic_player::freezeplayerforroundend(); player maps/mp/gametypes/_globallogic_player::freezeplayerforroundend();
index++;
} }
setmatchtalkflag( "EveryoneHearsEveryone", 0 ); setmatchtalkflag( "EveryoneHearsEveryone", 0 );
level.pregameplayercount destroyelem(); level.pregameplayercount destroyelem();
@ -135,12 +136,11 @@ endpregame()
level.pregametitle destroyelem(); level.pregametitle destroyelem();
} }
getplayersneededcount() getplayersneededcount() //checked changed to match cerberus output
{ {
players = level.players; players = level.players;
count = 0; count = 0;
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
player = players[ i ]; player = players[ i ];
team = player.team; team = player.team;
@ -149,16 +149,14 @@ getplayersneededcount()
{ {
count++; count++;
} }
i++;
} }
return int( level.pregame_minplayers - count ); return int( level.pregame_minplayers - count );
} }
saveplayerspregameinfo() saveplayerspregameinfo() //checked changed to match cerberus output
{ {
players = level.players; players = level.players;
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
player = players[ i ]; player = players[ i ];
team = player.team; team = player.team;
@ -171,16 +169,15 @@ saveplayerspregameinfo()
{ {
player setpregameclass( class ); player setpregameclass( class );
} }
i++;
} }
} }
pregamemain() pregamemain() //checked did not reference cerberus output used beta dump _pregame.gsc as a reference
{ {
level endon( "game_ended" ); level endon( "game_ended" );
green = ( 0,6, 0,9, 0,6 ); green = ( 0.6, 0.9, 0.6 );
red = ( 0,7, 0,3, 0,2 ); red = ( 0.7, 0.3, 0.2 );
yellow = ( 1, 1, 1 ); yellow = ( 1, 1, 0 );
white = ( 1, 1, 1 ); white = ( 1, 1, 1 );
titlesize = 3; titlesize = 3;
textsize = 2; textsize = 2;
@ -204,7 +201,7 @@ pregamemain()
level.pregamesubtitle.archived = 1; level.pregamesubtitle.archived = 1;
level.pregamesubtitle settext( game[ "strings" ][ "waiting_for_players" ] ); level.pregamesubtitle settext( game[ "strings" ][ "waiting_for_players" ] );
level.pregamesubtitle.color = green; level.pregamesubtitle.color = green;
level.pregameplayercount = createserverfontstring( font, 2,2 ); level.pregameplayercount = createserverfontstring( font, 2.2 );
level.pregameplayercount setparent( level.pregametitle ); level.pregameplayercount setparent( level.pregametitle );
level.pregameplayercount setpoint( "TOP", "BOTTOM", -11, 0 ); level.pregameplayercount setpoint( "TOP", "BOTTOM", -11, 0 );
level.pregamesubtitle.glowalpha = 1; level.pregamesubtitle.glowalpha = 1;
@ -215,41 +212,40 @@ pregamemain()
level.pregameplayercount.color = yellow; level.pregameplayercount.color = yellow;
level.pregameplayercount maps/mp/gametypes/_hud::fontpulseinit(); level.pregameplayercount maps/mp/gametypes/_hud::fontpulseinit();
oldcount = -1; oldcount = -1;
for ( ;; ) for(;;)
{ {
wait 1; wait( 1 );
count = getplayersneededcount();
if ( count < 0 ) count = GetPlayersNeededCount();
if ( 0 >= count )
{ {
break; break;
} }
else /# /*
if ( getDvarInt( "scr_pregame_abort" ) > 0 ) /#
if ( GetDvarint( "scr_pregame_abort" ) > 0 )
{ {
setdvar( "scr_pregame_abort", 0 ); SetDvar( "scr_pregame_abort", 0 );
break; break;
}
#/ #/
} */
else
{
if ( oldcount != count ) if ( oldcount != count )
{ {
level.pregameplayercount setvalue( count ); level.pregamePlayerCount setValue( count );
level.pregameplayercount thread maps/mp/gametypes/_hud::fontpulse( level ); level.pregamePlayerCount thread maps\mp\gametypes\_hud::fontPulse( level );
oldcount = count; oldcount = count;
} }
} }
}
level.pregameplayercount settext( "" ); level.pregameplayercount settext( "" );
level.pregamesubtitle settext( game[ "strings" ][ "pregameover" ] ); level.pregamesubtitle settext( game[ "strings" ][ "pregameover" ] );
players = level.players; players = level.players;
index = 0; for ( index = 0; index < players.size; index++ )
while ( index < players.size )
{ {
player = players[ index ]; player = players[ index ];
player maps/mp/gametypes/_globallogic_player::freezeplayerforroundend(); player maps/mp/gametypes/_globallogic_player::freezeplayerforroundend();
player maps/mp/gametypes/_globallogic_ui::freegameplayhudelems(); player maps/mp/gametypes/_globallogic_ui::freegameplayhudelems();
index++;
} }
visionsetnaked( "mpIntro", 3 ); visionsetnaked( "mpIntro", 3 );
wait 4; wait 4;
@ -259,12 +255,12 @@ pregamemain()
map_restart( 0 ); map_restart( 0 );
} }
onendgame( winner ) onendgame( winner ) //checked matches cerberus output
{ {
endpregame(); endpregame();
} }
ontimelimit() ontimelimit() //checked changed to match cerberus output
{ {
winner = undefined; winner = undefined;
if ( level.teambased ) if ( level.teambased )
@ -272,7 +268,9 @@ ontimelimit()
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "teamScores" ); winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "teamScores" );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "time limit", winner ); maps/mp/gametypes/_globallogic_utils::logteamwinstring( "time limit", winner );
} }
else winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer(); else
{
winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer();
if ( isDefined( winner ) ) if ( isDefined( winner ) )
{ {
logstring( "time limit, win: " + winner.name ); logstring( "time limit, win: " + winner.name );
@ -281,12 +279,13 @@ ontimelimit()
{ {
logstring( "time limit, tie" ); logstring( "time limit, tie" );
} }
}
makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "pregame_time_limit_reached" ] ); makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "pregame_time_limit_reached" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "time_limit_reached" ] ); setdvar( "ui_text_endreason", game[ "strings" ][ "time_limit_reached" ] );
thread maps/mp/gametypes/_globallogic::endgame( winner, game[ "strings" ][ "pregame_time_limit_reached" ] ); thread maps/mp/gametypes/_globallogic::endgame( winner, game[ "strings" ][ "pregame_time_limit_reached" ] );
} }
get_pregame_class() get_pregame_class() //checked matches cerberus output
{ {
pclass = self getpregameclass(); pclass = self getpregameclass();
if ( isDefined( pclass ) && pclass[ 0 ] != "" ) if ( isDefined( pclass ) && pclass[ 0 ] != "" )
@ -298,3 +297,4 @@ get_pregame_class()
return "smg_mp,0"; return "smg_mp,0";
} }
} }

View File

@ -10,6 +10,7 @@ patch_mp/maps/mp/gametypes/_shellshock.gsc
``` ```
### The following scripts compile and run successfully with major errors: ### The following scripts compile and run successfully with major errors:
``` ```
patch_mp/maps/mp/bots/_bot.gsc
``` ```
### The following scripts compile and run serverside but clients cannot join due to exe_client_field_mismatch ### The following scripts compile and run serverside but clients cannot join due to exe_client_field_mismatch
``` ```
@ -19,7 +20,6 @@ patch_mp/maps/mp/gametypes/_shellshock.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
``` ```
patch_mp/maps/mp/bots/_bot.gsc
patch_mp/maps/mp/bots/_bot_combat.gsc patch_mp/maps/mp/bots/_bot_combat.gsc
patch_mp/maps/mp/bots/_bot_loadout.gsc patch_mp/maps/mp/bots/_bot_loadout.gsc
patch_mp/maps/mp/bots/_bot_conf.gsc patch_mp/maps/mp/bots/_bot_conf.gsc
@ -31,6 +31,7 @@ patch_mp/maps/mp/bots/_bot_hq.gsc
patch_mp/maps/mp/bots/_bot_koth.gsc patch_mp/maps/mp/bots/_bot_koth.gsc
patch_mp/maps/mp/bots/_bot_sd.gsc patch_mp/maps/mp/bots/_bot_sd.gsc
patch_mp/maps/mp/gametypes/_battlechatter_mp.gsc
patch_mp/maps/mp/gametypes/_callbacksetup.gsc patch_mp/maps/mp/gametypes/_callbacksetup.gsc
patch_mp/maps/mp/gametypes/_damagefeedback.gsc patch_mp/maps/mp/gametypes/_damagefeedback.gsc
patch_mp/maps/mp/gametypes/_deathicons.gsc patch_mp/maps/mp/gametypes/_deathicons.gsc
@ -43,6 +44,8 @@ patch_mp/maps/mp/gametypes/_killcam.gsc
patch_mp/maps/mp/gametypes/_menus.gsc patch_mp/maps/mp/gametypes/_menus.gsc
patch_mp/maps/mp/gametypes/_objpoints.gsc patch_mp/maps/mp/gametypes/_objpoints.gsc
patch_mp/maps/mp/gametypes/_perplayer.gsc patch_mp/maps/mp/gametypes/_perplayer.gsc
patch_mp/maps/mp/gametypes/_persistence.gsc
patch_mp/maps/mp/gametypes/_pregame.gsc
patch_mp/maps/mp/gametypes/_rank.gsc patch_mp/maps/mp/gametypes/_rank.gsc
patch_mp/maps/mp/gametypes/_serversettings.gsc patch_mp/maps/mp/gametypes/_serversettings.gsc
patch_mp/maps/mp/gametypes/_spectating.gsc patch_mp/maps/mp/gametypes/_spectating.gsc
@ -65,7 +68,6 @@ patch_mp/maps/mp/gametypes/tdm.gsc
``` ```
### The following scripts are not checked yet, uploaded to setup a baseline: ### The following scripts are not checked yet, uploaded to setup a baseline:
``` ```
patch_mp/maps/mp/gametypes/_battlechatter.gsc
patch_mp/maps/mp/gametypes/_class.gsc patch_mp/maps/mp/gametypes/_class.gsc
patch_mp/maps/mp/gametypes/_copter.gsc patch_mp/maps/mp/gametypes/_copter.gsc
patch_mp/maps/mp/gametypes/_gameobjects.gsc patch_mp/maps/mp/gametypes/_gameobjects.gsc
@ -80,8 +82,6 @@ patch_mp/maps/mp/gametypes/_globallogic_utils.gsc
patch_mp/maps/mp/gametypes/_globallogic_vehicle.gsc patch_mp/maps/mp/gametypes/_globallogic_vehicle.gsc
patch_mp/maps/mp/gametypes/_hud_message.gsc patch_mp/maps/mp/gametypes/_hud_message.gsc
patch_mp/maps/mp/gametypes/_hud_util.gsc patch_mp/maps/mp/gametypes/_hud_util.gsc
patch_mp/maps/mp/gametypes/_persistence.gsc
patch_mp/maps/mp/gametypes/_pregame.gsc
patch_mp/maps/mp/gametypes/_spawning.gsc patch_mp/maps/mp/gametypes/_spawning.gsc
patch_mp/maps/mp/gametypes/_spawnlogic.gsc patch_mp/maps/mp/gametypes/_spawnlogic.gsc
patch_mp/maps/mp/gametypes/_wager.gsc patch_mp/maps/mp/gametypes/_wager.gsc