checked 6 scripts one of which was a dual script

Checked _globallogic_actor, _globallogic_defualts, _globallogic_ui, _globallogic_utils, _globallogic_vehicle for patch_mp. Checked _globallogic_actor for patch_zm. Checked zm_nuked for zm_nuked_patch.
This commit is contained in:
JezuzLizard 2020-05-22 09:04:12 -07:00
parent 83a2e644ea
commit aab6678ec2
11 changed files with 970 additions and 1074 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/_challenges;
#include maps/mp/_scoreevents;
#include maps/mp/gametypes/_damagefeedback;
@ -7,7 +8,7 @@
#include maps/mp/gametypes/_globallogic_player;
#include maps/mp/_utility;
callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex )
callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) //checked changed to match cerberus output
{
if ( game[ "state" ] == "postgame" )
{
@ -45,12 +46,9 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
return;
}
else
else if ( smeansofdeath == "MOD_HEAD_SHOT" )
{
if ( smeansofdeath == "MOD_HEAD_SHOT" )
{
idamage = 150;
}
idamage = 150;
}
}
if ( smeansofdeath == "MOD_BURNED" )
@ -70,12 +68,9 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
sweapon = "explodable_barrel_mp";
}
else
else if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
sweapon = "destructible_car_mp";
}
sweapon = "destructible_car_mp";
}
}
if ( idflags & level.idflags_no_protection )
@ -104,56 +99,55 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
return;
}
else
else if ( level.friendlyfire == 3 )
{
if ( level.friendlyfire == 3 )
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
}
friendly = 1;
}
else if ( isDefined( eattacker ) && isDefined( self.script_owner ) && eattacker == self.script_owner && !level.hardcoremode )
{
return;
}
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && isDefined( eattacker.script_owner ) && eattacker.script_owner == self.script_owner )
{
return;
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) && !issubstr( smeansofdeath, "MOD_MELEE" ) )
{
eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && eattacker == self.script_owner && !level.hardcoremode )
{
return;
}
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && isDefined( eattacker.script_owner ) && eattacker.script_owner == self.script_owner )
{
return;
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) && !issubstr( smeansofdeath, "MOD_MELEE" ) )
{
eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
self.wascooked = undefined;
}
if ( isDefined( eattacker ) )
{
self.lastdamagewasfromenemy = eattacker != self;
}
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
self.wascooked = undefined;
}
if ( isDefined( eattacker ) && eattacker != self )
{
if ( sweapon != "artillery_mp" || !isDefined( einflictor ) && !isai( einflictor ) )
self.lastdamagewasfromenemy = 1;
}
else
{
self.lastdamagewasfromenemy = 0;
}
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
}
if ( isDefined( eattacker ) && eattacker != self )
{
if ( sweapon != "artillery_mp" && !isDefined( einflictor ) || !isai( einflictor ) )
{
if ( idamage > 0 )
{
@ -162,12 +156,14 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
}
}
}
/*
/#
if ( getDvarInt( "g_debugDamage" ) )
{
println( "actor:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc );
#/
}
*/
if ( 1 )
{
lpselfnum = self getentitynumber();
@ -191,7 +187,7 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
}
}
callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime )
callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) //checked matches cerberus output
{
if ( game[ "state" ] == "postgame" )
{
@ -219,3 +215,4 @@ callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdi
}
}
}

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/gametypes/_rank;
#include maps/mp/killstreaks/_killstreaks;
#include maps/mp/gametypes/_spawnlogic;
@ -8,23 +9,20 @@
#include maps/mp/_utility;
#include common_scripts/utility;
getwinningteamfromloser( losing_team )
getwinningteamfromloser( losing_team ) //checked changed to match cerberus output
{
if ( level.multiteam )
{
return "tie";
}
else
else if ( losing_team == "axis" )
{
if ( losing_team == "axis" )
{
return "allies";
}
return "allies";
}
return "axis";
}
default_onforfeit( team )
default_onforfeit( team ) //checked matches cerberus output
{
level.gameforfeited = 1;
level notify( "forfeit in progress" );
@ -56,12 +54,14 @@ default_onforfeit( team )
}
else
{
/*
/#
assert( isDefined( team ), "Forfeited team is not defined" );
#/
/#
assert( 0, "Forfeited team " + team + " is not allies or axis" );
#/
*/
winner = "tie";
}
level.forcedend = 1;
@ -76,7 +76,7 @@ default_onforfeit( team )
thread maps/mp/gametypes/_globallogic::endgame( winner, endreason );
}
default_ondeadevent( team )
default_ondeadevent( team ) //checked changed to match cerberus output
{
if ( isDefined( level.teams[ team ] ) )
{
@ -88,20 +88,23 @@ default_ondeadevent( team )
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "team eliminated", winner );
thread maps/mp/gametypes/_globallogic::endgame( winner, eliminatedstring );
}
else makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "tie" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "tie" ] );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "tie" );
if ( level.teambased )
{
thread maps/mp/gametypes/_globallogic::endgame( "tie", game[ "strings" ][ "tie" ] );
}
else
{
thread maps/mp/gametypes/_globallogic::endgame( undefined, game[ "strings" ][ "tie" ] );
makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "tie" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "tie" ] );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "tie" );
if ( level.teambased )
{
thread maps/mp/gametypes/_globallogic::endgame( "tie", game[ "strings" ][ "tie" ] );
}
else
{
thread maps/mp/gametypes/_globallogic::endgame( undefined, game[ "strings" ][ "tie" ] );
}
}
}
default_onlastteamaliveevent( team )
default_onlastteamaliveevent( team ) //checked changed to match cerberus output
{
if ( isDefined( level.teams[ team ] ) )
{
@ -113,29 +116,32 @@ default_onlastteamaliveevent( team )
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "team eliminated", winner );
thread maps/mp/gametypes/_globallogic::endgame( winner, eliminatedstring );
}
else makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "tie" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "tie" ] );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "tie" );
if ( level.teambased )
{
thread maps/mp/gametypes/_globallogic::endgame( "tie", game[ "strings" ][ "tie" ] );
}
else
{
thread maps/mp/gametypes/_globallogic::endgame( undefined, game[ "strings" ][ "tie" ] );
makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "tie" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "tie" ] );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "tie" );
if ( level.teambased )
{
thread maps/mp/gametypes/_globallogic::endgame( "tie", game[ "strings" ][ "tie" ] );
}
else
{
thread maps/mp/gametypes/_globallogic::endgame( undefined, game[ "strings" ][ "tie" ] );
}
}
}
default_onalivecountchange( team )
default_onalivecountchange( team ) //checked matches cerberus output
{
}
default_onroundendgame( winner )
default_onroundendgame( winner ) //checked matches cerberus output
{
return winner;
}
default_ononeleftevent( team )
default_ononeleftevent( team ) //checked partially changed to match beta dump did not change while loop to for loop see github for more info
{
if ( !level.teambased )
{
@ -161,21 +167,18 @@ default_ononeleftevent( team )
index++;
continue;
}
else if ( !isDefined( player.pers[ "team" ] ) || player.pers[ "team" ] != team )
if ( !isDefined( player.pers[ "team" ] ) || player.pers[ "team" ] != team )
{
index++;
continue;
}
else
{
player maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "sudden_death" );
}
player maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "sudden_death" );
index++;
}
}
}
default_ontimelimit()
default_ontimelimit() //checked changed to match cerberus output
{
winner = undefined;
if ( level.teambased )
@ -183,21 +186,24 @@ default_ontimelimit()
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "teamScores" );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "time limit", winner );
}
else winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer();
if ( isDefined( winner ) )
{
logstring( "time limit, win: " + winner.name );
}
else
{
logstring( "time limit, tie" );
winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer();
if ( isDefined( winner ) )
{
logstring( "time limit, win: " + winner.name );
}
else
{
logstring( "time limit, tie" );
}
}
makedvarserverinfo( "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" ][ "time_limit_reached" ] );
}
default_onscorelimit()
default_onscorelimit() //checked changed to match cerberus output
{
if ( !level.endgameonscorelimit )
{
@ -209,14 +215,17 @@ default_onscorelimit()
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "teamScores" );
maps/mp/gametypes/_globallogic_utils::logteamwinstring( "scorelimit", winner );
}
else winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer();
if ( isDefined( winner ) )
{
logstring( "scorelimit, win: " + winner.name );
}
else
{
logstring( "scorelimit, tie" );
winner = maps/mp/gametypes/_globallogic_score::gethighestscoringplayer();
if ( isDefined( winner ) )
{
logstring( "scorelimit, win: " + winner.name );
}
else
{
logstring( "scorelimit, tie" );
}
}
makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "score_limit_reached" ] );
setdvar( "ui_text_endreason", game[ "strings" ][ "score_limit_reached" ] );
@ -224,7 +233,7 @@ default_onscorelimit()
return 1;
}
default_onspawnspectator( origin, angles )
default_onspawnspectator( origin, angles ) //checked matches cerberus output
{
if ( isDefined( origin ) && isDefined( angles ) )
{
@ -233,14 +242,16 @@ default_onspawnspectator( origin, angles )
}
spawnpointname = "mp_global_intermission";
spawnpoints = getentarray( spawnpointname, "classname" );
/*
/#
assert( spawnpoints.size, "There are no mp_global_intermission spawn points in the map. There must be at least one." );
#/
*/
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints );
self spawn( spawnpoint.origin, spawnpoint.angles );
}
default_onspawnintermission()
default_onspawnintermission() //checked matches cerberus output
{
spawnpointname = "mp_global_intermission";
spawnpoints = getentarray( spawnpointname, "classname" );
@ -251,18 +262,20 @@ default_onspawnintermission()
}
else
{
/*
/#
maps/mp/_utility::error( "NO " + spawnpointname + " SPAWNPOINTS IN MAP" );
#/
*/
}
}
default_gettimelimit()
default_gettimelimit() //checked matches cerberus output
{
return clamp( getgametypesetting( "timeLimit" ), level.timelimitmin, level.timelimitmax );
}
default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
teamkill_penalty = 1;
score = maps/mp/gametypes/_globallogic_score::_getplayerscore( attacker );
@ -277,7 +290,8 @@ default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
return teamkill_penalty;
}
default_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
default_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
return maps/mp/gametypes/_rank::getscoreinfovalue( "team_kill" );
}

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/gametypes/_class;
#include maps/mp/gametypes/_globallogic_player;
#include maps/mp/gametypes/_spectating;
@ -10,7 +11,7 @@
#include common_scripts/utility;
#include maps/mp/_utility;
init()
init() //checked matches cerberus output
{
precachestring( &"MP_HALFTIME" );
precachestring( &"MP_OVERTIME" );
@ -37,7 +38,7 @@ init()
}
}
setupcallbacks()
setupcallbacks() //checked matches cerberus output
{
level.autoassign = ::menuautoassign;
level.spectator = ::menuspectator;
@ -45,16 +46,16 @@ setupcallbacks()
level.teammenu = ::menuteam;
}
hideloadoutaftertime( delay )
hideloadoutaftertime( delay ) //checked matches cerberus output
{
self endon( "disconnect" );
self endon( "perks_hidden" );
wait delay;
self thread hideallperks( 0,4 );
self thread hideallperks( 0.4 );
self notify( "perks_hidden" );
}
hideloadoutondeath()
hideloadoutondeath() //checked matches cerberus output
{
self endon( "disconnect" );
self endon( "perks_hidden" );
@ -63,7 +64,7 @@ hideloadoutondeath()
self notify( "perks_hidden" );
}
hideloadoutonkill()
hideloadoutonkill() //checked matches cerberus output
{
self endon( "disconnect" );
self endon( "death" );
@ -73,19 +74,17 @@ hideloadoutonkill()
self notify( "perks_hidden" );
}
freegameplayhudelems()
freegameplayhudelems() //checked changed to match cerberus output
{
while ( isDefined( self.perkicon ) )
if ( isDefined( self.perkicon ) )
{
numspecialties = 0;
while ( numspecialties < level.maxspecialties )
for ( numspecialties = 0; numspecialties < level.maxspecialties; numspecialties++ )
{
if ( isDefined( self.perkicon[ numspecialties ] ) )
{
self.perkicon[ numspecialties ] destroyelem();
self.perkname[ numspecialties ] destroyelem();
}
numspecialties++;
}
}
if ( isDefined( self.perkhudelem ) )
@ -139,14 +138,11 @@ freegameplayhudelems()
maps/mp/killstreaks/_killstreaks::destroykillstreaktimers();
}
teamplayercountsequal( playercounts )
teamplayercountsequal( playercounts ) //checked partially changed to match cerberus output did not use continue see github for more info
{
count = undefined;
_a146 = level.teams;
_k146 = getFirstArrayKey( _a146 );
while ( isDefined( _k146 ) )
foreach ( team in level.teams )
{
team = _a146[ _k146 ];
if ( !isDefined( count ) )
{
count = playercounts[ team ];
@ -158,31 +154,26 @@ teamplayercountsequal( playercounts )
return 0;
}
}
_k146 = getNextArrayKey( _a146, _k146 );
}
return 1;
}
teamwithlowestplayercount( playercounts, ignore_team )
teamwithlowestplayercount( playercounts, ignore_team ) //checked changed to match cerberus output
{
count = 9999;
lowest_team = undefined;
_a165 = level.teams;
_k165 = getFirstArrayKey( _a165 );
while ( isDefined( _k165 ) )
foreach ( team in level.teams )
{
team = _a165[ _k165 ];
if ( count > playercounts[ team ] )
{
count = playercounts[ team ];
lowest_team = team;
}
_k165 = getNextArrayKey( _a165, _k165 );
}
return lowest_team;
}
menuautoassign( comingfrommenu )
menuautoassign( comingfrommenu ) //checked changed to match cerberus output
{
teamkeys = getarraykeys( level.teams );
assignment = teamkeys[ randomint( teamkeys.size ) ];
@ -191,80 +182,78 @@ menuautoassign( comingfrommenu )
{
assignment = "allies";
}
else
else if ( level.teambased )
{
if ( level.teambased )
if ( getDvarInt( "party_autoteams" ) == 1 )
{
if ( getDvarInt( "party_autoteams" ) == 1 )
if ( level.allow_teamchange == "1" || self.hasspawned && comingfrommenu )
{
if ( level.allow_teamchange == "1" || self.hasspawned && comingfrommenu )
{
assignment = "";
assignment = "";
}
}
else
{
team = getassignedteam( self );
switch( team )
{
case 1:
assignment = teamkeys[ 1 ];
break;
case 2:
assignment = teamkeys[ 0 ];
break;
case 3:
assignment = teamkeys[ 2 ];
break;
case 4:
if ( !isDefined( level.forceautoassign ) || !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
default:
assignment = "";
if ( isDefined( level.teams[ team ] ) )
{
assignment = team;
}
else if ( team == "spectator" && !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
}
}
if ( assignment == "" || getDvarInt( "party_autoteams" ) == 0 )
{
if ( sessionmodeiszombiesgame() )
{
assignment = "allies";
}
else if ( maps/mp/bots/_bot::is_bot_comp_stomp() )
{
host = gethostplayerforbots();
/*
/#
assert( isDefined( host ) );
#/
*/
if ( !isDefined( host.team ) || host.team == "spectator" )
{
host.team = random( teamkeys );
}
if ( !self is_bot() )
{
assignment = host.team;
}
else
{
assignment = getotherteam( host.team );
}
}
else
{
team = getassignedteam( self );
switch( team )
{
case 1:
assignment = teamkeys[ 1 ];
break;
case 2:
assignment = teamkeys[ 0 ];
break;
case 3:
assignment = teamkeys[ 2 ];
break;
case 4:
if ( !isDefined( level.forceautoassign ) || !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
default:
assignment = "";
if ( isDefined( level.teams[ team ] ) )
{
assignment = team;
}
else
{
if ( team == "spectator" && !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
}
}
}
}
if ( assignment == "" || getDvarInt( "party_autoteams" ) == 0 )
{
if ( sessionmodeiszombiesgame() )
{
assignment = "allies";
}
else if ( maps/mp/bots/_bot::is_bot_comp_stomp() )
{
host = gethostplayerforbots();
/#
assert( isDefined( host ) );
#/
if ( !isDefined( host.team ) || host.team == "spectator" )
{
host.team = random( teamkeys );
}
if ( !self is_bot() )
{
assignment = host.team;
}
else
{
assignment = getotherteam( host.team );
}
}
else playercounts = self maps/mp/teams/_teams::countplayers();
playercounts = self maps/mp/teams/_teams::countplayers();
if ( teamplayercountsequal( playercounts ) )
{
if ( !level.splitscreen && self issplitscreen() )
@ -285,33 +274,30 @@ menuautoassign( comingfrommenu )
assignment = teamwithlowestplayercount( playercounts, "none" );
}
}
if ( assignment == self.pers[ "team" ] || self.sessionstate == "playing" && self.sessionstate == "dead" )
}
if ( assignment == self.pers[ "team" ] && self.sessionstate == "playing" || self.sessionstate == "dead" )
{
self beginclasschoice();
return;
}
}
else if ( getDvarInt( "party_autoteams" ) == 1 )
{
if ( level.allow_teamchange != "1" || !self.hasspawned && !comingfrommenu )
{
team = getassignedteam( self );
if ( isDefined( level.teams[ team ] ) )
{
self beginclasschoice();
assignment = team;
}
else if ( team == "spectator" && !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
}
else if ( getDvarInt( "party_autoteams" ) == 1 )
{
if ( level.allow_teamchange != "1" || !self.hasspawned && !comingfrommenu )
{
team = getassignedteam( self );
if ( isDefined( level.teams[ team ] ) )
{
assignment = team;
}
else
{
if ( team == "spectator" && !level.forceautoassign )
{
self setclientscriptmainmenu( game[ "menu_class" ] );
return;
}
}
}
}
}
if ( assignment != self.pers[ "team" ] || self.sessionstate == "playing" && self.sessionstate == "dead" )
if ( assignment != self.pers[ "team" ] && self.sessionstate == "playing" || self.sessionstate == "dead" )
{
self.switching_teams = 1;
self.joining_team = assignment;
@ -320,7 +306,10 @@ menuautoassign( comingfrommenu )
}
self.pers[ "team" ] = assignment;
self.team = assignment;
self.pers["class"] = undefined;
self.class = undefined;
self.pers["weapon"] = undefined;
self.pers["savedmodel"] = undefined;
self updateobjectivetext();
if ( level.teambased )
{
@ -367,14 +356,11 @@ menuautoassign( comingfrommenu )
self setclientscriptmainmenu( game[ "menu_class" ] );
}
teamscoresequal()
teamscoresequal() //checked partially changed to match cerberus output did not use continue in foreach see github for more info
{
score = undefined;
_a397 = level.teams;
_k397 = getFirstArrayKey( _a397 );
while ( isDefined( _k397 ) )
foreach ( team in level.teams )
{
team = _a397[ _k397 ];
if ( !isDefined( score ) )
{
score = getteamscore( team );
@ -386,7 +372,6 @@ teamscoresequal()
return 0;
}
}
_k397 = getNextArrayKey( _a397, _k397 );
}
return 1;
}
@ -395,21 +380,17 @@ teamwithlowestscore()
{
score = 99999999;
lowest_team = undefined;
_a416 = level.teams;
_k416 = getFirstArrayKey( _a416 );
while ( isDefined( _k416 ) )
foreach ( team in level.teams )
{
team = _a416[ _k416 ];
if ( score > getteamscore( team ) )
{
lowest_team = team;
}
_k416 = getNextArrayKey( _a416, _k416 );
}
return lowest_team;
}
pickteamfromscores( teams )
pickteamfromscores( teams ) //checked matches cerberus output
{
assignment = "allies";
if ( teamscoresequal() )
@ -423,7 +404,7 @@ pickteamfromscores( teams )
return assignment;
}
getsplitscreenteam()
getsplitscreenteam() //checked partially changed to match cerberus output did not use for loop see github for more info
{
index = 0;
while ( index < level.players.size )
@ -433,30 +414,27 @@ getsplitscreenteam()
index++;
continue;
}
else if ( level.players[ index ] == self )
if ( level.players[ index ] == self )
{
index++;
continue;
}
else if ( !self isplayeronsamemachine( level.players[ index ] ) )
if ( !self isplayeronsamemachine( level.players[ index ] ) )
{
index++;
continue;
}
else
team = level.players[ index ].sessionteam;
if ( team != "spectator" )
{
team = level.players[ index ].sessionteam;
if ( team != "spectator" )
{
return team;
}
return team;
}
index++;
}
return "";
}
updateobjectivetext()
updateobjectivetext() //checked matches cerberus output
{
if ( sessionmodeiszombiesgame() || self.pers[ "team" ] == "spectator" )
{
@ -473,17 +451,19 @@ updateobjectivetext()
}
}
closemenus()
closemenus() //checked matches cerberus output
{
self closemenu();
self closeingamemenu();
}
beginclasschoice( forcenewchoice )
beginclasschoice( forcenewchoice ) //checked matches cerberus output
{
/*
/#
assert( isDefined( level.teams[ self.pers[ "team" ] ] ) );
#/
*/
team = self.pers[ "team" ];
if ( level.disableclassselection == 1 || getDvarInt( "migration_soak" ) == 1 )
{
@ -511,11 +491,13 @@ beginclasschoice( forcenewchoice )
}
}
showmainmenuforteam()
showmainmenuforteam() //checked matches cerberus output
{
/*
/#
assert( isDefined( level.teams[ self.pers[ "team" ] ] ) );
#/
*/
team = self.pers[ "team" ];
if ( level.wagermatch )
{
@ -527,7 +509,7 @@ showmainmenuforteam()
}
}
menuteam( team )
menuteam( team ) //checked changed to match cerberus output
{
self closemenus();
if ( !level.console && level.allow_teamchange == "0" && isDefined( self.hasdonecombat ) && self.hasdonecombat )
@ -549,7 +531,10 @@ menuteam( team )
}
self.pers[ "team" ] = team;
self.team = team;
self.pers[ "class" ] = undefined;
self.class = undefined;
self.pers[ "weapon" ] = undefined;
self.pers[ "savedmodel" ] = undefined;
self updateobjectivetext();
if ( !level.rankedmatch && !level.leaguematch )
{
@ -572,7 +557,7 @@ menuteam( team )
self beginclasschoice();
}
menuspectator()
menuspectator() //checked changed to match cerberus output
{
self closemenus();
if ( self.pers[ "team" ] != "spectator" )
@ -586,7 +571,10 @@ menuspectator()
}
self.pers[ "team" ] = "spectator";
self.team = "spectator";
self.pers[ "class" ] = undefined;
self.class = undefined;
self.pers[ "weapon" ] = undefined;
self.pers[ "savedmodel" ] = undefined;
self updateobjectivetext();
self.sessionteam = "spectator";
if ( !level.teambased )
@ -600,7 +588,7 @@ menuspectator()
}
}
menuclass( response )
menuclass( response ) //checked changed to match cerberus output
{
self closemenus();
if ( !isDefined( self.pers[ "team" ] ) || !isDefined( level.teams[ self.pers[ "team" ] ] ) )
@ -635,7 +623,7 @@ menuclass( response )
supplystationclasschange = self.usingsupplystation;
}
self.usingsupplystation = 0;
if ( level.ingraceperiod || !self.hasdonecombat && supplystationclasschange )
if ( level.ingraceperiod && !self.hasdonecombat || supplystationclasschange )
{
self maps/mp/gametypes/_class::setclass( self.pers[ "class" ] );
self.tag_stowed_back = undefined;
@ -643,18 +631,16 @@ menuclass( response )
self maps/mp/gametypes/_class::giveloadout( self.pers[ "team" ], self.pers[ "class" ] );
self maps/mp/killstreaks/_killstreaks::giveownedkillstreak();
}
else
else if ( !self issplitscreen() )
{
if ( !self issplitscreen() )
{
self iprintlnbold( game[ "strings" ][ "change_class" ] );
}
self iprintlnbold( game[ "strings" ][ "change_class" ] );
}
}
else
{
self.pers[ "class" ] = class;
self.class = class;
self.pers[ "weapon" ] = undefined;
if ( game[ "state" ] == "postgame" )
{
return;
@ -689,7 +675,7 @@ menuclass( response )
self thread maps/mp/gametypes/_spectating::setspectatepermissionsformachine();
}
removespawnmessageshortly( delay )
removespawnmessageshortly( delay ) //checked matches cerberus output
{
self endon( "disconnect" );
waittillframeend;
@ -697,3 +683,4 @@ removespawnmessageshortly( delay )
wait delay;
self clearlowermessage( 2 );
}

View File

@ -1,19 +1,20 @@
//checked includes match cerberus output
#include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_hostmigration;
#include maps/mp/killstreaks/_killstreaks;
#include maps/mp/gametypes/_hud_message;
#include maps/mp/_utility;
waittillslowprocessallowed()
waittillslowprocessallowed() //checked matches cerberus output
{
while ( level.lastslowprocessframe == getTime() )
{
wait 0,05;
wait 0.05;
}
level.lastslowprocessframe = getTime();
}
testmenu()
testmenu() //checked matches cerberus output
{
self endon( "death" );
self endon( "disconnect" );
@ -28,7 +29,7 @@ testmenu()
}
}
testshock()
testshock() //checked changed to match cerberus output
{
self endon( "death" );
self endon( "disconnect" );
@ -36,18 +37,16 @@ testshock()
{
wait 3;
numshots = randomint( 6 );
i = 0;
while ( i < numshots )
for ( i = 0; i < numshots; i++ )
{
iprintlnbold( numshots );
self shellshock( "frag_grenade_mp", 0,2 );
wait 0,1;
i++;
wait 0.1;
}
}
}
testhps()
testhps() //checked matches cerberus output
{
self endon( "death" );
self endon( "disconnect" );
@ -66,7 +65,7 @@ testhps()
}
}
timeuntilroundend()
timeuntilroundend() //checked matches cerberus output
{
if ( level.gameended )
{
@ -95,12 +94,12 @@ timeuntilroundend()
return timeremaining + level.postroundtime;
}
gettimeremaining()
gettimeremaining() //checked matches cerberus output
{
return ( ( level.timelimit * 60 ) * 1000 ) - gettimepassed();
}
registerpostroundevent( eventfunc )
registerpostroundevent( eventfunc ) //checked matches cerberus output
{
if ( !isDefined( level.postroundevents ) )
{
@ -109,98 +108,86 @@ registerpostroundevent( eventfunc )
level.postroundevents[ level.postroundevents.size ] = eventfunc;
}
executepostroundevents()
executepostroundevents() //checked changed to match cerberus output
{
if ( !isDefined( level.postroundevents ) )
{
return;
}
i = 0;
while ( i < level.postroundevents.size )
for ( i = 0; i < level.postroundevents.size; i++ )
{
[[ level.postroundevents[ i ] ]]();
i++;
}
}
getvalueinrange( value, minvalue, maxvalue )
getvalueinrange( value, minvalue, maxvalue ) //checked changed to match cerberus output
{
if ( value > maxvalue )
{
return maxvalue;
}
else if ( value < minvalue )
{
return minvalue;
}
else
{
if ( value < minvalue )
{
return minvalue;
}
else
{
return value;
}
return value;
}
}
assertproperplacement()
assertproperplacement() //checked partially changed to match cerberus output changed at own discretion
{
/*
/#
numplayers = level.placement[ "all" ].size;
if ( level.teambased )
{
i = 0;
while ( i < ( numplayers - 1 ) )
for ( i = 0; i < numplayers - 1; i++ )
{
if ( level.placement[ "all" ][ i ].score < level.placement[ "all" ][ i + 1 ].score )
{
println( "^1Placement array:" );
i = 0;
while ( i < numplayers )
for ( i = 0; i < numplayers; i++ )
{
player = level.placement[ "all" ][ i ];
println( "^1" + i + ". " + player.name + ": " + player.score );
i++;
}
assertmsg( "Placement array was not properly sorted" );
break;
}
else
{
i++;
}
}
}
else i = 0;
while ( i < ( numplayers - 1 ) )
else
{
if ( level.placement[ "all" ][ i ].pointstowin < level.placement[ "all" ][ i + 1 ].pointstowin )
for ( i = 0; i < numplayers - 1; i++ )
{
println( "^1Placement array:" );
i = 0;
while ( i < numplayers )
if ( level.placement[ "all" ][ i ].pointstowin < level.placement[ "all" ][ i + 1 ].pointstowin )
{
player = level.placement[ "all" ][ i ];
println( "^1" + i + ". " + player.name + ": " + player.pointstowin );
i++;
println( "^1Placement array:" );
for ( i = 0; i < numplayers; i++ )
{
player = level.placement[ "all" ][ i ];
println( "^1" + i + ". " + player.name + ": " + player.pointstowin );
}
assertmsg( "Placement array was not properly sorted" );
break;
}
assertmsg( "Placement array was not properly sorted" );
return;
}
else
{
i++;
#/
}
}
#/
*/
}
isvalidclass( class )
isvalidclass( class ) //checked matches cerberus output
{
if ( level.oldschool || sessionmodeiszombiesgame() )
{
/*
/#
assert( !isDefined( class ) );
#/
*/
return 1;
}
if ( isDefined( class ) )
@ -209,7 +196,7 @@ isvalidclass( class )
}
}
playtickingsound( gametype_tick_sound )
playtickingsound( gametype_tick_sound ) //checked matches cerberus output
{
self endon( "death" );
self endon( "stop_ticking" );
@ -226,28 +213,28 @@ playtickingsound( gametype_tick_sound )
else if ( time > 4 )
{
time -= 0,5;
wait 0,5;
wait 0.5;
}
else if ( time > 1 )
{
time -= 0,4;
wait 0,4;
wait 0.4;
}
else
{
time -= 0,3;
wait 0,3;
wait 0.3;
}
maps/mp/gametypes/_hostmigration::waittillhostmigrationdone();
}
}
stoptickingsound()
stoptickingsound() //checked matches cerberus output
{
self notify( "stop_ticking" );
}
gametimer()
gametimer() //checked changed to match cerberus output
{
level endon( "game_ended" );
level waittill( "prematch_over" );
@ -256,6 +243,7 @@ gametimer()
if ( isDefined( game[ "roundMillisecondsAlreadyPassed" ] ) )
{
level.starttime -= game[ "roundMillisecondsAlreadyPassed" ];
game["roundMillisecondsAlreadyPassed"] = undefined;
}
prevtime = getTime();
while ( game[ "state" ] == "playing" )
@ -269,7 +257,7 @@ gametimer()
}
}
gettimepassed()
gettimepassed() //checked matches cerberus output
{
if ( !isDefined( level.starttime ) )
{
@ -285,7 +273,7 @@ gettimepassed()
}
}
pausetimer()
pausetimer() //checked matches cerberus output
{
if ( level.timerstopped )
{
@ -295,7 +283,7 @@ pausetimer()
level.timerpausetime = getTime();
}
resumetimer()
resumetimer() //checked matches cerberus output
{
if ( !level.timerstopped )
{
@ -305,14 +293,16 @@ resumetimer()
level.discardtime += getTime() - level.timerpausetime;
}
getscoreremaining( team )
getscoreremaining( team ) //checked matches cerberus output
{
/*
/#
if ( !isplayer( self ) )
{
assert( isDefined( team ) );
}
#/
*/
scorelimit = level.scorelimit;
if ( isplayer( self ) )
{
@ -324,7 +314,7 @@ getscoreremaining( team )
}
}
getteamscoreforround( team )
getteamscoreforround( team ) //checked matches cerberus output
{
if ( level.roundscorecarry && isDefined( game[ "lastroundscore" ][ team ] ) )
{
@ -333,17 +323,19 @@ getteamscoreforround( team )
return getteamscore( team );
}
getscoreperminute( team )
getscoreperminute( team ) //checked matches cerberus output
{
/*
/#
if ( !isplayer( self ) )
{
assert( isDefined( team ) );
}
#/
*/
scorelimit = level.scorelimit;
timelimit = level.timelimit;
minutespassed = ( gettimepassed() / 60000 ) + 0,0001;
minutespassed = ( gettimepassed() / 60000 ) + 0.0001;
if ( isplayer( self ) )
{
return maps/mp/gametypes/_globallogic_score::_getplayerscore( self ) / minutespassed;
@ -354,14 +346,16 @@ getscoreperminute( team )
}
}
getestimatedtimeuntilscorelimit( team )
getestimatedtimeuntilscorelimit( team ) //checked matches cerberus output
{
/*
/#
if ( !isplayer( self ) )
{
assert( isDefined( team ) );
}
#/
*/
scoreperminute = self getscoreperminute( team );
scoreremaining = self getscoreremaining( team );
if ( !scoreperminute )
@ -371,36 +365,38 @@ getestimatedtimeuntilscorelimit( team )
return scoreremaining / scoreperminute;
}
rumbler()
rumbler() //checked matches cerberus output
{
self endon( "disconnect" );
while ( 1 )
{
wait 0,1;
wait 0.1;
self playrumbleonentity( "damage_heavy" );
}
}
waitfortimeornotify( time, notifyname )
waitfortimeornotify( time, notifyname ) //checked matches cerberus output
{
self endon( notifyname );
wait time;
}
waitfortimeornotifynoartillery( time, notifyname )
waitfortimeornotifynoartillery( time, notifyname ) //checked matches cerberus output
{
self endon( notifyname );
wait time;
while ( isDefined( level.artilleryinprogress ) )
{
/*
/#
assert( level.artilleryinprogress );
#/
wait 0,25;
*/
wait 0.25;
}
}
isheadshot( sweapon, shitloc, smeansofdeath, einflictor )
isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) //checked changed to match cerberus output
{
if ( shitloc != "head" && shitloc != "helmet" )
{
@ -419,7 +415,7 @@ isheadshot( sweapon, shitloc, smeansofdeath, einflictor )
}
if ( maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) )
{
if ( isDefined( einflictor ) || !isDefined( einflictor.controlled ) && einflictor.controlled == 0 )
if ( isDefined( einflictor ) || !isDefined( einflictor.controlled ) || einflictor.controlled == 0 )
{
return 0;
}
@ -427,7 +423,7 @@ isheadshot( sweapon, shitloc, smeansofdeath, einflictor )
return 1;
}
gethitlocheight( shitloc )
gethitlocheight( shitloc ) //checked matches cerberus output
{
switch( shitloc )
{
@ -459,34 +455,32 @@ gethitlocheight( shitloc )
return 48;
}
debugline( start, end )
debugline( start, end ) //checked changed to match cerberus output
{
/*
/#
i = 0;
while ( i < 50 )
for ( i = 0; i < 50; i++ )
{
line( start, end );
wait 0,05;
i++;
wait 0.05;
#/
}
*/
}
isexcluded( entity, entitylist )
isexcluded( entity, entitylist ) //checked changed to match cerberus output
{
index = 0;
while ( index < entitylist.size )
for ( index = 0; index < entitylist.size; index++ )
{
if ( entity == entitylist[ index ] )
{
return 1;
}
index++;
}
return 0;
}
waitfortimeornotifies( desireddelay )
waitfortimeornotifies( desireddelay ) //checked matches cerberus output
{
startedwaiting = getTime();
waitedtime = ( getTime() - startedwaiting ) / 1000;
@ -501,20 +495,17 @@ waitfortimeornotifies( desireddelay )
}
}
logteamwinstring( wintype, winner )
logteamwinstring( wintype, winner ) //checked changed to match cerberus output
{
log_string = wintype;
if ( isDefined( winner ) )
{
log_string = ( log_string + ", win: " ) + winner;
}
_a495 = level.teams;
_k495 = getFirstArrayKey( _a495 );
while ( isDefined( _k495 ) )
foreach ( team in level.teams )
{
team = _a495[ _k495 ];
log_string = ( log_string + ", " ) + team + ": " + game[ "teamScores" ][ team ];
_k495 = getNextArrayKey( _a495, _k495 );
}
logstring( log_string );
}

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/gametypes/_damagefeedback;
#include maps/mp/gametypes/_globallogic_player;
#include maps/mp/gametypes/_weapons;
@ -5,7 +6,7 @@
#include maps/mp/gametypes/_class;
#include maps/mp/_utility;
callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname )
callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname ) //checked partially changed to match cerberus output partially changed to match beta dump //changed at own discretion
{
if ( level.idflags_radius & idflags )
{
@ -38,12 +39,9 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
{
sweapon = "explodable_barrel_mp";
}
else
else if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
sweapon = "destructible_car_mp";
}
sweapon = "destructible_car_mp";
}
}
if ( idflags & level.idflags_no_protection )
@ -55,28 +53,22 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" )
{
}
else
else if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_GRENADE" )
{
if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_GRENADE" )
idamage *= getvehicleprojectilescalar( sweapon );
idamage = int( idamage );
if ( idamage == 0 )
{
idamage *= getvehicleprojectilescalar( sweapon );
idamage = int( idamage );
if ( idamage == 0 )
{
return;
}
return;
}
else
}
else if ( smeansofdeath == "MOD_GRENADE_SPLASH" )
{
idamage *= getvehicleunderneathsplashscalar( sweapon );
idamage = int( idamage );
if ( idamage == 0 )
{
if ( smeansofdeath == "MOD_GRENADE_SPLASH" )
{
idamage *= getvehicleunderneathsplashscalar( sweapon );
idamage = int( idamage );
if ( idamage == 0 )
{
return;
}
}
return;
}
}
idamage *= level.vehicledamagescalar;
@ -131,18 +123,15 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
self.lastdamagewasfromenemy = 0;
self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 1 );
}
else
else if ( level.friendlyfire == 3 )
{
if ( level.friendlyfire == 3 )
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 );
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 );
}
friendly = 1;
}
@ -152,48 +141,46 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
{
return;
}
else if ( !level.teambased && isDefined( self.targetname ) && self.targetname == "rcbomb" )
{
}
else if ( isDefined( self.owner ) && isDefined( eattacker ) && self.owner == eattacker )
{
return;
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) )
{
eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
if ( !level.teambased && isDefined( self.targetname ) && self.targetname == "rcbomb" )
{
}
else
{
if ( isDefined( self.owner ) && isDefined( eattacker ) && self.owner == eattacker )
{
return;
}
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) )
{
eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
self.wascooked = undefined;
}
attacker_seat = undefined;
if ( isDefined( eattacker ) )
{
attacker_seat = self getoccupantseat( eattacker );
}
if ( isDefined( eattacker ) )
{
self.lastdamagewasfromenemy = !isDefined( attacker_seat );
}
self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 );
if ( level.gametype == "hack" && sweapon != "emp_grenade_mp" )
{
idamage = 0;
}
self.wascooked = undefined;
}
attacker_seat = undefined;
if ( isDefined( eattacker ) )
{
attacker_seat = self getoccupantseat( eattacker );
}
if ( isDefined( eattacker ) && !isDefined( attacker_seat ) )
{
self.lastdamagewasfromenemy = 1;
}
else
{
self.lastdamagewasfromenemy = 0;
}
self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 );
if ( level.gametype == "hack" && sweapon != "emp_grenade_mp" )
{
idamage = 0;
}
}
if ( isDefined( eattacker ) && eattacker != self )
@ -207,12 +194,14 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
}
}
}
/*
/#
if ( getDvarInt( "g_debugDamage" ) )
{
println( "actor:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc );
#/
}
*/
if ( 1 )
{
lpselfnum = self getentitynumber();
@ -236,7 +225,7 @@ callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath,
}
}
callback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime )
callback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ) //checked changed to match beta dump
{
idamage = maps/mp/gametypes/_class::cac_modified_vehicle_damage( self, eattacker, idamage, smeansofdeath, sweapon, einflictor );
finnerdamage = maps/mp/gametypes/_class::cac_modified_vehicle_damage( self, eattacker, finnerdamage, smeansofdeath, sweapon, einflictor );
@ -252,13 +241,13 @@ callback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fout
return;
}
friendly = 0;
if ( idflags & level.idflags_no_protection )
if ( !idflags & !level.idflags_no_protection )
{
if ( self isvehicleimmunetodamage( idflags, smeansofdeath, sweapon ) )
{
return;
}
if ( smeansofdeath != "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE_SPLASH" && smeansofdeath == "MOD_EXPLOSIVE" )
if ( smeansofdeath == "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE_SPLASH" || smeansofdeath == "MOD_EXPLOSIVE" )
{
scalar = getvehicleprojectilesplashscalar( sweapon );
idamage = int( idamage * scalar );
@ -325,28 +314,23 @@ callback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fout
}
}
friendly = 1;
return;
}
else
{
if ( !level.hardcoremode && isDefined( self.owner ) && isDefined( eattacker.owner ) && self.owner == eattacker.owner )
{
return;
return;
}
else
else if ( idamage < 1 )
{
if ( idamage < 1 )
{
idamage = 1;
}
self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime );
idamage = 1;
}
self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime );
}
}
}
vehiclecrush()
vehiclecrush() //checked matches cerberus output
{
self endon( "disconnect" );
if ( isDefined( level._effect ) && isDefined( level._effect[ "tanksquish" ] ) )
@ -356,7 +340,7 @@ vehiclecrush()
self playsound( "chr_crunch" );
}
getvehicleprojectilescalar( sweapon )
getvehicleprojectilescalar( sweapon ) //checked matches cerberus output
{
if ( sweapon == "remote_missile_missile_mp" )
{
@ -368,11 +352,11 @@ getvehicleprojectilescalar( sweapon )
}
else if ( sweapon == "smaw_mp" )
{
scale = 0,2;
scale = 0.2;
}
else if ( sweapon == "fhj18_mp" )
{
scale = 0,2;
scale = 0.2;
}
else
{
@ -381,7 +365,7 @@ getvehicleprojectilescalar( sweapon )
return scale;
}
getvehicleprojectilesplashscalar( sweapon )
getvehicleprojectilesplashscalar( sweapon ) //checked matches cerberus output
{
if ( sweapon == "remote_missile_missile_mp" )
{
@ -393,7 +377,7 @@ getvehicleprojectilesplashscalar( sweapon )
}
else if ( sweapon == "chopper_minigun_mp" )
{
scale = 0,5;
scale = 0.5;
}
else
{
@ -402,7 +386,7 @@ getvehicleprojectilesplashscalar( sweapon )
return scale;
}
getvehicleunderneathsplashscalar( sweapon )
getvehicleunderneathsplashscalar( sweapon ) //checked matches cerberus output
{
if ( sweapon == "satchel_charge_mp" )
{
@ -416,7 +400,7 @@ getvehicleunderneathsplashscalar( sweapon )
return scale;
}
getvehiclebulletdamage( sweapon )
getvehiclebulletdamage( sweapon ) //checked matches cerberus output
{
if ( issubstr( sweapon, "ptrs41_" ) )
{
@ -437,7 +421,7 @@ getvehiclebulletdamage( sweapon )
return idamage;
}
allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon )
allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
if ( isDefined( self.allowfriendlyfiredamageoverride ) )
{
@ -446,3 +430,4 @@ allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon )
vehicle = eattacker getvehicleoccupied();
return 0;
}

View File

@ -39,6 +39,11 @@ patch_mp/maps/mp/gametypes/_damagefeedback.gsc
patch_mp/maps/mp/gametypes/_deathicons.gsc
patch_mp/maps/mp/gametypes/_friendicons.gsc
patch_mp/maps/mp/gametypes/_globallogic.gsc
patch_mp/maps/mp/gametypes/_globallogic_actor.gsc
patch_mp/maps/mp/gametypes/_globallogic_defaults.gsc
patch_mp/maps/mp/gametypes/_globallogic_ui.gsc
patch_mp/maps/mp/gametypes/_globallogic_utils.gsc
patch_mp/maps/mp/gametypes/_globallogic_vehicle.gsc
patch_mp/maps/mp/gametypes/_healthoverlay.gsc
patch_mp/maps/mp/gametypes/_hostmigration.gsc
patch_mp/maps/mp/gametypes/_hud.gsc
@ -73,15 +78,10 @@ patch_mp/maps/mp/gametypes/tdm.gsc
### The following scripts are not checked yet, uploaded to setup a baseline:
```
patch_mp/maps/mp/gametypes/_gameobjects.gsc
patch_mp/maps/mp/gametypes/_globallogic_actor.gsc
patch_mp/maps/mp/gametypes/_globallogic_audio.gsc
patch_mp/maps/mp/gametypes/_globallogic_defaults.gsc
patch_mp/maps/mp/gametypes/_globallogic_player.gsc
patch_mp/maps/mp/gametypes/_globallogic_score.gsc
patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc
patch_mp/maps/mp/gametypes/_globallogic_ui.gsc
patch_mp/maps/mp/gametypes/_globallogic_utils.gsc
patch_mp/maps/mp/gametypes/_globallogic_vehicle.gsc
patch_mp/maps/mp/gametypes/_hud_message.gsc
patch_mp/maps/mp/gametypes/_hud_util.gsc
patch_mp/maps/mp/gametypes/_spawning.gsc

View File

@ -1,3 +1,4 @@
//checked includes match cerberus output
#include maps/mp/_challenges;
#include maps/mp/gametypes_zm/_damagefeedback;
#include maps/mp/gametypes_zm/_weapons;
@ -5,7 +6,7 @@
#include maps/mp/gametypes_zm/_globallogic_player;
#include maps/mp/_utility;
callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex )
callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) //checked changed to match cerberus output
{
if ( game[ "state" ] == "postgame" )
{
@ -43,12 +44,9 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
return;
}
else
else if ( smeansofdeath == "MOD_HEAD_SHOT" )
{
if ( smeansofdeath == "MOD_HEAD_SHOT" )
{
idamage = 150;
}
idamage = 150;
}
}
if ( sweapon == "none" && isDefined( einflictor ) )
@ -57,12 +55,9 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
sweapon = "explodable_barrel_mp";
}
else
else if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) )
{
sweapon = "destructible_car_mp";
}
sweapon = "destructible_car_mp";
}
}
if ( idflags & level.idflags_no_protection )
@ -91,56 +86,54 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
{
return;
}
else
else if ( level.friendlyfire == 3 )
{
if ( level.friendlyfire == 3 )
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = int( idamage * 0,5 );
if ( idamage < 1 )
{
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
idamage = 1;
}
self.lastdamagewasfromenemy = 0;
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
}
friendly = 1;
}
else if ( isDefined( eattacker ) && isDefined( self.script_owner ) && eattacker == self.script_owner && !level.hardcoremode )
{
return;
}
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && isDefined( eattacker.script_owner ) && eattacker.script_owner == self.script_owner )
{
return;
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) && !issubstr( smeansofdeath, "MOD_MELEE" ) )
{
eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && eattacker == self.script_owner && !level.hardcoremode )
{
return;
}
if ( isDefined( eattacker ) && isDefined( self.script_owner ) && isDefined( eattacker.script_owner ) && eattacker.script_owner == self.script_owner )
{
return;
}
if ( idamage < 1 )
{
idamage = 1;
}
if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) && !issubstr( smeansofdeath, "MOD_MELEE" ) )
{
eattacker thread maps/mp/gametypes_zm/_weapons::checkhit( sweapon );
}
if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor ) && isDefined( einflictor.iscooked ) )
{
self.wascooked = getTime();
}
else
{
self.wascooked = undefined;
}
if ( isDefined( eattacker ) )
{
self.lastdamagewasfromenemy = eattacker != self;
}
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
self.wascooked = undefined;
}
if ( isDefined( eattacker ) && eattacker != self )
{
if ( sweapon != "artillery_mp" || !isDefined( einflictor ) && !isai( einflictor ) )
self.lastdamagewasfromenemy = 1;
}
else
{
self.lastdamagewasfromenemy = 0;
}
self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex );
if ( isDefined( eattacker ) && eattacker != self )
{
if ( sweapon != "artillery_mp" && !isDefined( einflictor ) || !isai( einflictor ) )
{
if ( idamage > 0 )
{
@ -149,12 +142,14 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
}
}
}
/*
/#
if ( getDvarInt( "g_debugDamage" ) )
{
println( "actor:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + shitloc + ";" + boneindex + "\n" );
#/
}
*/
if ( 1 )
{
lpselfnum = self getentitynumber();
@ -178,7 +173,7 @@ callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
}
}
callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime )
callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) //checked matches cerberus output
{
if ( game[ "state" ] == "postgame" )
{
@ -205,3 +200,5 @@ callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdi
}
}
}

View File

@ -51,6 +51,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/_damagefeedback.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_actor.gsc
patch_zm/maps/mp/gametypes_zm/_healthoverlay.gsc
patch_zm/maps/mp/gametypes_zm/_hostmigration.gsc
patch_zm/maps/mp/gametypes_zm/_hud.gsc
@ -81,7 +82,6 @@ patch_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc
### The following scripts are not checked yet, uploaded to setup a baseline:
```
patch_zm/maps/mp/gametypes_zm/_gameobjects.gsc
patch_zm/maps/mp/gametypes_zm/_globallogic_actor.gsc
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_player.gsc

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
### The following gscs compile and run successfully with no known errors:
```
zm_nuked_patch/maps/mp/gametypes_zm/zstandard.gsc
zm_nuked_patch/maps/mp/zm_nuked.gsc
```
### The following scripts compile and run successfully with minor errors: