Use sounds from dom

This commit is contained in:
6arelyFuture 2022-03-19 11:42:35 +00:00
parent e44b9e2c38
commit abadfde5c0
No known key found for this signature in database
GPG Key ID: E883E2BC9657D955

View File

@ -3,451 +3,438 @@
main() main()
{ {
if ( getdvar( "mapname" ) == "mp_background" ) if ( getdvar( "mapname" ) == "mp_background" )
return; return;
maps\mp\gametypes\_globallogic::init(); maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::SetupCallbacks(); maps\mp\gametypes\_callbacksetup::SetupCallbacks();
maps\mp\gametypes\_globallogic::SetupCallbacks(); maps\mp\gametypes\_globallogic::SetupCallbacks();
maps\mp\_utility::registerRoundSwitchDvar( level.gameType, 0, 0, 9 ); maps\mp\_utility::registerRoundSwitchDvar( level.gameType, 0, 0, 9 );
maps\mp\_utility::registerTimeLimitDvar( level.gameType, 10 ); maps\mp\_utility::registerTimeLimitDvar( level.gameType, 10 );
maps\mp\_utility::registerScoreLimitDvar( level.gameType, 500 ); maps\mp\_utility::registerScoreLimitDvar( level.gameType, 500 );
maps\mp\_utility::registerRoundLimitDvar( level.gameType, 1 ); maps\mp\_utility::registerRoundLimitDvar( level.gameType, 1 );
maps\mp\_utility::registerWinLimitDvar( level.gameType, 1 ); maps\mp\_utility::registerWinLimitDvar( level.gameType, 1 );
maps\mp\_utility::registerNumLivesDvar( level.gameType, 0 ); maps\mp\_utility::registerNumLivesDvar( level.gameType, 0 );
maps\mp\_utility::registerHalfTimeDvar( level.gameType, 0 ); maps\mp\_utility::registerHalfTimeDvar( level.gameType, 0 );
level.teamBased = 1; level.teamBased = 1;
level.objectiveBased = 1; level.objectiveBased = 1;
level.onPrecacheGameType = ::onPrecacheGameType; level.onPrecacheGameType = ::onPrecacheGameType;
level.onStartGameType = ::onStartGameType; level.onStartGameType = ::onStartGameType;
level.getSpawnPoint = ::getSpawnPoint; level.getSpawnPoint = ::getSpawnPoint;
level.onSpawnPlayer = ::onSpawnPlayer; level.onSpawnPlayer = ::onSpawnPlayer;
level.onNormalDeath = ::onNormalDeath; level.onNormalDeath = ::onNormalDeath;
level.onPlayerKilled = ::onPlayerKilled; level.onPlayerKilled = ::onPlayerKilled;
level.onDeadEvent = ::onDeadEvent; level.onDeadEvent = ::onDeadEvent;
game["dialog"]["gametype"] = "arena"; game["dialog"]["gametype"] = "arena";
if ( getdvarint( "g_hardcore" ) ) if ( getdvarint( "g_hardcore" ) )
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"]; game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
else if ( getdvarint( "camera_thirdPerson" ) ) else if ( getdvarint( "camera_thirdPerson" ) )
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"]; game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
else if ( getdvarint( "scr_diehard" ) ) else if ( getdvarint( "scr_diehard" ) )
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"]; game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
game["strings"]["overtime_hint"] = &"MP_FIRST_BLOOD"; game["strings"]["overtime_hint"] = &"MP_FIRST_BLOOD";
} }
onPrecacheGameType() onPrecacheGameType()
{ {
precacheshader( "compass_waypoint_captureneutral" ); precacheshader( "compass_waypoint_captureneutral" );
precacheshader( "compass_waypoint_capture" ); precacheshader( "compass_waypoint_capture" );
precacheshader( "compass_waypoint_defend" ); precacheshader( "compass_waypoint_defend" );
precacheshader( "waypoint_captureneutral" ); precacheshader( "waypoint_captureneutral" );
precacheshader( "waypoint_capture" ); precacheshader( "waypoint_capture" );
precacheshader( "waypoint_defend" ); precacheshader( "waypoint_defend" );
} }
onStartGameType() onStartGameType()
{ {
setclientnamemode( "auto_change" ); setclientnamemode( "auto_change" );
if ( !isdefined( game["switchedsides"] ) ) if ( !isdefined( game["switchedsides"] ) )
game["switchedsides"] = 0; game["switchedsides"] = 0;
if ( game["switchedsides"] ) if ( game["switchedsides"] )
{ {
var_0 = game["attackers"]; var_0 = game["attackers"];
var_1 = game["defenders"]; var_1 = game["defenders"];
game["attackers"] = var_1; game["attackers"] = var_1;
game["defenders"] = var_0; game["defenders"] = var_0;
} }
maps\mp\_utility::setObjectiveText( "allies", &"OBJECTIVES_ARENA" ); maps\mp\_utility::setObjectiveText( "allies", &"OBJECTIVES_ARENA" );
maps\mp\_utility::setObjectiveText( "axis", &"OBJECTIVES_ARENA" ); maps\mp\_utility::setObjectiveText( "axis", &"OBJECTIVES_ARENA" );
if ( level.splitscreen ) if ( level.splitscreen )
{ {
maps\mp\_utility::setObjectiveScoreText( "allies", &"OBJECTIVES_ARENA" ); maps\mp\_utility::setObjectiveScoreText( "allies", &"OBJECTIVES_ARENA" );
maps\mp\_utility::setObjectiveScoreText( "axis", &"OBJECTIVES_ARENA" ); maps\mp\_utility::setObjectiveScoreText( "axis", &"OBJECTIVES_ARENA" );
} }
else else
{ {
maps\mp\_utility::setObjectiveScoreText( "allies", &"OBJECTIVES_ARENA_SCORE" ); maps\mp\_utility::setObjectiveScoreText( "allies", &"OBJECTIVES_ARENA_SCORE" );
maps\mp\_utility::setObjectiveScoreText( "axis", &"OBJECTIVES_ARENA_SCORE" ); maps\mp\_utility::setObjectiveScoreText( "axis", &"OBJECTIVES_ARENA_SCORE" );
} }
maps\mp\_utility::setObjectiveHintText( "allies", &"OBJECTIVES_ARENA_HINT" ); maps\mp\_utility::setObjectiveHintText( "allies", &"OBJECTIVES_ARENA_HINT" );
maps\mp\_utility::setObjectiveHintText( "axis", &"OBJECTIVES_ARENA_HINT" ); maps\mp\_utility::setObjectiveHintText( "axis", &"OBJECTIVES_ARENA_HINT" );
level.spawnMins = ( 0, 0, 0 ); level.spawnMins = ( 0, 0, 0 );
level.spawnMaxs = ( 0, 0, 0 ); level.spawnMaxs = ( 0, 0, 0 );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" ); maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_allies_start" );
maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" ); maps\mp\gametypes\_spawnlogic::placeSpawnPoints( "mp_tdm_spawn_axis_start" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" ); maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_tdm_spawn" );
maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" ); maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_tdm_spawn" );
level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );
setmapcenter( level.mapCenter ); setmapcenter( level.mapCenter );
var_2[0] = "dom"; var_2[0] = "dom";
var_2[1] = "airdrop_pallet"; var_2[1] = "airdrop_pallet";
var_2[2] = "arena"; var_2[2] = "arena";
maps\mp\gametypes\_rank::registerScoreInfo( "capture", 200 ); maps\mp\gametypes\_rank::registerScoreInfo( "capture", 200 );
maps\mp\gametypes\_gameobjects::main( var_2 ); maps\mp\gametypes\_gameobjects::main( var_2 );
precacheFlag(); precacheFlag();
thread arenaFlagWaiter(); thread arenaFlagWaiter();
thread arenaTimeFlagWaiter(); thread arenaTimeFlagWaiter();
} }
precacheFlag() precacheFlag()
{ {
game["flagmodels"] = []; game["flagmodels"] = [];
game["flagmodels"]["neutral"] = "prop_flag_neutral"; game["flagmodels"]["neutral"] = "prop_flag_neutral";
game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" ); game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::getTeamFlagModel( "allies" );
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" ); game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::getTeamFlagModel( "axis" );
precachemodel( game["flagmodels"]["neutral"] ); precachemodel( game["flagmodels"]["neutral"] );
precachemodel( game["flagmodels"]["allies"] ); precachemodel( game["flagmodels"]["allies"] );
precachemodel( game["flagmodels"]["axis"] ); precachemodel( game["flagmodels"]["axis"] );
precachestring( &"MP_CAPTURING_FLAG" ); precachestring( &"MP_CAPTURING_FLAG" );
precachestring( &"MP_LOSING_FLAG" ); precachestring( &"MP_LOSING_FLAG" );
precachestring( &"MP_DOM_YOUR_FLAG_WAS_CAPTURED" ); precachestring( &"MP_DOM_YOUR_FLAG_WAS_CAPTURED" );
precachestring( &"MP_DOM_ENEMY_FLAG_CAPTURED" ); precachestring( &"MP_DOM_ENEMY_FLAG_CAPTURED" );
precachestring( &"MP_DOM_NEUTRAL_FLAG_CAPTURED" ); precachestring( &"MP_DOM_NEUTRAL_FLAG_CAPTURED" );
precachestring( &"MP_ENEMY_FLAG_CAPTURED_BY" ); precachestring( &"MP_ENEMY_FLAG_CAPTURED_BY" );
precachestring( &"MP_NEUTRAL_FLAG_CAPTURED_BY" ); precachestring( &"MP_NEUTRAL_FLAG_CAPTURED_BY" );
precachestring( &"MP_FRIENDLY_FLAG_CAPTURED_BY" ); precachestring( &"MP_FRIENDLY_FLAG_CAPTURED_BY" );
} }
arenaTimeFlagWaiter() arenaTimeFlagWaiter()
{ {
level endon( "down_to_one" ); level endon( "down_to_one" );
level endon( "game_end" ); level endon( "game_end" );
for (;;) for ( ;; )
{ {
var_0 = maps\mp\gametypes\_gamelogic::getTimeRemaining(); var_0 = maps\mp\gametypes\_gamelogic::getTimeRemaining();
if ( var_0 < 61000 ) if ( var_0 < 61000 )
break; break;
wait 1; wait 1;
} }
level notify( "arena_flag_time" ); level notify( "arena_flag_time" );
thread arenaFlag(); thread arenaFlag();
} }
arenaFlagWaiter() arenaFlagWaiter()
{ {
level endon( "game_end" ); level endon( "game_end" );
level endon( "arena_flag_time" ); level endon( "arena_flag_time" );
for (;;) for ( ;; )
{ {
if ( level.inGracePeriod == 0 ) if ( level.inGracePeriod == 0 )
break; break;
wait 0.05; wait 0.05;
} }
for (;;) for ( ;; )
{ {
if ( getteamplayersalive( "axis" ) == 1 ) if ( getteamplayersalive( "axis" ) == 1 )
{ {
thread arenaFlag(); thread arenaFlag();
level notify( "down_to_one" ); level notify( "down_to_one" );
break; break;
} }
if ( getteamplayersalive( "allies" ) == 1 ) if ( getteamplayersalive( "allies" ) == 1 )
{ {
thread arenaFlag(); thread arenaFlag();
level notify( "down_to_one" ); level notify( "down_to_one" );
break; break;
} }
wait 1; wait 1;
} }
} }
getSpawnPoint() getSpawnPoint()
{ {
var_0 = self.pers["team"]; var_0 = self.pers["team"];
if ( game["switchedsides"] ) if ( game["switchedsides"] )
var_0 = maps\mp\_utility::getOtherTeam( var_0 ); var_0 = maps\mp\_utility::getOtherTeam( var_0 );
if ( level.inGracePeriod ) if ( level.inGracePeriod )
{ {
var_1 = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + var_0 + "_start" ); var_1 = maps\mp\gametypes\_spawnlogic::getSpawnpointArray( "mp_tdm_spawn_" + var_0 + "_start" );
var_2 = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( var_1 ); var_2 = maps\mp\gametypes\_spawnlogic::getSpawnpoint_Random( var_1 );
} }
else else
{ {
var_1 = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( var_0 ); var_1 = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( var_0 );
var_2 = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( var_1 ); var_2 = maps\mp\gametypes\_spawnlogic::getSpawnpoint_NearTeam( var_1 );
} }
return var_2; return var_2;
} }
onSpawnPlayer() onSpawnPlayer()
{ {
self.usingObj = undefined; self.usingObj = undefined;
level notify( "spawned_player" ); level notify( "spawned_player" );
} }
onNormalDeath( var_0, var_1, var_2 ) onNormalDeath( var_0, var_1, var_2 )
{ {
var_3 = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" ); var_3 = maps\mp\gametypes\_rank::getScoreInfoValue( "kill" );
var_1 maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( var_1.pers["team"], var_3 ); var_1 maps\mp\gametypes\_gamescore::giveTeamScoreForObjective( var_1.pers["team"], var_3 );
var_4 = var_0.team; var_4 = var_0.team;
if ( game["state"] == "postgame" ) if ( game["state"] == "postgame" )
var_1.finalKill = 1; var_1.finalKill = 1;
} }
onPlayerKilled( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 ) onPlayerKilled( var_0, var_1, var_2, var_3, var_4, var_5, var_6, var_7, var_8, var_9 )
{ {
thread checkAllowSpectating(); thread checkAllowSpectating();
} }
onTimeLimit() onTimeLimit()
{ {
if ( game["status"] == "overtime" ) if ( game["status"] == "overtime" )
var_0 = "forfeit"; var_0 = "forfeit";
else if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] ) else if ( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
var_0 = "overtime"; var_0 = "overtime";
else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] ) else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
var_0 = "axis"; var_0 = "axis";
else else
var_0 = "allies"; var_0 = "allies";
thread maps\mp\gametypes\_gamelogic::endGame( var_0, game["strings"]["time_limit_reached"] ); thread maps\mp\gametypes\_gamelogic::endGame( var_0, game["strings"]["time_limit_reached"] );
} }
checkAllowSpectating() checkAllowSpectating()
{ {
wait 0.05; wait 0.05;
var_0 = 0; var_0 = 0;
if ( !level.aliveCount[game["attackers"]] ) if ( !level.aliveCount[game["attackers"]] )
{ {
level.spectateOverride[game["attackers"]].allowEnemySpectate = 1; level.spectateOverride[game["attackers"]].allowEnemySpectate = 1;
var_0 = 1; var_0 = 1;
} }
if ( !level.aliveCount[game["defenders"]] ) if ( !level.aliveCount[game["defenders"]] )
{ {
level.spectateOverride[game["defenders"]].allowEnemySpectate = 1; level.spectateOverride[game["defenders"]].allowEnemySpectate = 1;
var_0 = 1; var_0 = 1;
} }
if ( var_0 ) if ( var_0 )
maps\mp\gametypes\_spectating::updateSpectateSettings(); maps\mp\gametypes\_spectating::updateSpectateSettings();
} }
arenaFlag() arenaFlag()
{ {
level.lastStatus["allies"] = 0; level.lastStatus["allies"] = 0;
level.lastStatus["axis"] = 0; level.lastStatus["axis"] = 0;
var_0 = getentarray( "flag_arena", "targetname" ); var_0 = getentarray( "flag_arena", "targetname" );
var_1 = getentarray( "flag_primary", "targetname" ); var_1 = getentarray( "flag_primary", "targetname" );
var_2 = getentarray( "flag_secondary", "targetname" ); var_2 = getentarray( "flag_secondary", "targetname" );
if ( !isdefined( var_0[0] ) ) if ( !isdefined( var_0[0] ) )
{ {
if ( var_1.size + var_2.size < 1 ) if ( var_1.size + var_2.size < 1 )
{ {
maps\mp\gametypes\_callbacksetup::AbortLevel(); maps\mp\gametypes\_callbacksetup::AbortLevel();
return; return;
} }
setupDomFlag( var_1, var_2 ); setupDomFlag( var_1, var_2 );
} }
else else
level.arenaFlag = var_0[0]; level.arenaFlag = var_0[0];
var_3 = level.arenaFlag; var_3 = level.arenaFlag;
if ( isdefined( var_3.target ) ) if ( isdefined( var_3.target ) )
var_4[0] = getent( var_3.target, "targetname" ); var_4[0] = getent( var_3.target, "targetname" );
else else
{ {
var_4[0] = spawn( "script_model", var_3.origin ); var_4[0] = spawn( "script_model", var_3.origin );
var_4[0].angles = var_3.angles; var_4[0].angles = var_3.angles;
} }
var_4[0] setmodel( game["flagmodels"]["neutral"] ); var_4[0] setmodel( game["flagmodels"]["neutral"] );
var_0 = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", var_3, var_4, ( 0, 0, 100 ) ); var_0 = maps\mp\gametypes\_gameobjects::createUseObject( "neutral", var_3, var_4, ( 0, 0, 100 ) );
var_0 maps\mp\gametypes\_gameobjects::allowUse( "enemy" ); var_0 maps\mp\gametypes\_gameobjects::allowUse( "enemy" );
var_0 maps\mp\gametypes\_gameobjects::setUseTime( 20.0 ); var_0 maps\mp\gametypes\_gameobjects::setUseTime( 20.0 );
var_0 maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_FLAG" ); var_0 maps\mp\gametypes\_gameobjects::setUseText( &"MP_CAPTURING_FLAG" );
var_5 = var_0 maps\mp\gametypes\_gameobjects::getLabel(); var_5 = var_0 maps\mp\gametypes\_gameobjects::getLabel();
var_0.label = var_5; var_0.label = var_5;
var_0 maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" ); var_0 maps\mp\gametypes\_gameobjects::set2DIcon( "friendly", "compass_waypoint_defend" );
var_0 maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" ); var_0 maps\mp\gametypes\_gameobjects::set3DIcon( "friendly", "waypoint_defend" );
var_0 maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" ); var_0 maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_captureneutral" );
var_0 maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" ); var_0 maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_captureneutral" );
var_0 maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" ); var_0 maps\mp\gametypes\_gameobjects::setVisibleTeam( "any" );
var_0.onUse = ::onUse; var_0.onUse = ::onUse;
var_0.onBeginUse = ::onBeginUse; var_0.onBeginUse = ::onBeginUse;
var_0.onUseUpdate = ::onUseUpdate; var_0.onUseUpdate = ::onUseUpdate;
var_0.onEndUse = ::onEndUse; var_0.onEndUse = ::onEndUse;
var_0.isArena = 1; var_0.isArena = 1;
iprintlnbold( "Arena flag spawned" ); iprintlnbold( "Arena flag spawned" );
level.arenaFlag playsound( "flag_spawned" ); level.arenaFlag playsound( "flag_spawned" );
var_6 = var_4[0].origin + ( 0, 0, 32 ); var_6 = var_4[0].origin + ( 0, 0, 32 );
var_7 = var_4[0].origin + ( 0, 0, -32 ); var_7 = var_4[0].origin + ( 0, 0, -32 );
var_8 = bullettrace( var_6, var_7, 0, undefined ); var_8 = bullettrace( var_6, var_7, 0, undefined );
var_9 = vectortoangles( var_8["normal"] ); var_9 = vectortoangles( var_8["normal"] );
var_0.baseeffectforward = anglestoforward( var_9 ); var_0.baseeffectforward = anglestoforward( var_9 );
var_0.baseeffectright = anglestoright( var_9 ); var_0.baseeffectright = anglestoright( var_9 );
var_0.baseeffectpos = var_8["position"]; var_0.baseeffectpos = var_8["position"];
var_0.levelFlag = level.arenaFlag; var_0.levelFlag = level.arenaFlag;
level.arenaFlag = var_0; level.arenaFlag = var_0;
} }
setupDomFlag( var_0, var_1 ) setupDomFlag( var_0, var_1 )
{ {
for ( var_2 = 0; var_2 < var_0.size; var_2++ ) for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{ {
var_3 = var_0[var_2].script_label; var_3 = var_0[var_2].script_label;
if ( var_3 != "_b" ) if ( var_3 != "_b" )
{ {
var_0[var_2] delete(); var_0[var_2] delete();
continue; continue;
} }
level.arenaFlag = var_0[var_2]; level.arenaFlag = var_0[var_2];
return; return;
} }
} }
onDeadEvent( var_0 ) onDeadEvent( var_0 )
{ {
if ( var_0 == game["attackers"] ) if ( var_0 == game["attackers"] )
level thread arena_endGame( game["defenders"], game["strings"][game["attackers"] + "_eliminated"] ); level thread arena_endGame( game["defenders"], game["strings"][game["attackers"] + "_eliminated"] );
else if ( var_0 == game["defenders"] ) else if ( var_0 == game["defenders"] )
level thread arena_endGame( game["attackers"], game["strings"][game["defenders"] + "_eliminated"] ); level thread arena_endGame( game["attackers"], game["strings"][game["defenders"] + "_eliminated"] );
} }
arena_endGame( var_0, var_1 ) arena_endGame( var_0, var_1 )
{ {
thread maps\mp\gametypes\_gamelogic::endGame( var_0, var_1 ); thread maps\mp\gametypes\_gamelogic::endGame( var_0, var_1 );
} }
giveFlagCaptureXP( var_0 ) giveFlagCaptureXP( var_0 )
{ {
level endon( "game_ended" ); level endon( "game_ended" );
wait 0.05; wait 0.05;
maps\mp\_utility::WaitTillSlowProcessAllowed(); maps\mp\_utility::WaitTillSlowProcessAllowed();
var_1 = getarraykeys( var_0 ); var_1 = getarraykeys( var_0 );
for ( var_2 = 0; var_2 < var_1.size; var_2++ ) for ( var_2 = 0; var_2 < var_1.size; var_2++ )
{ {
var_3 = var_0[var_1[var_2]].player; var_3 = var_0[var_1[var_2]].player;
var_3 thread [[ level.onXPEvent ]]( "capture" ); var_3 thread [[ level.onXPEvent ]]( "capture" );
maps\mp\gametypes\_gamescore::givePlayerScore( "capture", var_3 ); maps\mp\gametypes\_gamescore::givePlayerScore( "capture", var_3 );
var_3 thread maps\mp\_matchdata::logGameEvent( "capture", var_3.origin ); var_3 thread maps\mp\_matchdata::logGameEvent( "capture", var_3.origin );
} }
} }
onUse( player ) onUse( player )
{ {
var_1 = player.pers["team"]; var_1 = player.pers["team"];
var_2 = maps\mp\gametypes\_gameobjects::getOwnerTeam(); var_2 = maps\mp\gametypes\_gameobjects::getOwnerTeam();
var_3 = maps\mp\gametypes\_gameobjects::getLabel(); var_3 = maps\mp\gametypes\_gameobjects::getLabel();
player logString( "flag captured: " + self.label ); player logString( "flag captured: " + self.label );
self.captureTime = gettime(); self.captureTime = gettime();
maps\mp\gametypes\_gameobjects::setOwnerTeam( var_1 ); maps\mp\gametypes\_gameobjects::setOwnerTeam( var_1 );
maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" ); maps\mp\gametypes\_gameobjects::set2DIcon( "enemy", "compass_waypoint_capture" );
maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" ); maps\mp\gametypes\_gameobjects::set3DIcon( "enemy", "waypoint_capture" );
self.visuals[0] setmodel( game["flagmodels"][var_1] ); self.visuals[0] setmodel( game["flagmodels"][var_1] );
if ( var_2 == "neutral" ) if ( var_2 == "neutral" )
{ {
var_4 = maps\mp\_utility::getOtherTeam( var_1 ); var_4 = maps\mp\_utility::getOtherTeam( var_1 );
thread maps\mp\_utility::printAndSoundOnEveryone( var_1, var_4, &"MP_NEUTRAL_FLAG_CAPTURED_BY", &"MP_NEUTRAL_FLAG_CAPTURED_BY", "mp_war_objective_taken", undefined, player ); thread maps\mp\_utility::printAndSoundOnEveryone( var_1, var_4, &"MP_NEUTRAL_FLAG_CAPTURED_BY", &"MP_NEUTRAL_FLAG_CAPTURED_BY", "mp_war_objective_taken", undefined, player );
statusDialog( "captured_a", var_1 ); statusDialog( "secured_a", var_1 );
statusDialog( "enemy_has_a", var_4 ); statusDialog( "enemy_has_a", var_4 );
} }
else else
thread maps\mp\_utility::printAndSoundOnEveryone( var_1, var_2, &"MP_ENEMY_FLAG_CAPTURED_BY", &"MP_FRIENDLY_FLAG_CAPTURED_BY", "mp_war_objective_taken", "mp_war_objective_lost", player ); thread maps\mp\_utility::printAndSoundOnEveryone( var_1, var_2, &"MP_ENEMY_FLAG_CAPTURED_BY", &"MP_FRIENDLY_FLAG_CAPTURED_BY", "mp_war_objective_taken", "mp_war_objective_lost", player );
thread giveFlagCaptureXP( self.touchList[var_1] ); thread giveFlagCaptureXP( self.touchList[var_1] );
player notify( "objective", "captured" ); player notify( "objective", "captured" );
thread flagCaptured( var_1, &"MP_DOM_NEUTRAL_FLAG_CAPTURED" ); thread flagCaptured( var_1, &"MP_DOM_NEUTRAL_FLAG_CAPTURED" );
} }
onBeginUse( var_0 ) onBeginUse( var_0 )
{ {
var_1 = maps\mp\gametypes\_gameobjects::getOwnerTeam(); var_1 = maps\mp\gametypes\_gameobjects::getOwnerTeam();
self.didStatusNotify = 0; self.didStatusNotify = 0;
if ( var_1 == "neutral" ) if ( var_1 == "neutral" )
{ {
var_2 = maps\mp\_utility::getOtherTeam( var_0.pers["team"] ); var_2 = maps\mp\_utility::getOtherTeam( var_0.pers["team"] );
statusDialog( "securing", var_0.pers["team"] ); statusDialog( "securing_a", var_0.pers["team"] );
self.objPoints[var_0.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing(); self.objPoints[var_0.pers["team"]] thread maps\mp\gametypes\_objpoints::startFlashing();
statusDialog( "enemy_taking", var_2 ); statusDialog( "losing_a", var_2 );
return; return;
} }
if ( var_1 == "allies" ) self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing();
var_2 = "axis"; self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing();
else
var_2 = "allies";
self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::startFlashing();
self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::startFlashing();
} }
onUseUpdate( var_0, var_1, var_2 ) onUseUpdate( var_0, var_1, var_2 )
{ {
if ( var_1 > 0.05 && var_2 && !self.didStatusNotify ) if ( var_1 > 0.05 && var_2 && !self.didStatusNotify )
{ {
var_3 = maps\mp\_utility::getOtherTeam( var_0 ); var_3 = maps\mp\_utility::getOtherTeam( var_0 );
statusDialog( "losing_a", var_3 ); statusDialog( "losing_a", var_3 );
statusDialog( "securing_a", var_0 ); statusDialog( "securing_a", var_0 );
self.didStatusNotify = 1; self.didStatusNotify = 1;
} }
} }
onEndUse( var_0, var_1, var_2 ) onEndUse( var_0, var_1, var_2 )
{ {
self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing(); self.objPoints["allies"] thread maps\mp\gametypes\_objpoints::stopFlashing();
self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing(); self.objPoints["axis"] thread maps\mp\gametypes\_objpoints::stopFlashing();
} }
statusDialog( dialog, team ) statusDialog( dialog, team )
{ {
if ( gettime() < level.lastStatus[team ] + 6000 ) if ( gettime() < level.lastStatus[team ] + 6000 )
return; return;
thread delayedLeaderDialog( dialog, team ); thread delayedLeaderDialog( dialog, team );
level.lastStatus[team ] = gettime(); level.lastStatus[team ] = gettime();
} }
delayedLeaderDialog( sound, team ) delayedLeaderDialog( sound, team )
{ {
level endon( "game_ended" ); level endon( "game_ended" );
wait 0.1; wait 0.1;
maps\mp\_utility::WaitTillSlowProcessAllowed(); maps\mp\_utility::WaitTillSlowProcessAllowed();
maps\mp\_utility::leaderDialog( sound, team ); maps\mp\_utility::leaderDialog( sound, team );
}
delayedLeaderDialogBothTeams( sound1, team1, sound2, team2 )
{
level endon( "game_ended" );
wait 0.1;
maps\mp\_utility::WaitTillSlowProcessAllowed();
maps\mp\_utility::leaderDialogBothTeams( sound1, team1, sound2, team2 );
} }
flagCaptured( var_0, var_1 ) flagCaptured( var_0, var_1 )
{ {
maps\mp\gametypes\_gamelogic::endGame( var_0, var_1 ); maps\mp\gametypes\_gamelogic::endGame( var_0, var_1 );
} }