137 lines
3.6 KiB
Plaintext
137 lines
3.6 KiB
Plaintext
#include common_scripts\utility;
|
|
#include maps\mp\_utility;
|
|
#include maps\mp\gametypes\_hud_util;
|
|
|
|
// if ( game["state"] == "postgame" && game["teamScores"][attacker.team] > game["teamScores"][level.otherTeam[attacker.team]] )
|
|
|
|
ICONSIZE = 20;
|
|
|
|
init()
|
|
{
|
|
if ( !isDefined( level.defconMode ) || level.defconMode == false )
|
|
return;
|
|
|
|
if ( !isDefined( game["defcon"] ) )
|
|
game["defcon"] = 4;
|
|
|
|
makeDvarServerInfo( "scr_defcon", game["defcon"] );
|
|
|
|
/# setDevDvarIfUninitialized( "scr_defconStreak", 10 ); #/
|
|
|
|
level.defconStreakAdd[5] = 0;
|
|
level.defconStreakAdd[4] = 0;
|
|
level.defconStreakAdd[3] = -1;
|
|
level.defconStreakAdd[2] = -1;
|
|
level.defconStreakAdd[1] = -1;
|
|
|
|
level.defconPointMod[5] = 1;
|
|
level.defconPointMod[4] = 1;
|
|
level.defconPointMod[3] = 1;
|
|
level.defconPointMod[2] = 1;
|
|
level.defconPointMod[1] = 2;
|
|
|
|
updateDefcon( game["defcon"] );
|
|
thread defconKillstreakThread();
|
|
}
|
|
|
|
defconKillstreakWait( streakCount )
|
|
{
|
|
for ( ;; )
|
|
{
|
|
level waittill ( "player_got_killstreak_" + streakCount, player );
|
|
level notify ( "defcon_killstreak", streakCount, player );
|
|
}
|
|
}
|
|
|
|
|
|
defconKillstreakThread()
|
|
{
|
|
level endon ( "game_ended" );
|
|
|
|
requiredKillCount = 10;
|
|
|
|
/#
|
|
requiredKillCount = getDvarInt( "scr_defconStreak" );
|
|
#/
|
|
|
|
level thread defconKillstreakWait( requiredKillCount );
|
|
level thread defconKillstreakWait( requiredKillCount - 1 );
|
|
level thread defconKillstreakWait( requiredKillCount - 2 );
|
|
|
|
level thread defconKillstreakWait( (requiredKillCount * 2) );
|
|
level thread defconKillstreakWait( (requiredKillCount * 2) - 1 );
|
|
level thread defconKillstreakWait( (requiredKillCount * 2) - 2 );
|
|
|
|
level thread defconKillstreakWait( (requiredKillCount * 3) );
|
|
level thread defconKillstreakWait( (requiredKillCount * 3) - 1 );
|
|
level thread defconKillstreakWait( (requiredKillCount * 3) - 2 );
|
|
|
|
for ( ;; )
|
|
{
|
|
level waittill ( "defcon_killstreak", streakCount, changingPlayer );
|
|
|
|
if ( game["defcon"] <= 1 )
|
|
continue;
|
|
|
|
if ( (streakCount % requiredKillCount) == requiredKillCount - 2 )
|
|
{
|
|
foreach ( player in level.players )
|
|
{
|
|
if ( !isAlive( player ) )
|
|
continue;
|
|
|
|
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify( "two_from_defcon", changingPlayer );
|
|
}
|
|
}
|
|
else if ( (streakCount % requiredKillCount) == requiredKillCount - 1 )
|
|
{
|
|
foreach ( player in level.players )
|
|
{
|
|
if ( !isAlive( player ) )
|
|
continue;
|
|
|
|
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify( "one_from_defcon", changingPlayer );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
updateDefcon( game["defcon"] - 1, changingPlayer, streakCount );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
updateDefcon( newDefcon, changingPlayer, streakCount )
|
|
{
|
|
newDefcon = int( newDefcon );
|
|
oldDefcon = game["defcon"];
|
|
game["defcon"] = newDefcon;
|
|
|
|
// level.killStreakMod = level.defconStreakAdd[newDefcon];
|
|
level.objectivePointsMod = level.defconPointMod[newDefcon];
|
|
|
|
setDvar( "scr_defcon", game["defcon"] );
|
|
|
|
//isdefined used for variable init
|
|
if( isDefined( changingPlayer ) )
|
|
changingPlayer notify( "changed_defcon" );
|
|
|
|
if ( newDefcon == oldDefcon )
|
|
return;
|
|
|
|
if ( game["defcon"] == 3 && isDefined( changingPlayer ) )
|
|
{
|
|
changingPlayer maps\mp\killstreaks\_killstreaks::giveKillstreak( "airdrop_mega" );
|
|
changingPlayer thread maps\mp\gametypes\_hud_message::splashNotify( "caused_defcon" , streakCount );
|
|
}
|
|
|
|
foreach ( player in level.players )
|
|
{
|
|
if ( isAlive( player ) )
|
|
{
|
|
player thread maps\mp\gametypes\_hud_message::defconSplashNotify( game["defcon"], newDefcon < oldDefcon );
|
|
if ( isDefined( changingPlayer ) )
|
|
player thread maps\mp\gametypes\_hud_message::playerCardSplashNotify( "changed_defcon", changingPlayer );
|
|
}
|
|
}
|
|
} |