mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-07 17:37:50 -05:00
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:
parent
046d571f12
commit
20883d4bec
@ -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" );
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user