checked 8 gametype related scripts

Checked conf(kill confirmed), dm(deathmatch), gun(gungame), oic(one in the chamber), sas(sticks and stones), sd(search and destroy), shrp(sharpshooter), and tdm(team deathmatch).
This commit is contained in:
JezuzLizard
2020-05-03 19:32:17 -07:00
parent 046d571f12
commit 20883d4bec
9 changed files with 377 additions and 508 deletions

View File

@ -5,11 +5,13 @@
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#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 common_scripts/utility; #include common_scripts/utility;
#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
{ {
maps/mp/gametypes/_globallogic::init(); maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks(); maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -53,7 +55,7 @@ main()
} }
} }
onprecachegametype() onprecachegametype() //checked matches cerberus output
{ {
precachemodel( "p6_dogtags" ); precachemodel( "p6_dogtags" );
precachemodel( "p6_dogtags_friend" ); precachemodel( "p6_dogtags_friend" );
@ -61,7 +63,7 @@ onprecachegametype()
precachestring( &"MP_KILL_DENIED" ); precachestring( &"MP_KILL_DENIED" );
} }
onstartgametype() onstartgametype() //checked changed to match cerberus output
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
if ( !isDefined( game[ "switchedsides" ] ) ) if ( !isDefined( game[ "switchedsides" ] ) )
@ -79,11 +81,8 @@ onstartgametype()
maps/mp/gametypes/_gameobjects::main( allowed ); maps/mp/gametypes/_gameobjects::main( allowed );
level.spawnmins = ( 0, 0, 1 ); level.spawnmins = ( 0, 0, 1 );
level.spawnmaxs = ( 0, 0, 1 ); level.spawnmaxs = ( 0, 0, 1 );
_a109 = level.teams; foreach ( team in level.teams )
_k109 = getFirstArrayKey( _a109 );
while ( isDefined( _k109 ) )
{ {
team = _a109[ _k109 ];
setobjectivetext( team, &"OBJECTIVES_CONF" ); setobjectivetext( team, &"OBJECTIVES_CONF" );
setobjectivehinttext( team, &"OBJECTIVES_CONF_HINT" ); setobjectivehinttext( team, &"OBJECTIVES_CONF_HINT" );
if ( level.splitscreen ) if ( level.splitscreen )
@ -96,17 +95,12 @@ onstartgametype()
} }
maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) );
maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" ); maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" );
_k109 = getNextArrayKey( _a109, _k109 );
} }
maps/mp/gametypes/_spawning::updateallspawnpoints(); maps/mp/gametypes/_spawning::updateallspawnpoints();
level.spawn_start = []; level.spawn_start = [];
_a131 = level.teams; foreach ( team in level.teams )
_k131 = getFirstArrayKey( _a131 );
while ( isDefined( _k131 ) )
{ {
team = _a131[ _k131 ];
level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) );
_k131 = getNextArrayKey( _a131, _k131 );
} }
level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs ); level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs );
setmapcenter( level.mapcenter ); setmapcenter( level.mapcenter );
@ -123,7 +117,7 @@ onstartgametype()
} }
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output
{ {
if ( !isplayer( attacker ) || attacker.team == self.team ) if ( !isplayer( attacker ) || attacker.team == self.team )
{ {
@ -133,7 +127,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
attacker maps/mp/gametypes/_globallogic_score::giveteamscoreforobjective( attacker.team, level.teamscoreperkill ); attacker maps/mp/gametypes/_globallogic_score::giveteamscoreforobjective( attacker.team, level.teamscoreperkill );
} }
spawndogtags( victim, attacker ) spawndogtags( victim, attacker ) //checked changed to match cerberus output
{ {
if ( isDefined( level.dogtags[ victim.entnum ] ) ) if ( isDefined( level.dogtags[ victim.entnum ] ) )
{ {
@ -142,28 +136,24 @@ spawndogtags( victim, attacker )
} }
else else
{ {
visuals[ 0 ] = spawn( "script_model", ( 0, 0, 1 ) ); visuals[ 0 ] = spawn( "script_model", ( 0, 0, 0 ) );
visuals[ 0 ] setmodel( "p6_dogtags" ); visuals[ 0 ] setmodel( "p6_dogtags" );
visuals[ 1 ] = spawn( "script_model", ( 0, 0, 1 ) ); visuals[ 1 ] = spawn( "script_model", ( 0, 0, 0 ) );
visuals[ 1 ] setmodel( "p6_dogtags_friend" ); visuals[ 1 ] setmodel( "p6_dogtags_friend" );
trigger = spawn( "trigger_radius", ( 0, 0, 1 ), 0, 32, 32 ); trigger = spawn( "trigger_radius", ( 0, 0, 0 ), 0, 32, 32 );
level.dogtags[ victim.entnum ] = maps/mp/gametypes/_gameobjects::createuseobject( "any", trigger, visuals, vectorScale( ( 0, 0, 1 ), 16 ) ); level.dogtags[ victim.entnum ] = maps/mp/gametypes/_gameobjects::createuseobject( "any", trigger, visuals, vectorScale( ( 0, 0, 1 ), 16 ) );
_a189 = level.teams; foreach ( team in level.teams )
_k189 = getFirstArrayKey( _a189 );
while ( isDefined( _k189 ) )
{ {
team = _a189[ _k189 ];
objective_delete( level.dogtags[ victim.entnum ].objid[ team ] ); objective_delete( level.dogtags[ victim.entnum ].objid[ team ] );
maps/mp/gametypes/_gameobjects::releaseobjid( level.dogtags[ victim.entnum ].objid[ team ] ); maps/mp/gametypes/_gameobjects::releaseobjid( level.dogtags[ victim.entnum ].objid[ team ] );
maps/mp/gametypes/_objpoints::deleteobjpoint( level.dogtags[ victim.entnum ].objpoints[ team ] ); maps/mp/gametypes/_objpoints::deleteobjpoint( level.dogtags[ victim.entnum ].objpoints[ team ] );
_k189 = getNextArrayKey( _a189, _k189 );
} }
level.dogtags[ victim.entnum ] maps/mp/gametypes/_gameobjects::setusetime( 0 ); level.dogtags[ victim.entnum ] maps/mp/gametypes/_gameobjects::setusetime( 0 );
level.dogtags[ victim.entnum ].onuse = ::onuse; level.dogtags[ victim.entnum ].onuse = ::onuse;
level.dogtags[ victim.entnum ].victim = victim; level.dogtags[ victim.entnum ].victim = victim;
level.dogtags[ victim.entnum ].victimteam = victim.team; level.dogtags[ victim.entnum ].victimteam = victim.team;
level.dogtags[ victim.entnum ].objid = maps/mp/gametypes/_gameobjects::getnextobjid(); level.dogtags[ victim.entnum ].objid = maps/mp/gametypes/_gameobjects::getnextobjid();
objective_add( level.dogtags[ victim.entnum ].objid, "invisible", ( 0, 0, 1 ) ); objective_add( level.dogtags[ victim.entnum ].objid, "invisible", ( 0, 0, 0 ) );
objective_icon( level.dogtags[ victim.entnum ].objid, "waypoint_dogtags" ); objective_icon( level.dogtags[ victim.entnum ].objid, "waypoint_dogtags" );
level thread clearonvictimdisconnect( victim ); level thread clearonvictimdisconnect( victim );
victim thread tagteamupdater( level.dogtags[ victim.entnum ] ); victim thread tagteamupdater( level.dogtags[ victim.entnum ] );
@ -188,31 +178,24 @@ spawndogtags( victim, attacker )
level notify( "dogtag_spawned" ); level notify( "dogtag_spawned" );
} }
showtoteam( gameobject, team ) showtoteam( gameobject, team ) //checked changed to match cerberus output
{ {
gameobject endon( "death" ); gameobject endon( "death" );
gameobject endon( "reset" ); gameobject endon( "reset" );
self hide(); self hide();
_a245 = level.players; foreach ( player in level.players )
_k245 = getFirstArrayKey( _a245 );
while ( isDefined( _k245 ) )
{ {
player = _a245[ _k245 ];
if ( player.team == team ) if ( player.team == team )
{ {
self showtoplayer( player ); self showtoplayer( player );
} }
_k245 = getNextArrayKey( _a245, _k245 );
} }
for ( ;; ) for ( ;; )
{ {
level waittill( "joined_team" ); level waittill( "joined_team" );
self hide(); self hide();
_a256 = level.players; foreach ( player in level.players )
_k256 = getFirstArrayKey( _a256 );
while ( isDefined( _k256 ) )
{ {
player = _a256[ _k256 ];
if ( player.team == team ) if ( player.team == team )
{ {
self showtoplayer( player ); self showtoplayer( player );
@ -221,36 +204,28 @@ showtoteam( gameobject, team )
{ {
objective_state( gameobject.objid, "invisible" ); objective_state( gameobject.objid, "invisible" );
} }
_k256 = getNextArrayKey( _a256, _k256 );
} }
} }
} }
showtoenemyteams( gameobject, friend_team ) showtoenemyteams( gameobject, friend_team ) //checked changed to match cerberus output
{ {
gameobject endon( "death" ); gameobject endon( "death" );
gameobject endon( "reset" ); gameobject endon( "reset" );
self hide(); self hide();
_a274 = level.players; foreach ( player in level.players )
_k274 = getFirstArrayKey( _a274 );
while ( isDefined( _k274 ) )
{ {
player = _a274[ _k274 ];
if ( player.team != friend_team ) if ( player.team != friend_team )
{ {
self showtoplayer( player ); self showtoplayer( player );
} }
_k274 = getNextArrayKey( _a274, _k274 );
} }
for ( ;; ) for ( ;; )
{ {
level waittill( "joined_team" ); level waittill( "joined_team" );
self hide(); self hide();
_a285 = level.players; foreach ( player in level.players )
_k285 = getFirstArrayKey( _a285 );
while ( isDefined( _k285 ) )
{ {
player = _a285[ _k285 ];
if ( player.team != friend_team ) if ( player.team != friend_team )
{ {
self showtoplayer( player ); self showtoplayer( player );
@ -259,12 +234,11 @@ showtoenemyteams( gameobject, friend_team )
{ {
objective_state( gameobject.objid, "invisible" ); objective_state( gameobject.objid, "invisible" );
} }
_k285 = getNextArrayKey( _a285, _k285 );
} }
} }
} }
onuse( player ) onuse( player ) //checked matches cerberus output
{ {
tacinsertboost = 0; tacinsertboost = 0;
if ( player.team != self.attackerteam ) if ( player.team != self.attackerteam )
@ -309,10 +283,12 @@ onuse( player )
splash = &"SPLASHES_KILL_CONFIRMED"; splash = &"SPLASHES_KILL_CONFIRMED";
player addplayerstat( "KILLSCONFIRMED", 1 ); player addplayerstat( "KILLSCONFIRMED", 1 );
player recordgameevent( "capture" ); player recordgameevent( "capture" );
/*
/# /#
assert( isDefined( player.lastkillconfirmedtime ) ); assert( isDefined( player.lastkillconfirmedtime ) );
assert( isDefined( player.lastkillconfirmedcount ) ); assert( isDefined( player.lastkillconfirmedcount ) );
#/ #/
*/
if ( self.attacker != player ) if ( self.attacker != player )
{ {
self.attacker thread onpickup( "teammate_kill_confirmed", splash ); self.attacker thread onpickup( "teammate_kill_confirmed", splash );
@ -344,18 +320,18 @@ onuse( player )
self resettags(); self resettags();
} }
onpickup( event, splash ) onpickup( event, splash ) //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
self endon( "disconnect" ); self endon( "disconnect" );
while ( !isDefined( self.pers ) ) while ( !isDefined( self.pers ) )
{ {
wait 0,05; wait 0.05;
} }
maps/mp/_scoreevents::processscoreevent( event, self ); maps/mp/_scoreevents::processscoreevent( event, self );
} }
resettags() resettags() //checked matches cerberus output
{ {
self.attacker = undefined; self.attacker = undefined;
self.unreachable = undefined; self.unreachable = undefined;
@ -371,7 +347,7 @@ resettags()
objective_state( self.objid, "invisible" ); objective_state( self.objid, "invisible" );
} }
bounce() bounce() //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
self endon( "reset" ); self endon( "reset" );
@ -379,20 +355,20 @@ bounce()
toppos = self.curorigin + vectorScale( ( 0, 0, 1 ), 12 ); toppos = self.curorigin + vectorScale( ( 0, 0, 1 ), 12 );
while ( 1 ) while ( 1 )
{ {
self.visuals[ 0 ] moveto( toppos, 0,5, 0,15, 0,15 ); self.visuals[ 0 ] moveto( toppos, 0.5, 0.15, 0.15 );
self.visuals[ 0 ] rotateyaw( 180, 0,5 ); self.visuals[ 0 ] rotateyaw( 180, 0.5 );
self.visuals[ 1 ] moveto( toppos, 0,5, 0,15, 0,15 ); self.visuals[ 1 ] moveto( toppos, 0.5, 0.15, 0.15 );
self.visuals[ 1 ] rotateyaw( 180, 0,5 ); self.visuals[ 1 ] rotateyaw( 180, 0.5 );
wait 0,5; wait 0.5;
self.visuals[ 0 ] moveto( bottompos, 0,5, 0,15, 0,15 ); self.visuals[ 0 ] moveto( bottompos, 0.5, 0.15, 0.15 );
self.visuals[ 0 ] rotateyaw( 180, 0,5 ); self.visuals[ 0 ] rotateyaw( 180, 0.5 );
self.visuals[ 1 ] moveto( bottompos, 0,5, 0,15, 0,15 ); self.visuals[ 1 ] moveto( bottompos, 0.5, 0.15, 0.15 );
self.visuals[ 1 ] rotateyaw( 180, 0,5 ); self.visuals[ 1 ] rotateyaw( 180, 0.5 );
wait 0,5; wait 0.5;
} }
} }
timeout( victim ) timeout( victim ) //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
victim endon( "disconnect" ); victim endon( "disconnect" );
@ -409,7 +385,7 @@ timeout( victim )
self maps/mp/gametypes/_gameobjects::allowuse( "none" ); self maps/mp/gametypes/_gameobjects::allowuse( "none" );
} }
tagteamupdater( tags ) tagteamupdater( tags ) //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
self endon( "disconnect" ); self endon( "disconnect" );
@ -421,7 +397,7 @@ tagteamupdater( tags )
} }
} }
clearonvictimdisconnect( victim ) clearonvictimdisconnect( victim ) //checked changed to match cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
guid = victim.entnum; guid = victim.entnum;
@ -431,23 +407,21 @@ clearonvictimdisconnect( victim )
level.dogtags[ guid ] maps/mp/gametypes/_gameobjects::allowuse( "none" ); level.dogtags[ guid ] maps/mp/gametypes/_gameobjects::allowuse( "none" );
playfx( level.conf_fx[ "vanish" ], level.dogtags[ guid ].curorigin ); playfx( level.conf_fx[ "vanish" ], level.dogtags[ guid ].curorigin );
level.dogtags[ guid ] notify( "reset" ); level.dogtags[ guid ] notify( "reset" );
wait 0,05; wait 0.05;
if ( isDefined( level.dogtags[ guid ] ) ) if ( isDefined( level.dogtags[ guid ] ) )
{ {
objective_delete( level.dogtags[ guid ].objid ); objective_delete( level.dogtags[ guid ].objid );
level.dogtags[ guid ].trigger delete(); level.dogtags[ guid ].trigger delete();
i = 0; for ( i = 0; i < level.dogtags[guid].visuals.size; i++ )
while ( i < level.dogtags[ guid ].visuals.size )
{ {
level.dogtags[ guid ].visuals[ i ] delete(); level.dogtags[ guid ].visuals[ i ] delete();
i++;
} }
level.dogtags[ guid ] notify( "deleted" ); level.dogtags[ guid ] notify( "deleted" );
} }
} }
} }
onspawnplayerunified() onspawnplayerunified() //checked nmatches cerberus output
{ {
self.usingobj = undefined; self.usingobj = undefined;
if ( level.usestartspawns && !level.ingraceperiod ) if ( level.usestartspawns && !level.ingraceperiod )
@ -472,7 +446,7 @@ onspawnplayerunified()
} }
} }
onspawnplayer( predictedspawn ) onspawnplayer( predictedspawn ) //checked matches cerberus output
{ {
pixbeginevent( "TDM:onSpawnPlayer" ); pixbeginevent( "TDM:onSpawnPlayer" );
self.usingobj = undefined; self.usingobj = undefined;
@ -510,12 +484,13 @@ onspawnplayer( predictedspawn )
pixendevent(); pixendevent();
} }
onroundswitch() onroundswitch() //checked matches cerberus output
{ {
game[ "switchedsides" ] = !game[ "switchedsides" ]; game[ "switchedsides" ] = !game[ "switchedsides" ];
} }
onroundendgame( roundwinner ) onroundendgame( roundwinner ) //checked matches cerberus output
{ {
return maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" ); return maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" );
} }

View File

@ -1,3 +1,6 @@
#include maps/mp/gametypes/_callbacksetup
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_globallogic_audio; #include maps/mp/gametypes/_globallogic_audio;
#include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawnlogic;
@ -5,16 +8,16 @@
#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
{ {
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();
registertimelimit( 0, 1440 ); maps/mp/_utility::registertimelimit( 0, 1440 );
registerscorelimit( 0, 50000 ); maps/mp/_utility::registerscorelimit( 0, 50000 );
registerroundlimit( 0, 10 ); maps/mp/_utility::registerroundlimit( 0, 10 );
registerroundwinlimit( 0, 10 ); maps/mp/_utility::registerroundwinlimit( 0, 10 );
registernumlives( 0, 100 ); maps/mp/_utility::registernumlives( 0, 100 );
maps/mp/gametypes/_globallogic::registerfriendlyfiredelay( level.gametype, 0, 0, 1440 ); maps/mp/gametypes/_globallogic::registerfriendlyfiredelay( level.gametype, 0, 0, 1440 );
level.scoreroundbased = getgametypesetting( "roundscorecarry" ) == 0; level.scoreroundbased = getgametypesetting( "roundscorecarry" ) == 0;
level.teamscoreperkill = getgametypesetting( "teamScorePerKill" ); level.teamscoreperkill = getgametypesetting( "teamScorePerKill" );
@ -31,7 +34,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "headshots", "score" ); setscoreboardcolumns( "pointstowin", "kills", "deaths", "headshots", "score" );
} }
onstartgametype() onstartgametype() //checked matches cerberus output
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_DM" ); setobjectivetext( "allies", &"OBJECTIVES_DM" );
@ -69,12 +72,12 @@ onstartgametype()
} }
} }
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 );
@ -88,7 +91,7 @@ onspawnplayer( predictedspawn )
} }
} }
onendgame( winningplayer ) onendgame( winningplayer ) //checked matches cerberus output
{ {
if ( isDefined( winningplayer ) && isplayer( winningplayer ) ) if ( isDefined( winningplayer ) && isplayer( winningplayer ) )
{ {
@ -96,14 +99,13 @@ onendgame( winningplayer )
} }
} }
onscoreclosemusic() onscoreclosemusic() //checked changed to match cerberus output
{ {
while ( !level.gameended ) while ( !level.gameended )
{ {
scorelimit = level.scorelimit; scorelimit = level.scorelimit;
scorethreshold = scorelimit * 0,9; scorethreshold = scorelimit * 0,9;
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
scorecheck = [[ level._getplayerscore ]]( level.players[ i ] ); scorecheck = [[ level._getplayerscore ]]( level.players[ i ] );
if ( scorecheck >= scorethreshold ) if ( scorecheck >= scorethreshold )
@ -112,13 +114,12 @@ onscoreclosemusic()
thread maps/mp/gametypes/_globallogic_audio::actionmusicset(); thread maps/mp/gametypes/_globallogic_audio::actionmusicset();
return; return;
} }
i++;
} }
wait 0,5; wait 0.5;
} }
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output
{ {
if ( !isplayer( attacker ) || self == attacker ) if ( !isplayer( attacker ) || self == attacker )
{ {
@ -131,3 +132,4 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.teamscoreperheadshot ); attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.teamscoreperheadshot );
} }
} }

View File

@ -6,10 +6,12 @@
#include maps/mp/_scoreevents; #include maps/mp/_scoreevents;
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_wager; #include maps/mp/gametypes/_wager;
#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
{ {
maps/mp/gametypes/_globallogic::init(); maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks(); maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -115,7 +117,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "humiliated" ); setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "humiliated" );
} }
addguntoprogression( gunname, altname ) addguntoprogression( gunname, altname ) //checked matches cerberus output
{ {
if ( !isDefined( level.gunprogression ) ) if ( !isDefined( level.gunprogression ) )
{ {
@ -131,7 +133,7 @@ addguntoprogression( gunname, altname )
level.gunprogression[ level.gunprogression.size ] = newweapon; level.gunprogression[ level.gunprogression.size ] = newweapon;
} }
givecustomloadout( takeallweapons, alreadyspawned ) givecustomloadout( takeallweapons, alreadyspawned ) //checked matches cerberus output
{ {
chooserandombody = 0; chooserandombody = 0;
if ( !isDefined( alreadyspawned ) || !alreadyspawned ) if ( !isDefined( alreadyspawned ) || !alreadyspawned )
@ -163,7 +165,7 @@ givecustomloadout( takeallweapons, alreadyspawned )
return currentweapon; return currentweapon;
} }
takeoldweapons( currentweapon ) takeoldweapons( currentweapon ) //checked changed at own discretion
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "death" ); self endon( "death" );
@ -174,31 +176,25 @@ takeoldweapons( currentweapon )
{ {
break; break;
} }
else
{
}
} }
weaponslist = self getweaponslist(); weaponslist = self getweaponslist();
i = 0; for ( i = 0; i < weaponslist.size; i++ )
while ( i < weaponslist.size )
{ {
if ( weaponslist[ i ] != currentweapon && weaponslist[ i ] != "knife_mp" ) if ( weaponslist[ i ] != currentweapon && weaponslist[ i ] != "knife_mp" )
{ {
self takeweapon( weaponslist[ i ] ); self takeweapon( weaponslist[ i ] );
} }
i++;
} }
self enableweaponcycling(); self enableweaponcycling();
} }
promoteplayer( weaponused ) promoteplayer( weaponused ) //checked changed to match cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "cancel_promotion" ); self endon( "cancel_promotion" );
level endon( "game_ended" ); level endon( "game_ended" );
wait 0,05; wait 0.05;
i = 0; for ( i = 0; i < level.gunprogression[self.gunprogress].names.size; i++ )
while ( i < level.gunprogression[ self.gunprogress ].names.size )
{ {
if ( weaponused == level.gunprogression[ self.gunprogress ].names[ i ] || weaponused == "explosive_bolt_mp" && level.gunprogression[ self.gunprogress ].names[ i ] != "crossbow_mp" || level.gunprogression[ self.gunprogress ].names[ i ] == "crossbow_mp+reflex" && level.gunprogression[ self.gunprogress ].names[ i ] == "crossbow_mp+acog" ) if ( weaponused == level.gunprogression[ self.gunprogress ].names[ i ] || weaponused == "explosive_bolt_mp" && level.gunprogression[ self.gunprogress ].names[ i ] != "crossbow_mp" || level.gunprogression[ self.gunprogress ].names[ i ] == "crossbow_mp+reflex" && level.gunprogression[ self.gunprogress ].names[ i ] == "crossbow_mp+acog" )
{ {
@ -220,29 +216,22 @@ promoteplayer( weaponused )
self.lastpromotiontime = getTime(); self.lastpromotiontime = getTime();
return; return;
} }
i++;
} }
} }
demoteplayer() demoteplayer() //checked changed to match cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self notify( "cancel_promotion" ); self notify( "cancel_promotion" );
startinggunprogress = self.gunprogress; startinggunprogress = self.gunprogress;
i = 0; for ( i = 0; i < level.setbacksperdemotion; i++ )
while ( i < level.setbacksperdemotion )
{ {
if ( self.gunprogress <= 0 ) if ( self.gunprogress <= 0 )
{ {
break; break;
} }
else self maps/mp/gametypes/_globallogic_score::givepointstowin( level.gungamekillscore * -1 );
{ self.gunprogress--;
self maps/mp/gametypes/_globallogic_score::givepointstowin( level.gungamekillscore * -1 );
self.gunprogress--;
i++;
}
} }
if ( startinggunprogress != self.gunprogress && isalive( self ) ) if ( startinggunprogress != self.gunprogress && isalive( self ) )
{ {
@ -255,7 +244,7 @@ demoteplayer()
self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "wm_humiliated" ); self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "wm_humiliated" );
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{ {
if ( smeansofdeath == "MOD_SUICIDE" || smeansofdeath == "MOD_TRIGGER_HURT" ) if ( smeansofdeath == "MOD_SUICIDE" || smeansofdeath == "MOD_TRIGGER_HURT" )
{ {
@ -285,7 +274,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
attacker playlocalsound( game[ "dialog" ][ "wm_humiliation" ] ); attacker playlocalsound( game[ "dialog" ][ "wm_humiliation" ] );
self thread demoteplayer(); self thread demoteplayer();
return;
} }
else else
{ {
@ -294,7 +282,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
} }
onstartgametype() onstartgametype() //checked matches cerberus output
{ {
level.gungamekillscore = maps/mp/gametypes/_rank::getscoreinfovalue( "kill_gun" ); level.gungamekillscore = maps/mp/gametypes/_rank::getscoreinfovalue( "kill_gun" );
registerscorelimit( level.gunprogression.size * level.gungamekillscore, level.gunprogression.size * level.gungamekillscore ); registerscorelimit( level.gunprogression.size * level.gungamekillscore, level.gunprogression.size * level.gungamekillscore );
@ -342,13 +330,13 @@ onstartgametype()
level.quickmessagetoall = 1; level.quickmessagetoall = 1;
} }
onspawnplayerunified() onspawnplayerunified() //checked matches cerberus output
{ {
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
self thread infiniteammo(); self thread infiniteammo();
} }
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 );
@ -363,19 +351,19 @@ onspawnplayer( predictedspawn )
} }
} }
infiniteammo() infiniteammo() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
{ {
wait 0,1; wait 0.1;
weapon = self getcurrentweapon(); weapon = self getcurrentweapon();
self givemaxammo( weapon ); self givemaxammo( weapon );
} }
} }
onwagerawards() onwagerawards() //checked matches cerberus output
{ {
stabs = self maps/mp/gametypes/_globallogic_score::getpersstat( "stabs" ); stabs = self maps/mp/gametypes/_globallogic_score::getpersstat( "stabs" );
if ( !isDefined( stabs ) ) if ( !isDefined( stabs ) )
@ -397,10 +385,11 @@ onwagerawards()
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 ); self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
} }
onendgame( winningplayer ) onendgame( winningplayer ) //checked matches cerberus output
{ {
if ( isDefined( winningplayer ) && isplayer( winningplayer ) ) if ( isDefined( winningplayer ) && isplayer( winningplayer ) )
{ {
[[ level._setplayerscore ]]( winningplayer, [[ level._getplayerscore ]]( winningplayer ) + level.gungamekillscore ); [[ level._setplayerscore ]]( winningplayer, [[ level._getplayerscore ]]( winningplayer ) + level.gungamekillscore );
} }
} }

View File

@ -3,12 +3,16 @@
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_wager; #include maps/mp/gametypes/_wager;
#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;
#include common_scripts/utility; #include common_scripts/utility;
main()
main() //checked matches cerberus output
{ {
maps/mp/gametypes/_globallogic::init(); maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks(); maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -38,16 +42,16 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "survived" ); setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "survived" );
} }
onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) //checked changed to match cerberus output
{ {
if ( smeansofdeath != "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" && smeansofdeath == "MOD_HEAD_SHOT" ) if ( smeansofdeath != "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" || smeansofdeath == "MOD_HEAD_SHOT" )
{ {
idamage = self.maxhealth + 1; idamage = self.maxhealth + 1;
} }
return idamage; return idamage;
} }
givecustomloadout() givecustomloadout() //checked matches cerberus output
{ {
weapon = "kard_wager_mp"; weapon = "kard_wager_mp";
self maps/mp/gametypes/_wager::setupblankrandomplayer( 1, 1, weapon ); self maps/mp/gametypes/_wager::setupblankrandomplayer( 1, 1, weapon );
@ -72,7 +76,7 @@ givecustomloadout()
return weapon; return weapon;
} }
onstartgametype() onstartgametype() //checked matches cerberus output
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_DM" ); setobjectivetext( "allies", &"OBJECTIVES_DM" );
@ -121,7 +125,7 @@ onstartgametype()
setobjectivehinttext( "axis", &"OBJECTIVES_OIC_HINT" ); setobjectivehinttext( "axis", &"OBJECTIVES_OIC_HINT" );
} }
onspawnplayerunified() onspawnplayerunified() //checked changed to match cerberus output
{ {
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
livesleft = self.pers[ "lives" ]; livesleft = self.pers[ "lives" ];
@ -129,16 +133,13 @@ onspawnplayerunified()
{ {
self maps/mp/gametypes/_wager::wagerannouncer( "wm_2_lives" ); self maps/mp/gametypes/_wager::wagerannouncer( "wm_2_lives" );
} }
else else if ( livesleft == 1 )
{ {
if ( livesleft == 1 ) self maps/mp/gametypes/_wager::wagerannouncer( "wm_final_life" );
{
self maps/mp/gametypes/_wager::wagerannouncer( "wm_final_life" );
}
} }
} }
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 );
@ -152,7 +153,7 @@ onspawnplayer( predictedspawn )
} }
} }
onendgame( winningplayer ) onendgame( winningplayer ) //checked matches cerberus output
{ {
if ( isDefined( winningplayer ) && isplayer( winningplayer ) ) if ( isDefined( winningplayer ) && isplayer( winningplayer ) )
{ {
@ -160,12 +161,12 @@ onendgame( winningplayer )
} }
} }
onstartwagersidebets() onstartwagersidebets() //checked matches cerberus output
{ {
thread saveoffallplayersammo(); thread saveoffallplayersammo();
} }
saveoffallplayersammo() saveoffallplayersammo() //checked partially changed to match cerberus output //did not change while loop to for loop see github for more info
{ {
wait 1; wait 1;
playerindex = 0; playerindex = 0;
@ -177,30 +178,28 @@ saveoffallplayersammo()
playerindex++; playerindex++;
continue; continue;
} }
else if ( player.pers[ "lives" ] == 0 ) if ( player.pers[ "lives" ] == 0 )
{ {
playerindex++; playerindex++;
continue; continue;
} }
else currentweapon = player getcurrentweapon();
{ player.pers[ "clip_ammo" ] = player getweaponammoclip( currentweapon );
currentweapon = player getcurrentweapon(); player.pers[ "stock_ammo" ] = player getweaponammostock( currentweapon );
player.pers[ "clip_ammo" ] = player getweaponammoclip( currentweapon );
player.pers[ "stock_ammo" ] = player getweaponammostock( currentweapon );
}
playerindex++; playerindex++;
} }
} }
isplayereliminated( player ) isplayereliminated( player ) //checked changed at own discretion
{ {
if ( isDefined( player.pers[ "eliminated" ] ) ) if ( isDefined( player.pers[ "eliminated" ] ) && player.pers[ "eliminated" ] )
{ {
return player.pers[ "eliminated" ]; return 1;
} }
return 0;
} }
getplayersleft() getplayersleft() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{ {
playersremaining = []; playersremaining = [];
playerindex = 0; playerindex = 0;
@ -212,27 +211,23 @@ getplayersleft()
playerindex++; playerindex++;
continue; continue;
} }
else if ( !isplayereliminated( player ) )
{ {
if ( !isplayereliminated( player ) ) playersremaining[ playersremaining.size ] = player;
{
playersremaining[ playersremaining.size ] = player;
}
} }
playerindex++; playerindex++;
} }
return playersremaining; return playersremaining;
} }
onwagerfinalizeround() onwagerfinalizeround() //checked changed to match cerberus output
{ {
playersleft = getplayersleft(); playersleft = getplayersleft();
lastmanstanding = playersleft[ 0 ]; lastmanstanding = playersleft[ 0 ];
sidebetpool = 0; sidebetpool = 0;
sidebetwinners = []; sidebetwinners = [];
players = level.players; players = level.players;
playerindex = 0; for ( playerindex = 0; playerindex < players.size; playerindex++ )
while ( playerindex < players.size )
{ {
if ( isDefined( players[ playerindex ].pers[ "sideBetMade" ] ) ) if ( isDefined( players[ playerindex ].pers[ "sideBetMade" ] ) )
{ {
@ -242,23 +237,20 @@ onwagerfinalizeround()
sidebetwinners[ sidebetwinners.size ] = players[ playerindex ]; sidebetwinners[ sidebetwinners.size ] = players[ playerindex ];
} }
} }
playerindex++;
} }
if ( sidebetwinners.size == 0 ) if ( sidebetwinners.size == 0 )
{ {
return; return;
} }
sidebetpayout = int( sidebetpool / sidebetwinners.size ); sidebetpayout = int( sidebetpool / sidebetwinners.size );
index = 0; for ( index = 0; index < sidebetwinners.size; index++ )
while ( index < sidebetwinners.size )
{ {
player = sidebetwinners[ index ]; player = sidebetwinners[ index ];
player.pers[ "wager_sideBetWinnings" ] += sidebetpayout; player.pers[ "wager_sideBetWinnings" ] += sidebetpayout;
index++;
} }
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output
{ {
if ( isDefined( attacker ) && isplayer( attacker ) && self != attacker ) if ( isDefined( attacker ) && isplayer( attacker ) && self != attacker )
{ {
@ -294,14 +286,14 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
} }
giveammo( amount ) giveammo( amount ) //checked matches cerberus output
{ {
currentweapon = self getcurrentweapon(); currentweapon = self getcurrentweapon();
clipammo = self getweaponammoclip( currentweapon ); clipammo = self getweaponammoclip( currentweapon );
self setweaponammoclip( currentweapon, clipammo + amount ); self setweaponammoclip( currentweapon, clipammo + amount );
} }
shouldreceivesurvivorbonus() shouldreceivesurvivorbonus() //checked matches cerberus output
{ {
if ( isalive( self ) ) if ( isalive( self ) )
{ {
@ -314,15 +306,14 @@ shouldreceivesurvivorbonus()
return 0; return 0;
} }
watchelimination() watchelimination() //checked changed to match cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
for ( ;; ) for ( ;; )
{ {
level waittill( "player_eliminated" ); level waittill( "player_eliminated" );
players = level.players; players = level.players;
i = 0; for ( i = 0; i < players.size; i++ )
while ( i < players.size )
{ {
if ( isDefined( players[ i ] ) && players[ i ] shouldreceivesurvivorbonus() ) if ( isDefined( players[ i ] ) && players[ i ] shouldreceivesurvivorbonus() )
{ {
@ -333,12 +324,11 @@ watchelimination()
maps/mp/_scoreevents::processscoreevent( "survivor", players[ i ] ); maps/mp/_scoreevents::processscoreevent( "survivor", players[ i ] );
players[ i ] maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsforsurvivalbonus ); players[ i ] maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsforsurvivalbonus );
} }
i++;
} }
} }
} }
onwagerawards() onwagerawards() //checked matches cerberus output
{ {
stabs = self maps/mp/gametypes/_globallogic_score::getpersstat( "stabs" ); stabs = self maps/mp/gametypes/_globallogic_score::getpersstat( "stabs" );
if ( !isDefined( stabs ) ) if ( !isDefined( stabs ) )
@ -359,3 +349,4 @@ onwagerawards()
} }
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 ); self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
} }

View File

@ -5,19 +5,21 @@
#include maps/mp/_scoreevents; #include maps/mp/_scoreevents;
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_wager; #include maps/mp/gametypes/_wager;
#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
{ {
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();
registertimelimit( 0, 1440 ); maps/mp/_utility::registertimelimit( 0, 1440 );
registerscorelimit( 0, 5000 ); maps/mp/_utility::registerscorelimit( 0, 5000 );
registerroundlimit( 0, 10 ); maps/mp/_utility::registerroundlimit( 0, 10 );
registerroundwinlimit( 0, 10 ); maps/mp/_utility::registerroundwinlimit( 0, 10 );
registernumlives( 0, 100 ); maps/mp/_utility::registernumlives( 0, 100 );
level.onstartgametype = ::onstartgametype; level.onstartgametype = ::onstartgametype;
level.onspawnplayer = ::onspawnplayer; level.onspawnplayer = ::onspawnplayer;
level.onspawnplayerunified = ::onspawnplayerunified; level.onspawnplayerunified = ::onspawnplayerunified;
@ -44,9 +46,11 @@ main()
level.setbackweapon = getreffromitemindex( getbaseweaponitemindex( "knife_ballistic_mp" ) ) + "_mp"; level.setbackweapon = getreffromitemindex( getbaseweaponitemindex( "knife_ballistic_mp" ) ) + "_mp";
break; break;
default: default:
/*
/# /#
assert( 1, "Invalid setting for gunSelection" ); assert( 1, "Invalid setting for gunSelection" );
#/ #/
*/
break; break;
} }
game[ "dialog" ][ "gametype" ] = "sns_start"; game[ "dialog" ][ "gametype" ] = "sns_start";
@ -62,7 +66,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "tomahawks", "humiliated" ); setscoreboardcolumns( "pointstowin", "kills", "deaths", "tomahawks", "humiliated" );
} }
givecustomloadout() givecustomloadout() //checked matches cerberus output
{ {
self notify( "sas_spectator_hud" ); self notify( "sas_spectator_hud" );
defaultweapon = "crossbow_mp"; defaultweapon = "crossbow_mp";
@ -87,7 +91,7 @@ givecustomloadout()
return defaultweapon; return defaultweapon;
} }
onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) //checked matches cerberus output
{ {
if ( sweapon == "crossbow_mp" && smeansofdeath == "MOD_IMPACT" ) if ( sweapon == "crossbow_mp" && smeansofdeath == "MOD_IMPACT" )
{ {
@ -107,7 +111,7 @@ onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon,
return idamage; return idamage;
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{ {
if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self )
{ {
@ -138,19 +142,16 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsperprimarygrenadekill ); attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsperprimarygrenadekill );
} }
else else if ( baseweaponname == "knife_ballistic_mp" )
{ {
if ( baseweaponname == "knife_ballistic_mp" ) attacker.killswithsecondary++;
if ( attacker.killswithbothawarded == 0 && attacker.killswithprimary > 0 )
{ {
attacker.killswithsecondary++; attacker.killswithbothawarded = 1;
if ( attacker.killswithbothawarded == 0 && attacker.killswithprimary > 0 ) maps/mp/_scoreevents::processscoreevent( "kill_with_crossbow_and_ballistic_sas", attacker, self, sweapon );
{
attacker.killswithbothawarded = 1;
maps/mp/_scoreevents::processscoreevent( "kill_with_crossbow_and_ballistic_sas", attacker, self, sweapon );
}
} }
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointspersecondarykill );
} }
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointspersecondarykill );
if ( isDefined( level.setbackweapon ) && baseweaponname == level.setbackweapon ) if ( isDefined( level.setbackweapon ) && baseweaponname == level.setbackweapon )
{ {
self.pers[ "humiliated" ]++; self.pers[ "humiliated" ]++;
@ -185,24 +186,24 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
} }
onstartgametype() onstartgametype() //checked changed to match cerberus output
{ {
setdvar( "scr_xpscale", 0 ); setdvar( "scr_xpscale", 0 );
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_SAS" ); maps/mp/_utility::setobjectivetext( "allies", &"OBJECTIVES_SAS" );
setobjectivetext( "axis", &"OBJECTIVES_SAS" ); maps/mp/_utility::setobjectivetext( "axis", &"OBJECTIVES_SAS" );
if ( level.splitscreen ) if ( level.splitscreen )
{ {
setobjectivescoretext( "allies", &"OBJECTIVES_SAS" ); maps/mp/_utility::setobjectivescoretext( "allies", &"OBJECTIVES_SAS" );
setobjectivescoretext( "axis", &"OBJECTIVES_SAS" ); maps/mp/_utility::setobjectivescoretext( "axis", &"OBJECTIVES_SAS" );
} }
else else
{ {
setobjectivescoretext( "allies", &"OBJECTIVES_SAS_SCORE" ); maps/mp/_utility::setobjectivescoretext( "allies", &"OBJECTIVES_SAS_SCORE" );
setobjectivescoretext( "axis", &"OBJECTIVES_SAS_SCORE" ); maps/mp/_utility::setobjectivescoretext( "axis", &"OBJECTIVES_SAS_SCORE" );
} }
setobjectivehinttext( "allies", &"OBJECTIVES_SAS_HINT" ); maps/mp/_utility::setobjectivehinttext( "allies", &"OBJECTIVES_SAS_HINT" );
setobjectivehinttext( "axis", &"OBJECTIVES_SAS_HINT" ); maps/mp/_utility::setobjectivehinttext( "axis", &"OBJECTIVES_SAS_HINT" );
allowed[ 0 ] = "sas"; allowed[ 0 ] = "sas";
maps/mp/gametypes/_gameobjects::main( allowed ); maps/mp/gametypes/_gameobjects::main( allowed );
maps/mp/gametypes/_spawning::create_map_placed_influencers(); maps/mp/gametypes/_spawning::create_map_placed_influencers();
@ -228,15 +229,18 @@ onstartgametype()
level.displayroundendtext = 0; level.displayroundendtext = 0;
if ( isDefined( game[ "roundsplayed" ] ) && game[ "roundsplayed" ] > 0 ) if ( isDefined( game[ "roundsplayed" ] ) && game[ "roundsplayed" ] > 0 )
{ {
game["dialog"]["gametype"] = undefined;
game["dialog"]["offense_obj"] = undefined;
game["dialog"]["defense_obj"] = undefined;
} }
} }
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 );
@ -250,7 +254,7 @@ onspawnplayer( predictedspawn )
} }
} }
onwagerawards() onwagerawards() //checked matches cerberus output
{ {
tomahawks = self maps/mp/gametypes/_globallogic_score::getpersstat( "tomahawks" ); tomahawks = self maps/mp/gametypes/_globallogic_score::getpersstat( "tomahawks" );
if ( !isDefined( tomahawks ) ) if ( !isDefined( tomahawks ) )
@ -271,3 +275,4 @@ onwagerawards()
} }
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 ); self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
} }

View File

@ -10,12 +10,16 @@
#include maps/mp/_scoreevents; #include maps/mp/_scoreevents;
#include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_rank; #include maps/mp/gametypes/_rank;
#include maps/mp/gametypes/_globallogic_defaults; #include maps/mp/gametypes/_globallogic_defaults;
#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 common_scripts/utility; #include common_scripts/utility;
main() main() //checked matches cerberus output
{ {
if ( getDvar( "mapname" ) == "mp_background" ) if ( getDvar( "mapname" ) == "mp_background" )
{ {
@ -64,7 +68,7 @@ main()
} }
} }
onprecachegametype() onprecachegametype() //checked matches cerberus output
{ {
game[ "bomb_dropped_sound" ] = "mpl_flag_drop_plr"; game[ "bomb_dropped_sound" ] = "mpl_flag_drop_plr";
game[ "bomb_recovered_sound" ] = "mpl_flag_pickup_plr"; game[ "bomb_recovered_sound" ] = "mpl_flag_pickup_plr";
@ -100,27 +104,27 @@ onprecachegametype()
precachestring( &"MP_DEFUSING_EXPLOSIVE" ); precachestring( &"MP_DEFUSING_EXPLOSIVE" );
} }
sd_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) sd_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output
{ {
teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ); teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon );
if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting ) if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting )
{ {
teamkill_penalty *= level.teamkillpenaltymultiplier; teamkill_penalty *= level.teamkillpenaltymultiplier;
} }
return teamkill_penalty; return teamkill_penalty;
} }
sd_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) sd_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output
{ {
teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "team_kill" ); teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "team_kill" );
if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting ) if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting )
{ {
teamkill_score *= level.teamkillscoremultiplier; teamkill_score *= level.teamkillscoremultiplier;
} }
return int( teamkill_score ); return int( teamkill_score );
} }
onroundswitch() onroundswitch() //checked matches cerberus output
{ {
if ( !isDefined( game[ "switchedsides" ] ) ) if ( !isDefined( game[ "switchedsides" ] ) )
{ {
@ -142,14 +146,13 @@ onroundswitch()
} }
} }
getbetterteam() getbetterteam() //checked changed to match cerberus output
{ {
kills[ "allies" ] = 0; kills[ "allies" ] = 0;
kills[ "axis" ] = 0; kills[ "axis" ] = 0;
deaths[ "allies" ] = 0; deaths[ "allies" ] = 0;
deaths[ "axis" ] = 0; deaths[ "axis" ] = 0;
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
player = level.players[ i ]; player = level.players[ i ];
team = player.pers[ "team" ]; team = player.pers[ "team" ];
@ -158,29 +161,22 @@ getbetterteam()
kills[ team ] += player.kills; kills[ team ] += player.kills;
deaths[ team ] += player.deaths; deaths[ team ] += player.deaths;
} }
i++;
} }
if ( kills[ "allies" ] > kills[ "axis" ] ) if ( kills[ "allies" ] > kills[ "axis" ] )
{ {
return "allies"; return "allies";
} }
else else if ( kills[ "axis" ] > kills[ "allies" ] )
{ {
if ( kills[ "axis" ] > kills[ "allies" ] ) return "axis";
{
return "axis";
}
} }
if ( deaths[ "allies" ] < deaths[ "axis" ] ) if ( deaths[ "allies" ] < deaths[ "axis" ] )
{ {
return "allies"; return "allies";
} }
else else if ( deaths[ "axis" ] < deaths[ "allies" ] )
{ {
if ( deaths[ "axis" ] < deaths[ "allies" ] ) return "axis";
{
return "axis";
}
} }
if ( randomint( 2 ) == 0 ) if ( randomint( 2 ) == 0 )
{ {
@ -189,7 +185,7 @@ getbetterteam()
return "axis"; return "axis";
} }
onstartgametype() onstartgametype() //checked matches cerberus output
{ {
setbombtimer( "A", 0 ); setbombtimer( "A", 0 );
setmatchflag( "bomb_timer_a", 0 ); setmatchflag( "bomb_timer_a", 0 );
@ -246,7 +242,7 @@ onstartgametype()
thread bombs(); thread bombs();
} }
onspawnplayerunified() onspawnplayerunified() //checked matches cerberus output
{ {
self.isplanting = 0; self.isplanting = 0;
self.isdefusing = 0; self.isdefusing = 0;
@ -254,7 +250,7 @@ onspawnplayerunified()
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
} }
onspawnplayer( predictedspawn ) onspawnplayer( predictedspawn ) //checked matches cerberus output
{ {
if ( !predictedspawn ) if ( !predictedspawn )
{ {
@ -271,9 +267,11 @@ onspawnplayer( predictedspawn )
spawnpointname = "mp_sd_spawn_defender"; spawnpointname = "mp_sd_spawn_defender";
} }
spawnpoints = maps/mp/gametypes/_spawnlogic::getspawnpointarray( spawnpointname ); spawnpoints = maps/mp/gametypes/_spawnlogic::getspawnpointarray( spawnpointname );
/*
/# /#
assert( spawnpoints.size ); assert( spawnpoints.size );
#/ #/
*/
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints ); spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints );
if ( predictedspawn ) if ( predictedspawn )
{ {
@ -285,12 +283,12 @@ onspawnplayer( predictedspawn )
} }
} }
sd_playerspawnedcb() sd_playerspawnedcb() //checked matches cerberus output
{ {
level notify( "spawned_player" ); level notify( "spawned_player" );
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{ {
thread checkallowspectating(); thread checkallowspectating();
if ( isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] ) if ( isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] )
@ -298,15 +296,13 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
maps/mp/_scoreevents::processscoreevent( "kill_sd", attacker, self, sweapon ); maps/mp/_scoreevents::processscoreevent( "kill_sd", attacker, self, sweapon );
} }
inbombzone = 0; inbombzone = 0;
index = 0; for ( index = 0; index < level.bombzones.size; index++ )
while ( index < level.bombzones.size )
{ {
dist = distance2d( self.origin, level.bombzones[ index ].curorigin ); dist = distance2d( self.origin, level.bombzones[ index ].curorigin );
if ( dist < level.defaultoffenseradius ) if ( dist < level.defaultoffenseradius )
{ {
inbombzone = 1; inbombzone = 1;
} }
index++;
} }
if ( inbombzone && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] ) if ( inbombzone && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] )
{ {
@ -317,18 +313,15 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
self recordkillmodifier( "defending" ); self recordkillmodifier( "defending" );
maps/mp/_scoreevents::processscoreevent( "killed_defender", attacker, self, sweapon ); maps/mp/_scoreevents::processscoreevent( "killed_defender", attacker, self, sweapon );
} }
else else if ( isDefined( attacker.pers[ "defends" ] ) )
{ {
if ( isDefined( attacker.pers[ "defends" ] ) ) attacker.pers[ "defends" ]++;
{ attacker.defends = attacker.pers[ "defends" ];
attacker.pers[ "defends" ]++;
attacker.defends = attacker.pers[ "defends" ];
}
attacker maps/mp/_medals::defenseglobalcount();
attacker addplayerstatwithgametype( "DEFENDS", 1 );
self recordkillmodifier( "assaulting" );
maps/mp/_scoreevents::processscoreevent( "killed_attacker", attacker, self, sweapon );
} }
attacker maps/mp/_medals::defenseglobalcount();
attacker addplayerstatwithgametype( "DEFENDS", 1 );
self recordkillmodifier( "assaulting" );
maps/mp/_scoreevents::processscoreevent( "killed_attacker", attacker, self, sweapon );
} }
if ( isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] && isDefined( self.isbombcarrier ) && self.isbombcarrier == 1 ) if ( isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] && isDefined( self.isbombcarrier ) && self.isbombcarrier == 1 )
{ {
@ -344,10 +337,10 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
} }
checkallowspectating() checkallowspectating() //checked matches cerberus output
{ {
self endon( "disconnect" ); self endon( "disconnect" );
wait 0,05; wait 0.05;
update = 0; update = 0;
if ( level.numliveslivesleft = self.pers[ "lives" ]; if ( level.numliveslivesleft = self.pers[ "lives" ];
&& !level.alivecount[ game[ "attackers" ] ] && !livesleft ) && !level.alivecount[ game[ "attackers" ] ] && !livesleft )
@ -366,7 +359,7 @@ checkallowspectating()
} }
} }
sd_endgame( winningteam, endreasontext ) sd_endgame( winningteam, endreasontext ) //checked matches cerberus output
{ {
if ( isDefined( winningteam ) ) if ( isDefined( winningteam ) )
{ {
@ -375,12 +368,12 @@ sd_endgame( winningteam, endreasontext )
thread maps/mp/gametypes/_globallogic::endgame( winningteam, endreasontext ); thread maps/mp/gametypes/_globallogic::endgame( winningteam, endreasontext );
} }
sd_endgamewithkillcam( winningteam, endreasontext ) sd_endgamewithkillcam( winningteam, endreasontext ) //checked matches cerberus output
{ {
sd_endgame( winningteam, endreasontext ); sd_endgame( winningteam, endreasontext );
} }
ondeadevent( team ) ondeadevent( team ) //checked changed to match cerberus output
{ {
if ( level.bombexploded || level.bombdefused ) if ( level.bombexploded || level.bombdefused )
{ {
@ -405,16 +398,13 @@ ondeadevent( team )
} }
sd_endgamewithkillcam( game[ "defenders" ], game[ "strings" ][ game[ "attackers" ] + "_eliminated" ] ); sd_endgamewithkillcam( game[ "defenders" ], game[ "strings" ][ game[ "attackers" ] + "_eliminated" ] );
} }
else else if ( team == game[ "defenders" ] )
{ {
if ( team == game[ "defenders" ] ) sd_endgamewithkillcam( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] );
{
sd_endgamewithkillcam( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] );
}
} }
} }
ononeleftevent( team ) ononeleftevent( team ) //checked matches cerberus output
{ {
if ( level.bombexploded || level.bombdefused ) if ( level.bombexploded || level.bombdefused )
{ {
@ -423,7 +413,7 @@ ononeleftevent( team )
warnlastplayer( team ); warnlastplayer( team );
} }
ontimelimit() ontimelimit() //checked matches cerberus output
{ {
if ( level.teambased ) if ( level.teambased )
{ {
@ -435,7 +425,7 @@ ontimelimit()
} }
} }
warnlastplayer( team ) warnlastplayer( team ) //checked changed to match cerberus output
{ {
if ( !isDefined( level.warnedlastplayer ) ) if ( !isDefined( level.warnedlastplayer ) )
{ {
@ -447,8 +437,7 @@ warnlastplayer( team )
} }
level.warnedlastplayer[ team ] = 1; level.warnedlastplayer[ team ] = 1;
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 ];
if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && isDefined( player.pers[ "class" ] ) ) if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && isDefined( player.pers[ "class" ] ) )
@ -458,10 +447,6 @@ warnlastplayer( team )
break; break;
} }
} }
else
{
i++;
}
} }
if ( i == players.size ) if ( i == players.size )
{ {
@ -470,12 +455,12 @@ warnlastplayer( team )
players[ i ] thread givelastattackerwarning( team ); players[ i ] thread givelastattackerwarning( team );
} }
givelastattackerwarning( team ) givelastattackerwarning( team ) //checked changed to match cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
fullhealthtime = 0; fullhealthtime = 0;
interval = 0,05; interval = 0.05;
self.lastmansd = 1; self.lastmansd = 1;
enemyteam = game[ "defenders" ]; enemyteam = game[ "defenders" ];
if ( team == enemyteam ) if ( team == enemyteam )
@ -501,15 +486,12 @@ givelastattackerwarning( team )
{ {
break; break;
} }
else
{
}
} }
self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "last_one" ); self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "last_one" );
self playlocalsound( "mus_last_stand" ); self playlocalsound( "mus_last_stand" );
} }
updategametypedvars() updategametypedvars() //checked changed to match cerberus output
{ {
level.planttime = getgametypesetting( "plantTime" ); level.planttime = getgametypesetting( "plantTime" );
level.defusetime = getgametypesetting( "defuseTime" ); level.defusetime = getgametypesetting( "defuseTime" );
@ -521,7 +503,7 @@ updategametypedvars()
level.totalkillsmax = getgametypesetting( "totalKillsMax" ); level.totalkillsmax = getgametypesetting( "totalKillsMax" );
} }
bombs() bombs() //checked changed to match cerberus output
{ {
level.bombplanted = 0; level.bombplanted = 0;
level.bombdefused = 0; level.bombdefused = 0;
@ -529,17 +511,21 @@ bombs()
trigger = getent( "sd_bomb_pickup_trig", "targetname" ); trigger = getent( "sd_bomb_pickup_trig", "targetname" );
if ( !isDefined( trigger ) ) if ( !isDefined( trigger ) )
{ {
/*
/# /#
maps/mp/_utility::error( "No sd_bomb_pickup_trig trigger found in map." ); maps/mp/_utility::error( "No sd_bomb_pickup_trig trigger found in map." );
#/ #/
*/
return; return;
} }
visuals[ 0 ] = getent( "sd_bomb", "targetname" ); visuals[ 0 ] = getent( "sd_bomb", "targetname" );
if ( !isDefined( visuals[ 0 ] ) ) if ( !isDefined( visuals[ 0 ] ) )
{ {
/*
/# /#
maps/mp/_utility::error( "No sd_bomb script_model found in map." ); maps/mp/_utility::error( "No sd_bomb script_model found in map." );
#/ #/
*/
return; return;
} }
precachemodel( "prop_suitcase_bomb" ); precachemodel( "prop_suitcase_bomb" );
@ -563,8 +549,7 @@ bombs()
} }
level.bombzones = []; level.bombzones = [];
bombzones = getentarray( "bombzone", "targetname" ); bombzones = getentarray( "bombzone", "targetname" );
index = 0; for ( index = 0; index < bombzones.size; index++ )
while ( index < bombzones.size )
{ {
trigger = bombzones[ index ]; trigger = bombzones[ index ];
visuals = getentarray( bombzones[ index ].target, "targetname" ); visuals = getentarray( bombzones[ index ].target, "targetname" );
@ -597,47 +582,39 @@ bombs()
{ {
bombzone.trigger setinvisibletoall(); bombzone.trigger setinvisibletoall();
} }
i = 0; for ( i = 0; i < visuals.size; i++ )
while ( i < visuals.size )
{ {
if ( isDefined( visuals[ i ].script_exploder ) ) if ( isDefined( visuals[ i ].script_exploder ) )
{ {
bombzone.exploderindex = visuals[ i ].script_exploder; bombzone.exploderindex = visuals[ i ].script_exploder;
break; break;
} }
else
{
i++;
}
} }
level.bombzones[ level.bombzones.size ] = bombzone; level.bombzones[ level.bombzones.size ] = bombzone;
bombzone.bombdefusetrig = getent( visuals[ 0 ].target, "targetname" ); bombzone.bombdefusetrig = getent( visuals[ 0 ].target, "targetname" );
/*
/# /#
assert( isDefined( bombzone.bombdefusetrig ) ); assert( isDefined( bombzone.bombdefusetrig ) );
#/ #/
*/
bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, 1 ), 10000 ); bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, 1 ), 10000 );
bombzone.bombdefusetrig.label = label; bombzone.bombdefusetrig.label = label;
index++;
} }
index = 0; for ( index = 0; index < level.bombzones.size; index++ )
while ( index < level.bombzones.size )
{ {
array = []; array = [];
otherindex = 0; for ( otherindex = 0; otherindex < level.bombzones.size; otherindex++ )
while ( otherindex < level.bombzones.size )
{ {
if ( otherindex != index ) if ( otherindex != index )
{ {
array[ array.size ] = level.bombzones[ otherindex ]; array[ array.size ] = level.bombzones[ otherindex ];
} }
otherindex++;
} }
level.bombzones[ index ].otherbombzones = array; level.bombzones[ index ].otherbombzones = array;
index++;
} }
} }
onbeginuse( player ) onbeginuse( player ) //checked changed to match cerberus output
{ {
if ( self maps/mp/gametypes/_gameobjects::isfriendlyteam( player.pers[ "team" ] ) ) if ( self maps/mp/gametypes/_gameobjects::isfriendlyteam( player.pers[ "team" ] ) )
{ {
@ -649,24 +626,19 @@ onbeginuse( player )
level.sdbombmodel hide(); level.sdbombmodel hide();
} }
} }
else player.isplanting = 1;
player thread maps/mp/gametypes/_battlechatter_mp::gametypespecificbattlechatter( "sd_friendlyplant", player.pers[ "team" ] );
while ( level.multibomb )
{ {
player.isplanting = 1; for ( i = 0; i < self.otherbombzones.size; i++ )
player thread maps/mp/gametypes/_battlechatter_mp::gametypespecificbattlechatter( "sd_friendlyplant", player.pers[ "team" ] );
while ( level.multibomb )
{ {
i = 0; self.otherbombzones[ i ] maps/mp/gametypes/_gameobjects::disableobject();
while ( i < self.otherbombzones.size )
{
self.otherbombzones[ i ] maps/mp/gametypes/_gameobjects::disableobject();
i++;
}
} }
} }
player playsound( "fly_bomb_raise_plr" ); player playsound( "fly_bomb_raise_plr" );
} }
onenduse( team, player, result ) onenduse( team, player, result ) //checked changed to match cerberus output
{ {
if ( !isDefined( player ) ) if ( !isDefined( player ) )
{ {
@ -682,26 +654,21 @@ onenduse( team, player, result )
level.sdbombmodel show(); level.sdbombmodel show();
} }
} }
else if ( level.multibomb && !result )
{ {
while ( level.multibomb && !result ) for ( i = 0; i < self.otherbombzones.size; i++ )
{ {
i = 0; self.otherbombzones[ i ] maps/mp/gametypes/_gameobjects::enableobject();
while ( i < self.otherbombzones.size )
{
self.otherbombzones[ i ] maps/mp/gametypes/_gameobjects::enableobject();
i++;
}
} }
} }
} }
oncantuse( player ) oncantuse( player ) //checked matches cerberus output
{ {
player iprintlnbold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); player iprintlnbold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
} }
onuseplantobject( player ) onuseplantobject( player ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{ {
if ( !self maps/mp/gametypes/_gameobjects::isfriendlyteam( player.pers[ "team" ] ) ) if ( !self maps/mp/gametypes/_gameobjects::isfriendlyteam( player.pers[ "team" ] ) )
{ {
@ -716,10 +683,7 @@ onuseplantobject( player )
index++; index++;
continue; continue;
} }
else level.bombzones[ index ] maps/mp/gametypes/_gameobjects::disableobject();
{
level.bombzones[ index ] maps/mp/gametypes/_gameobjects::disableobject();
}
index++; index++;
} }
thread playsoundonplayers( "mus_sd_planted" + "_" + level.teampostfix[ player.pers[ "team" ] ] ); thread playsoundonplayers( "mus_sd_planted" + "_" + level.teampostfix[ player.pers[ "team" ] ] );
@ -738,7 +702,7 @@ onuseplantobject( player )
} }
} }
onusedefuseobject( player ) onusedefuseobject( player ) //checked matches cerberus output
{ {
self maps/mp/gametypes/_gameobjects::setflags( 0 ); self maps/mp/gametypes/_gameobjects::setflags( 0 );
player notify( "bomb_defused" ); player notify( "bomb_defused" );
@ -766,7 +730,7 @@ onusedefuseobject( player )
player recordgameevent( "defuse" ); player recordgameevent( "defuse" );
} }
ondrop( player ) ondrop( player ) //checked matches cerberus output
{ {
if ( !level.bombplanted ) if ( !level.bombplanted )
{ {
@ -785,7 +749,7 @@ ondrop( player )
maps/mp/_utility::playsoundonplayers( game[ "bomb_dropped_sound" ], game[ "attackers" ] ); maps/mp/_utility::playsoundonplayers( game[ "bomb_dropped_sound" ], game[ "attackers" ] );
} }
onpickup( player ) onpickup( player ) //checked changed to match cerberus output
{ {
player.isbombcarrier = 1; player.isbombcarrier = 1;
player recordgameevent( "pickup" ); player recordgameevent( "pickup" );
@ -802,29 +766,29 @@ onpickup( player )
player logstring( "bomb taken" ); player logstring( "bomb taken" );
} }
maps/mp/_utility::playsoundonplayers( game[ "bomb_recovered_sound" ], game[ "attackers" ] ); maps/mp/_utility::playsoundonplayers( game[ "bomb_recovered_sound" ], game[ "attackers" ] );
i = 0; for ( i = 0; i < level.bombzones.size; i++ )
while ( i < level.bombzones.size )
{ {
level.bombzones[ i ].trigger setinvisibletoall(); level.bombzones[ i ].trigger setinvisibletoall();
level.bombzones[ i ].trigger setvisibletoplayer( player ); level.bombzones[ i ].trigger setvisibletoplayer( player );
i++;
} }
} }
onreset() onreset() //checked matches cerberus output
{ {
} }
bombplantedmusicdelay() bombplantedmusicdelay() //checked matches cerberus output
{ {
level endon( "bomb_defused" ); level endon( "bomb_defused" );
time = level.bombtimer - 30; time = level.bombtimer - 30;
/*
/# /#
if ( getDvarInt( #"0BC4784C" ) > 0 ) if ( getDvarInt( #"0BC4784C" ) > 0 )
{ {
println( "Music System - waiting to set TIME_OUT: " + time ); println( "Music System - waiting to set TIME_OUT: " + time );
#/ #/
} }
*/
if ( time > 1 ) if ( time > 1 )
{ {
wait time; wait time;
@ -832,7 +796,7 @@ bombplantedmusicdelay()
} }
} }
bombplanted( destroyedobj, player ) bombplanted( destroyedobj, player ) //checked changed to match cerberus output may need to review order of operations
{ {
maps/mp/gametypes/_globallogic_utils::pausetimer(); maps/mp/gametypes/_globallogic_utils::pausetimer();
level.bombplanted = 1; level.bombplanted = 1;
@ -862,14 +826,12 @@ bombplanted( destroyedobj, player )
} }
else else
{ {
index = 0; for ( index = 0; index < level.players.size; index++ )
while ( index < level.players.size )
{ {
if ( isDefined( level.players[ index ].carryicon ) ) if ( isDefined( level.players[ index ].carryicon ) )
{ {
level.players[ index ].carryicon destroyelem(); level.players[ index ].carryicon destroyelem();
} }
index++;
} }
trace = bullettrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ), 0, player ); trace = bullettrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ), 0, player );
tempangle = randomfloat( 360 ); tempangle = randomfloat( 360 );
@ -937,11 +899,9 @@ bombplanted( destroyedobj, player )
{ {
exploder( destroyedobj.exploderindex ); exploder( destroyedobj.exploderindex );
} }
index = 0; for ( index = 0; index < level.bombzones.size; index++ )
while ( index < level.bombzones.size )
{ {
level.bombzones[ index ] maps/mp/gametypes/_gameobjects::disableobject(); level.bombzones[ index ] maps/mp/gametypes/_gameobjects::disableobject();
index++;
} }
defuseobject maps/mp/gametypes/_gameobjects::disableobject(); defuseobject maps/mp/gametypes/_gameobjects::disableobject();
setgameendtime( 0 ); setgameendtime( 0 );
@ -949,14 +909,14 @@ bombplanted( destroyedobj, player )
sd_endgame( game[ "attackers" ], game[ "strings" ][ "target_destroyed" ] ); sd_endgame( game[ "attackers" ], game[ "strings" ][ "target_destroyed" ] );
} }
bombtimerwait() bombtimerwait() //checked matches cerberus output
{ {
level endon( "game_ended" ); level endon( "game_ended" );
level endon( "bomb_defused" ); level endon( "bomb_defused" );
maps/mp/gametypes/_hostmigration::waitlongdurationwithgameendtimeupdate( level.bombtimer ); maps/mp/gametypes/_hostmigration::waitlongdurationwithgameendtimeupdate( level.bombtimer );
} }
bombdefused() bombdefused() //checked matches cerberus output
{ {
level.tickingobject maps/mp/gametypes/_globallogic_utils::stoptickingsound(); level.tickingobject maps/mp/gametypes/_globallogic_utils::stoptickingsound();
level.bombdefused = 1; level.bombdefused = 1;
@ -966,12 +926,12 @@ bombdefused()
setmatchflag( "bomb_timer_b", 0 ); setmatchflag( "bomb_timer_b", 0 );
level notify( "bomb_defused" ); level notify( "bomb_defused" );
thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "SILENT", "both" ); thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "SILENT", "both" );
wait 1,5; wait 1.5;
setgameendtime( 0 ); setgameendtime( 0 );
sd_endgame( game[ "defenders" ], game[ "strings" ][ "bomb_defused" ] ); sd_endgame( game[ "defenders" ], game[ "strings" ][ "bomb_defused" ] );
} }
sd_iskillboosting() sd_iskillboosting() //checked matches cerberus output
{ {
roundsplayed = maps/mp/_utility::getroundsplayed(); roundsplayed = maps/mp/_utility::getroundsplayed();
if ( level.playerkillsmax == 0 ) if ( level.playerkillsmax == 0 )
@ -995,3 +955,4 @@ sd_iskillboosting()
} }
return 0; return 0;
} }

View File

@ -9,7 +9,7 @@
#include maps/mp/_utility; #include maps/mp/_utility;
#include common_scripts/utility; #include common_scripts/utility;
main() main() //checked matches cerberus output may need to review order of operations
{ {
maps/mp/gametypes/_globallogic::init(); maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks(); maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -52,7 +52,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "x2score" ); setscoreboardcolumns( "pointstowin", "kills", "deaths", "stabs", "x2score" );
} }
onstartgametype() onstartgametype() //checked matches cerberus output
{ {
setdvar( "scr_disable_weapondrop", 1 ); setdvar( "scr_disable_weapondrop", 1 );
setdvar( "scr_xpscale", 0 ); setdvar( "scr_xpscale", 0 );
@ -117,12 +117,11 @@ onstartgametype()
level thread clearpowerupsongameend(); level thread clearpowerupsongameend();
} }
attach_compatibility_init() attach_compatibility_init() //checked changed to match cerberus output
{ {
level.attach_compatible = []; level.attach_compatible = [];
set_attachtable_id(); set_attachtable_id();
i = 0; for ( i = 0; i < 33; i++ )
while ( i < 33 )
{ {
itemrow = tablelookuprownum( level.attachtableid, 9, i ); itemrow = tablelookuprownum( level.attachtableid, 9, i );
if ( itemrow > -1 ) if ( itemrow > -1 )
@ -132,11 +131,10 @@ attach_compatibility_init()
compatible = tablelookupcolumnforrow( level.attachtableid, itemrow, 11 ); compatible = tablelookupcolumnforrow( level.attachtableid, itemrow, 11 );
level.attach_compatible[ name ] = strtok( compatible, " " ); level.attach_compatible[ name ] = strtok( compatible, " " );
} }
i++;
} }
} }
set_attachtable_id() set_attachtable_id() //checked matches cerberus output
{ {
if ( !isDefined( level.attachtableid ) ) if ( !isDefined( level.attachtableid ) )
{ {
@ -144,7 +142,7 @@ set_attachtable_id()
} }
} }
addguntoprogression( gunname, altname ) addguntoprogression( gunname, altname ) //checked matches cerberus output
{ {
if ( !isDefined( level.gunprogression ) ) if ( !isDefined( level.gunprogression ) )
{ {
@ -160,7 +158,7 @@ addguntoprogression( gunname, altname )
level.gunprogression[ level.gunprogression.size ] = newweapon; level.gunprogression[ level.gunprogression.size ] = newweapon;
} }
getrandomgunfromprogression() getrandomgunfromprogression() //checked changed to match cerberus output
{ {
weaponidkeys = getarraykeys( level.tbl_weaponids ); weaponidkeys = getarraykeys( level.tbl_weaponids );
numweaponidkeys = weaponidkeys.size; numweaponidkeys = weaponidkeys.size;
@ -169,25 +167,20 @@ getrandomgunfromprogression()
{ {
size = level.gunprogression.size; size = level.gunprogression.size;
} }
/*
/# /#
debug_weapon = getDvar( #"1C6DE858" ); debug_weapon = getDvar( #"1C6DE858" );
#/ #/
*/
allowproneblock = 1; allowproneblock = 1;
players = get_players(); players = get_players();
_a256 = players; foreach ( player in players )
_k256 = getFirstArrayKey( _a256 );
while ( isDefined( _k256 ) )
{ {
player = _a256[ _k256 ];
if ( player getstance() == "prone" ) if ( player getstance() == "prone" )
{ {
allowproneblock = 0; allowproneblock = 0;
break; break;
} }
else
{
_k256 = getNextArrayKey( _a256, _k256 );
}
} }
while ( 1 ) while ( 1 )
{ {
@ -197,13 +190,13 @@ getrandomgunfromprogression()
if ( randomindex < numweaponidkeys ) if ( randomindex < numweaponidkeys )
{ {
id = random( level.tbl_weaponids ); id = random( level.tbl_weaponids );
while ( id[ "group" ] != "weapon_launcher" && id[ "group" ] != "weapon_sniper" && id[ "group" ] != "weapon_lmg" && id[ "group" ] != "weapon_assault" && id[ "group" ] != "weapon_smg" && id[ "group" ] != "weapon_pistol" && id[ "group" ] != "weapon_cqb" && id[ "group" ] != "weapon_special" ) if ( id[ "group" ] != "weapon_launcher" && id[ "group" ] != "weapon_sniper" && id[ "group" ] != "weapon_lmg" && id[ "group" ] != "weapon_assault" && id[ "group" ] != "weapon_smg" && id[ "group" ] != "weapon_pistol" && id[ "group" ] != "weapon_cqb" && id[ "group" ] != "weapon_special" )
{ {
continue; break;
} }
while ( id[ "reference" ] == "weapon_null" ) if ( id[ "reference" ] == "weapon_null" )
{ {
continue; break;
} }
baseweaponname = id[ "reference" ]; baseweaponname = id[ "reference" ];
attachmentlist = id[ "attachment" ]; attachmentlist = id[ "attachment" ];
@ -215,57 +208,57 @@ getrandomgunfromprogression()
{ {
baseweaponname = "minigun_wager"; baseweaponname = "minigun_wager";
} }
while ( baseweaponname == "riotshield" ) if ( baseweaponname == "riotshield" )
{ {
continue; break;
} }
if ( getDvarInt( #"97A055DA" ) == 0 && baseweaponname == "peacekeeper" ) if ( baseweaponname == "peacekeeper" )
{ {
continue; break;
} }
weaponname = addrandomattachmenttoweaponname( baseweaponname, attachmentlist ); weaponname = addrandomattachmenttoweaponname( baseweaponname, attachmentlist );
if ( !allowproneblock && weaponblocksprone( weaponname ) ) if ( !allowproneblock && weaponblocksprone( weaponname ) )
{ {
continue; break;
} }
} }
else baseweaponname = level.gunprogression[ randomindex - numweaponidkeys ].names[ 0 ]; else
weaponname = level.gunprogression[ randomindex - numweaponidkeys ].names[ 0 ]; {
baseweaponname = level.gunprogression[ randomindex - numweaponidkeys ].names[ 0 ];
weaponname = level.gunprogression[ randomindex - numweaponidkeys ].names[ 0 ];
}
if ( !isDefined( level.usedbaseweapons ) ) if ( !isDefined( level.usedbaseweapons ) )
{ {
level.usedbaseweapons = []; level.usedbaseweapons = [];
level.usedbaseweapons[ 0 ] = "fhj18"; level.usedbaseweapons[ 0 ] = "fhj18";
} }
skipweapon = 0; skipweapon = 0;
i = 0; for ( i = 0; i < level.usedbaseweapons.size; i++ )
while ( i < level.usedbaseweapons.size )
{ {
if ( level.usedbaseweapons[ i ] == baseweaponname ) if ( level.usedbaseweapons[ i ] == baseweaponname )
{ {
skipweapon = 1; skipweapon = 1;
break; break;
} }
else
{
i++;
}
} }
while ( skipweapon ) if ( skipweapon )
{ {
continue; continue;
} }
level.usedbaseweapons[ level.usedbaseweapons.size ] = baseweaponname; level.usedbaseweapons[ level.usedbaseweapons.size ] = baseweaponname;
/*
/# /#
if ( debug_weapon != "" ) if ( debug_weapon != "" )
{ {
weaponname = debug_weapon; weaponname = debug_weapon;
#/ #/
} }
*/
return weaponname; return weaponname;
} }
} }
addrandomattachmenttoweaponname( baseweaponname, attachmentlist ) addrandomattachmenttoweaponname( baseweaponname, attachmentlist ) //checked changed to match cerberus output
{ {
if ( !isDefined( attachmentlist ) ) if ( !isDefined( attachmentlist ) )
{ {
@ -291,18 +284,13 @@ addrandomattachmenttoweaponname( baseweaponname, attachmentlist )
{ {
attachment2 = level.attach_compatible[ attachment ][ randomint( level.attach_compatible[ attachment ].size ) ]; attachment2 = level.attach_compatible[ attachment ][ randomint( level.attach_compatible[ attachment ].size ) ];
contains = 0; contains = 0;
i = 0; for ( i = 0; i < attachments.size; i++ )
while ( i < attachments.size )
{ {
if ( isDefined( attachment2 ) && attachments[ i ] == attachment2 ) if ( isDefined( attachment2 ) && attachments[ i ] == attachment2 )
{ {
contains = 1; contains = 1;
break; break;
} }
else
{
i++;
}
} }
if ( contains ) if ( contains )
{ {
@ -316,7 +304,7 @@ addrandomattachmenttoweaponname( baseweaponname, attachmentlist )
return ( baseweaponname + "_mp+" ) + attachment; return ( baseweaponname + "_mp+" ) + attachment;
} }
waitlongdurationwithhostmigrationpause( nextguncycletime, duration ) waitlongdurationwithhostmigrationpause( nextguncycletime, duration ) //checked matches cerberus output may need to review order of operations
{ {
endtime = getTime() + ( duration * 1000 ); endtime = getTime() + ( duration * 1000 );
totaltimepassed = 0; totaltimepassed = 0;
@ -329,11 +317,13 @@ waitlongdurationwithhostmigrationpause( nextguncycletime, duration )
timepassed = maps/mp/gametypes/_hostmigration::waittillhostmigrationdone(); timepassed = maps/mp/gametypes/_hostmigration::waittillhostmigrationdone();
totaltimepassed += timepassed; totaltimepassed += timepassed;
endtime += timepassed; endtime += timepassed;
/*
/# /#
println( "[SHRP] timePassed = " + timepassed ); println( "[SHRP] timePassed = " + timepassed );
println( "[SHRP] totatTimePassed = " + totaltimepassed ); println( "[SHRP] totatTimePassed = " + totaltimepassed );
println( "[SHRP] level.discardTime = " + level.discardtime ); println( "[SHRP] level.discardTime = " + level.discardtime );
#/ #/
*/
setdvar( "ui_guncycle", nextguncycletime + totaltimepassed ); setdvar( "ui_guncycle", nextguncycletime + totaltimepassed );
} }
} }
@ -341,7 +331,7 @@ waitlongdurationwithhostmigrationpause( nextguncycletime, duration )
return totaltimepassed; return totaltimepassed;
} }
guncyclewaiter( nextguncycletime, waittime ) guncyclewaiter( nextguncycletime, waittime ) //checked changed to match cerberus output may need to review order of operations
{ {
continuecycling = 1; continuecycling = 1;
setdvar( "ui_guncycle", nextguncycletime ); setdvar( "ui_guncycle", nextguncycletime );
@ -349,42 +339,33 @@ guncyclewaiter( nextguncycletime, waittime )
level.guncycletimer.alpha = 1; level.guncycletimer.alpha = 1;
timepassed = waitlongdurationwithhostmigrationpause( nextguncycletime, ( ( nextguncycletime - getTime() ) / 1000 ) - 6 ); timepassed = waitlongdurationwithhostmigrationpause( nextguncycletime, ( ( nextguncycletime - getTime() ) / 1000 ) - 6 );
nextguncycletime += timepassed; nextguncycletime += timepassed;
i = 6; for ( i = 6; i > 1; i-- )
while ( i > 1 )
{ {
j = 0; for ( j = 0; j < level.players.size; j++ )
while ( j < level.players.size )
{ {
level.players[ j ] playlocalsound( "uin_timer_wager_beep" ); level.players[ j ] playlocalsound( "uin_timer_wager_beep" );
j++;
} }
timepassed = waitlongdurationwithhostmigrationpause( nextguncycletime, ( nextguncycletime - getTime() ) / 1000 / i ); timepassed = waitlongdurationwithhostmigrationpause( nextguncycletime, ( nextguncycletime - getTime() ) / 1000 / i );
nextguncycletime += timepassed; nextguncycletime += timepassed;
i--;
} }
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ] playlocalsound( "uin_timer_wager_last_beep" ); level.players[ i ] playlocalsound( "uin_timer_wager_last_beep" );
i++;
} }
if ( ( nextguncycletime - getTime() ) > 0 ) if ( ( nextguncycletime - getTime() ) > 0 )
{ {
wait ( ( nextguncycletime - getTime() ) / 1000 ); wait ( ( nextguncycletime - getTime() ) / 1000 );
} }
level.shrprandomweapon = getrandomgunfromprogression(); level.shrprandomweapon = getrandomgunfromprogression();
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ] notify( "remove_planted_weapons" ); level.players[ i ] notify( "remove_planted_weapons" );
level.players[ i ] givecustomloadout( 0, 1 ); level.players[ i ] givecustomloadout( 0, 1 );
i++;
} }
return continuecycling; return continuecycling;
} }
chooserandomguns() chooserandomguns() //checked changed to match cerberus output may need to review order of operations
{ {
level endon( "game_ended" ); level endon( "game_ended" );
level thread awardmostpointsmedalgameend(); level thread awardmostpointsmedalgameend();
@ -396,22 +377,19 @@ chooserandomguns()
level waittill( "prematch_over" ); level waittill( "prematch_over" );
} }
guncycle = 1; guncycle = 1;
numguncycles = int( ( ( level.timelimit * 60 ) / waittime ) + 0,5 ); numguncycles = int( ( ( level.timelimit * 60 ) / waittime ) + 0.5 );
while ( 1 ) while ( 1 )
{ {
nextguncycletime = getTime() + ( waittime * 1000 ); nextguncycletime = getTime() + ( waittime * 1000 );
ispenultimateround = 0; ispenultimateround = 0;
issharpshooterround = guncycle == ( numguncycles - 1 ); issharpshooterround = guncycle == ( numguncycles - 1 );
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ].currentguncyclepoints = 0; level.players[ i ].currentguncyclepoints = 0;
i++;
} }
level.currentguncyclemaxpoints = 0; level.currentguncyclemaxpoints = 0;
guncyclewaiter( nextguncycletime, waittime ); guncyclewaiter( nextguncycletime, waittime );
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
player = level.players[ i ]; player = level.players[ i ];
if ( ( guncycle + 1 ) == numguncycles ) if ( ( guncycle + 1 ) == numguncycles )
@ -423,16 +401,13 @@ chooserandomguns()
player maps/mp/gametypes/_wager::wagerannouncer( "wm_weapons_cycled" ); player maps/mp/gametypes/_wager::wagerannouncer( "wm_weapons_cycled" );
} }
player checkawardmostpointsthiscycle(); player checkawardmostpointsthiscycle();
i++;
} }
if ( ispenultimateround ) if ( ispenultimateround )
{ {
level.sharpshootermultiplier = 2; level.sharpshootermultiplier = 2;
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ] thread maps/mp/gametypes/_wager::queuewagerpopup( &"MP_SHRP_PENULTIMATE_RND", 0, &"MP_SHRP_PENULTIMATE_MULTIPLIER", "wm_bonus_rnd" ); level.players[ i ] thread maps/mp/gametypes/_wager::queuewagerpopup( &"MP_SHRP_PENULTIMATE_RND", 0, &"MP_SHRP_PENULTIMATE_MULTIPLIER", "wm_bonus_rnd" );
i++;
} }
} }
else if ( issharpshooterround ) else if ( issharpshooterround )
@ -445,19 +420,20 @@ chooserandomguns()
level.sharpshootermultiplier = 2; level.sharpshootermultiplier = 2;
setdvar( "ui_guncycle", 0 ); setdvar( "ui_guncycle", 0 );
level.guncycletimer.alpha = 0; level.guncycletimer.alpha = 0;
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ] thread maps/mp/gametypes/_wager::queuewagerpopup( &"MP_SHRP_RND", 0, &"MP_SHRP_FINAL_MULTIPLIER", "wm_shrp_rnd" ); level.players[ i ] thread maps/mp/gametypes/_wager::queuewagerpopup( &"MP_SHRP_RND", 0, &"MP_SHRP_FINAL_MULTIPLIER", "wm_shrp_rnd" );
i++;
} }
} }
else level.sharpshootermultiplier = 1; else
{
level.sharpshootermultiplier = 1;
}
guncycle++; guncycle++;
} }
} }
checkawardmostpointsthiscycle() checkawardmostpointsthiscycle() //checked matches cerberus output
{ {
if ( isDefined( self.currentguncyclepoints ) && self.currentguncyclepoints > 0 ) if ( isDefined( self.currentguncyclepoints ) && self.currentguncyclepoints > 0 )
{ {
@ -468,18 +444,16 @@ checkawardmostpointsthiscycle()
} }
} }
awardmostpointsmedalgameend() awardmostpointsmedalgameend() //checked changed to match cerberus output
{ {
level waittill( "game_end" ); level waittill( "game_end" );
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
level.players[ i ] checkawardmostpointsthiscycle(); level.players[ i ] checkawardmostpointsthiscycle();
i++;
} }
} }
givecustomloadout( takeallweapons, alreadyspawned ) givecustomloadout( takeallweapons, alreadyspawned ) //checked matches cerberus output
{ {
chooserandombody = 0; chooserandombody = 0;
if ( !isDefined( alreadyspawned ) || !alreadyspawned ) if ( !isDefined( alreadyspawned ) || !alreadyspawned )
@ -506,7 +480,7 @@ givecustomloadout( takeallweapons, alreadyspawned )
return level.shrprandomweapon; return level.shrprandomweapon;
} }
takeoldweapons() takeoldweapons() //checked changed at own discretion
{ {
self endon( "disconnect" ); self endon( "disconnect" );
self endon( "death" ); self endon( "death" );
@ -517,24 +491,19 @@ takeoldweapons()
{ {
break; break;
} }
else
{
}
} }
weaponslist = self getweaponslist(); weaponslist = self getweaponslist();
i = 0; for ( i = 0; i < weaponslist.size; i++ )
while ( i < weaponslist.size )
{ {
if ( weaponslist[ i ] != level.shrprandomweapon && weaponslist[ i ] != "knife_mp" ) if ( weaponslist[ i ] != level.shrprandomweapon && weaponslist[ i ] != "knife_mp" )
{ {
self takeweapon( weaponslist[ i ] ); self takeweapon( weaponslist[ i ] );
} }
i++;
} }
self enableweaponcycling(); self enableweaponcycling();
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked partially changed to match cerberus output did not changed while loop to for loop see githb for more info
{ {
if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self )
{ {
@ -550,20 +519,17 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
} }
attacker.x2kills = attacker.pers[ "x2kills" ]; attacker.x2kills = attacker.pers[ "x2kills" ];
} }
else else if ( isDefined( level.sharpshootermultiplier ) && level.sharpshootermultiplier == 3 )
{ {
if ( isDefined( level.sharpshootermultiplier ) && level.sharpshootermultiplier == 3 ) if ( !isDefined( attacker.pers[ "x3kills" ] ) )
{ {
if ( !isDefined( attacker.pers[ "x3kills" ] ) ) attacker.pers[ "x3kills" ] = 1;
{
attacker.pers[ "x3kills" ] = 1;
}
else
{
attacker.pers[ "x3kills" ]++;
}
attacker.x2kills = attacker.pers[ "x3kills" ];
} }
else
{
attacker.pers[ "x3kills" ]++;
}
attacker.x2kills = attacker.pers[ "x3kills" ];
} }
if ( isDefined( self.scoremultiplier ) && self.scoremultiplier >= 2 ) if ( isDefined( self.scoremultiplier ) && self.scoremultiplier >= 2 )
{ {
@ -616,22 +582,19 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
i++; i++;
continue; continue;
} }
else attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsperweaponkill );
if ( !isDefined( attacker.currentguncyclepoints ) )
{ {
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.pointsperweaponkill ); attacker.currentguncyclepoints = 0;
if ( !isDefined( attacker.currentguncyclepoints ) ) }
{ attacker.currentguncyclepoints += level.pointsperweaponkill;
attacker.currentguncyclepoints = 0; if ( level.currentguncyclemaxpoints < attacker.currentguncyclepoints )
} {
attacker.currentguncyclepoints += level.pointsperweaponkill; level.currentguncyclemaxpoints = attacker.currentguncyclepoints;
if ( level.currentguncyclemaxpoints < attacker.currentguncyclepoints ) }
{ if ( i != 1 )
level.currentguncyclemaxpoints = attacker.currentguncyclepoints; {
} maps/mp/_scoreevents::processscoreevent( "kill", attacker, self, sweapon );
if ( i != 1 )
{
maps/mp/_scoreevents::processscoreevent( "kill", attacker, self, sweapon );
}
} }
i++; i++;
} }
@ -648,13 +611,13 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
self maps/mp/gametypes/_wager::clearpowerups(); self maps/mp/gametypes/_wager::clearpowerups();
} }
onspawnplayerunified() onspawnplayerunified() //checked matches cerberus output
{ {
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
self thread infiniteammo(); self thread infiniteammo();
} }
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 );
@ -669,19 +632,19 @@ onspawnplayer( predictedspawn )
} }
} }
infiniteammo() infiniteammo() //checked matches cerberus output
{ {
self endon( "death" ); self endon( "death" );
self endon( "disconnect" ); self endon( "disconnect" );
for ( ;; ) for ( ;; )
{ {
wait 0,1; wait 0.1;
weapon = self getcurrentweapon(); weapon = self getcurrentweapon();
self givemaxammo( weapon ); self givemaxammo( weapon );
} }
} }
onwagerawards() onwagerawards() //checked matches cerberus output
{ {
x2kills = self maps/mp/gametypes/_globallogic_score::getpersstat( "x2kills" ); x2kills = self maps/mp/gametypes/_globallogic_score::getpersstat( "x2kills" );
if ( !isDefined( x2kills ) ) if ( !isDefined( x2kills ) )
@ -703,14 +666,13 @@ onwagerawards()
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 ); self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
} }
clearpowerupsongameend() clearpowerupsongameend() //checked changed to match cerberus output
{ {
level waittill( "game_ended" ); level waittill( "game_ended" );
i = 0; for ( i = 0; i < level.players.size; i++ )
while ( i < level.players.size )
{ {
player = level.players[ i ]; player = level.players[ i ];
player maps/mp/gametypes/_wager::clearpowerups(); player maps/mp/gametypes/_wager::clearpowerups();
i++;
} }
} }

View File

@ -2,10 +2,13 @@
#include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#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
{ {
if ( getDvar( "mapname" ) == "mp_background" ) if ( getDvar( "mapname" ) == "mp_background" )
{ {
@ -14,12 +17,12 @@ main()
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();
registerroundswitch( 0, 9 ); maps/mp/_utility::registerroundswitch( 0, 9 );
registertimelimit( 0, 1440 ); maps/mp/_utility::registertimelimit( 0, 1440 );
registerscorelimit( 0, 50000 ); maps/mp/_utility::registerscorelimit( 0, 50000 );
registerroundlimit( 0, 10 ); maps/mp/_utility::registerroundlimit( 0, 10 );
registerroundwinlimit( 0, 10 ); maps/mp/_utility::registerroundwinlimit( 0, 10 );
registernumlives( 0, 100 ); maps/mp/_utility::registernumlives( 0, 100 );
maps/mp/gametypes/_globallogic::registerfriendlyfiredelay( level.gametype, 15, 0, 1440 ); maps/mp/gametypes/_globallogic::registerfriendlyfiredelay( level.gametype, 15, 0, 1440 );
level.scoreroundbased = getgametypesetting( "roundscorecarry" ) == 0; level.scoreroundbased = getgametypesetting( "roundscorecarry" ) == 0;
level.teamscoreperkill = getgametypesetting( "teamScorePerKill" ); level.teamscoreperkill = getgametypesetting( "teamScorePerKill" );
@ -40,7 +43,7 @@ main()
setscoreboardcolumns( "score", "kills", "deaths", "kdratio", "assists" ); setscoreboardcolumns( "score", "kills", "deaths", "kdratio", "assists" );
} }
onstartgametype() onstartgametype() //checked changed to match cerberus output
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
if ( !isDefined( game[ "switchedsides" ] ) ) if ( !isDefined( game[ "switchedsides" ] ) )
@ -60,26 +63,23 @@ onstartgametype()
maps/mp/gametypes/_spawning::create_map_placed_influencers(); maps/mp/gametypes/_spawning::create_map_placed_influencers();
level.spawnmins = ( 0, 0, 0 ); level.spawnmins = ( 0, 0, 0 );
level.spawnmaxs = ( 0, 0, 0 ); level.spawnmaxs = ( 0, 0, 0 );
_a135 = level.teams; foreach ( team in level.teams )
_k135 = getFirstArrayKey( _a135 );
while ( isDefined( _k135 ) )
{ {
team = _a135[ _k135 ]; maps/mp/_utility::setobjectivetext( team, &"OBJECTIVES_TDM" );
setobjectivetext( team, &"OBJECTIVES_TDM" ); maps/mp/_utility::setobjectivehinttext( team, &"OBJECTIVES_TDM_HINT" );
setobjectivehinttext( team, &"OBJECTIVES_TDM_HINT" );
if ( level.splitscreen ) if ( level.splitscreen )
{ {
setobjectivescoretext( team, &"OBJECTIVES_TDM" ); maps/mp/_utility::setobjectivescoretext( team, &"OBJECTIVES_TDM" );
} }
else else
{ {
setobjectivescoretext( team, &"OBJECTIVES_TDM_SCORE" ); maps/mp/_utility::setobjectivescoretext( team, &"OBJECTIVES_TDM_SCORE" );
} }
maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" ); maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" );
maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) );
_k135 = getNextArrayKey( _a135, _k135 );
} }
maps/mp/gametypes/_spawning::updateallspawnpoints(); maps/mp/gametypes/_spawning::updateallspawnpoints();
/*
/# /#
level.spawn_start = []; level.spawn_start = [];
_a161 = level.teams; _a161 = level.teams;
@ -91,21 +91,22 @@ onstartgametype()
_k161 = getNextArrayKey( _a161, _k161 ); _k161 = getNextArrayKey( _a161, _k161 );
#/ #/
} }
*/
level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs ); level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs );
setmapcenter( level.mapcenter ); setmapcenter( level.mapcenter );
spawnpoint = maps/mp/gametypes/_spawnlogic::getrandomintermissionpoint(); spawnpoint = maps/mp/gametypes/_spawnlogic::getrandomintermissionpoint();
setdemointermissionpoint( spawnpoint.origin, spawnpoint.angles ); setdemointermissionpoint( spawnpoint.origin, spawnpoint.angles );
if ( !isoneround() ) if ( !maps/mp/_utility::isoneround() )
{ {
level.displayroundendtext = 1; level.displayroundendtext = 1;
if ( isscoreroundbased() ) if ( maps/mp/_utility::isscoreroundbased() )
{ {
maps/mp/gametypes/_globallogic_score::resetteamscores(); maps/mp/gametypes/_globallogic_score::resetteamscores();
} }
} }
} }
onspawnplayerunified( question ) onspawnplayerunified( question ) //checked matches cerberus output
{ {
self.usingobj = undefined; self.usingobj = undefined;
if ( level.usestartspawns && !level.ingraceperiod && !level.playerqueuedrespawn ) if ( level.usestartspawns && !level.ingraceperiod && !level.playerqueuedrespawn )
@ -115,7 +116,7 @@ onspawnplayerunified( question )
spawnteam = self.pers[ "team" ]; spawnteam = self.pers[ "team" ];
if ( game[ "switchedsides" ] ) if ( game[ "switchedsides" ] )
{ {
spawnteam = getotherteam( spawnteam ); spawnteam = maps/mp/_utility::getotherteam( spawnteam );
} }
if ( isDefined( question ) ) if ( isDefined( question ) )
{ {
@ -136,7 +137,7 @@ onspawnplayerunified( question )
maps/mp/gametypes/_spawning::onspawnplayer_unified(); maps/mp/gametypes/_spawning::onspawnplayer_unified();
} }
onspawnplayer( predictedspawn, question ) onspawnplayer( predictedspawn, question ) //checked changed to match cerberus output
{ {
pixbeginevent( "TDM:onSpawnPlayer" ); pixbeginevent( "TDM:onSpawnPlayer" );
self.usingobj = undefined; self.usingobj = undefined;
@ -168,7 +169,7 @@ onspawnplayer( predictedspawn, question )
{ {
if ( game[ "switchedsides" ] ) if ( game[ "switchedsides" ] )
{ {
spawnteam = getotherteam( spawnteam ); spawnteam = maps/mp/_utility::getotherteam( spawnteam );
} }
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( spawnteam ); spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( spawnteam );
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( spawnpoints ); spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( spawnpoints );
@ -178,15 +179,12 @@ onspawnplayer( predictedspawn, question )
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints ); spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints );
} }
} }
else else if ( game[ "switchedsides" ] )
{ {
if ( game[ "switchedsides" ] ) spawnteam = maps/mp/_utility::getotherteam( spawnteam );
{
spawnteam = getotherteam( spawnteam );
}
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( spawnteam );
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( spawnpoints );
} }
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( spawnteam );
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( spawnpoints );
if ( predictedspawn ) if ( predictedspawn )
{ {
self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); self predictspawnpoint( spawnpoint.origin, spawnpoint.angles );
@ -198,7 +196,7 @@ onspawnplayer( predictedspawn, question )
pixendevent(); pixendevent();
} }
onendgame( winningteam ) onendgame( winningteam ) //checked matches cerberus output
{ {
if ( isDefined( winningteam ) && isDefined( level.teams[ winningteam ] ) ) if ( isDefined( winningteam ) && isDefined( level.teams[ winningteam ] ) )
{ {
@ -206,33 +204,25 @@ onendgame( winningteam )
} }
} }
onroundswitch() onroundswitch() //checked changed to match cerberus output
{ {
game[ "switchedsides" ] = !game[ "switchedsides" ]; game[ "switchedsides" ] = !game[ "switchedsides" ];
while ( level.roundscorecarry == 0 ) if ( level.roundscorecarry == 0 )
{ {
_a288 = level.teams; foreach ( team in level.teams )
_k288 = getFirstArrayKey( _a288 );
while ( isDefined( _k288 ) )
{ {
team = _a288[ _k288 ];
[[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] ); [[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] );
_k288 = getNextArrayKey( _a288, _k288 );
} }
} }
} }
onroundendgame( roundwinner ) onroundendgame( roundwinner ) //checked changed to match cerberus output
{ {
if ( level.roundscorecarry == 0 ) if ( level.roundscorecarry == 0 )
{ {
_a299 = level.teams; foreach ( team in level.teams )
_k299 = getFirstArrayKey( _a299 );
while ( isDefined( _k299 ) )
{ {
team = _a299[ _k299 ];
[[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] ); [[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] );
_k299 = getNextArrayKey( _a299, _k299 );
} }
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" ); winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" );
} }
@ -243,36 +233,29 @@ onroundendgame( roundwinner )
return winner; return winner;
} }
onscoreclosemusic() onscoreclosemusic() //checked changed to match cerberus output
{ {
teamscores = []; teamscores = [];
while ( !level.gameended ) while ( !level.gameended )
{ {
scorelimit = level.scorelimit; scorelimit = level.scorelimit;
scorethreshold = scorelimit * 0,1; scorethreshold = scorelimit * 0.1;
scorethresholdstart = abs( scorelimit - scorethreshold ); scorethresholdstart = abs( scorelimit - scorethreshold );
scorelimitcheck = scorelimit - 10; scorelimitcheck = scorelimit - 10;
topscore = 0; topscore = 0;
runnerupscore = 0; runnerupscore = 0;
_a327 = level.teams; foreach ( team in level.teams )
_k327 = getFirstArrayKey( _a327 );
while ( isDefined( _k327 ) )
{ {
team = _a327[ _k327 ];
score = [[ level._getteamscore ]]( team ); score = [[ level._getteamscore ]]( team );
if ( score > topscore ) if ( score > topscore )
{ {
runnerupscore = topscore; runnerupscore = topscore;
topscore = score; topscore = score;
} }
else if ( score > runnerupscore )
{ {
if ( score > runnerupscore ) runnerupscore = score;
{
runnerupscore = score;
}
} }
_k327 = getNextArrayKey( _a327, _k327 );
} }
scoredif = topscore - runnerupscore; scoredif = topscore - runnerupscore;
if ( scoredif <= scorethreshold && scorethresholdstart <= topscore ) if ( scoredif <= scorethreshold && scorethresholdstart <= topscore )
@ -285,7 +268,7 @@ onscoreclosemusic()
} }
} }
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output
{ {
if ( isplayer( attacker ) == 0 || attacker.team == self.team ) if ( isplayer( attacker ) == 0 || attacker.team == self.team )
{ {
@ -298,3 +281,4 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
attacker maps/mp/gametypes/_globallogic_score::giveteamscoreforobjective( attacker.team, level.teamscoreperheadshot ); attacker maps/mp/gametypes/_globallogic_score::giveteamscoreforobjective( attacker.team, level.teamscoreperheadshot );
} }
} }

View File

@ -23,6 +23,13 @@ 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/gametypes/conf.gsc
patch_mp/maps/mp/gametypes/dm.gsc
patch_mp/maps/mp/gametypes/gun.gsc
patch_mp/maps/mp/gametypes/oic.gsc
patch_mp/maps/mp/gametypes/sas.gsc
patch_mp/maps/mp/gametypes/shrp.gsc
patch_mp/maps/mp/gametypes/tdm.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/_healthoverlay.gsc patch_mp/maps/mp/gametypes/_healthoverlay.gsc
@ -74,20 +81,13 @@ patch_mp/maps/mp/gametypes/_spectating.gsc
patch_mp/maps/mp/gametypes/_wager.gsc patch_mp/maps/mp/gametypes/_wager.gsc
patch_mp/maps/mp/gametypes/_weaponobjects.gsc patch_mp/maps/mp/gametypes/_weaponobjects.gsc
patch_mp/maps/mp/gametypes/_weapons.gsc patch_mp/maps/mp/gametypes/_weapons.gsc
patch_mp/maps/mp/gametypes/conf.gsc
patch_mp/maps/mp/gametypes/ctf.gsc patch_mp/maps/mp/gametypes/ctf.gsc
patch_mp/maps/mp/gametypes/dem.gsc patch_mp/maps/mp/gametypes/dem.gsc
patch_mp/maps/mp/gametypes/dm.gsc
patch_mp/maps/mp/gametypes/dom.gsc patch_mp/maps/mp/gametypes/dom.gsc
patch_mp/maps/mp/gametypes/gun.gsc
patch_mp/maps/mp/gametypes/hq.gsc patch_mp/maps/mp/gametypes/hq.gsc
patch_mp/maps/mp/gametypes/koth.gsc patch_mp/maps/mp/gametypes/koth.gsc
patch_mp/maps/mp/gametypes/oic.gsc
patch_mp/maps/mp/gametypes/oneflag.gsc patch_mp/maps/mp/gametypes/oneflag.gsc
patch_mp/maps/mp/gametypes/sas.gsc
patch_mp/maps/mp/gametypes/sd.gsc patch_mp/maps/mp/gametypes/sd.gsc
patch_mp/maps/mp/gametypes/shrp.gsc
patch_mp/maps/mp/gametypes/tdm.gsc
``` ```
### The following scipts are dev scripts filled with dev calls making them useless to modify for now ### The following scipts are dev scripts filled with dev calls making them useless to modify for now
``` ```