From 232a6d6d6d0aae4dd86e025cc375bfe04daa0852 Mon Sep 17 00:00:00 2001 From: JezuzLizard Date: Sun, 24 May 2020 10:37:29 -0700 Subject: [PATCH] checked 4 patch_mp scripts Checked _globallogic_player, _globallogic_audio, _globallogic_score, and _globallogic_spawn. --- .../maps/mp/gametypes/_globallogic_audio.gsc | 303 ++++---- .../maps/mp/gametypes/_globallogic_player.gsc | 652 +++++++++--------- .../maps/mp/gametypes/_globallogic_score.gsc | 492 ++++++------- .../maps/mp/gametypes/_globallogic_spawn.gsc | 160 ++--- patch_mp/readme.md | 8 +- 5 files changed, 786 insertions(+), 829 deletions(-) diff --git a/patch_mp/maps/mp/gametypes/_globallogic_audio.gsc b/patch_mp/maps/mp/gametypes/_globallogic_audio.gsc index 457444c..8b2dd70 100644 --- a/patch_mp/maps/mp/gametypes/_globallogic_audio.gsc +++ b/patch_mp/maps/mp/gametypes/_globallogic_audio.gsc @@ -1,9 +1,10 @@ +//checked includes match cerberus output #include maps/mp/_music; #include maps/mp/gametypes/_globallogic_audio; #include maps/mp/gametypes/_globallogic_utils; #include maps/mp/_utility; -init() +init() //checked matches cerberus output { game[ "music" ][ "defeat" ] = "mus_defeat"; game[ "music" ][ "victory_spectator" ] = "mus_defeat"; @@ -150,21 +151,20 @@ init() level thread post_match_snapshot_watcher(); } -registerdialoggroup( group, skipifcurrentlyplayinggroup ) +registerdialoggroup( group, skipifcurrentlyplayinggroup ) //checked changed to match cerberus output { if ( !isDefined( level.dialoggroups ) ) { level.dialoggroups = []; } - else + else if ( isDefined( level.dialoggroup[ group ] ) ) { - if ( isDefined( level.dialoggroup[ group ] ) ) - { + /* /# - error( "registerDialogGroup: Dialog group " + group + " already registered." ); + error( "registerDialogGroup: Dialog group " + group + " already registered." ); #/ - return; - } + */ + return; } level.dialoggroup[ group ] = spawnstruct(); level.dialoggroup[ group ].group = group; @@ -172,7 +172,7 @@ registerdialoggroup( group, skipifcurrentlyplayinggroup ) level.dialoggroup[ group ].currentcount = 0; } -sndstartmusicsystem() +sndstartmusicsystem() //checked matches cerberus output dvars taken from beta dump { self endon( "disconnect" ); if ( game[ "state" ] == "postgame" ) @@ -181,12 +181,14 @@ sndstartmusicsystem() } if ( game[ "state" ] == "pregame" ) { + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - music state is undefined Waiting 15 seconds to set music state" ); #/ } + */ wait 45; if ( !isDefined( level.nextmusicstate ) ) { @@ -196,61 +198,72 @@ sndstartmusicsystem() } if ( !isDefined( level.nextmusicstate ) ) { + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - music state is undefined Waiting 15 seconds to set music state" ); #/ } + */ self.pers[ "music" ].currentstate = "UNDERSCORE"; self thread suspensemusic(); } } -suspensemusicforplayer() +suspensemusicforplayer() //checked matches cerberus output dvar taken from beta dump { self endon( "disconnect" ); self thread set_music_on_player( "UNDERSCORE", 0 ); + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Setting Music State Random Underscore " + self.pers[ "music" ].returnstate + " On player " + self getentitynumber() ); #/ } + */ } -suspensemusic( random ) +suspensemusic( random ) //checked changed to match cerberus output dvars taken from beta dump { level endon( "game_ended" ); level endon( "match_ending_soon" ); self endon( "disconnect" ); + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Starting random underscore" ); #/ } + */ while ( 1 ) { wait randomintrange( 25, 60 ); + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Checking for random underscore" ); #/ } + */ if ( !isDefined( self.pers[ "music" ].inque ) ) { self.pers[ "music" ].inque = 0; } - while ( self.pers[ "music" ].inque ) + if ( self.pers[ "music" ].inque ) { + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Inque no random underscore" ); #/ } + */ + continue; } if ( !isDefined( self.pers[ "music" ].currentstate ) ) { @@ -260,32 +273,30 @@ suspensemusic( random ) { self thread suspensemusicforplayer(); self.underscorechance -= 20; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Starting random underscore" ); #/ } + */ } } } -leaderdialogforotherteams( dialog, skip_team, squad_dialog ) +leaderdialogforotherteams( dialog, skip_team, squad_dialog ) //checked changed to match cerberus output { - _a350 = level.teams; - _k350 = getFirstArrayKey( _a350 ); - while ( isDefined( _k350 ) ) + foreach ( team in level.teams ) { - team = _a350[ _k350 ]; if ( team != skip_team ) { leaderdialog( dialog, team, undefined, undefined, squad_dialog ); } - _k350 = getNextArrayKey( _a350, _k350 ); } } -announceroundwinner( winner, delay ) +announceroundwinner( winner, delay ) //checked changed to match cerberus output { if ( delay > 0 ) { @@ -302,19 +313,15 @@ announceroundwinner( winner, delay ) } else { - _a376 = level.teams; - _k376 = getFirstArrayKey( _a376 ); - while ( isDefined( _k376 ) ) + foreach ( team in level.teams ) { - team = _a376[ _k376 ]; thread playsoundonplayers( "mus_round_draw" + "_" + level.teampostfix[ team ] ); - _k376 = getNextArrayKey( _a376, _k376 ); } leaderdialog( "round_draw" ); } } -announcegamewinner( winner, delay ) +announcegamewinner( winner, delay ) //checked matches cerberus output { if ( delay > 0 ) { @@ -335,7 +342,7 @@ announcegamewinner( winner, delay ) } } -doflameaudio() +doflameaudio() //checked matches cerberus output { self endon( "disconnect" ); waittillframeend; @@ -351,11 +358,13 @@ doflameaudio() } } -leaderdialog( dialog, team, group, excludelist, squaddialog ) +leaderdialog( dialog, team, group, excludelist, squaddialog ) //checked changed to match beta dump { + /* /# assert( isDefined( level.players ) ); #/ + */ if ( level.wagermatch ) { return; @@ -363,47 +372,44 @@ leaderdialog( dialog, team, group, excludelist, squaddialog ) if ( !isDefined( team ) ) { dialogs = []; - _a433 = level.teams; - _k433 = getFirstArrayKey( _a433 ); - while ( isDefined( _k433 ) ) + foreach ( team in level.teams ) { - team = _a433[ _k433 ]; dialogs[ team ] = dialog; - _k433 = getNextArrayKey( _a433, _k433 ); } leaderdialogallteams( dialogs, group, excludelist ); return; } if ( isDefined( excludelist ) ) { - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && !maps/mp/gametypes/_globallogic_utils::isexcluded( player, excludelist ) ) { player leaderdialogonplayer( dialog, group ); } - i++; } } - else i = 0; - while ( i < level.players.size ) + else { - player = level.players[ i ]; - if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + for ( i = 0; i < level.players.size; i++ ) { - player leaderdialogonplayer( dialog, group ); + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player leaderdialogonplayer( dialog, group ); + } } - i++; } } -leaderdialogallteams( dialogs, group, excludelist ) +leaderdialogallteams( dialogs, group, excludelist ) //checked partially changed to match cerberus see info.md { + /* /# assert( isDefined( level.players ) ); #/ + */ i = 0; while ( i < level.players.size ) { @@ -414,37 +420,30 @@ leaderdialogallteams( dialogs, group, excludelist ) i++; continue; } - else if ( !isDefined( dialogs[ team ] ) ) + if ( !isDefined( dialogs[ team ] ) ) { i++; continue; } - else if ( isDefined( excludelist ) && maps/mp/gametypes/_globallogic_utils::isexcluded( player, excludelist ) ) + if ( isDefined( excludelist ) && maps/mp/gametypes/_globallogic_utils::isexcluded( player, excludelist ) ) { i++; continue; } - else - { - player leaderdialogonplayer( dialogs[ team ], group ); - } + player leaderdialogonplayer( dialogs[ team ], group ); i++; } } -flushdialog() +flushdialog() //checked changed to match cerberus output { - _a485 = level.players; - _k485 = getFirstArrayKey( _a485 ); - while ( isDefined( _k485 ) ) + foreach ( player in level.players ) { - player = _a485[ _k485 ]; player flushdialogonplayer(); - _k485 = getNextArrayKey( _a485, _k485 ); } } -flushdialogonplayer() +flushdialogonplayer() //checked matches cerberus output { self.leaderdialoggroups = []; self.leaderdialogqueue = []; @@ -453,20 +452,17 @@ flushdialogonplayer() self notify( "flush_dialog" ); } -flushgroupdialog( group ) +flushgroupdialog( group ) //checked changed to match cerberus output { - _a503 = level.players; - _k503 = getFirstArrayKey( _a503 ); - while ( isDefined( _k503 ) ) + foreach ( player in level.players ) { - player = _a503[ _k503 ]; player flushgroupdialogonplayer( group ); - _k503 = getNextArrayKey( _a503, _k503 ); } } -flushgroupdialogonplayer( group ) +flushgroupdialogonplayer( group ) //checked changed to match cerberus output { + self.leaderdialoggroups[ group ] = undefined; arrayremovevalue( self.leaderdialogqueue, group ); if ( self.leaderdialogqueue.size == 0 ) { @@ -474,13 +470,15 @@ flushgroupdialogonplayer( group ) } } -addgroupdialogtoplayer( dialog, group ) +addgroupdialogtoplayer( dialog, group ) //checked changed to match cerberus output { if ( !isDefined( level.dialoggroup[ group ] ) ) { + /* /# error( "leaderDialogOnPlayer: Dialog group " + group + " is not registered" ); #/ + */ return 0; } addtoqueue = 0; @@ -492,6 +490,7 @@ addgroupdialogtoplayer( dialog, group ) { if ( self.currentleaderdialog == dialog && ( self.currentleaderdialogtime + 2000 ) > getTime() ) { + self.leaderdialoggroups[ group ] = undefined; arrayremovevalue( self.leaderdialogqueue, group ); if ( self.leaderdialogqueue.size == 0 ) { @@ -500,22 +499,21 @@ addgroupdialogtoplayer( dialog, group ) return 0; } } - else + else if ( self.currentleaderdialoggroup == group ) { - if ( self.currentleaderdialoggroup == group ) - { - return 0; - } + return 0; } self.leaderdialoggroups[ group ] = dialog; return addtoqueue; } -leaderdialogonplayer( dialog, group ) +leaderdialogonplayer( dialog, group ) //checked matches cerberus output { + /* /# assert( isDefined( dialog ) ); #/ + */ team = self.pers[ "team" ]; if ( !isDefined( team ) ) { @@ -543,11 +541,11 @@ leaderdialogonplayer( dialog, group ) } } -waitforsound( sound, extratime ) +waitforsound( sound, extratime ) //checked matches cerberus output { if ( !isDefined( extratime ) ) { - extratime = 0,1; + extratime = 0.1; } time = soundgetplaybacktime( sound ); if ( time < 0 ) @@ -556,11 +554,11 @@ waitforsound( sound, extratime ) } else { - wait ( ( time * 0,001 ) + extratime ); + wait ( ( time * 0.001 ) + extratime ); } } -playnextleaderdialog() +playnextleaderdialog() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "flush_dialog" ); @@ -570,19 +568,24 @@ playnextleaderdialog() } self.leaderdialogactive = 1; waittillframeend; + /* /# assert( self.leaderdialogqueue.size > 0 ); #/ + */ dialog = self.leaderdialogqueue[ 0 ]; + /* /# assert( isDefined( dialog ) ); #/ + */ arrayremoveindex( self.leaderdialogqueue, 0 ); team = self.pers[ "team" ]; if ( isDefined( self.leaderdialoggroups[ dialog ] ) ) { group = dialog; dialog = self.leaderdialoggroups[ group ]; + self.leaderdialoggroups[ group ] = undefined; self.currentleaderdialoggroup = group; } if ( level.wagermatch ) @@ -614,14 +617,11 @@ playnextleaderdialog() } } -isteamwinning( checkteam ) +isteamwinning( checkteam ) //checked changed to match cerberus output { score = game[ "teamScores" ][ checkteam ]; - _a678 = level.teams; - _k678 = getFirstArrayKey( _a678 ); - while ( isDefined( _k678 ) ) + foreach ( team in level.teams ) { - team = _a678[ _k678 ]; if ( team != checkteam ) { if ( game[ "teamScores" ][ team ] >= score ) @@ -629,30 +629,25 @@ isteamwinning( checkteam ) return 0; } } - _k678 = getNextArrayKey( _a678, _k678 ); } return 1; } -announceteamiswinning() +announceteamiswinning() //checked changed to match cerberus output { - _a692 = level.teams; - _k692 = getFirstArrayKey( _a692 ); - while ( isDefined( _k692 ) ) + foreach ( team in level.teams ) { - team = _a692[ _k692 ]; if ( isteamwinning( team ) ) { leaderdialog( "winning", team, undefined, undefined, "squad_winning" ); leaderdialogforotherteams( "losing", team, "squad_losing" ); return 1; } - _k692 = getNextArrayKey( _a692, _k692 ); } return 0; } -musiccontroller() +musiccontroller() //checked changed to match cerberus output { level endon( "game_ended" ); level thread musictimesout(); @@ -667,27 +662,26 @@ musiccontroller() } } level waittill( "match_ending_very_soon" ); - _a725 = level.teams; - _k725 = getFirstArrayKey( _a725 ); - while ( isDefined( _k725 ) ) + foreach ( team in level.teams ) { - team = _a725[ _k725 ]; leaderdialog( "timesup", team, undefined, undefined, "squad_30sec" ); - _k725 = getNextArrayKey( _a725, _k725 ); } } - else level waittill( "match_ending_vox" ); - leaderdialog( "timesup" ); + else + { + level waittill( "match_ending_vox" ); + leaderdialog( "timesup" ); + } } -musictimesout() +musictimesout() //checked matches cerberus output { level endon( "game_ended" ); level waittill( "match_ending_very_soon" ); thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "TIME_OUT", "both", 1, 0 ); } -actionmusicset() +actionmusicset() //checked matches cerberus output { level endon( "game_ended" ); level.playingactionmusic = 1; @@ -695,244 +689,272 @@ actionmusicset() level.playingactionmusic = 0; } -play_2d_on_team( alias, team ) +play_2d_on_team( alias, team ) //checked changed to match cerberus output { + /* /# assert( isDefined( level.players ) ); #/ - i = 0; - while ( i < level.players.size ) + */ + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) { player playlocalsound( alias ); } - i++; } } -set_music_on_team( state, team, save_state, return_state, wait_time ) +set_music_on_team( state, team, save_state, return_state, wait_time ) //checked partially changed to match cerberus output see info.md dvars taken from beta dump { if ( sessionmodeiszombiesgame() ) { return; } + /* /# assert( isDefined( level.players ) ); #/ + */ if ( !isDefined( team ) ) { team = "both"; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - team undefined: Setting to both" ); #/ } + */ } if ( !isDefined( save_state ) ) { save_sate = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - save_sate undefined: Setting to false" ); #/ } + */ } if ( !isDefined( return_state ) ) { return_state = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Music System - return_state undefined: Setting to false" ); #/ } + */ } if ( !isDefined( wait_time ) ) { wait_time = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - wait_time undefined: Setting to 0" ); #/ } + */ } - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( team == "both" ) { player thread set_music_on_player( state, save_state, return_state, wait_time ); - i++; - continue; } else { if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) { player thread set_music_on_player( state, save_state, return_state, wait_time ); + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Setting Music State " + state + " On player " + player getentitynumber() ); #/ } + */ } } - i++; } } -set_music_on_player( state, save_state, return_state, wait_time ) +set_music_on_player( state, save_state, return_state, wait_time ) //checked matches cerberus output dvars taken from beta dump { self endon( "disconnect" ); if ( sessionmodeiszombiesgame() ) { return; } + /* /# assert( isplayer( self ) ); #/ + */ if ( !isDefined( save_state ) ) { save_state = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Music System - save_sate undefined: Setting to false" ); #/ } + */ } if ( !isDefined( return_state ) ) { return_state = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Music System - return_state undefined: Setting to false" ); #/ } + */ } if ( !isDefined( wait_time ) ) { wait_time = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - wait_time undefined: Setting to 0" ); #/ } + */ } if ( !isDefined( state ) ) { state = "UNDERSCORE"; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - state undefined: Setting to UNDERSCORE" ); #/ } + */ } maps/mp/_music::setmusicstate( state, self ); if ( isDefined( self.pers[ "music" ].currentstate ) && save_state ) { self.pers[ "music" ].returnstate = state; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Saving Music State " + self.pers[ "music" ].returnstate + " On " + self getentitynumber() ); #/ } + */ } self.pers[ "music" ].previousstate = self.pers[ "music" ].currentstate; self.pers[ "music" ].currentstate = state; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Setting Music State " + state + " On player " + self getentitynumber() ); #/ } + */ if ( isDefined( self.pers[ "music" ].returnstate ) && return_state ) { + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Starting Return State " + self.pers[ "music" ].returnstate + " On " + self getentitynumber() ); #/ } + */ self set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); } } -return_music_state_player( wait_time ) +return_music_state_player( wait_time ) //checked matches cerberus output dvars taken from beta dump { if ( !isDefined( wait_time ) ) { wait_time = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - wait_time undefined: Setting to 0" ); #/ } + */ } self set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); } -return_music_state_team( team, wait_time ) +return_music_state_team( team, wait_time ) //checked partially changed to match cerberus output see info.md dvars taken from beta dump { if ( !isDefined( wait_time ) ) { wait_time = 0; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - wait_time undefined: Setting to 0" ); #/ } + */ } - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( team == "both" ) { player thread set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); - i++; - continue; } else { if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) { player thread set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Setting Music State " + self.pers[ "music" ].returnstate + " On player " + player getentitynumber() ); #/ } + */ } } - i++; } } -set_next_music_state( nextstate, wait_time ) +set_next_music_state( nextstate, wait_time ) //checked matches cerberus output dvars taken from beta dump { self endon( "disconnect" ); self.pers[ "music" ].nextstate = nextstate; + /* /# - if ( getDvarInt( #"0BC4784C" ) > 0 ) + if ( getDvarInt( "debug_music" ) > 0 ) { println( "Music System - Setting next Music State " + self.pers[ "music" ].nextstate + " On " + self getentitynumber() ); #/ } + */ if ( !isDefined( self.pers[ "music" ].inque ) ) { self.pers[ "music" ].inque = 0; @@ -940,9 +962,11 @@ set_next_music_state( nextstate, wait_time ) if ( self.pers[ "music" ].inque ) { return; + /* /# println( "Music System - Music state in que" ); #/ + */ } else { @@ -956,7 +980,7 @@ set_next_music_state( nextstate, wait_time ) } } -getroundswitchdialog( switchtype ) +getroundswitchdialog( switchtype ) //checked matches cerberus output { switch( switchtype ) { @@ -969,10 +993,11 @@ getroundswitchdialog( switchtype ) } } -post_match_snapshot_watcher() +post_match_snapshot_watcher() //checked matches cerberus output { level waittill( "game_ended" ); level clientnotify( "pm" ); level waittill( "sfade" ); level clientnotify( "pmf" ); } + diff --git a/patch_mp/maps/mp/gametypes/_globallogic_player.gsc b/patch_mp/maps/mp/gametypes/_globallogic_player.gsc index b8378dc..ef3d6fb 100644 --- a/patch_mp/maps/mp/gametypes/_globallogic_player.gsc +++ b/patch_mp/maps/mp/gametypes/_globallogic_player.gsc @@ -1,3 +1,4 @@ +//checked includes changed to match cerberus output #include maps/mp/gametypes/_globallogic_vehicle; #include maps/mp/_burnplayer; #include maps/mp/gametypes/_deathicons; @@ -7,6 +8,7 @@ #include maps/mp/gametypes/_spawnlogic; #include maps/mp/_medals; #include maps/mp/killstreaks/_straferun; +#include maps/mp/_challenges; #include maps/mp/gametypes/_rank; #include maps/mp/teams/_teams; #include maps/mp/_demo; @@ -14,6 +16,7 @@ #include maps/mp/gametypes/_damagefeedback; #include maps/mp/gametypes/_weapons; #include maps/mp/_scoreevents; +#include maps/mp/gametypes/_battlechatter_mp; #include maps/mp/_vehicles; #include maps/mp/gametypes/_class; #include maps/mp/gametypes/_hud_message; @@ -34,7 +37,7 @@ #include common_scripts/utility; #include maps/mp/_utility; -freezeplayerforroundend() +freezeplayerforroundend() //checked matches cerberus output { self clearlowermessage(); self closemenu(); @@ -50,7 +53,7 @@ freezeplayerforroundend() } } -callback_playerconnect() +callback_playerconnect() //checked partially changed to match cerberus output partially changed to match beta dump { thread notifyconnecting(); self.statusicon = "hud_status_connecting"; @@ -64,7 +67,7 @@ callback_playerconnect() self.guid = self getguid(); matchrecorderincrementheaderstat( "playerCountJoined", 1 ); profilelog_begintiming( 4, "ship" ); - level notify( "connected" ); + level notify( "connected", self ); if ( self ishost() ) { self thread maps/mp/gametypes/_globallogic::listenforgameend(); @@ -86,7 +89,7 @@ callback_playerconnect() self maps/mp/gametypes/_persistence::setafteractionreportstat( "wagerMatchFailed", 0 ); } } - if ( !level.rankedmatch && !level.wagermatch && level.leaguematch && !isDefined( self.pers[ "matchesPlayedStatsTracked" ] ) ) + if ( level.rankedmatch && !isDefined( self.pers[ "matchesPlayedStatsTracked" ] ) || level.wagermatch && !isDefined( self.pers[ "matchesPlayedStatsTracked" ] ) || level.leaguematch && !isDefined( self.pers[ "matchesPlayedStatsTracked" ] ) ) { gamemode = maps/mp/gametypes/_globallogic::getcurrentgamemode(); self maps/mp/gametypes/_globallogic::incrementmatchcompletionstat( gamemode, "played", "started" ); @@ -209,7 +212,7 @@ callback_playerconnect() self thread reduceteamkillsovertime(); } } - if ( getDvar( #"F7B30924" ) == "1" ) + if ( getDvar( "r_reflectionProbeGenerate" ) == "1" ) { level waittill( "eternity" ); } @@ -323,13 +326,16 @@ callback_playerconnect() profilelog_endtiming( 4, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); return; } - if ( !level.rankedmatch && !level.wagermatch && level.leaguematch && !isDefined( self.pers[ "lossAlreadyReported" ] ) ) + if ( ( level.rankedmatch || level.wagermatch ) && !isDefined( self.pers[ "lossAlreadyReported" ] ) || level.leaguematch && !isDefined( self.pers[ "lossAlreadyReported" ] ) ) { if ( level.leaguematch ) { self recordleaguepreloser(); } - maps/mp/gametypes/_globallogic_score::updatelossstats( self ); + else + { + maps/mp/gametypes/_globallogic_score::updatelossstats( self ); + } self.pers[ "lossAlreadyReported" ] = 1; } if ( !isDefined( self.pers[ "winstreakAlreadyCleared" ] ) ) @@ -352,6 +358,7 @@ callback_playerconnect() } if ( level.oldschool ) { + self.pers["class"] = undefined; self.class = self.pers[ "class" ]; } if ( isDefined( self.pers[ "team" ] ) ) @@ -393,40 +400,37 @@ callback_playerconnect() self thread maps/mp/gametypes/_spectating::setspectatepermissions(); } } + else if ( self.pers[ "team" ] == "spectator" ) + { + self setclientscriptmainmenu( game[ "menu_class" ] ); + [[ level.spawnspectator ]](); + self.sessionteam = "spectator"; + self.sessionstate = "spectator"; + if ( !level.teambased ) + { + self.ffateam = "spectator"; + } + self thread spectate_player_watcher(); + } else { - if ( self.pers[ "team" ] == "spectator" ) + self.sessionteam = self.pers[ "team" ]; + self.sessionstate = "dead"; + if ( !level.teambased ) { - self setclientscriptmainmenu( game[ "menu_class" ] ); - [[ level.spawnspectator ]](); - self.sessionteam = "spectator"; - self.sessionstate = "spectator"; - if ( !level.teambased ) - { - self.ffateam = "spectator"; - } - self thread spectate_player_watcher(); + self.ffateam = self.pers[ "team" ]; + } + self maps/mp/gametypes/_globallogic_ui::updateobjectivetext(); + [[ level.spawnspectator ]](); + if ( maps/mp/gametypes/_globallogic_utils::isvalidclass( self.pers[ "class" ] ) ) + { + self thread [[ level.spawnclient ]](); } else { - self.sessionteam = self.pers[ "team" ]; - self.sessionstate = "dead"; - if ( !level.teambased ) - { - self.ffateam = self.pers[ "team" ]; - } - self maps/mp/gametypes/_globallogic_ui::updateobjectivetext(); - [[ level.spawnspectator ]](); - if ( maps/mp/gametypes/_globallogic_utils::isvalidclass( self.pers[ "class" ] ) ) - { - self thread [[ level.spawnclient ]](); - } - else - { - self maps/mp/gametypes/_globallogic_ui::showmainmenuforteam(); - } - self thread maps/mp/gametypes/_spectating::setspectatepermissions(); + self maps/mp/gametypes/_globallogic_ui::showmainmenuforteam(); } + self thread maps/mp/gametypes/_spectating::setspectatepermissions(); } if ( self.sessionteam != "spectator" ) { @@ -439,7 +443,7 @@ callback_playerconnect() } } -spectate_player_watcher() +spectate_player_watcher() //checked changed to match beta dump { self endon( "disconnect" ); if ( !level.splitscreen && !level.hardcoremode && getDvarInt( "scr_showperksonspawn" ) == 1 && game[ "state" ] != "postgame" && !isDefined( self.perkhudelem ) ) @@ -461,48 +465,48 @@ spectate_player_watcher() self.watchingactiveclient = 0; return; } - else count = 0; - i = 0; - while ( i < level.players.size ) + else { - if ( level.players[ i ].team != "spectator" ) + count = 0; + for ( i = 0; i < level.players.size; i++ ) { - count++; - break; + if ( level.players[ i ].team != "spectator" ) + { + count++; + break; + } + } + if ( count > 0 ) + { + if ( !self.watchingactiveclient ) + { + self maps/mp/gametypes/_hud_message::clearshoutcasterwaitingmessage(); + self freezecontrols( 0 ); + } + self.watchingactiveclient = 1; } else { - i++; + if ( self.watchingactiveclient ) + { + [[ level.onspawnspectator ]](); + self freezecontrols( 1 ); + self maps/mp/gametypes/_hud_message::setshoutcasterwaitingmessage(); + } + self.watchingactiveclient = 0; } + wait 0.5; } - if ( count > 0 ) - { - if ( !self.watchingactiveclient ) - { - self maps/mp/gametypes/_hud_message::clearshoutcasterwaitingmessage(); - self freezecontrols( 0 ); - } - self.watchingactiveclient = 1; - } - else - { - if ( self.watchingactiveclient ) - { - [[ level.onspawnspectator ]](); - self freezecontrols( 1 ); - self maps/mp/gametypes/_hud_message::setshoutcasterwaitingmessage(); - } - self.watchingactiveclient = 0; - } - wait 0,5; } } -callback_playermigrated() +callback_playermigrated() //checked matches cerberus output { + /* /# println( "Player " + self.name + " finished migrating at time " + getTime() ); #/ + */ if ( isDefined( self.connected ) && self.connected ) { self maps/mp/gametypes/_globallogic_ui::updateobjectivetext(); @@ -510,14 +514,16 @@ callback_playermigrated() level.hostmigrationreturnedplayercount++; if ( level.hostmigrationreturnedplayercount >= ( ( level.players.size * 2 ) / 3 ) ) { + /* /# println( "2/3 of players have finished migrating" ); #/ + */ level notify( "hostmigration_enoughplayers" ); } } -callback_playerdisconnect() +callback_playerdisconnect() //checked changed to match cerberus output { profilelog_begintiming( 5, "ship" ); if ( game[ "state" ] != "postgame" && !level.gameended ) @@ -545,8 +551,7 @@ callback_playerdisconnect() lpguid = self getguid(); logprint( "Q;" + lpguid + ";" + lpselfnum + ";" + self.name + "\n" ); self maps/mp/_gamerep::gamerepplayerdisconnected(); - entry = 0; - while ( entry < level.players.size ) + for ( entry = 0; entry < level.players.size; entry++ ) { if ( level.players[ entry ] == self ) { @@ -555,33 +560,32 @@ callback_playerdisconnect() level.players[ entry ] = level.players[ entry + 1 ]; entry++; } + level.players[ entry ] = undefined; break; } - else - { - entry++; - } } - entry = 0; - while ( entry < level.players.size ) + for ( entry = 0; entry < level.players.size; entry++ ) { if ( isDefined( level.players[ entry ].pers[ "killed_players" ][ self.name ] ) ) { + level.players[ entry ].pers[ "killed_players" ][ self.name ] = undefined; } if ( isDefined( level.players[ entry ].killedplayerscurrent[ self.name ] ) ) { + level.players[ entry ].killedplayerscurrent[ self.name ] = undefined; } if ( isDefined( level.players[ entry ].pers[ "killed_by" ][ self.name ] ) ) { + level.players[ entry ].pers[ "killed_by" ][ self.name ] = undefined; } if ( isDefined( level.players[ entry ].pers[ "nemesis_tracking" ][ self.name ] ) ) { + level.players[ entry ].pers[ "nemesis_tracking" ][ self.name ] = undefined; } if ( level.players[ entry ].pers[ "nemesis_name" ] == self.name ) { level.players[ entry ] choosenextbestnemesis(); } - entry++; } if ( level.gameended ) { @@ -591,7 +595,7 @@ callback_playerdisconnect() profilelog_endtiming( 5, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); } -callback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit ) +callback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit ) //checked matches cerberus output { hit = 1; if ( level.teambased && self.team == eattacker.team ) @@ -604,16 +608,15 @@ callback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shi self finishmeleehit( eattacker, sweapon, vorigin, vdir, boneindex, shieldhit, hit ); } -choosenextbestnemesis() +choosenextbestnemesis() //checked changed to match cerberus output { nemesisarray = self.pers[ "nemesis_tracking" ]; nemesisarraykeys = getarraykeys( nemesisarray ); nemesisamount = 0; nemesisname = ""; - while ( nemesisarraykeys.size > 0 ) + if ( nemesisarraykeys.size > 0 ) { - i = 0; - while ( i < nemesisarraykeys.size ) + for ( i = 0; i < nemesisarraykeys.size; i++ ) { nemesisarraykey = nemesisarraykeys[ i ]; if ( nemesisarray[ nemesisarraykey ] > nemesisamount ) @@ -621,14 +624,12 @@ choosenextbestnemesis() nemesisname = nemesisarraykey; nemesisamount = nemesisarray[ nemesisarraykey ]; } - i++; } } self.pers[ "nemesis_name" ] = nemesisname; if ( nemesisname != "" ) { - playerindex = 0; - while ( playerindex < level.players.size ) + for ( playerindex = 0; playerindex < level.players.size; playerindex++ ) { if ( level.players[ playerindex ].name == nemesisname ) { @@ -639,19 +640,17 @@ choosenextbestnemesis() self.pers[ "nemesis_xuid" ] = nemesisplayer getxuid( 1 ); break; } - else - { - playerindex++; - } } } - else self.pers[ "nemesis_xuid" ] = ""; + else + { + self.pers[ "nemesis_xuid" ] = ""; + } } -removeplayerondisconnect() +removeplayerondisconnect() //checked changed to match cerberus output { - entry = 0; - while ( entry < level.players.size ) + for ( entry = 0; entry < level.players.size; entry++ ) { if ( level.players[ entry ] == self ) { @@ -660,16 +659,13 @@ removeplayerondisconnect() level.players[ entry ] = level.players[ entry + 1 ]; entry++; } - return; - } - else - { - entry++; + level.players[ entry ] = undefined; + break; } } } -custom_gamemodes_modified_damage( victim, eattacker, idamage, smeansofdeath, sweapon, einflictor, shitloc ) +custom_gamemodes_modified_damage( victim, eattacker, idamage, smeansofdeath, sweapon, einflictor, shitloc ) //matches cerberus output { if ( level.onlinegame && !sessionmodeisprivate() ) { @@ -686,7 +682,7 @@ custom_gamemodes_modified_damage( victim, eattacker, idamage, smeansofdeath, swe return idamage; } -figureoutattacker( eattacker ) +figureoutattacker( eattacker ) //checked changed to match cerberus output { if ( isDefined( eattacker ) ) { @@ -706,18 +702,15 @@ figureoutattacker( eattacker ) { eattacker = eattacker.owner; } - else + else if ( eattacker.classname == "auto_turret" && isDefined( eattacker.owner ) ) { - if ( eattacker.classname == "auto_turret" && isDefined( eattacker.owner ) ) - { - eattacker = eattacker.owner; - } + eattacker = eattacker.owner; } } return eattacker; } -figureoutweapon( sweapon, einflictor ) +figureoutweapon( sweapon, einflictor ) //checked changed to match cerberus output { if ( sweapon == "none" && isDefined( einflictor ) ) { @@ -725,18 +718,15 @@ figureoutweapon( sweapon, einflictor ) { sweapon = "explodable_barrel_mp"; } - else + else if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) { - if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) - { - sweapon = "destructible_car_mp"; - } + sweapon = "destructible_car_mp"; } } return sweapon; } -isplayerimmunetokillstreak( eattacker, sweapon ) +isplayerimmunetokillstreak( eattacker, sweapon ) //checked matches cerberus output { if ( level.hardcoremode ) { @@ -757,7 +747,7 @@ isplayerimmunetokillstreak( eattacker, sweapon ) return 1; } -callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) //checked partially changed to match beta dump changed at own discretion { profilelog_begintiming( 6, "ship" ); if ( game[ "state" ] == "postgame" ) @@ -780,7 +770,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { return; } - if ( sweapon != "ai_tank_drone_gun_mp" && sweapon == "ai_tank_drone_rocket_mp" && !level.hardcoremode ) + if ( sweapon == "ai_tank_drone_gun_mp" || sweapon == "ai_tank_drone_rocket_mp" && !level.hardcoremode ) { if ( isDefined( eattacker ) && eattacker == self ) { @@ -800,7 +790,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { return; } - self notify( "emp_grenaded" ); + self notify( "emp_grenaded", eattacker ); } if ( isDefined( eattacker ) ) { @@ -854,12 +844,9 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { return; } - else + else if ( smeansofdeath == "MOD_HEAD_SHOT" ) { - if ( smeansofdeath == "MOD_HEAD_SHOT" ) - { - idamage = 150; - } + idamage = 150; } } if ( self maps/mp/_vehicles::player_is_occupant_invulnerable( smeansofdeath ) ) @@ -876,9 +863,13 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { self thread maps/mp/gametypes/_battlechatter_mp::perkspecificbattlechatter( "deepimpact", 1 ); } - if ( isplayer( eattacker ) ) + if ( isplayer( eattacker ) && self isenemyplayer( eattacker ) == 0 ) { - attackerishittingteammate = self isenemyplayer( eattacker ) == 0; + attackerishittingteammate = 1; + } + else + { + attackerishittingteammate = 0; } if ( shitloc == "riotshield" ) { @@ -886,7 +877,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { return; } - if ( smeansofdeath != "MOD_PISTOL_BULLET" && smeansofdeath == "MOD_RIFLE_BULLET" && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) && !attackerishittingteammate ) + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) && !attackerishittingteammate ) { if ( self.hasriotshieldequipped ) { @@ -935,9 +926,9 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s } if ( idflags & level.idflags_no_protection ) { - if ( isDefined( einflictor ) || smeansofdeath == "MOD_GAS" && maps/mp/gametypes/_class::isexplosivedamage( undefined, smeansofdeath ) ) + if ( ( smeansofdeath == "MOD_GAS" || maps/mp/gametypes/_class::isexplosivedamage( undefined, smeansofdeath ) ) && isDefined( einflictor ) ) { - if ( einflictor.classname != "grenade" && sweapon == "tabun_gas_mp" && ( self.lastspawntime + 3500 ) > getTime() && distancesquared( einflictor.origin, self.lastspawnpoint.origin ) < 62500 ) + if ( ( einflictor.classname == "grenade" || sweapon == "tabun_gas_mp" ) && ( self.lastspawntime + 3500 ) > getTime() && distancesquared( einflictor.origin, self.lastspawnpoint.origin ) < 62500 ) { return; } @@ -959,7 +950,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s isfrag = sweapon == "frag_grenade_mp"; if ( isDefined( eattacker ) && eattacker != self ) { - if ( isDefined( eattacker ) && isDefined( einflictor.owner ) && sweapon != "satchel_charge_mp" || sweapon == "claymore_mp" && sweapon == "bouncingbetty_mp" ) + if ( ( sweapon == "satchel_charge_mp" || sweapon == "claymore_mp" ) && isDefined( eattacker ) && isDefined( einflictor.owner ) || sweapon == "bouncingbetty_mp" && isDefined( eattacker ) && isDefined( einflictor.owner ) ) { self.explosiveinfo[ "originalOwnerKill" ] = einflictor.owner == self; self.explosiveinfo[ "damageExplosiveKill" ] = isDefined( einflictor.wasdamaged ); @@ -968,7 +959,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s self.explosiveinfo[ "bulletPenetrationKill" ] = isDefined( einflictor.wasdamagedfrombulletpenetration ); self.explosiveinfo[ "cookedKill" ] = 0; } - if ( sweapon != "sticky_grenade_mp" && sweapon == "explosive_bolt_mp" && isDefined( einflictor ) && isDefined( einflictor.stucktoplayer ) ) + if ( sweapon == "sticky_grenade_mp" || sweapon == "explosive_bolt_mp" && isDefined( einflictor ) && isDefined( einflictor.stucktoplayer ) ) { self.explosiveinfo[ "stuckToPlayer" ] = einflictor.stucktoplayer; } @@ -1017,7 +1008,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s pixmarker( "BEGIN: PlayerDamage player" ); if ( level.friendlyfire == 0 ) { - if ( sweapon != "artillery_mp" && sweapon != "airstrike_mp" || sweapon == "napalm_mp" && sweapon == "mortar_mp" ) + if ( sweapon == "artillery_mp" || sweapon == "airstrike_mp" || sweapon == "napalm_mp" || sweapon == "mortar_mp" ) { self damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ); } @@ -1044,7 +1035,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s } else if ( level.friendlyfire == 2 && isalive( eattacker ) ) { - idamage = int( idamage * 0,5 ); + idamage = int( idamage * 0.5 ); if ( idamage < 1 ) { idamage = 1; @@ -1054,22 +1045,19 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s eattacker finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); eattacker.friendlydamage = undefined; } - else + else if ( level.friendlyfire == 3 && isalive( eattacker ) ) { - if ( level.friendlyfire == 3 && isalive( eattacker ) ) + idamage = int( idamage * 0.5 ); + if ( idamage < 1 ) { - idamage = int( idamage * 0,5 ); - if ( idamage < 1 ) - { - idamage = 1; - } - self.lastdamagewasfromenemy = 0; - eattacker.lastdamagewasfromenemy = 0; - self finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); - eattacker.friendlydamage = 1; - eattacker finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); - eattacker.friendlydamage = undefined; + idamage = 1; } + self.lastdamagewasfromenemy = 0; + eattacker.lastdamagewasfromenemy = 0; + self finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + eattacker.friendlydamage = 1; + eattacker finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + eattacker.friendlydamage = undefined; } friendly = 1; pixmarker( "END: PlayerDamage player" ); @@ -1093,7 +1081,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { eattacker thread maps/mp/gametypes/_weapons::checkhit( sweapon ); } - if ( smeansofdeath != "MOD_GRENADE" && smeansofdeath == "MOD_GRENADE_SPLASH" && isDefined( einflictor.iscooked ) ) + if ( ( smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" ) && isDefined( einflictor.iscooked ) ) { self.wascooked = getTime(); } @@ -1101,9 +1089,13 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s { self.wascooked = undefined; } - if ( isDefined( eattacker ) ) + if ( isDefined( eattacker ) && eattacker != self ) { - self.lastdamagewasfromenemy = eattacker != self; + self.lastdamagewasfromenemy = 1; + } + else + { + self.lastdamagewasfromenemy = 0; } if ( self.lastdamagewasfromenemy ) { @@ -1140,12 +1132,14 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s level.usestartspawns = 0; } pixbeginevent( "PlayerDamage log" ); + /* /# if ( getDvarInt( "g_debugDamage" ) ) { println( "client:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc ); #/ } + */ if ( self.sessionstate != "dead" ) { lpselfnum = self getentitynumber(); @@ -1177,7 +1171,7 @@ callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, s profilelog_endtiming( 6, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); } -resetattackerlist() +resetattackerlist() //checked matches cerberus output { self.attackers = []; self.attackerdata = []; @@ -1185,7 +1179,7 @@ resetattackerlist() self.firsttimedamaged = 0; } -dodamagefeedback( sweapon, einflictor, idamage, smeansofdeath ) +dodamagefeedback( sweapon, einflictor, idamage, smeansofdeath ) //checked matches cerberus output { if ( !isDefined( sweapon ) ) { @@ -1208,7 +1202,7 @@ dodamagefeedback( sweapon, einflictor, idamage, smeansofdeath ) return 1; } -istacticalhitmarker( sweapon, smeansofdeath, idamage ) +istacticalhitmarker( sweapon, smeansofdeath, idamage ) //checked changed to match cerberus output { if ( isgrenade( sweapon ) ) { @@ -1219,18 +1213,15 @@ istacticalhitmarker( sweapon, smeansofdeath, idamage ) return 1; } } - else + else if ( idamage == 1 ) { - if ( idamage == 1 ) - { - return 1; - } + return 1; } } return 0; } -doperkfeedback( player, sweapon, smeansofdeath, einflictor ) +doperkfeedback( player, sweapon, smeansofdeath, einflictor ) //checked changed to match cerberus output { perkfeedback = undefined; hastacticalmask = maps/mp/gametypes/_class::hastacticalmask( player ); @@ -1241,17 +1232,14 @@ doperkfeedback( player, sweapon, smeansofdeath, einflictor ) { perkfeedback = "tacticalMask"; } - else + else if ( isexplosivedamage && hasflakjacket && !isaikillstreakdamage( sweapon, einflictor ) ) { - if ( isexplosivedamage && hasflakjacket && !isaikillstreakdamage( sweapon, einflictor ) ) - { - perkfeedback = "flakjacket"; - } + perkfeedback = "flakjacket"; } return perkfeedback; } -isaikillstreakdamage( sweapon, einflictor ) +isaikillstreakdamage( sweapon, einflictor ) //checked matches cerberus output { switch( sweapon ) { @@ -1273,26 +1261,28 @@ isaikillstreakdamage( sweapon, einflictor ) return 0; } -finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) //checked matches cerberus output dvar taken from beta dump { pixbeginevent( "finishPlayerDamageWrapper" ); if ( !level.console && idflags & level.idflags_penetration && isplayer( eattacker ) ) { + /* /# println( "penetrated:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc ); #/ + */ eattacker addplayerstat( "penetration_shots", 1 ); } self finishplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); - if ( getDvar( #"C8077F47" ) != "" ) + if ( getDvar( "scr_csmode" ) != "" ) { - self shellshock( "damage_mp", 0,2 ); + self shellshock( "damage_mp", 0.2 ); } self damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ); pixendevent(); } -allowedassistweapon( weapon ) +allowedassistweapon( weapon ) //checked matches cerberus output { if ( !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( weapon ) ) { @@ -1305,7 +1295,7 @@ allowedassistweapon( weapon ) return 0; } -playerkilled_killstreaks( attacker, sweapon ) +playerkilled_killstreaks( attacker, sweapon ) //checked matches cerberus output { if ( !isDefined( self.switching_teams ) ) { @@ -1358,9 +1348,44 @@ playerkilled_killstreaks( attacker, sweapon ) } } -playerkilled_weaponstats( attacker, sweapon, smeansofdeath, wasinlaststand, lastweaponbeforedroppingintolaststand, inflictor ) +playerkilled_weaponstats( attacker, sweapon, smeansofdeath, wasinlaststand, lastweaponbeforedroppingintolaststand, inflictor ) //checked partially changed to match cerberus output see info.md { - if ( isplayer( attacker ) && attacker != self || !level.teambased && level.teambased && self.team != attacker.team ) + if ( level.teambased && self.team != attacker.team && isplayer( attacker ) && attacker != self ) + { + self addweaponstat( sweapon, "deaths", 1 ); + if ( wasinlaststand && isDefined( lastweaponbeforedroppingintolaststand ) ) + { + weaponname = lastweaponbeforedroppingintolaststand; + } + else + { + weaponname = self.lastdroppableweapon; + } + if ( isDefined( weaponname ) ) + { + self addweaponstat( weaponname, "deathsDuringUse", 1 ); + } + if ( smeansofdeath != "MOD_FALLING" ) + { + if ( sweapon == "explosive_bolt_mp" && isDefined( inflictor ) && isDefined( inflictor.ownerweaponatlaunch ) && inflictor.owneradsatlaunch ) + { + attacker addweaponstat( inflictor.ownerweaponatlaunch, "kills", 1, attacker.class_num, 1 ); + } + else + { + attacker addweaponstat( sweapon, "kills", 1, attacker.class_num ); + } + } + if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + attacker addweaponstat( sweapon, "headshots", 1 ); + } + if ( smeansofdeath == "MOD_PROJECTILE" ) + { + attacker addweaponstat( sweapon, "direct_hit_kills", 1 ); + } + } + else if ( !level.teambased && isplayer( attacker ) && attacker != self ) { self addweaponstat( sweapon, "deaths", 1 ); if ( wasinlaststand && isDefined( lastweaponbeforedroppingintolaststand ) ) @@ -1397,9 +1422,9 @@ playerkilled_weaponstats( attacker, sweapon, smeansofdeath, wasinlaststand, last } } -playerkilled_obituary( attacker, einflictor, sweapon, smeansofdeath ) +playerkilled_obituary( attacker, einflictor, sweapon, smeansofdeath ) //checked partially changed to match beta dump { - if ( isplayer( attacker ) || self isenemyplayer( attacker ) == 0 && isDefined( sweapon ) && maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) ) + if ( isplayer( attacker ) || self isenemyplayer( attacker ) == 0 || isDefined( sweapon ) && maps/mp/killstreaks/_killstreaks::iskillstreakweapon( sweapon ) ) { level notify( "reset_obituary_count" ); level.lastobituaryplayercount = 0; @@ -1439,7 +1464,7 @@ playerkilled_obituary( attacker, einflictor, sweapon, smeansofdeath ) } } -playerkilled_suicide( einflictor, attacker, smeansofdeath, sweapon, shitloc ) +playerkilled_suicide( einflictor, attacker, smeansofdeath, sweapon, shitloc ) //checked matches cerberus output { awardassists = 0; if ( isDefined( self.switching_teams ) ) @@ -1494,7 +1519,7 @@ playerkilled_suicide( einflictor, attacker, smeansofdeath, sweapon, shitloc ) return awardassists; } -playerkilled_teamkill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) +playerkilled_teamkill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) //checked matches cerberus output { thread maps/mp/_scoreevents::processscoreevent( "team_kill", attacker ); self.teamkilled = 1; @@ -1544,18 +1569,18 @@ playerkilled_teamkill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) } } -wait_and_suicide() +wait_and_suicide() //checked matches cerberus output { self endon( "disconnect" ); self freezecontrolswrapper( 1 ); - wait 0,25; + wait 0.25; self suicide(); } -playerkilled_awardassists( einflictor, attacker, sweapon, lpattackteam ) +playerkilled_awardassists( einflictor, attacker, sweapon, lpattackteam ) //checked partially changed to match cerberus output see info.md { pixbeginevent( "PlayerKilled assists" ); - while ( isDefined( self.attackers ) ) + if ( isDefined( self.attackers ) ) { j = 0; while ( j < self.attackers.size ) @@ -1566,21 +1591,18 @@ playerkilled_awardassists( einflictor, attacker, sweapon, lpattackteam ) j++; continue; } - else if ( player == attacker ) + if ( player == attacker ) { j++; continue; } - else if ( player.team != lpattackteam ) + if ( player.team != lpattackteam ) { j++; continue; } - else - { - damage_done = self.attackerdamage[ player.clientid ].damage; - player thread maps/mp/gametypes/_globallogic_score::processassist( self, damage_done, self.attackerdamage[ player.clientid ].weapon ); - } + damage_done = self.attackerdamage[ player.clientid ].damage; + player thread maps/mp/gametypes/_globallogic_score::processassist( self, damage_done, self.attackerdamage[ player.clientid ].weapon ); j++; } } @@ -1598,14 +1620,14 @@ playerkilled_awardassists( einflictor, attacker, sweapon, lpattackteam ) pixendevent(); } -playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) +playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) //checked changed to match cerberus output { maps/mp/gametypes/_globallogic_score::inctotalkills( attacker.team ); attacker thread maps/mp/gametypes/_globallogic_score::givekillstats( smeansofdeath, sweapon, self ); if ( isalive( attacker ) ) { pixbeginevent( "killstreak" ); - if ( isDefined( einflictor ) || !isDefined( einflictor.requireddeathcount ) && attacker.deathcount == einflictor.requireddeathcount ) + if ( !isDefined( einflictor ) || !isDefined( einflictor.requireddeathcount ) || attacker.deathcount == einflictor.requireddeathcount ) { shouldgivekillstreak = maps/mp/killstreaks/_killstreaks::shouldgivekillstreak( sweapon ); if ( shouldgivekillstreak ) @@ -1689,7 +1711,7 @@ playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) { primaryweaponnum = attacker getloadoutitem( attacker.class_num, "primary" ); secondaryweaponnum = attacker getloadoutitem( attacker.class_num, "secondary" ); - if ( primaryweaponnum && level.tbl_weaponids[ primaryweaponnum ][ "reference" ] == "riotshield" || !secondaryweaponnum && secondaryweaponnum && level.tbl_weaponids[ secondaryweaponnum ][ "reference" ] == "riotshield" && !primaryweaponnum ) + if ( primaryweaponnum && level.tbl_weaponids[ primaryweaponnum ][ "reference" ] == "riotshield" && !secondaryweaponnum || secondaryweaponnum && level.tbl_weaponids[ secondaryweaponnum ][ "reference" ] == "riotshield" && !primaryweaponnum ) { attacker addweaponstat( sweapon, "NoLethalKills", 1 ); } @@ -1724,7 +1746,7 @@ playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ) level thread playkillbattlechatter( attacker, sweapon, self ); } -callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked partially changed to match cerberus output changed at own discretion { profilelog_begintiming( 7, "ship" ); self endon( "spawned" ); @@ -1769,10 +1791,12 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd if ( isDefined( self.uselaststandparams ) ) { self.uselaststandparams = undefined; + /* /# assert( isDefined( self.laststandparams ) ); #/ - if ( !level.teambased || isDefined( attacker ) && isplayer( attacker ) || attacker.team != self.team && attacker == self ) + */ + if ( !level.teambased || !isDefined( attacker ) || !isplayer( attacker ) || attacker.team != self.team || attacker == self ) { einflictor = self.laststandparams.einflictor; attacker = self.laststandparams.attacker; @@ -1799,9 +1823,9 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd bestplayerweapon = undefined; obituaryweapon = sweapon; assistedsuicide = 0; - if ( isDefined( attacker ) && attacker.classname != "trigger_hurt" && attacker.classname != "worldspawn" && isDefined( attacker.ismagicbullet ) && attacker.ismagicbullet != 1 && attacker == self && isDefined( self.attackers ) ) + if ( !isDefined( attacker ) || attacker.classname == "trigger_hurt" || attacker.classname == "worldspawn" || isDefined( attacker.ismagicbullet ) && attacker.ismagicbullet != 1 || attacker == self && isDefined( self.attackers ) ) { - while ( !isDefined( bestplayer ) ) + if ( !isDefined( bestplayer ) ) { i = 0; while ( i < self.attackers.size ) @@ -1812,48 +1836,39 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd i++; continue; } - else if ( !isDefined( self.attackerdamage[ player.clientid ] ) || !isDefined( self.attackerdamage[ player.clientid ].damage ) ) + if ( !isDefined( self.attackerdamage[ player.clientid ] ) || !isDefined( self.attackerdamage[ player.clientid ].damage ) ) { i++; continue; } - else + if ( player == self || level.teambased && player.team == self.team ) { - if ( player == self || level.teambased && player.team == self.team ) - { - i++; - continue; - } - else - { - if ( ( self.attackerdamage[ player.clientid ].lasttimedamaged + 2500 ) < getTime() ) - { - i++; - continue; - } - else if ( !allowedassistweapon( self.attackerdamage[ player.clientid ].weapon ) ) - { - i++; - continue; - } - else if ( self.attackerdamage[ player.clientid ].damage > 1 && !isDefined( bestplayer ) ) - { - bestplayer = player; - bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; - bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; - i++; - continue; - } - else - { - if ( isDefined( bestplayer ) && self.attackerdamage[ player.clientid ].damage > self.attackerdamage[ bestplayer.clientid ].damage ) - { - bestplayer = player; - bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; - bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; - } - } - } + i++; + continue; + } + if ( ( self.attackerdamage[ player.clientid ].lasttimedamaged + 2500 ) < getTime() ) + { + i++; + continue; + } + if ( !allowedassistweapon( self.attackerdamage[ player.clientid ].weapon ) ) + { + i++; + continue; + } + if ( self.attackerdamage[ player.clientid ].damage > 1 && !isDefined( bestplayer ) ) + { + bestplayer = player; + bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; + bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; + i++; + continue; + } + if ( isDefined( bestplayer ) && self.attackerdamage[ player.clientid ].damage > self.attackerdamage[ bestplayer.clientid ].damage ) + { + bestplayer = player; + bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; + bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; } i++; } @@ -1877,6 +1892,7 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd } if ( isplayer( attacker ) ) { + attacker.damagedplayers[ self.clientid ] = undefined; } self.deathtime = getTime(); attacker = updateattacker( attacker, sweapon ); @@ -1898,11 +1914,14 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd maps/mp/gametypes/_spawnlogic::deathoccured( self, attacker ); self.sessionstate = "dead"; self.statusicon = "hud_status_dead"; + self.pers[ "weapon" ] = undefined; self.killedplayerscurrent = []; self.deathcount++; + /* /# println( "players(" + self.clientid + ") death count ++: " + self.deathcount ); #/ + */ self playerkilled_killstreaks( attacker, sweapon ); lpselfnum = self getentitynumber(); lpselfname = self.name; @@ -1939,26 +1958,23 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd if ( level.teambased && self.team == attacker.team && smeansofdeath == "MOD_GRENADE" && level.friendlyfire == 0 ) { } + else if ( level.teambased && self.team == attacker.team ) + { + wasteamkill = 1; + self playerkilled_teamkill( einflictor, attacker, smeansofdeath, sweapon, shitloc ); + } else { - if ( level.teambased && self.team == attacker.team ) + self playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ); + if ( level.teambased ) { - wasteamkill = 1; - self playerkilled_teamkill( einflictor, attacker, smeansofdeath, sweapon, shitloc ); - } - else - { - self playerkilled_kill( einflictor, attacker, smeansofdeath, sweapon, shitloc ); - if ( level.teambased ) - { - awardassists = 1; - } + awardassists = 1; } } pixendevent(); } } - else if ( isDefined( attacker ) || attacker.classname == "trigger_hurt" && attacker.classname == "worldspawn" ) + else if ( isDefined( attacker ) && attacker.classname == "trigger_hurt" || attacker.classname == "worldspawn" ) { dokillcam = 0; lpattacknum = -1; @@ -2027,7 +2043,7 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd pixbeginevent( "PlayerKilled post constants" ); self.lastattacker = attacker; self.lastdeathpos = self.origin; - if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self || !level.teambased && attacker.team != self.team ) + if ( ( !level.teambased || attacker.team != self.team ) && isDefined( attacker ) && isplayer( attacker ) && attacker != self ) { self thread maps/mp/_challenges::playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, shitloc, attackerstance ); } @@ -2123,11 +2139,9 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd self.joining_team = undefined; self.leaving_team = undefined; self thread [[ level.onplayerkilled ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); - icb = 0; - while ( icb < level.onplayerkilledextraunthreadedcbs.size ) + for ( icb = 0; icb < level.onplayerkilledextraunthreadedcbs.size; icb++ ) { self [[ level.onplayerkilledextraunthreadedcbs[ icb ] ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); - icb++; } self.wantsafespawn = 0; perks = []; @@ -2141,7 +2155,7 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd { level thread maps/mp/gametypes/_killcam::recordkillcamsettings( lpattacknum, self getentitynumber(), sweapon, self.deathtime, deathtimeoffset, psoffsettime, killcamentityindex, killcamentitystarttime, perks, killstreaks, attacker ); } - wait 0,25; + wait 0.25; weaponclass = getweaponclass( sweapon ); if ( weaponclass == "weapon_sniper" ) { @@ -2153,15 +2167,16 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd } self.cancelkillcam = 0; self thread maps/mp/gametypes/_killcam::cancelkillcamonuse(); - defaultplayerdeathwatchtime = 1,75; + defaultplayerdeathwatchtime = 1.75; if ( isDefined( level.overrideplayerdeathwatchtimer ) ) { defaultplayerdeathwatchtime = [[ level.overrideplayerdeathwatchtimer ]]( defaultplayerdeathwatchtime ); } maps/mp/gametypes/_globallogic_utils::waitfortimeornotifies( defaultplayerdeathwatchtime ); self notify( "death_delay_finished" ); + /* /# - if ( getDvarInt( #"C1849218" ) != 0 ) + if ( getDvarInt( "scr_forcekillcam" ) != 0 ) { dokillcam = 1; if ( lpattacknum < 0 ) @@ -2170,6 +2185,7 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd #/ } } + */ if ( hit_by_train ) { if ( killcamentitystarttime > ( self.deathtime - 2500 ) ) @@ -2184,11 +2200,22 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd self.respawntimerstarttime = getTime(); if ( !self.cancelkillcam && dokillcam && level.killcam ) { - if ( level.numliveslivesleft = self.pers[ "lives" ]; - timeuntilspawn = maps/mp/gametypes/_globallogic_spawn::timeuntilspawn( 1 ); - && livesleft && timeuntilspawn <= 0 ) + if ( !level.numLives && !self.pers[ "lives" ] ) { - willrespawnimmediately = !level.playerqueuedrespawn; + livesleft = 0; + } + else + { + livesleft = 1; + } + timeuntilspawn = maps/mp/gametypes/_globallogic_spawn::timeuntilspawn( 1 ); + if ( !level.playerqueuedrespawn && livesleft && timeuntilspawn <= 0 ) + { + willrespawnimmediately = 1; + } + else + { + willrespawnimmediately = 0; } self maps/mp/gametypes/_killcam::killcam( lpattacknum, self getentitynumber(), killcamentity, killcamentityindex, killcamentitystarttime, sweapon, self.deathtime, deathtimeoffset, psoffsettime, willrespawnimmediately, maps/mp/gametypes/_globallogic_utils::timeuntilroundend(), perks, killstreaks, attacker ); } @@ -2221,7 +2248,7 @@ callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vd } } -updateglobalbotkilledcounter() +updateglobalbotkilledcounter() //checked matches cerberus output { if ( isDefined( self.pers[ "isBot" ] ) ) { @@ -2229,7 +2256,7 @@ updateglobalbotkilledcounter() } } -waittillkillstreakdone() +waittillkillstreakdone() //checked matches cerberus output { if ( isDefined( self.killstreak_waitamount ) ) { @@ -2237,14 +2264,14 @@ waittillkillstreakdone() waittime = self.killstreak_waitamount * 1000; while ( getTime() < ( starttime + waittime ) && isDefined( self.killstreak_waitamount ) ) { - wait 0,1; + wait 0.1; } wait 2; self.killstreak_waitamount = undefined; } } -suicidekick() +suicidekick() //checked matches cerberus output { self maps/mp/gametypes/_globallogic_score::incpersstat( "sessionbans", 1 ); self endon( "disconnect" ); @@ -2254,7 +2281,7 @@ suicidekick() maps/mp/gametypes/_globallogic_audio::leaderdialog( "kicked" ); } -teamkillkick() +teamkillkick() //checked matches cerberus output { self maps/mp/gametypes/_globallogic_score::incpersstat( "sessionbans", 1 ); self endon( "disconnect" ); @@ -2277,7 +2304,7 @@ teamkillkick() maps/mp/gametypes/_globallogic_audio::leaderdialog( "kicked" ); } -teamkilldelay() +teamkilldelay() //checked matches cerberus output { teamkills = self.pers[ "teamkills_nostats" ]; if ( level.minimumallowedteamkills < 0 || teamkills <= level.minimumallowedteamkills ) @@ -2288,7 +2315,7 @@ teamkilldelay() return level.teamkillspawndelay * exceeded; } -shouldteamkillkick( teamkilldelay ) +shouldteamkillkick( teamkilldelay ) //checked matches cerberus output { if ( teamkilldelay && level.minimumallowedteamkills >= 0 ) { @@ -2304,7 +2331,7 @@ shouldteamkillkick( teamkilldelay ) return 0; } -reduceteamkillsovertime() +reduceteamkillsovertime() //checked changed to match cerberus output { timeperoneteamkillreduction = 20; reductionpersecond = 1 / timeperoneteamkillreduction; @@ -2316,17 +2343,14 @@ reduceteamkillsovertime() if ( self.pers[ "teamkills_nostats" ] < level.minimumallowedteamkills ) { self.pers[ "teamkills_nostats" ] = level.minimumallowedteamkills; - return; + break; } } - else - { - wait 1; - } + wait 1; } } -ignoreteamkills( sweapon, smeansofdeath ) +ignoreteamkills( sweapon, smeansofdeath ) //checked matches cerberus output { if ( sessionmodeiszombiesgame() ) { @@ -2347,17 +2371,17 @@ ignoreteamkills( sweapon, smeansofdeath ) return 0; } -callback_playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +callback_playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked matches cerberus output { } -damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ) +damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ) //checked matches cerberus output { self thread maps/mp/gametypes/_weapons::onweapondamage( eattacker, einflictor, sweapon, smeansofdeath, idamage ); self playrumbleonentity( "damage_heavy" ); } -createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_jib, body ) +createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_jib, body ) //checked changed to match cerberus output { if ( smeansofdeath == "MOD_HIT_BY_OBJECT" && self getstance() == "prone" ) { @@ -2372,7 +2396,7 @@ createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, { return; } - if ( !ragdoll_jib && !self isonladder() && !self ismantling() || smeansofdeath == "MOD_CRUSH" && smeansofdeath == "MOD_HIT_BY_OBJECT" ) + if ( ragdoll_jib || self isonladder() || self ismantling() || smeansofdeath == "MOD_CRUSH" || smeansofdeath == "MOD_HIT_BY_OBJECT" ) { body startragdoll(); } @@ -2403,7 +2427,7 @@ createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, } } -is_explosive_ragdoll( weapon, inflictor ) +is_explosive_ragdoll( weapon, inflictor ) //checked matches cerberus output { if ( !isDefined( weapon ) ) { @@ -2426,7 +2450,7 @@ is_explosive_ragdoll( weapon, inflictor ) return 0; } -start_explosive_ragdoll( dir, weapon ) +start_explosive_ragdoll( dir, weapon ) //checked partially changed to match cerberus output see info.md { if ( !isDefined( self ) ) { @@ -2435,7 +2459,7 @@ start_explosive_ragdoll( dir, weapon ) x = randomintrange( 50, 100 ); y = randomintrange( 50, 100 ); z = randomintrange( 10, 20 ); - if ( isDefined( weapon ) || weapon == "sticky_grenade_mp" && weapon == "explosive_bolt_mp" ) + if ( ( weapon == "sticky_grenade_mp" || weapon == "explosive_bolt_mp" ) && isDefined( weapon ) ) { if ( isDefined( dir ) && lengthsquared( dir ) > 0 ) { @@ -2443,31 +2467,28 @@ start_explosive_ragdoll( dir, weapon ) y = dir[ 1 ] * y; } } - else + else if ( cointoss() ) { - if ( cointoss() ) - { - x *= -1; - } - if ( cointoss() ) - { - y *= -1; - } + x *= -1; + } + if ( cointoss() ) + { + y *= -1; } self startragdoll(); self launchragdoll( ( x, y, z ) ); } -notifyconnecting() +notifyconnecting() //checked changed to match cerberus output { waittillframeend; if ( isDefined( self ) ) { - level notify( "connecting" ); + level notify( "connecting", self ); } } -delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) +delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) //checked changed to match cerberus output { if ( isDefined( ent ) ) { @@ -2486,13 +2507,13 @@ delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) explosionpos = ent.origin + ( 0, 0, maps/mp/gametypes/_globallogic_utils::gethitlocheight( shitloc ) ); explosionpos -= vdir * 20; explosionradius = 40; - explosionforce = 0,75; - if ( smeansofdeath != "MOD_IMPACT" && smeansofdeath != "MOD_EXPLOSIVE" && !issubstr( smeansofdeath, "MOD_GRENADE" ) && !issubstr( smeansofdeath, "MOD_PROJECTILE" ) || shitloc == "head" && shitloc == "helmet" ) + explosionforce = 0.75; + if ( smeansofdeath == "MOD_IMPACT" || smeansofdeath == "MOD_EXPLOSIVE" || !issubstr( smeansofdeath, "MOD_GRENADE" ) || !issubstr( smeansofdeath, "MOD_PROJECTILE" ) || shitloc == "head" || shitloc == "helmet" ) { - explosionforce = 2,5; + explosionforce = 2.5; } ent startragdoll( 1 ); - wait 0,05; + wait 0.05; if ( !isDefined( ent ) ) { return; @@ -2500,7 +2521,7 @@ delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) physicsexplosionsphere( explosionpos, explosionradius, explosionradius / 2, explosionforce ); return; } - wait 0,2; + wait 0.2; if ( !isDefined( ent ) ) { return; @@ -2510,7 +2531,7 @@ delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) return; } deathanim = ent getcorpseanim(); - startfrac = 0,35; + startfrac = 0.35; if ( animhasnotetrack( deathanim, "start_ragdoll" ) ) { times = getnotetracktimes( deathanim, "start_ragdoll" ); @@ -2527,11 +2548,13 @@ delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) } } -trackattackerdamage( eattacker, idamage, smeansofdeath, sweapon ) +trackattackerdamage( eattacker, idamage, smeansofdeath, sweapon ) //checked matches cerberus output { + /* /# assert( isplayer( eattacker ) ); #/ + */ if ( self.attackerdata.size == 0 ) { self.firsttimedamaged = getTime(); @@ -2563,7 +2586,7 @@ trackattackerdamage( eattacker, idamage, smeansofdeath, sweapon ) } } -giveinflictorownerassist( eattacker, einflictor, idamage, smeansofdeath, sweapon ) +giveinflictorownerassist( eattacker, einflictor, idamage, smeansofdeath, sweapon ) //checked matches cerberus output { if ( !isDefined( einflictor ) ) { @@ -2581,13 +2604,15 @@ giveinflictorownerassist( eattacker, einflictor, idamage, smeansofdeath, sweapon { return; } + /* /# assert( isplayer( einflictor.owner ) ); #/ + */ self trackattackerdamage( einflictor.owner, idamage, smeansofdeath, sweapon ); } -playerkilled_updatemeansofdeath( attacker, einflictor, sweapon, smeansofdeath, shitloc ) +playerkilled_updatemeansofdeath( attacker, einflictor, sweapon, smeansofdeath, shitloc ) //checked matches cerberus output { if ( maps/mp/gametypes/_globallogic_utils::isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) && isplayer( attacker ) ) { @@ -2615,7 +2640,7 @@ playerkilled_updatemeansofdeath( attacker, einflictor, sweapon, smeansofdeath, s return smeansofdeath; } -updateattacker( attacker, weapon ) +updateattacker( attacker, weapon ) //checked changed to match cerberus output { if ( isai( attacker ) && isDefined( attacker.script_owner ) ) { @@ -2626,12 +2651,12 @@ updateattacker( attacker, weapon ) } if ( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) { - attacker notify( "killed" ); + attacker notify( "killed", self ); attacker = attacker.owner; } if ( isai( attacker ) ) { - attacker notify( "killed" ); + attacker notify( "killed", self ); } if ( isDefined( self.capturinglastflag ) && self.capturinglastflag == 1 ) { @@ -2645,7 +2670,7 @@ updateattacker( attacker, weapon ) } attacker.planemortarbda++; } - if ( isDefined( attacker ) && isDefined( weapon ) || weapon == "straferun_rockets_mp" && weapon == "straferun_gun_mp" ) + if ( isDefined( attacker ) && isDefined( weapon ) && weapon == "straferun_rockets_mp" || weapon == "straferun_gun_mp" ) { if ( isDefined( attacker.straferunbda ) ) { @@ -2655,11 +2680,11 @@ updateattacker( attacker, weapon ) return attacker; } -updateinflictor( einflictor ) +updateinflictor( einflictor ) //checked changed to match cerberus output { if ( isDefined( einflictor ) && einflictor.classname == "script_vehicle" ) { - einflictor notify( "killed" ); + einflictor notify( "killed", self ); if ( isDefined( einflictor.bda ) ) { einflictor.bda++; @@ -2668,7 +2693,7 @@ updateinflictor( einflictor ) return einflictor; } -updateweapon( einflictor, sweapon ) +updateweapon( einflictor, sweapon ) //checked changed to match cerberus output { if ( sweapon == "none" && isDefined( einflictor ) ) { @@ -2676,18 +2701,15 @@ updateweapon( einflictor, sweapon ) { sweapon = "explodable_barrel_mp"; } - else + else if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) { - if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) - { - sweapon = "destructible_car_mp"; - } + sweapon = "destructible_car_mp"; } } return sweapon; } -getclosestkillcamentity( attacker, killcamentities, depth ) +getclosestkillcamentity( attacker, killcamentities, depth ) //checked partially changed to match cerberus output see info.md { if ( !isDefined( depth ) ) { @@ -2697,11 +2719,8 @@ getclosestkillcamentity( attacker, killcamentities, depth ) closestkillcamentindex = undefined; closestkillcamentdist = undefined; origin = undefined; - _a2977 = killcamentities; - killcamentindex = getFirstArrayKey( _a2977 ); - while ( isDefined( killcamentindex ) ) + foreach ( killcament in killcamentities ) { - killcament = _a2977[ killcamentindex ]; if ( killcament == attacker ) { } @@ -2720,7 +2739,6 @@ getclosestkillcamentity( attacker, killcamentities, depth ) closestkillcamentindex = killcamentindex; } } - killcamentindex = getNextArrayKey( _a2977, killcamentindex ); } if ( depth < 3 && isDefined( closestkillcament ) ) { @@ -2736,7 +2754,7 @@ getclosestkillcamentity( attacker, killcamentities, depth ) return closestkillcament; } -getkillcamentity( attacker, einflictor, sweapon ) +getkillcamentity( attacker, einflictor, sweapon ) //checked changed to match cerberus output { if ( !isDefined( einflictor ) ) { @@ -2753,15 +2771,12 @@ getkillcamentity( attacker, einflictor, sweapon ) return undefined; } } - else + else if ( isDefined( level.levelspecifickillcam ) ) { - if ( isDefined( level.levelspecifickillcam ) ) + levelspecifickillcament = self [[ level.levelspecifickillcam ]](); + if ( isDefined( levelspecifickillcament ) ) { - levelspecifickillcament = self [[ level.levelspecifickillcam ]](); - if ( isDefined( levelspecifickillcament ) ) - { - return levelspecifickillcament; - } + return levelspecifickillcament; } } if ( sweapon == "m220_tow_mp" ) @@ -2776,12 +2791,9 @@ getkillcamentity( attacker, einflictor, sweapon ) } return einflictor.killcament; } - else + else if ( isDefined( einflictor.killcamentities ) ) { - if ( isDefined( einflictor.killcamentities ) ) - { - return getclosestkillcamentity( attacker, einflictor.killcamentities ); - } + return getclosestkillcamentity( attacker, einflictor.killcamentities ); } if ( isDefined( einflictor.script_gameobjectname ) && einflictor.script_gameobjectname == "bombzone" ) { @@ -2790,7 +2802,7 @@ getkillcamentity( attacker, einflictor, sweapon ) return einflictor; } -playkillbattlechatter( attacker, sweapon, victim ) +playkillbattlechatter( attacker, sweapon, victim ) //checked matches cerberus output { if ( isplayer( attacker ) ) { @@ -2800,3 +2812,5 @@ playkillbattlechatter( attacker, sweapon, victim ) } } } + + diff --git a/patch_mp/maps/mp/gametypes/_globallogic_score.gsc b/patch_mp/maps/mp/gametypes/_globallogic_score.gsc index 2d05766..bffbb26 100644 --- a/patch_mp/maps/mp/gametypes/_globallogic_score.gsc +++ b/patch_mp/maps/mp/gametypes/_globallogic_score.gsc @@ -1,3 +1,4 @@ +//checked includes match cerberus output #include maps/mp/bots/_bot; #include maps/mp/gametypes/_globallogic_audio; #include maps/mp/gametypes/_globallogic_score; @@ -15,7 +16,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -updatematchbonusscores( winner ) +updatematchbonusscores( winner ) //checked partially changed to match beta dump see info.md { if ( !game[ "timepassed" ] ) { @@ -48,30 +49,23 @@ updatematchbonusscores( winner ) if ( level.teambased ) { winningteam = "tie"; - _a40 = level.teams; - _k40 = getFirstArrayKey( _a40 ); - while ( isDefined( _k40 ) ) + foreach ( team in level.teams ) { - team = _a40[ _k40 ]; if ( winner == team ) { winningteam = team; break; } - else - { - _k40 = getNextArrayKey( _a40, _k40 ); - } } if ( winningteam != "tie" ) { winnerscale = 1; - loserscale = 0,5; + loserscale = 0.5; } else { - winnerscale = 0,75; - loserscale = 0,75; + winnerscale = 0.75; + loserscale = 0.75; } players = level.players; i = 0; @@ -84,79 +78,70 @@ updatematchbonusscores( winner ) i++; continue; } - else + totaltimeplayed = player.timeplayed[ "total" ]; + if ( totaltimeplayed > gamelength ) { - totaltimeplayed = player.timeplayed[ "total" ]; - if ( totaltimeplayed > gamelength ) - { - totaltimeplayed = gamelength; - } - if ( level.hostforcedend && player ishost() ) - { - i++; - continue; - } - else - { - if ( player.pers[ "score" ] < 0 ) - { - i++; - continue; - } - else spm = player maps/mp/gametypes/_rank::getspm(); - if ( winningteam == "tie" ) - { - playerscore = int( ( winnerscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); - player thread givematchbonus( "tie", playerscore ); - player.matchbonus = playerscore; - i++; - continue; - } - else if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == winningteam ) - { - playerscore = int( ( winnerscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); - player thread givematchbonus( "win", playerscore ); - player.matchbonus = playerscore; - i++; - continue; - } - else - { - if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] != "spectator" ) - { - playerscore = int( ( loserscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); - player thread givematchbonus( "loss", playerscore ); - player.matchbonus = playerscore; - } - } - } + totaltimeplayed = gamelength; + } + if ( level.hostforcedend && player ishost() ) + { + i++; + continue; + } + if ( player.pers[ "score" ] < 0 ) + { + i++; + continue; + } + spm = player maps/mp/gametypes/_rank::getspm(); + if ( winningteam == "tie" ) + { + playerscore = int( ( winnerscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); + player thread givematchbonus( "tie", playerscore ); + player.matchbonus = playerscore; + i++; + continue; + } + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == winningteam ) + { + playerscore = int( ( winnerscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); + player thread givematchbonus( "win", playerscore ); + player.matchbonus = playerscore; + i++; + continue; + } + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] != "spectator" ) + { + playerscore = int( ( loserscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); + player thread givematchbonus( "loss", playerscore ); + player.matchbonus = playerscore; } i++; } } - else if ( isDefined( winner ) ) - { - winnerscale = 1; - loserscale = 0,5; - } else { - winnerscale = 0,75; - loserscale = 0,75; - } - players = level.players; - i = 0; - while ( i < players.size ) - { - player = players[ i ]; - if ( player.timeplayed[ "total" ] < 1 || player.pers[ "participation" ] < 1 ) + if ( isDefined( winner ) ) { - player thread maps/mp/gametypes/_rank::endgameupdate(); - i++; - continue; + winnerscale = 1; + loserscale = 0.5; } else { + winnerscale = 0.75; + loserscale = 0.75; + } + players = level.players; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( player.timeplayed[ "total" ] < 1 || player.pers[ "participation" ] < 1 ) + { + player thread maps/mp/gametypes/_rank::endgameupdate(); + i++; + continue; + } totaltimeplayed = player.timeplayed[ "total" ]; if ( totaltimeplayed > gamelength ) { @@ -164,19 +149,15 @@ updatematchbonusscores( winner ) } spm = player maps/mp/gametypes/_rank::getspm(); iswinner = 0; - pidx = 0; - while ( pidx < min( level.placement[ "all" ][ 0 ].size, 3 ) ) + for ( pidx = 0; pidx < min(level.placement[ "all" ][ 0 ].size, 3 ); pidx++ ) { if ( level.placement[ "all" ][ pidx ] != player ) { - pidx++; - continue; } else { iswinner = 1; } - pidx++; } if ( iswinner ) { @@ -186,18 +167,15 @@ updatematchbonusscores( winner ) i++; continue; } - else - { - playerscore = int( ( loserscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); - player thread givematchbonus( "loss", playerscore ); - player.matchbonus = playerscore; - } + playerscore = int( ( loserscale * ( gamelength / 60 ) * spm ) * ( totaltimeplayed / gamelength ) ); + player thread givematchbonus( "loss", playerscore ); + player.matchbonus = playerscore; + i++; } - i++; } } -givematchbonus( scoretype, score ) +givematchbonus( scoretype, score ) //checked matches cerberus output { self endon( "disconnect" ); level waittill( "give_match_bonus" ); @@ -208,12 +186,12 @@ givematchbonus( scoretype, score ) self maps/mp/gametypes/_rank::endgameupdate(); } -doskillupdate( winner ) +doskillupdate( winner ) //checked matches cerberus output { skillupdate( winner, level.teambased ); } -gethighestscoringplayer() +gethighestscoringplayer() //checked partially changed to match cerberus output see info.md { players = level.players; winner = undefined; @@ -226,24 +204,21 @@ gethighestscoringplayer() i++; continue; } - else if ( players[ i ].pointstowin < 1 ) + if ( players[ i ].pointstowin < 1 ) { i++; continue; } - else if ( !isDefined( winner ) || players[ i ].pointstowin > winner.pointstowin ) + if ( !isDefined( winner ) || players[ i ].pointstowin > winner.pointstowin ) { winner = players[ i ]; tie = 0; i++; continue; } - else + if ( players[ i ].pointstowin == winner.pointstowin ) { - if ( players[ i ].pointstowin == winner.pointstowin ) - { - tie = 1; - } + tie = 1; } i++; } @@ -257,14 +232,14 @@ gethighestscoringplayer() } } -resetscorechain() +resetscorechain() //checked matches cerberus output { self notify( "reset_score_chain" ); self.scorechain = 0; self.rankupdatetotal = 0; } -scorechaintimer() +scorechaintimer() //checked matches cerberus output { self notify( "score_chain_timer" ); self endon( "reset_score_chain" ); @@ -275,7 +250,7 @@ scorechaintimer() self thread resetscorechain(); } -roundtonearestfive( score ) +roundtonearestfive( score ) //checked matches cerberus output { rounding = score % 5; if ( rounding <= 2 ) @@ -288,7 +263,7 @@ roundtonearestfive( score ) } } -giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) +giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) //checked matches cerberus output { rampagebonus = 0; if ( isDefined( level.usingrampage ) && level.usingrampage ) @@ -304,7 +279,7 @@ giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) } if ( isDefined( self.scorechain ) && self.scorechain >= 999 ) { - rampagebonus = roundtonearestfive( int( ( score * level.rampagebonusscale ) + 0,5 ) ); + rampagebonus = roundtonearestfive( int( ( score * level.rampagebonusscale ) + 0.5 ) ); } } if ( score != 0 ) @@ -315,7 +290,7 @@ giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) score += rampagebonus; if ( score > 0 && self hasperk( "specialty_earnmoremomentum" ) ) { - score = roundtonearestfive( int( ( score * getDvarFloat( "perk_killstreakMomentumMultiplier" ) ) + 0,5 ) ); + score = roundtonearestfive( int( ( score * getDvarFloat( "perk_killstreakMomentumMultiplier" ) ) + 0.5 ) ); } if ( isalive( self ) ) { @@ -323,7 +298,7 @@ giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) } } -resetplayermomentumonspawn() +resetplayermomentumonspawn() //checked matches cerberus output { if ( isDefined( level.usingscorestreaks ) && level.usingscorestreaks ) { @@ -332,16 +307,18 @@ resetplayermomentumonspawn() } } -giveplayermomentum( event, player, victim, weapon, descvalue ) +giveplayermomentum( event, player, victim, weapon, descvalue ) //checked matches cerberus output { if ( isDefined( level.disablemomentum ) && level.disablemomentum == 1 ) { return; } score = maps/mp/gametypes/_rank::getscoreinfovalue( event ); + /* /# assert( isDefined( score ) ); #/ + */ label = maps/mp/gametypes/_rank::getscoreinfolabel( event ); countstowardrampage = maps/mp/gametypes/_rank::doesscoreinfocounttowardrampage( event ); if ( event == "death" ) @@ -354,9 +331,11 @@ giveplayermomentum( event, player, victim, weapon, descvalue ) } if ( !isDefined( label ) ) { + /* /# assertmsg( event + " label undefined" ); #/ + */ player giveplayermomentumnotification( score, "", descvalue, countstowardrampage ); return; } @@ -367,7 +346,7 @@ giveplayermomentum( event, player, victim, weapon, descvalue ) player giveplayermomentumnotification( score, label, descvalue, countstowardrampage ); } -giveplayerscore( event, player, victim, weapon, descvalue ) +giveplayerscore( event, player, victim, weapon, descvalue ) //checked matches cerberus output { scorediff = 0; momentum = player.pers[ "momentum" ]; @@ -422,12 +401,14 @@ giveplayerscore( event, player, victim, weapon, descvalue ) return scorediff; } -default_onplayerscore( event, player, victim ) +default_onplayerscore( event, player, victim ) //checked matches cerberus output { score = maps/mp/gametypes/_rank::getscoreinfovalue( event ); + /* /# assert( isDefined( score ) ); #/ + */ if ( level.wagermatch ) { player thread maps/mp/gametypes/_rank::updaterankscorehud( score ); @@ -435,7 +416,7 @@ default_onplayerscore( event, player, victim ) _setplayerscore( player, player.pers[ "score" ] + score ); } -_setplayerscore( player, score ) +_setplayerscore( player, score ) //checked matches cerberus output { if ( score == player.pers[ "score" ] ) { @@ -454,17 +435,16 @@ _setplayerscore( player, score ) } } -_getplayerscore( player ) +_getplayerscore( player ) //checked matches cerberus output { return player.pers[ "score" ]; } -playtop3sounds() +playtop3sounds() //checked changed to match cerberus output { - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic::updateplacement(); - i = 0; - while ( i < level.placement[ "all" ].size ) + for ( i = 0; i < level.placement[ "all" ].size; i++ ) { prevscoreplace = level.placement[ "all" ][ i ].prevscoreplace; if ( !isDefined( prevscoreplace ) ) @@ -472,25 +452,20 @@ playtop3sounds() prevscoreplace = 1; } currentscoreplace = i + 1; - j = i - 1; - while ( j >= 0 ) + for ( j = i - 1; j >= 0; j-- ) { if ( level.placement[ "all" ][ i ].score == level.placement[ "all" ][ j ].score ) { currentscoreplace--; - } - j--; - } wasinthemoney = prevscoreplace <= 3; isinthemoney = currentscoreplace <= 3; level.placement[ "all" ][ i ].prevscoreplace = currentscoreplace; - i++; } } -setpointstowin( points ) +setpointstowin( points ) //checked matches cerberus output { self.pers[ "pointstowin" ] = clamp( points, 0, 65000 ); self.pointstowin = self.pers[ "pointstowin" ]; @@ -499,12 +474,12 @@ setpointstowin( points ) level thread playtop3sounds(); } -givepointstowin( points ) +givepointstowin( points ) //checked matches cerberus output { self setpointstowin( self.pers[ "pointstowin" ] + points ); } -_setplayermomentum( player, momentum ) +_setplayermomentum( player, momentum ) //checked changed to match cerberus output { momentum = clamp( momentum, 0, 2000 ); oldmomentum = player.pers[ "momentum" ]; @@ -513,7 +488,7 @@ _setplayermomentum( player, momentum ) return; } player maps/mp/_bb::bbaddtostat( "momentum", momentum - oldmomentum ); - while ( momentum > oldmomentum ) + if ( momentum > oldmomentum ) { highestmomentumcost = 0; numkillstreaks = 0; @@ -522,8 +497,7 @@ _setplayermomentum( player, momentum ) numkillstreaks = player.killstreak.size; } killstreaktypearray = []; - currentkillstreak = 0; - while ( currentkillstreak < numkillstreaks ) + for ( currentkillstreak = 0; currentkillstreak < numkillstreaks; currentkillstreak++ ) { killstreaktype = maps/mp/killstreaks/_killstreaks::getkillstreakbymenuname( player.killstreak[ currentkillstreak ] ); if ( isDefined( killstreaktype ) ) @@ -535,7 +509,6 @@ _setplayermomentum( player, momentum ) } killstreaktypearray[ killstreaktypearray.size ] = killstreaktype; } - currentkillstreak++; } _giveplayerkillstreakinternal( player, momentum, oldmomentum, killstreaktypearray ); while ( highestmomentumcost > 0 && momentum >= highestmomentumcost ) @@ -549,10 +522,9 @@ _setplayermomentum( player, momentum ) player.momentum = player.pers[ "momentum" ]; } -_giveplayerkillstreakinternal( player, momentum, oldmomentum, killstreaktypearray ) +_giveplayerkillstreakinternal( player, momentum, oldmomentum, killstreaktypearray ) //checked changed to match beta dump { - killstreaktypeindex = 0; - while ( killstreaktypeindex < killstreaktypearray.size ) + for ( killstreaktypeindex = 0; killstreaktypeindex < killstreaktypearray.size; killstreaktypeindex++ ) { killstreaktype = killstreaktypearray[ killstreaktypeindex ]; momentumcost = level.killstreaks[ killstreaktype ].momentumcost; @@ -609,12 +581,12 @@ _giveplayerkillstreakinternal( player, momentum, oldmomentum, killstreaktypearra } } } - killstreaktypeindex++; } } -setplayermomentumdebug() +setplayermomentumdebug() //checked matches cerberus output { + /* /# setdvar( "sv_momentumPercent", 0 ); while ( 1 ) @@ -635,9 +607,10 @@ setplayermomentumdebug() } #/ } + */ } -giveteamscore( event, team, player, victim ) +giveteamscore( event, team, player, victim ) //checked matches cerberus output { if ( level.overrideteamscore ) { @@ -657,7 +630,7 @@ giveteamscore( event, team, player, victim ) thread maps/mp/gametypes/_globallogic::checkscorelimit(); } -giveteamscoreforobjective_delaypostprocessing( team, score ) +giveteamscoreforobjective_delaypostprocessing( team, score ) //checked matches cerberus output { teamscore = game[ "teamScores" ][ team ]; onteamscore_incrementscore( score, team ); @@ -670,20 +643,16 @@ giveteamscoreforobjective_delaypostprocessing( team, score ) updateteamscores( team ); } -postprocessteamscores( teams ) +postprocessteamscores( teams ) //cjecked changed to match cerberus output { - _a660 = teams; - _k660 = getFirstArrayKey( _a660 ); - while ( isDefined( _k660 ) ) + foreach ( team in teams ) { - team = _a660[ _k660 ]; onteamscore_postprocess( team ); - _k660 = getNextArrayKey( _a660, _k660 ); } thread maps/mp/gametypes/_globallogic::checkscorelimit(); } -giveteamscoreforobjective( team, score ) +giveteamscoreforobjective( team, score ) //checked matches cerberus output { if ( !isDefined( level.teams[ team ] ) ) { @@ -701,7 +670,7 @@ giveteamscoreforobjective( team, score ) thread maps/mp/gametypes/_globallogic::checkscorelimit(); } -_setteamscore( team, teamscore ) +_setteamscore( team, teamscore ) //checked matches cerberus output { if ( teamscore == game[ "teamScores" ][ team ] ) { @@ -712,76 +681,63 @@ _setteamscore( team, teamscore ) thread maps/mp/gametypes/_globallogic::checkscorelimit(); } -resetteamscores() +resetteamscores() //checked changed to match cerberus output { - while ( isDefined( level.roundscorecarry ) || level.roundscorecarry == 0 && maps/mp/_utility::isfirstround() ) + if ( isDefined( level.roundscorecarry ) || level.roundscorecarry == 0 || maps/mp/_utility::isfirstround() ) { - _a705 = level.teams; - _k705 = getFirstArrayKey( _a705 ); - while ( isDefined( _k705 ) ) + foreach ( team in level.teams ) { - team = _a705[ _k705 ]; game[ "teamScores" ][ team ] = 0; - _k705 = getNextArrayKey( _a705, _k705 ); } } maps/mp/gametypes/_globallogic_score::updateallteamscores(); } -resetallscores() +resetallscores() //checked matches cerberus output { resetteamscores(); resetplayerscores(); } -resetplayerscores() +resetplayerscores() //checked changed to match cerberus output { players = level.players; winner = undefined; tie = 0; - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( isDefined( players[ i ].pers[ "score" ] ) ) { _setplayerscore( players[ i ], 0 ); } - i++; } } -updateteamscores( team ) +updateteamscores( team ) //checked matches cerberus output { setteamscore( team, game[ "teamScores" ][ team ] ); level thread maps/mp/gametypes/_globallogic::checkteamscorelimitsoon( team ); } -updateallteamscores() +updateallteamscores() //checked changed to match cerberus output { - _a743 = level.teams; - _k743 = getFirstArrayKey( _a743 ); - while ( isDefined( _k743 ) ) + foreach ( team in level.teams ) { - team = _a743[ _k743 ]; updateteamscores( team ); - _k743 = getNextArrayKey( _a743, _k743 ); } } -_getteamscore( team ) +_getteamscore( team ) //checked matches cerberus output { return game[ "teamScores" ][ team ]; } -gethighestteamscoreteam() +gethighestteamscoreteam() //checked changed to match cerberus output { score = 0; winning_teams = []; - _a759 = level.teams; - _k759 = getFirstArrayKey( _a759 ); - while ( isDefined( _k759 ) ) + foreach ( team in level.teams ) { - team = _a759[ _k759 ]; team_score = game[ "teamScores" ][ team ]; if ( team_score > score ) { @@ -792,38 +748,33 @@ gethighestteamscoreteam() { winning_teams[ team ] = team; } - _k759 = getNextArrayKey( _a759, _k759 ); } return winning_teams; } -areteamarraysequal( teamsa, teamsb ) +areteamarraysequal( teamsa, teamsb ) //checked changed to match cerberus output { if ( teamsa.size != teamsb.size ) { return 0; } - _a782 = teamsa; - _k782 = getFirstArrayKey( _a782 ); - while ( isDefined( _k782 ) ) + foreach ( team in teamsa ) { - team = _a782[ _k782 ]; if ( !isDefined( teamsb[ team ] ) ) { return 0; } - _k782 = getNextArrayKey( _a782, _k782 ); } return 1; } -onteamscore( score, team ) +onteamscore( score, team ) //checked matches cerberus output { onteamscore_incrementscore( score, team ); onteamscore_postprocess( team ); } -onteamscore_incrementscore( score, team ) +onteamscore_incrementscore( score, team ) //checked matches cerberus output { game[ "teamScores" ][ team ] += score; if ( game[ "teamScores" ][ team ] < 0 ) @@ -836,7 +787,7 @@ onteamscore_incrementscore( score, team ) } } -onteamscore_postprocess( team ) +onteamscore_postprocess( team ) //checked partially changed to match cerberus output see info.md { if ( level.splitscreen ) { @@ -862,32 +813,32 @@ onteamscore_postprocess( team ) if ( iswinning.size == 1 ) { level.laststatustime = getTime(); - _a835 = iswinning; - _k835 = getFirstArrayKey( _a835 ); - while ( isDefined( _k835 ) ) + foreach ( team in iswinning ) { - team = _a835[ _k835 ]; if ( isDefined( level.waswinning[ team ] ) ) { if ( level.waswinning.size == 1 ) { } + else + { + maps/mp/gametypes/_globallogic_audio::leaderdialog( "lead_taken", team, "status" ); + } } else { maps/mp/gametypes/_globallogic_audio::leaderdialog( "lead_taken", team, "status" ); } - _k835 = getNextArrayKey( _a835, _k835 ); } } - else return; - while ( level.waswinning.size == 1 ) + else { - _a858 = level.waswinning; - _k858 = getFirstArrayKey( _a858 ); - while ( isDefined( _k858 ) ) + return; + } + if ( level.waswinning.size == 1 ) + { + foreach ( team in level.waswinning ) { - team = _a858[ _k858 ]; if ( isDefined( iswinning[ team ] ) ) { if ( iswinning.size == 1 ) @@ -896,27 +847,32 @@ onteamscore_postprocess( team ) else if ( level.waswinning.size > 1 ) { } + else + { + maps/mp/gametypes/_globallogic_audio::leaderdialog( "lead_lost", team, "status" ); + } } else { maps/mp/gametypes/_globallogic_audio::leaderdialog( "lead_lost", team, "status" ); } - _k858 = getNextArrayKey( _a858, _k858 ); } } level.waswinning = iswinning; } -default_onteamscore( event, team ) +default_onteamscore( event, team ) //checked matches cerberus output { score = maps/mp/gametypes/_rank::getscoreinfovalue( event ); + /* /# assert( isDefined( score ) ); #/ + */ onteamscore( score, team ); } -initpersstat( dataname, record_stats ) +initpersstat( dataname, record_stats ) //checked matches cerberus output { if ( !isDefined( self.pers[ dataname ] ) ) { @@ -928,12 +884,12 @@ initpersstat( dataname, record_stats ) } } -getpersstat( dataname ) +getpersstat( dataname ) //checked matches cerberus output { return self.pers[ dataname ]; } -incpersstat( dataname, increment, record_stats, includegametype ) +incpersstat( dataname, increment, record_stats, includegametype ) //checked matches cerberus output { pixbeginevent( "incPersStat" ); self.pers[ dataname ] += increment; @@ -952,14 +908,14 @@ incpersstat( dataname, increment, record_stats, includegametype ) pixendevent(); } -threadedrecordplayerstats( dataname ) +threadedrecordplayerstats( dataname ) //checked matches cerberus output { self endon( "disconnect" ); waittillframeend; recordplayerstats( self, dataname, self.pers[ dataname ] ); } -updatewinstats( winner ) +updatewinstats( winner ) //checked matches cerberus output { winner addplayerstatwithgametype( "losses", -1 ); winner addplayerstatwithgametype( "wins", 1 ); @@ -993,14 +949,14 @@ updatewinstats( winner ) } } -updatelossstats( loser ) +updatelossstats( loser ) //checked matches cerberus output { loser addplayerstatwithgametype( "losses", 1 ); loser updatestatratio( "wlratio", "wins", "losses" ); loser notify( "loss" ); } -updatetiestats( loser ) +updatetiestats( loser ) //checked matches cerberus output { loser addplayerstatwithgametype( "losses", -1 ); loser addplayerstatwithgametype( "ties", 1 ); @@ -1012,7 +968,7 @@ updatetiestats( loser ) loser notify( "tie" ); } -updatewinlossstats( winner ) +updatewinlossstats( winner ) //checked partially changed to match beta dump see info.md { if ( !waslastround() && !level.hostforcedend ) { @@ -1029,15 +985,12 @@ updatewinlossstats( winner ) i++; continue; } - else if ( level.hostforcedend && players[ i ] ishost() ) + if ( level.hostforcedend && players[ i ] ishost() ) { i++; continue; } - else - { - updatetiestats( players[ i ] ); - } + updatetiestats( players[ i ] ); i++; } } @@ -1048,45 +1001,39 @@ updatewinlossstats( winner ) return; } updatewinstats( winner ); - while ( !level.teambased ) + if ( !level.teambased ) { placement = level.placement[ "all" ]; topthreeplayers = min( 3, placement.size ); - index = 1; - while ( index < topthreeplayers ) + for ( index = 1; index < topthreeplayers; index++ ) { nexttopplayer = placement[ index ]; updatewinstats( nexttopplayer ); - index++; } } } - else i = 0; - while ( i < players.size ) + else { - if ( !isDefined( players[ i ].pers[ "team" ] ) ) - { - i++; - continue; - } - else if ( level.hostforcedend && players[ i ] ishost() ) - { - i++; - continue; - } - else + i = 0; + while ( i < players.size ) { + if ( !isDefined( players[ i ].pers[ "team" ] ) ) + { + i++; + continue; + } + if ( level.hostforcedend && players[ i ] ishost() ) + { + i++; + continue; + } if ( winner == "tie" ) { updatetiestats( players[ i ] ); - i++; - continue; } else if ( players[ i ].pers[ "team" ] == winner ) { updatewinstats( players[ i ] ); - i++; - continue; } else { @@ -1095,12 +1042,12 @@ updatewinlossstats( winner ) players[ i ] setdstat( "playerstatslist", "cur_win_streak", "StatValue", 0 ); } } + i++; } - i++; } } -backupandclearwinstreaks() +backupandclearwinstreaks() //checked matches cerberus output { self.pers[ "winStreak" ] = self getdstat( "playerstatslist", "cur_win_streak", "StatValue" ); if ( !level.disablestattracking ) @@ -1111,7 +1058,7 @@ backupandclearwinstreaks() self maps/mp/gametypes/_persistence::statsetwithgametype( "cur_win_streak", 0 ); } -restorewinstreaks( winner ) +restorewinstreaks( winner ) //checked matches cerberus output { if ( !level.disablestattracking ) { @@ -1120,7 +1067,7 @@ restorewinstreaks( winner ) winner maps/mp/gametypes/_persistence::statsetwithgametype( "cur_win_streak", winner.pers[ "winStreakForGametype" ] ); } -inckillstreaktracker( sweapon ) +inckillstreaktracker( sweapon ) //checked matches cerberus output { self endon( "disconnect" ); waittillframeend; @@ -1134,7 +1081,7 @@ inckillstreaktracker( sweapon ) } } -trackattackerkill( name, rank, xp, prestige, xuid ) +trackattackerkill( name, rank, xp, prestige, xuid ) //checked changed to match cerberus output { self endon( "disconnect" ); attacker = self; @@ -1167,13 +1114,10 @@ trackattackerkill( name, rank, xp, prestige, xuid ) attacker.pers[ "nemesis_xp" ] = xp; attacker.pers[ "nemesis_xuid" ] = xuid; } - else + else if ( isDefined( attacker.pers[ "nemesis_name" ] ) && attacker.pers[ "nemesis_name" ] == name ) { - if ( isDefined( attacker.pers[ "nemesis_name" ] ) && attacker.pers[ "nemesis_name" ] == name ) - { - attacker.pers[ "nemesis_rank" ] = rank; - attacker.pers[ "nemesis_xp" ] = xp; - } + attacker.pers[ "nemesis_rank" ] = rank; + attacker.pers[ "nemesis_xp" ] = xp; } if ( !isDefined( attacker.lastkilledvictim ) || !isDefined( attacker.lastkilledvictimcount ) ) { @@ -1197,7 +1141,7 @@ trackattackerkill( name, rank, xp, prestige, xuid ) pixendevent(); } -trackattackeedeath( attackername, rank, xp, prestige, xuid ) +trackattackeedeath( attackername, rank, xp, prestige, xuid ) //checked changed to match cerberus output { self endon( "disconnect" ); waittillframeend; @@ -1211,7 +1155,7 @@ trackattackeedeath( attackername, rank, xp, prestige, xuid ) { self.pers[ "nemesis_tracking" ][ attackername ] = 0; } - self.pers[ "nemesis_tracking" ][ attackername ] += 1,5; + self.pers[ "nemesis_tracking" ][ attackername ] += 1.5; if ( self.pers[ "nemesis_name" ] == "" || self.pers[ "nemesis_tracking" ][ attackername ] > self.pers[ "nemesis_tracking" ][ self.pers[ "nemesis_name" ] ] ) { self.pers[ "nemesis_name" ] = attackername; @@ -1220,13 +1164,10 @@ trackattackeedeath( attackername, rank, xp, prestige, xuid ) self.pers[ "nemesis_xp" ] = xp; self.pers[ "nemesis_xuid" ] = xuid; } - else + else if ( isDefined( self.pers[ "nemesis_name" ] ) && self.pers[ "nemesis_name" ] == attackername ) { - if ( isDefined( self.pers[ "nemesis_name" ] ) && self.pers[ "nemesis_name" ] == attackername ) - { - self.pers[ "nemesis_rank" ] = rank; - self.pers[ "nemesis_xp" ] = xp; - } + self.pers[ "nemesis_rank" ] = rank; + self.pers[ "nemesis_xp" ] = xp; } if ( self.pers[ "nemesis_name" ] == attackername && self.pers[ "nemesis_tracking" ][ attackername ] >= 2 ) { @@ -1239,20 +1180,22 @@ trackattackeedeath( attackername, rank, xp, prestige, xuid ) pixendevent(); } -default_iskillboosting() +default_iskillboosting() //checked matches cerberus output { return 0; } -givekillstats( smeansofdeath, sweapon, evictim ) +givekillstats( smeansofdeath, sweapon, evictim ) //checked matches cerberus output { self endon( "disconnect" ); waittillframeend; if ( level.rankedmatch && self [[ level.iskillboosting ]]() ) { + /* /# self iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" ); #/ + */ return; } pixbeginevent( "giveKillStats" ); @@ -1272,7 +1215,7 @@ givekillstats( smeansofdeath, sweapon, evictim ) pixendevent(); } -inctotalkills( team ) +inctotalkills( team ) //checked matches cerberus output { if ( level.teambased && isDefined( level.teams[ team ] ) ) { @@ -1281,7 +1224,7 @@ inctotalkills( team ) game[ "totalKills" ]++; } -setinflictorstat( einflictor, eattacker, sweapon ) +setinflictorstat( einflictor, eattacker, sweapon ) //checked changed to match cerberus output { if ( !isDefined( eattacker ) ) { @@ -1297,18 +1240,13 @@ setinflictorstat( einflictor, eattacker, sweapon ) einflictor.playeraffectedarray = []; } foundnewplayer = 1; - i = 0; - while ( i < einflictor.playeraffectedarray.size ) + for ( i = 0; i < einflictor.playeraffectedarray.size; i++ ) { if ( einflictor.playeraffectedarray[ i ] == self ) { foundnewplayer = 0; break; } - else - { - i++; - } } if ( foundnewplayer ) { @@ -1321,11 +1259,11 @@ setinflictorstat( einflictor, eattacker, sweapon ) } } -processshieldassist( killedplayer ) +processshieldassist( killedplayer ) //checked matches cerberus output { self endon( "disconnect" ); killedplayer endon( "disconnect" ); - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); if ( !isDefined( level.teams[ self.pers[ "team" ] ] ) ) { @@ -1344,11 +1282,11 @@ processshieldassist( killedplayer ) maps/mp/_scoreevents::processscoreevent( "shield_assist", self, killedplayer, "riotshield_mp" ); } -processassist( killedplayer, damagedone, weapon ) +processassist( killedplayer, damagedone, weapon ) //checked changed to match cerberus output { self endon( "disconnect" ); killedplayer endon( "disconnect" ); - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); if ( !isDefined( level.teams[ self.pers[ "team" ] ] ) ) { @@ -1368,12 +1306,9 @@ processassist( killedplayer, damagedone, weapon ) { assist_level_value = 1; } - else + else if ( assist_level_value > 3 ) { - if ( assist_level_value > 3 ) - { - assist_level_value = 3; - } + assist_level_value = 3; } assist_level = ( assist_level + "_" ) + ( assist_level_value * 25 ); self maps/mp/gametypes/_globallogic_score::incpersstat( "assists", 1, 1, 1 ); @@ -1402,24 +1337,21 @@ processassist( killedplayer, damagedone, weapon ) maps/mp/_scoreevents::processscoreevent( assist_level, self, killedplayer, weapon ); } -processkillstreakassists( attacker, inflictor, weaponname ) +processkillstreakassists( attacker, inflictor, weaponname ) //checked partially changed to match cerberus output see info.md { - if ( isDefined( attacker ) || !isDefined( attacker.team ) && self isenemyplayer( attacker ) == 0 ) + if ( isDefined( attacker ) || !isDefined( attacker.team ) || self isenemyplayer( attacker ) == 0 ) { return; } - if ( self == attacker || attacker.classname == "trigger_hurt" && attacker.classname == "worldspawn" ) + if ( self == attacker || attacker.classname == "trigger_hurt" || attacker.classname == "worldspawn" ) { return; } enemycuavactive = 0; - while ( attacker hasperk( "specialty_immunecounteruav" ) == 0 ) + if ( attacker hasperk( "specialty_immunecounteruav" ) == 0 ) { - _a1403 = level.teams; - _k1403 = getFirstArrayKey( _a1403 ); - while ( isDefined( _k1403 ) ) + foreach ( team in level.teams ) { - team = _a1403[ _k1403 ]; if ( team == attacker.team ) { } @@ -1430,14 +1362,10 @@ processkillstreakassists( attacker, inflictor, weaponname ) enemycuavactive = 1; } } - _k1403 = getNextArrayKey( _a1403, _k1403 ); } } - _a1417 = level.players; - _k1417 = getFirstArrayKey( _a1417 ); - while ( isDefined( _k1417 ) ) + foreach ( player in level.players ) { - player = _a1417[ _k1417 ]; if ( player.team != attacker.team ) { } @@ -1452,6 +1380,7 @@ processkillstreakassists( attacker, inflictor, weaponname ) } else { + /* /# assert( isDefined( player.activecounteruavs ) ); #/ @@ -1461,6 +1390,7 @@ processkillstreakassists( attacker, inflictor, weaponname ) /# assert( isDefined( player.activesatellites ) ); #/ + */ if ( player.activecounteruavs > 0 && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( weaponname ) ) { scoregiven = thread maps/mp/_scoreevents::processscoreevent( "counter_uav_assist", player ); @@ -1489,13 +1419,9 @@ processkillstreakassists( attacker, inflictor, weaponname ) } } } - _k1417 = getNextArrayKey( _a1417, _k1417 ); } - _a1466 = level.teams; - _k1466 = getFirstArrayKey( _a1466 ); - while ( isDefined( _k1466 ) ) + foreach ( assistteam in level.teams ) { - assistteam = _a1466[ _k1466 ]; if ( assistteam == self.team ) { } @@ -1520,27 +1446,29 @@ processkillstreakassists( attacker, inflictor, weaponname ) } } } - _k1466 = getNextArrayKey( _a1466, _k1466 ); } } -xpratethread() +xpratethread() //checked matches cerberus output dvar taken from beta dump { + /* /# self endon( "death" ); self endon( "disconnect" ); level endon( "game_ended" ); while ( level.inprematchperiod ) { - wait 0,05; + wait 0.05; } for ( ;; ) { wait 5; if ( isDefined( level.teams[ level.players[ 0 ].pers[ "team" ] ] ) ) { - self maps/mp/gametypes/_rank::giverankxp( "kill", int( min( getDvarInt( #"F8D00F60" ), 50 ) ) ); + self maps/mp/gametypes/_rank::giverankxp( "kill", int( min( getDvarInt( "scr_xprate" ), 50 ) ) ); } #/ } + */ } + diff --git a/patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc b/patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc index f7332dc..3821fd2 100644 --- a/patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc +++ b/patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc @@ -1,3 +1,4 @@ +//checked includes match cerberus output #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_globallogic_defaults; #include maps/mp/gametypes/_hostmigration; @@ -19,7 +20,7 @@ #include maps/mp/_utility; #include common_scripts/utility; -timeuntilspawn( includeteamkilldelay ) +timeuntilspawn( includeteamkilldelay ) //checked matches cerberus output { if ( level.ingraceperiod && !self.hasspawned ) { @@ -58,25 +59,21 @@ timeuntilspawn( includeteamkilldelay ) return respawndelay; } -allteamshaveexisted() +allteamshaveexisted() //checked changed to match cerberus output { - _a42 = level.teams; - _k42 = getFirstArrayKey( _a42 ); - while ( isDefined( _k42 ) ) + foreach ( team in level.teams ) { - team = _a42[ _k42 ]; if ( !level.everexisted[ team ] ) { return 0; } - _k42 = getNextArrayKey( _a42, _k42 ); } return 1; } -mayspawn() +mayspawn() //checked partially changed to match cerberus output changed at own discretion { - if ( isDefined( level.mayspawn ) && !( self [[ level.mayspawn ]]() ) ) + if ( isDefined( level.mayspawn ) && !self [[ level.mayspawn ]]() ) { return 0; } @@ -94,35 +91,30 @@ mayspawn() { gamehasstarted = allteamshaveexisted(); } + else if ( level.maxplayercount > 1 || !isoneround() && !isfirstround() ) + { + gamehasstarted = 1; + } else { - if ( level.maxplayercount > 1 ) - { - if ( !isoneround() ) - { - gamehasstarted = !isfirstround(); - } - } + gamehasstarted = 0; } if ( !self.pers[ "lives" ] ) { return 0; } - else + else if ( gamehasstarted ) { - if ( gamehasstarted ) + if ( !level.ingraceperiod && !self.hasspawned && !level.wagermatch ) { - if ( !level.ingraceperiod && !self.hasspawned && !level.wagermatch ) - { - return 0; - } + return 0; } } } return 1; } -timeuntilwavespawn( minimumwait ) +timeuntilwavespawn( minimumwait ) //checked matches cerberus output { earliestspawntime = getTime() + ( minimumwait * 1000 ); lastwavetime = level.lastwave[ self.pers[ "team" ] ]; @@ -141,7 +133,7 @@ timeuntilwavespawn( minimumwait ) return ( timeofspawn - getTime() ) / 1000; } -stoppoisoningandflareonspawn() +stoppoisoningandflareonspawn() //checked matches cerberus output { self endon( "disconnect" ); self.inpoisonarea = 0; @@ -150,7 +142,7 @@ stoppoisoningandflareonspawn() self.ingroundnapalm = 0; } -spawnplayerprediction() +spawnplayerprediction() //checked matches cerberus output dvar taken from beta dump { self endon( "disconnect" ); self endon( "end_respawn" ); @@ -159,8 +151,8 @@ spawnplayerprediction() self endon( "spawned" ); while ( 1 ) { - wait 0,5; - if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) + wait 0.5; + if ( isDefined( level.onspawnplayerunified ) && getDvarInt( "scr_disableunifiedspawning" ) == 0 ) { maps/mp/gametypes/_spawning::onspawnplayer_unified( 1 ); continue; @@ -172,7 +164,7 @@ spawnplayerprediction() } } -doinitialspawnmessaging() +doinitialspawnmessaging() //checked changed to match cerberus output { self endon( "disconnect" ); if ( isDefined( level.disableprematchmessages ) && level.disableprematchmessages ) @@ -181,7 +173,7 @@ doinitialspawnmessaging() } team = self.pers[ "team" ]; thread maps/mp/gametypes/_hud_message::showinitialfactionpopup( team ); - if ( isDefined( game[ "dialog" ][ "gametype" ] ) || !level.splitscreen && self == level.players[ 0 ] ) + if ( ( !level.splitscreen || self == level.players[ 0 ] ) && isDefined( game[ "dialog" ][ "gametype" ] ) ) { if ( !isDefined( level.infinalfight ) || !level.infinalfight ) { @@ -197,7 +189,7 @@ doinitialspawnmessaging() } while ( level.inprematchperiod ) { - wait 0,05; + wait 0.05; } hintmessage = getobjectivehinttext( team ); if ( isDefined( hintmessage ) ) @@ -214,7 +206,7 @@ doinitialspawnmessaging() } } -spawnplayer() +spawnplayer() //checked changed to match cerberus output dvars taken from beta dump { pixbeginevent( "spawnPlayer_preUTS" ); self endon( "disconnect" ); @@ -231,6 +223,7 @@ spawnplayer() if ( isDefined( self.pers[ "resetMomentumOnSpawn" ] ) && self.pers[ "resetMomentumOnSpawn" ] ) { self maps/mp/gametypes/_globallogic_score::resetplayermomentumonspawn(); + self.pers["resetMomentumOnSpawn"] = undefined; } if ( level.teambased ) { @@ -249,9 +242,9 @@ spawnplayer() self.psoffsettime = 0; self.statusicon = ""; self.damagedplayers = []; - if ( getDvarInt( #"C8077F47" ) > 0 ) + if ( getDvarInt( "scr_csmode" ) > 0 ) { - self.maxhealth = getDvarInt( #"C8077F47" ); + self.maxhealth = getDvarInt( "scr_csmode" ); } else { @@ -262,7 +255,7 @@ spawnplayer() self.hasspawned = 1; self.spawntime = getTime(); self.afk = 0; - if ( self.pers[ "lives" ] || !isDefined( level.takelivesondeath ) && level.takelivesondeath == 0 ) + if ( ( !isDefined( level.takelivesondeath ) || level.takelivesondeath == 0 ) && self.pers[ "lives" ] ) { self.pers[ "lives" ]--; @@ -294,7 +287,7 @@ spawnplayer() self setdepthoffield( 0, 0, 512, 512, 4, 0 ); self resetfov(); pixbeginevent( "onSpawnPlayer" ); - if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) + if ( isDefined( level.onspawnplayerunified ) && getDvarInt( "scr_disableunifiedspawning" ) == 0 ) { self [[ level.onspawnplayerunified ]](); } @@ -313,9 +306,11 @@ spawnplayer() self thread stoppoisoningandflareonspawn(); self.sensorgrenadedata = undefined; self stopburning(); + /* /# assert( maps/mp/gametypes/_globallogic_utils::isvalidclass( self.class ) ); #/ + */ if ( sessionmodeiszombiesgame() ) { self maps/mp/gametypes/_class::giveloadoutlevelspecific( self.team, self.class ); @@ -424,34 +419,38 @@ spawnplayer() self thread maps/mp/_vehicles::vehicledeathwaiter(); self thread maps/mp/_vehicles::turretdeathwaiter(); } + /* /# - if ( getDvarInt( #"F8D00F60" ) > 0 ) + if ( getDvarInt( "scr_xprate" ) > 0 ) { self thread maps/mp/gametypes/_globallogic_score::xpratethread(); #/ } + */ if ( game[ "state" ] == "postgame" ) { + /* /# assert( !level.intermission ); #/ + */ self maps/mp/gametypes/_globallogic_player::freezeplayerforroundend(); } } -spawnspectator( origin, angles ) +spawnspectator( origin, angles ) //checked matches cerberus output { self notify( "spawned" ); self notify( "end_respawn" ); in_spawnspectator( origin, angles ); } -respawn_asspectator( origin, angles ) +respawn_asspectator( origin, angles ) //checked matches cerberus output { in_spawnspectator( origin, angles ); } -in_spawnspectator( origin, angles ) +in_spawnspectator( origin, angles ) //checked matches cerberus output { pixmarker( "BEGIN: in_spawnSpectator" ); self setspawnvariables(); @@ -483,7 +482,7 @@ in_spawnspectator( origin, angles ) pixmarker( "END: in_spawnSpectator" ); } -spectatorthirdpersonness() +spectatorthirdpersonness() //checked matches cerberus output { self endon( "disconnect" ); self endon( "spawned" ); @@ -492,7 +491,7 @@ spectatorthirdpersonness() self.spectatingthirdperson = 0; } -forcespawn( time ) +forcespawn( time ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); @@ -519,14 +518,16 @@ forcespawn( time ) self thread [[ level.spawnclient ]](); } -kickifdontspawn() +kickifdontspawn() //checked matches cerberus output { + /* /# if ( getDvarInt( "scr_hostmigrationtest" ) == 1 ) { return; #/ } + */ if ( self ishost() ) { return; @@ -534,25 +535,25 @@ kickifdontspawn() self kickifidontspawninternal(); } -kickifidontspawninternal() +kickifidontspawninternal() //checked matches cerberus output dvars taken from beta dump { self endon( "death" ); self endon( "disconnect" ); self endon( "spawned" ); waittime = 90; - if ( getDvar( #"4257CF5C" ) != "" ) + if ( getDvar( "scr_kick_time" ) != "" ) { - waittime = getDvarFloat( #"4257CF5C" ); + waittime = getDvarFloat( "scr_kick_time" ); } mintime = 45; - if ( getDvar( #"0DF057E0" ) != "" ) + if ( getDvar( "scr_kick_time" ) != "" ) { - mintime = getDvarFloat( #"0DF057E0" ); + mintime = getDvarFloat( "scr_kick_time" ); } starttime = getTime(); kickwait( waittime ); timepassed = ( getTime() - starttime ) / 1000; - if ( timepassed < ( waittime - 0,1 ) && timepassed < mintime ) + if ( timepassed < ( waittime - 0.1 ) && timepassed < mintime ) { return; } @@ -576,13 +577,13 @@ kickifidontspawninternal() kick( self getentitynumber() ); } -kickwait( waittime ) +kickwait( waittime ) //checked matches cerberus output { level endon( "game_ended" ); maps/mp/gametypes/_hostmigration::waitlongdurationwithhostmigrationpause( waittime ); } -spawninterroundintermission() +spawninterroundintermission() //checked matches cerberus output { self notify( "spawned" ); self notify( "end_respawn" ); @@ -598,10 +599,10 @@ spawninterroundintermission() self maps/mp/gametypes/_globallogic_defaults::default_onspawnintermission(); self setorigin( self.origin ); self setplayerangles( self.angles ); - self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 ); } -spawnintermission( usedefaultcallback ) +spawnintermission( usedefaultcallback ) //checked matches cerberus output { self notify( "spawned" ); self notify( "end_respawn" ); @@ -623,27 +624,23 @@ spawnintermission( usedefaultcallback ) { [[ level.onspawnintermission ]](); } - self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 ); } -spawnqueuedclientonteam( team ) +spawnqueuedclientonteam( team ) //checked partially changed to match cerberus output did not use continue in for loop see github info.md { player_to_spawn = undefined; - i = 0; - while ( i < level.deadplayers[ team ].size ) + for ( i = 0; i < level.deadplayers[ team ].size; i++ ) { player = level.deadplayers[ team ][ i ]; if ( player.waitingtospawn ) { - i++; - continue; } else { player_to_spawn = player; break; } - i++; } if ( isDefined( player_to_spawn ) ) { @@ -653,7 +650,7 @@ spawnqueuedclientonteam( team ) } } -spawnqueuedclient( dead_player_team, killer ) +spawnqueuedclient( dead_player_team, killer ) //checked partially changed to match cerberus output did not use continue in foreach see github info.md { if ( !level.playerqueuedrespawn ) { @@ -670,11 +667,8 @@ spawnqueuedclient( dead_player_team, killer ) spawnqueuedclientonteam( spawn_team ); return; } - _a730 = level.teams; - _k730 = getFirstArrayKey( _a730 ); - while ( isDefined( _k730 ) ) + foreach ( team in level.teams ) { - team = _a730[ _k730 ]; if ( team == dead_player_team ) { } @@ -682,11 +676,10 @@ spawnqueuedclient( dead_player_team, killer ) { spawnqueuedclientonteam( team ); } - _k730 = getNextArrayKey( _a730, _k730 ); } } -allteamsnearscorelimit() +allteamsnearscorelimit() //checked changed to match cerberus output { if ( !level.teambased ) { @@ -696,21 +689,17 @@ allteamsnearscorelimit() { return 0; } - _a747 = level.teams; - _k747 = getFirstArrayKey( _a747 ); - while ( isDefined( _k747 ) ) + foreach ( team in level.teams ) { - team = _a747[ _k747 ]; if ( ( level.scorelimit - 1 ) < game[ "teamScores" ][ team ] ) { return 0; } - _k747 = getNextArrayKey( _a747, _k747 ); } return 1; } -shouldshowrespawnmessage() +shouldshowrespawnmessage() //checked matches cerberus output { if ( waslastround() ) { @@ -731,13 +720,13 @@ shouldshowrespawnmessage() return 1; } -default_spawnmessage() +default_spawnmessage() //checked matches cerberus output { setlowermessage( game[ "strings" ][ "spawn_next_round" ] ); self thread maps/mp/gametypes/_globallogic_ui::removespawnmessageshortly( 3 ); } -showspawnmessage() +showspawnmessage() //checked matches cerberus output { if ( shouldshowrespawnmessage() ) { @@ -745,15 +734,17 @@ showspawnmessage() } } -spawnclient( timealreadypassed ) +spawnclient( timealreadypassed ) //checked matches cerberus output { pixbeginevent( "spawnClient" ); + /* /# assert( isDefined( self.team ) ); #/ /# assert( maps/mp/gametypes/_globallogic_utils::isvalidclass( self.class ) ); #/ + */ if ( !self mayspawn() ) { currentorigin = self.origin; @@ -778,7 +769,7 @@ spawnclient( timealreadypassed ) pixendevent(); } -waitandspawnclient( timealreadypassed ) +waitandspawnclient( timealreadypassed ) //checked matches cerberus output { self endon( "disconnect" ); self endon( "end_respawn" ); @@ -893,7 +884,7 @@ waitandspawnclient( timealreadypassed ) self thread [[ level.spawnplayer ]](); } -waitrespawnorsafespawnbutton() +waitrespawnorsafespawnbutton() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "end_respawn" ); @@ -903,14 +894,11 @@ waitrespawnorsafespawnbutton() { return; } - else - { - wait 0,05; - } + wait 0.05; } } -waitinspawnqueue() +waitinspawnqueue() //checked matches cerberus output { self endon( "disconnect" ); self endon( "end_respawn" ); @@ -923,7 +911,7 @@ waitinspawnqueue() } } -setthirdperson( value ) +setthirdperson( value ) //checked matches cerberus output { if ( !level.console ) { @@ -935,7 +923,7 @@ setthirdperson( value ) if ( value ) { self setclientthirdperson( 1 ); - self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1.8 ); } else { @@ -946,9 +934,11 @@ setthirdperson( value ) } } -setspawnvariables() +setspawnvariables() //checked matches cerberus output { resettimeout(); self stopshellshock(); self stoprumble( "damage_heavy" ); } + + diff --git a/patch_mp/readme.md b/patch_mp/readme.md index e286b51..3dbf8c5 100644 --- a/patch_mp/readme.md +++ b/patch_mp/readme.md @@ -40,7 +40,11 @@ patch_mp/maps/mp/gametypes/_deathicons.gsc patch_mp/maps/mp/gametypes/_friendicons.gsc patch_mp/maps/mp/gametypes/_globallogic.gsc patch_mp/maps/mp/gametypes/_globallogic_actor.gsc +patch_mp/maps/mp/gametypes/_globallogic_audio.gsc patch_mp/maps/mp/gametypes/_globallogic_defaults.gsc +patch_mp/maps/mp/gametypes/_globallogic_player.gsc +patch_mp/maps/mp/gametypes/_globallogic_score.gsc +patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc patch_mp/maps/mp/gametypes/_globallogic_ui.gsc patch_mp/maps/mp/gametypes/_globallogic_utils.gsc patch_mp/maps/mp/gametypes/_globallogic_vehicle.gsc @@ -78,10 +82,6 @@ patch_mp/maps/mp/gametypes/tdm.gsc ### The following scripts are not checked yet, uploaded to setup a baseline: ``` patch_mp/maps/mp/gametypes/_gameobjects.gsc -patch_mp/maps/mp/gametypes/_globallogic_audio.gsc -patch_mp/maps/mp/gametypes/_globallogic_player.gsc -patch_mp/maps/mp/gametypes/_globallogic_score.gsc -patch_mp/maps/mp/gametypes/_globallogic_spawn.gsc patch_mp/maps/mp/gametypes/_hud_message.gsc patch_mp/maps/mp/gametypes/_hud_util.gsc patch_mp/maps/mp/gametypes/_spawning.gsc