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/_spawning;
#include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include common_scripts/utility;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
main()
main() //checked matches cerberus output
{
maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -53,7 +55,7 @@ main()
}
}
onprecachegametype()
onprecachegametype() //checked matches cerberus output
{
precachemodel( "p6_dogtags" );
precachemodel( "p6_dogtags_friend" );
@ -61,7 +63,7 @@ onprecachegametype()
precachestring( &"MP_KILL_DENIED" );
}
onstartgametype()
onstartgametype() //checked changed to match cerberus output
{
setclientnamemode( "auto_change" );
if ( !isDefined( game[ "switchedsides" ] ) )
@ -79,11 +81,8 @@ onstartgametype()
maps/mp/gametypes/_gameobjects::main( allowed );
level.spawnmins = ( 0, 0, 1 );
level.spawnmaxs = ( 0, 0, 1 );
_a109 = level.teams;
_k109 = getFirstArrayKey( _a109 );
while ( isDefined( _k109 ) )
foreach ( team in level.teams )
{
team = _a109[ _k109 ];
setobjectivetext( team, &"OBJECTIVES_CONF" );
setobjectivehinttext( team, &"OBJECTIVES_CONF_HINT" );
if ( level.splitscreen )
@ -96,17 +95,12 @@ onstartgametype()
}
maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) );
maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" );
_k109 = getNextArrayKey( _a109, _k109 );
}
maps/mp/gametypes/_spawning::updateallspawnpoints();
level.spawn_start = [];
_a131 = level.teams;
_k131 = getFirstArrayKey( _a131 );
while ( isDefined( _k131 ) )
foreach ( team in level.teams )
{
team = _a131[ _k131 ];
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 );
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 )
{
@ -133,7 +127,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
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 ] ) )
{
@ -142,28 +136,24 @@ spawndogtags( victim, attacker )
}
else
{
visuals[ 0 ] = spawn( "script_model", ( 0, 0, 1 ) );
visuals[ 0 ] = spawn( "script_model", ( 0, 0, 0 ) );
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" );
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 ) );
_a189 = level.teams;
_k189 = getFirstArrayKey( _a189 );
while ( isDefined( _k189 ) )
foreach ( team in level.teams )
{
team = _a189[ _k189 ];
objective_delete( 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 ] );
_k189 = getNextArrayKey( _a189, _k189 );
}
level.dogtags[ victim.entnum ] maps/mp/gametypes/_gameobjects::setusetime( 0 );
level.dogtags[ victim.entnum ].onuse = ::onuse;
level.dogtags[ victim.entnum ].victim = victim;
level.dogtags[ victim.entnum ].victimteam = victim.team;
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" );
level thread clearonvictimdisconnect( victim );
victim thread tagteamupdater( level.dogtags[ victim.entnum ] );
@ -188,31 +178,24 @@ spawndogtags( victim, attacker )
level notify( "dogtag_spawned" );
}
showtoteam( gameobject, team )
showtoteam( gameobject, team ) //checked changed to match cerberus output
{
gameobject endon( "death" );
gameobject endon( "reset" );
self hide();
_a245 = level.players;
_k245 = getFirstArrayKey( _a245 );
while ( isDefined( _k245 ) )
foreach ( player in level.players )
{
player = _a245[ _k245 ];
if ( player.team == team )
{
self showtoplayer( player );
}
_k245 = getNextArrayKey( _a245, _k245 );
}
for ( ;; )
{
level waittill( "joined_team" );
self hide();
_a256 = level.players;
_k256 = getFirstArrayKey( _a256 );
while ( isDefined( _k256 ) )
foreach ( player in level.players )
{
player = _a256[ _k256 ];
if ( player.team == team )
{
self showtoplayer( player );
@ -221,36 +204,28 @@ showtoteam( gameobject, team )
{
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( "reset" );
self hide();
_a274 = level.players;
_k274 = getFirstArrayKey( _a274 );
while ( isDefined( _k274 ) )
foreach ( player in level.players )
{
player = _a274[ _k274 ];
if ( player.team != friend_team )
{
self showtoplayer( player );
}
_k274 = getNextArrayKey( _a274, _k274 );
}
for ( ;; )
{
level waittill( "joined_team" );
self hide();
_a285 = level.players;
_k285 = getFirstArrayKey( _a285 );
while ( isDefined( _k285 ) )
foreach ( player in level.players )
{
player = _a285[ _k285 ];
if ( player.team != friend_team )
{
self showtoplayer( player );
@ -259,12 +234,11 @@ showtoenemyteams( gameobject, friend_team )
{
objective_state( gameobject.objid, "invisible" );
}
_k285 = getNextArrayKey( _a285, _k285 );
}
}
}
onuse( player )
onuse( player ) //checked matches cerberus output
{
tacinsertboost = 0;
if ( player.team != self.attackerteam )
@ -309,10 +283,12 @@ onuse( player )
splash = &"SPLASHES_KILL_CONFIRMED";
player addplayerstat( "KILLSCONFIRMED", 1 );
player recordgameevent( "capture" );
/*
/#
assert( isDefined( player.lastkillconfirmedtime ) );
assert( isDefined( player.lastkillconfirmedcount ) );
#/
*/
if ( self.attacker != player )
{
self.attacker thread onpickup( "teammate_kill_confirmed", splash );
@ -344,18 +320,18 @@ onuse( player )
self resettags();
}
onpickup( event, splash )
onpickup( event, splash ) //checked matches cerberus output
{
level endon( "game_ended" );
self endon( "disconnect" );
while ( !isDefined( self.pers ) )
{
wait 0,05;
wait 0.05;
}
maps/mp/_scoreevents::processscoreevent( event, self );
}
resettags()
resettags() //checked matches cerberus output
{
self.attacker = undefined;
self.unreachable = undefined;
@ -371,7 +347,7 @@ resettags()
objective_state( self.objid, "invisible" );
}
bounce()
bounce() //checked matches cerberus output
{
level endon( "game_ended" );
self endon( "reset" );
@ -379,20 +355,20 @@ bounce()
toppos = self.curorigin + vectorScale( ( 0, 0, 1 ), 12 );
while ( 1 )
{
self.visuals[ 0 ] moveto( toppos, 0,5, 0,15, 0,15 );
self.visuals[ 0 ] rotateyaw( 180, 0,5 );
self.visuals[ 1 ] moveto( toppos, 0,5, 0,15, 0,15 );
self.visuals[ 1 ] rotateyaw( 180, 0,5 );
wait 0,5;
self.visuals[ 0 ] moveto( bottompos, 0,5, 0,15, 0,15 );
self.visuals[ 0 ] rotateyaw( 180, 0,5 );
self.visuals[ 1 ] moveto( bottompos, 0,5, 0,15, 0,15 );
self.visuals[ 1 ] rotateyaw( 180, 0,5 );
wait 0,5;
self.visuals[ 0 ] moveto( toppos, 0.5, 0.15, 0.15 );
self.visuals[ 0 ] rotateyaw( 180, 0.5 );
self.visuals[ 1 ] moveto( toppos, 0.5, 0.15, 0.15 );
self.visuals[ 1 ] rotateyaw( 180, 0.5 );
wait 0.5;
self.visuals[ 0 ] moveto( bottompos, 0.5, 0.15, 0.15 );
self.visuals[ 0 ] rotateyaw( 180, 0.5 );
self.visuals[ 1 ] moveto( bottompos, 0.5, 0.15, 0.15 );
self.visuals[ 1 ] rotateyaw( 180, 0.5 );
wait 0.5;
}
}
timeout( victim )
timeout( victim ) //checked matches cerberus output
{
level endon( "game_ended" );
victim endon( "disconnect" );
@ -409,7 +385,7 @@ timeout( victim )
self maps/mp/gametypes/_gameobjects::allowuse( "none" );
}
tagteamupdater( tags )
tagteamupdater( tags ) //checked matches cerberus output
{
level endon( "game_ended" );
self endon( "disconnect" );
@ -421,7 +397,7 @@ tagteamupdater( tags )
}
}
clearonvictimdisconnect( victim )
clearonvictimdisconnect( victim ) //checked changed to match cerberus output
{
level endon( "game_ended" );
guid = victim.entnum;
@ -431,23 +407,21 @@ clearonvictimdisconnect( victim )
level.dogtags[ guid ] maps/mp/gametypes/_gameobjects::allowuse( "none" );
playfx( level.conf_fx[ "vanish" ], level.dogtags[ guid ].curorigin );
level.dogtags[ guid ] notify( "reset" );
wait 0,05;
wait 0.05;
if ( isDefined( level.dogtags[ guid ] ) )
{
objective_delete( level.dogtags[ guid ].objid );
level.dogtags[ guid ].trigger delete();
i = 0;
while ( i < level.dogtags[ guid ].visuals.size )
for ( i = 0; i < level.dogtags[guid].visuals.size; i++ )
{
level.dogtags[ guid ].visuals[ i ] delete();
i++;
}
level.dogtags[ guid ] notify( "deleted" );
}
}
}
onspawnplayerunified()
onspawnplayerunified() //checked nmatches cerberus output
{
self.usingobj = undefined;
if ( level.usestartspawns && !level.ingraceperiod )
@ -472,7 +446,7 @@ onspawnplayerunified()
}
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
pixbeginevent( "TDM:onSpawnPlayer" );
self.usingobj = undefined;
@ -510,12 +484,13 @@ onspawnplayer( predictedspawn )
pixendevent();
}
onroundswitch()
onroundswitch() //checked matches cerberus output
{
game[ "switchedsides" ] = !game[ "switchedsides" ];
}
onroundendgame( roundwinner )
onroundendgame( roundwinner ) //checked matches cerberus output
{
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_audio;
#include maps/mp/gametypes/_spawnlogic;
@ -5,16 +8,16 @@
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
main()
main() //checked matches cerberus output
{
maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks();
maps/mp/gametypes/_globallogic::setupcallbacks();
registertimelimit( 0, 1440 );
registerscorelimit( 0, 50000 );
registerroundlimit( 0, 10 );
registerroundwinlimit( 0, 10 );
registernumlives( 0, 100 );
maps/mp/_utility::registertimelimit( 0, 1440 );
maps/mp/_utility::registerscorelimit( 0, 50000 );
maps/mp/_utility::registerroundlimit( 0, 10 );
maps/mp/_utility::registerroundwinlimit( 0, 10 );
maps/mp/_utility::registernumlives( 0, 100 );
maps/mp/gametypes/_globallogic::registerfriendlyfiredelay( level.gametype, 0, 0, 1440 );
level.scoreroundbased = getgametypesetting( "roundscorecarry" ) == 0;
level.teamscoreperkill = getgametypesetting( "teamScorePerKill" );
@ -31,7 +34,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "headshots", "score" );
}
onstartgametype()
onstartgametype() //checked matches cerberus output
{
setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_DM" );
@ -69,12 +72,12 @@ onstartgametype()
}
}
onspawnplayerunified()
onspawnplayerunified() //checked matches cerberus output
{
maps/mp/gametypes/_spawning::onspawnplayer_unified();
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( self.pers[ "team" ] );
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 ) )
{
@ -96,14 +99,13 @@ onendgame( winningplayer )
}
}
onscoreclosemusic()
onscoreclosemusic() //checked changed to match cerberus output
{
while ( !level.gameended )
{
scorelimit = level.scorelimit;
scorethreshold = scorelimit * 0,9;
i = 0;
while ( i < level.players.size )
for ( i = 0; i < level.players.size; i++ )
{
scorecheck = [[ level._getplayerscore ]]( level.players[ i ] );
if ( scorecheck >= scorethreshold )
@ -112,13 +114,12 @@ onscoreclosemusic()
thread maps/mp/gametypes/_globallogic_audio::actionmusicset();
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 )
{
@ -131,3 +132,4 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
attacker maps/mp/gametypes/_globallogic_score::givepointstowin( level.teamscoreperheadshot );
}
}

View File

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

View File

@ -3,12 +3,16 @@
#include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_wager;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
#include common_scripts/utility;
main()
main() //checked matches cerberus output
{
maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks();
@ -38,16 +42,16 @@ main()
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;
}
return idamage;
}
givecustomloadout()
givecustomloadout() //checked matches cerberus output
{
weapon = "kard_wager_mp";
self maps/mp/gametypes/_wager::setupblankrandomplayer( 1, 1, weapon );
@ -72,7 +76,7 @@ givecustomloadout()
return weapon;
}
onstartgametype()
onstartgametype() //checked matches cerberus output
{
setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_DM" );
@ -121,7 +125,7 @@ onstartgametype()
setobjectivehinttext( "axis", &"OBJECTIVES_OIC_HINT" );
}
onspawnplayerunified()
onspawnplayerunified() //checked changed to match cerberus output
{
maps/mp/gametypes/_spawning::onspawnplayer_unified();
livesleft = self.pers[ "lives" ];
@ -129,16 +133,13 @@ onspawnplayerunified()
{
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" ] );
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 ) )
{
@ -160,12 +161,12 @@ onendgame( winningplayer )
}
}
onstartwagersidebets()
onstartwagersidebets() //checked matches cerberus output
{
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;
playerindex = 0;
@ -177,30 +178,28 @@ saveoffallplayersammo()
playerindex++;
continue;
}
else if ( player.pers[ "lives" ] == 0 )
if ( player.pers[ "lives" ] == 0 )
{
playerindex++;
continue;
}
else
{
currentweapon = player getcurrentweapon();
player.pers[ "clip_ammo" ] = player getweaponammoclip( currentweapon );
player.pers[ "stock_ammo" ] = player getweaponammostock( currentweapon );
}
currentweapon = player getcurrentweapon();
player.pers[ "clip_ammo" ] = player getweaponammoclip( currentweapon );
player.pers[ "stock_ammo" ] = player getweaponammostock( currentweapon );
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 = [];
playerindex = 0;
@ -212,27 +211,23 @@ getplayersleft()
playerindex++;
continue;
}
else
if ( !isplayereliminated( player ) )
{
if ( !isplayereliminated( player ) )
{
playersremaining[ playersremaining.size ] = player;
}
playersremaining[ playersremaining.size ] = player;
}
playerindex++;
}
return playersremaining;
}
onwagerfinalizeround()
onwagerfinalizeround() //checked changed to match cerberus output
{
playersleft = getplayersleft();
lastmanstanding = playersleft[ 0 ];
sidebetpool = 0;
sidebetwinners = [];
players = level.players;
playerindex = 0;
while ( playerindex < players.size )
for ( playerindex = 0; playerindex < players.size; playerindex++ )
{
if ( isDefined( players[ playerindex ].pers[ "sideBetMade" ] ) )
{
@ -242,23 +237,20 @@ onwagerfinalizeround()
sidebetwinners[ sidebetwinners.size ] = players[ playerindex ];
}
}
playerindex++;
}
if ( sidebetwinners.size == 0 )
{
return;
}
sidebetpayout = int( sidebetpool / sidebetwinners.size );
index = 0;
while ( index < sidebetwinners.size )
for ( index = 0; index < sidebetwinners.size; index++ )
{
player = sidebetwinners[ index ];
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 )
{
@ -294,14 +286,14 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
giveammo( amount )
giveammo( amount ) //checked matches cerberus output
{
currentweapon = self getcurrentweapon();
clipammo = self getweaponammoclip( currentweapon );
self setweaponammoclip( currentweapon, clipammo + amount );
}
shouldreceivesurvivorbonus()
shouldreceivesurvivorbonus() //checked matches cerberus output
{
if ( isalive( self ) )
{
@ -314,15 +306,14 @@ shouldreceivesurvivorbonus()
return 0;
}
watchelimination()
watchelimination() //checked changed to match cerberus output
{
level endon( "game_ended" );
for ( ;; )
{
level waittill( "player_eliminated" );
players = level.players;
i = 0;
while ( i < players.size )
for ( i = 0; i < players.size; i++ )
{
if ( isDefined( players[ i ] ) && players[ i ] shouldreceivesurvivorbonus() )
{
@ -333,12 +324,11 @@ watchelimination()
maps/mp/_scoreevents::processscoreevent( "survivor", players[ i ] );
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" );
if ( !isDefined( stabs ) )
@ -359,3 +349,4 @@ onwagerawards()
}
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
}

View File

@ -5,19 +5,21 @@
#include maps/mp/_scoreevents;
#include maps/mp/gametypes/_globallogic_score;
#include maps/mp/gametypes/_wager;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
main()
main() //checked matches cerberus output
{
maps/mp/gametypes/_globallogic::init();
maps/mp/gametypes/_callbacksetup::setupcallbacks();
maps/mp/gametypes/_globallogic::setupcallbacks();
registertimelimit( 0, 1440 );
registerscorelimit( 0, 5000 );
registerroundlimit( 0, 10 );
registerroundwinlimit( 0, 10 );
registernumlives( 0, 100 );
maps/mp/_utility::registertimelimit( 0, 1440 );
maps/mp/_utility::registerscorelimit( 0, 5000 );
maps/mp/_utility::registerroundlimit( 0, 10 );
maps/mp/_utility::registerroundwinlimit( 0, 10 );
maps/mp/_utility::registernumlives( 0, 100 );
level.onstartgametype = ::onstartgametype;
level.onspawnplayer = ::onspawnplayer;
level.onspawnplayerunified = ::onspawnplayerunified;
@ -44,9 +46,11 @@ main()
level.setbackweapon = getreffromitemindex( getbaseweaponitemindex( "knife_ballistic_mp" ) ) + "_mp";
break;
default:
/*
/#
assert( 1, "Invalid setting for gunSelection" );
#/
*/
break;
}
game[ "dialog" ][ "gametype" ] = "sns_start";
@ -62,7 +66,7 @@ main()
setscoreboardcolumns( "pointstowin", "kills", "deaths", "tomahawks", "humiliated" );
}
givecustomloadout()
givecustomloadout() //checked matches cerberus output
{
self notify( "sas_spectator_hud" );
defaultweapon = "crossbow_mp";
@ -87,7 +91,7 @@ givecustomloadout()
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" )
{
@ -107,7 +111,7 @@ onplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon,
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 )
{
@ -138,19 +142,16 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
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++;
if ( attacker.killswithbothawarded == 0 && attacker.killswithprimary > 0 )
{
attacker.killswithbothawarded = 1;
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 )
{
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 );
setclientnamemode( "auto_change" );
setobjectivetext( "allies", &"OBJECTIVES_SAS" );
setobjectivetext( "axis", &"OBJECTIVES_SAS" );
maps/mp/_utility::setobjectivetext( "allies", &"OBJECTIVES_SAS" );
maps/mp/_utility::setobjectivetext( "axis", &"OBJECTIVES_SAS" );
if ( level.splitscreen )
{
setobjectivescoretext( "allies", &"OBJECTIVES_SAS" );
setobjectivescoretext( "axis", &"OBJECTIVES_SAS" );
maps/mp/_utility::setobjectivescoretext( "allies", &"OBJECTIVES_SAS" );
maps/mp/_utility::setobjectivescoretext( "axis", &"OBJECTIVES_SAS" );
}
else
{
setobjectivescoretext( "allies", &"OBJECTIVES_SAS_SCORE" );
setobjectivescoretext( "axis", &"OBJECTIVES_SAS_SCORE" );
maps/mp/_utility::setobjectivescoretext( "allies", &"OBJECTIVES_SAS_SCORE" );
maps/mp/_utility::setobjectivescoretext( "axis", &"OBJECTIVES_SAS_SCORE" );
}
setobjectivehinttext( "allies", &"OBJECTIVES_SAS_HINT" );
setobjectivehinttext( "axis", &"OBJECTIVES_SAS_HINT" );
maps/mp/_utility::setobjectivehinttext( "allies", &"OBJECTIVES_SAS_HINT" );
maps/mp/_utility::setobjectivehinttext( "axis", &"OBJECTIVES_SAS_HINT" );
allowed[ 0 ] = "sas";
maps/mp/gametypes/_gameobjects::main( allowed );
maps/mp/gametypes/_spawning::create_map_placed_influencers();
@ -228,15 +229,18 @@ onstartgametype()
level.displayroundendtext = 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();
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
spawnpoints = maps/mp/gametypes/_spawnlogic::getteamspawnpoints( self.pers[ "team" ] );
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" );
if ( !isDefined( tomahawks ) )
@ -271,3 +275,4 @@ onwagerawards()
}
self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerAwards", bestkillstreak, 2 );
}

View File

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

View File

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

View File

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