diff --git a/patch_mp/maps/mp/gametypes/ctf.gsc b/patch_mp/maps/mp/gametypes/ctf.gsc index 3c99c2d..96dec93 100644 --- a/patch_mp/maps/mp/gametypes/ctf.gsc +++ b/patch_mp/maps/mp/gametypes/ctf.gsc @@ -5,15 +5,19 @@ #include maps/mp/_scoreevents; #include maps/mp/_popups; #include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/gametypes/_hud_message; #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; +#include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_globallogic_score; #include maps/mp/teams/_teams; #include maps/mp/gametypes/_globallogic_audio; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; -main() +main() //checked matches cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -80,7 +84,7 @@ main() maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "ctf_flag_enemy", 0 ); } -onprecachegametype() +onprecachegametype() //checked matches cerberus output { game[ "flag_dropped_sound" ] = "mp_war_objective_lost"; game[ "flag_recovered_sound" ] = "mp_war_objective_taken"; @@ -122,15 +126,17 @@ onprecachegametype() game[ "strings" ][ "score_limit_reached" ] = &"MP_CAP_LIMIT_REACHED"; } -onstartgametype() +onstartgametype() //checked changed to match cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { game[ "switchedsides" ] = 0; } + /* /# setdebugsideswitch( game[ "switchedsides" ] ); #/ + */ setclientnamemode( "auto_change" ); maps/mp/gametypes/_globallogic_score::resetteamscores(); setobjectivetext( "allies", &"OBJECTIVES_CTF" ); @@ -189,19 +195,15 @@ onstartgametype() level.spawn_axis = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_axis" ); level.spawn_allies = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_allies" ); level.spawn_start = []; - _a256 = level.teams; - _k256 = getFirstArrayKey( _a256 ); - while ( isDefined( _k256 ) ) + foreach ( team in level.teams ) { - team = _a256[ _k256 ]; level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_" + team + "_start" ); - _k256 = getNextArrayKey( _a256, _k256 ); } thread updategametypedvars(); thread ctf(); } -shouldplayovertimeround() +shouldplayovertimeround() //checked matches cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -234,7 +236,7 @@ shouldplayovertimeround() return 0; } -minutesandsecondsstring( milliseconds ) +minutesandsecondsstring( milliseconds ) //checked matches cerberus output { minutes = floor( milliseconds / 60000 ); milliseconds -= minutes * 60000; @@ -249,7 +251,7 @@ minutesandsecondsstring( milliseconds ) } } -setmatchscorehudelemforteam( team ) +setmatchscorehudelemforteam( team ) //checked changed to match cerberus output { if ( !isDefined( game[ "overtime_round" ] ) ) { @@ -259,21 +261,18 @@ setmatchscorehudelemforteam( team ) { self settext( minutesandsecondsstring( game[ "ctf_overtime_best_time" ] ) ); } + else if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team ) + { + self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) ); + return; + } else { - if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team ) - { - self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) ); - return; - } - else - { - self settext( &"" ); - } + self settext( &"" ); } } -onroundswitch() +onroundswitch() //checked matches cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -283,7 +282,7 @@ onroundswitch() game[ "switchedsides" ] = !game[ "switchedsides" ]; } -onendgame( winningteam ) +onendgame( winningteam ) //checked changed to match cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -294,7 +293,6 @@ onendgame( winningteam ) game[ "ctf_overtime_first_winner" ] = winningteam; game[ "ctf_overtime_time_to_beat" ] = maps/mp/gametypes/_globallogic_utils::gettimepassed(); } - return; } else { @@ -304,7 +302,7 @@ onendgame( winningteam ) } } -onroundendgame( winningteam ) +onroundendgame( winningteam ) //checked changed to match cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -325,24 +323,17 @@ onroundendgame( winningteam ) level.enddefeatreasontext = &"MPUI_CTF_OVERTIME_DEFEAT_DID_NOT_DEFEND"; } } - else + else if ( !isDefined( winningteam ) || winningteam == "tie" ) { - if ( !isDefined( winningteam ) || winningteam == "tie" ) - { - return "tie"; - } + return "tie"; } return winningteam; } if ( level.roundscorecarry == 0 ) { - _a402 = level.teams; - _k402 = getFirstArrayKey( _a402 ); - while ( isDefined( _k402 ) ) + foreach ( team in level.teams ) { - team = _a402[ _k402 ]; [[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] ); - _k402 = getNextArrayKey( _a402, _k402 ); } winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" ); } @@ -353,7 +344,7 @@ onroundendgame( winningteam ) return winner; } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { self.isflagcarrier = 0; self.flagcarried = undefined; @@ -361,7 +352,7 @@ onspawnplayerunified() maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked matches cerberus output { self.isflagcarrier = 0; self.flagcarried = undefined; @@ -383,9 +374,11 @@ onspawnplayer( predictedspawn ) { spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( level.spawn_allies ); } + /* /# assert( isDefined( spawnpoint ) ); #/ + */ if ( predictedspawn ) { self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); @@ -396,7 +389,7 @@ onspawnplayer( predictedspawn ) } } -updategametypedvars() +updategametypedvars() //checked matches cerberus output { level.flagcapturetime = getgametypesetting( "captureTime" ); level.flagtouchreturntime = getgametypesetting( "defuseTime" ); @@ -417,7 +410,7 @@ updategametypedvars() } } -createflag( trigger ) +createflag( trigger ) //checked matches cerberus output { if ( isDefined( trigger.target ) ) { @@ -466,7 +459,7 @@ createflag( trigger ) return flag; } -createflagzone( trigger ) +createflagzone( trigger ) //checked changed to match cerberus output { visuals = []; entityteam = trigger.script_team; @@ -474,7 +467,7 @@ createflagzone( trigger ) { entityteam = getotherteam( entityteam ); } - flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, -1 ), istring( entityteam + "_base" ) ); + flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, 0 ), istring( entityteam + "_base" ) ); flagzone maps/mp/gametypes/_gameobjects::allowuse( "friendly" ); flagzone maps/mp/gametypes/_gameobjects::setusetime( 0 ); flagzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_CAPTURING_FLAG" ); @@ -485,7 +478,7 @@ createflagzone( trigger ) flag = level.teamflags[ entityteam ]; flag.flagbase = flagzone; flagzone.flag = flag; - tracestart = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 ); + tracestart = trigger.origin + vectorScale( ( 0, 0, 1 ), 32 ); traceend = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 ); trace = bullettrace( tracestart, traceend, 0, undefined ); upangles = vectorToAngle( trace[ "normal" ] ); @@ -497,7 +490,7 @@ createflagzone( trigger ) return flagzone; } -createflaghint( team, origin ) +createflaghint( team, origin ) //checked matches cerberus output { radius = 128; height = 64; @@ -509,7 +502,7 @@ createflaghint( team, origin ) return trigger; } -ctf() +ctf() //checked changed to match cerberus output { level.flags = []; level.teamflags = []; @@ -549,31 +542,32 @@ ctf() flag_triggers = getentarray( "ctf_flag_pickup_trig", "targetname" ); if ( !isDefined( flag_triggers ) || flag_triggers.size != 2 ) { + /* /# maps/mp/_utility::error( "Not enough ctf_flag_pickup_trig triggers found in map. Need two." ); #/ + */ return; } - index = 0; - while ( index < flag_triggers.size ) + for ( index = 0; index < flag_triggers.size; index++ ) { trigger = flag_triggers[ index ]; flag = createflag( trigger ); team = flag maps/mp/gametypes/_gameobjects::getownerteam(); level.flags[ level.flags.size ] = flag; level.teamflags[ team ] = flag; - index++; } flag_zones = getentarray( "ctf_flag_zone_trig", "targetname" ); if ( !isDefined( flag_zones ) || flag_zones.size != 2 ) { + /* /# maps/mp/_utility::error( "Not enough ctf_flag_zone_trig triggers found in map. Need two." ); #/ + */ return; } - index = 0; - while ( index < flag_zones.size ) + for ( index = 0; index < flag_zones.size; index++ ) { trigger = flag_zones[ index ]; flagzone = createflagzone( trigger ); @@ -583,19 +577,18 @@ ctf() level.flaghints[ team ] = createflaghint( team, trigger.origin ); facing_angle = getDvarInt( "scr_ctf_spawnPointFacingAngle" ); setspawnpointsbaseweight( getotherteamsmask( team ), trigger.origin, facing_angle, level.spawnsystem.objective_facing_bonus ); - index++; } createreturnmessageelems(); } -ctf_icon_hide() +ctf_icon_hide() //checked matches cerberus output { level waittill( "game_ended" ); level.teamflags[ "allies" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" ); level.teamflags[ "axis" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" ); } -removeinfluencers() +removeinfluencers() //checked matches cerberus output { if ( isDefined( self.spawn_influencer_enemy_carrier ) ) { @@ -614,7 +607,7 @@ removeinfluencers() } } -ondrop( player ) +ondrop( player ) //checked matches cerberus output { if ( isDefined( player ) ) { @@ -693,7 +686,7 @@ ondrop( player ) self.spawn_influencer_dropped = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, flag_origin, ss.ctf_dropped_influencer_radius, ss.ctf_dropped_influencer_score, player_team_mask | enemy_team_mask, "ctf_flag_dropped,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_dropped_influencer_score_curve ), level.idleflagreturntime, self.trigger ); } -onpickup( player ) +onpickup( player ) //checked matches cerberus output { carrierkilledby = self.carrierkilledby; self.carrierkilledby = undefined; @@ -792,17 +785,19 @@ onpickup( player ) } } -onpickupmusicstate( player ) +onpickupmusicstate( player ) //checked changed at own discretion { self endon( "disconnect" ); self endon( "death" ); wait 6; - if ( player.isflagcarrier ) + if (player.isFlagCarrier) { + //imported from bo1 ctf.gsc + player thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "SUSPENSE", false, false); } } -ishome() +ishome() //checked matches cerberus output { if ( isDefined( self.carrier ) ) { @@ -815,7 +810,7 @@ ishome() return 1; } -returnflag() +returnflag() //checked matches cerberus output { team = self maps/mp/gametypes/_gameobjects::getownerteam(); otherteam = getotherteam( team ); @@ -838,7 +833,7 @@ returnflag() maps/mp/gametypes/_globallogic_audio::leaderdialog( "theyreturn_flag", otherteam, "ctf_flag" ); } -oncapture( player ) +oncapture( player ) //checked matches cerberus output { team = player.pers[ "team" ]; enemyteam = getotherteam( team ); @@ -883,13 +878,13 @@ oncapture( player ) flag removeinfluencers(); } -giveflagcapturexp( player ) +giveflagcapturexp( player ) //checked matches cerberus output { maps/mp/_scoreevents::processscoreevent( "flag_capture", player ); player recordgameevent( "capture" ); } -onreset() +onreset() //checked matches cerberus output { update_hints(); team = self maps/mp/gametypes/_gameobjects::getownerteam(); @@ -908,7 +903,7 @@ onreset() self clearreturnflaghudelems(); } -getotherflag( flag ) +getotherflag( flag ) //checked matches cerberus output { if ( flag == level.flags[ 0 ] ) { @@ -917,12 +912,11 @@ getotherflag( flag ) return level.flags[ 0 ]; } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { - while ( isDefined( attacker ) && isplayer( attacker ) ) + if ( isDefined( attacker ) && isplayer( attacker ) ) { - index = 0; - while ( index < level.flags.size ) + for ( index = 0; index < level.flags.size; index++ ) { flagteam = "invalidTeam"; inflagzone = 0; @@ -959,7 +953,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi if ( level.flags[ index ].ownerteam == attacker.pers[ "team" ] ) { defendedflag = 1; - break; } else { @@ -973,7 +966,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi if ( level.flags[ index ].ownerteam == attacker.pers[ "team" ] ) { defendedflag = 1; - break; } else { @@ -1016,19 +1008,17 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "defending" ); } } - index++; } } - if ( !isDefined( self.isflagcarrier ) || !self.isflagcarrier ) + else if ( !isDefined( self.isflagcarrier ) || !self.isflagcarrier ) { return; } if ( isDefined( attacker ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] ) { - while ( isDefined( self.flagcarried ) ) + if ( isDefined( self.flagcarried ) ) { - index = 0; - while ( index < level.flags.size ) + for ( index = 0; index < level.flags.size; index++ ) { currentflag = level.flags[ index ]; if ( currentflag.ownerteam == self.team ) @@ -1043,10 +1033,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } } - else - { - index++; - } } } attacker recordgameevent( "kill_carrier" ); @@ -1054,7 +1040,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -createreturnmessageelems() +createreturnmessageelems() //checked matches cerberus output { level.returnmessageelems = []; level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1,4, "allies" ); @@ -1079,7 +1065,7 @@ createreturnmessageelems() level.returnmessageelems[ "axis" ][ "axis" ].archived = 0; } -returnflagaftertimemsg( time ) +returnflagaftertimemsg( time ) //checked matches cerberus output { if ( level.touchreturn || level.idleflagreturntime == 0 ) { @@ -1096,19 +1082,23 @@ returnflagaftertimemsg( time ) } } -returnflaghudelems( time ) +returnflaghudelems( time ) //checked matches cerberus output { self endon( "picked_up" ); level endon( "game_ended" ); ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); + /* /# assert( !level.returnmessageelems[ "axis" ][ ownerteam ].alpha ); #/ + */ level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 1; level.returnmessageelems[ "axis" ][ ownerteam ] settimer( time ); + /* /# assert( !level.returnmessageelems[ "allies" ][ ownerteam ].alpha ); #/ + */ level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 1; level.returnmessageelems[ "allies" ][ ownerteam ] settimer( time ); if ( time <= 0 ) @@ -1122,16 +1112,16 @@ returnflaghudelems( time ) return 1; } -clearreturnflaghudelems() +clearreturnflaghudelems() //checked matches cerberus output { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 0; level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 0; } -resetflagbaseeffect() +resetflagbaseeffect() //checked matches cerberus output { - wait 0,1; + wait 0.1; if ( isDefined( self.baseeffect ) ) { self.baseeffect delete(); @@ -1146,7 +1136,7 @@ resetflagbaseeffect() triggerfx( self.baseeffect ); } -turn_on() +turn_on() //checked matches cerberus output { if ( level.hardcoremode ) { @@ -1155,12 +1145,12 @@ turn_on() self.origin = self.original_origin; } -turn_off() +turn_off() //checked matches cerberus output { self.origin = ( self.original_origin[ 0 ], self.original_origin[ 1 ], self.original_origin[ 2 ] - 10000 ); } -update_hints() +update_hints() //checked matches cerberus output { allied_flag = level.teamflags[ "allies" ]; axis_flag = level.teamflags[ "axis" ]; @@ -1186,7 +1176,7 @@ update_hints() } } -claim_trigger( trigger ) +claim_trigger( trigger ) //checked matches cerberus output { self endon( "disconnect" ); self clientclaimtrigger( trigger ); @@ -1194,7 +1184,7 @@ claim_trigger( trigger ) self clientreleasetrigger( trigger ); } -createflagspawninfluencer( entityteam ) +createflagspawninfluencer( entityteam ) //checked matches cerberus output { ctf_friendly_base_influencer_score = level.spawnsystem.ctf_friendly_base_influencer_score; ctf_friendly_base_influencer_score_curve = level.spawnsystem.ctf_friendly_base_influencer_score_curve; @@ -1209,7 +1199,7 @@ createflagspawninfluencer( entityteam ) self.spawn_influencer_enemy = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, self.trigger.origin, ctf_enemy_base_influencer_radius, ctf_enemy_base_influencer_score, other_team_mask, "ctf_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ctf_enemy_base_influencer_score_curve ) ); } -ctf_gamemodespawndvars( reset_dvars ) +ctf_gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.ctf_friendly_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_ctf_friendly_base_influencer_score", "0", reset_dvars ); @@ -1229,7 +1219,7 @@ ctf_gamemodespawndvars( reset_dvars ) ss.ctf_dropped_influencer_radius = set_dvar_float_if_unset( "scr_spawn_ctf_dropped_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars ); } -ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) +ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output { teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ); if ( isDefined( self.isflagcarrier ) && self.isflagcarrier ) @@ -1239,7 +1229,7 @@ ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) return teamkill_penalty; } -ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) +ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output { teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "kill" ); if ( isDefined( self.isflagcarrier ) && self.isflagcarrier ) @@ -1248,3 +1238,5 @@ ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) } return int( teamkill_score ); } + + diff --git a/patch_mp/maps/mp/gametypes/dem.gsc b/patch_mp/maps/mp/gametypes/dem.gsc index 39baf51..f312bb7 100644 --- a/patch_mp/maps/mp/gametypes/dem.gsc +++ b/patch_mp/maps/mp/gametypes/dem.gsc @@ -11,12 +11,17 @@ #include maps/mp/_medals; #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; +#include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_rank; #include maps/mp/gametypes/_globallogic_defaults; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; +#include maps/mp/_utility; #include common_scripts/utility; -main() + +main() //checked matches cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -68,7 +73,7 @@ main() } } -onprecachegametype() +onprecachegametype() //checked matches cerberus output { game[ "bombmodelname" ] = "t5_weapon_briefcase_bomb_world"; game[ "bombmodelnameobj" ] = "t5_weapon_briefcase_bomb_world"; @@ -107,27 +112,27 @@ onprecachegametype() precachestring( &"MP_TIME_EXTENDED" ); } -dem_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) +dem_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output { teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ); - if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting ) + if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting ) { teamkill_penalty *= level.teamkillpenaltymultiplier; } return teamkill_penalty; } -dem_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) +dem_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output { teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "team_kill" ); - if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting ) + if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting ) { teamkill_score *= level.teamkillscoremultiplier; } return int( teamkill_score ); } -onroundswitch() +onroundswitch() //checked matches cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -149,14 +154,13 @@ onroundswitch() } } -getbetterteam() +getbetterteam() //checked changed to match cerberus output { kills[ "allies" ] = 0; kills[ "axis" ] = 0; deaths[ "allies" ] = 0; deaths[ "axis" ] = 0; - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; team = player.pers[ "team" ]; @@ -165,29 +169,22 @@ getbetterteam() kills[ team ] += player.kills; deaths[ team ] += player.deaths; } - i++; } if ( kills[ "allies" ] > kills[ "axis" ] ) { return "allies"; } - else + else if ( kills[ "axis" ] > kills[ "allies" ] ) { - if ( kills[ "axis" ] > kills[ "allies" ] ) - { - return "axis"; - } + return "axis"; } if ( deaths[ "allies" ] < deaths[ "axis" ] ) { return "allies"; } - else + else if ( deaths[ "axis" ] < deaths[ "allies" ] ) { - if ( deaths[ "axis" ] < deaths[ "allies" ] ) - { - return "axis"; - } + return "axis"; } if ( randomint( 2 ) == 0 ) { @@ -196,7 +193,7 @@ getbetterteam() return "axis"; } -gamemodespawndvars( reset_dvars ) +gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.dem_enemy_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_dem_enemy_base_influencer_score", "-500", reset_dvars ); @@ -204,7 +201,7 @@ gamemodespawndvars( reset_dvars ) ss.dem_enemy_base_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dem_enemy_base_influencer_radius", "" + ( 15 * get_player_height() ), reset_dvars ); } -onstartgametype() +onstartgametype() //checked changed to match cerberus output { setbombtimer( "A", 0 ); setmatchflag( "bomb_timer_a", 0 ); @@ -275,8 +272,8 @@ onstartgametype() allowed[ 3 ] = "dem"; maps/mp/gametypes/_gameobjects::main( allowed ); maps/mp/gametypes/_spawning::create_map_placed_influencers(); - level.spawnmins = ( 0, 0, 1 ); - level.spawnmaxs = ( 0, 0, 1 ); + level.spawnmins = ( 0, 0, 0 ); + level.spawnmaxs = ( 0, 0, 0 ); maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_attacker_a" ); maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_attacker_b" ); maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_defender_a" ); @@ -318,7 +315,7 @@ onstartgametype() thread bombs(); } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { self.isplanting = 0; self.isdefusing = 0; @@ -326,7 +323,7 @@ onspawnplayerunified() maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked matches cerberus output { if ( !predictedspawn ) { @@ -362,9 +359,11 @@ onspawnplayer( predictedspawn ) } } spawnpoints = maps/mp/gametypes/_spawnlogic::getspawnpointarray( spawnpointname ); + /* /# assert( spawnpoints.size ); #/ + */ spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints ); if ( predictedspawn ) { @@ -376,17 +375,16 @@ onspawnplayer( predictedspawn ) } } -dem_playerspawnedcb() +dem_playerspawnedcb() //checked matches cerberus output { level notify( "spawned_player" ); } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { thread checkallowspectating(); bombzone = undefined; - index = 0; - while ( index < level.bombzones.size ) + for ( index = 0; index < level.bombzones.size; index++ ) { if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded ) { @@ -403,10 +401,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi break; } } - else - { - index++; - } } if ( isDefined( bombzone ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] ) { @@ -426,9 +420,11 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } else { + /* /# attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" ); #/ + */ } } else if ( !isDefined( attacker.dem_defends ) ) @@ -450,9 +446,11 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } else { + /* /# attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFENSIVE CREDIT AS BOOSTING PREVENTION" ); #/ + */ } } if ( self.isplanting == 1 ) @@ -465,13 +463,13 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -checkallowspectating() +checkallowspectating() //checked changed to match cerberus output { self endon( "disconnect" ); wait 0,05; update = 0; - if ( level.numliveslivesleft = self.pers[ "lives" ]; - && !level.alivecount[ game[ "attackers" ] ] && !livesleft ) + livesleft = !level.numlives && !self.pers["lives"]; + if ( !level.alivecount[ game[ "attackers" ] ] && !livesleft ) { level.spectateoverride[ game[ "attackers" ] ].allowenemyspectate = 1; update = 1; @@ -487,7 +485,7 @@ checkallowspectating() } } -dem_endgame( winningteam, endreasontext ) +dem_endgame( winningteam, endreasontext ) //checked matches cerberus output { if ( isDefined( winningteam ) && winningteam != "tie" ) { @@ -496,7 +494,7 @@ dem_endgame( winningteam, endreasontext ) thread maps/mp/gametypes/_globallogic::endgame( winningteam, endreasontext ); } -ondeadevent( team ) +ondeadevent( team ) //checked changed to match cerberus output { if ( level.bombexploded || level.bombdefused ) { @@ -521,16 +519,13 @@ ondeadevent( team ) } dem_endgame( game[ "defenders" ], game[ "strings" ][ game[ "attackers" ] + "_eliminated" ] ); } - else + else if ( team == game[ "defenders" ] ) { - if ( team == game[ "defenders" ] ) - { - dem_endgame( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] ); - } + dem_endgame( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] ); } } -ononeleftevent( team ) +ononeleftevent( team ) //checked matches cerberus output { if ( level.bombexploded || level.bombdefused ) { @@ -539,7 +534,7 @@ ononeleftevent( team ) warnlastplayer( team ); } -ontimelimit() +ontimelimit() //checked changed to match cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -548,14 +543,12 @@ ontimelimit() else if ( level.teambased ) { bombzonesleft = 0; - index = 0; - while ( index < level.bombzones.size ) + for ( index = 0; index < level.bombzones.size; index++ ) { if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded ) { bombzonesleft++; } - index++; } if ( bombzonesleft == 0 ) { @@ -572,7 +565,7 @@ ontimelimit() } } -warnlastplayer( team ) +warnlastplayer( team ) //checked changed to match cerberus output { if ( !isDefined( level.warnedlastplayer ) ) { @@ -584,8 +577,7 @@ warnlastplayer( team ) } level.warnedlastplayer[ team ] = 1; players = level.players; - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { player = players[ i ]; if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && isDefined( player.pers[ "class" ] ) ) @@ -595,10 +587,6 @@ warnlastplayer( team ) break; } } - else - { - i++; - } } if ( i == players.size ) { @@ -607,12 +595,12 @@ warnlastplayer( team ) players[ i ] thread givelastattackerwarning(); } -givelastattackerwarning() +givelastattackerwarning() //checked changed to match cerberus output { self endon( "death" ); self endon( "disconnect" ); fullhealthtime = 0; - interval = 0,05; + interval = 0.05; while ( 1 ) { if ( self.health != self.maxhealth ) @@ -628,14 +616,11 @@ givelastattackerwarning() { break; } - else - { - } } self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "sudden_death" ); } -updategametypedvars() +updategametypedvars() //checked matches cerberus output { level.planttime = getgametypesetting( "plantTime" ); level.defusetime = getgametypesetting( "defuseTime" ); @@ -650,7 +635,7 @@ updategametypedvars() level.playerdefensivemax = getgametypesetting( "maxPlayerDefensive" ); } -resetbombzone() +resetbombzone() //checked matches cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -673,7 +658,7 @@ resetbombzone() self.useweapon = "briefcase_bomb_mp"; } -setupfordefusing() +setupfordefusing() //checked matches cerberus output { self maps/mp/gametypes/_gameobjects::allowuse( "friendly" ); self maps/mp/gametypes/_gameobjects::setusetime( level.defusetime ); @@ -687,7 +672,7 @@ setupfordefusing() self maps/mp/gametypes/_gameobjects::setvisibleteam( "any" ); } -bombs() +bombs() //checked changed to match cerberus output { level.bombaplanted = 0; level.bombbplanted = 0; @@ -719,39 +704,32 @@ bombs() trigger delete(); defusetrig delete(); visuals[ 0 ] delete(); - _a831 = clipbrushes; - _k831 = getFirstArrayKey( _a831 ); - while ( isDefined( _k831 ) ) + foreach ( clip in clipbrushes ) { - clip = _a831[ _k831 ]; clip delete(); - _k831 = getNextArrayKey( _a831, _k831 ); } + index++; + continue; } - else bombsiteteamowner = "neutral"; + bombsiteteamowner = "neutral"; bombsiteallowuse = "any"; scriptlabel = "_a"; } - else + else if ( scriptlabel == "_overtime" ) { - if ( scriptlabel == "_overtime" ) + trigger delete(); + defusetrig delete(); + visuals[ 0 ] delete(); + foreach ( clip in clipbrushes ) { - trigger delete(); - defusetrig delete(); - visuals[ 0 ] delete(); - _a846 = clipbrushes; - _k846 = getFirstArrayKey( _a846 ); - while ( isDefined( _k846 ) ) - { - clip = _a846[ _k846 ]; - clip delete(); - _k846 = getNextArrayKey( _a846, _k846 ); - } + clip delete(); } + index++; + continue; } - else name = istring( scriptlabel ); + name = istring( scriptlabel ); precachestring( name ); - bombzone = maps/mp/gametypes/_gameobjects::createuseobject( bombsiteteamowner, trigger, visuals, ( 0, 0, 1 ), name ); + bombzone = maps/mp/gametypes/_gameobjects::createuseobject( bombsiteteamowner, trigger, visuals, ( 0, 0, 0 ), name ); bombzone maps/mp/gametypes/_gameobjects::allowuse( bombsiteallowuse ); bombzone maps/mp/gametypes/_gameobjects::setusetime( level.planttime ); bombzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_PLANTING_EXPLOSIVE" ); @@ -770,25 +748,22 @@ bombs() bombzone.oncantuse = ::oncantuse; bombzone.useweapon = "briefcase_bomb_mp"; bombzone.visuals[ 0 ].killcament = spawn( "script_model", bombzone.visuals[ 0 ].origin + vectorScale( ( 0, 0, 1 ), 128 ) ); - i = 0; - while ( i < visuals.size ) + for ( i = 0; i < visuals.size; i++ ) { if ( isDefined( visuals[ i ].script_exploder ) ) { bombzone.exploderindex = visuals[ i ].script_exploder; break; } - else - { - i++; - } } level.bombzones[ level.bombzones.size ] = bombzone; bombzone.bombdefusetrig = defusetrig; + /* /# assert( isDefined( bombzone.bombdefusetrig ) ); #/ - bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, 1 ), 10000 ); + */ + bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, -1 ), 10000 ); bombzone.bombdefusetrig.label = scriptlabel; dem_enemy_base_influencer_score = level.spawnsystem.dem_enemy_base_influencer_score; dem_enemy_base_influencer_score_curve = level.spawnsystem.dem_enemy_base_influencer_score_curve; @@ -797,25 +772,21 @@ bombs() bombzone.spawninfluencer = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, trigger.origin, dem_enemy_base_influencer_radius, dem_enemy_base_influencer_score, team_mask, "dem_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( dem_enemy_base_influencer_score_curve ) ); index++; } - index = 0; - while ( index < level.bombzones.size ) + for ( index = 0; index < level.bombzones.size; index++ ) { array = []; - otherindex = 0; - while ( otherindex < level.bombzones.size ) + for ( otherindex = 0; otherindex < level.bombzones.size; otherindex++ ) { if ( otherindex != index ) { array[ array.size ] = level.bombzones[ otherindex ]; } - otherindex++; } level.bombzones[ index ].otherbombzones = array; - index++; } } -onbeginuse( player ) +onbeginuse( player ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { timeremaining = maps/mp/gametypes/_globallogic_utils::gettimeremaining(); if ( timeremaining <= ( level.planttime * 1000 ) ) @@ -842,20 +813,19 @@ onbeginuse( player ) bomblabel++; continue; } - else + dist = distancesquared( player.origin, bomb.origin ); + if ( dist < bestdistance ) { - dist = distancesquared( player.origin, bomb.origin ); - if ( dist < bestdistance ) - { - bestdistance = dist; - closestbomb = bomb; - } + bestdistance = dist; + closestbomb = bomb; } bomblabel++; } + /* /# assert( isDefined( closestbomb ) ); #/ + */ player.defusing = closestbomb; closestbomb hide(); } @@ -868,7 +838,7 @@ onbeginuse( player ) player playsound( "fly_bomb_raise_plr" ); } -onenduse( team, player, result ) +onenduse( team, player, result ) //checked matches cerberus output { if ( !isDefined( player ) ) { @@ -891,12 +861,12 @@ onenduse( team, player, result ) } } -oncantuse( player ) +oncantuse( player ) //checked matches cerberus output { player iprintlnbold( &"MP_CANT_PLANT_WITHOUT_BOMB" ); } -onuseobject( player ) +onuseobject( player ) //checked matches cerberus output { team = player.team; enemyteam = getotherteam( team ); @@ -925,9 +895,11 @@ onuseobject( player ) } else { + /* /# player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU PLANT CREDIT AS BOOSTING PREVENTION" ); -#/ +#/ + */ } level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_PLANTED_BY", player ); maps/mp/gametypes/_globallogic_audio::leaderdialog( "bomb_planted" ); @@ -954,9 +926,11 @@ onuseobject( player ) } else { + /* /# player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFUSE CREDIT AS BOOSTING PREVENTION" ); #/ + */ } level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_DEFUSED_BY", player ); thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "DEM_WE_DEFUSE", team, 0, 0, 5 ); @@ -965,7 +939,7 @@ onuseobject( player ) } } -ondrop( player ) +ondrop( player ) //checked matches cerberus output { if ( !level.bombplanted ) { @@ -983,7 +957,7 @@ ondrop( player ) maps/mp/_utility::playsoundonplayers( game[ "bomb_dropped_sound" ], game[ "attackers" ] ); } -onpickup( player ) +onpickup( player ) //checked matches cerberus output { player.isbombcarrier = 1; self maps/mp/gametypes/_gameobjects::set3dicon( "friendly", "waypoint_defend" ); @@ -996,11 +970,11 @@ onpickup( player ) maps/mp/_utility::playsoundonplayers( game[ "bomb_recovered_sound" ], game[ "attackers" ] ); } -onreset() +onreset() //checked matches cerberus output { } -bombreset( label, reason ) +bombreset( label, reason ) //checked matches cerberus output { if ( label == "_a" ) { @@ -1020,13 +994,13 @@ bombreset( label, reason ) self.visuals[ 0 ] maps/mp/gametypes/_globallogic_utils::stoptickingsound(); } -dropbombmodel( player, site ) +dropbombmodel( player, site ) //checked matches cerberus output { trace = bullettrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ), 0, player ); tempangle = randomfloat( 360 ); forward = ( cos( tempangle ), sin( tempangle ), 0 ); forward = vectornormalize( forward - vectorScale( trace[ "normal" ], vectordot( forward, trace[ "normal" ] ) ) ); - dropangles = vectorToAngle( forward ); + dropangles = vectorToAngles( forward ); if ( isDefined( trace[ "surfacetype" ] ) && trace[ "surfacetype" ] == "water" ) { phystrace = playerphysicstrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ) ); @@ -1093,18 +1067,16 @@ bombplanted( destroyedobj, player ) destroyedobj.visuals[ 0 ] radiusdamage( explosionorigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" ); } currenttime = getTime(); - while ( isDefined( level.lastbombexplodetime ) && level.lastbombexplodebyteam == player.team ) + if ( isDefined( level.lastbombexplodetime ) && level.lastbombexplodebyteam == player.team ) { - while ( ( level.lastbombexplodetime + 10000 ) > currenttime ) + if ( ( level.lastbombexplodetime + 10000 ) > currenttime ) { - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { if ( level.players[ i ].team == player.team ) { level.players[ i ] maps/mp/_challenges::bothbombsdetonatewithintime(); } - i++; } } } @@ -1119,14 +1091,12 @@ bombplanted( destroyedobj, player ) exploder( destroyedobj.exploderindex ); } bombzonesleft = 0; - index = 0; - while ( index < level.bombzones.size ) + for ( index = 0; index < level.bombzones.size; index++ ) { if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded ) { bombzonesleft++; } - index++; } destroyedobj maps/mp/gametypes/_gameobjects::disableobject(); if ( bombzonesleft == 0 ) @@ -1165,7 +1135,7 @@ bombplanted( destroyedobj, player ) } } -gettimelimit() +gettimelimit() //checked matches cerberus output { timelimit = maps/mp/gametypes/_globallogic_defaults::default_gettimelimit(); if ( isDefined( game[ "overtime_round" ] ) ) @@ -1179,7 +1149,7 @@ gettimelimit() return timelimit; } -shouldplayovertimeround() +shouldplayovertimeround() //checked matches cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -1192,15 +1162,17 @@ shouldplayovertimeround() return 0; } -waitlongdurationwithbombtimeupdate( whichbomb, duration ) +waitlongdurationwithbombtimeupdate( whichbomb, duration ) //checked matches cerberus output { if ( duration == 0 ) { return; } + /* /# assert( duration > 0 ); #/ + */ starttime = getTime(); endtime = getTime() + ( duration * 1000 ); while ( getTime() < endtime ) @@ -1210,25 +1182,27 @@ waitlongdurationwithbombtimeupdate( whichbomb, duration ) { endtime += 250; updatebombtimers( whichbomb, endtime ); - wait 0,25; + wait 0.25; } } + /* /# if ( getTime() != endtime ) { println( "SCRIPT WARNING: gettime() = " + getTime() + " NOT EQUAL TO endtime = " + endtime ); #/ } + */ while ( isDefined( level.hostmigrationtimer ) ) { endtime += 250; updatebombtimers( whichbomb, endtime ); - wait 0,25; + wait 0.25; } return getTime() - starttime; } -updatebombtimers( whichbomb, detonatetime ) +updatebombtimers( whichbomb, detonatetime ) //checked matches cerberus output { if ( whichbomb == "_a" ) { @@ -1243,7 +1217,7 @@ updatebombtimers( whichbomb, detonatetime ) setmatchflag( "bomb_timer" + whichbomb, int( detonatetime ) ); } -bombdefused() +bombdefused() //checked matches cerberus output { self.tickingobject maps/mp/gametypes/_globallogic_utils::stoptickingsound(); self maps/mp/gametypes/_gameobjects::allowuse( "none" ); @@ -1254,7 +1228,7 @@ bombdefused() self bombreset( self.label, "bomb_defused" ); } -play_one_left_underscore( team, enemyteam ) +play_one_left_underscore( team, enemyteam ) //checked matches cerberus output { wait 3; if ( !isDefined( team ) || !isDefined( enemyteam ) ) @@ -1265,7 +1239,7 @@ play_one_left_underscore( team, enemyteam ) thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "DEM_ONE_LEFT_UNDERSCORE", enemyteam, 0, 0 ); } -updateeventsperminute() +updateeventsperminute() //checked matches cerberus output { if ( !isDefined( self.eventsperminute ) ) { @@ -1285,7 +1259,7 @@ updateeventsperminute() } } -isscoreboosting( player, flag ) +isscoreboosting( player, flag ) //checked matches cerberus output { if ( !level.rankedmatch ) { @@ -1301,3 +1275,5 @@ isscoreboosting( player, flag ) } return 0; } + + diff --git a/patch_mp/maps/mp/gametypes/dom.gsc b/patch_mp/maps/mp/gametypes/dom.gsc index af7ac07..1693a53 100644 --- a/patch_mp/maps/mp/gametypes/dom.gsc +++ b/patch_mp/maps/mp/gametypes/dom.gsc @@ -4,15 +4,19 @@ #include maps/mp/_scoreevents; #include maps/mp/gametypes/_globallogic_utils; #include maps/mp/teams/_teams; +#include maps/mp/_challenges; #include maps/mp/gametypes/_globallogic_score; #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; +#include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_globallogic_audio; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; #include common_scripts/utility; -main() +main() //checked matches cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -62,11 +66,11 @@ main() maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "gamemode_changing_c", 0 ); } -onprecachegametype() +onprecachegametype() //checked matches cerberus output { } -onstartgametype() +onstartgametype() //checked changed to match cerberus output { setobjectivetext( "allies", &"OBJECTIVES_DOM" ); setobjectivetext( "axis", &"OBJECTIVES_DOM" ); @@ -110,13 +114,9 @@ onstartgametype() setdemointermissionpoint( spawnpoint.origin, spawnpoint.angles ); level.spawn_all = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_dom_spawn" ); level.spawn_start = []; - _a194 = level.teams; - _k194 = getFirstArrayKey( _a194 ); - while ( isDefined( _k194 ) ) + foreach ( team in level.teams ) { - team = _a194[ _k194 ]; level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_dom_spawn_" + team + "_start" ); - _k194 = getNextArrayKey( _a194, _k194 ); } flagspawns = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_dom_spawn_flag_a" ); level.startpos[ "allies" ] = level.spawn_start[ "allies" ][ 0 ].origin; @@ -133,12 +133,12 @@ onstartgametype() level change_dom_spawns(); } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked partially changed to match cerberus output did change while loop to for loop see github for more info { spawnpoint = undefined; spawnteam = self.pers[ "team" ]; @@ -161,12 +161,9 @@ onspawnplayer( predictedspawn ) i++; continue; } - else + if ( team == enemyteam ) { - if ( team == enemyteam ) - { - enemyflagsowned++; - } + enemyflagsowned++; } i++; } @@ -199,9 +196,11 @@ onspawnplayer( predictedspawn ) { spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( level.spawn_start[ spawnteam ] ); } + /* /# assert( isDefined( spawnpoint ) ); #/ + */ if ( predictedspawn ) { self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); @@ -212,10 +211,9 @@ onspawnplayer( predictedspawn ) } } -onendgame( winningteam ) +onendgame( winningteam ) //checked changed to match cerberus output { - i = 0; - while ( i < level.domflags.size ) + for ( i = 0; i < level.domflags.size; i++ ) { domflag = level.domflags[ i ]; domflag maps/mp/gametypes/_gameobjects::allowuse( "none" ); @@ -225,21 +223,16 @@ onendgame( winningteam ) label = domflag maps/mp/gametypes/_gameobjects::getlabel(); maps/mp/_challenges::holdflagentirematch( team, label ); } - i++; } } -onroundendgame( roundwinner ) +onroundendgame( roundwinner ) //checked changed to match cerberus output { if ( level.roundscorecarry == 0 ) { - _a318 = level.teams; - _k318 = getFirstArrayKey( _a318 ); - while ( isDefined( _k318 ) ) + foreach ( team in level.teams ) { - team = _a318[ _k318 ]; [[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] ); - _k318 = getNextArrayKey( _a318, _k318 ); } winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" ); } @@ -250,7 +243,7 @@ onroundendgame( roundwinner ) return winner; } -updategametypedvars() +updategametypedvars() //checked matches cerberus output { level.flagcapturetime = getgametypesetting( "captureTime" ); level.playercapturelpm = getgametypesetting( "maxPlayerEventsPerMinute" ); @@ -259,7 +252,7 @@ updategametypedvars() level.playerdefensivemax = getgametypesetting( "maxPlayerDefensive" ); } -domflags() +domflags() //checked changed to match cerberus output { level.laststatus[ "allies" ] = 0; level.laststatus[ "axis" ] = 0; @@ -286,28 +279,25 @@ domflags() secondaryflags = getentarray( "flag_secondary", "targetname" ); if ( ( primaryflags.size + secondaryflags.size ) < 2 ) { + /* /# println( "^1Not enough domination flags found in level!" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); return; } level.flags = []; - index = 0; - while ( index < primaryflags.size ) + for ( index = 0; index < primaryflags.size; index++ ) { level.flags[ level.flags.size ] = primaryflags[ index ]; - index++; } - index = 0; - while ( index < secondaryflags.size ) + for ( index = 0; index < secondaryflags.size; index++ ) { level.flags[ level.flags.size ] = secondaryflags[ index ]; - index++; } level.domflags = []; - index = 0; - while ( index < level.flags.size ) + for ( index = 0; index < level.flags.size; index++ ) { trigger = level.flags[ index ]; if ( isDefined( trigger.target ) ) @@ -322,7 +312,7 @@ domflags() visuals[ 0 ] setmodel( level.flagmodel[ "neutral" ] ); name = istring( trigger.script_label ); precachestring( name ); - domflag = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", trigger, visuals, ( 1, 1, 1 ), name ); + domflag = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", trigger, visuals, ( 0, 0, 0 ), name ); domflag maps/mp/gametypes/_gameobjects::allowuse( "enemy" ); domflag maps/mp/gametypes/_gameobjects::setusetime( level.flagcapturetime ); domflag maps/mp/gametypes/_gameobjects::setusetext( &"MP_CAPTURING_FLAG" ); @@ -335,8 +325,8 @@ domflags() domflag.onuseupdate = ::onuseupdate; domflag.onenduse = ::onenduse; domflag.onupdateuserate = ::onupdateuserate; - tracestart = visuals[ 0 ].origin + vectorScale( ( 1, 1, 1 ), 32 ); - traceend = visuals[ 0 ].origin + vectorScale( ( 1, 1, 1 ), 32 ); + tracestart = visuals[ 0 ].origin + vectorScale( ( 0, 0, 1 ), 32 ); + traceend = visuals[ 0 ].origin + vectorScale( ( 0, 0, -1 ), 32 ); trace = bullettrace( tracestart, traceend, 0, undefined ); upangles = vectorToAngle( trace[ "normal" ] ); domflag.baseeffectforward = anglesToForward( upangles ); @@ -347,24 +337,23 @@ domflags() level.flags[ index ].nearbyspawns = []; domflag.levelflag = level.flags[ index ]; level.domflags[ level.domflags.size ] = domflag; - index++; } level.bestspawnflag = []; level.bestspawnflag[ "allies" ] = getunownedflagneareststart( "allies", undefined ); level.bestspawnflag[ "axis" ] = getunownedflagneareststart( "axis", level.bestspawnflag[ "allies" ] ); - index = 0; - while ( index < level.domflags.size ) + for ( index = 0; index < level.domflags.size; index++ ) { level.domflags[ index ] createflagspawninfluencers(); - index++; } flagsetup(); + /* /# thread domdebug(); #/ + */ } -getunownedflagneareststart( team, excludeflag ) +getunownedflagneareststart( team, excludeflag ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { best = undefined; bestdistsq = undefined; @@ -377,22 +366,20 @@ getunownedflagneareststart( team, excludeflag ) i++; continue; } - else + distsq = distancesquared( flag.origin, level.startpos[ team ] ); + if ( isDefined( excludeflag ) && flag != excludeflag || !isDefined( best ) && distsq < bestdistsq ) { - distsq = distancesquared( flag.origin, level.startpos[ team ] ); - if ( isDefined( excludeflag ) && flag != excludeflag || !isDefined( best ) && distsq < bestdistsq ) - { - bestdistsq = distsq; - best = flag; - } + bestdistsq = distsq; + best = flag; } i++; } return best; } -domdebug() +domdebug() //dev call did not check { + /* /# while ( 1 ) { @@ -438,9 +425,10 @@ domdebug() } #/ } + */ } -onbeginuse( player ) +onbeginuse( player ) //checked matches cerberus output { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); self.didstatusnotify = 0; @@ -460,9 +448,9 @@ onbeginuse( player ) } } -onuseupdate( team, progress, change ) +onuseupdate( team, progress, change ) //checked matches cerberus output { - if ( progress > 0,05 && change && !self.didstatusnotify ) + if ( progress > 0.05 && change && !self.didstatusnotify ) { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); if ( ownerteam == "neutral" ) @@ -479,7 +467,7 @@ onuseupdate( team, progress, change ) } } -flushalldialog() +flushalldialog() //checked matches cerberus output { maps/mp/gametypes/_globallogic_audio::flushgroupdialog( "gamemode_objective_a" ); maps/mp/gametypes/_globallogic_audio::flushgroupdialog( "gamemode_objective_b" ); @@ -489,7 +477,7 @@ flushalldialog() maps/mp/gametypes/_globallogic_audio::flushgroupdialog( "gamemode_changing_c" ); } -statusdialog( dialog, team, group, flushgroup ) +statusdialog( dialog, team, group, flushgroup ) //checked matches cerberus output { if ( isDefined( flushgroup ) ) { @@ -498,7 +486,7 @@ statusdialog( dialog, team, group, flushgroup ) maps/mp/gametypes/_globallogic_audio::leaderdialog( dialog, team, group ); } -onenduse( team, player, success ) +onenduse( team, player, success ) //checked matches cerberus output { if ( !success ) { @@ -506,7 +494,7 @@ onenduse( team, player, success ) } } -resetflagbaseeffect() +resetflagbaseeffect() //checked matches cerberus output { if ( isDefined( self.baseeffect ) ) { @@ -522,7 +510,7 @@ resetflagbaseeffect() triggerfx( self.baseeffect ); } -onuse( player ) +onuse( player ) //checked changed to match cerberus output { level notify( "flag_captured" ); team = player.pers[ "team" ]; @@ -534,9 +522,11 @@ onuse( player ) setdvar( "scr_obj" + self maps/mp/gametypes/_gameobjects::getlabel(), team ); self resetflagbaseeffect(); level.usestartspawns = 0; + /* /# assert( team != "neutral" ); #/ + */ isbflag = 0; string = &""; switch( label ) @@ -558,73 +548,77 @@ onuse( player ) string = &"MP_DOM_FLAG_E_CAPTURED_BY"; break; default: - } + break; + } + /* /# - assert( string != &"" ); + assert( string != &"" ); #/ - touchlist = []; - touchkeys = getarraykeys( self.touchlist[ team ] ); - i = 0; - while ( i < touchkeys.size ) + */ + touchlist = []; + touchkeys = getarraykeys( self.touchlist[ team ] ); + for ( i = 0; i < touchkeys.size; i++ ) + { + touchlist[ touchkeys[ i ] ] = self.touchlist[ team ][ touchkeys[ i ] ]; + } + thread give_capture_credit( touchlist, string, oldteam, isbflag ); + bbprint( "mpobjective", "gametime %d objtype %s label %s team %s", getTime(), "dom_capture", label, team ); + if ( oldteam == "neutral" ) + { + self.singleowner = 1; + otherteam = getotherteam( team ); + thread printandsoundoneveryone( team, undefined, &"", undefined, "mp_war_objective_taken" ); + thread playsoundonplayers( "mus_dom_captured" + "_" + level.teampostfix[ team ] ); + if ( getteamflagcount( team ) == level.flags.size ) { - touchlist[ touchkeys[ i ] ] = self.touchlist[ team ][ touchkeys[ i ] ]; - i++; + statusdialog( "secure_all", team, "gamemode_objective" ); + statusdialog( "lost_all", otherteam, "gamemode_objective" ); + flushalldialog(); } - thread give_capture_credit( touchlist, string, oldteam, isbflag ); - bbprint( "mpobjective", "gametime %d objtype %s label %s team %s", getTime(), "dom_capture", label, team ); - if ( oldteam == "neutral" ) + else { - self.singleowner = 1; - otherteam = getotherteam( team ); - thread printandsoundoneveryone( team, undefined, &"", undefined, "mp_war_objective_taken" ); - thread playsoundonplayers( "mus_dom_captured" + "_" + level.teampostfix[ team ] ); - if ( getteamflagcount( team ) == level.flags.size ) - { - statusdialog( "secure_all", team, "gamemode_objective" ); - statusdialog( "lost_all", otherteam, "gamemode_objective" ); - flushalldialog(); - } - else statusdialog( "secured" + self.label, team, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); + statusdialog( "secured" + self.label, team, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); statusdialog( "enemy" + self.label, otherteam, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_enemy", otherteam ); maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_friend", team ); } + } + else + { + self.singleowner = 0; + thread printandsoundoneveryone( team, oldteam, &"", &"", "mp_war_objective_taken", "mp_war_objective_lost", "" ); + if ( getteamflagcount( team ) == level.flags.size ) + { + statusdialog( "secure_all", team, "gamemode_objective" ); + statusdialog( "lost_all", oldteam, "gamemode_objective" ); + flushalldialog(); + } else { - self.singleowner = 0; - thread printandsoundoneveryone( team, oldteam, &"", &"", "mp_war_objective_taken", "mp_war_objective_lost", "" ); - if ( getteamflagcount( team ) == level.flags.size ) + statusdialog( "secured" + self.label, team, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); + if ( randomint( 2 ) ) { - statusdialog( "secure_all", team, "gamemode_objective" ); - statusdialog( "lost_all", oldteam, "gamemode_objective" ); - flushalldialog(); + statusdialog( "lost" + self.label, oldteam, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); } else { - statusdialog( "secured" + self.label, team, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); - if ( randomint( 2 ) ) - { - statusdialog( "lost" + self.label, oldteam, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); - } - else - { - statusdialog( "enemy" + self.label, oldteam, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); - } - maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_enemy", oldteam ); - maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_friend", team ); + statusdialog( "enemy" + self.label, oldteam, "gamemode_objective" + self.label, "gamemode_changing" + self.label ); } - level.bestspawnflag[ oldteam ] = self.levelflag; + maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_enemy", oldteam ); + maps/mp/gametypes/_globallogic_audio::play_2d_on_team( "mpl_flagcapture_sting_friend", team ); } - if ( dominated_challenge_check() ) - { - level thread totaldomination( team ); - } - self update_spawn_influencers( team ); - level change_dom_spawns(); + level.bestspawnflag[ oldteam ] = self.levelflag; + } + if ( dominated_challenge_check() ) + { + level thread totaldomination( team ); + } + self update_spawn_influencers( team ); + level change_dom_spawns(); } } -totaldomination( team ) +totaldomination( team ) //checked matches cerberus output { level endon( "flag_captured" ); level endon( "game_ended" ); @@ -632,7 +626,7 @@ totaldomination( team ) maps/mp/_challenges::totaldomination( team ); } -watchforbflagcap() +watchforbflagcap() //checked matches cerberus output { level endon( "game_ended" ); level endon( "endWatchForBFlagCapAfterTime" ); @@ -644,22 +638,21 @@ watchforbflagcap() } } -endwatchforbflagcapaftertime( time ) +endwatchforbflagcapaftertime( time ) //checked matches cerberus output { level endon( "game_ended" ); wait 60; level notify( "endWatchForBFlagCapAfterTime" ); } -give_capture_credit( touchlist, string, lastownerteam, isbflag ) +give_capture_credit( touchlist, string, lastownerteam, isbflag ) //checked changed to match cerberus output { time = getTime(); - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); self updatecapsperminute( lastownerteam ); players = getarraykeys( touchlist ); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { player_from_touchlist = touchlist[ players[ i ] ].player; player_from_touchlist updatecapsperminute( lastownerteam ); @@ -695,19 +688,20 @@ give_capture_credit( touchlist, string, lastownerteam, isbflag ) player_from_touchlist addplayerstatwithgametype( "CAPTURES", 1 ); } else - { + { + /* /# player_from_touchlist iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU CAPTURE CREDIT AS BOOSTING PREVENTION" ); #/ + */ } level thread maps/mp/_popups::displayteammessagetoall( string, player_from_touchlist ); - i++; } } -delayedleaderdialog( sound, team, label ) +delayedleaderdialog( sound, team, label ) //checked matches cerberus output { - wait 0,1; + wait 0.1; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); if ( !isDefined( label ) ) { @@ -716,7 +710,7 @@ delayedleaderdialog( sound, team, label ) maps/mp/gametypes/_globallogic_audio::leaderdialog( sound, team, "gamemode_objective" + label ); } -updatedomscores() +updatedomscores() //checked matches cerberus output { while ( !level.gameended ) { @@ -752,12 +746,12 @@ updatedomscores() } } -onscoreclosemusic() +onscoreclosemusic() //checked matches cerberus output { axisscore = [[ level._getteamscore ]]( "axis" ); alliedscore = [[ level._getteamscore ]]( "allies" ); scorelimit = level.scorelimit; - scorethreshold = scorelimit * 0,1; + scorethreshold = scorelimit * 0.1; scoredif = abs( axisscore - alliedscore ); scorethresholdstart = abs( scorelimit - scorethreshold ); scorelimitcheck = scorelimit - 10; @@ -773,6 +767,7 @@ onscoreclosemusic() { currentscore = axisscore; } + /* /# if ( getDvarInt( #"0BC4784C" ) > 0 ) { @@ -786,6 +781,7 @@ onscoreclosemusic() println( "Music System Domination - scoreThresholdStart " + scorethresholdstart ); #/ } + */ if ( scoredif <= scorethreshold && scorethresholdstart <= currentscore && level.playingactionmusic != 1 ) { thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "TIME_OUT", "both" ); @@ -797,7 +793,7 @@ onscoreclosemusic() } } -onroundswitch() +onroundswitch() //checked matches cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -811,7 +807,7 @@ onroundswitch() } } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { if ( isDefined( attacker ) && isplayer( attacker ) ) { @@ -827,8 +823,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi scoreeventprocessed = 1; } } - index = 0; - while ( index < level.flags.size ) + for ( index = 0; index < level.flags.size; index++ ) { flagteam = "invalidTeam"; inflagzone = 0; @@ -843,7 +838,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi if ( level.flags[ index ] getflagteam() == attacker.pers[ "team" ] || level.flags[ index ] getflagteam() == "neutral" ) { defendedflag = 1; - break; } else { @@ -857,7 +851,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi if ( level.flags[ index ] getflagteam() == attacker.pers[ "team" ] || level.flags[ index ] getflagteam() == "neutral" ) { defendedflag = 1; - break; } else { @@ -883,9 +876,14 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "defending" ); break; } - else /# - attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFENSIVE CREDIT AS BOOSTING PREVENTION" ); -#/ + else + { + /* + /# + attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFENSIVE CREDIT AS BOOSTING PREVENTION" ); + #/ + */ + } } if ( defendedflag ) { @@ -909,12 +907,13 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "assaulting" ); break; } - else /# - attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" ); -#/ + /* + /# + attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" ); + #/ + */ } } - index++; } if ( self.touchtriggers.size && attacker.pers[ "team" ] != self.pers[ "team" ] ) { @@ -933,7 +932,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -killwhilecontesting( flag ) +killwhilecontesting( flag ) //checked matches cerberus output { self notify( "killWhileContesting" ); self endon( "killWhileContesting" ); @@ -963,7 +962,7 @@ killwhilecontesting( flag ) self.clearenemycount = 0; } -updateattackermultikills() +updateattackermultikills() //checked matches cerberus output { self endon( "disconnect" ); level endon( "game_ended" ); @@ -982,177 +981,134 @@ updateattackermultikills() self.recentdomattackerkillcount = 0; } -getteamflagcount( team ) +getteamflagcount( team ) //checked changed to match cerberus output { score = 0; - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { if ( level.domflags[ i ] maps/mp/gametypes/_gameobjects::getownerteam() == team ) { score++; } - i++; } return score; } -getflagteam() +getflagteam() //checked matches cerberus output { return self.useobj maps/mp/gametypes/_gameobjects::getownerteam(); } -getboundaryflags() +getboundaryflags() //checked changed to match cerberus output { bflags = []; - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { - j = 0; - while ( j < level.flags[ i ].adjflags.size ) + for ( j = 0; j < level.flags[i].adjflags.size; j++ ) { if ( level.flags[ i ].useobj maps/mp/gametypes/_gameobjects::getownerteam() != level.flags[ i ].adjflags[ j ].useobj maps/mp/gametypes/_gameobjects::getownerteam() ) { bflags[ bflags.size ] = level.flags[ i ]; - i++; - continue; - } - else - { - j++; + break; } } - i++; } return bflags; } -getboundaryflagspawns( team ) +getboundaryflagspawns( team ) //checked changed to match cerberus output { spawns = []; bflags = getboundaryflags(); - i = 0; - while ( i < bflags.size ) + for ( i = 0; i < bflags.size; i++ ) { if ( isDefined( team ) && bflags[ i ] getflagteam() != team ) { - i++; - continue; + break; } - else + for ( j = 0; j < bflags[i].nearbyspawns.size; j++ ) { - j = 0; - while ( j < bflags[ i ].nearbyspawns.size ) - { - spawns[ spawns.size ] = bflags[ i ].nearbyspawns[ j ]; - j++; - } + spawns[ spawns.size ] = bflags[ i ].nearbyspawns[ j ]; } - i++; } return spawns; } -getspawnsboundingflag( avoidflag ) +getspawnsboundingflag( avoidflag ) //checked changed to match cerberus output { spawns = []; - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { flag = level.flags[ i ]; if ( flag == avoidflag ) { - i++; - continue; + break; } - else isbounding = 0; - j = 0; - while ( j < flag.adjflags.size ) + isbounding = 0; + for ( j = 0; j < flag.adjflags.size; j++ ) { if ( flag.adjflags[ j ] == avoidflag ) { isbounding = 1; break; } - else - { - j++; - } } if ( !isbounding ) { - i++; - continue; + break; } - else + for ( j = 0; j < flag.nearbyspawns.size; j++ ) { - j = 0; - while ( j < flag.nearbyspawns.size ) - { - spawns[ spawns.size ] = flag.nearbyspawns[ j ]; - j++; - } + spawns[ spawns.size ] = flag.nearbyspawns[ j ]; } - i++; } return spawns; } -getownedandboundingflagspawns( team ) +getownedandboundingflagspawns( team ) //checked changed to match cerberus output { spawns = []; - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { if ( level.flags[ i ] getflagteam() == team ) { - s = 0; - while ( s < level.flags[ i ].nearbyspawns.size ) + for ( s = 0; s < level.flags[i].nearbyspawns.size; s++ ) { spawns[ spawns.size ] = level.flags[ i ].nearbyspawns[ s ]; - s++; } } - else j = 0; - while ( j < level.flags[ i ].adjflags.size ) + + for ( j = 0; j < level.flags[i].adjflags.size; j++ ) { if ( level.flags[ i ].adjflags[ j ] getflagteam() == team ) { - s = 0; - while ( s < level.flags[ i ].nearbyspawns.size ) + for ( s = 0; s < level.flags[i].nearbyspawns.size; s++ ) { spawns[ spawns.size ] = level.flags[ i ].nearbyspawns[ s ]; - s++; } } - else j++; } - i++; } return spawns; } -getownedflagspawns( team ) +getownedflagspawns( team ) //checked changed to match cerberus output { spawns = []; - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { - while ( level.flags[ i ] getflagteam() == team ) + if ( level.flags[ i ] getflagteam() == team ) { - s = 0; - while ( s < level.flags[ i ].nearbyspawns.size ) + for ( s = 0; s < level.flags[i].nearbyspawns.size; s++ ) { spawns[ spawns.size ] = level.flags[ i ].nearbyspawns[ s ]; - s++; } } - i++; } return spawns; } -flagsetup() +flagsetup() //checked partially changed to match cerberus output did not change while loops to for loops see github for more info { maperrors = []; descriptorsbylinkname = []; @@ -1163,8 +1119,7 @@ flagsetup() { closestdist = undefined; closestdesc = undefined; - j = 0; - while ( j < descriptors.size ) + for ( j = 0; j < descriptors.size; j++ ) { dist = distance( flags[ i ].origin, descriptors[ j ].origin ); if ( !isDefined( closestdist ) || dist < closestdist ) @@ -1172,34 +1127,26 @@ flagsetup() closestdist = dist; closestdesc = descriptors[ j ]; } - j++; } if ( !isDefined( closestdesc ) ) { maperrors[ maperrors.size ] = "there is no flag_descriptor in the map! see explanation in dom.gsc"; break; } - else + if ( isDefined( closestdesc.flag ) ) { - if ( isDefined( closestdesc.flag ) ) - { - maperrors[ maperrors.size ] = "flag_descriptor with script_linkname "" + closestdesc.script_linkname + "" is nearby more than one flag; is there a unique descriptor near each flag?"; - i++; - continue; - } - else - { - flags[ i ].descriptor = closestdesc; - closestdesc.flag = flags[ i ]; - descriptorsbylinkname[ closestdesc.script_linkname ] = closestdesc; - } + maperrors[ maperrors.size ] = "flag_descriptor with script_linkname " + closestdesc.script_linkname + " is nearby more than one flag; is there a unique descriptor near each flag?"; i++; + continue; } + flags[ i ].descriptor = closestdesc; + closestdesc.flag = flags[ i ]; + descriptorsbylinkname[ closestdesc.script_linkname ] = closestdesc; + i++; } - while ( maperrors.size == 0 ) + if ( maperrors.size == 0 ) { - i = 0; - while ( i < flags.size ) + for ( i = 0; i < flags.size; i++ ) { if ( isDefined( flags[ i ].descriptor.script_linkto ) ) { @@ -1219,23 +1166,16 @@ flagsetup() j++; continue; } - else + adjflag = otherdesc.flag; + if ( adjflag == flags[ i ] ) { - adjflag = otherdesc.flag; - if ( adjflag == flags[ i ] ) - { - maperrors[ maperrors.size ] = "flag_descriptor with script_linkname "" + flags[ i ].descriptor.script_linkname + "" linked to itself"; - j++; - continue; - } - else - { - flags[ i ].adjflags[ flags[ i ].adjflags.size ] = adjflag; - } + maperrors[ maperrors.size ] = "flag_descriptor with script_linkname "" + flags[ i ].descriptor.script_linkname + "" linked to itself"; + j++; + continue; } + flags[ i ].adjflags[ flags[ i ].adjflags.size ] = adjflag; j++; } - i++; } } spawnpoints = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_dom_spawn" ); @@ -1247,36 +1187,30 @@ flagsetup() desc = descriptorsbylinkname[ spawnpoints[ i ].script_linkto ]; if ( !isDefined( desc ) || desc.targetname != "flag_descriptor" ) { - maperrors[ maperrors.size ] = "Spawnpoint at " + spawnpoints[ i ].origin + "" linked to "" + spawnpoints[ i ].script_linkto + "" which does not exist as a script_linkname of any entity with a targetname of flag_descriptor (or, if it does, that flag_descriptor has not been assigned to a flag)"; + maperrors[ maperrors.size ] = "Spawnpoint at " + spawnpoints[ i ].origin + " linked to " + spawnpoints[ i ].script_linkto + " which does not exist as a script_linkname of any entity with a targetname of flag_descriptor (or, if it does, that flag_descriptor has not been assigned to a flag)"; i++; continue; } - else - { - nearestflag = desc.flag; - } - else - { - nearestflag = undefined; - nearestdist = undefined; - j = 0; - while ( j < flags.size ) - { - dist = distancesquared( flags[ j ].origin, spawnpoints[ i ].origin ); - if ( !isDefined( nearestflag ) || dist < nearestdist ) - { - nearestflag = flags[ j ]; - nearestdist = dist; - } - j++; - } - } - nearestflag.nearbyspawns[ nearestflag.nearbyspawns.size ] = spawnpoints[ i ]; + nearestflag = desc.flag; + break; } + nearestflag = undefined; + nearestdist = undefined; + for ( j = 0; j < flags.size; j++ ) + { + dist = distancesquared( flags[ j ].origin, spawnpoints[ i ].origin ); + if ( !isDefined( nearestflag ) || dist < nearestdist ) + { + nearestflag = flags[ j ]; + nearestdist = dist; + } + } + nearestflag.nearbyspawns[ nearestflag.nearbyspawns.size ] = spawnpoints[ i ]; i++; } if ( maperrors.size > 0 ) { + /* /# println( "^1------------ Map Errors ------------" ); i = 0; @@ -1288,25 +1222,21 @@ flagsetup() println( "^1------------------------------------" ); maps/mp/_utility::error( "Map errors. See above" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); return; } } -createflagspawninfluencers() +createflagspawninfluencers() //checked changed to match cerberus output { ss = level.spawnsystem; - flag_index = 0; - while ( flag_index < level.flags.size ) + for ( flag_index = 0; flag_index < level.flags.size; flag_index++ ) { if ( level.domflags[ flag_index ] == self ) { break; } - else - { - flag_index++; - } } abc = []; abc[ 0 ] = "A"; @@ -1318,8 +1248,9 @@ createflagspawninfluencers() self update_spawn_influencers( "neutral" ); } -update_spawn_influencers( team ) +update_spawn_influencers( team ) //checked matches cerberus output { + /* /# assert( isDefined( self.neutral_flag_influencer ) ); #/ @@ -1329,6 +1260,7 @@ update_spawn_influencers( team ) /# assert( isDefined( self.enemy_flag_influencer ) ); #/ + */ if ( team == "neutral" ) { enableinfluencer( self.neutral_flag_influencer, 1 ); @@ -1345,7 +1277,7 @@ update_spawn_influencers( team ) } } -dom_gamemodespawndvars( reset_dvars ) +dom_gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.dom_owned_flag_influencer_score = []; @@ -1371,7 +1303,7 @@ dom_gamemodespawndvars( reset_dvars ) ss.dom_unowned_flag_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dom_unowned_flag_influencer_radius", "" + ( 15 * get_player_height() ), reset_dvars ); } -addspawnpointsforflag( team, flag_team, flagspawnname ) +addspawnpointsforflag( team, flag_team, flagspawnname ) //checked matches cerberus output { if ( game[ "switchedsides" ] ) { @@ -1384,7 +1316,7 @@ addspawnpointsforflag( team, flag_team, flagspawnname ) } } -change_dom_spawns() +change_dom_spawns() //checked changed to match cerberus output { maps/mp/gametypes/_spawnlogic::clearspawnpoints(); maps/mp/gametypes/_spawnlogic::addspawnpoints( "allies", "mp_dom_spawn" ); @@ -1392,36 +1324,31 @@ change_dom_spawns() flag_number = level.flags.size; if ( dominated_check() ) { - i = 0; - while ( i < flag_number ) + for ( i = 0; i < flag_number; i++ ) { label = level.flags[ i ].useobj maps/mp/gametypes/_gameobjects::getlabel(); flagspawnname = "mp_dom_spawn_flag" + label; maps/mp/gametypes/_spawnlogic::addspawnpoints( "allies", flagspawnname ); maps/mp/gametypes/_spawnlogic::addspawnpoints( "axis", flagspawnname ); - i++; } } - else i = 0; - while ( i < flag_number ) + for ( i = 0; i < flag_number; i++ ) { label = level.flags[ i ].useobj maps/mp/gametypes/_gameobjects::getlabel(); flagspawnname = "mp_dom_spawn_flag" + label; flag_team = level.flags[ i ] getflagteam(); addspawnpointsforflag( "allies", flag_team, flagspawnname ); addspawnpointsforflag( "axis", flag_team, flagspawnname ); - i++; } maps/mp/gametypes/_spawning::updateallspawnpoints(); } -dominated_challenge_check() +dominated_challenge_check() //checked changed to match cerberus output { num_flags = level.flags.size; allied_flags = 0; axis_flags = 0; - i = 0; - while ( i < num_flags ) + for ( i = 0; i < num_flags; i++ ) { flag_team = level.flags[ i ] getflagteam(); if ( flag_team == "allies" ) @@ -1440,41 +1367,35 @@ dominated_challenge_check() { return 0; } - i++; } return 1; } -dominated_check() +dominated_check() //checked changed to match cerberus output { num_flags = level.flags.size; allied_flags = 0; axis_flags = 0; - i = 0; - while ( i < num_flags ) + for ( i = 0; i < num_flags; i++ ) { flag_team = level.flags[ i ] getflagteam(); if ( flag_team == "allies" ) { allied_flags++; } - else + else if ( flag_team == "axis" ) { - if ( flag_team == "axis" ) - { - axis_flags++; - } + axis_flags++; } if ( allied_flags > 0 && axis_flags > 0 ) { return 0; } - i++; } return 1; } -updatecapsperminute( lastownerteam ) +updatecapsperminute( lastownerteam ) //checked matches cerberus output { if ( !isDefined( self.capsperminute ) ) { @@ -1498,7 +1419,7 @@ updatecapsperminute( lastownerteam ) } } -isscoreboosting( player, flag ) +isscoreboosting( player, flag ) //checked matches cerberus output { if ( !level.rankedmatch ) { @@ -1515,7 +1436,7 @@ isscoreboosting( player, flag ) return 0; } -onupdateuserate() +onupdateuserate() //checked changed to match cerberus output { if ( !isDefined( self.contested ) ) { @@ -1528,12 +1449,10 @@ onupdateuserate() { self.contested = 1; } - else + else if ( previousstate == 1 ) { - if ( previousstate == 1 ) - { - self notify( "contest_over" ); - } - self.contested = 0; + self notify( "contest_over" ); } + self.contested = 0; } + diff --git a/patch_mp/maps/mp/gametypes/hq.gsc b/patch_mp/maps/mp/gametypes/hq.gsc index a0ea0ec..b19f08f 100644 --- a/patch_mp/maps/mp/gametypes/hq.gsc +++ b/patch_mp/maps/mp/gametypes/hq.gsc @@ -12,10 +12,13 @@ #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_globallogic_score; +#include maps/mp/gametypes/_gameobjects; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; -main() +main() //checked changed to match cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -52,7 +55,7 @@ main() level.delayplayer = getgametypesetting( "delayPlayer" ); level.randomhqspawn = getgametypesetting( "randomObjectiveLocations" ); level.maxrespawndelay = getgametypesetting( "timeLimit" ) * 60; - level.iconoffset = vectorScale( ( 0, 0, 0 ), 32 ); + level.iconoffset = vectorScale( ( 0, 0, 1 ), 32 ); level.onrespawndelay = ::getrespawndelay; game[ "dialog" ][ "gametype" ] = "hq_start"; game[ "dialog" ][ "gametype_hardcore" ] = "hchq_start"; @@ -70,13 +73,10 @@ main() } } -updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) +updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) //checked changed at own discretion { - _a77 = level.teams; - _k77 = getFirstArrayKey( _a77 ); - while ( isDefined( _k77 ) ) + foreach ( team in level.teams ) { - team = _a77[ _k77 ]; if ( defenderteam == team ) { game[ "strings" ][ "objective_hint_" + team ] = defendmessage; @@ -85,23 +85,18 @@ updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) { game[ "strings" ][ "objective_hint_" + team ] = attackmessage; } - _k77 = getNextArrayKey( _a77, _k77 ); } } -updateobjectivehintmessage( message ) +updateobjectivehintmessage( message ) //checked changed to match cerberus output { - _a92 = level.teams; - _k92 = getFirstArrayKey( _a92 ); - while ( isDefined( _k92 ) ) + foreach ( team in level.teams ) { - team = _a92[ _k92 ]; game[ "strings" ][ "objective_hint_" + team ] = message; - _k92 = getNextArrayKey( _a92, _k92 ); } } -getrespawndelay() +getrespawndelay() //checked matches cerberus output { self.lowermessageoverride = undefined; if ( !isDefined( level.radio.gameobject ) ) @@ -138,7 +133,7 @@ getrespawndelay() } } -onstartgametype() +onstartgametype() //checked changed to match cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -152,11 +147,8 @@ onstartgametype() game[ "defenders" ] = oldattackers; } maps/mp/gametypes/_globallogic_score::resetteamscores(); - _a146 = level.teams; - _k146 = getFirstArrayKey( _a146 ); - while ( isDefined( _k146 ) ) + foreach ( team in level.teams ) { - team = _a146[ _k146 ]; setobjectivetext( team, &"OBJECTIVES_KOTH" ); if ( level.splitscreen ) { @@ -166,7 +158,6 @@ onstartgametype() { setobjectivescoretext( team, &"OBJECTIVES_HQ_SCORE" ); } - _k146 = getNextArrayKey( _a146, _k146 ); } level.objectivehintpreparehq = &"MP_CONTROL_HQ"; level.objectivehintcapturehq = &"MP_CAPTURE_HQ"; @@ -194,24 +185,16 @@ onstartgametype() maps/mp/gametypes/_spawning::create_map_placed_influencers(); level.spawnmins = ( 0, 0, 0 ); level.spawnmaxs = ( 0, 0, 0 ); - _a189 = level.teams; - _k189 = getFirstArrayKey( _a189 ); - while ( isDefined( _k189 ) ) + foreach ( team in level.teams ) { - team = _a189[ _k189 ]; maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" ); maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); - _k189 = getNextArrayKey( _a189, _k189 ); } maps/mp/gametypes/_spawning::updateallspawnpoints(); level.spawn_start = []; - _a200 = level.teams; - _k200 = getFirstArrayKey( _a200 ); - while ( isDefined( _k200 ) ) + foreach ( team in level.teams ) { - team = _a200[ _k200 ]; level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); - _k200 = getNextArrayKey( _a200, _k200 ); } level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs ); setmapcenter( level.mapcenter ); @@ -220,9 +203,11 @@ onstartgametype() level.spawn_all = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_tdm_spawn" ); if ( !level.spawn_all.size ) { + /* /# println( "^1No mp_tdm_spawn spawnpoints in level!" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); return; } @@ -230,7 +215,7 @@ onstartgametype() thread hqmainloop(); } -spawn_first_radio( delay ) +spawn_first_radio( delay ) //checked matches cerberus output { if ( level.randomhqspawn == 1 ) { @@ -245,7 +230,7 @@ spawn_first_radio( delay ) return; } -spawn_next_radio() +spawn_next_radio() //checked matches cerberus output { if ( level.randomhqspawn != 0 ) { @@ -260,7 +245,7 @@ spawn_next_radio() return; } -hqmainloop() +hqmainloop() //checked changed to match cerberus output { level endon( "game_ended" ); level.hqrevealtime = -100000; @@ -285,15 +270,12 @@ hqmainloop() precachestring( objective_name ); while ( level.inprematchperiod ) { - wait 0,05; + wait 0.05; } wait 5; timerdisplay = []; - _a300 = level.teams; - _k300 = getFirstArrayKey( _a300 ); - while ( isDefined( _k300 ) ) + foreach ( team in level.teams ) { - team = _a300[ _k300 ]; timerdisplay[ team ] = createservertimer( "objective", 1,4, team ); timerdisplay[ team ] setgamemodeinfopoint(); timerdisplay[ team ].label = hqspawninginstr; @@ -304,7 +286,6 @@ hqmainloop() timerdisplay[ team ].hidewheninkillcam = 1; timerdisplay[ team ].showplayerteamhudelemtospectator = 1; thread hidetimerdisplayongameend( timerdisplay[ team ] ); - _k300 = getNextArrayKey( _a300, _k300 ); } while ( 1 ) { @@ -319,27 +300,19 @@ hqmainloop() level.radio.gameobject maps/mp/gametypes/_gameobjects::setvisibleteam( "any" ); level.radio.gameobject maps/mp/gametypes/_gameobjects::setflags( 1 ); updateobjectivehintmessage( level.objectivehintpreparehq ); - _a345 = level.teams; - _k345 = getFirstArrayKey( _a345 ); - while ( isDefined( _k345 ) ) + foreach ( team in level.teams ) { - team = _a345[ _k345 ]; timerdisplay[ team ].label = hqspawninginstr; timerdisplay[ team ] settimer( level.hqspawntime ); timerdisplay[ team ].alpha = 1; - _k345 = getNextArrayKey( _a345, _k345 ); } wait level.hqspawntime; level.radio.gameobject maps/mp/gametypes/_gameobjects::setflags( 0 ); maps/mp/gametypes/_globallogic_audio::leaderdialog( "hq_online" ); } - _a360 = level.teams; - _k360 = getFirstArrayKey( _a360 ); - while ( isDefined( _k360 ) ) + foreach ( team in level.teams ) { - team = _a360[ _k360 ]; timerdisplay[ team ].alpha = 0; - _k360 = getNextArrayKey( _a360, _k360 ); } waittillframeend; maps/mp/gametypes/_globallogic_audio::leaderdialog( "obj_capture" ); @@ -360,26 +333,20 @@ hqmainloop() if ( level.hqautodestroytime ) { thread destroyhqaftertime( level.hqautodestroytime, ownerteam ); - _a395 = level.teams; - _k395 = getFirstArrayKey( _a395 ); - while ( isDefined( _k395 ) ) + foreach ( team in level.teams ) { - team = _a395[ _k395 ]; timerdisplay[ team ] settimer( level.hqautodestroytime ); - _k395 = getNextArrayKey( _a395, _k395 ); } + //wait 0.05; + continue; } - else level.hqdestroyedbytimer = 0; + level.hqdestroyedbytimer = 0; while ( 1 ) { ownerteam = level.radio.gameobject maps/mp/gametypes/_gameobjects::getownerteam(); - _a409 = level.teams; - _k409 = getFirstArrayKey( _a409 ); - while ( isDefined( _k409 ) ) + foreach ( team in level.teams ) { - team = _a409[ _k409 ]; updateobjectivehintmessages( ownerteam, level.objectivehintdefendhq, level.objectivehintdestroyhq ); - _k409 = getNextArrayKey( _a409, _k409 ); } level.radio.gameobject maps/mp/gametypes/_gameobjects::allowuse( "enemy" ); if ( !level.kothmode ) @@ -387,13 +354,10 @@ hqmainloop() level.radio.gameobject maps/mp/gametypes/_gameobjects::setusetext( &"MP_DESTROYING_HQ" ); } level.radio.gameobject.onuse = ::onradiodestroy; - while ( level.hqautodestroytime ) + if ( level.hqautodestroytime ) { - _a427 = level.teams; - _k427 = getFirstArrayKey( _a427 ); - while ( isDefined( _k427 ) ) + foreach ( team in level.teams ) { - team = _a427[ _k427 ]; if ( team == ownerteam ) { timerdisplay[ team ].label = hqdestroyedinfriendlystr; @@ -403,7 +367,6 @@ hqmainloop() timerdisplay[ team ].label = hqdestroyedinenemystr; } timerdisplay[ team ].alpha = 1; - _k427 = getNextArrayKey( _a427, _k427 ); } } level thread dropallaroundhq(); @@ -413,13 +376,10 @@ hqmainloop() { break; } - else + thread forcespawnteam( ownerteam ); + if ( isDefined( destroy_team ) ) { - thread forcespawnteam( ownerteam ); - if ( isDefined( destroy_team ) ) - { - level.radio.gameobject maps/mp/gametypes/_gameobjects::setownerteam( destroy_team ); - } + level.radio.gameobject maps/mp/gametypes/_gameobjects::setownerteam( destroy_team ); } } level.radio.gameobject maps/mp/gametypes/_gameobjects::disableobject(); @@ -427,28 +387,24 @@ hqmainloop() level.radio.gameobject maps/mp/gametypes/_gameobjects::setownerteam( "neutral" ); level.radio.gameobject maps/mp/gametypes/_gameobjects::setmodelvisibility( 0 ); level notify( "hq_reset" ); - _a462 = level.teams; - _k462 = getFirstArrayKey( _a462 ); - while ( isDefined( _k462 ) ) + foreach ( team in level.teams ) { - team = _a462[ _k462 ]; timerdisplay[ team ].alpha = 0; - _k462 = getNextArrayKey( _a462, _k462 ); } spawn_next_radio(); - wait 0,05; + wait 0.05; thread forcespawnteam( ownerteam ); wait 3; } } -hidetimerdisplayongameend( timerdisplay ) +hidetimerdisplayongameend( timerdisplay ) //checked matches cerberus output { level waittill( "game_ended" ); timerdisplay.alpha = 0; } -forcespawnteam( team ) +forcespawnteam( team ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { players = level.players; i = 0; @@ -460,19 +416,16 @@ forcespawnteam( team ) i++; continue; } - else + if ( player.pers[ "team" ] == team ) { - if ( player.pers[ "team" ] == team ) - { - player notify( "force_spawn" ); - wait 0,1; - } + player notify( "force_spawn" ); + wait 0.1; } i++; } } -onbeginuse( player ) +onbeginuse( player ) //checked matches cerberus output { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); if ( ownerteam == "neutral" ) @@ -485,12 +438,12 @@ onbeginuse( player ) } } -onenduse( team, player, success ) +onenduse( team, player, success ) //checked matches cerberus output { player notify( "event_ended" ); } -onradiocapture( player ) +onradiocapture( player ) //checked partially changed to match cerberus output did not use continue in foreach see github for more info { capture_team = player.pers[ "team" ]; player logstring( "radio captured" ); @@ -503,11 +456,8 @@ onradiocapture( player ) { self maps/mp/gametypes/_gameobjects::setusetime( level.destroytime ); } - _a550 = level.teams; - _k550 = getFirstArrayKey( _a550 ); - while ( isDefined( _k550 ) ) + foreach ( team in level.teams ) { - team = _a550[ _k550 ]; if ( team == capture_team ) { thread printonteamarg( &"MP_HQ_CAPTURED_BY", team, player ); @@ -520,21 +470,19 @@ onradiocapture( player ) maps/mp/gametypes/_globallogic_audio::leaderdialog( "hq_enemy_captured", team ); thread playsoundonplayers( "mp_war_objective_lost", team ); } - _k550 = getNextArrayKey( _a550, _k550 ); } level thread awardhqpoints( capture_team ); level notify( "hq_captured" ); player notify( "event_ended" ); } -give_capture_credit( touchlist, string ) +give_capture_credit( touchlist, string ) //checked changed to match cerberus output { time = getTime(); - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); players = getarraykeys( touchlist ); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { player_from_touchlist = touchlist[ players[ i ] ].player; player_from_touchlist maps/mp/_challenges::capturedobjective( time ); @@ -548,36 +496,32 @@ give_capture_credit( touchlist, string ) } maps/mp/_demo::bookmark( "event", getTime(), player_from_touchlist ); player_from_touchlist addplayerstatwithgametype( "CAPTURES", 1 ); - i++; } } -dropalltoground( origin, radius, stickyobjectradius ) +dropalltoground( origin, radius, stickyobjectradius ) //checked changed to match cerberus output { physicsexplosionsphere( origin, radius, radius, 0 ); - wait 0,05; + wait 0.05; maps/mp/gametypes/_weapons::dropweaponstoground( origin, radius ); maps/mp/killstreaks/_supplydrop::dropcratestoground( origin, radius ); - level notify( "drop_objects_to_ground" ); + level notify( "drop_objects_to_ground", origin, stickyobjectradius ); } -dropallaroundhq( radio ) +dropallaroundhq( radio ) //checked matches cerberus output { origin = level.radio.origin; level waittill( "hq_reset" ); dropalltoground( origin, 100, 50 ); } -onradiodestroy( firstplayer ) +onradiodestroy( firstplayer ) //checked partially changed to match cerberus output { destroyed_team = firstplayer.pers[ "team" ]; touchlist = self.touchlist[ destroyed_team ]; touchlistkeys = getarraykeys( touchlist ); - _a624 = touchlistkeys; - _k624 = getFirstArrayKey( _a624 ); - while ( isDefined( _k624 ) ) + foreach ( index in touchlistkeys ) { - index = _a624[ _k624 ]; player = touchlist[ index ].player; player logstring( "radio destroyed" ); maps/mp/_scoreevents::processscoreevent( "hq_destroyed", player ); @@ -588,7 +532,6 @@ onradiodestroy( firstplayer ) player.pers[ "destructions" ]++; player.destructions = player.pers[ "destructions" ]; } - _k624 = getNextArrayKey( _a624, _k624 ); } destroyteammessage = &"MP_HQ_DESTROYED_BY"; otherteammessage = &"MP_HQ_DESTROYED_BY_ENEMY"; @@ -598,9 +541,7 @@ onradiodestroy( firstplayer ) otherteammessage = &"MP_HQ_CAPTURED_BY_ENEMY"; } level thread maps/mp/_popups::displayteammessagetoall( destroyteammessage, player ); - _a651 = level.teams; - _k651 = getFirstArrayKey( _a651 ); - while ( isDefined( _k651 ) ) + foreach ( team in level.teams ) { team = _a651[ _k651 ]; if ( team == destroyed_team ) @@ -613,9 +554,8 @@ onradiodestroy( firstplayer ) thread printonteam( otherteammessage, team ); maps/mp/gametypes/_globallogic_audio::leaderdialog( "hq_enemy_destroyed", team ); } - _k651 = getNextArrayKey( _a651, _k651 ); } - level notify( "hq_destroyed" ); + level notify( "hq_destroyed", destroyed_team ); if ( level.kothmode ) { level thread awardhqpoints( destroyed_team ); @@ -623,7 +563,7 @@ onradiodestroy( firstplayer ) player notify( "event_ended" ); } -destroyhqaftertime( time, ownerteam ) +destroyhqaftertime( time, ownerteam ) //checked matches cerberus output { level endon( "game_ended" ); level endon( "hq_reset" ); @@ -636,7 +576,7 @@ destroyhqaftertime( time, ownerteam ) level notify( "hq_destroyed" ); } -checkplayercount( ownerteam ) +checkplayercount( ownerteam ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { lastplayeralive = undefined; players = level.players; @@ -648,16 +588,13 @@ checkplayercount( ownerteam ) i++; continue; } - else + if ( isalive( players[ i ] ) ) { - if ( isalive( players[ i ] ) ) + if ( isDefined( lastplayeralive ) ) { - if ( isDefined( lastplayeralive ) ) - { - return; - } - lastplayeralive = players[ i ]; + return; } + lastplayeralive = players[ i ]; } i++; } @@ -667,7 +604,7 @@ checkplayercount( ownerteam ) } } -awardhqpoints( team ) +awardhqpoints( team ) //checked changed at own discretion { level endon( "game_ended" ); level endon( "hq_destroyed" ); @@ -677,25 +614,20 @@ awardhqpoints( team ) while ( !level.gameended ) { maps/mp/gametypes/_globallogic_score::giveteamscoreforobjective( team, seconds ); - index = 0; - while ( index < level.players.size ) + for ( index = 0; index < level.players.size; index++ ) { player = level.players[ index ]; - if ( player.pers[ "team" ] == team ) - { - } - index++; } wait seconds; } } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked matches cerberus output { spawnpoint = undefined; if ( !level.usestartspawns ) @@ -725,9 +657,11 @@ onspawnplayer( predictedspawn ) spawnteam = self.pers[ "team" ]; spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( level.spawn_start[ spawnteam ] ); } + /* /# assert( isDefined( spawnpoint ) ); #/ + */ if ( predictedspawn ) { self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); @@ -738,12 +672,12 @@ onspawnplayer( predictedspawn ) } } -koth_playerspawnedcb() +koth_playerspawnedcb() //checked matches cerberus output { self.lowermessageoverride = undefined; } -compareradioindexes( radio_a, radio_b ) +compareradioindexes( radio_a, radio_b ) //checked matches cerberus output { script_index_a = radio_a.script_index; script_index_b = radio_b.script_index; @@ -753,16 +687,20 @@ compareradioindexes( radio_a, radio_b ) } if ( !isDefined( script_index_a ) && isDefined( script_index_b ) ) { + /* /# println( "KOTH: Missing script_index on radio at " + radio_a.origin ); #/ + */ return 1; } if ( isDefined( script_index_a ) && !isDefined( script_index_b ) ) { + /* /# println( "KOTH: Missing script_index on radio at " + radio_b.origin ); #/ + */ return 0; } if ( script_index_a > script_index_b ) @@ -772,7 +710,7 @@ compareradioindexes( radio_a, radio_b ) return 0; } -getradioarray() +getradioarray() //checked changed to match cerberus output { radios = getentarray( "hq_hardpoint", "targetname" ); if ( !isDefined( radios ) ) @@ -784,8 +722,7 @@ getradioarray() while ( swapped ) { swapped = 0; - i = 0; - while ( i < ( n - 1 ) ) + for ( i = 0; i < n - 1; i++ ) { if ( compareradioindexes( radios[ i ], radios[ i + 1 ] ) ) { @@ -794,21 +731,19 @@ getradioarray() radios[ i + 1 ] = temp; swapped = 1; } - i++; } n--; - } return radios; } -setupradios() +setupradios() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { maperrors = []; radios = getradioarray(); if ( radios.size < 2 ) { - maperrors[ maperrors.size ] = "There are not at least 2 entities with targetname "radio""; + maperrors[ maperrors.size ] = "There are not at least 2 entities with targetname radio"; } trigs = getentarray( "radiotrigger", "targetname" ); i = 0; @@ -817,63 +752,56 @@ setupradios() errored = 0; radio = radios[ i ]; radio.trig = undefined; - j = 0; - while ( j < trigs.size ) + for ( j = 0; j < trigs.size; j++ ) { if ( radio istouching( trigs[ j ] ) ) { if ( isDefined( radio.trig ) ) { - maperrors[ maperrors.size ] = "Radio at " + radio.origin + " is touching more than one "radiotrigger" trigger"; + maperrors[ maperrors.size ] = "Radio at " + radio.origin + " is touching more than one radiotrigger trigger"; errored = 1; break; } - else radio.trig = trigs[ j ]; + radio.trig = trigs[ j ]; break; } - else - { - j++; - } } if ( !isDefined( radio.trig ) ) { if ( !errored ) { - maperrors[ maperrors.size ] = "Radio at " + radio.origin + " is not inside any "radiotrigger" trigger"; + maperrors[ maperrors.size ] = "Radio at " + radio.origin + " is not inside any radiotrigger trigger"; i++; continue; } } - else - { + /* /# - assert( !errored ); + assert( !errored ); #/ - radio.trigorigin = radio.trig.origin; - visuals = []; - visuals[ 0 ] = radio; - othervisuals = getentarray( radio.target, "targetname" ); - j = 0; - while ( j < othervisuals.size ) - { - visuals[ visuals.size ] = othervisuals[ j ]; - j++; - } - objective_name = istring( "objective" ); - precachestring( objective_name ); - radio setupnodes(); - radio.gameobject = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", radio.trig, visuals, radio.origin - radio.trigorigin, objective_name ); - radio.gameobject maps/mp/gametypes/_gameobjects::disableobject(); - radio.gameobject maps/mp/gametypes/_gameobjects::setmodelvisibility( 0 ); - radio.trig.useobj = radio.gameobject; - radio setupnearbyspawns(); - radio createradiospawninfluencer(); + */ + radio.trigorigin = radio.trig.origin; + visuals = []; + visuals[ 0 ] = radio; + othervisuals = getentarray( radio.target, "targetname" ); + for ( j = 0; j < othervisuals.size; j++ ) + { + visuals[ visuals.size ] = othervisuals[ j ]; } + objective_name = istring( "objective" ); + precachestring( objective_name ); + radio setupnodes(); + radio.gameobject = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", radio.trig, visuals, radio.origin - radio.trigorigin, objective_name ); + radio.gameobject maps/mp/gametypes/_gameobjects::disableobject(); + radio.gameobject maps/mp/gametypes/_gameobjects::setmodelvisibility( 0 ); + radio.trig.useobj = radio.gameobject; + radio setupnearbyspawns(); + radio createradiospawninfluencer(); i++; } if ( maperrors.size > 0 ) { + /* /# println( "^1------------ Map Errors ------------" ); i = 0; @@ -887,6 +815,7 @@ setupradios() #/ maps/mp/gametypes/_callbacksetup::abortlevel(); return; + */ } level.radios = radios; level.prevradio = undefined; @@ -894,39 +823,31 @@ setupradios() return 1; } -setupnearbyspawns() +setupnearbyspawns() //checked changed to match cerberus output { spawns = level.spawn_all; - i = 0; - while ( i < spawns.size ) + for ( i = 0; i < spawns.size; i++ ) { spawns[ i ].distsq = distancesquared( spawns[ i ].origin, self.origin ); - i++; } - i = 1; - while ( i < spawns.size ) + for ( i = 1; i < spawns.size; i++ ) { thespawn = spawns[ i ]; - j = i - 1; - while ( j >= 0 && thespawn.distsq < spawns[ j ].distsq ) + for ( j = i - 1; j >= 0 && thespawn.distsq < spawns[j].distsq; j-- ) { spawns[ j + 1 ] = spawns[ j ]; - j--; } spawns[ j + 1 ] = thespawn; - i++; } first = []; second = []; third = []; outer = []; thirdsize = spawns.size / 3; - i = 0; - while ( i <= thirdsize ) + for ( i = 0; i <= thirdsize; i++ ) { first[ first.size ] = spawns[ i ]; - i++; } while ( i < spawns.size ) { @@ -934,8 +855,6 @@ setupnearbyspawns() if ( i <= ( thirdsize * 2 ) ) { second[ second.size ] = spawns[ i ]; - i++; - continue; } else { @@ -949,32 +868,30 @@ setupnearbyspawns() self.gameobject.outerspawns = outer; } -setupnodes() +setupnodes() //checked changed to match cerberus output { self.nodes = []; temp = spawn( "script_model", ( 0, 0, 0 ) ); maxs = self.trig getpointinbounds( 1, 1, 1 ); self.node_radius = distance( self.trig.origin, maxs ); nodes = getnodesinradius( self.trig.origin, self.node_radius, 0, self.node_radius ); - _a1009 = nodes; - _k1009 = getFirstArrayKey( _a1009 ); - while ( isDefined( _k1009 ) ) + foreach ( node in nodes ) { - node = _a1009[ _k1009 ]; temp.origin = node.origin; if ( temp istouching( self.trig ) ) { self.nodes[ self.nodes.size ] = node; } - _k1009 = getNextArrayKey( _a1009, _k1009 ); } + /* /# assert( self.nodes.size ); #/ + */ temp delete(); } -getfirstradio() +getfirstradio() //checked matches cerberus output { radio = level.radios[ 0 ]; level.prevradio2 = level.prevradio; @@ -985,7 +902,7 @@ getfirstradio() return radio; } -getnextradio() +getnextradio() //checked matches cerberus output { nextradioindex = ( level.prevradioindex + 1 ) % level.radios.size; radio = level.radios[ nextradioindex ]; @@ -995,7 +912,7 @@ getnextradio() return radio; } -pickrandomradiotospawn() +pickrandomradiotospawn() //checked matches cerberus output { level.prevradioindex = randomint( level.radios.size ); radio = level.radios[ level.prevradioindex ]; @@ -1004,12 +921,11 @@ pickrandomradiotospawn() return radio; } -shuffleradios() +shuffleradios() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { level.radiospawnqueue = []; spawnqueue = arraycopy( level.radios ); - total_left = spawnqueue.size; - while ( total_left > 0 ) + for ( total_left = spawnqueue.size; total_left > 0; total_left-- ) { index = randomint( total_left ); valid_radios = 0; @@ -1021,102 +937,79 @@ shuffleradios() radio++; continue; } - else if ( valid_radios == index ) + if ( valid_radios == index ) { if ( level.radiospawnqueue.size == 0 && isDefined( level.radio ) && level.radio == spawnqueue[ radio ] ) { radio++; continue; } - else - { - level.radiospawnqueue[ level.radiospawnqueue.size ] = spawnqueue[ radio ]; - total_left--; - continue; - } - else - { - valid_radios++; - } + level.radiospawnqueue[ level.radiospawnqueue.size ] = spawnqueue[ radio ]; + total_left--; radio++; + break; } + valid_radios++; } - total_left--; - } } -getnextradiofromqueue() +getnextradiofromqueue() //checked matches cerberus output { if ( level.radiospawnqueue.size == 0 ) { shuffleradios(); } + /* /# assert( level.radiospawnqueue.size > 0 ); #/ + */ next_radio = level.radiospawnqueue[ 0 ]; arrayremoveindex( level.radiospawnqueue, 0 ); return next_radio; } -getcountofteamswithplayers( num ) +getcountofteamswithplayers( num ) //checked changed to match cerberus output { has_players = 0; - _a1113 = level.teams; - _k1113 = getFirstArrayKey( _a1113 ); - while ( isDefined( _k1113 ) ) + foreach ( team in level.teams ) { - team = _a1113[ _k1113 ]; if ( num[ team ] > 0 ) { has_players++; } - _k1113 = getNextArrayKey( _a1113, _k1113 ); } return has_players; } -getpointcost( avgpos, origin ) +getpointcost( avgpos, origin ) //checked changed to match cerberus output { avg_distance = 0; total_error = 0; distances = []; - _a1128 = avgpos; - team = getFirstArrayKey( _a1128 ); - while ( isDefined( team ) ) + foreach ( position in avgpos ) { - position = _a1128[ team ]; distances[ team ] = distance( origin, avgpos[ team ] ); avg_distance += distances[ team ]; - team = getNextArrayKey( _a1128, team ); } avg_distance /= distances.size; - _a1136 = distances; - team = getFirstArrayKey( _a1136 ); - while ( isDefined( team ) ) + foreach ( dist in distances ) { - dist = _a1136[ team ]; err = distances[ team ] - avg_distance; total_error += err * err; - team = getNextArrayKey( _a1136, team ); } return total_error; } -pickradiotospawn() +pickradiotospawn() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { - _a1151 = level.teams; - _k1151 = getFirstArrayKey( _a1151 ); - while ( isDefined( _k1151 ) ) + foreach ( team in level.teams ) { - team = _a1151[ _k1151 ]; avgpos[ team ] = ( 0, 0, 0 ); num[ team ] = 0; - _k1151 = getNextArrayKey( _a1151, _k1151 ); } - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( isalive( player ) ) @@ -1124,7 +1017,6 @@ pickradiotospawn() avgpos[ player.pers[ "team" ] ] += player.origin; num[ player.pers[ "team" ] ]++; } - i++; } if ( getcountofteamswithplayers( num ) <= 1 ) { @@ -1137,19 +1029,16 @@ pickradiotospawn() level.prevradio = radio; return radio; } - _a1179 = level.teams; - _k1179 = getFirstArrayKey( _a1179 ); - while ( isDefined( _k1179 ) ) + foreach ( team in level.teams ) { - team = _a1179[ _k1179 ]; if ( num[ team ] == 0 ) { + avgpos[team] = undefined; } else { avgpos[ team ] /= num[ team ]; } - _k1179 = getNextArrayKey( _a1179, _k1179 ); } bestradio = undefined; lowestcost = undefined; @@ -1163,41 +1052,43 @@ pickradiotospawn() i++; continue; } - else + if ( isDefined( level.prevradio2 ) && radio == level.prevradio2 ) { - if ( isDefined( level.prevradio2 ) && radio == level.prevradio2 ) + if ( level.radios.size > 2 ) { - if ( level.radios.size > 2 ) - { - i++; - continue; - } - else cost += 262144; + i++; + continue; } - if ( !isDefined( lowestcost ) || cost < lowestcost ) + else { - lowestcost = cost; - bestradio = radio; + cost += 262144; } } + if ( !isDefined( lowestcost ) || cost < lowestcost ) + { + lowestcost = cost; + bestradio = radio; + } i++; } + /* /# assert( isDefined( bestradio ) ); #/ + */ level.prevradio2 = level.prevradio; level.prevradio = bestradio; return bestradio; } -onroundswitch() +onroundswitch() //checked matches cerberus output { game[ "switchedsides" ] = !game[ "switchedsides" ]; } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { - if ( isplayer( attacker ) && !self.touchtriggers.size || !attacker.touchtriggers.size && attacker.pers[ "team" ] == self.pers[ "team" ] ) + if ( isplayer( attacker ) || !self.touchtriggers.size && !attacker.touchtriggers.size || attacker.pers[ "team" ] == self.pers[ "team" ] ) { return; } @@ -1234,18 +1125,15 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "assaulting" ); scoreeventprocessed = 1; } - else + else if ( !medalgiven ) { - if ( !medalgiven ) - { - attacker maps/mp/_medals::offenseglobalcount(); - medalgiven = 1; - attacker addplayerstatwithgametype( "OFFENDS", 1 ); - } - maps/mp/_scoreevents::processscoreevent( "kill_enemy_while_capping_hq", attacker, undefined, sweapon ); - self recordkillmodifier( "defending" ); - scoreeventprocessed = 1; + attacker maps/mp/_medals::offenseglobalcount(); + medalgiven = 1; + attacker addplayerstatwithgametype( "OFFENDS", 1 ); } + maps/mp/_scoreevents::processscoreevent( "kill_enemy_while_capping_hq", attacker, undefined, sweapon ); + self recordkillmodifier( "defending" ); + scoreeventprocessed = 1; } if ( self.touchtriggers.size ) { @@ -1267,27 +1155,24 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi scoreeventprocessed = 1; } } - else + else if ( !medalgiven ) { - if ( !medalgiven ) + if ( isDefined( attacker.pers[ "defends" ] ) ) { - if ( isDefined( attacker.pers[ "defends" ] ) ) - { - attacker.pers[ "defends" ]++; - attacker.defends = attacker.pers[ "defends" ]; - } - attacker maps/mp/_medals::defenseglobalcount(); - medalgiven = 1; - attacker addplayerstatwithgametype( "DEFENDS", 1 ); - attacker recordgameevent( "return" ); - } - if ( !scoreeventprocessed ) - { - attacker maps/mp/_challenges::killedzoneattacker( sweapon ); - maps/mp/_scoreevents::processscoreevent( "killed_attacker", attacker, undefined, sweapon ); - self recordkillmodifier( "assaulting" ); - scoreeventprocessed = 1; + attacker.pers[ "defends" ]++; + attacker.defends = attacker.pers[ "defends" ]; } + attacker maps/mp/_medals::defenseglobalcount(); + medalgiven = 1; + attacker addplayerstatwithgametype( "DEFENDS", 1 ); + attacker recordgameevent( "return" ); + } + if ( !scoreeventprocessed ) + { + attacker maps/mp/_challenges::killedzoneattacker( sweapon ); + maps/mp/_scoreevents::processscoreevent( "killed_attacker", attacker, undefined, sweapon ); + self recordkillmodifier( "assaulting" ); + scoreeventprocessed = 1; } if ( scoreeventprocessed == 1 ) { @@ -1296,7 +1181,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -killwhilecontesting( radio ) +killwhilecontesting( radio ) //checked matches cerberus output { self notify( "killWhileContesting" ); self endon( "killWhileContesting" ); @@ -1326,17 +1211,15 @@ killwhilecontesting( radio ) self.clearenemycount = 0; } -onendgame( winningteam ) +onendgame( winningteam ) //checked changed to match cerberus output { - i = 0; - while ( i < level.radios.size ) + for ( i = 0; i < level.radios.size; i++ ) { level.radios[ i ].gameobject maps/mp/gametypes/_gameobjects::allowuse( "none" ); - i++; } } -createradiospawninfluencer() +createradiospawninfluencer() //checked matches cerberus output { hq_objective_influencer_score = level.spawnsystem.hq_objective_influencer_score; hq_objective_influencer_score_curve = level.spawnsystem.hq_objective_influencer_score_curve; @@ -1349,7 +1232,7 @@ createradiospawninfluencer() self enable_radio_spawn_influencer( 0 ); } -enable_radio_spawn_influencer( enabled ) +enable_radio_spawn_influencer( enabled ) //checked matches cerberus output { if ( isDefined( self.spawn_influencer ) ) { @@ -1358,7 +1241,7 @@ enable_radio_spawn_influencer( enabled ) } } -koth_gamemodespawndvars( reset_dvars ) +koth_gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.hq_objective_influencer_score = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_score", "200", reset_dvars ); @@ -1372,7 +1255,7 @@ koth_gamemodespawndvars( reset_dvars ) ss.hq_initial_spawns_influencer_radius = set_dvar_float_if_unset( "scr_spawn_hq_initial_spawns_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars ); } -onupdateuserate() +onupdateuserate() //checked changed to match cerberus output { if ( !isDefined( self.currentcontendercount ) ) { @@ -1385,31 +1268,30 @@ onupdateuserate() { self.currentcontendercount = 0; } - else + else if ( self.ownerteam == "neutral" ) { - if ( self.ownerteam == "neutral" ) + numotherclaim = getnumtouchingexceptteam( self.claimteam ); + if ( numotherclaim > 0 ) { - numotherclaim = getnumtouchingexceptteam( self.claimteam ); - if ( numotherclaim > 0 ) - { - self.currentcontendercount = 2; - } - else - { - self.currentcontendercount = 1; - } - } - else if ( numothers > 0 ) - { - self.currentcontendercount = 1; + self.currentcontendercount = 2; } else { - self.currentcontendercount = 0; + self.currentcontendercount = 1; } } + else if ( numothers > 0 ) + { + self.currentcontendercount = 1; + } + else + { + self.currentcontendercount = 0; + } if ( self.currentcontendercount != previousstate ) { self notify( "state_change" ); } } + + diff --git a/patch_mp/maps/mp/gametypes/koth.gsc b/patch_mp/maps/mp/gametypes/koth.gsc index f26db95..ee6d207 100644 --- a/patch_mp/maps/mp/gametypes/koth.gsc +++ b/patch_mp/maps/mp/gametypes/koth.gsc @@ -9,12 +9,15 @@ #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; #include maps/mp/gametypes/_globallogic_score; +#include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_globallogic_audio; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; #include common_scripts/utility; -main() +main() //checked changed to match cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -60,7 +63,7 @@ main() level.delayplayer = getgametypesetting( "delayPlayer" ); level.randomzonespawn = getgametypesetting( "randomObjectiveLocations" ); level.scoreperplayer = getgametypesetting( "scorePerPlayer" ); - level.iconoffset = vectorScale( ( 0, 0, 0 ), 32 ); + level.iconoffset = vectorScale( ( 0, 0, 1 ), 32 ); level.onrespawndelay = ::getrespawndelay; game[ "dialog" ][ "gametype" ] = "koth_start"; game[ "dialog" ][ "gametype_hardcore" ] = "koth_start"; @@ -80,26 +83,21 @@ main() setscoreboardcolumns( "score", "kills", "deaths", "captures", "defends" ); } maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "gamemode_objective", 0 ); + /* /# trigs = getentarray( "radiotrigger", "targetname" ); - _a101 = trigs; - _k101 = getFirstArrayKey( _a101 ); - while ( isDefined( _k101 ) ) + foreach ( trig in trigs ) { - trig = _a101[ _k101 ]; trig delete(); - _k101 = getNextArrayKey( _a101, _k101 ); #/ } + */ } -updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) +updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) //checked partially changed to match cerberus output did not use continue in foreach see github for more info { - _a111 = level.teams; - _k111 = getFirstArrayKey( _a111 ); - while ( isDefined( _k111 ) ) + foreach ( team in level.teams ) { - team = _a111[ _k111 ]; if ( defenderteam == team ) { game[ "strings" ][ "objective_hint_" + team ] = defendmessage; @@ -108,23 +106,18 @@ updateobjectivehintmessages( defenderteam, defendmessage, attackmessage ) { game[ "strings" ][ "objective_hint_" + team ] = attackmessage; } - _k111 = getNextArrayKey( _a111, _k111 ); } } -updateobjectivehintmessage( message ) +updateobjectivehintmessage( message ) //checked changed to match cerberus output { - _a126 = level.teams; - _k126 = getFirstArrayKey( _a126 ); - while ( isDefined( _k126 ) ) + foreach ( team in level.teams ) { - team = _a126[ _k126 ]; game[ "strings" ][ "objective_hint_" + team ] = message; - _k126 = getNextArrayKey( _a126, _k126 ); } } -getrespawndelay() +getrespawndelay() //checked matches cerberus output { self.lowermessageoverride = undefined; if ( !isDefined( level.zone.gameobject ) ) @@ -158,7 +151,7 @@ getrespawndelay() } } -onstartgametype() +onstartgametype() //checked partially changed to match cerberus output did not use continue in foreach see github for more info { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -172,11 +165,8 @@ onstartgametype() game[ "defenders" ] = oldattackers; } maps/mp/gametypes/_globallogic_score::resetteamscores(); - _a180 = level.teams; - _k180 = getFirstArrayKey( _a180 ); - while ( isDefined( _k180 ) ) + foreach ( team in level.teams ) { - team = _a180[ _k180 ]; setobjectivetext( team, &"OBJECTIVES_KOTH" ); if ( level.splitscreen ) { @@ -186,7 +176,6 @@ onstartgametype() { setobjectivescoretext( team, &"OBJECTIVES_KOTH_SCORE" ); } - _k180 = getNextArrayKey( _a180, _k180 ); } level.objectivehintpreparezone = &"MP_CONTROL_KOTH"; level.objectivehintcapturezone = &"MP_CAPTURE_KOTH"; @@ -208,25 +197,17 @@ onstartgametype() maps/mp/gametypes/_spawning::create_map_placed_influencers(); level.spawnmins = ( 0, 0, 0 ); level.spawnmaxs = ( 0, 0, 0 ); - _a218 = level.teams; - _k218 = getFirstArrayKey( _a218 ); - while ( isDefined( _k218 ) ) + foreach ( team in level.teams ) { - team = _a218[ _k218 ]; maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_tdm_spawn" ); maps/mp/gametypes/_spawnlogic::addspawnpoints( team, "mp_multi_team_spawn" ); maps/mp/gametypes/_spawnlogic::placespawnpoints( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); - _k218 = getNextArrayKey( _a218, _k218 ); } maps/mp/gametypes/_spawning::updateallspawnpoints(); level.spawn_start = []; - _a230 = level.teams; - _k230 = getFirstArrayKey( _a230 ); - while ( isDefined( _k230 ) ) + foreach ( team in level.teams ) { - team = _a230[ _k230 ]; level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( maps/mp/gametypes/_spawning::gettdmstartspawnname( team ) ); - _k230 = getNextArrayKey( _a230, _k230 ); } level.mapcenter = maps/mp/gametypes/_spawnlogic::findboxcenter( level.spawnmins, level.spawnmaxs ); setmapcenter( level.mapcenter ); @@ -235,9 +216,11 @@ onstartgametype() level.spawn_all = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_tdm_spawn" ); if ( !level.spawn_all.size ) { + /* /# println( "^1No mp_tdm_spawn spawnpoints in level!" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); return; } @@ -246,12 +229,12 @@ onstartgametype() thread kothmainloop(); } -updategametypedvars() +updategametypedvars() //checked matches cerberus output { level.playercapturelpm = getgametypesetting( "maxPlayerEventsPerMinute" ); } -spawn_first_zone( delay ) +spawn_first_zone( delay ) //checked matches cerberus output { if ( level.randomzonespawn == 1 ) { @@ -270,7 +253,7 @@ spawn_first_zone( delay ) return; } -spawn_next_zone() +spawn_next_zone() //checked matches cerberus output { level.zone.gameobject.trigger allowtacticalinsertion( 1 ); if ( level.randomzonespawn != 0 ) @@ -290,21 +273,17 @@ spawn_next_zone() return; } -getnumtouching() +getnumtouching() //checked changed to match cerberus output { numtouching = 0; - _a318 = level.teams; - _k318 = getFirstArrayKey( _a318 ); - while ( isDefined( _k318 ) ) + foreach ( team in level.teams ) { - team = _a318[ _k318 ]; numtouching += self.numtouching[ team ]; - _k318 = getNextArrayKey( _a318, _k318 ); } return numtouching; } -togglezoneeffects( enabled ) +togglezoneeffects( enabled ) //checked matches cerberus output { index = 0; if ( enabled ) @@ -314,7 +293,7 @@ togglezoneeffects( enabled ) level setclientfield( "hardpoint", index ); } -kothcaptureloop() +kothcaptureloop() //checked changed to match cerberus output { level endon( "game_ended" ); level endon( "zone_moved" ); @@ -334,18 +313,14 @@ kothcaptureloop() level.zone.gameobject.onenduse = ::onenduse; level.zone togglezoneeffects( 1 ); msg = level waittill_any_return( "zone_captured", "zone_destroyed" ); - while ( msg == "zone_destroyed" ) + if ( msg == "zone_destroyed" ) { continue; } ownerteam = level.zone.gameobject maps/mp/gametypes/_gameobjects::getownerteam(); - _a371 = level.teams; - _k371 = getFirstArrayKey( _a371 ); - while ( isDefined( _k371 ) ) + foreach ( team in level.teams ) { - team = _a371[ _k371 ]; updateobjectivehintmessages( ownerteam, level.objectivehintdefendhq, level.objectivehintcapturezone ); - _k371 = getNextArrayKey( _a371, _k371 ); } level.zone.gameobject maps/mp/gametypes/_gameobjects::allowuse( "none" ); level.zone.gameobject.onuse = undefined; @@ -357,23 +332,19 @@ kothcaptureloop() { return; } + thread forcespawnteam( ownerteam ); + if ( isDefined( destroy_team ) ) + { + level.zone.gameobject maps/mp/gametypes/_gameobjects::setownerteam( destroy_team ); + } else { - thread forcespawnteam( ownerteam ); - if ( isDefined( destroy_team ) ) - { - level.zone.gameobject maps/mp/gametypes/_gameobjects::setownerteam( destroy_team ); - continue; - } - else - { - level.zone.gameobject maps/mp/gametypes/_gameobjects::setownerteam( "none" ); - } + level.zone.gameobject maps/mp/gametypes/_gameobjects::setownerteam( "none" ); } } } -kothmainloop() +kothmainloop() //checked changed to match cerberus output { level endon( "game_ended" ); level.zonerevealtime = -100000; @@ -398,16 +369,14 @@ kothmainloop() spawn_first_zone(); while ( level.inprematchperiod ) { - wait 0,05; + wait 0.05; } wait 5; timerdisplay = []; - _a436 = level.teams; - _k436 = getFirstArrayKey( _a436 ); - while ( isDefined( _k436 ) ) + foreach ( team in level.teams ) { team = _a436[ _k436 ]; - timerdisplay[ team ] = createservertimer( "objective", 1,4, team ); + timerdisplay[ team ] = createservertimer( "objective", 1.4, team ); timerdisplay[ team ] setgamemodeinfopoint(); timerdisplay[ team ].label = zonespawninginstr; timerdisplay[ team ].font = "extrasmall"; @@ -417,7 +386,6 @@ kothmainloop() timerdisplay[ team ].hidewheninkillcam = 1; timerdisplay[ team ].showplayerteamhudelemtospectator = 1; thread hidetimerdisplayongameend( timerdisplay[ team ] ); - _k436 = getNextArrayKey( _a436, _k436 ); } while ( 1 ) { @@ -431,27 +399,19 @@ kothmainloop() level.zone.gameobject maps/mp/gametypes/_gameobjects::setvisibleteam( "any" ); level.zone.gameobject maps/mp/gametypes/_gameobjects::setflags( 1 ); updateobjectivehintmessage( level.objectivehintpreparezone ); - _a468 = level.teams; - _k468 = getFirstArrayKey( _a468 ); - while ( isDefined( _k468 ) ) + foreach ( team in level.teams ) { - team = _a468[ _k468 ]; timerdisplay[ team ].label = zonespawninginstr; timerdisplay[ team ] settimer( level.zonespawntime ); timerdisplay[ team ].alpha = 1; - _k468 = getNextArrayKey( _a468, _k468 ); } wait level.zonespawntime; level.zone.gameobject maps/mp/gametypes/_gameobjects::setflags( 0 ); maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_online" ); } - _a481 = level.teams; - _k481 = getFirstArrayKey( _a481 ); - while ( isDefined( _k481 ) ) + foreach ( team in level.teams ) { - team = _a481[ _k481 ]; timerdisplay[ team ].alpha = 0; - _k481 = getNextArrayKey( _a481, _k481 ); } waittillframeend; maps/mp/gametypes/_globallogic_audio::leaderdialog( "obj_capture", undefined, "gamemode_objective" ); @@ -462,36 +422,29 @@ kothmainloop() if ( level.zoneautomovetime ) { thread movezoneaftertime( level.zoneautomovetime ); - _a498 = level.teams; - _k498 = getFirstArrayKey( _a498 ); - while ( isDefined( _k498 ) ) + foreach ( team in level.teams ) { - team = _a498[ _k498 ]; timerdisplay[ team ] settimer( level.zoneautomovetime ); - _k498 = getNextArrayKey( _a498, _k498 ); } - _a503 = level.teams; - _k503 = getFirstArrayKey( _a503 ); - while ( isDefined( _k503 ) ) + foreach ( team in level.teams ) { - team = _a503[ _k503 ]; timerdisplay[ team ].label = zonedestroyedinenemystr; timerdisplay[ team ].alpha = 1; - _k503 = getNextArrayKey( _a503, _k503 ); } } - else level.zonedestroyedbytimer = 0; + else + { + level.zonedestroyedbytimer = 0; + } kothcaptureloop(); ownerteam = level.zone.gameobject maps/mp/gametypes/_gameobjects::getownerteam(); if ( level.zone.gameobject.capturecount == 1 ) { touchlist = []; touchkeys = getarraykeys( level.zone.gameobject.touchlist[ ownerteam ] ); - i = 0; - while ( i < touchkeys.size ) + for ( i = 0; i < touchkeys.size; i++ ) { touchlist[ touchkeys[ i ] ] = level.zone.gameobject.touchlist[ ownerteam ][ touchkeys[ i ] ]; - i++; } thread give_held_credit( touchlist ); } @@ -504,28 +457,24 @@ kothmainloop() level.zone.gameobject maps/mp/gametypes/_gameobjects::mustmaintainclaim( 0 ); level.zone togglezoneeffects( 0 ); level notify( "zone_reset" ); - _a539 = level.teams; - _k539 = getFirstArrayKey( _a539 ); - while ( isDefined( _k539 ) ) + foreach ( team in level.teams ) { - team = _a539[ _k539 ]; timerdisplay[ team ].alpha = 0; - _k539 = getNextArrayKey( _a539, _k539 ); } spawn_next_zone(); - wait 0,5; + wait 0.5; thread forcespawnteam( ownerteam ); - wait 0,5; + wait 0.5; } } -hidetimerdisplayongameend( timerdisplay ) +hidetimerdisplayongameend( timerdisplay ) //checked matches cerberus output { level waittill( "game_ended" ); timerdisplay.alpha = 0; } -forcespawnteam( team ) +forcespawnteam( team ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { players = level.players; i = 0; @@ -537,19 +486,16 @@ forcespawnteam( team ) i++; continue; } - else + if ( player.pers[ "team" ] == team ) { - if ( player.pers[ "team" ] == team ) - { - player notify( "force_spawn" ); - wait 0,1; - } + player notify( "force_spawn" ); + wait 0.1; } i++; } } -onbeginuse( player ) +onbeginuse( player ) //checked matches cerberus output { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); if ( ownerteam == "neutral" ) @@ -562,12 +508,12 @@ onbeginuse( player ) } } -onenduse( team, player, success ) +onenduse( team, player, success ) //checked matches cerberus output { player notify( "event_ended" ); } -onzonecapture( player ) +onzonecapture( player ) //checked partially changed to match cerberus output did not use continue in foreach see github for more info { capture_team = player.pers[ "team" ]; capturetime = getTime(); @@ -579,11 +525,9 @@ onzonecapture( player ) { touchlist = []; touchkeys = getarraykeys( self.touchlist[ capture_team ] ); - i = 0; - while ( i < touchkeys.size ) + for ( i = 0; i < touchkeys.size; i++ ) { touchlist[ touchkeys[ i ] ] = self.touchlist[ capture_team ][ touchkeys[ i ] ]; - i++; } thread give_capture_credit( touchlist, string, capturetime, capture_team, self.lastcaptureteam ); } @@ -594,18 +538,14 @@ onzonecapture( player ) { self maps/mp/gametypes/_gameobjects::setusetime( level.destroytime ); } - _a639 = level.teams; - _k639 = getFirstArrayKey( _a639 ); - while ( isDefined( _k639 ) ) + foreach ( team in level.teams ) { - team = _a639[ _k639 ]; if ( team == capture_team ) { - while ( isDefined( self.lastcaptureteam ) && self.lastcaptureteam != team ) + if ( isDefined( self.lastcaptureteam ) && self.lastcaptureteam != team ) { maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_secured", team, "gamemode_objective" ); - index = 0; - while ( index < level.players.size ) + for ( index = 0; index < level.players.size; index++ ) { player = level.players[ index ]; if ( player.pers[ "team" ] == team ) @@ -615,27 +555,19 @@ onzonecapture( player ) player maps/mp/_challenges::killedlastcontester(); } } - index++; } } thread playsoundonplayers( game[ "objective_gained_sound" ], team ); } - else + else if ( oldteam == team ) { - if ( oldteam == team ) - { - maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_lost", team, "gamemode_objective" ); - } - else - { - if ( oldteam == "neutral" ) - { - maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_captured", team, "gamemode_objective" ); - } - } - thread playsoundonplayers( game[ "objective_lost_sound" ], team ); + maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_lost", team, "gamemode_objective" ); } - _k639 = getNextArrayKey( _a639, _k639 ); + else if ( oldteam == "neutral" ) + { + maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_captured", team, "gamemode_objective" ); + } + thread playsoundonplayers( game[ "objective_lost_sound" ], team ); } level thread awardcapturepoints( capture_team, self.lastcaptureteam ); self.capturecount++; @@ -646,9 +578,9 @@ onzonecapture( player ) player notify( "event_ended" ); } -give_capture_credit( touchlist, string, capturetime, capture_team, lastcaptureteam ) +give_capture_credit( touchlist, string, capturetime, capture_team, lastcaptureteam ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); players = getarraykeys( touchlist ); i = 0; @@ -680,30 +612,27 @@ give_capture_credit( touchlist, string, capturetime, capture_team, lastcapturete i++; continue; } - else - { + /* /# - player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU CAPTURE CREDIT AS BOOSTING PREVENTION" ); + player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU CAPTURE CREDIT AS BOOSTING PREVENTION" ); #/ - } + */ i++; } } -give_held_credit( touchlist, team ) +give_held_credit( touchlist, team ) //checked changed to match cerberus output { - wait 0,05; + wait 0.05; maps/mp/gametypes/_globallogic_utils::waittillslowprocessallowed(); players = getarraykeys( touchlist ); - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { player = touchlist[ players[ i ] ].player; - i++; } } -onzonedestroy( player ) +onzonedestroy( player ) //checked changed to match cerberus output { destroyed_team = player.pers[ "team" ]; player logstring( "zone destroyed" ); @@ -723,11 +652,8 @@ onzonedestroy( player ) otherteammessage = &"MP_KOTH_CAPTURED_BY_ENEMY"; } level thread maps/mp/_popups::displayteammessagetoall( destroyteammessage, player ); - _a778 = level.teams; - _k778 = getFirstArrayKey( _a778 ); - while ( isDefined( _k778 ) ) + foreach ( team in level.teams ) { - team = _a778[ _k778 ]; if ( team == destroyed_team ) { maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_secured", team, "gamemode_objective" ); @@ -736,9 +662,8 @@ onzonedestroy( player ) { maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_destroyed", team, "gamemode_objective" ); } - _k778 = getNextArrayKey( _a778, _k778 ); } - level notify( "zone_destroyed" ); + level notify( "zone_destroyed", destroyed_team ); if ( level.kothmode ) { level thread awardcapturepoints( destroyed_team ); @@ -746,7 +671,7 @@ onzonedestroy( player ) player notify( "event_ended" ); } -onzoneunoccupied() +onzoneunoccupied() //checked matches cerberus output { level notify( "zone_destroyed" ); level.kothcapteam = "neutral"; @@ -754,35 +679,33 @@ onzoneunoccupied() level.zone.gameobject.iscontested = 0; } -onzonecontested() +onzonecontested() //checked changed to match cerberus output { zoneowningteam = level.zone.gameobject maps/mp/gametypes/_gameobjects::getownerteam(); level.zone.gameobject.wascontested = 1; level.zone.gameobject.iscontested = 1; - _a812 = level.teams; - _k812 = getFirstArrayKey( _a812 ); - while ( isDefined( _k812 ) ) + foreach ( team in level.teams ) { - team = _a812[ _k812 ]; if ( team == zoneowningteam ) { thread playsoundonplayers( game[ "objective_contested_sound" ], team ); maps/mp/gametypes/_globallogic_audio::leaderdialog( "koth_contested", team, "gamemode_objective" ); } - _k812 = getNextArrayKey( _a812, _k812 ); } } -onzoneuncontested( lastclaimteam ) +onzoneuncontested( lastclaimteam ) //checked matches cerberus output { + /* /# assert( lastclaimteam == level.zone.gameobject maps/mp/gametypes/_gameobjects::getownerteam() ); #/ + */ level.zone.gameobject.iscontested = 0; level.zone.gameobject maps/mp/gametypes/_gameobjects::setclaimteam( lastclaimteam ); } -movezoneaftertime( time ) +movezoneaftertime( time ) //checked matches cerberus output { level endon( "game_ended" ); level endon( "zone_reset" ); @@ -801,7 +724,7 @@ movezoneaftertime( time ) level notify( "zone_moved" ); } -awardcapturepoints( team, lastcaptureteam ) +awardcapturepoints( team, lastcaptureteam ) //checked matches cerberus output { level endon( "game_ended" ); level endon( "zone_destroyed" ); @@ -826,12 +749,12 @@ awardcapturepoints( team, lastcaptureteam ) } } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked matches cerberus output { spawnpoint = undefined; if ( !level.usestartspawns ) @@ -861,9 +784,11 @@ onspawnplayer( predictedspawn ) spawnteam = self.pers[ "team" ]; spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( level.spawn_start[ spawnteam ] ); } + /* /# assert( isDefined( spawnpoint ) ); #/ + */ if ( predictedspawn ) { self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); @@ -874,12 +799,12 @@ onspawnplayer( predictedspawn ) } } -koth_playerspawnedcb() +koth_playerspawnedcb() //checked matches cerberus output { self.lowermessageoverride = undefined; } -comparezoneindexes( zone_a, zone_b ) +comparezoneindexes( zone_a, zone_b ) //checked matches cerberus output { script_index_a = zone_a.script_index; script_index_b = zone_b.script_index; @@ -889,16 +814,20 @@ comparezoneindexes( zone_a, zone_b ) } if ( !isDefined( script_index_a ) && isDefined( script_index_b ) ) { + /* /# println( "KOTH: Missing script_index on zone at " + zone_a.origin ); #/ + */ return 1; } if ( isDefined( script_index_a ) && !isDefined( script_index_b ) ) { + /* /# println( "KOTH: Missing script_index on zone at " + zone_b.origin ); #/ + */ return 0; } if ( script_index_a > script_index_b ) @@ -908,7 +837,7 @@ comparezoneindexes( zone_a, zone_b ) return 0; } -getzonearray() +getzonearray() //checked changed to match cerberus output { zones = getentarray( "koth_zone_center", "targetname" ); if ( !isDefined( zones ) ) @@ -920,8 +849,7 @@ getzonearray() while ( swapped ) { swapped = 0; - i = 0; - while ( i < ( n - 1 ) ) + for ( i = 0; i < n - 1; i++ ) { if ( comparezoneindexes( zones[ i ], zones[ i + 1 ] ) ) { @@ -930,7 +858,6 @@ getzonearray() zones[ i + 1 ] = temp; swapped = 1; } - i++; } n--; @@ -938,7 +865,7 @@ getzonearray() return zones; } -setupzones() +setupzones() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { maperrors = []; zones = getzonearray(); @@ -949,65 +876,58 @@ setupzones() errored = 0; zone = zones[ i ]; zone.trig = undefined; - j = 0; - while ( j < trigs.size ) + for ( j = 0; j < trigs.size; j++ ) { if ( zone istouching( trigs[ j ] ) ) { if ( isDefined( zone.trig ) ) { - maperrors[ maperrors.size ] = "Zone at " + zone.origin + " is touching more than one "zonetrigger" trigger"; + maperrors[ maperrors.size ] = "Zone at " + zone.origin + " is touching more than one zonetrigger trigger"; errored = 1; break; } - else zone.trig = trigs[ j ]; + zone.trig = trigs[ j ]; break; } - else - { - j++; - } } if ( !isDefined( zone.trig ) ) { if ( !errored ) { - maperrors[ maperrors.size ] = "Zone at " + zone.origin + " is not inside any "zonetrigger" trigger"; + maperrors[ maperrors.size ] = "Zone at " + zone.origin + " is not inside any zonetrigger trigger"; i++; continue; } } - else - { + /* /# - assert( !errored ); + assert( !errored ); #/ - zone.trigorigin = zone.trig.origin; - visuals = []; - visuals[ 0 ] = zone; - while ( isDefined( zone.target ) ) + */ + zone.trigorigin = zone.trig.origin; + visuals = []; + visuals[ 0 ] = zone; + if ( isDefined( zone.target ) ) + { + othervisuals = getentarray( zone.target, "targetname" ); + for ( j = 0; j < othervisuals.size; j++ ) { - othervisuals = getentarray( zone.target, "targetname" ); - j = 0; - while ( j < othervisuals.size ) - { - visuals[ visuals.size ] = othervisuals[ j ]; - j++; - } + visuals[ visuals.size ] = othervisuals[ j ]; } - objective_name = istring( "objective" ); - precachestring( objective_name ); - zone.gameobject = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", zone.trig, visuals, ( 0, 0, 0 ), objective_name ); - zone.gameobject maps/mp/gametypes/_gameobjects::disableobject(); - zone.gameobject maps/mp/gametypes/_gameobjects::setmodelvisibility( 0 ); - zone.trig.useobj = zone.gameobject; - zone setupnearbyspawns(); - zone createzonespawninfluencer(); } + objective_name = istring( "objective" ); + precachestring( objective_name ); + zone.gameobject = maps/mp/gametypes/_gameobjects::createuseobject( "neutral", zone.trig, visuals, ( 0, 0, 0 ), objective_name ); + zone.gameobject maps/mp/gametypes/_gameobjects::disableobject(); + zone.gameobject maps/mp/gametypes/_gameobjects::setmodelvisibility( 0 ); + zone.trig.useobj = zone.gameobject; + zone setupnearbyspawns(); + zone createzonespawninfluencer(); i++; } if ( maperrors.size > 0 ) { + /* /# println( "^1------------ Map Errors ------------" ); i = 0; @@ -1019,6 +939,7 @@ setupzones() println( "^1------------------------------------" ); maps/mp/_utility::error( "Map errors. See above" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); return; } @@ -1029,31 +950,24 @@ setupzones() return 1; } -setupzoneexclusions() +setupzoneexclusions() //checked changed to match cerberus output { if ( !isDefined( level.levelkothdisable ) ) { return; } - _a1123 = level.levelkothdisable; - _k1123 = getFirstArrayKey( _a1123 ); - while ( isDefined( _k1123 ) ) + foreach ( nullzone in level.levelkothdisable ) { - nullzone = _a1123[ _k1123 ]; mindist = 1410065408; foundzone = undefined; - _a1128 = level.zones; - _k1128 = getFirstArrayKey( _a1128 ); - while ( isDefined( _k1128 ) ) + foreach ( zone in level.zones ) { - zone = _a1128[ _k1128 ]; distance = distancesquared( nullzone.origin, zone.origin ); if ( distance < mindist ) { foundzone = zone; mindist = distance; } - _k1128 = getNextArrayKey( _a1128, _k1128 ); } if ( isDefined( foundzone ) ) { @@ -1063,43 +977,33 @@ setupzoneexclusions() } foundzone.gameobject.exclusions[ foundzone.gameobject.exclusions.size ] = nullzone; } - _k1123 = getNextArrayKey( _a1123, _k1123 ); } } -setupnearbyspawns() +setupnearbyspawns() //checked changed to match cerberus output { spawns = level.spawn_all; - i = 0; - while ( i < spawns.size ) + for ( i = 0; i < spawns.size; i++ ) { spawns[ i ].distsq = distancesquared( spawns[ i ].origin, self.origin ); - i++; } - i = 1; - while ( i < spawns.size ) + for ( i = 1; i < spawns.size; i++ ) { thespawn = spawns[ i ]; - j = i - 1; - while ( j >= 0 && thespawn.distsq < spawns[ j ].distsq ) + for ( j = i - 1; j >= 0 && thespawn.distsq < spawns[j].distsq; j-- ) { spawns[ j + 1 ] = spawns[ j ]; - j--; - } spawns[ j + 1 ] = thespawn; - i++; } first = []; second = []; third = []; outer = []; thirdsize = spawns.size / 3; - i = 0; - while ( i <= thirdsize ) + for ( i = 0; i <= thirdsize; i++ ) { first[ first.size ] = spawns[ i ]; - i++; } while ( i < spawns.size ) { @@ -1108,7 +1012,6 @@ setupnearbyspawns() { second[ second.size ] = spawns[ i ]; i++; - continue; } else { @@ -1122,7 +1025,7 @@ setupnearbyspawns() self.gameobject.outerspawns = outer; } -getfirstzone() +getfirstzone() //checked matches cerberus output { zone = level.zones[ 0 ]; level.prevzone2 = level.prevzone; @@ -1133,7 +1036,7 @@ getfirstzone() return zone; } -getnextzone() +getnextzone() //checked matches cerberus output { nextzoneindex = ( level.prevzoneindex + 1 ) % level.zones.size; zone = level.zones[ nextzoneindex ]; @@ -1143,7 +1046,7 @@ getnextzone() return zone; } -pickrandomzonetospawn() +pickrandomzonetospawn() //checked matches cerberus output { level.prevzoneindex = randomint( level.zones.size ); zone = level.zones[ level.prevzoneindex ]; @@ -1152,12 +1055,11 @@ pickrandomzonetospawn() return zone; } -shufflezones() +shufflezones() //checked partially changed to match cerberus output did not change while loop to for loop see github for more info { level.zonespawnqueue = []; spawnqueue = arraycopy( level.zones ); - total_left = spawnqueue.size; - while ( total_left > 0 ) + for ( total_left = spawnqueue.size; total_left > 0; total_left-- ) { index = randomint( total_left ); valid_zones = 0; @@ -1169,102 +1071,79 @@ shufflezones() zone++; continue; } - else if ( valid_zones == index ) + if ( valid_zones == index ) { if ( level.zonespawnqueue.size == 0 && isDefined( level.zone ) && level.zone == spawnqueue[ zone ] ) { zone++; continue; } - else - { - level.zonespawnqueue[ level.zonespawnqueue.size ] = spawnqueue[ zone ]; - total_left--; - continue; - } - else - { - valid_zones++; - } - zone++; + level.zonespawnqueue[ level.zonespawnqueue.size ] = spawnqueue[ zone ]; + spawnqueue[zone] = undefined; + break; } + valid_zones++; + zone++; } - total_left--; - } } -getnextzonefromqueue() +getnextzonefromqueue() //checked matches cerberus output { if ( level.zonespawnqueue.size == 0 ) { shufflezones(); } + /* /# assert( level.zonespawnqueue.size > 0 ); #/ + */ next_zone = level.zonespawnqueue[ 0 ]; arrayremoveindex( level.zonespawnqueue, 0 ); return next_zone; } -getcountofteamswithplayers( num ) +getcountofteamswithplayers( num ) //checked changed to match cerberus output { has_players = 0; - _a1284 = level.teams; - _k1284 = getFirstArrayKey( _a1284 ); - while ( isDefined( _k1284 ) ) + foreach ( team in level.teams ) { - team = _a1284[ _k1284 ]; if ( num[ team ] > 0 ) { has_players++; } - _k1284 = getNextArrayKey( _a1284, _k1284 ); } return has_players; } -getpointcost( avgpos, origin ) +getpointcost( avgpos, origin ) //checked changed to match cerberus output { avg_distance = 0; total_error = 0; distances = []; - _a1299 = avgpos; - team = getFirstArrayKey( _a1299 ); - while ( isDefined( team ) ) + foreach ( position in avgpos ) { - position = _a1299[ team ]; distances[ team ] = distance( origin, avgpos[ team ] ); avg_distance += distances[ team ]; - team = getNextArrayKey( _a1299, team ); } avg_distance /= distances.size; - _a1307 = distances; - team = getFirstArrayKey( _a1307 ); - while ( isDefined( team ) ) + foreach ( dist in distances ) { - dist = _a1307[ team ]; err = distances[ team ] - avg_distance; total_error += err * err; - team = getNextArrayKey( _a1307, team ); } return total_error; } -pickzonetospawn() +pickzonetospawn() //checked partially changed to match cerberus output did not use continue in foreach see github for more info { - _a1322 = level.teams; - _k1322 = getFirstArrayKey( _a1322 ); - while ( isDefined( _k1322 ) ) + foreach ( team in level.teams ) { - team = _a1322[ _k1322 ]; avgpos[ team ] = ( 0, 0, 0 ); num[ team ] = 0; - _k1322 = getNextArrayKey( _a1322, _k1322 ); } - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { player = level.players[ i ]; if ( isalive( player ) ) @@ -1272,7 +1151,6 @@ pickzonetospawn() avgpos[ player.pers[ "team" ] ] += player.origin; num[ player.pers[ "team" ] ]++; } - i++; } if ( getcountofteamswithplayers( num ) <= 1 ) { @@ -1285,19 +1163,16 @@ pickzonetospawn() level.prevzone = zone; return zone; } - _a1350 = level.teams; - _k1350 = getFirstArrayKey( _a1350 ); - while ( isDefined( _k1350 ) ) + foreach ( team in level.teams ) { - team = _a1350[ _k1350 ]; if ( num[ team ] == 0 ) { + avgpos[team] = undefined; } else { avgpos[ team ] /= num[ team ]; } - _k1350 = getNextArrayKey( _a1350, _k1350 ); } bestzone = undefined; lowestcost = undefined; @@ -1311,41 +1186,43 @@ pickzonetospawn() i++; continue; } - else + if ( isDefined( level.prevzone2 ) && zone == level.prevzone2 ) { - if ( isDefined( level.prevzone2 ) && zone == level.prevzone2 ) + if ( level.zones.size > 2 ) { - if ( level.zones.size > 2 ) - { - i++; - continue; - } - else cost += 262144; + i++; + continue; } - if ( !isDefined( lowestcost ) || cost < lowestcost ) + else { - lowestcost = cost; - bestzone = zone; + cost += 262144; } } + if ( !isDefined( lowestcost ) || cost < lowestcost ) + { + lowestcost = cost; + bestzone = zone; + } i++; } + /* /# assert( isDefined( bestzone ) ); #/ + */ level.prevzone2 = level.prevzone; level.prevzone = bestzone; return bestzone; } -onroundswitch() +onroundswitch() //checked matches cerberus output { game[ "switchedsides" ] = !game[ "switchedsides" ]; } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { - if ( isplayer( attacker ) && level.capturetime && !self.touchtriggers.size || !attacker.touchtriggers.size && attacker.pers[ "team" ] == self.pers[ "team" ] ) + if ( isplayer( attacker ) || level.capturetime && !self.touchtriggers.size && !attacker.touchtriggers.size || attacker.pers[ "team" ] == self.pers[ "team" ] ) { return; } @@ -1387,25 +1264,22 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "defending" ); scoreeventprocessed = 1; } - else + else if ( !medalgiven ) { - if ( !medalgiven ) + if ( isDefined( attacker.pers[ "defends" ] ) ) { - if ( isDefined( attacker.pers[ "defends" ] ) ) - { - attacker.pers[ "defends" ]++; - attacker.defends = attacker.pers[ "defends" ]; - } - attacker maps/mp/_medals::defenseglobalcount(); - medalgiven = 1; - attacker addplayerstatwithgametype( "DEFENDS", 1 ); - attacker recordgameevent( "return" ); + attacker.pers[ "defends" ]++; + attacker.defends = attacker.pers[ "defends" ]; } - attacker maps/mp/_challenges::killedzoneattacker( sweapon ); - maps/mp/_scoreevents::processscoreevent( "hardpoint_kill", attacker, undefined, sweapon ); - self recordkillmodifier( "assaulting" ); - scoreeventprocessed = 1; + attacker maps/mp/_medals::defenseglobalcount(); + medalgiven = 1; + attacker addplayerstatwithgametype( "DEFENDS", 1 ); + attacker recordgameevent( "return" ); } + attacker maps/mp/_challenges::killedzoneattacker( sweapon ); + maps/mp/_scoreevents::processscoreevent( "hardpoint_kill", attacker, undefined, sweapon ); + self recordkillmodifier( "assaulting" ); + scoreeventprocessed = 1; } } if ( attacker.touchtriggers.size || level.capturetime == 0 && attacker istouching( level.zone.trig ) ) @@ -1439,19 +1313,16 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi self recordkillmodifier( "assaulting" ); } } - else + else if ( !medalgiven ) { - if ( !medalgiven ) - { - attacker maps/mp/_medals::offenseglobalcount(); - medalgiven = 1; - attacker addplayerstatwithgametype( "OFFENDS", 1 ); - } - if ( scoreeventprocessed == 0 ) - { - maps/mp/_scoreevents::processscoreevent( "hardpoint_kill", attacker, undefined, sweapon ); - self recordkillmodifier( "defending" ); - } + attacker maps/mp/_medals::offenseglobalcount(); + medalgiven = 1; + attacker addplayerstatwithgametype( "OFFENDS", 1 ); + } + if ( scoreeventprocessed == 0 ) + { + maps/mp/_scoreevents::processscoreevent( "hardpoint_kill", attacker, undefined, sweapon ); + self recordkillmodifier( "defending" ); } } } @@ -1464,7 +1335,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -killwhilecontesting() +killwhilecontesting() //checked changed to match cerberus output { self notify( "killWhileContesting" ); self endon( "killWhileContesting" ); @@ -1477,7 +1348,7 @@ killwhilecontesting() } self.clearenemycount++; zonereturn = level waittill_any_return( "zone_captured" + playerteam, "zone_destroyed", "zone_captured", "death" ); - if ( zonereturn != "zone_destroyed" || zonereturn == "death" && playerteam != self.pers[ "team" ] ) + if ( zonereturn != "zone_destroyed" || zonereturn == "death" || playerteam != self.pers[ "team" ] ) { self.clearenemycount = 0; return; @@ -1489,17 +1360,15 @@ killwhilecontesting() self.clearenemycount = 0; } -onendgame( winningteam ) +onendgame( winningteam ) //checked changed to match cerberus output { - i = 0; - while ( i < level.zones.size ) + for ( i = 0; i < level.zones.size; i++ ) { level.zones[ i ].gameobject maps/mp/gametypes/_gameobjects::allowuse( "none" ); - i++; } } -createzonespawninfluencer() +createzonespawninfluencer() //checked matches cerberus output { koth_objective_influencer_score = level.spawnsystem.koth_objective_influencer_score; koth_objective_influencer_score_curve = level.spawnsystem.koth_objective_influencer_score_curve; @@ -1512,7 +1381,7 @@ createzonespawninfluencer() self enable_zone_spawn_influencer( 0 ); } -enable_zone_spawn_influencer( enabled ) +enable_zone_spawn_influencer( enabled ) //checked matches cerberus output { if ( isDefined( self.spawn_influencer ) ) { @@ -1521,7 +1390,7 @@ enable_zone_spawn_influencer( enabled ) } } -koth_gamemodespawndvars( reset_dvars ) +koth_gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.koth_objective_influencer_score = set_dvar_float_if_unset( "scr_spawn_koth_objective_influencer_score", "200", reset_dvars ); @@ -1535,7 +1404,7 @@ koth_gamemodespawndvars( reset_dvars ) ss.koth_initial_spawns_influencer_radius = set_dvar_float_if_unset( "scr_spawn_koth_initial_spawns_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars ); } -updatecapsperminute( lastownerteam ) +updatecapsperminute( lastownerteam ) //checked matches cerberus output { if ( !isDefined( self.capsperminute ) ) { @@ -1559,7 +1428,7 @@ updatecapsperminute( lastownerteam ) } } -isscoreboosting( player ) +isscoreboosting( player ) //checked matches cerberus output { if ( !level.rankedmatch ) { @@ -1571,3 +1440,5 @@ isscoreboosting( player ) } return 0; } + + diff --git a/patch_mp/maps/mp/gametypes/oneflag.gsc b/patch_mp/maps/mp/gametypes/oneflag.gsc index a34ff7c..7edd494 100644 --- a/patch_mp/maps/mp/gametypes/oneflag.gsc +++ b/patch_mp/maps/mp/gametypes/oneflag.gsc @@ -6,15 +6,19 @@ #include maps/mp/gametypes/_weapons; #include maps/mp/_popups; #include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/gametypes/_hud_message; #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_spawning; +#include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_globallogic_score; #include maps/mp/teams/_teams; #include maps/mp/gametypes/_globallogic_audio; +#include maps/mp/gametypes/_callbacksetup; +#include maps/mp/gametypes/_globallogic; #include maps/mp/gametypes/_hud_util; #include maps/mp/_utility; -main() +main() //checked matches cerberus output { if ( getDvar( "mapname" ) == "mp_background" ) { @@ -81,7 +85,7 @@ main() maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "ctf_flag_enemy", 0 ); } -onprecachegametype() +onprecachegametype() //checked matches cerberus output { game[ "flag_dropped_sound" ] = "mp_war_objective_lost"; game[ "flag_recovered_sound" ] = "mp_war_objective_taken"; @@ -132,15 +136,17 @@ onprecachegametype() game[ "strings" ][ "score_limit_reached" ] = &"MP_CAP_LIMIT_REACHED"; } -onstartgametype() +onstartgametype() //checked changed to match cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { game[ "switchedsides" ] = 0; } + /* /# setdebugsideswitch( game[ "switchedsides" ] ); -#/ +#/ + */ setclientnamemode( "auto_change" ); maps/mp/gametypes/_globallogic_score::resetteamscores(); setobjectivetext( "allies", &"OBJECTIVES_ONEFLAG" ); @@ -186,34 +192,26 @@ onstartgametype() allowed[ 1 ] = "dom"; maps/mp/gametypes/_gameobjects::main( allowed ); entities = getentarray(); - entity_index = entities.size - 1; - while ( entity_index >= 0 ) + for ( entity_index = entities.size - 1; entity_index >= 0; entity_index-- ) { entity = entities[ entity_index ]; - while ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" ) + if ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" ) { gameobjectnames = strtok( entity.script_gameobjectname, " " ); - i = 0; - while ( i < gameobjectnames.size ) + for ( i = 0; i < gameobjectnames.size; i++ ) { if ( gameobjectnames[ i ] == "ctf" && gameobjectnames.size > 1 ) { entity delete(); entity_index--; - continue; - } - else - { - i++; + break; } } } - entity_index--; - } maps/mp/gametypes/_spawning::create_map_placed_influencers(); - level.spawnmins = ( 0, 0, -1 ); - level.spawnmaxs = ( 0, 0, -1 ); + level.spawnmins = ( 0, 0, 0 ); + level.spawnmaxs = ( 0, 0, 0 ); maps/mp/gametypes/_spawnlogic::placespawnpoints( "mp_ctf_spawn_allies_start" ); maps/mp/gametypes/_spawnlogic::placespawnpoints( "mp_ctf_spawn_axis_start" ); maps/mp/gametypes/_spawnlogic::addspawnpoints( "allies", "mp_ctf_spawn_allies" ); @@ -226,15 +224,11 @@ onstartgametype() level.spawn_axis = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_axis" ); level.spawn_allies = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_allies" ); level.spawn_start = []; - _a283 = level.teams; - _k283 = getFirstArrayKey( _a283 ); - while ( isDefined( _k283 ) ) + foreach ( team in level.teams ) { - team = _a283[ _k283 ]; level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_" + team + "_start" ); - _k283 = getNextArrayKey( _a283, _k283 ); } - level.oneflagtimer = createservertimer( "objective", 1,4 ); + level.oneflagtimer = createservertimer( "objective", 1.4 ); level.oneflagtimer.x = 11; level.oneflagtimer.y = 120; level.oneflagtimer.horzalign = "user_left"; @@ -253,13 +247,13 @@ onstartgametype() thread ctf(); } -hidetimerdisplayongameend( timerdisplay ) +hidetimerdisplayongameend( timerdisplay ) //checked matches cerberus output { level waittill( "game_ended" ); timerdisplay.alpha = 0; } -shouldplayovertimeround() +shouldplayovertimeround() //checked matches cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -292,7 +286,7 @@ shouldplayovertimeround() return 0; } -minutesandsecondsstring( milliseconds ) +minutesandsecondsstring( milliseconds ) //checked matches cerberus output { minutes = floor( milliseconds / 60000 ); milliseconds -= minutes * 60000; @@ -307,7 +301,7 @@ minutesandsecondsstring( milliseconds ) } } -setmatchscorehudelemforteam( team ) +setmatchscorehudelemforteam( team ) //checked changed to match cerberus output { if ( !isDefined( game[ "overtime_round" ] ) ) { @@ -317,21 +311,18 @@ setmatchscorehudelemforteam( team ) { self settext( minutesandsecondsstring( game[ "ctf_overtime_best_time" ] ) ); } + else if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team ) + { + self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) ); + return; + } else { - if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team ) - { - self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) ); - return; - } - else - { - self settext( &"" ); - } + self settext( &"" ); } } -onroundswitch() +onroundswitch() //checked matches cerberus output { if ( !isDefined( game[ "switchedsides" ] ) ) { @@ -341,7 +332,7 @@ onroundswitch() game[ "switchedsides" ] = !game[ "switchedsides" ]; } -onendgame( winningteam ) +onendgame( winningteam ) //checked matches cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -362,7 +353,7 @@ onendgame( winningteam ) } } -onroundendgame( winningteam ) +onroundendgame( winningteam ) //checked changed to match cerberus output { if ( isDefined( game[ "overtime_round" ] ) ) { @@ -383,24 +374,17 @@ onroundendgame( winningteam ) level.enddefeatreasontext = &"MP_ONE_FLAG_CTF_OVERTIME_DEFEAT_DID_NOT_DEFEND"; } } - else + else if ( !isDefined( winningteam ) || winningteam == "tie" ) { - if ( !isDefined( winningteam ) || winningteam == "tie" ) - { - return "tie"; - } + return "tie"; } return winningteam; } if ( level.roundscorecarry == 0 ) { - _a451 = level.teams; - _k451 = getFirstArrayKey( _a451 ); - while ( isDefined( _k451 ) ) + foreach ( team in level.teams ) { - team = _a451[ _k451 ]; [[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] ); - _k451 = getNextArrayKey( _a451, _k451 ); } winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" ); } @@ -411,7 +395,7 @@ onroundendgame( winningteam ) return winner; } -onspawnplayerunified() +onspawnplayerunified() //checked matches cerberus output { self.isflagcarrier = 0; self.flagcarried = undefined; @@ -419,7 +403,7 @@ onspawnplayerunified() maps/mp/gametypes/_spawning::onspawnplayer_unified(); } -onspawnplayer( predictedspawn ) +onspawnplayer( predictedspawn ) //checked matches cerberus output { self.isflagcarrier = 0; self.flagcarried = undefined; @@ -441,9 +425,11 @@ onspawnplayer( predictedspawn ) { spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( level.spawn_allies ); } + /* /# assert( isDefined( spawnpoint ) ); #/ + */ if ( predictedspawn ) { self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); @@ -454,7 +440,7 @@ onspawnplayer( predictedspawn ) } } -updategametypedvars() +updategametypedvars() //checked matches cerberus output { level.flagcapturetime = getgametypesetting( "captureTime" ); level.flagtouchreturntime = getgametypesetting( "defuseTime" ); @@ -475,7 +461,7 @@ updategametypedvars() } } -createflag( trigger ) +createflag( trigger ) //checked matches cerberus output { if ( isDefined( trigger.target ) ) { @@ -543,7 +529,7 @@ createflag( trigger ) return flag; } -createflagzone( trigger ) +createflagzone( trigger ) //checked changed to match cerberus output { visuals = []; entityteam = trigger.script_team; @@ -551,7 +537,7 @@ createflagzone( trigger ) { entityteam = getotherteam( entityteam ); } - flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, -1 ), istring( entityteam + "_base" ) ); + flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, 0 ), istring( entityteam + "_base" ) ); flagzone maps/mp/gametypes/_gameobjects::allowuse( "friendly" ); flagzone maps/mp/gametypes/_gameobjects::setusetime( 0 ); flagzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_CAPTURING_FLAG" ); @@ -562,7 +548,7 @@ createflagzone( trigger ) flag = level.teamflags[ entityteam ]; flag.flagbase = flagzone; flagzone.flag = flag; - tracestart = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 ); + tracestart = trigger.origin + vectorScale( ( 0, 0, 1 ), 32 ); traceend = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 ); trace = bullettrace( tracestart, traceend, 0, undefined ); upangles = vectorToAngle( trace[ "normal" ] ); @@ -574,7 +560,7 @@ createflagzone( trigger ) return flagzone; } -createflaghint( team, origin ) +createflaghint( team, origin ) //checked matches cerberus output { radius = 128; height = 64; @@ -586,7 +572,7 @@ createflaghint( team, origin ) return trigger; } -ctf() +ctf() //checked changed to match cerberus output { level.flags = []; level.teamflags = []; @@ -627,38 +613,33 @@ ctf() flag_triggers = getentarray( "ctf_flag_pickup_trig", "targetname" ); if ( !isDefined( flag_triggers ) || flag_triggers.size != 2 ) { + /* /# maps/mp/_utility::error( "Not enough ctf_flag_pickup_trig triggers found in map. Need two." ); #/ + */ return; } - index = 0; - while ( index < flag_triggers.size ) + for ( index = 0; index < flag_triggers.size; index++ ) { trigger = flag_triggers[ index ]; flag = createflag( trigger ); team = flag maps/mp/gametypes/_gameobjects::getownerteam(); level.flags[ level.flags.size ] = flag; level.teamflags[ team ] = flag; - index++; } primaryflags = getentarray( "flag_primary", "targetname" ); secondaryflags = getentarray( "flag_secondary", "targetname" ); domflags = []; - index = 0; - while ( index < primaryflags.size ) + for ( index = 0; index < primaryflags.size; index++ ) { domflags[ domflags.size ] = primaryflags[ index ]; - index++; } - index = 0; - while ( index < secondaryflags.size ) + for ( index = 0; index < secondaryflags.size; index++ ) { domflags[ domflags.size ] = secondaryflags[ index ]; - index++; } - index = 0; - while ( index < domflags.size ) + for ( index = 0; index < domflags.size; index++ ) { trigger = domflags[ index ]; if ( trigger.script_label == "_b" ) @@ -669,18 +650,18 @@ ctf() level.neutralflag = flag; flag maps/mp/gametypes/_gameobjects::allowcarry( "any" ); } - index++; } flag_zones = getentarray( "ctf_flag_zone_trig", "targetname" ); if ( !isDefined( flag_zones ) || flag_zones.size != 2 ) { + /* /# maps/mp/_utility::error( "Not enough ctf_flag_zone_trig triggers found in map. Need two." ); #/ + */ return; } - index = 0; - while ( index < flag_zones.size ) + for ( index = 0; index < flag_zones.size; index++ ) { trigger = flag_zones[ index ]; flagzone = createflagzone( trigger ); @@ -690,19 +671,18 @@ ctf() level.flaghints[ team ] = createflaghint( team, trigger.origin ); facing_angle = getDvarInt( "scr_ctf_spawnPointFacingAngle" ); setspawnpointsbaseweight( getotherteamsmask( team ), trigger.origin, facing_angle, level.spawnsystem.objective_facing_bonus ); - index++; } createreturnmessageelems(); } -ctf_icon_hide() +ctf_icon_hide() //checked matches cerberus output { level waittill( "game_ended" ); level.teamflags[ "allies" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" ); level.teamflags[ "axis" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" ); } -removeinfluencers() +removeinfluencers() //checked matches cerberus output { if ( isDefined( self.spawn_influencer_enemy_carrier ) ) { @@ -721,19 +701,15 @@ removeinfluencers() } } -ondrop( player ) +ondrop( player ) //checked changed to match cerberus output { if ( isDefined( player ) ) { player clearclientflag( 0 ); } - _a825 = level.flagzones; - _k825 = getFirstArrayKey( _a825 ); - while ( isDefined( _k825 ) ) + foreach ( goal in level.flagzones ) { - goal = _a825[ _k825 ]; goal maps/mp/gametypes/_gameobjects::setflags( 0 ); - _k825 = getNextArrayKey( _a825, _k825 ); } otherteam = self maps/mp/gametypes/_gameobjects::getownerteam(); team = getotherteam( otherteam ); @@ -810,7 +786,7 @@ ondrop( player ) self.spawn_influencer_dropped = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, flag_origin, ss.ctf_dropped_influencer_radius, ss.ctf_dropped_influencer_score, player_team_mask | enemy_team_mask, "ctf_flag_dropped,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_dropped_influencer_score_curve ), level.idleflagreturntime, self.trigger ); } -onpickup( player ) +onpickup( player ) //checked changed to match cerberus output { carrierkilledby = self.carrierkilledby; self.carrierkilledby = undefined; @@ -821,16 +797,12 @@ onpickup( player ) } player addplayerstatwithgametype( "PICKUPS", 1 ); self.ownerteam = player.team; - _a945 = level.flagzones; - _k945 = getFirstArrayKey( _a945 ); - while ( isDefined( _k945 ) ) + foreach ( goal in level.flagzones ) { - goal = _a945[ _k945 ]; if ( goal.ownerteam != player.team ) { goal maps/mp/gametypes/_gameobjects::setflags( 1 ); } - _k945 = getNextArrayKey( _a945, _k945 ); } if ( level.touchreturn ) { @@ -880,7 +852,7 @@ onpickup( player ) self.spawn_influencer_friendly_carrier = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, player.origin, ss.ctf_friendly_carrier_influencer_radius, ss.ctf_friendly_carrier_influencer_score, player_team_mask, "ctf_flag_friendly_carrier,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_friendly_carrier_influencer_score_curve ), 0, player ); } -watchforscore() +watchforscore() //checked changed to match cerberus output { level endon( "game_ended" ); self endon( "death" ); @@ -897,21 +869,13 @@ watchforscore() flag maps/mp/gametypes/_gameobjects::setvisibleteam( "none" ); flag maps/mp/gametypes/_gameobjects::returnhome(); flag.visuals[ 0 ] hide(); - _a1063 = level.flags; - _k1063 = getFirstArrayKey( _a1063 ); - while ( isDefined( _k1063 ) ) + foreach ( baseflag in level.flags ) { - baseflag = _a1063[ _k1063 ]; baseflag.visuals[ 0 ] hide(); - _k1063 = getNextArrayKey( _a1063, _k1063 ); } - _a1067 = level.flagzones; - _k1067 = getFirstArrayKey( _a1067 ); - while ( isDefined( _k1067 ) ) + foreach ( goal in level.flagzones ) { - goal = _a1067[ _k1067 ]; goal maps/mp/gametypes/_gameobjects::setflags( 0 ); - _k1067 = getNextArrayKey( _a1067, _k1067 ); } level.oneflagtimer.label = game[ "strings" ][ "flag_respawning_in" ]; level.oneflagtimer settimer( level.flagrespawntime ); @@ -926,17 +890,19 @@ watchforscore() } } -onpickupmusicstate( player ) +onpickupmusicstate( player ) //checked changed at own discretion { self endon( "disconnect" ); self endon( "death" ); wait 6; if ( player.isflagcarrier ) { + //added from bo1 ctf.gsc + player thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "SUSPENSE", false, false); } } -ishome() +ishome() //checked matches cerberus output { if ( isDefined( self.carrier ) ) { @@ -949,7 +915,7 @@ ishome() return 1; } -returnflag() +returnflag() //checked matches cerberus output { team = self maps/mp/gametypes/_gameobjects::getownerteam(); otherteam = getotherteam( team ); @@ -972,7 +938,7 @@ returnflag() maps/mp/gametypes/_globallogic_audio::leaderdialog( "theyreturn_flag", otherteam, "ctf_flag" ); } -oncapture( player ) +oncapture( player ) //checked matches cerberus output { team = player.pers[ "team" ]; enemyteam = getotherteam( team ); @@ -1015,13 +981,13 @@ oncapture( player ) flag removeinfluencers(); } -giveflagcapturexp( player ) +giveflagcapturexp( player ) //checked matches cerberus output { maps/mp/_scoreevents::processscoreevent( "flag_capture", player ); player recordgameevent( "capture" ); } -onreset() +onreset() //checked matches cerberus output { update_hints(); team = self maps/mp/gametypes/_gameobjects::getownerteam(); @@ -1032,7 +998,7 @@ onreset() self.visuals[ 0 ] clearclientflag( 6 ); } -getotherflag( flag ) +getotherflag( flag ) //checked matches cerberus output { if ( flag == level.flags[ 0 ] ) { @@ -1041,7 +1007,7 @@ getotherflag( flag ) return level.flags[ 0 ]; } -onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output { if ( isDefined( attacker ) && isplayer( attacker ) ) { @@ -1144,10 +1110,9 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } if ( isDefined( attacker ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] ) { - while ( isDefined( self.flagcarried ) ) + if ( isDefined( self.flagcarried ) ) { - index = 0; - while ( index < level.flags.size ) + for ( index = 0; index < level.flags.size; index++ ) { currentflag = level.flags[ index ]; if ( currentflag.ownerteam == self.team ) @@ -1162,10 +1127,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } } - else - { - index++; - } } } attacker recordgameevent( "kill_carrier" ); @@ -1173,32 +1134,32 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi } } -createreturnmessageelems() +createreturnmessageelems() //checked matches cerberus output { level.returnmessageelems = []; - level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1,4, "allies" ); + level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1.4, "allies" ); level.returnmessageelems[ "allies" ][ "axis" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); level.returnmessageelems[ "allies" ][ "axis" ].label = &"MP_ENEMY_FLAG_RETURNING_IN"; level.returnmessageelems[ "allies" ][ "axis" ].alpha = 0; level.returnmessageelems[ "allies" ][ "axis" ].archived = 0; - level.returnmessageelems[ "allies" ][ "allies" ] = createservertimer( "objective", 1,4, "allies" ); + level.returnmessageelems[ "allies" ][ "allies" ] = createservertimer( "objective", 1.4, "allies" ); level.returnmessageelems[ "allies" ][ "allies" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 20 ); level.returnmessageelems[ "allies" ][ "allies" ].label = &"MP_YOUR_FLAG_RETURNING_IN"; level.returnmessageelems[ "allies" ][ "allies" ].alpha = 0; level.returnmessageelems[ "allies" ][ "allies" ].archived = 0; - level.returnmessageelems[ "axis" ][ "allies" ] = createservertimer( "objective", 1,4, "axis" ); + level.returnmessageelems[ "axis" ][ "allies" ] = createservertimer( "objective", 1.4, "axis" ); level.returnmessageelems[ "axis" ][ "allies" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 0 ); level.returnmessageelems[ "axis" ][ "allies" ].label = &"MP_ENEMY_FLAG_RETURNING_IN"; level.returnmessageelems[ "axis" ][ "allies" ].alpha = 0; level.returnmessageelems[ "axis" ][ "allies" ].archived = 0; - level.returnmessageelems[ "axis" ][ "axis" ] = createservertimer( "objective", 1,4, "axis" ); + level.returnmessageelems[ "axis" ][ "axis" ] = createservertimer( "objective", 1.4, "axis" ); level.returnmessageelems[ "axis" ][ "axis" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 20 ); level.returnmessageelems[ "axis" ][ "axis" ].label = &"MP_YOUR_FLAG_RETURNING_IN"; level.returnmessageelems[ "axis" ][ "axis" ].alpha = 0; level.returnmessageelems[ "axis" ][ "axis" ].archived = 0; } -returnflagaftertimemsg( time ) +returnflagaftertimemsg( time ) //checked matches cerberus output { if ( level.touchreturn || level.idleflagreturntime == 0 ) { @@ -1215,19 +1176,23 @@ returnflagaftertimemsg( time ) } } -returnflaghudelems( time ) +returnflaghudelems( time ) //checked matches cerberus output { self endon( "picked_up" ); level endon( "game_ended" ); ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); + /* /# assert( !level.returnmessageelems[ "axis" ][ ownerteam ].alpha ); #/ + */ level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 1; level.returnmessageelems[ "axis" ][ ownerteam ] settimer( time ); + /* /# assert( !level.returnmessageelems[ "allies" ][ ownerteam ].alpha ); #/ + */ level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 1; level.returnmessageelems[ "allies" ][ ownerteam ] settimer( time ); if ( time <= 0 ) @@ -1241,16 +1206,16 @@ returnflaghudelems( time ) return 1; } -clearreturnflaghudelems() +clearreturnflaghudelems() //checked matches cerberus output { ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam(); level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 0; level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 0; } -resetflagbaseeffect() +resetflagbaseeffect() //checked matches cerberus output { - wait 0,1; + wait 0.1; if ( isDefined( self.baseeffect ) ) { self.baseeffect delete(); @@ -1265,7 +1230,7 @@ resetflagbaseeffect() triggerfx( self.baseeffect ); } -turn_on() +turn_on() //checked matches cerberus output { if ( level.hardcoremode ) { @@ -1274,12 +1239,12 @@ turn_on() self.origin = self.original_origin; } -turn_off() +turn_off() //checked matches cerberus output { self.origin = ( self.original_origin[ 0 ], self.original_origin[ 1 ], self.original_origin[ 2 ] - 10000 ); } -update_hints() +update_hints() //checked matches cerberus output { allied_flag = level.teamflags[ "allies" ]; axis_flag = level.teamflags[ "axis" ]; @@ -1305,7 +1270,7 @@ update_hints() } } -claim_trigger( trigger ) +claim_trigger( trigger ) //checked matches cerberus output { self endon( "disconnect" ); self clientclaimtrigger( trigger ); @@ -1313,7 +1278,7 @@ claim_trigger( trigger ) self clientreleasetrigger( trigger ); } -createflagspawninfluencer( entityteam ) +createflagspawninfluencer( entityteam ) //checked matches cerberus output { ctf_friendly_base_influencer_score = level.spawnsystem.ctf_friendly_base_influencer_score; ctf_friendly_base_influencer_score_curve = level.spawnsystem.ctf_friendly_base_influencer_score_curve; @@ -1328,7 +1293,7 @@ createflagspawninfluencer( entityteam ) self.spawn_influencer_enemy = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, self.trigger.origin, ctf_enemy_base_influencer_radius, ctf_enemy_base_influencer_score, other_team_mask, "ctf_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ctf_enemy_base_influencer_score_curve ) ); } -ctf_gamemodespawndvars( reset_dvars ) +ctf_gamemodespawndvars( reset_dvars ) //checked matches cerberus output { ss = level.spawnsystem; ss.ctf_friendly_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_ctf_friendly_base_influencer_score", "0", reset_dvars ); @@ -1348,7 +1313,7 @@ ctf_gamemodespawndvars( reset_dvars ) ss.ctf_dropped_influencer_radius = set_dvar_float_if_unset( "scr_spawn_ctf_dropped_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars ); } -ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) +ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output { teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ); if ( isDefined( self.isflagcarrier ) && self.isflagcarrier ) @@ -1358,7 +1323,7 @@ ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) return teamkill_penalty; } -ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) +ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output { teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "kill" ); if ( isDefined( self.isflagcarrier ) && self.isflagcarrier ) @@ -1367,3 +1332,5 @@ ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) } return int( teamkill_score ); } + + diff --git a/patch_mp/readme.md b/patch_mp/readme.md index 686c007..066d675 100644 --- a/patch_mp/readme.md +++ b/patch_mp/readme.md @@ -23,13 +23,6 @@ patch_mp/maps/mp/bots/_bot.gsc patch_mp/maps/mp/bots/_bot_combat.gsc patch_mp/maps/mp/bots/_bot_loadout.gsc -patch_mp/maps/mp/gametypes/conf.gsc -patch_mp/maps/mp/gametypes/dm.gsc -patch_mp/maps/mp/gametypes/gun.gsc -patch_mp/maps/mp/gametypes/oic.gsc -patch_mp/maps/mp/gametypes/sas.gsc -patch_mp/maps/mp/gametypes/shrp.gsc -patch_mp/maps/mp/gametypes/tdm.gsc patch_mp/maps/mp/gametypes/_callbacksetup.gsc patch_mp/maps/mp/gametypes/_damagefeedback.gsc patch_mp/maps/mp/gametypes/_healthoverlay.gsc @@ -40,6 +33,20 @@ patch_mp/maps/mp/gametypes/_perplayer.gsc patch_mp/maps/mp/gametypes/_serversettings.gsc patch_mp/maps/mp/gametypes/_tweakables.gsc patch_mp/maps/mp/gametypes/_weapon_utils.gsc +patch_mp/maps/mp/gametypes/conf.gsc +patch_mp/maps/mp/gametypes/ctf.gsc +patch_mp/maps/mp/gametypes/dem.gsc +patch_mp/maps/mp/gametypes/dm.gsc +patch_mp/maps/mp/gametypes/dom.gsc +patch_mp/maps/mp/gametypes/gun.gsc +patch_mp/maps/mp/gametypes/hq.gsc +patch_mp/maps/mp/gametypes/koth.gsc +patch_mp/maps/mp/gametypes/oic.gsc +patch_mp/maps/mp/gametypes/oneflag.gsc +patch_mp/maps/mp/gametypes/sas.gsc +patch_mp/maps/mp/gametypes/sd.gsc +patch_mp/maps/mp/gametypes/shrp.gsc +patch_mp/maps/mp/gametypes/tdm.gsc ``` ### The following scripts are not checked yet, uploaded to setup a baseline: ``` @@ -81,13 +88,6 @@ patch_mp/maps/mp/gametypes/_spectating.gsc patch_mp/maps/mp/gametypes/_wager.gsc patch_mp/maps/mp/gametypes/_weaponobjects.gsc patch_mp/maps/mp/gametypes/_weapons.gsc -patch_mp/maps/mp/gametypes/ctf.gsc -patch_mp/maps/mp/gametypes/dem.gsc -patch_mp/maps/mp/gametypes/dom.gsc -patch_mp/maps/mp/gametypes/hq.gsc -patch_mp/maps/mp/gametypes/koth.gsc -patch_mp/maps/mp/gametypes/oneflag.gsc -patch_mp/maps/mp/gametypes/sd.gsc ``` ### The following scipts are dev scripts filled with dev calls making them useless to modify for now ```