diff --git a/patch_mp/maps/mp/gametypes/conf.gsc b/patch_mp/maps/mp/gametypes/conf.gsc index b02fd44..8145981 100644 --- a/patch_mp/maps/mp/gametypes/conf.gsc +++ b/patch_mp/maps/mp/gametypes/conf.gsc @@ -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" ); } + diff --git a/patch_mp/maps/mp/gametypes/dm.gsc b/patch_mp/maps/mp/gametypes/dm.gsc index e03e910..c20cc32 100644 --- a/patch_mp/maps/mp/gametypes/dm.gsc +++ b/patch_mp/maps/mp/gametypes/dm.gsc @@ -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 ); } } + diff --git a/patch_mp/maps/mp/gametypes/gun.gsc b/patch_mp/maps/mp/gametypes/gun.gsc index 275863c..1ef6edb 100644 --- a/patch_mp/maps/mp/gametypes/gun.gsc +++ b/patch_mp/maps/mp/gametypes/gun.gsc @@ -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 ); } } + diff --git a/patch_mp/maps/mp/gametypes/oic.gsc b/patch_mp/maps/mp/gametypes/oic.gsc index b018b22..09cfafd 100644 --- a/patch_mp/maps/mp/gametypes/oic.gsc +++ b/patch_mp/maps/mp/gametypes/oic.gsc @@ -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 ); } + diff --git a/patch_mp/maps/mp/gametypes/sas.gsc b/patch_mp/maps/mp/gametypes/sas.gsc index 6b762a4..610dba2 100644 --- a/patch_mp/maps/mp/gametypes/sas.gsc +++ b/patch_mp/maps/mp/gametypes/sas.gsc @@ -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 ); } + diff --git a/patch_mp/maps/mp/gametypes/sd.gsc b/patch_mp/maps/mp/gametypes/sd.gsc index 4e30d39..7ca9085 100644 --- a/patch_mp/maps/mp/gametypes/sd.gsc +++ b/patch_mp/maps/mp/gametypes/sd.gsc @@ -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; } + diff --git a/patch_mp/maps/mp/gametypes/shrp.gsc b/patch_mp/maps/mp/gametypes/shrp.gsc index 5c7020c..928e701 100644 --- a/patch_mp/maps/mp/gametypes/shrp.gsc +++ b/patch_mp/maps/mp/gametypes/shrp.gsc @@ -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++; } } + diff --git a/patch_mp/maps/mp/gametypes/tdm.gsc b/patch_mp/maps/mp/gametypes/tdm.gsc index 2176a6d..baedf49 100644 --- a/patch_mp/maps/mp/gametypes/tdm.gsc +++ b/patch_mp/maps/mp/gametypes/tdm.gsc @@ -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 ); } } + diff --git a/patch_mp/readme.md b/patch_mp/readme.md index 75c6fb3..686c007 100644 --- a/patch_mp/readme.md +++ b/patch_mp/readme.md @@ -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 ```