diff --git a/patch_mp/maps/mp/gametypes/_gameobjects.gsc b/patch_mp/maps/mp/gametypes/_gameobjects.gsc index 949ca75..46e81ca 100644 --- a/patch_mp/maps/mp/gametypes/_gameobjects.gsc +++ b/patch_mp/maps/mp/gametypes/_gameobjects.gsc @@ -1,3 +1,4 @@ +//checked includes match cerberus output #include maps/mp/gametypes/_tweakables; #include maps/mp/killstreaks/_radar; #include maps/mp/killstreaks/_killstreaks; @@ -8,77 +9,71 @@ #include maps/mp/_utility; #include common_scripts/utility; -main( allowed ) +main( allowed ) //checked changed to match cerberus output { level.vehiclesenabled = getgametypesetting( "vehiclesEnabled" ); level.vehiclestimed = getgametypesetting( "vehiclesTimed" ); level.objectivepingdelay = getgametypesetting( "objectivePingTime" ); level.nonteambasedteam = "allies"; + /* /# if ( level.script == "mp_vehicle_test" ) { level.vehiclesenabled = 1; #/ } + */ if ( level.vehiclesenabled ) { allowed[ allowed.size ] = "vehicle"; filter_script_vehicles_from_vehicle_descriptors( 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 ]; if ( !entity_is_allowed( entity, allowed ) ) { entity delete(); } - entity_index--; } return; } -entity_is_allowed( entity, allowed_game_modes ) +entity_is_allowed( entity, allowed_game_modes ) //checked changed to match cerberus output { if ( isDefined( level.createfx_enabled ) && level.createfx_enabled ) { return 1; } allowed = 1; - while ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" ) + if ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" ) { allowed = 0; gameobjectnames = strtok( entity.script_gameobjectname, " " ); - i = 0; - while ( i < allowed_game_modes.size && !allowed ) + for ( i = 0; i < allowed_game_modes.size && !allowed; i++ ) { - j = 0; - while ( j < gameobjectnames.size && !allowed ) + for ( j = 0; j < gameobjectnames.size && !allowed; j++ ) { allowed = gameobjectnames[ j ] == allowed_game_modes[ i ]; - j++; } - i++; } } return allowed; } -filter_script_vehicles_from_vehicle_descriptors( allowed_game_modes ) +filter_script_vehicles_from_vehicle_descriptors( allowed_game_modes ) //checked changed to match cerberus output { vehicle_descriptors = getentarray( "vehicle_descriptor", "targetname" ); script_vehicles = getentarray( "script_vehicle", "classname" ); vehicles_to_remove = []; - descriptor_index = 0; - while ( descriptor_index < vehicle_descriptors.size ) + for ( descriptor_index = 0; descriptor_index < vehicle_descriptors.size; descriptor_index++ ) { descriptor = vehicle_descriptors[ descriptor_index ]; closest_distance_sq = 1E+12; closest_vehicle = undefined; - vehicle_index = 0; - while ( vehicle_index < script_vehicles.size ) + for ( vehicle_index = 0; vehicle_index < script_vehicles.size; vehicle_index++ ) { vehicle = script_vehicles[ vehicle_index ]; dsquared = distancesquared( vehicle getorigin(), descriptor getorigin() ); @@ -87,7 +82,6 @@ filter_script_vehicles_from_vehicle_descriptors( allowed_game_modes ) closest_distance_sq = dsquared; closest_vehicle = vehicle; } - vehicle_index++; } if ( isDefined( closest_vehicle ) ) { @@ -96,18 +90,15 @@ filter_script_vehicles_from_vehicle_descriptors( allowed_game_modes ) vehicles_to_remove[ vehicles_to_remove.size ] = closest_vehicle; } } - descriptor_index++; } - vehicle_index = 0; - while ( vehicle_index < vehicles_to_remove.size ) + for ( vehicle_index = 0; vehicle_index < vehicles_to_remove.size; vehicle_index++ ) { vehicles_to_remove[ vehicle_index ] delete(); - vehicle_index++; } return; } -init() +init() //checked matches cerberus output { level.numgametypereservedobjectives = 0; level.releasedobjectives = []; @@ -119,7 +110,7 @@ init() level thread onplayerconnect(); } -onplayerconnect() +onplayerconnect() //checked matches cerberus output { level endon( "game_ended" ); for ( ;; ) @@ -130,7 +121,7 @@ onplayerconnect() } } -onplayerspawned() +onplayerspawned() //checked matches cerberus output { self endon( "disconnect" ); level endon( "game_ended" ); @@ -147,7 +138,7 @@ onplayerspawned() } } -ondeath() +ondeath() //checked matches cerberus output { level endon( "game_ended" ); self waittill( "death" ); @@ -157,7 +148,7 @@ ondeath() } } -ondisconnect() +ondisconnect() //checked matches cerberus output { level endon( "game_ended" ); self waittill( "disconnect" ); @@ -167,7 +158,7 @@ ondisconnect() } } -createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) +createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) //checked changed to match cerberus output { carryobject = spawnstruct(); carryobject.type = "carryObject"; @@ -187,7 +178,7 @@ createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) carryobject.useweapon = undefined; if ( !isDefined( offset ) ) { - offset = ( 0, 0, 1 ); + offset = ( 0, 0, 0 ); } carryobject.offset3d = offset; carryobject.newstyle = 0; @@ -199,25 +190,19 @@ createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) { objectivename = &""; } - index = 0; - while ( index < visuals.size ) + for ( index = 0; index < visuals.size; index++ ) { visuals[ index ].baseorigin = visuals[ index ].origin; visuals[ index ].baseangles = visuals[ index ].angles; - index++; } carryobject.visuals = visuals; carryobject.compassicons = []; carryobject.objid = []; - while ( !carryobject.newstyle ) + if ( !carryobject.newstyle ) { - _a269 = level.teams; - _k269 = getFirstArrayKey( _a269 ); - while ( isDefined( _k269 ) ) + foreach ( team in level.teams ) { - team = _a269[ _k269 ]; carryobject.objid[ team ] = getnextobjid(); - _k269 = getNextArrayKey( _a269, _k269 ); } } carryobject.objidpingfriendly = 0; @@ -227,21 +212,20 @@ createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) { if ( level.teambased ) { - _a283 = level.teams; - _k283 = getFirstArrayKey( _a283 ); - while ( isDefined( _k283 ) ) + foreach ( team in level.teams ) { - team = _a283[ _k283 ]; objective_add( carryobject.objid[ team ], "invisible", carryobject.curorigin ); objective_team( carryobject.objid[ team ], team ); carryobject.objpoints[ team ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_" + team + "_" + carryobject.entnum, carryobject.curorigin + offset, team, undefined ); carryobject.objpoints[ team ].alpha = 0; - _k283 = getNextArrayKey( _a283, _k283 ); } } - else objective_add( carryobject.objid[ level.nonteambasedteam ], "invisible", carryobject.curorigin ); - carryobject.objpoints[ level.nonteambasedteam ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_" + level.nonteambasedteam + "_" + carryobject.entnum, carryobject.curorigin + offset, "all", undefined ); - carryobject.objpoints[ level.nonteambasedteam ].alpha = 0; + else + { + objective_add( carryobject.objid[ level.nonteambasedteam ], "invisible", carryobject.curorigin ); + carryobject.objpoints[ level.nonteambasedteam ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_" + level.nonteambasedteam + "_" + carryobject.entnum, carryobject.curorigin + offset, "all", undefined ); + carryobject.objpoints[ level.nonteambasedteam ].alpha = 0; + } } carryobject.objectiveid = getnextobjid(); objective_add( carryobject.objectiveid, "invisible", carryobject.curorigin, objectivename ); @@ -268,14 +252,10 @@ createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) carryobject.numtouching[ "none" ] = 0; carryobject.touchlist[ "neutral" ] = []; carryobject.touchlist[ "none" ] = []; - _a339 = level.teams; - _k339 = getFirstArrayKey( _a339 ); - while ( isDefined( _k339 ) ) + foreach ( team in level.teams ) { - team = _a339[ _k339 ]; carryobject.numtouching[ team ] = 0; carryobject.touchlist[ team ] = []; - _k339 = getNextArrayKey( _a339, _k339 ); } carryobject.curprogress = 0; carryobject.usetime = 0; @@ -298,18 +278,18 @@ createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) return carryobject; } -carryobjectusethink() +carryobjectusethink() //checked changed to match cerberus output { level endon( "game_ended" ); self.trigger endon( "destroyed" ); while ( 1 ) { self.trigger waittill( "trigger", player ); - while ( self.isresetting ) + if ( self.isresetting ) { continue; } - while ( !isalive( player ) ) + if ( !isalive( player ) ) { continue; } @@ -317,31 +297,31 @@ carryobjectusethink() { continue; } - while ( !self caninteractwith( player ) ) + if ( !self caninteractwith( player ) ) { continue; } - while ( !player.canpickupobject ) + if ( !player.canpickupobject ) { continue; } - while ( player.throwinggrenade ) + if ( player.throwinggrenade ) { continue; } - while ( isDefined( self.carrier ) ) + if ( isDefined( self.carrier ) ) { continue; } - while ( player isinvehicle() ) + if ( player isinvehicle() ) { continue; } - while ( player isweaponviewonlylinked() ) + if ( player isweaponviewonlylinked() ) { continue; } - while ( !player istouching( self.trigger ) ) + if ( !player istouching( self.trigger ) ) { continue; } @@ -349,18 +329,18 @@ carryobjectusethink() } } -carryobjectproxthink() +carryobjectproxthink() //checked changed to match cerberus output { level endon( "game_ended" ); self.trigger endon( "destroyed" ); while ( 1 ) { self.trigger waittill( "trigger", player ); - while ( self.isresetting ) + if ( self.isresetting ) { continue; } - while ( !isalive( player ) ) + if ( !isalive( player ) ) { continue; } @@ -368,31 +348,31 @@ carryobjectproxthink() { continue; } - while ( !self caninteractwith( player ) ) + if ( !self caninteractwith( player ) ) { continue; } - while ( !player.canpickupobject ) + if ( !player.canpickupobject ) { continue; } - while ( player.throwinggrenade ) + if ( player.throwinggrenade ) { continue; } - while ( isDefined( self.carrier ) ) + if ( isDefined( self.carrier ) ) { continue; } - while ( player isinvehicle() ) + if ( player isinvehicle() ) { continue; } - while ( player isweaponviewonlylinked() ) + if ( player isweaponviewonlylinked() ) { continue; } - while ( !player istouching( self.trigger ) ) + if ( !player istouching( self.trigger ) ) { continue; } @@ -400,7 +380,7 @@ carryobjectproxthink() } } -pickupobjectdelay( origin ) +pickupobjectdelay( origin ) //checked changed to match beta dump { level endon( "game_ended" ); self endon( "death" ); @@ -412,15 +392,12 @@ pickupobjectdelay( origin ) { break; } - else - { - wait 0,2; - } + wait 0.2; } self.canpickupobject = 1; } -setpickedup( player ) +setpickedup( player ) //checked changed to match cerberus output { if ( !isalive( player ) ) { @@ -432,22 +409,17 @@ setpickedup( player ) { player.carryobject thread setdropped(); } - else + else if ( isDefined( self.onpickupfailed ) ) { - if ( isDefined( self.onpickupfailed ) ) - { - self [[ self.onpickupfailed ]]( player ); - } - return; + self [[ self.onpickupfailed ]]( player ); } + return; } player giveobject( self ); self setcarrier( player ); - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ] thread hideobject(); - index++; } self.trigger.origin += vectorScale( ( 0, 0, 1 ), 10000 ); self notify( "pickup_object" ); @@ -460,7 +432,7 @@ setpickedup( player ) self updateobjective(); } -hideobject() +hideobject() //checked changed to match cerberus output { radius = 32; origin = self.origin; @@ -469,8 +441,7 @@ hideobject() linkedgrenades = []; linkedgrenadesindex = 0; self hide(); - i = 0; - while ( i < grenades.size ) + for ( i = 0; i < grenades.size; i++ ) { if ( distancesquared( origin, grenades[ i ].origin ) < radiussq ) { @@ -481,19 +452,16 @@ hideobject() linkedgrenadesindex++; } } - i++; } self.origin += vectorScale( ( 0, 0, 1 ), 10000 ); waittillframeend; - i = 0; - while ( i < linkedgrenadesindex ) + for ( i = 0; i < linkedgrenadesindex; i++ ) { - linkedgrenades[ i ] launch( vectorScale( ( 0, 0, 1 ), 5 ) ); - i++; + linkedgrenades[ i ] launch( vectorScale( ( 1, 1, 1 ), 5 ) ); } } -updatecarryobjectorigin() +updatecarryobjectorigin() //checked changed to match beta dump { level endon( "game_ended" ); self.trigger endon( "destroyed" ); @@ -507,21 +475,14 @@ updatecarryobjectorigin() if ( isDefined( self.carrier ) && level.teambased ) { self.curorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 75 ); - _a606 = level.teams; - _k606 = getFirstArrayKey( _a606 ); - while ( isDefined( _k606 ) ) + foreach ( team in level.teams ) { - team = _a606[ _k606 ]; self.objpoints[ team ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin ); - _k606 = getNextArrayKey( _a606, _k606 ); } - while ( self.visibleteam != "friendly" && self.visibleteam == "any" && self.objidpingfriendly ) + if ( ( self.visibleteam == "friendly" || self.visibleteam == "any" ) && self.objidpingfriendly ) { - _a613 = level.teams; - _k613 = getFirstArrayKey( _a613 ); - while ( isDefined( _k613 ) ) + foreach ( team in level.teams ) { - team = _a613[ _k613 ]; if ( self isfriendlyteam( team ) ) { if ( self.objpoints[ team ].isshown ) @@ -532,10 +493,9 @@ updatecarryobjectorigin() } objective_position( self.objid[ team ], self.curorigin ); } - _k613 = getNextArrayKey( _a613, _k613 ); } } - if ( self.visibleteam != "enemy" && self.visibleteam == "any" && self.objidpingenemy ) + if ( ( self.visibleteam == "enemy" && self.visibleteam == "any" ) && self.objidpingenemy ) { if ( !self isfriendlyteam( team ) ) { @@ -549,39 +509,34 @@ updatecarryobjectorigin() } } self wait_endon( objpingdelay, "dropped", "reset" ); - continue; + } + else if ( isDefined( self.carrier ) ) + { + self.curorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 75 ); + self.objpoints[ level.nonteambasedteam ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin ); + objective_position( self.objid[ level.nonteambasedteam ], self.curorigin ); + wait 0.05; } else { - if ( isDefined( self.carrier ) ) + if ( level.teambased ) { - self.curorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 75 ); - self.objpoints[ level.nonteambasedteam ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin ); - objective_position( self.objid[ level.nonteambasedteam ], self.curorigin ); - wait 0,05; - break; - } - else - { - if ( level.teambased ) + foreach ( team in level.teams ) { - _a656 = level.teams; - _k656 = getFirstArrayKey( _a656 ); - while ( isDefined( _k656 ) ) - { - team = _a656[ _k656 ]; - self.objpoints[ team ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin + self.offset3d ); - _k656 = getNextArrayKey( _a656, _k656 ); - } + self.objpoints[ team ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin + self.offset3d ); + _k656 = getNextArrayKey( _a656, _k656 ); } - else self.objpoints[ level.nonteambasedteam ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin + self.offset3d ); - wait 0,05; } + else + { + self.objpoints[ level.nonteambasedteam ] maps/mp/gametypes/_objpoints::updateorigin( self.curorigin + self.offset3d ); + } + wait 0.05; } } } -updatecarryobjectobjectiveorigin() +updatecarryobjectobjectiveorigin() //checked changed to match beta dump { level endon( "game_ended" ); self.trigger endon( "destroyed" ); @@ -597,21 +552,22 @@ updatecarryobjectobjectiveorigin() self.curorigin = self.carrier.origin; objective_position( self.objectiveid, self.curorigin ); self wait_endon( objpingdelay, "dropped", "reset" ); - continue; } else { objective_position( self.objectiveid, self.curorigin ); - wait 0,05; + wait 0.05; } } } -giveobject( object ) +giveobject( object ) //checked changed to match beta dump { + /* /# assert( !isDefined( self.carryobject ) ); #/ + */ self.carryobject = object; self thread trackcarrier(); if ( !object.allowweapons ) @@ -636,36 +592,37 @@ giveobject( object ) self.carryicon.horzalign = "right"; self.carryicon.vertalign = "bottom"; } - else self.carryicon = createicon( object.carryicon, 50, 50 ); - if ( !object.allowweapons ) + else { - self.carryicon setpoint( "CENTER", "CENTER", 0, 60 ); + self.carryicon = createicon( object.carryicon, 50, 50 ); + if ( !object.allowweapons ) + { + self.carryicon setpoint( "CENTER", "CENTER", 0, 60 ); + } + else + { + self.carryicon.x = 130; + self.carryicon.y = -60; + self.carryicon.horzalign = "user_left"; + self.carryicon.vertalign = "user_bottom"; + } } - else - { - self.carryicon.x = 130; - self.carryicon.y = -60; - self.carryicon.horzalign = "user_left"; - self.carryicon.vertalign = "user_bottom"; - } - self.carryicon.alpha = 0,75; + self.carryicon.alpha = 0.75; self.carryicon.hidewhileremotecontrolling = 1; self.carryicon.hidewheninkillcam = 1; } } } -returnhome() +returnhome() //checked changed to match cerberus output { self.isresetting = 1; self notify( "reset" ); - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ].origin = self.visuals[ index ].baseorigin; self.visuals[ index ].angles = self.visuals[ index ].baseangles; self.visuals[ index ] show(); - index++; } self.trigger.origin = self.trigger.baseorigin; self.curorigin = self.trigger.origin; @@ -680,7 +637,7 @@ returnhome() self.isresetting = 0; } -isobjectawayfromhome() +isobjectawayfromhome() //checked matches cerberus output { if ( isDefined( self.carrier ) ) { @@ -693,17 +650,15 @@ isobjectawayfromhome() return 0; } -setposition( origin, angles ) +setposition( origin, angles ) //checked changed to match cerberus output { self.isresetting = 1; - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { visual = self.visuals[ index ]; visual.origin = origin; visual.angles = angles; visual show(); - index++; } self.trigger.origin = origin; self.curorigin = self.trigger.origin; @@ -714,7 +669,7 @@ setposition( origin, angles ) self.isresetting = 0; } -onplayerlaststand() +onplayerlaststand() //checked matches cerberus output { if ( isDefined( self.carryobject ) ) { @@ -722,12 +677,12 @@ onplayerlaststand() } } -setdropped() +setdropped() //checked changed to match cerberus output { self.isresetting = 1; self notify( "dropped" ); - startorigin = ( 0, 0, 1 ); - endorigin = ( 0, 0, 1 ); + startorigin = ( 0, 0, 0 ); + endorigin = ( 0, 0, 0 ); body = undefined; if ( isDefined( self.carrier ) && self.carrier.team != "spectator" ) { @@ -758,13 +713,11 @@ setdropped() { dropangles = ( 0, tempangle, 0 ); } - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ].origin = droporigin; self.visuals[ index ].angles = dropangles; self.visuals[ index ] show(); - index++; } self.trigger.origin = droporigin; self.curorigin = self.trigger.origin; @@ -772,13 +725,11 @@ setdropped() } else { - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ].origin = self.visuals[ index ].baseorigin; self.visuals[ index ].angles = self.visuals[ index ].baseangles; self.visuals[ index ] show(); - index++; } self.trigger.origin = self.trigger.baseorigin; self.curorigin = self.trigger.baseorigin; @@ -794,14 +745,14 @@ setdropped() self.isresetting = 0; } -setcarrier( carrier ) +setcarrier( carrier ) //checked matches cerberus output { self.carrier = carrier; objective_setplayerusing( self.objectiveid, carrier ); self thread updatevisibilityaccordingtoradar(); } -clearcarrier() +clearcarrier() //checked matches cerberus output { if ( !isDefined( self.carrier ) ) { @@ -813,49 +764,45 @@ clearcarrier() self notify( "carrier_cleared" ); } -shouldbereset( minz, maxz ) +shouldbereset( minz, maxz ) //checked changed to match cerberus output { minetriggers = getentarray( "minefield", "targetname" ); hurttriggers = getentarray( "trigger_hurt", "classname" ); elevators = getentarray( "script_elevator", "targetname" ); - index = 0; - while ( index < minetriggers.size ) + for ( index = 0; index < minetriggers.size; index++ ) { if ( self.visuals[ 0 ] istouchingswept( minetriggers[ index ], minz, maxz ) ) { return 1; } - index++; } - index = 0; - while ( index < hurttriggers.size ) + for ( index = 0; index < hurttriggers.size; index++ ) { if ( self.visuals[ 0 ] istouchingswept( hurttriggers[ index ], minz, maxz ) ) { return 1; } - index++; } - index = 0; - while ( index < elevators.size ) + for ( index = 0; index < elevators.size; index++ ) { + /* /# assert( isDefined( elevators[ index ].occupy_volume ) ); #/ + */ if ( self.visuals[ 0 ] istouchingswept( elevators[ index ].occupy_volume, minz, maxz ) ) { return 1; } - index++; } return 0; } -pickuptimeout( minz, maxz ) +pickuptimeout( minz, maxz ) //checked matches cerberus output { self endon( "pickup_object" ); self endon( "stop_pickup_timeout" ); - wait 0,05; + wait 0.05; if ( self shouldbereset( minz, maxz ) ) { self returnhome(); @@ -871,7 +818,7 @@ pickuptimeout( minz, maxz ) } } -takeobject( object ) +takeobject( object ) //checked matches cerberus output { if ( isDefined( self.carryicon ) ) { @@ -902,7 +849,7 @@ takeobject( object ) } } -trackcarrier() +trackcarrier() //checked matches cerberus output { level endon( "game_ended" ); self endon( "disconnect" ); @@ -918,11 +865,11 @@ trackcarrier() self.carryobject.safeorigin = trace[ "position" ]; } } - wait 0,05; + wait 0.05; } } -manualdropthink() +manualdropthink() //checked changed to match beta dump { level endon( "game_ended" ); self endon( "disconnect" ); @@ -930,13 +877,13 @@ manualdropthink() self endon( "drop_object" ); for ( ;; ) { - while ( !self attackbuttonpressed() && !self fragbuttonpressed() || self secondaryoffhandbuttonpressed() && self meleebuttonpressed() ) + while ( self attackbuttonpressed() || self fragbuttonpressed() || self secondaryoffhandbuttonpressed() || self meleebuttonpressed() ) { - wait 0,05; + wait 0.05; } while ( !self attackbuttonpressed() && !self fragbuttonpressed() && !self secondaryoffhandbuttonpressed() && !self meleebuttonpressed() ) { - wait 0,05; + wait 0.05; } if ( isDefined( self.carryobject ) && !self usebuttonpressed() ) { @@ -945,7 +892,7 @@ manualdropthink() } } -createuseobject( ownerteam, trigger, visuals, offset, objectivename ) +createuseobject( ownerteam, trigger, visuals, offset, objectivename ) //checked changed to match cerberus output { useobject = spawnstruct(); useobject.type = "useObject"; @@ -962,17 +909,15 @@ createuseobject( ownerteam, trigger, visuals, offset, objectivename ) useobject.triggertype = "proximity"; } useobject.trigger = trigger; - index = 0; - while ( index < visuals.size ) + for ( index = 0; index < visuals.size; index++ ) { visuals[ index ].baseorigin = visuals[ index ].origin; visuals[ index ].baseangles = visuals[ index ].angles; - index++; } useobject.visuals = visuals; if ( !isDefined( offset ) ) { - offset = ( 0, 0, 1 ); + offset = ( 0, 0, 0 ); } useobject.offset3d = offset; useobject.newstyle = 0; @@ -988,27 +933,22 @@ createuseobject( ownerteam, trigger, visuals, offset, objectivename ) useobject.objid = []; if ( !useobject.newstyle ) { - _a1172 = level.teams; - _k1172 = getFirstArrayKey( _a1172 ); - while ( isDefined( _k1172 ) ) + foreach ( team in level.teams ) { - team = _a1172[ _k1172 ]; useobject.objid[ team ] = getnextobjid(); - _k1172 = getNextArrayKey( _a1172, _k1172 ); } if ( level.teambased ) { - _a1179 = level.teams; - _k1179 = getFirstArrayKey( _a1179 ); - while ( isDefined( _k1179 ) ) + foreach ( team in level.teams ) { - team = _a1179[ _k1179 ]; objective_add( useobject.objid[ team ], "invisible", useobject.curorigin ); objective_team( useobject.objid[ team ], team ); - _k1179 = getNextArrayKey( _a1179, _k1179 ); } } - else objective_add( useobject.objid[ level.nonteambasedteam ], "invisible", useobject.curorigin ); + else + { + objective_add( useobject.objid[ level.nonteambasedteam ], "invisible", useobject.curorigin ); + } } useobject.objectiveid = getnextobjid(); objective_add( useobject.objectiveid, "invisible", useobject.curorigin + offset, objectivename ); @@ -1016,18 +956,17 @@ createuseobject( ownerteam, trigger, visuals, offset, objectivename ) { if ( level.teambased ) { - _a1203 = level.teams; - _k1203 = getFirstArrayKey( _a1203 ); - while ( isDefined( _k1203 ) ) + foreach ( team in level.teams ) { - team = _a1203[ _k1203 ]; useobject.objpoints[ team ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_" + team + "_" + useobject.entnum, useobject.curorigin + offset, team, undefined ); useobject.objpoints[ team ].alpha = 0; - _k1203 = getNextArrayKey( _a1203, _k1203 ); } } - else useobject.objpoints[ level.nonteambasedteam ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_allies_" + useobject.entnum, useobject.curorigin + offset, "all", undefined ); - useobject.objpoints[ level.nonteambasedteam ].alpha = 0; + else + { + useobject.objpoints[ level.nonteambasedteam ] = maps/mp/gametypes/_objpoints::createteamobjpoint( "objpoint_allies_" + useobject.entnum, useobject.curorigin + offset, "all", undefined ); + useobject.objpoints[ level.nonteambasedteam ].alpha = 0; + } } useobject.interactteam = "none"; useobject.worldicons = []; @@ -1045,14 +984,10 @@ createuseobject( ownerteam, trigger, visuals, offset, objectivename ) useobject.numtouching[ "none" ] = 0; useobject.touchlist[ "neutral" ] = []; useobject.touchlist[ "none" ] = []; - _a1242 = level.teams; - _k1242 = getFirstArrayKey( _a1242 ); - while ( isDefined( _k1242 ) ) + foreach ( team in level.teams ) { - team = _a1242[ _k1242 ]; useobject.numtouching[ team ] = 0; useobject.touchlist[ team ] = []; - _k1242 = getNextArrayKey( _a1242, _k1242 ); } useobject.teamusetimes = []; useobject.teamusetexts = []; @@ -1074,7 +1009,7 @@ createuseobject( ownerteam, trigger, visuals, offset, objectivename ) return useobject; } -setkeyobject( object ) +setkeyobject( object ) //checked matches cerberus output { if ( !isDefined( object ) ) { @@ -1088,44 +1023,42 @@ setkeyobject( object ) self.keyobject[ self.keyobject.size ] = object; } -haskeyobject( use ) +haskeyobject( use ) //checked changed to match cerberus output { - x = 0; - while ( x < use.keyobject.size ) + for ( x = 0; x < use.keyobject.size; x++ ) { if ( isDefined( self.carryobject ) && isDefined( use.keyobject[ x ] ) && self.carryobject == use.keyobject[ x ] ) { return 1; } - x++; } return 0; } -useobjectusethink() +useobjectusethink() //checked changed to match cerberus output { level endon( "game_ended" ); self.trigger endon( "destroyed" ); while ( 1 ) { self.trigger waittill( "trigger", player ); - while ( !isalive( player ) ) + if ( !isalive( player ) ) { continue; } - while ( !self caninteractwith( player ) ) + if ( !self caninteractwith( player ) ) { continue; } - while ( !player isonground() ) + if ( !player isonground() ) { continue; } - while ( player isinvehicle() ) + if ( player isinvehicle() ) { continue; } - while ( isDefined( self.keyobject ) || !isDefined( player.carryobject ) && !player haskeyobject( self ) ) + if ( isDefined( self.keyobject ) && !isDefined( player.carryobject ) || !player haskeyobject( self ) ) { if ( isDefined( self.oncantuse ) ) { @@ -1146,7 +1079,7 @@ useobjectusethink() self [[ self.onenduse ]]( team, player, result ); } } - while ( !result ) + if ( !result ) { continue; } @@ -1157,19 +1090,20 @@ useobjectusethink() } } -getearliestclaimplayer() +getearliestclaimplayer() //checked changed to match cerberus output { + /* /# assert( self.claimteam != "none" ); #/ + */ team = self.claimteam; earliestplayer = self.claimplayer; - while ( self.touchlist[ team ].size > 0 ) + if ( self.touchlist[ team ].size > 0 ) { earliesttime = undefined; players = getarraykeys( self.touchlist[ team ] ); - index = 0; - while ( index < players.size ) + for ( index = 0; index < players.size; index++ ) { touchdata = self.touchlist[ team ][ players[ index ] ]; if ( !isDefined( earliesttime ) || touchdata.starttime < earliesttime ) @@ -1177,13 +1111,12 @@ getearliestclaimplayer() earliestplayer = touchdata.player; earliesttime = touchdata.starttime; } - index++; } } return earliestplayer; } -useobjectproxthink() +useobjectproxthink() //checked changed to match beta dump { level endon( "game_ended" ); self.trigger endon( "destroyed" ); @@ -1220,41 +1153,41 @@ useobjectproxthink() self.claimplayer = undefined; self clearprogress(); } - else if ( self.usetime || !self.mustmaintainclaim && self getownerteam() != self getclaimteam() ) + else { - if ( self.decayprogress && !self.numtouching[ self.claimteam ] ) + if ( !self.mustmaintainclaim || self getownerteam() != self getclaimteam() && self.usetime ) { - if ( isDefined( self.claimplayer ) ) + if ( self.decayprogress && !self.numtouching[ self.claimteam ] ) { - if ( isDefined( self.onenduse ) ) + if ( isDefined( self.claimplayer ) ) { - self [[ self.onenduse ]]( self getclaimteam(), self.claimplayer, 0 ); + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( self getclaimteam(), self.claimplayer, 0 ); + } + self.claimplayer = undefined; + } + decayscale = 0; + if ( self.decaytime ) + { + decayscale = self.usetime / self.decaytime; + } + self.curprogress -= 50 * self.userate * decayscale; + if ( self.curprogress <= 0 ) + { + self clearprogress(); + } + self updatecurrentprogress(); + if ( isDefined( self.onuseupdate ) ) + { + self [[ self.onuseupdate ]]( self getclaimteam(), self.curprogress / self.usetime, ( 50 * self.userate * decayscale ) / self.usetime ); + } + if ( self.curprogress == 0 ) + { + self setclaimteam( "none" ); } - self.claimplayer = undefined; } - decayscale = 0; - if ( self.decaytime ) - { - decayscale = self.usetime / self.decaytime; - } - self.curprogress -= 50 * self.userate * decayscale; - if ( self.curprogress <= 0 ) - { - self clearprogress(); - } - self updatecurrentprogress(); - if ( isDefined( self.onuseupdate ) ) - { - self [[ self.onuseupdate ]]( self getclaimteam(), self.curprogress / self.usetime, ( 50 * self.userate * decayscale ) / self.usetime ); - } - if ( self.curprogress == 0 ) - { - self setclaimteam( "none" ); - } - } - else - { - if ( !self.numtouching[ self.claimteam ] ) + else if ( !self.numtouching[ self.claimteam ] ) { if ( isDefined( self.onenduse ) ) { @@ -1274,10 +1207,7 @@ useobjectproxthink() } } } - } - else - { - if ( !self.mustmaintainclaim ) + else if ( !self.mustmaintainclaim ) { if ( isDefined( self.onuse ) ) { @@ -1288,7 +1218,6 @@ useobjectproxthink() self setclaimteam( "none" ); self.claimplayer = undefined; } - break; } else if ( !self.numtouching[ self.claimteam ] ) { @@ -1298,22 +1227,18 @@ useobjectproxthink() } self setclaimteam( "none" ); self.claimplayer = undefined; - break; } - else + else if ( self.cancontestclaim ) { - if ( self.cancontestclaim ) + numother = getnumtouchingexceptteam( self.claimteam ); + if ( numother > 0 ) { - numother = getnumtouchingexceptteam( self.claimteam ); - if ( numother > 0 ) + if ( isDefined( self.oncontested ) ) { - if ( isDefined( self.oncontested ) ) - { - self [[ self.oncontested ]](); - } - self setclaimteam( "none" ); - self.claimplayer = undefined; + self [[ self.oncontested ]](); } + self setclaimteam( "none" ); + self.claimplayer = undefined; } } } @@ -1330,29 +1255,25 @@ useobjectproxthink() { self [[ self.onunoccupied ]](); } - break; } - else + else if ( self.cancontestclaim && self.lastclaimteam != "none" && self.numtouching[ self.lastclaimteam ] ) { - if ( self.cancontestclaim && self.lastclaimteam != "none" && self.numtouching[ self.lastclaimteam ] ) + numother = getnumtouchingexceptteam( self.lastclaimteam ); + if ( numother == 0 ) { - numother = getnumtouchingexceptteam( self.lastclaimteam ); - if ( numother == 0 ) + if ( isDefined( self.onuncontested ) ) { - if ( isDefined( self.onuncontested ) ) - { - self [[ self.onuncontested ]]( self.lastclaimteam ); - } + self [[ self.onuncontested ]]( self.lastclaimteam ); } } } } - wait 0,05; + wait 0.05; maps/mp/gametypes/_hostmigration::waittillhostmigrationdone(); } } -useobjectlockedforteam( team ) +useobjectlockedforteam( team ) //checked matches cerberus output { if ( isDefined( self.teamlock ) && isDefined( level.teams[ team ] ) ) { @@ -1361,7 +1282,7 @@ useobjectlockedforteam( team ) return 0; } -canclaim( player ) +canclaim( player ) //checked matches cerberus output { if ( isDefined( self.carrier ) ) { @@ -1382,7 +1303,7 @@ canclaim( player ) return 0; } -proxtriggerthink() +proxtriggerthink() //checked changed to match cerberus output { level endon( "game_ended" ); self.trigger endon( "destroyed" ); @@ -1394,15 +1315,15 @@ proxtriggerthink() { continue; } - while ( player.spawntime == getTime() ) + if ( player.spawntime == getTime() ) { continue; } - while ( player isweaponviewonlylinked() ) + if ( player isweaponviewonlylinked() ) { continue; } - while ( self isexcluded( player ) ) + if ( self isexcluded( player ) ) { continue; } @@ -1421,14 +1342,10 @@ proxtriggerthink() { self [[ self.onbeginuse ]]( self.claimplayer ); } - break; } - else + else if ( isDefined( self.oncantuse ) ) { - if ( isDefined( self.oncantuse ) ) - { - self [[ self.oncantuse ]]( player ); - } + self [[ self.oncantuse ]]( player ); } } if ( isalive( player ) && !isDefined( player.touchtriggers[ entitynumber ] ) ) @@ -1438,27 +1355,23 @@ proxtriggerthink() } } -isexcluded( player ) +isexcluded( player ) //checked changed to match cerberus output { if ( !isDefined( self.exclusions ) ) { return 0; } - _a1676 = self.exclusions; - _k1676 = getFirstArrayKey( _a1676 ); - while ( isDefined( _k1676 ) ) + foreach ( exclusion in self.exclusions ) { - exclusion = _a1676[ _k1676 ]; if ( exclusion istouching( player ) ) { return 1; } - _k1676 = getNextArrayKey( _a1676, _k1676 ); } return 0; } -clearprogress() +clearprogress() //checked matches cerberus output { self.curprogress = 0; self updatecurrentprogress(); @@ -1468,21 +1381,20 @@ clearprogress() } } -setclaimteam( newteam ) +setclaimteam( newteam ) //checked changed to match cerberus output { + /* /# assert( newteam != self.claimteam ); #/ + */ if ( self.claimteam == "none" && ( getTime() - self.lastclaimtime ) > ( self.claimgraceperiod * 1000 ) ) { self clearprogress(); } - else + else if ( newteam != "none" && newteam != self.lastclaimteam ) { - if ( newteam != "none" && newteam != self.lastclaimteam ) - { - self clearprogress(); - } + self clearprogress(); } self.lastclaimteam = self.claimteam; self.lastclaimtime = getTime(); @@ -1490,12 +1402,12 @@ setclaimteam( newteam ) self updateuserate(); } -getclaimteam() +getclaimteam() //checked matches cerberus output { return self.claimteam; } -continuetriggertouchthink( team, object ) +continuetriggertouchthink( team, object ) //checked matches cerberus output { if ( !isalive( self ) ) { @@ -1512,7 +1424,7 @@ continuetriggertouchthink( team, object ) return 1; } -triggertouchthink( object ) +triggertouchthink( object ) //checked changed to match cerberus output { team = self.pers[ "team" ]; score = 1; @@ -1538,7 +1450,7 @@ triggertouchthink( object ) { self updateproxbar( object, 0 ); } - wait 0,05; + wait 0.05; } if ( isDefined( self ) ) { @@ -1546,12 +1458,14 @@ triggertouchthink( object ) { self updateproxbar( object, 1 ); } + self.touchtriggers[object.entnum] = undefined; objective_clearplayerusing( object.objectiveid, self ); } if ( level.gameended ) { return; } + object.touchlist[team][touchname] = undefined; object.numtouching[ team ] -= score; if ( object.numtouching[ team ] < 1 ) { @@ -1572,7 +1486,7 @@ triggertouchthink( object ) object updateuserate(); } -updateproxbar( object, forceremove ) +updateproxbar( object, forceremove ) //checked changed to match beta dump { if ( object.newstyle ) { @@ -1592,42 +1506,42 @@ updateproxbar( object, forceremove ) } return; } - else if ( !isDefined( self.proxbar ) ) + else { - self.proxbar = createprimaryprogressbar(); - self.proxbar.lastuserate = -1; - } - if ( self.pers[ "team" ] == object.claimteam ) - { - if ( self.proxbar.bar.color != ( 0, 0, 1 ) ) + if ( !isDefined( self.proxbar ) ) { - self.proxbar.bar.color = ( 0, 0, 1 ); + self.proxbar = createprimaryprogressbar(); self.proxbar.lastuserate = -1; } - } - else - { - if ( self.proxbar.bar.color != ( 0, 0, 1 ) ) + if ( self.pers[ "team" ] == object.claimteam ) { - self.proxbar.bar.color = ( 0, 0, 1 ); - self.proxbar.lastuserate = -1; + if ( self.proxbar.bar.color != ( 1, 1, 1 ) ) + { + self.proxbar.bar.color = ( 1, 1, 1 ); + self.proxbar.lastuserate = -1; + } + } + else + { + if ( self.proxbar.bar.color != ( 1, 0, 0 ) ) + { + self.proxbar.bar.color = ( 1, 0, 0 ); + self.proxbar.lastuserate = -1; + } } } } - else + else if ( !forceremove || !object caninteractwith( self ) || self.pers[ "team" ] != object.claimteam ) { - if ( !forceremove || !object caninteractwith( self ) && self.pers[ "team" ] != object.claimteam ) + if ( isDefined( self.proxbar ) ) { - if ( isDefined( self.proxbar ) ) - { - self.proxbar hideelem(); - } - if ( isDefined( self.proxbartext ) ) - { - self.proxbartext hideelem(); - } - return; + self.proxbar hideelem(); } + if ( isDefined( self.proxbartext ) ) + { + self.proxbartext hideelem(); + } + return; } if ( !isDefined( self.proxbar ) ) { @@ -1685,14 +1599,11 @@ updateproxbar( object, forceremove ) } } -getnumtouchingexceptteam( ignoreteam ) +getnumtouchingexceptteam( ignoreteam ) //checked partially changed to match cerberus output see github for more info { numtouching = 0; - _a1944 = level.teams; - _k1944 = getFirstArrayKey( _a1944 ); - while ( isDefined( _k1944 ) ) + foreach ( team in level.teams ) { - team = _a1944[ _k1944 ]; if ( ignoreteam == team ) { } @@ -1700,12 +1611,11 @@ getnumtouchingexceptteam( ignoreteam ) { numtouching += self.numtouching[ team ]; } - _k1944 = getNextArrayKey( _a1944, _k1944 ); } return numtouching; } -updateuserate() +updateuserate() //checked changed to match beta dump { numclaimants = self.numtouching[ self.claimteam ]; numother = 0; @@ -1717,19 +1627,13 @@ updateuserate() { self.userate = numclaimants; } - else + else if ( !numclaimants && numother ) { - if ( !numclaimants && numother ) - { - self.userate = numother; - } - else - { - if ( !numclaimants && !numother ) - { - self.userate = 0; - } - } + self.userate = numother; + } + else if ( !numclaimants && !numother ) + { + self.userate = 0; } } else @@ -1745,7 +1649,7 @@ updateuserate() } } -useholdthink( player ) +useholdthink( player ) //checked changed to match cerberus output { player notify( "use_hold" ); if ( !is_true( self.dontlinkplayertotrigger ) ) @@ -1759,19 +1663,25 @@ useholdthink( player ) lastweapon = player getcurrentweapon(); if ( isDefined( useweapon ) ) { + /* /# assert( isDefined( lastweapon ) ); #/ + */ if ( lastweapon == useweapon ) { + /* /# assert( isDefined( player.lastnonuseweapon ) ); #/ + */ lastweapon = player.lastnonuseweapon; } + /* /# assert( lastweapon != useweapon ); #/ + */ player.lastnonuseweapon = lastweapon; player giveweapon( useweapon ); player setweaponammostock( useweapon, 0 ); @@ -1823,12 +1733,9 @@ useholdthink( player ) player switchtolastnonkillstreakweapon(); } } - else + else if ( isalive( player ) ) { - if ( isalive( player ) ) - { - player _enableweapon(); - } + player _enableweapon(); } if ( !is_true( self.dontlinkplayertotrigger ) ) { @@ -1851,7 +1758,7 @@ useholdthink( player ) return 0; } -takeuseweapon( useweapon ) +takeuseweapon( useweapon ) //checked changed to match cerberus output { self endon( "use_hold" ); self endon( "death" ); @@ -1859,14 +1766,14 @@ takeuseweapon( useweapon ) level endon( "game_ended" ); while ( self getcurrentweapon() == useweapon && !self.throwinggrenade ) { - wait 0,05; + wait 0.05; } self takeweapon( useweapon ); } -continueholdthinkloop( player, waitforweapon, timedout, usetime ) +continueholdthinkloop( player, waitforweapon, timedout, usetime ) //checked matches cerberus output { - maxwaittime = 1,5; + maxwaittime = 1.5; if ( !isalive( player ) ) { return 0; @@ -1918,7 +1825,7 @@ continueholdthinkloop( player, waitforweapon, timedout, usetime ) return 1; } -updatecurrentprogress() +updatecurrentprogress() //checked matches cerberus output { if ( self.usetime ) { @@ -1934,7 +1841,7 @@ updatecurrentprogress() } } -useholdthinkloop( player, lastweapon ) +useholdthinkloop( player, lastweapon ) //checked changed to match beta dump { level endon( "game_ended" ); self endon( "disabled" ); @@ -1944,7 +1851,7 @@ useholdthinkloop( player, lastweapon ) usetime = self.usetime; while ( self continueholdthinkloop( player, waitforweapon, timedout, usetime ) ) { - timedout += 0,05; + timedout += 0.05; if ( !isDefined( useweapon ) || player getcurrentweapon() == useweapon ) { self.curprogress += 50 * self.userate; @@ -1963,7 +1870,7 @@ useholdthinkloop( player, lastweapon ) player.claimtrigger = undefined; if ( isDefined( useweapon ) ) { - if ( lastweapon != "none" && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( lastweapon ) && isweaponequipment( lastweapon ) && player getweaponammoclip( lastweapon ) != 0 ) + if ( lastweapon != "none" && !maps/mp/killstreaks/_killstreaks::iskillstreakweapon( lastweapon ) && !( isweaponequipment( lastweapon ) && player getweaponammoclip( lastweapon ) == 0 ) ) { player switchtoweapon( lastweapon ); } @@ -1981,16 +1888,16 @@ useholdthinkloop( player, lastweapon ) { player unlink(); } - wait 0,05; + wait 0.05; return isalive( player ); } - wait 0,05; + wait 0.05; maps/mp/gametypes/_hostmigration::waittillhostmigrationdone(); } return 0; } -personalusebar( object ) +personalusebar( object ) //checked matches cerberus output { self endon( "disconnect" ); if ( object.newstyle ) @@ -2051,13 +1958,13 @@ personalusebar( object ) } lastrate = object.userate; lasthostmigrationstate = isDefined( level.hostmigrationtimer ); - wait 0,05; + wait 0.05; } self.usebar destroyelem(); self.usebartext destroyelem(); } -updatetrigger() +updatetrigger() //checked changed to match cerberus output { if ( self.triggertype != "use" ) { @@ -2072,33 +1979,26 @@ updatetrigger() self.trigger.origin = self.curorigin; self.trigger setteamfortrigger( "none" ); } - else + else if ( self.interactteam == "friendly" ) { - if ( self.interactteam == "friendly" ) + self.trigger.origin = self.curorigin; + if ( isDefined( level.teams[ self.ownerteam ] ) ) { - self.trigger.origin = self.curorigin; - if ( isDefined( level.teams[ self.ownerteam ] ) ) - { - self.trigger setteamfortrigger( self.ownerteam ); - } - else - { - self.trigger.origin -= vectorScale( ( 0, 0, 1 ), 50000 ); - } - return; + self.trigger setteamfortrigger( self.ownerteam ); } else { - if ( self.interactteam == "enemy" ) - { - self.trigger.origin = self.curorigin; - self.trigger setexcludeteamfortrigger( self.ownerteam ); - } + self.trigger.origin -= vectorScale( ( 0, 0, 1 ), 50000 ); } } + else if ( self.interactteam == "enemy" ) + { + self.trigger.origin = self.curorigin; + self.trigger setexcludeteamfortrigger( self.ownerteam ); + } } -updateobjective() +updateobjective() //checked matches cerberus output { if ( !self.newstyle ) { @@ -2139,7 +2039,7 @@ updateobjective() } } -updateworldicons() +updateworldicons() //checked matches cerberus output { if ( self.visibleteam == "any" ) { @@ -2163,7 +2063,7 @@ updateworldicons() } } -updateworldicon( relativeteam, showicon ) +updateworldicon( relativeteam, showicon ) //checked partially changed to match cerberus output see info.md { if ( self.newstyle ) { @@ -2191,7 +2091,7 @@ updateworldicon( relativeteam, showicon ) if ( showicon ) { objpoint setshader( self.worldicons[ relativeteam ], level.objpointsize, level.objpointsize ); - objpoint fadeovertime( 0,05 ); + objpoint fadeovertime( 0.05 ); objpoint.alpha = objpoint.basealpha; objpoint.isshown = 1; iswaypoint = 1; @@ -2222,19 +2122,16 @@ updateworldicon( relativeteam, showicon ) index++; continue; } - else - { - objpoint fadeovertime( 0,05 ); - objpoint.alpha = 0; - objpoint.isshown = 0; - objpoint cleartargetent(); - } + objpoint fadeovertime( 0,05 ); + objpoint.alpha = 0; + objpoint.isshown = 0; + objpoint cleartargetent(); } index++; } } -updatecompassicons() +updatecompassicons() //checked matches cerberus output { if ( self.visibleteam == "any" ) { @@ -2258,7 +2155,7 @@ updatecompassicons() } } -updatecompassicon( relativeteam, showicon ) +updatecompassicon( relativeteam, showicon ) //checked partially changed to match cerberus output see info.md { if ( self.newstyle ) { @@ -2287,90 +2184,76 @@ updatecompassicon( relativeteam, showicon ) index++; continue; } - else + objective_icon( objid, self.compassicons[ relativeteam ] ); + objective_state( objid, "active" ); + if ( self.type == "carryObject" ) { - objective_icon( objid, self.compassicons[ relativeteam ] ); - objective_state( objid, "active" ); - if ( self.type == "carryObject" ) + if ( isalive( self.carrier ) && !shouldpingobject( relativeteam ) ) { - if ( isalive( self.carrier ) && !shouldpingobject( relativeteam ) ) - { - objective_onentity( objid, self.carrier ); - index++; - continue; - } - else - { - objective_position( objid, self.curorigin ); - } + objective_onentity( objid, self.carrier ); + index++; + continue; } + objective_position( objid, self.curorigin ); } index++; } } -shouldpingobject( relativeteam ) +shouldpingobject( relativeteam ) //checked changed to match cerberus output { if ( relativeteam == "friendly" && self.objidpingfriendly ) { return 1; } - else + else if ( relativeteam == "enemy" && self.objidpingenemy ) { - if ( relativeteam == "enemy" && self.objidpingenemy ) - { - return 1; - } + return 1; } return 0; } -getupdateteams( relativeteam ) +getupdateteams( relativeteam ) //checked changed to match beta dump { updateteams = []; if ( level.teambased ) { if ( relativeteam == "friendly" ) { - _a2569 = level.teams; - _k2569 = getFirstArrayKey( _a2569 ); - while ( isDefined( _k2569 ) ) + foreach ( team in level.teams ) { - team = _a2569[ _k2569 ]; if ( self isfriendlyteam( team ) ) { updateteams[ updateteams.size ] = team; } - _k2569 = getNextArrayKey( _a2569, _k2569 ); } } - else while ( relativeteam == "enemy" ) + else if ( relativeteam == "enemy" ) { - _a2577 = level.teams; - _k2577 = getFirstArrayKey( _a2577 ); - while ( isDefined( _k2577 ) ) + foreach ( team in level.teams ) { - team = _a2577[ _k2577 ]; if ( !self isfriendlyteam( team ) ) { updateteams[ updateteams.size ] = team; } - _k2577 = getNextArrayKey( _a2577, _k2577 ); } } } - else if ( relativeteam == "friendly" ) + else { - updateteams[ updateteams.size ] = level.nonteambasedteam; - } - else - { - updateteams[ updateteams.size ] = "axis"; + if ( relativeteam == "friendly" ) + { + updateteams[ updateteams.size ] = level.nonteambasedteam; + } + else + { + updateteams[ updateteams.size ] = "axis"; + } } return updateteams; } -shouldshowcompassduetoradar( team ) +shouldshowcompassduetoradar( team ) //checked matches cerberus output { showcompass = 0; if ( !isDefined( self.carrier ) ) @@ -2391,7 +2274,7 @@ shouldshowcompassduetoradar( team ) return showcompass; } -updatevisibilityaccordingtoradar() +updatevisibilityaccordingtoradar() //checked matches cerberus output { self endon( "death" ); self endon( "carrier_cleared" ); @@ -2402,7 +2285,7 @@ updatevisibilityaccordingtoradar() } } -setownerteam( team ) +setownerteam( team ) //checked matches cerberus output { self.ownerteam = team; self updatetrigger(); @@ -2411,53 +2294,53 @@ setownerteam( team ) self updateobjective(); } -getownerteam() +getownerteam() //checked matches cerberus output { return self.ownerteam; } -setdecaytime( time ) +setdecaytime( time ) //checked matches cerberus output { self.decaytime = int( time * 1000 ); } -setusetime( time ) +setusetime( time ) //checked matches cerberus output { self.usetime = int( time * 1000 ); } -setusetext( text ) +setusetext( text ) //checked matches cerberus output { self.usetext = text; } -setteamusetime( relativeteam, time ) +setteamusetime( relativeteam, time ) //checked matches cerberus output { self.teamusetimes[ relativeteam ] = int( time * 1000 ); } -setteamusetext( relativeteam, text ) +setteamusetext( relativeteam, text ) //checked matches cerberus output { self.teamusetexts[ relativeteam ] = text; } -setusehinttext( text ) +setusehinttext( text ) //checked matches cerberus output { self.trigger sethintstring( text ); } -allowcarry( relativeteam ) +allowcarry( relativeteam ) //checked matches cerberus output { allowuse( relativeteam ); } -allowuse( relativeteam ) +allowuse( relativeteam ) //checked matches cerberus output { self.interactteam = relativeteam; updatetrigger(); } -setvisibleteam( relativeteam ) +setvisibleteam( relativeteam ) //checked matches cerberus output { self.visibleteam = relativeteam; if ( !maps/mp/gametypes/_tweakables::gettweakablevalue( "hud", "showobjicons" ) ) @@ -2469,127 +2352,114 @@ setvisibleteam( relativeteam ) updateobjective(); } -setmodelvisibility( visibility ) +setmodelvisibility( visibility ) //checked changed to match beta dump { if ( visibility ) { - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ] show(); if ( self.visuals[ index ].classname == "script_brushmodel" || self.visuals[ index ].classname == "script_model" ) { self.visuals[ index ] thread makesolid(); } - index++; } } - else index = 0; - while ( index < self.visuals.size ) + else { - self.visuals[ index ] hide(); - if ( self.visuals[ index ].classname == "script_brushmodel" || self.visuals[ index ].classname == "script_model" ) + for ( index = 0; index < self.visuals.size; index++ ) { - self.visuals[ index ] notify( "changing_solidness" ); - self.visuals[ index ] notsolid(); + self.visuals[ index ] hide(); + if ( self.visuals[ index ].classname == "script_brushmodel" || self.visuals[ index ].classname == "script_model" ) + { + self.visuals[ index ] notify( "changing_solidness" ); + self.visuals[ index ] notsolid(); + } } - index++; } } -makesolid() +makesolid() //checked changed to match cerberus output { self endon( "death" ); self notify( "changing_solidness" ); self endon( "changing_solidness" ); while ( 1 ) { - i = 0; - while ( i < level.players.size ) + for ( i = 0; i < level.players.size; i++ ) { if ( level.players[ i ] istouching( self ) ) { break; } - else - { - i++; - } } if ( i == level.players.size ) { self solid(); return; } - else - { - wait 0,05; - } + wait 0.05; } } -setcarriervisible( relativeteam ) +setcarriervisible( relativeteam ) //checked matches cerberus output { self.carriervisible = relativeteam; } -setcanuse( relativeteam ) +setcanuse( relativeteam ) //checked matches cerberus output { self.useteam = relativeteam; } -set2dicon( relativeteam, shader ) +set2dicon( relativeteam, shader ) //checked matches cerberus output { self.compassicons[ relativeteam ] = shader; updatecompassicons(); } -set3dicon( relativeteam, shader ) +set3dicon( relativeteam, shader ) //checked matches cerberus output { self.worldicons[ relativeteam ] = shader; updateworldicons(); } -set3duseicon( relativeteam, shader ) +set3duseicon( relativeteam, shader ) //checked matches cerberus output { self.worlduseicons[ relativeteam ] = shader; } -set3diswaypoint( relativeteam, waypoint ) +set3diswaypoint( relativeteam, waypoint ) //checked matches cerberus output { self.worldiswaypoint[ relativeteam ] = waypoint; } -setcarryicon( shader ) +setcarryicon( shader ) //checked matches cerberus output { self.carryicon = shader; } -setvisiblecarriermodel( visiblemodel ) +setvisiblecarriermodel( visiblemodel ) //checked matches cerberus output { self.visiblecarriermodel = visiblemodel; } -getvisiblecarriermodel() +getvisiblecarriermodel() //checked matches cerberus output { return self.visiblecarriermodel; } -destroyobject( deletetrigger, forcehide ) +destroyobject( deletetrigger, forcehide ) //checked changed to match cerberus output { if ( !isDefined( forcehide ) ) { forcehide = 1; } self disableobject( forcehide ); - _a2795 = self.visuals; - _k2795 = getFirstArrayKey( _a2795 ); - while ( isDefined( _k2795 ) ) + foreach ( visual in self.visuals ) { - visual = _a2795[ _k2795 ]; visual hide(); visual delete(); - _k2795 = getNextArrayKey( _a2795, _k2795 ); } self.trigger notify( "destroyed" ); if ( is_true( deletetrigger ) ) @@ -2602,42 +2472,38 @@ destroyobject( deletetrigger, forcehide ) } } -disableobject( forcehide ) +disableobject( forcehide ) //checked changed to match cerberus output { self notify( "disabled" ); - while ( self.type == "carryObject" || isDefined( forcehide ) && forcehide ) + if ( self.type == "carryObject" || isDefined( forcehide ) && forcehide ) { if ( isDefined( self.carrier ) ) { self.carrier takeobject( self ); } - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ] hide(); - index++; } } self.trigger triggeroff(); self setvisibleteam( "none" ); } -enableobject( forceshow ) +enableobject( forceshow ) //checked changed to match cerberus output { - while ( self.type == "carryObject" || isDefined( forceshow ) && forceshow ) + if ( self.type == "carryObject" || isDefined( forceshow ) && forceshow ) { - index = 0; - while ( index < self.visuals.size ) + for ( index = 0; index < self.visuals.size; index++ ) { self.visuals[ index ] show(); - index++; } } self.trigger triggeron(); self setvisibleteam( "any" ); } -getrelativeteam( team ) +getrelativeteam( team ) //checked changed to match cerberus output { if ( self.ownerteam == "any" ) { @@ -2647,16 +2513,13 @@ getrelativeteam( team ) { return "friendly"; } + else if ( team == getenemyteam( self.ownerteam ) ) + { + return "enemy"; + } else { - if ( team == getenemyteam( self.ownerteam ) ) - { - return "enemy"; - } - else - { - return "neutral"; - } + return "neutral"; } } @@ -2677,7 +2540,7 @@ isfriendlyteam( team ) return 0; } -caninteractwith( player ) +caninteractwith( player ) //checked changed to match beta dump { team = player.pers[ "team" ]; switch( self.interactteam ) @@ -2716,16 +2579,13 @@ caninteractwith( player ) { return 1; } + else if ( isDefined( self.decayprogress ) && self.decayprogress && self.curprogress > 0 ) + { + return 1; + } else { - if ( isDefined( self.decayprogress ) && self.decayprogress && self.curprogress > 0 ) - { - return 1; - } - else - { - return 0; - } + return 0; } } else @@ -2740,14 +2600,16 @@ caninteractwith( player ) } } default: + /* /# assert( 0, "invalid interactTeam" ); #/ + */ return 0; } } -isteam( team ) +isteam( team ) //checked matches cerberus output { if ( team == "neutral" ) { @@ -2768,7 +2630,7 @@ isteam( team ) return 0; } -isrelativeteam( relativeteam ) +isrelativeteam( relativeteam ) //checked matches cerberus output { if ( relativeteam == "friendly" ) { @@ -2789,26 +2651,23 @@ isrelativeteam( relativeteam ) return 0; } -getenemyteam( team ) +getenemyteam( team ) //checked changed to match cerberus output { if ( team == "neutral" ) { return "none"; } + else if ( team == "allies" ) + { + return "axis"; + } else { - if ( team == "allies" ) - { - return "axis"; - } - else - { - return "allies"; - } + return "allies"; } } -getnextobjid() +getnextobjid() //checked matches cerberus output { nextid = 0; if ( level.releasedobjectives.size > 0 ) @@ -2820,12 +2679,14 @@ getnextobjid() nextid = level.numgametypereservedobjectives; level.numgametypereservedobjectives++; } + /* /# if ( nextid >= 32 ) { println( "^3SCRIPT WARNING: Ran out of objective IDs" ); #/ } + */ if ( nextid > 31 ) { nextid = 31; @@ -2833,27 +2694,29 @@ getnextobjid() return nextid; } -releaseobjid( objid ) +releaseobjid( objid ) //checked changed to match cerberus output { + /* /# assert( objid < level.numgametypereservedobjectives ); #/ - i = 0; - while ( i < level.releasedobjectives.size ) + */ + for ( i = 0; i < level.releasedobjectives.size; i++ ) { if ( objid == level.releasedobjectives[ i ] && objid == 31 ) { return; } + /* /# assert( objid != level.releasedobjectives[ i ] ); #/ - i++; + */ } level.releasedobjectives[ level.releasedobjectives.size ] = objid; } -getlabel() +getlabel() //checked matches cerberus output { label = self.trigger.script_label; if ( !isDefined( label ) ) @@ -2868,22 +2731,24 @@ getlabel() return label; } -mustmaintainclaim( enabled ) +mustmaintainclaim( enabled ) //checked matches cerberus output { self.mustmaintainclaim = enabled; } -cancontestclaim( enabled ) +cancontestclaim( enabled ) //checked matches cerberus output { self.cancontestclaim = enabled; } -setflags( flags ) +setflags( flags ) //checked matches cerberus output { objective_setgamemodeflags( self.objectiveid, flags ); } -getflags( flags ) +getflags( flags ) //checked matches cerberus output { return objective_getgamemodeflags( self.objectiveid ); } + + diff --git a/patch_mp/maps/mp/gametypes/_spawnlogic.gsc b/patch_mp/maps/mp/gametypes/_spawnlogic.gsc index 999fbed..53f4e63 100644 --- a/patch_mp/maps/mp/gametypes/_spawnlogic.gsc +++ b/patch_mp/maps/mp/gametypes/_spawnlogic.gsc @@ -1,10 +1,11 @@ +//checked includes match cerberus output #include maps/mp/gametypes/_spawnlogic; #include maps/mp/gametypes/_gameobjects; #include maps/mp/gametypes/_callbacksetup; #include maps/mp/_utility; #include common_scripts/utility; -onplayerconnect() +onplayerconnect() //checked matches cerberus output { for ( ;; ) { @@ -12,15 +13,15 @@ onplayerconnect() } } -findboxcenter( mins, maxs ) +findboxcenter( mins, maxs ) //checked changed to match cerberus output { - center = ( -1, -1, -1 ); + center = ( 0, 0, 0 ); center = maxs - mins; center = ( center[ 0 ] / 2, center[ 1 ] / 2, center[ 2 ] / 2 ) + mins; return center; } -expandmins( mins, point ) +expandmins( mins, point ) //checked matches cerberus output { if ( mins[ 0 ] > point[ 0 ] ) { @@ -37,7 +38,7 @@ expandmins( mins, point ) return mins; } -expandmaxs( maxs, point ) +expandmaxs( maxs, point ) //checked matches cerberus output { if ( maxs[ 0 ] < point[ 0 ] ) { @@ -54,7 +55,7 @@ expandmaxs( maxs, point ) return maxs; } -addspawnpointsinternal( team, spawnpointname ) +addspawnpointsinternal( team, spawnpointname ) //checked changed to match cerberus output { oldspawnpoints = []; if ( level.teamspawnpoints[ team ].size ) @@ -66,8 +67,7 @@ addspawnpointsinternal( team, spawnpointname ) { level.spawnpoints = []; } - index = 0; - while ( index < level.teamspawnpoints[ team ].size ) + for ( index = 0; index < level.teamspawnpoints[team].size; index++ ) { spawnpoint = level.teamspawnpoints[ team ][ index ]; if ( !isDefined( spawnpoint.inited ) ) @@ -75,110 +75,107 @@ addspawnpointsinternal( team, spawnpointname ) spawnpoint spawnpointinit(); level.spawnpoints[ level.spawnpoints.size ] = spawnpoint; } - index++; } - index = 0; - while ( index < oldspawnpoints.size ) + for ( index = 0; index < oldspawnpoints.size; index++ ) { origin = oldspawnpoints[ index ].origin; level.spawnmins = expandmins( level.spawnmins, origin ); level.spawnmaxs = expandmaxs( level.spawnmaxs, origin ); level.teamspawnpoints[ team ][ level.teamspawnpoints[ team ].size ] = oldspawnpoints[ index ]; - index++; } if ( !level.teamspawnpoints[ team ].size ) { + /* /# println( "^1ERROR: No " + spawnpointname + " spawnpoints found in level!" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); wait 1; return; } } -clearspawnpoints() +clearspawnpoints() //checked changed to match cerberus output { - _a87 = level.teams; - _k87 = getFirstArrayKey( _a87 ); - while ( isDefined( _k87 ) ) + foreach ( team in level.teams ) { - team = _a87[ _k87 ]; level.teamspawnpoints[ team ] = []; - _k87 = getNextArrayKey( _a87, _k87 ); } level.spawnpoints = []; level.unified_spawn_points = undefined; } -addspawnpoints( team, spawnpointname ) +addspawnpoints( team, spawnpointname ) //checked matches cerberus output { addspawnpointclassname( spawnpointname ); addspawnpointteamclassname( team, spawnpointname ); addspawnpointsinternal( team, spawnpointname ); } -rebuildspawnpoints( team ) +rebuildspawnpoints( team ) //checked changed to match cerberus output { level.teamspawnpoints[ team ] = []; - index = 0; - while ( index < level.spawn_point_team_class_names[ team ].size ) + for ( index = 0; index < level.spawn_point_team_class_names[team].size; index++ ) { addspawnpointsinternal( team, level.spawn_point_team_class_names[ team ][ index ] ); - index++; } } -placespawnpoints( spawnpointname ) +placespawnpoints( spawnpointname ) //checked changed to match cerberus output { addspawnpointclassname( spawnpointname ); spawnpoints = getspawnpointarray( spawnpointname ); + /* /# if ( !isDefined( level.extraspawnpointsused ) ) { level.extraspawnpointsused = []; #/ } + */ if ( !spawnpoints.size ) { + /* /# println( "^1No " + spawnpointname + " spawnpoints found in level!" ); #/ + */ maps/mp/gametypes/_callbacksetup::abortlevel(); wait 1; return; } - index = 0; - while ( index < spawnpoints.size ) + for ( index = 0; index < spawnpoints.size; index++ ) { spawnpoints[ index ] spawnpointinit(); + /* /# spawnpoints[ index ].fakeclassname = spawnpointname; level.extraspawnpointsused[ level.extraspawnpointsused.size ] = spawnpoints[ index ]; #/ - index++; + */ } } -dropspawnpoints( spawnpointname ) +dropspawnpoints( spawnpointname ) //checked changed to match cerberus output { spawnpoints = getspawnpointarray( spawnpointname ); if ( !spawnpoints.size ) { + /* /# println( "^1No " + spawnpointname + " spawnpoints found in level!" ); #/ + */ return; } - index = 0; - while ( index < spawnpoints.size ) + for ( index = 0; index < spawnpoints.size; index++ ) { spawnpoints[ index ] placespawnpoint(); - index++; } } -addspawnpointclassname( spawnpointclassname ) +addspawnpointclassname( spawnpointclassname ) //checked matches cerberus output { if ( !isDefined( level.spawn_point_class_names ) ) { @@ -187,28 +184,26 @@ addspawnpointclassname( spawnpointclassname ) level.spawn_point_class_names[ level.spawn_point_class_names.size ] = spawnpointclassname; } -addspawnpointteamclassname( team, spawnpointclassname ) +addspawnpointteamclassname( team, spawnpointclassname ) //checked matches cerberus output { level.spawn_point_team_class_names[ team ][ level.spawn_point_team_class_names[ team ].size ] = spawnpointclassname; } -getspawnpointarray( classname ) +getspawnpointarray( classname ) //checked changed to match cerberus output { spawnpoints = getentarray( classname, "classname" ); if ( !isDefined( level.extraspawnpoints ) || !isDefined( level.extraspawnpoints[ classname ] ) ) { return spawnpoints; } - i = 0; - while ( i < level.extraspawnpoints[ classname ].size ) + for ( i = 0; i < level.extraspawnpoints[classname].size; i++ ) { spawnpoints[ spawnpoints.size ] = level.extraspawnpoints[ classname ][ i ]; - i++; } return spawnpoints; } -spawnpointinit() +spawnpointinit() //checked changed to match cerberus output { spawnpoint = self; origin = spawnpoint.origin; @@ -225,16 +220,16 @@ spawnpointinit() } spawnpoint placespawnpoint(); spawnpoint.forward = anglesToForward( spawnpoint.angles ); - spawnpoint.sighttracepoint = spawnpoint.origin + vectorScale( ( -1, -1, -1 ), 50 ); + spawnpoint.sighttracepoint = spawnpoint.origin + vectorScale( ( 0, 0, 1 ), 50 ); spawnpoint.inited = 1; } -getteamspawnpoints( team ) +getteamspawnpoints( team ) //checked matches cerberus output { return level.teamspawnpoints[ team ]; } -getspawnpoint_final( spawnpoints, useweights ) +getspawnpoint_final( spawnpoints, useweights ) //checked partially changed to match cerberus output see info.md { bestspawnpoint = undefined; if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 ) @@ -250,44 +245,35 @@ getspawnpoint_final( spawnpoints, useweights ) bestspawnpoint = getbestweightedspawnpoint( spawnpoints ); thread spawnweightdebug( spawnpoints ); } - else i = 0; - while ( i < spawnpoints.size ) + else { - if ( isDefined( self.lastspawnpoint ) && self.lastspawnpoint == spawnpoints[ i ] ) - { - i++; - continue; - } - else + i = 0; + while ( i < spawnpoints.size ) { + if ( isDefined( self.lastspawnpoint ) && self.lastspawnpoint == spawnpoints[ i ] ) + { + i++; + continue; + } if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) { i++; continue; } - else - { - bestspawnpoint = spawnpoints[ i ]; - break; - } + bestspawnpoint = spawnpoints[ i ]; + break; } - i++; - } - while ( !isDefined( bestspawnpoint ) ) - { - while ( isDefined( self.lastspawnpoint ) && !positionwouldtelefrag( self.lastspawnpoint.origin ) ) + if ( !isDefined( bestspawnpoint ) ) { - i = 0; - while ( i < spawnpoints.size ) + if ( isDefined( self.lastspawnpoint ) && !positionwouldtelefrag( self.lastspawnpoint.origin ) ) { - if ( spawnpoints[ i ] == self.lastspawnpoint ) + for ( i = 0; i < spawnpoints.size; i++ ) { - bestspawnpoint = spawnpoints[ i ]; - break; - } - else - { - i++; + if ( spawnpoints[ i ] == self.lastspawnpoint ) + { + bestspawnpoint = spawnpoints[ i ]; + break; + } } } } @@ -304,13 +290,15 @@ getspawnpoint_final( spawnpoints, useweights ) } } self finalizespawnpointchoice( bestspawnpoint ); + /* /# self storespawndata( spawnpoints, useweights, bestspawnpoint ); #/ + */ return bestspawnpoint; } -finalizespawnpointchoice( spawnpoint ) +finalizespawnpointchoice( spawnpoint ) //checked matches cerberus output { time = getTime(); self.lastspawnpoint = spawnpoint; @@ -319,11 +307,10 @@ finalizespawnpointchoice( spawnpoint ) spawnpoint.lastspawntime = time; } -getbestweightedspawnpoint( spawnpoints ) +getbestweightedspawnpoint( spawnpoints ) //checked partially changed to match cerberus output see info.md { maxsighttracedspawnpoints = 3; - try = 0; - while ( try <= maxsighttracedspawnpoints ) + for ( try = 0; try <= maxsighttracedspawnpoints; try++ ) { bestspawnpoints = []; bestweight = undefined; @@ -338,26 +325,20 @@ getbestweightedspawnpoint( spawnpoints ) i++; continue; } - else bestspawnpoints = []; + bestspawnpoints = []; bestspawnpoints[ 0 ] = spawnpoints[ i ]; bestweight = spawnpoints[ i ].weight; i++; continue; } - else + if ( spawnpoints[ i ].weight == bestweight ) { - if ( spawnpoints[ i ].weight == bestweight ) + if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) { - if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) - { - i++; - continue; - } - else - { - bestspawnpoints[ bestspawnpoints.size ] = spawnpoints[ i ]; - } + i++; + continue; } + bestspawnpoints[ bestspawnpoints.size ] = spawnpoints[ i ]; } i++; } @@ -379,20 +360,22 @@ getbestweightedspawnpoint( spawnpoints ) return bestspawnpoint; } penalty = getlospenalty(); + /* /# if ( level.storespawndata || level.debugspawning ) { bestspawnpoint.spawndata[ bestspawnpoint.spawndata.size ] = "Last minute sight trace: -" + penalty; #/ } + */ bestspawnpoint.weight -= penalty; bestspawnpoint.lastsighttracetime = getTime(); - try++; } } -checkbad( spawnpoint ) +checkbad( spawnpoint ) //checked partially changed to match cerberus output see info.md { + /* /# i = 0; while ( i < level.players.size ) @@ -403,45 +386,41 @@ checkbad( spawnpoint ) i++; continue; } - else + if ( level.teambased && player.team == self.team ) { - if ( level.teambased && player.team == self.team ) - { - i++; - continue; - } - else - { - losexists = bullettracepassed( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); - if ( losexists ) - { - thread badspawnline( spawnpoint.sighttracepoint, player.origin + vectorScale( ( -1, -1, -1 ), 50 ), self.name, player.name ); - } - } + i++; + continue; + } + losexists = bullettracepassed( player.origin + vectorScale( ( 0, 0, 1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); + if ( losexists ) + { + thread badspawnline( spawnpoint.sighttracepoint, player.origin + vectorScale( ( 0, 0, 1 ), 50 ), self.name, player.name ); } i++; #/ } + */ } -badspawnline( start, end, name1, name2 ) +badspawnline( start, end, name1, name2 ) //checked changed to match cerberus output { + /* /# dist = distance( start, end ); - i = 0; - while ( i < 200 ) + for ( i = 0; i < 200; i++ ) { - line( start, end, ( -1, -1, -1 ) ); + line( start, end, ( 1, 0, 0 ) ); print3d( start, "Bad spawn! " + name1 + ", dist = " + dist ); print3d( end, name2 ); - wait 0,05; - i++; + wait 0.05; #/ } + */ } -storespawndata( spawnpoints, useweights, bestspawnpoint ) +storespawndata( spawnpoints, useweights, bestspawnpoint ) //checked partially changed to match cerberus output see info.md { + /* /# if ( !isDefined( level.storespawndata ) || !level.storespawndata ) { @@ -464,8 +443,7 @@ storespawndata( spawnpoints, useweights, bestspawnpoint ) level.spawnid++; file = openfile( "spawndata.txt", "append" ); fprintfields( file, ( level.spawngameid + "." ) + level.spawnid + "," + spawnpoints.size + "," + self.name ); - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { str = vectostr( spawnpoints[ i ].origin ) + ","; if ( spawnpoints[ i ] == bestspawnpoint ) @@ -493,21 +471,16 @@ storespawndata( spawnpoints, useweights, bestspawnpoint ) spawnpoints[ i ].sightchecks = []; } str += spawnpoints[ i ].spawndata.size + ","; - j = 0; - while ( j < spawnpoints[ i ].spawndata.size ) + for ( j = 0; j < spawnpoints[i].spawndata.size; j++ ) { str += spawnpoints[ i ].spawndata[ j ] + ","; - j++; } str += spawnpoints[ i ].sightchecks.size + ","; - j = 0; - while ( j < spawnpoints[ i ].sightchecks.size ) + for ( j = 0; j < spawnpoints[i].sightchecks.size; j++ ) { str += ( spawnpoints[ i ].sightchecks[ j ].penalty + "," ) + vectostr( spawnpoints[ i ].origin ) + ","; - j++; } fprintfields( file, str ); - i++; } obj = spawnstruct(); getallalliedandenemyplayers( obj ); @@ -522,19 +495,14 @@ storespawndata( spawnpoints, useweights, bestspawnpoint ) i++; continue; } - else - { - numallies++; - str += vectostr( obj.allies[ i ].origin ) + ","; - } + numallies++; + str += vectostr( obj.allies[ i ].origin ) + ","; i++; } - i = 0; - while ( i < obj.enemies.size ) + for ( i = 0; i < obj.enemies.size; i++ ) { numenemies++; str += vectostr( obj.enemies[ i ].origin ) + ","; - i++; } str = ( numallies + "," ) + numenemies + "," + str; fprintfields( file, str ); @@ -543,50 +511,42 @@ storespawndata( spawnpoints, useweights, bestspawnpoint ) { index = otherdata.size; otherdata[ index ] = spawnstruct(); - otherdata[ index ].origin = level.bombguy.origin + vectorScale( ( -1, -1, -1 ), 20 ); + otherdata[ index ].origin = level.bombguy.origin + vectorScale( ( 0, 0, 1 ), 20 ); otherdata[ index ].text = "Bomb holder"; } - else + else if ( isDefined( level.bombpos ) ) { - if ( isDefined( level.bombpos ) ) - { - index = otherdata.size; - otherdata[ index ] = spawnstruct(); - otherdata[ index ].origin = level.bombpos; - otherdata[ index ].text = "Bomb"; - } + index = otherdata.size; + otherdata[ index ] = spawnstruct(); + otherdata[ index ].origin = level.bombpos; + otherdata[ index ].text = "Bomb"; } - while ( isDefined( level.flags ) ) + if ( isDefined( level.flags ) ) { - i = 0; - while ( i < level.flags.size ) + for ( i = 0; i < level.flags.size; i++ ) { index = otherdata.size; otherdata[ index ] = spawnstruct(); otherdata[ index ].origin = level.flags[ i ].origin; otherdata[ index ].text = level.flags[ i ].useobj maps/mp/gametypes/_gameobjects::getownerteam() + " flag"; - i++; } } str = otherdata.size + ","; - i = 0; - while ( i < otherdata.size ) + for ( i = 0; i < otherdata.size; i++ ) { str += vectostr( otherdata[ i ].origin ) + "," + otherdata[ i ].text + ","; - i++; } fprintfields( file, str ); closefile( file ); thisspawnid = ( level.spawngameid + "." ) + level.spawnid; - if ( isDefined( self.thisspawnid ) ) - { - } self.thisspawnid = thisspawnid; #/ + */ } -readspawndata( desiredid, relativepos ) +readspawndata( desiredid, relativepos ) //dev call did not check { + /* /# file = openfile( "spawndata.txt", "read" ); if ( file < 0 ) @@ -802,10 +762,12 @@ readspawndata( desiredid, relativepos ) } closefile( file ); #/ + */ } -drawspawndata() +drawspawndata() //dev call did not check { + /* /# level notify( "drawing_spawn_data" ); level endon( "drawing_spawn_data" ); @@ -866,17 +828,21 @@ drawspawndata() wait 0,05; #/ } + */ } -vectostr( vec ) +vectostr( vec ) //dev call did not check { + /* /# return int( vec[ 0 ] ) + "/" + int( vec[ 1 ] ) + "/" + int( vec[ 2 ] ); #/ + */ } -strtovec( str ) +strtovec( str ) //dev call did not check { + /* /# parts = strtok( str, "/" ); if ( parts.size != 3 ) @@ -885,27 +851,26 @@ strtovec( str ) } return ( int( parts[ 0 ] ), int( parts[ 1 ] ), int( parts[ 2 ] ) ); #/ + */ } -getspawnpoint_random( spawnpoints ) +getspawnpoint_random( spawnpoints ) //checked changed to match cerberus output { if ( !isDefined( spawnpoints ) ) { return undefined; } - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { j = randomint( spawnpoints.size ); spawnpoint = spawnpoints[ i ]; spawnpoints[ i ] = spawnpoints[ j ]; spawnpoints[ j ] = spawnpoint; - i++; } return getspawnpoint_final( spawnpoints, 0 ); } -getallotherplayers() +getallotherplayers() //checked partially changed to match cerberus output see info.md { aliveplayers = []; i = 0; @@ -916,35 +881,31 @@ getallotherplayers() i++; continue; } - else player = level.players[ i ]; + player = level.players[ i ]; if ( player.sessionstate != "playing" || player == self ) { i++; continue; } - else - { - aliveplayers[ aliveplayers.size ] = player; - } + aliveplayers[ aliveplayers.size ] = player; i++; } return aliveplayers; } -getallalliedandenemyplayers( obj ) +getallalliedandenemyplayers( obj ) //checked partially changed to match cerberus output changed at own discretion see info.md { if ( level.teambased ) { + /* /# assert( isDefined( level.teams[ self.team ] ) ); #/ + */ obj.allies = level.aliveplayers[ self.team ]; obj.enemies = undefined; - _a833 = level.teams; - _k833 = getFirstArrayKey( _a833 ); - while ( isDefined( _k833 ) ) + foreach ( team in level.teams ) { - team = _a833[ _k833 ]; if ( team == self.team ) { } @@ -954,50 +915,49 @@ getallalliedandenemyplayers( obj ) } else { - _a844 = level.aliveplayers[ team ]; - _k844 = getFirstArrayKey( _a844 ); - while ( isDefined( _k844 ) ) + i = 0; + while ( i < level.aliveplayers[ team ].size ) { - player = _a844[ _k844 ]; - obj.enemies[ obj.enemies.size ] = player; - _k844 = getNextArrayKey( _a844, _k844 ); + obj.enemies[ obj.enemies.size ] = level.aliveplayers[ team ][ i ]; + i++; } } - _k833 = getNextArrayKey( _a833, _k833 ); } } - else obj.allies = []; - obj.enemies = level.activeplayers; + else + { + obj.allies = []; + obj.enemies = level.activeplayers; + } } -initweights( spawnpoints ) +initweights( spawnpoints ) //checked changed to match cerberus output { - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { spawnpoints[ i ].weight = 0; - i++; } + /* /# - while ( level.storespawndata || level.debugspawning ) + if ( level.storespawndata || level.debugspawning ) { - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { spawnpoints[ i ].spawndata = []; spawnpoints[ i ].sightchecks = []; - i++; #/ } } + */ } -getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) +getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) //checked partially changed to match beta dump see info.md { if ( !isDefined( spawnpoints ) ) { return undefined; } + /* /# if ( getDvar( "scr_spawn_randomly" ) == "" ) { @@ -1008,6 +968,7 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) return getspawnpoint_random( spawnpoints ); #/ } + */ if ( getDvarInt( "scr_spawnsimple" ) > 0 ) { return getspawnpoint_random( spawnpoints ); @@ -1020,8 +981,7 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) numplayers = obj.allies.size + obj.enemies.size; allieddistanceweight = 2; myteam = self.team; - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { spawnpoint = spawnpoints[ i ]; if ( !isDefined( spawnpoint.numplayersatlastupdate ) ) @@ -1033,28 +993,29 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) allydistsum = spawnpoint.distsum[ myteam ]; enemydistsum = spawnpoint.enemydistsum[ myteam ]; spawnpoint.weight = ( enemydistsum - ( allieddistanceweight * allydistsum ) ) / spawnpoint.numplayersatlastupdate; + /* /# if ( level.storespawndata || level.debugspawning ) { spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Base weight: " + int( spawnpoint.weight ) + " = (" + int( enemydistsum ) + " - " + allieddistanceweight + "*" + int( allydistsum ) + ") / " + spawnpoint.numplayersatlastupdate; #/ } - i++; - continue; + */ } else { spawnpoint.weight = 0; + /* /# if ( level.storespawndata || level.debugspawning ) { spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Base weight: 0"; #/ } + */ } - i++; } - while ( isDefined( favoredspawnpoints ) ) + if ( isDefined( favoredspawnpoints ) ) { i = 0; while ( i < favoredspawnpoints.size ) @@ -1065,10 +1026,7 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) i++; continue; } - else - { - favoredspawnpoints[ i ].weight = k_favored_spawn_point_bonus; - } + favoredspawnpoints[ i ].weight = k_favored_spawn_point_bonus; i++; } } @@ -1077,6 +1035,7 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) avoidweapondamage( spawnpoints ); avoidvisibleenemies( spawnpoints, 1 ); result = getspawnpoint_final( spawnpoints ); + /* /# if ( getDvar( "scr_spawn_showbad" ) == "" ) { @@ -1087,10 +1046,11 @@ getspawnpoint_nearteam( spawnpoints, favoredspawnpoints ) checkbad( result ); #/ } + */ return result; } -getspawnpoint_dm( spawnpoints ) +getspawnpoint_dm( spawnpoints ) //checked changed to match cerberus output { if ( !isDefined( spawnpoints ) ) { @@ -1101,15 +1061,13 @@ getspawnpoint_dm( spawnpoints ) aliveplayers = getallotherplayers(); idealdist = 1600; baddist = 1200; - while ( aliveplayers.size > 0 ) + if ( aliveplayers.size > 0 ) { - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { totaldistfromideal = 0; nearbybadamount = 0; - j = 0; - while ( j < aliveplayers.size ) + for ( j = 0; j < aliveplayers.size; j++ ) { dist = distance( spawnpoints[ i ].origin, aliveplayers[ j ].origin ); if ( dist < baddist ) @@ -1118,12 +1076,10 @@ getspawnpoint_dm( spawnpoints ) } distfromideal = abs( dist - idealdist ); totaldistfromideal += distfromideal; - j++; } avgdistfromideal = totaldistfromideal / aliveplayers.size; welldistancedamount = ( idealdist - avgdistfromideal ) / idealdist; spawnpoints[ i ].weight = ( welldistancedamount - ( nearbybadamount * 2 ) ) + randomfloat( 0,2 ); - i++; } } avoidsamespawn( spawnpoints ); @@ -1133,16 +1089,19 @@ getspawnpoint_dm( spawnpoints ) return getspawnpoint_final( spawnpoints ); } -spawnlogic_begin() +spawnlogic_begin() //checked matches cerberus output { + /* /# level.storespawndata = getDvarInt( "scr_recordspawndata" ); level.debugspawning = getDvarInt( "scr_spawnpointdebug" ) > 0; #/ + */ } -init() +init() //checked changed to match cerberus output { + /* /# if ( getDvar( "scr_recordspawndata" ) == "" ) { @@ -1159,21 +1118,20 @@ init() } thread loopbotspawns(); #/ + */ level.spawnlogic_deaths = []; level.spawnlogic_spawnkills = []; level.players = []; level.grenades = []; level.pipebombs = []; - level.spawnmins = ( -1, -1, -1 ); - level.spawnmaxs = ( -1, -1, -1 ); + level.spawnmins = ( 0, 0, 0 ); + level.spawnmaxs = ( 0, 0, 0 ); level.spawnminsmaxsprimed = 0; - while ( isDefined( level.safespawns ) ) + if ( isDefined( level.safespawns ) ) { - i = 0; - while ( i < level.safespawns.size ) + for ( i = 0; i < level.safespawns.size; i++ ) { level.safespawns[ i ] spawnpointinit(); - i++; } } if ( getDvar( "scr_spawn_enemyavoiddist" ) == "" ) @@ -1184,6 +1142,7 @@ init() { setdvar( "scr_spawn_enemyavoidweight", "0" ); } + /* /# if ( getDvar( "scr_spawnsimple" ) == "" ) { @@ -1210,10 +1169,12 @@ init() thread watchspawnprofile(); thread spawngraphcheck(); #/ + */ } -watchspawnprofile() +watchspawnprofile() //checked changed to match cerberus output { + /* /# while ( 1 ) { @@ -1223,10 +1184,7 @@ watchspawnprofile() { break; } - else - { - wait 0,05; - } + wait 0.05; } thread spawnprofile(); while ( 1 ) @@ -1235,18 +1193,17 @@ watchspawnprofile() { break; } - else - { - wait 0,05; - } + wait 0.05; } level notify( "stop_spawn_profile" ); #/ } + */ } -spawnprofile() +spawnprofile() //checked matches cerberus output { + /* /# level endon( "stop_spawn_profile" ); while ( 1 ) @@ -1264,17 +1221,19 @@ spawnprofile() } player getspawnpoint_nearteam( level.spawnpoints ); } - wait 0,05; + wait 0.05; #/ } + */ } -spawngraphcheck() +spawngraphcheck() //checked changed to match cerberus output dvar taken from beta dump { + /* /# while ( 1 ) { - while ( getDvarInt( #"C25B6B47" ) < 1 ) + if ( getDvarInt( "scr_spawngraph" ) < 1 ) { wait 3; } @@ -1282,10 +1241,12 @@ spawngraphcheck() return; #/ } + */ } -spawngraph() +spawngraph() //dev call did not check { + /* /# w = 20; h = 20; @@ -1382,10 +1343,12 @@ spawngraph() wait 0,05; #/ } + */ } -drawspawngraph( fakespawnpoints, w, h, weightscale ) +drawspawngraph( fakespawnpoints, w, h, weightscale ) //dev call did not check { + /* /# i = 0; y = 0; @@ -1410,10 +1373,12 @@ drawspawngraph( fakespawnpoints, w, h, weightscale ) y++; #/ } + */ } -setupspawngraphpoint( s1, weightscale ) +setupspawngraphpoint( s1, weightscale ) //dev call did not check { + /* /# s1.visible = 1; if ( s1.weight < ( -1000 / weightscale ) ) @@ -1421,10 +1386,12 @@ setupspawngraphpoint( s1, weightscale ) s1.visible = 0; #/ } + */ } -spawngraphline( s1, s2, weightscale ) +spawngraphline( s1, s2, weightscale ) //dev call did not check { + /* /# if ( !s1.visible || !s2.visible ) { @@ -1434,10 +1401,12 @@ spawngraphline( s1, s2, weightscale ) p2 = s2.origin + ( 0, 0, ( s2.weight * weightscale ) + 100 ); line( p1, p2, ( -1, -1, -1 ) ); #/ + */ } -loopbotspawns() +loopbotspawns() //dev call did not check { + /* /# while ( 1 ) { @@ -1506,10 +1475,12 @@ loopbotspawns() } #/ } + */ } -allowspawndatareading() +allowspawndatareading() //dev call did not check { + /* /# setdvar( "scr_showspawnid", "" ); prevval = getDvar( "scr_showspawnid" ); @@ -1546,10 +1517,12 @@ allowspawndatareading() thread drawspawndata(); #/ } + */ } -showdeathsdebug() +showdeathsdebug() //dev call did not check { + /* /# while ( 1 ) { @@ -1620,13 +1593,14 @@ showdeathsdebug() wait 0,05; #/ } + */ } -updatedeathinfodebug() +updatedeathinfodebug() //checked changed to match cerberus output { while ( 1 ) { - while ( getDvar( "scr_spawnpointdebug" ) == "0" ) + if ( getDvar( "scr_spawnpointdebug" ) == "0" ) { wait 3; } @@ -1635,10 +1609,11 @@ updatedeathinfodebug() } } -spawnweightdebug( spawnpoints ) +spawnweightdebug( spawnpoints ) //checked dev call did not check { level notify( "stop_spawn_weight_debug" ); level endon( "stop_spawn_weight_debug" ); + /* /# while ( 1 ) { @@ -1695,32 +1670,32 @@ spawnweightdebug( spawnpoints ) wait 0,05; #/ } + */ } -profiledebug() +profiledebug() //checked changed to match cerberus output { while ( 1 ) { - while ( getDvar( #"6A99E750" ) != "1" ) + if ( getDvar( "scr_spawnpointprofile" ) != "1" ) { wait 3; } - i = 0; - while ( i < level.spawnpoints.size ) + for ( i = 0; i < level.spawnpoints.size; i++ ) { level.spawnpoints[ i ].weight = randomint( 10000 ); - i++; } if ( level.players.size > 0 ) { level.players[ randomint( level.players.size ) ] getspawnpoint_nearteam( level.spawnpoints ); } - wait 0,05; + wait 0.05; } } -debugnearbyplayers( players, origin ) +debugnearbyplayers( players, origin ) //dev call did not check { + /* /# if ( getDvar( "scr_spawnpointdebug" ) == "0" ) { @@ -1742,13 +1717,14 @@ debugnearbyplayers( players, origin ) wait 0,05; #/ } + */ } -deathoccured( dier, killer ) +deathoccured( dier, killer ) //checked matches cerberus output { } -checkforsimilardeaths( deathinfo ) +checkforsimilardeaths( deathinfo ) //checked partially changed to match cerberus output see info.md { i = 0; while ( i < level.spawnlogic_deaths.size ) @@ -1761,33 +1737,28 @@ checkforsimilardeaths( deathinfo ) i++; continue; } - else dist = distance( level.spawnlogic_deaths[ i ].killorg, deathinfo.killorg ); + dist = distance( level.spawnlogic_deaths[ i ].killorg, deathinfo.killorg ); if ( dist > 200 ) { i++; continue; } - else - { - level.spawnlogic_deaths[ i ].remove = 1; - } + level.spawnlogic_deaths[ i ].remove = 1; } i++; } } -updatedeathinfo() +updatedeathinfo() //checked changed to match cerberus output { time = getTime(); - i = 0; - while ( i < level.spawnlogic_deaths.size ) + for ( i = 0; i < level.spawnlogic_deaths.size; i++ ) { deathinfo = level.spawnlogic_deaths[ i ]; - if ( ( time - deathinfo.time ) > 90000 && isDefined( deathinfo.killer ) && isalive( deathinfo.killer ) || !isDefined( level.teams[ deathinfo.killer.team ] ) && distance( deathinfo.killer.origin, deathinfo.killorg ) > 400 ) + if ( ( time - deathinfo.time ) > 90000 || isDefined( deathinfo.killer ) || isalive( deathinfo.killer ) || !isDefined( level.teams[ deathinfo.killer.team ] ) || distance( deathinfo.killer.origin, deathinfo.killorg ) > 400 ) { level.spawnlogic_deaths[ i ].remove = 1; } - i++; } oldarray = level.spawnlogic_deaths; level.spawnlogic_deaths = []; @@ -1796,21 +1767,19 @@ updatedeathinfo() { start = oldarray.size - 1024; } - i = start; - while ( i < oldarray.size ) + for ( i = start; i < oldarray.size; i++ ) { if ( !isDefined( oldarray[ i ].remove ) ) { level.spawnlogic_deaths[ level.spawnlogic_deaths.size ] = oldarray[ i ]; } - i++; } } -ispointvulnerable( playerorigin ) +ispointvulnerable( playerorigin ) //checked changed to match cerberus output { pos = self.origin + level.bettymodelcenteroffset; - playerpos = playerorigin + vectorScale( ( -1, -1, -1 ), 32 ); + playerpos = playerorigin + vectorScale( ( 0, 0, 1 ), 32 ); distsqrd = distancesquared( pos, playerpos ); forward = anglesToForward( self.angles ); if ( distsqrd < ( level.bettydetectionradius * level.bettydetectionradius ) ) @@ -1825,20 +1794,19 @@ ispointvulnerable( playerorigin ) return 0; } -avoidweapondamage( spawnpoints ) +avoidweapondamage( spawnpoints ) //checked partially changed to match cerberus output see info.md { - if ( getDvar( #"0FB71FB7" ) == "0" ) + if ( getDvar( "scr_spawnpointnewlogic" ) == "0" ) { return; } weapondamagepenalty = 100000; - if ( getDvar( #"76B8F046" ) != "" && getDvar( #"76B8F046" ) != "0" ) + if ( getDvar( "scr_spawnpointdeathpenalty" ) != "" && getDvar( "scr_spawnpointdeathpenalty" ) != "0" ) { - weapondamagepenalty = getDvarFloat( #"76B8F046" ); + weapondamagepenalty = getDvarFloat( "scr_spawnpointdeathpenalty" ); } mingrenadedistsquared = 62500; - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { j = 0; while ( j < level.grenades.size ) @@ -1848,31 +1816,29 @@ avoidweapondamage( spawnpoints ) j++; continue; } - else + if ( distancesquared( spawnpoints[ i ].origin, level.grenades[ j ].origin ) < mingrenadedistsquared ) { - if ( distancesquared( spawnpoints[ i ].origin, level.grenades[ j ].origin ) < mingrenadedistsquared ) - { - spawnpoints[ i ].weight -= weapondamagepenalty; + spawnpoints[ i ].weight -= weapondamagepenalty; + /* /# - if ( level.storespawndata || level.debugspawning ) - { - spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Was near grenade: -" + int( weapondamagepenalty ); + if ( level.storespawndata || level.debugspawning ) + { + spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Was near grenade: -" + int( weapondamagepenalty ); #/ - } } + */ } j++; } - i++; } } -spawnperframeupdate() +spawnperframeupdate() //checked matches cerberus output { spawnpointindex = 0; while ( 1 ) { - wait 0,05; + wait 0.05; if ( !isDefined( level.spawnpoints ) ) { return; @@ -1883,14 +1849,11 @@ spawnperframeupdate() } } -getnonteamsum( skip_team, sums ) +getnonteamsum( skip_team, sums ) //checked partially changed to match cerberus output see info.md { value = 0; - _a1836 = level.teams; - _k1836 = getFirstArrayKey( _a1836 ); - while ( isDefined( _k1836 ) ) + foreach ( team in level.teams ) { - team = _a1836[ _k1836 ]; if ( team == skip_team ) { } @@ -1898,19 +1861,15 @@ getnonteamsum( skip_team, sums ) { value += sums[ team ]; } - _k1836 = getNextArrayKey( _a1836, _k1836 ); } return value; } -getnonteammindist( skip_team, mindists ) +getnonteammindist( skip_team, mindists ) //checked partially changed to match cerberus output see info.md { dist = 9999999; - _a1850 = level.teams; - _k1850 = getFirstArrayKey( _a1850 ); - while ( isDefined( _k1850 ) ) + foreach ( team in level.teams ) { - team = _a1850[ _k1850 ]; if ( team == skip_team ) { } @@ -1921,50 +1880,46 @@ getnonteammindist( skip_team, mindists ) dist = mindists[ team ]; } } - _k1850 = getNextArrayKey( _a1850, _k1850 ); } return dist; } -spawnpointupdate( spawnpoint ) +spawnpointupdate( spawnpoint ) //checked changed to match cerberus output { if ( level.teambased ) { sights = []; - _a1868 = level.teams; - _k1868 = getFirstArrayKey( _a1868 ); - while ( isDefined( _k1868 ) ) + foreach ( team in level.teams ) { - team = _a1868[ _k1868 ]; spawnpoint.enemysights[ team ] = 0; sights[ team ] = 0; spawnpoint.nearbyplayers[ team ] = []; - _k1868 = getNextArrayKey( _a1868, _k1868 ); } } - else spawnpoint.enemysights = 0; - spawnpoint.nearbyplayers[ "all" ] = []; + else + { + spawnpoint.enemysights = 0; + spawnpoint.nearbyplayers[ "all" ] = []; + } spawnpointdir = spawnpoint.forward; debug = 0; + /* /# debug = getDvarInt( "scr_spawnpointdebug" ) > 0; #/ + */ mindist = []; distsum = []; if ( !level.teambased ) { mindist[ "all" ] = 9999999; } - _a1897 = level.teams; - _k1897 = getFirstArrayKey( _a1897 ); - while ( isDefined( _k1897 ) ) + foreach ( team in level.teams ) { - team = _a1897[ _k1897 ]; spawnpoint.distsum[ team ] = 0; spawnpoint.enemydistsum[ team ] = 0; spawnpoint.minenemydist[ team ] = 9999999; mindist[ team ] = 9999999; - _k1897 = getNextArrayKey( _a1897, _k1897 ); } spawnpoint.numplayersatlastupdate = 0; i = 0; @@ -1976,7 +1931,7 @@ spawnpointupdate( spawnpoint ) i++; continue; } - else diff = player.origin - spawnpoint.origin; + diff = player.origin - spawnpoint.origin; diff = ( diff[ 0 ], diff[ 1 ], 0 ); dist = length( diff ); team = "all"; @@ -2000,59 +1955,57 @@ spawnpointupdate( spawnpoint ) i++; continue; } - else + losexists = bullettracepassed( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); + spawnpoint.lastsighttracetime = getTime(); + if ( losexists ) { - losexists = bullettracepassed( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); - spawnpoint.lastsighttracetime = getTime(); - if ( losexists ) + if ( level.teambased ) { - if ( level.teambased ) - { - sights[ player.team ]++; - } - else - { - spawnpoint.enemysights++; - } -/# - if ( debug ) - { - line( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, ( 0,5, 1, 0,5 ) ); -#/ - } + sights[ player.team ]++; } + else + { + spawnpoint.enemysights++; + } + /* +/# + if ( debug ) + { + line( player.origin + vectorScale( ( 0, 0, 1 ), 50 ), spawnpoint.sighttracepoint, ( 0.5, 1, 0.5 ) ); +#/ + } + */ } i++; } if ( level.teambased ) { - _a1978 = level.teams; - _k1978 = getFirstArrayKey( _a1978 ); - while ( isDefined( _k1978 ) ) + foreach ( team in level.teams ) { - team = _a1978[ _k1978 ]; spawnpoint.enemysights[ team ] = getnonteamsum( team, sights ); spawnpoint.minenemydist[ team ] = getnonteammindist( team, mindist ); spawnpoint.distsum[ team ] = distsum[ team ]; spawnpoint.enemydistsum[ team ] = getnonteamsum( team, distsum ); - _k1978 = getNextArrayKey( _a1978, _k1978 ); } } - else spawnpoint.distsum[ "all" ] = distsum[ "all" ]; - spawnpoint.enemydistsum[ "all" ] = distsum[ "all" ]; - spawnpoint.minenemydist[ "all" ] = mindist[ "all" ]; + else + { + spawnpoint.distsum[ "all" ] = distsum[ "all" ]; + spawnpoint.enemydistsum[ "all" ] = distsum[ "all" ]; + spawnpoint.minenemydist[ "all" ] = mindist[ "all" ]; + } } -getlospenalty() +getlospenalty() //checked matches cerberus output dvars taken from beta dump { - if ( getDvar( #"CACDB8AA" ) != "" && getDvar( #"CACDB8AA" ) != "0" ) + if ( getDvar( "scr_spawnpointlospenalty" ) != "" && getDvar( "scr_spawnpointlospenalty" ) != "0" ) { - return getDvarFloat( #"CACDB8AA" ); + return getDvarFloat( "scr_spawnpointlospenalty" ); } return 100000; } -lastminutesighttraces( spawnpoint ) +lastminutesighttraces( spawnpoint ) //checked partially changed to match cerberus output see info.md { if ( !isDefined( spawnpoint.nearbyplayers ) ) { @@ -2062,11 +2015,8 @@ lastminutesighttraces( spawnpoint ) closestdistsq = undefined; secondclosest = undefined; secondclosestdistsq = undefined; - _a2012 = spawnpoint.nearbyplayers; - _k2012 = getFirstArrayKey( _a2012 ); - while ( isDefined( _k2012 ) ) + foreach ( team in spawnpoint.nearbyplayers ) { - team = _a2012[ _k2012 ]; if ( team == self.team ) { } @@ -2081,49 +2031,43 @@ lastminutesighttraces( spawnpoint ) i++; continue; } - else if ( player.sessionstate != "playing" ) + if ( player.sessionstate != "playing" ) { i++; continue; } - else if ( player == self ) + if ( player == self ) { i++; continue; } - else distsq = distancesquared( spawnpoint.origin, player.origin ); + distsq = distancesquared( spawnpoint.origin, player.origin ); if ( !isDefined( closest ) || distsq < closestdistsq ) { secondclosest = closest; secondclosestdistsq = closestdistsq; closest = player; closestdistsq = distsq; - i++; - continue; } - else + else if ( !isDefined( secondclosest ) || distsq < secondclosestdistsq ) { - if ( !isDefined( secondclosest ) || distsq < secondclosestdistsq ) - { - secondclosest = player; - secondclosestdistsq = distsq; - } + secondclosest = player; + secondclosestdistsq = distsq; } i++; } } - _k2012 = getNextArrayKey( _a2012, _k2012 ); } if ( isDefined( closest ) ) { - if ( bullettracepassed( closest.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) + if ( bullettracepassed( closest.origin + vectorScale( ( 0, 0, 1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) { return 1; } } if ( isDefined( secondclosest ) ) { - if ( bullettracepassed( secondclosest.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) + if ( bullettracepassed( secondclosest.origin + vectorScale( ( 0, 0, 1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) { return 1; } @@ -2131,9 +2075,9 @@ lastminutesighttraces( spawnpoint ) return 0; } -avoidvisibleenemies( spawnpoints, teambased ) +avoidvisibleenemies( spawnpoints, teambased ) //checked partially changed to match beta dump see info.md { - if ( getDvar( #"0FB71FB7" ) == "0" ) + if ( getDvar( "scr_spawnpointnewlogic" ) == "0" ) { return; } @@ -2149,34 +2093,9 @@ avoidvisibleenemies( spawnpoints, teambased ) i++; continue; } - else - { - penalty = lospenalty * spawnpoints[ i ].enemysights[ self.team ]; - spawnpoints[ i ].weight -= penalty; -/# - if ( level.storespawndata || level.debugspawning ) - { - index = spawnpoints[ i ].sightchecks.size; - spawnpoints[ i ].sightchecks[ index ] = spawnstruct(); - spawnpoints[ i ].sightchecks[ index ].penalty = penalty; -#/ - } - } - i++; - } - } - else i = 0; - while ( i < spawnpoints.size ) - { - if ( !isDefined( spawnpoints[ i ].enemysights ) ) - { - i++; - continue; - } - else - { - penalty = lospenalty * spawnpoints[ i ].enemysights; + penalty = lospenalty * spawnpoints[ i ].enemysights[ self.team ]; spawnpoints[ i ].weight -= penalty; + /* /# if ( level.storespawndata || level.debugspawning ) { @@ -2185,12 +2104,38 @@ avoidvisibleenemies( spawnpoints, teambased ) spawnpoints[ i ].sightchecks[ index ].penalty = penalty; #/ } + */ + i++; + } + } + else + { + i = 0; + while ( i < spawnpoints.size ) + { + if ( !isDefined( spawnpoints[ i ].enemysights ) ) + { + i++; + continue; + } + penalty = lospenalty * spawnpoints[ i ].enemysights; + spawnpoints[ i ].weight -= penalty; + /* +/# + if ( level.storespawndata || level.debugspawning ) + { + index = spawnpoints[ i ].sightchecks.size; + spawnpoints[ i ].sightchecks[ index ] = spawnstruct(); + spawnpoints[ i ].sightchecks[ index ].penalty = penalty; +#/ + } + */ + i++; } - i++; } mindistteam = "all"; avoidweight = getDvarFloat( "scr_spawn_enemyavoidweight" ); - while ( avoidweight != 0 ) + if ( avoidweight != 0 ) { nearbyenemyouterrange = getDvarFloat( "scr_spawn_enemyavoiddist" ); nearbyenemyouterrangesq = nearbyenemyouterrange * nearbyenemyouterrange; @@ -2206,8 +2151,7 @@ avoidvisibleenemies( spawnpoints, teambased ) { lastdeathpos = self.lastdeathpos; } - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { mindist = spawnpoints[ i ].minenemydist[ mindistteam ]; if ( mindist < ( nearbyenemyouterrange * 2 ) ) @@ -2220,22 +2164,23 @@ avoidvisibleenemies( spawnpoints, teambased ) if ( penalty > 0 ) { spawnpoints[ i ].weight -= penalty; + /* /# if ( level.storespawndata || level.debugspawning ) { spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Nearest enemy at " + int( spawnpoints[ i ].minenemydist[ mindistteam ] ) + " units: -" + int( penalty ); #/ } + */ } } - i++; } } } -avoidspawnreuse( spawnpoints, teambased ) +avoidspawnreuse( spawnpoints, teambased ) //checked partially changed to match beta dump see info.md { - if ( getDvar( #"0FB71FB7" ) == "0" ) + if ( getDvar( "scr_spawnpointnewlogic" ) == "0" ) { return; } @@ -2246,60 +2191,54 @@ avoidspawnreuse( spawnpoints, teambased ) while ( i < spawnpoints.size ) { spawnpoint = spawnpoints[ i ]; - if ( isDefined( spawnpoint.lastspawnedplayer ) || !isDefined( spawnpoint.lastspawntime ) && !isalive( spawnpoint.lastspawnedplayer ) ) + if ( isDefined( spawnpoint.lastspawnedplayer ) || !isDefined( spawnpoint.lastspawntime ) || !isalive( spawnpoint.lastspawnedplayer ) ) { i++; continue; } - else + if ( spawnpoint.lastspawnedplayer == self ) { - if ( spawnpoint.lastspawnedplayer == self ) + i++; + continue; + } + if ( teambased && spawnpoint.lastspawnedplayer.team == self.team ) + { + i++; + continue; + } + timepassed = time - spawnpoint.lastspawntime; + if ( timepassed < maxtime ) + { + distsq = distancesquared( spawnpoint.lastspawnedplayer.origin, spawnpoint.origin ); + if ( distsq < maxdistsq ) { - i++; - continue; - } - else if ( teambased && spawnpoint.lastspawnedplayer.team == self.team ) - { - i++; - continue; + worsen = ( 5000 * ( 1 - ( distsq / maxdistsq ) ) ) * ( 1 - ( timepassed / maxtime ) ); + spawnpoint.weight -= worsen; + /* +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Was recently used: -" + worsen; +#/ + } + */ } else { - timepassed = time - spawnpoint.lastspawntime; - if ( timepassed < maxtime ) - { - distsq = distancesquared( spawnpoint.lastspawnedplayer.origin, spawnpoint.origin ); - if ( distsq < maxdistsq ) - { - worsen = ( 5000 * ( 1 - ( distsq / maxdistsq ) ) ) * ( 1 - ( timepassed / maxtime ) ); - spawnpoint.weight -= worsen; -/# - if ( level.storespawndata || level.debugspawning ) - { - spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Was recently used: -" + worsen; -#/ - } - } - else - { - spawnpoint.lastspawnedplayer = undefined; - } - i++; - continue; - } - else - { - spawnpoint.lastspawnedplayer = undefined; - } + spawnpoint.lastspawnedplayer = undefined; } } + else + { + spawnpoint.lastspawnedplayer = undefined; + } i++; } } -avoidsamespawn( spawnpoints ) +avoidsamespawn( spawnpoints ) //checked changed to match cerberus output { - if ( getDvar( #"0FB71FB7" ) == "0" ) + if ( getDvar( "scr_spawnpointnewlogic" ) == "0" ) { return; } @@ -2307,37 +2246,37 @@ avoidsamespawn( spawnpoints ) { return; } - i = 0; - while ( i < spawnpoints.size ) + for ( i = 0; i < spawnpoints.size; i++ ) { if ( spawnpoints[ i ] == self.lastspawnpoint ) { spawnpoints[ i ].weight -= 50000; + /* /# if ( level.storespawndata || level.debugspawning ) { spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Was last spawnpoint: -50000"; #/ } + */ return; } - else - { - i++; - } } } -getrandomintermissionpoint() +getrandomintermissionpoint() //checked matches cerberus output { spawnpoints = getentarray( "mp_global_intermission", "classname" ); if ( !spawnpoints.size ) { spawnpoints = getentarray( "info_player_start", "classname" ); } + /* /# assert( spawnpoints.size ); #/ + */ spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints ); return spawnpoint; } + diff --git a/patch_mp/maps/mp/gametypes/_weaponobjects.gsc b/patch_mp/maps/mp/gametypes/_weaponobjects.gsc index 42024fe..4effb6e 100644 --- a/patch_mp/maps/mp/gametypes/_weaponobjects.gsc +++ b/patch_mp/maps/mp/gametypes/_weaponobjects.gsc @@ -1,3 +1,4 @@ +//checked includes match cerberus output #include maps/mp/gametypes/_dev; #include maps/mp/_vehicles; #include maps/mp/gametypes/_globallogic_audio; @@ -21,11 +22,13 @@ #include maps/mp/_utility; #include common_scripts/utility; -init() +init() //checked matches cerberus output { + /* /# debug = weapons_get_dvar_int( "scr_weaponobject_debug", "0" ); #/ + */ coneangle = weapons_get_dvar_int( "scr_weaponobject_coneangle", "70" ); mindist = weapons_get_dvar_int( "scr_weaponobject_mindist", "20" ); graceperiod = weapons_get_dvar( "scr_weaponobject_graceperiod", "0.6" ); @@ -71,26 +74,22 @@ init() level.weaponobjects_hacker_trigger_height = 32; } -getwatchernames( weapons ) +getwatchernames( weapons ) //checked changed to match cerberus output { names = []; - _a75 = weapons; - index = getFirstArrayKey( _a75 ); - while ( isDefined( index ) ) + foreach ( weapon in weapons ) { - weapon = _a75[ index ]; names[ index ] = getsubstr( weapon, 0, weapon.size - 3 ); - index = getNextArrayKey( _a75, index ); } return names; } -weapons_get_dvar_int( dvar, def ) +weapons_get_dvar_int( dvar, def ) //checked matches cerberus output { return int( weapons_get_dvar( dvar, def ) ); } -weapons_get_dvar( dvar, def ) +weapons_get_dvar( dvar, def ) //checked matches cerberus output { if ( getDvar( dvar ) != "" ) { @@ -103,7 +102,7 @@ weapons_get_dvar( dvar, def ) } } -setupretrievablehintstrings() +setupretrievablehintstrings() //checked matches cerberus output { createretrievablehint( "hatchet", &"MP_HATCHET_PICKUP" ); createretrievablehint( "claymore", &"MP_CLAYMORE_PICKUP" ); @@ -125,7 +124,7 @@ setupretrievablehintstrings() createhackerhint( "scrambler_mp", &"MP_SCRAMBLER_HACKING" ); } -onplayerconnect() +onplayerconnect() //checked matches cerberus output { if ( isDefined( level._weaponobjects_on_player_connect_override ) ) { @@ -141,7 +140,7 @@ onplayerconnect() } } -onplayerspawned() +onplayerspawned() //checked matches cerberus output { self endon( "disconnect" ); for ( ;; ) @@ -172,47 +171,34 @@ onplayerspawned() } } -resetwatchers() +resetwatchers() //checked changed to match cerberus output { if ( !isDefined( self.weaponobjectwatcherarray ) ) { return undefined; } team = self.team; - _a203 = self.weaponobjectwatcherarray; - _k203 = getFirstArrayKey( _a203 ); - while ( isDefined( _k203 ) ) + foreach ( watcher in self.weaponobjectwatcherarray ) { - watcher = _a203[ _k203 ]; resetweaponobjectwatcher( watcher, team ); - _k203 = getNextArrayKey( _a203, _k203 ); } } -createbasewatchers() +createbasewatchers() //checked changed to match cerberus output { - _a212 = level.watcherweapons; - index = getFirstArrayKey( _a212 ); - while ( isDefined( index ) ) + foreach ( weapon in level.watcherweapons ) { - weapon = _a212[ index ]; self createweaponobjectwatcher( level.watcherweaponnames[ index ], weapon, self.team ); - index = getNextArrayKey( _a212, index ); } - _a218 = level.retrievableweapons; - index = getFirstArrayKey( _a218 ); - while ( isDefined( index ) ) + foreach ( weapon in level.retrievableweapons ) { - weapon = _a218[ index ]; self createweaponobjectwatcher( level.retrievableweaponnames[ index ], weapon, self.team ); - index = getNextArrayKey( _a218, index ); } } -setupretrievablewatcher() +setupretrievablewatcher() //checked changed to match cerberus output { - i = 0; - while ( i < level.retrievableweapons.size ) + for ( i = 0; i < level.retrievableweapons.size; i++ ) { watcher = getweaponobjectwatcherbyweapon( level.retrievableweapons[ i ] ); if ( !isDefined( watcher.onspawnretrievetriggers ) ) @@ -227,11 +213,10 @@ setupretrievablewatcher() { watcher.pickup = ::pickup; } - i++; } } -createballisticknifewatcher() +createballisticknifewatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "knife_ballistic", "knife_ballistic_mp", self.team ); watcher.onspawn = ::maps/mp/_ballistic_knife::onspawn; @@ -240,7 +225,7 @@ createballisticknifewatcher() watcher.storedifferentobject = 1; } -createhatchetwatcher() +createhatchetwatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "hatchet", "hatchet_mp", self.team ); watcher.detonate = ::deleteent; @@ -249,13 +234,13 @@ createhatchetwatcher() watcher.onspawnretrievetriggers = ::onspawnhatchettrigger; } -createtactinsertwatcher() +createtactinsertwatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "tactical_insertion", "tactical_insertion_mp", self.team ); watcher.playdestroyeddialog = 0; } -creatercbombwatcher() +creatercbombwatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "rcbomb", "rcbomb_mp", self.team ); watcher.altdetonate = 0; @@ -268,7 +253,7 @@ creatercbombwatcher() watcher.stuntime = 1; } -createqrdronewatcher() +createqrdronewatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "qrdrone", "qrdrone_turret_mp", self.team ); watcher.altdetonate = 0; @@ -282,14 +267,14 @@ createqrdronewatcher() watcher.stuntime = 5; } -createplayerhelicopterwatcher() +createplayerhelicopterwatcher() //checked matches cerberus output { watcher = self createuseweaponobjectwatcher( "helicopter_player", "helicopter_player_mp", self.team ); watcher.altdetonate = 1; watcher.headicon = 0; } -createclaymorewatcher() +createclaymorewatcher() //checked matches cerberus output { watcher = self createproximityweaponobjectwatcher( "claymore", "claymore_mp", self.team ); watcher.watchforfire = 1; @@ -309,49 +294,45 @@ createclaymorewatcher() watcher.stuntime = 1; } -waittillnotmoving_and_notstunned() +waittillnotmoving_and_notstunned() //checked changed to match cerberus output { prevorigin = self.origin; while ( 1 ) { - wait 0,15; + wait 0.15; if ( self.origin == prevorigin && !self isstunned() ) { - return; - } - else - { - prevorigin = self.origin; + break; } + prevorigin = self.origin; } } -voidonspawn( unused0, unused1 ) +voidonspawn( unused0, unused1 ) //checked matches cerberus output { } -voidondamage( unused0 ) +voidondamage( unused0 ) //checked matches cerberus output { } -deleteent( attacker, emp ) +deleteent( attacker, emp ) //checked matches cerberus output { self delete(); } -clearfxondeath( fx ) +clearfxondeath( fx ) //checked matches cerberus output { fx endon( "death" ); self waittill_any( "death", "hacked" ); fx delete(); } -deleteweaponobjectarray() +deleteweaponobjectarray() //checked changed to match cerberus output { - while ( isDefined( self.objectarray ) ) + if ( isDefined( self.objectarray ) ) { - i = 0; - while ( i < self.objectarray.size ) + for ( i = 0; i < self.objectarray.size; i++ ) { if ( isDefined( self.objectarray[ i ] ) ) { @@ -365,13 +346,12 @@ deleteweaponobjectarray() } self.objectarray[ i ] delete(); } - i++; } } self.objectarray = []; } -claymoredetonate( attacker, weaponname ) +claymoredetonate( attacker, weaponname ) //checked matches cerberus output { from_emp = maps/mp/killstreaks/_emp::isempkillstreakweapon( weaponname ); if ( !isDefined( from_emp ) || !from_emp ) @@ -388,7 +368,7 @@ claymoredetonate( attacker, weaponname ) maps/mp/gametypes/_weaponobjects::weapondetonate( attacker, weaponname ); } -weapondetonate( attacker, weaponname ) +weapondetonate( attacker, weaponname ) //checked matches cerberus output { from_emp = maps/mp/killstreaks/_emp::isempweapon( weaponname ); if ( from_emp ) @@ -422,18 +402,18 @@ weapondetonate( attacker, weaponname ) } } -waitanddetonate( object, delay, attacker, weaponname ) +waitanddetonate( object, delay, attacker, weaponname ) //checked changed to match cerberus output { object endon( "death" ); object endon( "hacked" ); from_emp = maps/mp/killstreaks/_emp::isempweapon( weaponname ); - if ( from_emp && isDefined( object.name ) && object.name != "qrdrone_turret_mp" ) + if ( from_emp && !( isDefined( object.name ) && object.name == "qrdrone_turret_mp" ) ) { object setclientflag( 15 ); object setclientflag( 9 ); object.stun_fx = 1; playfx( level._equipment_emp_destroy_fx, object.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); - delay = 1,1; + delay = 1.1; } if ( delay ) { @@ -456,22 +436,19 @@ waitanddetonate( object, delay, attacker, weaponname ) attacker notify( "destroyed_explosive" ); } } - else + else if ( attacker != object.owner ) { - if ( attacker != object.owner ) - { - attacker notify( "destroyed_explosive" ); - } + attacker notify( "destroyed_explosive" ); } } object.detonated = 1; object [[ self.detonate ]]( attacker, weaponname ); } -detonateweaponobjectarray( forcedetonation, weapon ) +detonateweaponobjectarray( forcedetonation, weapon ) //checked partially changed to match cerberus output see info.md { undetonated = []; - while ( isDefined( self.objectarray ) ) + if ( isDefined( self.objectarray ) ) { i = 0; while ( i < self.objectarray.size ) @@ -484,28 +461,22 @@ detonateweaponobjectarray( forcedetonation, weapon ) i++; continue; } - else + if ( isDefined( weapon ) ) { - if ( isDefined( weapon ) ) + if ( weapon ishacked() && weapon.name != self.objectarray[ i ].name ) { - if ( weapon ishacked() && weapon.name != self.objectarray[ i ].name ) - { - undetonated[ undetonated.size ] = self.objectarray[ i ]; - i++; - continue; - } - else if ( self.objectarray[ i ] ishacked() && weapon.name != self.objectarray[ i ].name ) - { - undetonated[ undetonated.size ] = self.objectarray[ i ]; - i++; - continue; - } + undetonated[ undetonated.size ] = self.objectarray[ i ]; + i++; + continue; } - else + else if ( self.objectarray[ i ] ishacked() && weapon.name != self.objectarray[ i ].name ) { - self thread waitanddetonate( self.objectarray[ i ], 0,1, undefined, weapon ); + undetonated[ undetonated.size ] = self.objectarray[ i ]; + i++; + continue; } } + self thread waitanddetonate( self.objectarray[ i ], 0,1, undefined, weapon ); } i++; } @@ -513,16 +484,18 @@ detonateweaponobjectarray( forcedetonation, weapon ) self.objectarray = undetonated; } -addweaponobjecttowatcher( watchername, weapon ) +addweaponobjecttowatcher( watchername, weapon ) //checked matches cerberus output { watcher = getweaponobjectwatcher( watchername ); + /* /# assert( isDefined( watcher ), "Weapon object watcher " + watchername + " does not exist" ); #/ + */ self addweaponobject( watcher, weapon ); } -addweaponobject( watcher, weapon ) +addweaponobject( watcher, weapon ) //checked matches cerberus output { if ( !isDefined( watcher.storedifferentobject ) ) { @@ -583,7 +556,7 @@ addweaponobject( watcher, weapon ) } } -watchscramble( watcher ) +watchscramble( watcher ) //checked changed to match beta dump { self endon( "death" ); self endon( "hacked" ); @@ -603,22 +576,18 @@ watchscramble( watcher ) { continue; } + if ( self maps/mp/_scrambler::checkscramblerstun() ) + { + self thread stunstart( watcher ); + } else { - if ( self maps/mp/_scrambler::checkscramblerstun() ) - { - self thread stunstart( watcher ); - break; - } - else - { - self stunstop(); - } + self stunstop(); } } } -deleteweaponobjecthelper( weapon_ent ) +deleteweaponobjecthelper( weapon_ent ) //checked matches cerberus output { if ( !isDefined( weapon_ent.name ) ) { @@ -632,7 +601,7 @@ deleteweaponobjecthelper( weapon_ent ) watcher.objectarray = deleteweaponobject( watcher, weapon_ent ); } -deleteweaponobject( watcher, weapon_ent ) +deleteweaponobject( watcher, weapon_ent ) //checked partially changed to match cerberus output see info.md { temp_objectarray = watcher.objectarray; watcher.objectarray = []; @@ -645,17 +614,14 @@ deleteweaponobject( watcher, weapon_ent ) i++; continue; } - else - { - watcher.objectarray[ j ] = temp_objectarray[ i ]; - j++; - } + watcher.objectarray[ j ] = temp_objectarray[ i ]; + j++; i++; } return watcher.objectarray; } -weaponobjectdamage( watcher ) +weaponobjectdamage( watcher ) //checked changed to match cerberus output { self endon( "death" ); self endon( "hacked" ); @@ -685,21 +651,17 @@ weaponobjectdamage( watcher ) { attacker maps/mp/gametypes/_damagefeedback::updatedamagefeedback(); } - continue; } - else + else if ( !level.teambased && self.owner != attacker ) { - if ( !level.teambased && self.owner != attacker ) + if ( maps/mp/gametypes/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) { - if ( maps/mp/gametypes/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) - { - attacker maps/mp/gametypes/_damagefeedback::updatedamagefeedback(); - } + attacker maps/mp/gametypes/_damagefeedback::updatedamagefeedback(); } } - } + continue; case "willy_pete_mp": - } + continue; case "emp_grenade_mp": if ( level.teambased && self.owner.team != attacker.team ) { @@ -716,17 +678,16 @@ weaponobjectdamage( watcher ) } } break; - break; default: - } + break; } if ( !isplayer( attacker ) && isDefined( attacker.owner ) ) { attacker = attacker.owner; } - while ( level.teambased && isplayer( attacker ) ) + if ( level.teambased && isplayer( attacker ) ) { - while ( !level.hardcoremode && self.owner.team == attacker.pers[ "team" ] && self.owner != attacker ) + if ( !level.hardcoremode && self.owner.team == attacker.pers[ "team" ] && self.owner != attacker ) { continue; } @@ -739,12 +700,16 @@ weaponobjectdamage( watcher ) { continue; } + break; } if ( level.weaponobjectexplodethisframe ) { - wait ( 0,1 + randomfloat( 0,4 ) ); + wait ( 0.1 + randomfloat( 0.4 ) ); + } + else + { + wait 0.05; } - else wait 0,05; if ( !isDefined( self ) ) { return; @@ -752,7 +717,7 @@ weaponobjectdamage( watcher ) level.weaponobjectexplodethisframe = 1; thread resetweaponobjectexplodethisframe(); self maps/mp/_entityheadicons::setentityheadicon( "none" ); - if ( isDefined( type ) && !issubstr( type, "MOD_GRENADE_SPLASH" ) || issubstr( type, "MOD_GRENADE" ) && issubstr( type, "MOD_EXPLOSIVE" ) ) + if ( ( issubstr( type, "MOD_GRENADE_SPLASH" ) || issubstr( type, "MOD_GRENADE" ) ) && isDefined( type ) || isDefined( type ) && issubstr( type, "MOD_EXPLOSIVE" ) ) { self.waschained = 1; } @@ -766,7 +731,7 @@ weaponobjectdamage( watcher ) } } -playdialogondeath( owner ) +playdialogondeath( owner ) //checked matches cerberus output { owner endon( "death" ); owner endon( "disconnect" ); @@ -778,7 +743,7 @@ playdialogondeath( owner ) } } -watchobjectdamage( owner ) +watchobjectdamage( owner ) //checked changed to match cerberus output { owner endon( "death" ); owner endon( "disconnect" ); @@ -790,7 +755,6 @@ watchobjectdamage( owner ) if ( isDefined( attacker ) && isplayer( attacker ) && attacker != owner ) { self.playdialog = 1; - continue; } else { @@ -799,7 +763,7 @@ watchobjectdamage( owner ) } } -stunstart( watcher, time ) +stunstart( watcher, time ) //checked matches cerberus output { self endon( "death" ); if ( self isstunned() ) @@ -834,7 +798,7 @@ stunstart( watcher, time ) self stunstop(); } -stunstop() +stunstop() //checked matches cerberus output { self notify( "not_stunned" ); if ( isDefined( self.camerahead ) ) @@ -844,7 +808,7 @@ stunstop() self clearclientflag( 9 ); } -weaponstun() +weaponstun() //checked matches cerberus output { self endon( "death" ); self endon( "not_stunned" ); @@ -856,55 +820,52 @@ weaponstun() self.stun_fx = spawn( "script_model", origin ); self.stun_fx setmodel( "tag_origin" ); self thread stunfxthink( self.stun_fx ); - wait 0,1; + wait 0.1; playfxontag( level._equipment_spark_fx, self.stun_fx, "tag_origin" ); self.stun_fx playsound( "dst_disable_spark" ); } -stunfxthink( fx ) +stunfxthink( fx ) //checked matches cerberus output { fx endon( "death" ); self waittill_any( "death", "not_stunned" ); fx delete(); } -isstunned() +isstunned() //checked matches cerberus output { return isDefined( self.stun_fx ); } -resetweaponobjectexplodethisframe() +resetweaponobjectexplodethisframe() //checked matches cerberus output { - wait 0,05; + wait 0.05; level.weaponobjectexplodethisframe = 0; } -getweaponobjectwatcher( name ) +getweaponobjectwatcher( name ) //checked changed to match cerberus output { if ( !isDefined( self.weaponobjectwatcherarray ) ) { return undefined; } - watcher = 0; - while ( watcher < self.weaponobjectwatcherarray.size ) + for ( watcher = 0; watcher < self.weaponobjectwatcherarray.size; watcher++ ) { if ( self.weaponobjectwatcherarray[ watcher ].name == name ) { return self.weaponobjectwatcherarray[ watcher ]; } - watcher++; } return undefined; } -getweaponobjectwatcherbyweapon( weapon ) +getweaponobjectwatcherbyweapon( weapon ) //checked changed to match cerberus output { if ( !isDefined( self.weaponobjectwatcherarray ) ) { return undefined; } - watcher = 0; - while ( watcher < self.weaponobjectwatcherarray.size ) + for ( watcher = 0; watcher < self.weaponobjectwatcherarray.size; watcher++ ) { if ( isDefined( self.weaponobjectwatcherarray[ watcher ].weapon ) && self.weaponobjectwatcherarray[ watcher ].weapon == weapon ) { @@ -914,12 +875,11 @@ getweaponobjectwatcherbyweapon( weapon ) { return self.weaponobjectwatcherarray[ watcher ]; } - watcher++; } return undefined; } -resetweaponobjectwatcher( watcher, ownerteam ) +resetweaponobjectwatcher( watcher, ownerteam ) //checked matches cerberus output { if ( level.deleteexplosivesonspawn == 1 ) { @@ -929,7 +889,7 @@ resetweaponobjectwatcher( watcher, ownerteam ) watcher.ownerteam = ownerteam; } -createweaponobjectwatcher( name, weapon, ownerteam ) +createweaponobjectwatcher( name, weapon, ownerteam ) //checked matches cerberus output { if ( !isDefined( self.weaponobjectwatcherarray ) ) { @@ -979,7 +939,7 @@ createweaponobjectwatcher( name, weapon, ownerteam ) return weaponobjectwatcher; } -createuseweaponobjectwatcher( name, weapon, ownerteam ) +createuseweaponobjectwatcher( name, weapon, ownerteam ) //checked matches cerberus output { weaponobjectwatcher = createweaponobjectwatcher( name, weapon, ownerteam ); weaponobjectwatcher.type = "use"; @@ -987,7 +947,7 @@ createuseweaponobjectwatcher( name, weapon, ownerteam ) return weaponobjectwatcher; } -createproximityweaponobjectwatcher( name, weapon, ownerteam ) +createproximityweaponobjectwatcher( name, weapon, ownerteam ) //checked matches cerberus output { weaponobjectwatcher = createweaponobjectwatcher( name, weapon, ownerteam ); weaponobjectwatcher.type = "proximity"; @@ -1000,7 +960,7 @@ createproximityweaponobjectwatcher( name, weapon, ownerteam ) return weaponobjectwatcher; } -commononspawnuseweaponobject( watcher, owner ) +commononspawnuseweaponobject( watcher, owner ) //checked matches cerberus output { if ( watcher.detectable ) { @@ -1028,24 +988,26 @@ commononspawnuseweaponobject( watcher, owner ) } } -onspawnuseweaponobject( watcher, owner ) +onspawnuseweaponobject( watcher, owner ) //checked matches cerberus output { self commononspawnuseweaponobject( watcher, owner ); } -onspawnproximityweaponobject( watcher, owner ) +onspawnproximityweaponobject( watcher, owner ) //checked matches cerberus output dvar taken from beta dump { self thread commononspawnuseweaponobject( watcher, owner ); self thread proximityweaponobjectdetonation( watcher ); + /* /# - if ( getDvarInt( #"38868733" ) ) + if ( getDvarInt( "scr_weaponobject_debug" ) ) { self thread proximityweaponobjectdebug( watcher ); #/ } + */ } -watchweaponobjectusage() +watchweaponobjectusage() //checked matches cerberus output { self endon( "disconnect" ); if ( !isDefined( self.weaponobjectwatcherarray ) ) @@ -1060,7 +1022,7 @@ watchweaponobjectusage() self thread deleteweaponobjectson(); } -watchweaponobjectspawn() +watchweaponobjectspawn() //checked partially changed to match cerberus output see info.md { self notify( "watchWeaponObjectSpawn" ); self endon( "watchWeaponObjectSpawn" ); @@ -1090,35 +1052,31 @@ watchweaponobjectspawn() i++; continue; } - else + objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; + for ( j = 0; j < objectarray_size; j++ ) { - objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; - j = 0; - while ( j < objectarray_size ) + if ( !isDefined( self.weaponobjectwatcherarray[ i ].objectarray[ j ] ) ) { - if ( !isDefined( self.weaponobjectwatcherarray[ i ].objectarray[ j ] ) ) - { - self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); - } - j++; - } - numallowed = 2; - if ( weapname == "proximity_grenade_mp" ) - { - numallowed = weapons_get_dvar_int( "scr_proximityGrenadeMaxInstances" ); - } - if ( isDefined( self.weaponobjectwatcherarray[ i ].detonate ) && self.weaponobjectwatcherarray[ i ].objectarray.size > ( numallowed - 1 ) ) - { - self.weaponobjectwatcherarray[ i ] thread waitanddetonate( self.weaponobjectwatcherarray[ i ].objectarray[ 0 ], 0,1, undefined, weapname ); + self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); } } + numallowed = 2; + if ( weapname == "proximity_grenade_mp" ) + { + numallowed = weapons_get_dvar_int( "scr_proximityGrenadeMaxInstances" ); + } + if ( isDefined( self.weaponobjectwatcherarray[ i ].detonate ) && self.weaponobjectwatcherarray[ i ].objectarray.size > ( numallowed - 1 ) ) + { + self.weaponobjectwatcherarray[ i ] thread waitanddetonate( self.weaponobjectwatcherarray[ i ].objectarray[ 0 ], 0.1, undefined, weapname ); + } i++; + break; } default: - } + break; if ( !self ishacked() ) { - if ( weapname != "claymore_mp" || weapname == "satchel_charge_mp" && weapname == "bouncingbetty_mp" ) + if ( weapname == "claymore_mp" || weapname == "satchel_charge_mp" || weapname == "bouncingbetty_mp" ) { self addweaponstat( weapname, "used", 1 ); } @@ -1128,12 +1086,11 @@ watchweaponobjectspawn() { self addweaponobject( watcher, weapon ); } - } } } } -anyobjectsinworld( weapon ) +anyobjectsinworld( weapon ) //checked partially changed to match cerberus output see info.md { objectsinworld = 0; i = 0; @@ -1144,23 +1101,17 @@ anyobjectsinworld( weapon ) i++; continue; } - else + if ( isDefined( self.weaponobjectwatcherarray[ i ].detonate ) && self.weaponobjectwatcherarray[ i ].objectarray.size > 0 ) { - if ( isDefined( self.weaponobjectwatcherarray[ i ].detonate ) && self.weaponobjectwatcherarray[ i ].objectarray.size > 0 ) - { - objectsinworld = 1; - break; - } - } - else - { - i++; + objectsinworld = 1; + break; } + i++; } return objectsinworld; } -watchweaponprojectileobjectspawn() +watchweaponprojectileobjectspawn() //checked changed to match cerberus output { self endon( "disconnect" ); while ( 1 ) @@ -1171,14 +1122,12 @@ watchweaponprojectileobjectspawn() { self addweaponobject( watcher, weapon ); objectarray_size = watcher.objectarray.size; - j = 0; - while ( j < objectarray_size ) + for ( j = 0; j < objectarray_size; j++ ) { if ( !isDefined( watcher.objectarray[ j ] ) ) { watcher.objectarray = deleteweaponobject( watcher, weapon ); } - j++; } if ( isDefined( watcher.detonate ) && watcher.objectarray.size > 3 ) { @@ -1188,24 +1137,29 @@ watchweaponprojectileobjectspawn() } } -proximityweaponobjectdebug( watcher ) +proximityweaponobjectdebug( watcher ) //checked changed to match cerberus output { + /* /# self waittillnotmoving(); - self thread showcone( acos( watcher.detectiondot ), watcher.detonateradius, ( 1, 0,85, 0 ) ); - self thread showcone( 60, 256, ( 0, 0, 1 ) ); + self thread showcone( acos( watcher.detectiondot ), watcher.detonateradius, ( 1, 0.85, 0 ) ); + self thread showcone( 60, 256, ( 1, 0, 0 ) ); #/ + */ } -vectorcross( v1, v2 ) +vectorcross( v1, v2 ) //checked matches cerberus output { + /* /# return ( ( v1[ 1 ] * v2[ 2 ] ) - ( v1[ 2 ] * v2[ 1 ] ), ( v1[ 2 ] * v2[ 0 ] ) - ( v1[ 0 ] * v2[ 2 ] ), ( v1[ 0 ] * v2[ 1 ] ) - ( v1[ 1 ] * v2[ 0 ] ) ); #/ + */ } -showcone( angle, range, color ) +showcone( angle, range, color ) //checked changed to match cerberus output { + /* /# self endon( "death" ); start = self.origin; @@ -1217,8 +1171,7 @@ showcone( angle, range, color ) while ( 1 ) { prevpoint = ( 0, 0, 1 ); - i = 0; - while ( i <= 20 ) + for ( i = 0; i <= 20; i++ ) { coneangle = ( i / 20 ) * 360; point = ( start + fullforward ) + ( sideamnt * ( ( right * cos( coneangle ) ) + ( up * sin( coneangle ) ) ) ); @@ -1228,14 +1181,14 @@ showcone( angle, range, color ) line( prevpoint, point, color ); } prevpoint = point; - i++; } - wait 0,05; + wait 0.05; #/ } + */ } -weaponobjectdetectionmovable( ownerteam ) +weaponobjectdetectionmovable( ownerteam ) //checked partially changed to match cerberus output see info.md { self endon( "end_detection" ); level endon( "game_ended" ); @@ -1263,7 +1216,7 @@ weaponobjectdetectionmovable( ownerteam ) i++; continue; } - else if ( isDefined( self.model_name ) && player hasperk( "specialty_detectexplosive" ) ) + if ( isDefined( self.model_name ) && player hasperk( "specialty_detectexplosive" ) ) { switch( self.model_name ) { @@ -1271,32 +1224,36 @@ weaponobjectdetectionmovable( ownerteam ) case "t6_wpn_claymore_world_detect": break; default: - } + continue; } - else if ( player.team == ownerteam ) - { - i++; - continue; - } - else if ( isDefined( player.bombsquadids[ self.detectid ] ) ) - { - i++; - continue; - } - i++; } + else + { + continue; + } + if ( player.team == ownerteam ) + { + i++; + continue; + } + if ( isDefined( player.bombsquadids[ self.detectid ] ) ) + { + i++; + continue; + } + i++; } } } -seticonpos( item, icon, heightincrease ) +seticonpos( item, icon, heightincrease ) //checked matches cerberus output { icon.x = item.origin[ 0 ]; icon.y = item.origin[ 1 ]; icon.z = item.origin[ 2 ] + heightincrease; } -weaponobjectdetectiontrigger_wait( ownerteam ) +weaponobjectdetectiontrigger_wait( ownerteam ) //checked matches cerberus output { self endon( "death" ); self endon( "hacked" ); @@ -1308,7 +1265,7 @@ weaponobjectdetectiontrigger_wait( ownerteam ) self thread weaponobjectdetectiontrigger( ownerteam ); } -weaponobjectdetectiontrigger( ownerteam ) +weaponobjectdetectiontrigger( ownerteam ) //checked matches cerberus output { trigger = spawn( "trigger_radius", self.origin - vectorScale( ( 0, 0, 1 ), 128 ), 0, 512, 256 ); trigger.detectid = "trigger" + getTime() + randomint( 1000000 ); @@ -1322,12 +1279,14 @@ weaponobjectdetectiontrigger( ownerteam ) trigger delete(); } -hackertriggersetvisibility( owner ) +hackertriggersetvisibility( owner ) //checked matches beta dump { self endon( "death" ); + /* /# assert( isplayer( owner ) ); #/ + */ ownerteam = owner.pers[ "team" ]; for ( ;; ) { @@ -1349,14 +1308,14 @@ hackertriggersetvisibility( owner ) } } -hackernotmoving() +hackernotmoving() //checked matches cerberus output { self endon( "death" ); self waittillnotmoving(); self notify( "landed" ); } -hackerinit( watcher ) +hackerinit( watcher ) //checked matches cerberus output { self thread hackernotmoving(); event = self waittill_any_return( "death", "landed" ); @@ -1370,8 +1329,6 @@ hackerinit( watcher ) triggerorigin = self gettagorigin( "tag_fx" ); } self.hackertrigger = spawn( "trigger_radius_use", triggerorigin, level.weaponobjects_hacker_trigger_width, level.weaponobjects_hacker_trigger_height ); -/# -#/ self.hackertrigger sethintlowpriority( 1 ); self.hackertrigger setcursorhint( "HINT_NOICON", self ); self.hackertrigger setignoreentfortrigger( self ); @@ -1390,7 +1347,7 @@ hackerinit( watcher ) self thread hackerthink( self.hackertrigger, watcher ); } -hackerthink( trigger, watcher ) +hackerthink( trigger, watcher ) //checked changed to match cerberus output { self endon( "death" ); for ( ;; ) @@ -1400,58 +1357,53 @@ hackerthink( trigger, watcher ) { continue; } + self.owner hackerremoveweapon( self ); + self.owner maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "hacked_equip", "item_destroyed" ); + self.hacked = 1; + self setmissileowner( player ); + self setteam( player.pers[ "team" ] ); + self.owner = player; + if ( isweaponequipment( self.name ) || self.name == "proximity_grenade_mp" ) + { + maps/mp/_scoreevents::processscoreevent( "hacked", player ); + player addweaponstat( "pda_hack_mp", "CombatRecordStat", 1 ); + player maps/mp/_challenges::hackedordestroyedequipment(); + } + if ( self.name == "satchel_charge_mp" && isDefined( player.lowermessage ) ) + { + player.lowermessage settext( &"PLATFORM_SATCHEL_CHARGE_DOUBLE_TAP" ); + player.lowermessage.alpha = 1; + player.lowermessage fadeovertime( 2 ); + player.lowermessage.alpha = 0; + } + self notify( "hacked", player ); + level notify( "hacked", self, player ); + if ( self.name == "camera_spike_mp" && isDefined( self.camerahead ) ) + { + self.camerahead notify( "hacked" ); + } + if ( isDefined( watcher.stun ) ) + { + self thread stunstart( watcher, 0.75 ); + wait 0.75; + } else { - self.owner hackerremoveweapon( self ); - self.owner maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "hacked_equip", "item_destroyed" ); - self.hacked = 1; - self setmissileowner( player ); - self setteam( player.pers[ "team" ] ); - self.owner = player; - if ( isweaponequipment( self.name ) || self.name == "proximity_grenade_mp" ) - { - maps/mp/_scoreevents::processscoreevent( "hacked", player ); - player addweaponstat( "pda_hack_mp", "CombatRecordStat", 1 ); - player maps/mp/_challenges::hackedordestroyedequipment(); - } - if ( self.name == "satchel_charge_mp" && isDefined( player.lowermessage ) ) - { - player.lowermessage settext( &"PLATFORM_SATCHEL_CHARGE_DOUBLE_TAP" ); - player.lowermessage.alpha = 1; - player.lowermessage fadeovertime( 2 ); - player.lowermessage.alpha = 0; - } - self notify( "hacked" ); - level notify( "hacked" ); - if ( self.name == "camera_spike_mp" && isDefined( self.camerahead ) ) - { - self.camerahead notify( "hacked" ); - } -/# -#/ - if ( isDefined( watcher.stun ) ) - { - self thread stunstart( watcher, 0,75 ); - wait 0,75; - } - else - { - wait 0,05; - } - if ( isDefined( player ) && player.sessionstate == "playing" ) - { - player notify( "grenade_fire" ); - } - else - { - watcher thread waitanddetonate( self, 0 ); - } - return; + wait 0.05; } + if ( isDefined( player ) && player.sessionstate == "playing" ) + { + player notify( "grenade_fire", self, self.name, 1 ); + } + else + { + watcher thread waitanddetonate( self, 0 ); + } + return; } } -hackerunfreezeplayer( player ) +hackerunfreezeplayer( player ) //checked matches cerberus output { self endon( "hack_done" ); self waittill( "death" ); @@ -1462,7 +1414,7 @@ hackerunfreezeplayer( player ) } } -hackerresult( player, owner ) +hackerresult( player, owner ) //checked matches cerberus output { success = 1; time = getTime(); @@ -1479,33 +1431,30 @@ hackerresult( player, owner ) success = 0; break; } - else if ( !player usebuttonpressed() ) + if ( !player usebuttonpressed() ) { success = 0; break; } - else if ( !isDefined( self ) ) + if ( !isDefined( self ) ) { success = 0; break; } - else + player freeze_player_controls( 1 ); + player disableweapons(); + if ( !isDefined( self.progressbar ) ) { - player freeze_player_controls( 1 ); - player disableweapons(); - if ( !isDefined( self.progressbar ) ) - { - self.progressbar = player createprimaryprogressbar(); - self.progressbar.lastuserate = -1; - self.progressbar showelem(); - self.progressbar updatebar( 0,01, 1 / hacktime ); - self.progresstext = player createprimaryprogressbartext(); - self.progresstext settext( &"MP_HACKING" ); - self.progresstext showelem(); - player playlocalsound( "evt_hacker_hacking" ); - } - wait 0,05; + self.progressbar = player createprimaryprogressbar(); + self.progressbar.lastuserate = -1; + self.progressbar showelem(); + self.progressbar updatebar( 0.01, 1 / hacktime ); + self.progresstext = player createprimaryprogressbartext(); + self.progresstext settext( &"MP_HACKING" ); + self.progresstext showelem(); + player playlocalsound( "evt_hacker_hacking" ); } + wait 0.05; } if ( isDefined( player ) ) { @@ -1524,7 +1473,7 @@ hackerresult( player, owner ) return success; } -canhack( player, owner, weapon_check ) +canhack( player, owner, weapon_check ) //checked matches cerberus output { if ( !isDefined( player ) ) { @@ -1625,7 +1574,7 @@ canhack( player, owner, weapon_check ) return 1; } -hackerremoveweapon( weapon ) +hackerremoveweapon( weapon ) //checked partially changed to match cerberus output see info.md { i = 0; while ( i < self.weaponobjectwatcherarray.size ) @@ -1635,22 +1584,17 @@ hackerremoveweapon( weapon ) i++; continue; } - else + objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; + for ( j = 0; j < objectarray_size; j++ ) { - objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; - j = 0; - while ( j < objectarray_size ) - { - self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); - j++; - } - return; + self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); } + return; i++; } } -proximityweaponobjectdetonation( watcher ) +proximityweaponobjectdetonation( watcher ) //checked changed to match cerberus output dvar taken from beta dump { self endon( "death" ); self endon( "hacked" ); @@ -1668,17 +1612,17 @@ proximityweaponobjectdetonation( watcher ) while ( 1 ) { damagearea waittill( "trigger", ent ); - while ( getDvarInt( #"38868733" ) != 1 ) + if ( getDvarInt( "scr_weaponobject_debug" ) != 1 ) { if ( isDefined( self.owner ) && ent == self.owner ) { continue; } - while ( isDefined( self.owner ) && isvehicle( ent ) && isDefined( ent.owner ) && self.owner == ent.owner ) + if ( isDefined( self.owner ) && isvehicle( ent ) && isDefined( ent.owner ) && self.owner == ent.owner ) { continue; } - while ( !friendlyfirecheck( self.owner, ent, 0 ) ) + if ( !friendlyfirecheck( self.owner, ent, 0 ) ) { continue; } @@ -1687,11 +1631,11 @@ proximityweaponobjectdetonation( watcher ) { continue; } - while ( !ent shouldaffectweaponobject( self, watcher ) ) + if ( !ent shouldaffectweaponobject( self, watcher ) ) { continue; } - while ( self isstunned() ) + if ( self isstunned() ) { continue; } @@ -1703,9 +1647,6 @@ proximityweaponobjectdetonation( watcher ) { break; } - else - { - } } if ( isDefined( watcher.activatesound ) ) { @@ -1727,10 +1668,13 @@ proximityweaponobjectdetonation( watcher ) { self [[ watcher.detonate ]]( self.owner ); } - else self [[ watcher.detonate ]](); + else + { + self [[ watcher.detonate ]](); + } } -shouldaffectweaponobject( object, watcher ) +shouldaffectweaponobject( object, watcher ) //checked matches cerberus output { radius = getweaponexplosionradius( watcher.weapon ); distancesqr = distancesquared( self.origin, object.origin ); @@ -1755,53 +1699,48 @@ shouldaffectweaponobject( object, watcher ) return dot > watcher.detectiondot; } -deathdodger( graceperiod ) +deathdodger( graceperiod ) //checked matches cerberus output { self endon( "death" ); self endon( "disconnect" ); - wait ( 0,2 + graceperiod ); + wait ( 0.2 + graceperiod ); self notify( "death_dodger" ); } -deleteondeath( ent ) +deleteondeath( ent ) //checked matches cerberus output { self waittill_any( "death", "hacked" ); - wait 0,05; + wait 0.05; if ( isDefined( ent ) ) { ent delete(); } } -testkillbrushonstationary( killbrusharray, player ) +testkillbrushonstationary( killbrusharray, player ) //checked changed to match cerberus output { player endon( "disconnect" ); self endon( "death" ); self waittill( "stationary" ); - wait 0,1; - i = 0; - while ( i < killbrusharray.size ) + wait 0.1; + for ( i = 0; i < killbrusharray.size; i++ ) { if ( self istouching( killbrusharray[ i ] ) ) { if ( self.origin[ 2 ] > player.origin[ 2 ] ) { - return; + break; } - else + if ( isDefined( self ) ) { - if ( isDefined( self ) ) - { - self delete(); - } - return; + self delete(); } - i++; + return; } } } -deleteonkillbrush( player ) +deleteonkillbrush( player ) //checked changed to match cerberus output { player endon( "disconnect" ); self endon( "death" ); @@ -1810,8 +1749,7 @@ deleteonkillbrush( player ) self thread testkillbrushonstationary( killbrushes, player ); while ( 1 ) { - i = 0; - while ( i < killbrushes.size ) + for ( i = 0; i < killbrushes.size; i++ ) { if ( self istouching( killbrushes[ i ] ) ) { @@ -1819,44 +1757,38 @@ deleteonkillbrush( player ) { break; } - else + if ( isDefined( self ) ) { - if ( isDefined( self ) ) - { - self delete(); - } - return; + self delete(); } - i++; + return; } } - wait 0,1; + wait 0.1; } } -watchweaponobjectaltdetonation() +watchweaponobjectaltdetonation() //checked changed to match cerberus output { self endon( "disconnect" ); while ( 1 ) { self waittill( "alt_detonate" ); - while ( !isalive( self ) ) + if ( !isalive( self ) ) { continue; } - watcher = 0; - while ( watcher < self.weaponobjectwatcherarray.size ) + for ( watcher = 0; watcher < self.weaponobjectwatcherarray.size; watcher++ ) { if ( self.weaponobjectwatcherarray[ watcher ].altdetonate ) { self.weaponobjectwatcherarray[ watcher ] detonateweaponobjectarray( 0 ); } - watcher++; } } } -watchweaponobjectaltdetonate() +watchweaponobjectaltdetonate() //checked changed to match cerberus output { self endon( "disconnect" ); self endon( "detonated" ); @@ -1869,15 +1801,12 @@ watchweaponobjectaltdetonate() { continue; } - else - { - self notify( "alt_detonate" ); - wait 0,05; - } + self notify( "alt_detonate" ); + wait 0.05; } } -watchweaponobjectdetonation() +watchweaponobjectdetonation() //checked matches cerberus output { self endon( "disconnect" ); while ( 1 ) @@ -1899,12 +1828,12 @@ watchweaponobjectdetonation() } } -deleteweaponobjectson() +deleteweaponobjectson() //checked changed to match cerberus output { while ( 1 ) { msg = self waittill_any_return( "disconnect", "joined_team", "joined_spectators", "death" ); - while ( msg == "death" ) + if ( msg == "death" ) { continue; } @@ -1913,8 +1842,7 @@ deleteweaponobjectson() return; } watchers = []; - watcher = 0; - while ( watcher < self.weaponobjectwatcherarray.size ) + for ( watcher = 0; watcher < self.weaponobjectwatcherarray.size; watcher++ ) { weaponobjectwatcher = spawnstruct(); watchers[ watchers.size ] = weaponobjectwatcher; @@ -1923,14 +1851,11 @@ deleteweaponobjectson() { weaponobjectwatcher.objectarray = self.weaponobjectwatcherarray[ watcher ].objectarray; } - watcher++; } - wait 0,05; - watcher = 0; - while ( watcher < watchers.size ) + wait 0.05; + for ( watcher = 0; watcher < watchers.size; watcher++ ) { watchers[ watcher ] deleteweaponobjectarray(); - watcher++; } if ( msg == "disconnect" ) { @@ -1939,25 +1864,24 @@ deleteweaponobjectson() } } -saydamaged( orig, amount ) +saydamaged( orig, amount ) //checked changed to match cerberus output { + /* /# - i = 0; - while ( i < 60 ) + for ( i = 0; i < 60; i++ ) { print3d( orig, "damaged! " + amount ); - wait 0,05; - i++; + wait 0.05; #/ } + */ } -showheadicon( trigger ) +showheadicon( trigger ) //checked changed to match cerberus output { triggerdetectid = trigger.detectid; useid = -1; - index = 0; - while ( index < 4 ) + for ( index = 0; index < 4; index++ ) { detectid = self.bombsquadicons[ index ].detectid; if ( detectid == triggerdetectid ) @@ -1968,7 +1892,6 @@ showheadicon( trigger ) { useid = index; } - index++; } if ( useid < 0 ) { @@ -1983,7 +1906,7 @@ showheadicon( trigger ) self.bombsquadicons[ useid ].detectid = trigger.detectid; while ( isalive( self ) && isDefined( trigger ) && self istouching( trigger ) ) { - wait 0,05; + wait 0.05; } if ( !isDefined( self ) ) { @@ -1992,9 +1915,10 @@ showheadicon( trigger ) self.bombsquadicons[ useid ].detectid = ""; self.bombsquadicons[ useid ] fadeovertime( 0,25 ); self.bombsquadicons[ useid ].alpha = 0; + self.bombsquadids[ triggerdetectid ] = undefined; } -friendlyfirecheck( owner, attacker, forcedfriendlyfirerule ) +friendlyfirecheck( owner, attacker, forcedfriendlyfirerule ) //checked changed to match cerberus output { if ( !isDefined( owner ) ) { @@ -2028,41 +1952,35 @@ friendlyfirecheck( owner, attacker, forcedfriendlyfirerule ) return 1; } } - else + else if ( isai( attacker ) ) { - if ( isai( attacker ) ) + if ( attacker.aiteam != owner.pers[ "team" ] ) { - if ( attacker.aiteam != owner.pers[ "team" ] ) + return 1; + } + } + else if ( isvehicle( attacker ) ) + { + if ( isDefined( attacker.owner ) && isplayer( attacker.owner ) ) + { + if ( attacker.owner.pers[ "team" ] != owner.pers[ "team" ] ) { return 1; } } else { - if ( isvehicle( attacker ) ) + occupant_team = attacker maps/mp/_vehicles::vehicle_get_occupant_team(); + if ( occupant_team != owner.pers[ "team" ] ) { - if ( isDefined( attacker.owner ) && isplayer( attacker.owner ) ) - { - if ( attacker.owner.pers[ "team" ] != owner.pers[ "team" ] ) - { - return 1; - } - } - else - { - occupant_team = attacker maps/mp/_vehicles::vehicle_get_occupant_team(); - if ( occupant_team != owner.pers[ "team" ] ) - { - return 1; - } - } + return 1; } } } return 0; } -onspawnhatchettrigger( watcher, player ) +onspawnhatchettrigger( watcher, player ) //checked changed to match cerberus output { self endon( "death" ); self setowner( player ); @@ -2086,7 +2004,7 @@ onspawnhatchettrigger( watcher, player ) triggerparentent = self; self unlink(); self.angles = self.oldangles; - self launch( vectorScale( ( 0, 0, 1 ), 5 ) ); + self launch( vectorScale( ( 1, 1, 1 ), 5 ) ); self waittillnotmoving(); waittillframeend; } @@ -2112,24 +2030,26 @@ onspawnhatchettrigger( watcher, player ) self.hatchetpickuptrigger linkto( triggerparentent ); } self thread watchhatchettrigger( self.hatchetpickuptrigger, watcher.pickup, watcher.pickupsoundplayer, watcher.pickupsound ); + /* /# thread switch_team( self, watcher.weapon, player ); #/ + */ self thread watchshutdown( player ); } -watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) +watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) //checked changed to match cerberus output { self endon( "delete" ); self endon( "hacked" ); while ( 1 ) { trigger waittill( "trigger", player ); - while ( !isalive( player ) ) + if ( !isalive( player ) ) { continue; } - while ( !player isonground() ) + if ( !player isonground() ) { continue; } @@ -2137,7 +2057,7 @@ watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) { continue; } - while ( !player hasweapon( self.name ) ) + if ( !player hasweapon( self.name ) ) { continue; } @@ -2147,14 +2067,11 @@ watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) { maxammo = player.grenadetypeprimarycount; } - else + else if ( isDefined( player.grenadetypesecondary ) && player.grenadetypesecondary == "hatchet_mp" ) { - if ( isDefined( player.grenadetypesecondary ) && player.grenadetypesecondary == "hatchet_mp" ) - { - maxammo = player.grenadetypesecondarycount; - } + maxammo = player.grenadetypesecondarycount; } - while ( curr_ammo >= maxammo ) + if ( curr_ammo >= maxammo ) { continue; } @@ -2170,7 +2087,7 @@ watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) } } -onspawnretrievableweaponobject( watcher, player ) +onspawnretrievableweaponobject( watcher, player ) //checked matches cerberus output { self endon( "death" ); self endon( "hacked" ); @@ -2265,9 +2182,11 @@ onspawnretrievableweaponobject( watcher, player ) self thread watchusetrigger( self.enemytrigger, watcher.ondestroyed ); } self thread watchusetrigger( self.pickuptrigger, watcher.pickup, watcher.pickupsoundplayer, watcher.pickupsound ); + /* /# thread switch_team( self, watcher.weapon, player ); #/ + */ if ( isDefined( watcher.pickup_trigger_listener ) ) { self thread [[ watcher.pickup_trigger_listener ]]( self.pickuptrigger, player ); @@ -2275,7 +2194,7 @@ onspawnretrievableweaponobject( watcher, player ) self thread watchshutdown( player ); } -watch_trigger_visibility( triggers, weap_name ) +watch_trigger_visibility( triggers, weap_name ) //checked partially changed to match cerberus output see info.md { self notify( "watchTriggerVisibility" ); self endon( "watchTriggerVisibility" ); @@ -2287,8 +2206,7 @@ watch_trigger_visibility( triggers, weap_name ) while ( 1 ) { players = level.players; - i = 0; - while ( i < players.size ) + for ( i = 0; i < players.size; i++ ) { if ( players[ i ] hasweapon( weap_name ) ) { @@ -2311,41 +2229,41 @@ watch_trigger_visibility( triggers, weap_name ) triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); } } - else curr_ammo = players[ i ] getweaponammostock( weap_name ) + players[ i ] getweaponammoclip( weap_name ); - if ( weap_name == "hatchet_mp" ) + else { - curr_ammo = players[ i ] getweaponammostock( weap_name ); + curr_ammo = players[ i ] getweaponammostock( weap_name ) + players[ i ] getweaponammoclip( weap_name ); + if ( weap_name == "hatchet_mp" ) + { + curr_ammo = players[ i ] getweaponammostock( weap_name ); + } + if ( curr_ammo < ammo_to_check ) + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setvisibletoplayer( players[ i ] ); + } + else + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); + } } - if ( curr_ammo < ammo_to_check ) - { - triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); - triggers[ "enemy_pickup" ] setvisibletoplayer( players[ i ] ); - } - else - { - triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); - triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); - } - i++; - continue; } else { triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); } - i++; } - wait 0,05; + wait 0.05; } } -destroyent() +destroyent() //checked matches cerberus output { self delete(); } -pickup( player ) +pickup( player ) //checked matches cerberus output { if ( self.name != "hatchet_mp" && isDefined( self.owner ) && self.owner != player ) { @@ -2364,7 +2282,7 @@ pickup( player ) player setweaponammoclip( self.name, clip_ammo ); } -ondestroyed( attacker ) +ondestroyed( attacker ) //checked matches cerberus output { playfx( level._effect[ "tacticalInsertionFizzle" ], self.origin ); self playsound( "dst_tac_insert_break" ); @@ -2372,7 +2290,7 @@ ondestroyed( attacker ) self delete(); } -watchshutdown( player ) +watchshutdown( player ) //checked matches cerberus output { self waittill_any( "death", "hacked" ); pickuptrigger = self.pickuptrigger; @@ -2402,18 +2320,18 @@ watchshutdown( player ) } } -watchusetrigger( trigger, callback, playersoundonuse, npcsoundonuse ) +watchusetrigger( trigger, callback, playersoundonuse, npcsoundonuse ) //checked changed to match cerberus output { self endon( "delete" ); self endon( "hacked" ); while ( 1 ) { trigger waittill( "trigger", player ); - while ( !isalive( player ) ) + if ( !isalive( player ) ) { continue; } - while ( !player isonground() ) + if ( !player isonground() ) { continue; } @@ -2450,7 +2368,7 @@ watchusetrigger( trigger, callback, playersoundonuse, npcsoundonuse ) } } -createretrievablehint( name, hint ) +createretrievablehint( name, hint ) //checked matches cerberus output { retrievehint = spawnstruct(); retrievehint.name = name; @@ -2458,7 +2376,7 @@ createretrievablehint( name, hint ) level.retrievehints[ name ] = retrievehint; } -createhackerhint( name, hint ) +createhackerhint( name, hint ) //checked matches cerberus output { hackerhint = spawnstruct(); hackerhint.name = name; @@ -2466,7 +2384,7 @@ createhackerhint( name, hint ) level.hackerhints[ name ] = hackerhint; } -createdestroyhint( name, hint ) +createdestroyhint( name, hint ) //checked matches cerberus output { destroyhint = spawnstruct(); destroyhint.name = name; @@ -2474,7 +2392,7 @@ createdestroyhint( name, hint ) level.destroyhints[ name ] = destroyhint; } -attachreconmodel( modelname, owner ) +attachreconmodel( modelname, owner ) //checked matches cerberus output { if ( !isDefined( self ) ) { @@ -2493,7 +2411,7 @@ attachreconmodel( modelname, owner ) self.reconmodelentity = reconmodel; } -resetreconmodelvisibility( owner ) +resetreconmodelvisibility( owner ) //checked partially changed to match beta dump see info.md { if ( !isDefined( self ) ) { @@ -2513,83 +2431,79 @@ resetreconmodelvisibility( owner ) i++; continue; } - else + if ( level.players[ i ].team == "spectator" ) { - if ( level.players[ i ].team == "spectator" ) + i++; + continue; + } + hasreconmodel = 0; + if ( level.players[ i ] hasperk( "specialty_detectexplosive" ) ) + { + switch( self.model_name ) { - i++; - continue; + case "t6_wpn_c4_world_detect": + case "t6_wpn_claymore_world_detect": + hasreconmodel = 1; + break; + break; + default: + break; } - else hasreconmodel = 0; - if ( level.players[ i ] hasperk( "specialty_detectexplosive" ) ) + if ( level.players[ i ] hasperk( "specialty_showenemyequipment" ) ) { switch( self.model_name ) { + case "t5_weapon_scrambler_world_detect": + case "t6_wpn_bouncing_betty_world_detect": case "t6_wpn_c4_world_detect": case "t6_wpn_claymore_world_detect": + case "t6_wpn_motion_sensor_world_detect": + case "t6_wpn_tac_insert_detect": + case "t6_wpn_taser_mine_world_detect": + case "t6_wpn_trophy_system_world_detect": hasreconmodel = 1; break; - break; default: - } - } - if ( level.players[ i ] hasperk( "specialty_showenemyequipment" ) ) - { - switch( self.model_name ) - { - case "t5_weapon_scrambler_world_detect": - case "t6_wpn_bouncing_betty_world_detect": - case "t6_wpn_c4_world_detect": - case "t6_wpn_claymore_world_detect": - case "t6_wpn_motion_sensor_world_detect": - case "t6_wpn_tac_insert_detect": - case "t6_wpn_taser_mine_world_detect": - case "t6_wpn_trophy_system_world_detect": - hasreconmodel = 1; - break; break; - default: - } - } - if ( !hasreconmodel ) + } + if ( !hasreconmodel ) + { + i++; + continue; + } + isenemy = 1; + if ( level.teambased ) + { + if ( level.players[ i ].team == owner.team ) { - i++; - continue; - } - else isenemy = 1; - if ( level.teambased ) - { - if ( level.players[ i ].team == owner.team ) - { - isenemy = 0; - } - } - else - { - if ( level.players[ i ] == owner ) - { - isenemy = 0; - } - } - if ( isenemy ) - { - self setvisibletoplayer( level.players[ i ] ); + isenemy = 0; } } - i++; + else + { + if ( level.players[ i ] == owner ) + { + isenemy = 0; + } + } + if ( isenemy ) + { + self setvisibletoplayer( level.players[ i ] ); + } } } + i++; } } -watchreconmodelfordeath( parentent ) +watchreconmodelfordeath( parentent ) //checked changed to match cerberus output { self endon( "death" ); parentent waittill_any( "death", "hacked" ); self delete(); } -resetreconmodelonevent( eventname, owner ) +resetreconmodelonevent( eventname, owner ) //checked changed to match cerberus output { self endon( "death" ); for ( ;; ) @@ -2603,8 +2517,9 @@ resetreconmodelonevent( eventname, owner ) } } -switch_team( entity, weapon_name, owner ) +switch_team( entity, weapon_name, owner ) //checked changed to match cerberus output { + /* /# self notify( "stop_disarmthink" ); self endon( "stop_disarmthink" ); @@ -2612,13 +2527,13 @@ switch_team( entity, weapon_name, owner ) setdvar( "scr_switch_team", "" ); while ( 1 ) { - wait 0,5; + wait 0.5; devgui_int = getDvarInt( "scr_switch_team" ); if ( devgui_int != 0 ) { team = "autoassign"; player = maps/mp/gametypes/_dev::getormakebot( team ); - while ( !isDefined( player ) ) + if ( !isDefined( player ) ) { println( "Could not add test client" ); wait 1; @@ -2628,19 +2543,21 @@ switch_team( entity, weapon_name, owner ) entity setowner( player ); entity setteam( player.pers[ "team" ] ); entity.owner = player; - entity notify( "hacked" ); - level notify( "hacked" ); + entity notify( "hacked", player ); + level notify( "hacked", entity, player ); if ( entity.name == "camera_spike_mp" && isDefined( entity.camerahead ) ) { entity.camerahead notify( "hacked" ); } - wait 0,05; + wait 0.05; if ( isDefined( player ) && player.sessionstate == "playing" ) { - player notify( "grenade_fire" ); + player notify( "grenade_fire", self, self.name ); } setdvar( "scr_switch_team", "0" ); } #/ } + */ } + diff --git a/patch_mp/readme.md b/patch_mp/readme.md index df2950f..185033a 100644 --- a/patch_mp/readme.md +++ b/patch_mp/readme.md @@ -38,6 +38,7 @@ patch_mp/maps/mp/gametypes/_copter.gsc patch_mp/maps/mp/gametypes/_damagefeedback.gsc patch_mp/maps/mp/gametypes/_deathicons.gsc patch_mp/maps/mp/gametypes/_friendicons.gsc +patch_mp/maps/mp/gametypes/_gameobjects.gsc patch_mp/maps/mp/gametypes/_globallogic.gsc patch_mp/maps/mp/gametypes/_globallogic_actor.gsc patch_mp/maps/mp/gametypes/_globallogic_audio.gsc @@ -59,10 +60,12 @@ patch_mp/maps/mp/gametypes/_persistence.gsc patch_mp/maps/mp/gametypes/_pregame.gsc patch_mp/maps/mp/gametypes/_rank.gsc patch_mp/maps/mp/gametypes/_serversettings.gsc +patch_mp/maps/mp/gametypes/_spawnlogic.gsc patch_mp/maps/mp/gametypes/_spectating.gsc patch_mp/maps/mp/gametypes/_tweakables.gsc patch_mp/maps/mp/gametypes/_wager.gsc patch_mp/maps/mp/gametypes/_weapons.gsc +patch_mp/maps/mp/gametypes/_weaponobjects.gsc patch_mp/maps/mp/gametypes/_weapon_utils.gsc patch_mp/maps/mp/gametypes/conf.gsc patch_mp/maps/mp/gametypes/ctf.gsc @@ -174,12 +177,9 @@ patch_mp/maps/mp/mp_uplink.gsc patch_mp/maps/mp/mp_vertigo.gsc patch_mp/maps/mp/mp_village.gsc -patch_mp/maps/mp/gametypes/_gameobjects.gsc patch_mp/maps/mp/gametypes/_hud_message.gsc patch_mp/maps/mp/gametypes/_hud_util.gsc patch_mp/maps/mp/gametypes/_spawning.gsc -patch_mp/maps/mp/gametypes/_spawnlogic.gsc -patch_mp/maps/mp/gametypes/_weaponobjects.gsc patch_mp/maps/mp/killstreaks/_ai_tank.gsc patch_mp/maps/mp/killstreaks/_airsupport.gsc