2685 lines
62 KiB
Plaintext
2685 lines
62 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
setoverkillpro()
|
|
{
|
|
|
|
}
|
|
|
|
unsetoverkillpro()
|
|
{
|
|
|
|
}
|
|
|
|
setempimmune()
|
|
{
|
|
|
|
}
|
|
|
|
unsetempimmune()
|
|
{
|
|
|
|
}
|
|
|
|
setautospot()
|
|
{
|
|
if ( !isplayer( self ) )
|
|
return;
|
|
|
|
autospotadswatcher();
|
|
autospotdeathwatcher();
|
|
}
|
|
|
|
autospotdeathwatcher()
|
|
{
|
|
self waittill( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "endAutoSpotAdsWatcher" );
|
|
level endon( "game_ended" );
|
|
self autospotoverlayoff();
|
|
}
|
|
|
|
unsetautospot()
|
|
{
|
|
if ( !isplayer( self ) )
|
|
return;
|
|
|
|
self notify( "endAutoSpotAdsWatcher" );
|
|
self autospotoverlayoff();
|
|
}
|
|
|
|
autospotadswatcher()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "endAutoSpotAdsWatcher" );
|
|
level endon( "game_ended" );
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( self isusingturret() )
|
|
{
|
|
self autospotoverlayoff();
|
|
continue;
|
|
}
|
|
|
|
var_1 = self playerads();
|
|
|
|
if ( var_1 < 1 && var_0 )
|
|
{
|
|
var_0 = 0;
|
|
self autospotoverlayoff();
|
|
}
|
|
|
|
if ( var_1 < 1 && !var_0 )
|
|
continue;
|
|
|
|
if ( var_1 == 1 && !var_0 )
|
|
{
|
|
var_0 = 1;
|
|
self autospotoverlayon();
|
|
}
|
|
}
|
|
}
|
|
|
|
setregenfaster()
|
|
{
|
|
|
|
}
|
|
|
|
unsetregenfaster()
|
|
{
|
|
|
|
}
|
|
|
|
timeoutregenfaster()
|
|
{
|
|
self.hasregenfaster = undefined;
|
|
maps\mp\_utility::_unsetperk( "specialty_regenfaster" );
|
|
self setclientdvar( "ui_regen_faster_end_milliseconds", 0 );
|
|
self notify( "timeOutRegenFaster" );
|
|
}
|
|
|
|
sethardshell()
|
|
{
|
|
self.shellshockreduction = 0.25;
|
|
}
|
|
|
|
unsethardshell()
|
|
{
|
|
self.shellshockreduction = 0;
|
|
}
|
|
|
|
setsharpfocus()
|
|
{
|
|
thread monitorsharpfocus();
|
|
}
|
|
|
|
monitorsharpfocus()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self endon( "stop_monitorSharpFocus" );
|
|
|
|
if ( !isdefined( level.snipers ) )
|
|
{
|
|
level.snipers = [];
|
|
level.snipers["iw6_gm6_mp"] = 1;
|
|
level.snipers["iw6_l115a3_mp"] = 1;
|
|
level.snipers["iw6_usr_mp"] = 1;
|
|
level.snipers["iw6_vks_mp"] = 1;
|
|
level.snipers["iw6_dlcweap03_mp"] = 1;
|
|
}
|
|
|
|
var_0 = self getcurrentweapon();
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = undefined;
|
|
|
|
if ( isdefined( var_0 ) && var_0 != "none" )
|
|
var_1 = getweaponbasename( var_0 );
|
|
|
|
if ( isdefined( var_1 ) && isdefined( level.snipers[var_1] ) )
|
|
self setviewkickscale( 0.5 );
|
|
else
|
|
self setviewkickscale( 0.25 );
|
|
|
|
self waittill( "weapon_change", var_0 );
|
|
}
|
|
}
|
|
|
|
unsetsharpfocus()
|
|
{
|
|
self notify( "stop_monitorSharpFocus" );
|
|
self setviewkickscale( 1.0 );
|
|
}
|
|
|
|
setdoubleload()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "endDoubleLoad" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "reload" );
|
|
var_0 = self getweaponslist( "primary" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
var_3 = self getweaponammoclip( var_2 );
|
|
var_4 = weaponclipsize( var_2 );
|
|
var_5 = var_4 - var_3;
|
|
var_6 = self getweaponammostock( var_2 );
|
|
|
|
if ( var_3 != var_4 && var_6 > 0 )
|
|
{
|
|
if ( var_3 + var_6 >= var_4 )
|
|
{
|
|
self setweaponammoclip( var_2, var_4 );
|
|
self setweaponammostock( var_2, var_6 - var_5 );
|
|
continue;
|
|
}
|
|
|
|
self setweaponammoclip( var_2, var_3 + var_6 );
|
|
|
|
if ( var_6 - var_5 > 0 )
|
|
{
|
|
self setweaponammostock( var_2, var_6 - var_5 );
|
|
continue;
|
|
}
|
|
|
|
self setweaponammostock( var_2, 0 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
unsetdoubleload()
|
|
{
|
|
self notify( "endDoubleLoad" );
|
|
}
|
|
|
|
setmarksman( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 10;
|
|
else
|
|
var_0 = int( var_0 ) * 2;
|
|
|
|
maps\mp\_utility::setrecoilscale( var_0 );
|
|
self.recoilscale = var_0;
|
|
}
|
|
|
|
unsetmarksman()
|
|
{
|
|
maps\mp\_utility::setrecoilscale( 0 );
|
|
self.recoilscale = 0;
|
|
}
|
|
|
|
setrshieldradar()
|
|
{
|
|
self endon( "unsetRShieldRadar" );
|
|
wait 0.75;
|
|
self makeportableradar();
|
|
thread setrshieldradar_cleanup();
|
|
}
|
|
|
|
setrshieldradar_cleanup()
|
|
{
|
|
self endon( "unsetRShieldRadar" );
|
|
common_scripts\utility::waittill_any( "disconnect", "death" );
|
|
|
|
if ( isdefined( self ) )
|
|
unsetrshieldradar();
|
|
}
|
|
|
|
unsetrshieldradar()
|
|
{
|
|
self clearportableradar();
|
|
self notify( "unsetRShieldRadar" );
|
|
}
|
|
|
|
setrshieldscrambler()
|
|
{
|
|
self makescrambler();
|
|
thread setrshieldscrambler_cleanup();
|
|
}
|
|
|
|
setrshieldscrambler_cleanup()
|
|
{
|
|
self endon( "unsetRShieldScrambler" );
|
|
common_scripts\utility::waittill_any( "disconnect", "death" );
|
|
|
|
if ( isdefined( self ) )
|
|
unsetrshieldscrambler();
|
|
}
|
|
|
|
unsetrshieldscrambler()
|
|
{
|
|
self clearscrambler();
|
|
self notify( "unsetRShieldScrambler" );
|
|
}
|
|
|
|
setstunresistance( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 10;
|
|
|
|
var_0 = int( var_0 );
|
|
|
|
if ( var_0 == 10 )
|
|
self.stunscaler = 0;
|
|
else
|
|
self.stunscaler = var_0 / 10;
|
|
}
|
|
|
|
unsetstunresistance()
|
|
{
|
|
self.stunscaler = 1;
|
|
}
|
|
|
|
applystunresistence( var_0 )
|
|
{
|
|
if ( isdefined( self.stunscaler ) )
|
|
return self.stunscaler * var_0;
|
|
else
|
|
return var_0;
|
|
}
|
|
|
|
setweaponlaser()
|
|
{
|
|
if ( isagent( self ) )
|
|
return;
|
|
|
|
self endon( "unsetWeaponLaser" );
|
|
wait 0.5;
|
|
thread setweaponlaser_internal();
|
|
}
|
|
|
|
unsetweaponlaser()
|
|
{
|
|
self notify( "unsetWeaponLaser" );
|
|
|
|
if ( isdefined( self.perkweaponlaseron ) && self.perkweaponlaseron )
|
|
maps\mp\_utility::disableweaponlaser();
|
|
|
|
self.perkweaponlaseron = undefined;
|
|
self.perkweaponlaseroffforswitchstart = undefined;
|
|
}
|
|
|
|
setweaponlaser_waitforlaserweapon( var_0 )
|
|
{
|
|
for (;;)
|
|
{
|
|
var_0 = getweaponbasename( var_0 );
|
|
|
|
if ( isdefined( var_0 ) && ( var_0 == "iw6_kac_mp" || var_0 == "iw6_arx160_mp" ) )
|
|
break;
|
|
|
|
self waittill( "weapon_change", var_0 );
|
|
}
|
|
}
|
|
|
|
setweaponlaser_internal()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetWeaponLaser" );
|
|
self.perkweaponlaseron = 0;
|
|
var_0 = self getcurrentweapon();
|
|
|
|
for (;;)
|
|
{
|
|
setweaponlaser_waitforlaserweapon( var_0 );
|
|
|
|
if ( self.perkweaponlaseron == 0 )
|
|
{
|
|
self.perkweaponlaseron = 1;
|
|
maps\mp\_utility::enableweaponlaser();
|
|
}
|
|
|
|
childthread setweaponlaser_monitorads();
|
|
childthread setweaponlaser_monitorweaponswitchstart( 1.0 );
|
|
self.perkweaponlaseroffforswitchstart = undefined;
|
|
self waittill( "weapon_change", var_0 );
|
|
|
|
if ( self.perkweaponlaseron == 1 )
|
|
{
|
|
self.perkweaponlaseron = 0;
|
|
maps\mp\_utility::disableweaponlaser();
|
|
}
|
|
}
|
|
}
|
|
|
|
setweaponlaser_monitorweaponswitchstart( var_0 )
|
|
{
|
|
self endon( "weapon_change" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_switch_started" );
|
|
childthread setweaponlaser_onweaponswitchstart( var_0 );
|
|
}
|
|
}
|
|
|
|
setweaponlaser_onweaponswitchstart( var_0 )
|
|
{
|
|
self notify( "setWeaponLaser_onWeaponSwitchStart" );
|
|
self endon( "setWeaponLaser_onWeaponSwitchStart" );
|
|
|
|
if ( self.perkweaponlaseron == 1 )
|
|
{
|
|
self.perkweaponlaseroffforswitchstart = 1;
|
|
self.perkweaponlaseron = 0;
|
|
maps\mp\_utility::disableweaponlaser();
|
|
}
|
|
|
|
wait( var_0 );
|
|
self.perkweaponlaseroffforswitchstart = undefined;
|
|
|
|
if ( self.perkweaponlaseron == 0 && self playerads() <= 0.6 )
|
|
{
|
|
self.perkweaponlaseron = 1;
|
|
maps\mp\_utility::enableweaponlaser();
|
|
}
|
|
}
|
|
|
|
setweaponlaser_monitorads()
|
|
{
|
|
self endon( "weapon_change" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( !isdefined( self.perkweaponlaseroffforswitchstart ) || self.perkweaponlaseroffforswitchstart == 0 )
|
|
{
|
|
if ( self playerads() > 0.6 )
|
|
{
|
|
if ( self.perkweaponlaseron == 1 )
|
|
{
|
|
self.perkweaponlaseron = 0;
|
|
maps\mp\_utility::disableweaponlaser();
|
|
}
|
|
}
|
|
else if ( self.perkweaponlaseron == 0 )
|
|
{
|
|
self.perkweaponlaseron = 1;
|
|
maps\mp\_utility::enableweaponlaser();
|
|
}
|
|
}
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
setsteadyaimpro()
|
|
{
|
|
self setaimspreadmovementscale( 0.5 );
|
|
}
|
|
|
|
unsetsteadyaimpro()
|
|
{
|
|
self notify( "end_SteadyAimPro" );
|
|
self setaimspreadmovementscale( 1.0 );
|
|
}
|
|
|
|
blastshieldusetracker( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "end_perkUseTracker" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "empty_offhand" );
|
|
|
|
if ( !common_scripts\utility::isoffhandweaponenabled() )
|
|
continue;
|
|
|
|
self [[ var_1 ]]( maps\mp\_utility::_hasperk( "_specialty_blastshield" ) );
|
|
}
|
|
}
|
|
|
|
perkusedeathtracker()
|
|
{
|
|
self endon( "disconnect" );
|
|
self waittill( "death" );
|
|
self._useperkenabled = undefined;
|
|
}
|
|
|
|
setrearview()
|
|
{
|
|
|
|
}
|
|
|
|
unsetrearview()
|
|
{
|
|
self notify( "end_perkUseTracker" );
|
|
}
|
|
|
|
setendgame()
|
|
{
|
|
if ( isdefined( self.endgame ) )
|
|
return;
|
|
|
|
self.maxhealth = maps\mp\gametypes\_tweakables::gettweakablevalue( "player", "maxhealth" ) * 4;
|
|
self.health = self.maxhealth;
|
|
self.endgame = 1;
|
|
self.attackertable[0] = "";
|
|
self visionsetnakedforplayer( "end_game", 5 );
|
|
thread endgamedeath( 7 );
|
|
maps\mp\gametypes\_gamelogic::sethasdonecombat( self, 1 );
|
|
}
|
|
|
|
unsetendgame()
|
|
{
|
|
self notify( "stopEndGame" );
|
|
self.endgame = undefined;
|
|
maps\mp\_utility::restorebasevisionset( 1 );
|
|
|
|
if ( !isdefined( self.endgametimer ) )
|
|
return;
|
|
|
|
self.endgametimer maps\mp\gametypes\_hud_util::destroyelem();
|
|
self.endgameicon maps\mp\gametypes\_hud_util::destroyelem();
|
|
}
|
|
|
|
endgamedeath( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "joined_team" );
|
|
level endon( "game_ended" );
|
|
self endon( "stopEndGame" );
|
|
wait( var_0 + 1 );
|
|
maps\mp\_utility::_suicide();
|
|
}
|
|
|
|
setchallenger()
|
|
{
|
|
if ( !level.hardcoremode )
|
|
{
|
|
self.maxhealth = maps\mp\gametypes\_tweakables::gettweakablevalue( "player", "maxhealth" );
|
|
|
|
if ( isdefined( self.xpscaler ) && self.xpscaler == 1 && self.maxhealth > 30 )
|
|
self.xpscaler = 2;
|
|
}
|
|
}
|
|
|
|
unsetchallenger()
|
|
{
|
|
self.xpscaler = 1;
|
|
}
|
|
|
|
setsaboteur()
|
|
{
|
|
self.objectivescaler = 1.2;
|
|
}
|
|
|
|
unsetsaboteur()
|
|
{
|
|
self.objectivescaler = 1;
|
|
}
|
|
|
|
setcombatspeed()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetCombatSpeed" );
|
|
self.incombatspeed = 0;
|
|
unsetcombatspeedscalar();
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "damage", var_0, var_1 );
|
|
|
|
if ( !isdefined( var_1.team ) )
|
|
continue;
|
|
|
|
if ( level.teambased && var_1.team == self.team )
|
|
continue;
|
|
|
|
if ( self.incombatspeed )
|
|
continue;
|
|
|
|
setcombatspeedscalar();
|
|
self.incombatspeed = 1;
|
|
thread endofspeedwatcher();
|
|
}
|
|
}
|
|
|
|
endofspeedwatcher()
|
|
{
|
|
self notify( "endOfSpeedWatcher" );
|
|
self endon( "endOfSpeedWatcher" );
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self waittill( "healed" );
|
|
unsetcombatspeedscalar();
|
|
self.incombatspeed = 0;
|
|
}
|
|
|
|
setcombatspeedscalar()
|
|
{
|
|
if ( isdefined( self.isjuggernaut ) && self.isjuggernaut )
|
|
return;
|
|
|
|
if ( self.weaponspeed <= 0.8 )
|
|
self.combatspeedscalar = 1.4;
|
|
else if ( self.weaponspeed <= 0.9 )
|
|
self.combatspeedscalar = 1.3;
|
|
else
|
|
self.combatspeedscalar = 1.2;
|
|
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
|
|
unsetcombatspeedscalar()
|
|
{
|
|
self.combatspeedscalar = 1;
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
|
|
unsetcombatspeed()
|
|
{
|
|
unsetcombatspeedscalar();
|
|
self notify( "unsetCombatSpeed" );
|
|
}
|
|
|
|
setlightweight()
|
|
{
|
|
if ( !isdefined( self.cranked ) )
|
|
{
|
|
self.movespeedscaler = maps\mp\_utility::lightweightscalar();
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
}
|
|
|
|
unsetlightweight()
|
|
{
|
|
self.movespeedscaler = 1;
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
|
|
setblackbox()
|
|
{
|
|
self.killstreakscaler = 1.5;
|
|
}
|
|
|
|
unsetblackbox()
|
|
{
|
|
self.killstreakscaler = 1;
|
|
}
|
|
|
|
setsteelnerves()
|
|
{
|
|
maps\mp\_utility::giveperk( "specialty_bulletaccuracy", 1 );
|
|
maps\mp\_utility::giveperk( "specialty_holdbreath", 0 );
|
|
}
|
|
|
|
unsetsteelnerves()
|
|
{
|
|
maps\mp\_utility::_unsetperk( "specialty_bulletaccuracy" );
|
|
maps\mp\_utility::_unsetperk( "specialty_holdbreath" );
|
|
}
|
|
|
|
setdelaymine()
|
|
{
|
|
|
|
}
|
|
|
|
unsetdelaymine()
|
|
{
|
|
|
|
}
|
|
|
|
setlocaljammer()
|
|
{
|
|
if ( !maps\mp\_utility::isemped() )
|
|
self makescrambler();
|
|
}
|
|
|
|
unsetlocaljammer()
|
|
{
|
|
self clearscrambler();
|
|
}
|
|
|
|
setac130()
|
|
{
|
|
thread killstreakthink( "ac130", 7, "end_ac130Think" );
|
|
}
|
|
|
|
unsetac130()
|
|
{
|
|
self notify( "end_ac130Think" );
|
|
}
|
|
|
|
setsentryminigun()
|
|
{
|
|
thread killstreakthink( "airdrop_sentry_minigun", 2, "end_sentry_minigunThink" );
|
|
}
|
|
|
|
unsetsentryminigun()
|
|
{
|
|
self notify( "end_sentry_minigunThink" );
|
|
}
|
|
|
|
settank()
|
|
{
|
|
thread killstreakthink( "tank", 6, "end_tankThink" );
|
|
}
|
|
|
|
unsettank()
|
|
{
|
|
self notify( "end_tankThink" );
|
|
}
|
|
|
|
setprecision_airstrike()
|
|
{
|
|
thread killstreakthink( "precision_airstrike", 6, "end_precision_airstrike" );
|
|
}
|
|
|
|
unsetprecision_airstrike()
|
|
{
|
|
self notify( "end_precision_airstrike" );
|
|
}
|
|
|
|
setpredatormissile()
|
|
{
|
|
thread killstreakthink( "predator_missile", 4, "end_predator_missileThink" );
|
|
}
|
|
|
|
unsetpredatormissile()
|
|
{
|
|
self notify( "end_predator_missileThink" );
|
|
}
|
|
|
|
sethelicopterminigun()
|
|
{
|
|
thread killstreakthink( "helicopter_minigun", 5, "end_helicopter_minigunThink" );
|
|
}
|
|
|
|
unsethelicopterminigun()
|
|
{
|
|
self notify( "end_helicopter_minigunThink" );
|
|
}
|
|
|
|
killstreakthink( var_0, var_1, var_2 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( var_2 );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "killed_enemy" );
|
|
|
|
if ( self.pers["cur_kill_streak"] != var_1 )
|
|
continue;
|
|
|
|
thread maps\mp\killstreaks\_killstreaks::givekillstreak( var_0 );
|
|
thread maps\mp\gametypes\_hud_message::killstreaksplashnotify( var_0, var_1 );
|
|
return;
|
|
}
|
|
}
|
|
|
|
setthermal()
|
|
{
|
|
self thermalvisionon();
|
|
}
|
|
|
|
unsetthermal()
|
|
{
|
|
self thermalvisionoff();
|
|
}
|
|
|
|
setonemanarmy()
|
|
{
|
|
thread onemanarmyweaponchangetracker();
|
|
}
|
|
|
|
unsetonemanarmy()
|
|
{
|
|
self notify( "stop_oneManArmyTracker" );
|
|
}
|
|
|
|
onemanarmyweaponchangetracker()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self endon( "stop_oneManArmyTracker" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_change", var_0 );
|
|
|
|
if ( var_0 != "onemanarmy_mp" )
|
|
continue;
|
|
|
|
thread selectonemanarmyclass();
|
|
}
|
|
}
|
|
|
|
isonemanarmymenu( var_0 )
|
|
{
|
|
if ( var_0 == game["menu_onemanarmy"] )
|
|
return 1;
|
|
|
|
if ( isdefined( game["menu_onemanarmy_defaults_splitscreen"] ) && var_0 == game["menu_onemanarmy_defaults_splitscreen"] )
|
|
return 1;
|
|
|
|
if ( isdefined( game["menu_onemanarmy_custom_splitscreen"] ) && var_0 == game["menu_onemanarmy_custom_splitscreen"] )
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
|
|
selectonemanarmyclass()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
common_scripts\utility::_disableweaponswitch();
|
|
common_scripts\utility::_disableoffhandweapons();
|
|
common_scripts\utility::_disableusability();
|
|
self openpopupmenu( game["menu_onemanarmy"] );
|
|
thread closeomamenuondeath();
|
|
self waittill( "menuresponse", var_0, var_1 );
|
|
common_scripts\utility::_enableweaponswitch();
|
|
common_scripts\utility::_enableoffhandweapons();
|
|
common_scripts\utility::_enableusability();
|
|
|
|
if ( var_1 == "back" || !isonemanarmymenu( var_0 ) || maps\mp\_utility::isusingremote() )
|
|
{
|
|
if ( self getcurrentweapon() == "onemanarmy_mp" )
|
|
{
|
|
common_scripts\utility::_disableweaponswitch();
|
|
common_scripts\utility::_disableoffhandweapons();
|
|
common_scripts\utility::_disableusability();
|
|
self switchtoweapon( common_scripts\utility::getlastweapon() );
|
|
self waittill( "weapon_change" );
|
|
common_scripts\utility::_enableweaponswitch();
|
|
common_scripts\utility::_enableoffhandweapons();
|
|
common_scripts\utility::_enableusability();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
thread giveonemanarmyclass( var_1 );
|
|
}
|
|
|
|
closeomamenuondeath()
|
|
{
|
|
self endon( "menuresponse" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self waittill( "death" );
|
|
common_scripts\utility::_enableweaponswitch();
|
|
common_scripts\utility::_enableoffhandweapons();
|
|
common_scripts\utility::_enableusability();
|
|
}
|
|
|
|
giveonemanarmyclass( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( maps\mp\_utility::_hasperk( "specialty_omaquickchange" ) )
|
|
{
|
|
var_1 = 3.0;
|
|
maps\mp\_utility::playplayerandnpcsounds( self, "foly_onemanarmy_bag3_plr", "foly_onemanarmy_bag3_npc" );
|
|
}
|
|
else
|
|
{
|
|
var_1 = 6.0;
|
|
maps\mp\_utility::playplayerandnpcsounds( self, "foly_onemanarmy_bag6_plr", "foly_onemanarmy_bag6_npc" );
|
|
}
|
|
|
|
thread omausebar( var_1 );
|
|
common_scripts\utility::_disableweapon();
|
|
common_scripts\utility::_disableoffhandweapons();
|
|
common_scripts\utility::_disableusability();
|
|
wait( var_1 );
|
|
common_scripts\utility::_enableweapon();
|
|
common_scripts\utility::_enableoffhandweapons();
|
|
common_scripts\utility::_enableusability();
|
|
self.omaclasschanged = 1;
|
|
maps\mp\gametypes\_class::giveloadout( self.pers["team"], var_0 );
|
|
|
|
if ( isdefined( self.carryflag ) )
|
|
self attach( self.carryflag, "J_spine4", 1 );
|
|
|
|
self notify( "changed_kit" );
|
|
level notify( "changed_kit" );
|
|
}
|
|
|
|
omausebar( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
var_1 = maps\mp\gametypes\_hud_util::createprimaryprogressbar();
|
|
var_2 = maps\mp\gametypes\_hud_util::createprimaryprogressbartext();
|
|
var_2 settext( &"MPUI_CHANGING_KIT" );
|
|
var_1 maps\mp\gametypes\_hud_util::updatebar( 0, 1 / var_0 );
|
|
|
|
for ( var_3 = 0; var_3 < var_0 && isalive( self ) && !level.gameended; var_3 = var_3 + 0.05 )
|
|
wait 0.05;
|
|
|
|
var_1 maps\mp\gametypes\_hud_util::destroyelem();
|
|
var_2 maps\mp\gametypes\_hud_util::destroyelem();
|
|
}
|
|
|
|
setblastshield()
|
|
{
|
|
self setweaponhudiconoverride( "primaryoffhand", "specialty_blastshield" );
|
|
}
|
|
|
|
unsetblastshield()
|
|
{
|
|
self setweaponhudiconoverride( "primaryoffhand", "none" );
|
|
}
|
|
|
|
setfreefall()
|
|
{
|
|
|
|
}
|
|
|
|
unsetfreefall()
|
|
{
|
|
|
|
}
|
|
|
|
settacticalinsertion()
|
|
{
|
|
self setoffhandsecondaryclass( "flash" );
|
|
maps\mp\_utility::_giveweapon( "flare_mp", 0 );
|
|
self givestartammo( "flare_mp" );
|
|
thread monitortiuse();
|
|
}
|
|
|
|
unsettacticalinsertion()
|
|
{
|
|
self notify( "end_monitorTIUse" );
|
|
}
|
|
|
|
clearprevioustispawnpoint()
|
|
{
|
|
common_scripts\utility::waittill_any( "disconnect", "joined_team", "joined_spectators" );
|
|
|
|
if ( isdefined( self.setspawnpoint ) )
|
|
deleteti( self.setspawnpoint );
|
|
}
|
|
|
|
updatetispawnposition()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self endon( "end_monitorTIUse" );
|
|
|
|
while ( maps\mp\_utility::isreallyalive( self ) )
|
|
{
|
|
if ( isvalidtispawnposition() )
|
|
self.tispawnposition = self.origin;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
isvalidtispawnposition()
|
|
{
|
|
if ( canspawn( self.origin ) && self isonground() )
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
ti_overridemovingplatformdeath( var_0 )
|
|
{
|
|
if ( maps\mp\_utility::isreallyalive( var_0.owner ) )
|
|
var_0.owner deleteti( self );
|
|
}
|
|
|
|
monitortiuse()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self endon( "end_monitorTIUse" );
|
|
thread updatetispawnposition();
|
|
thread clearprevioustispawnpoint();
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "grenade_fire", var_0, var_1 );
|
|
|
|
if ( var_1 != "flare_mp" )
|
|
continue;
|
|
|
|
if ( isdefined( self.setspawnpoint ) )
|
|
deleteti( self.setspawnpoint );
|
|
|
|
if ( !isdefined( self.tispawnposition ) )
|
|
continue;
|
|
|
|
if ( maps\mp\_utility::touchingbadtrigger() )
|
|
continue;
|
|
|
|
var_2 = self.tispawnposition + ( 0, 0, 16 );
|
|
var_3 = self.tispawnposition - ( 0, 0, 2048 );
|
|
var_4 = playerphysicstrace( var_2, var_3 ) + ( 0, 0, 1 );
|
|
var_5 = bullettrace( var_2, var_3, 0 );
|
|
var_6 = spawn( "script_model", var_4 );
|
|
var_6.angles = self.angles;
|
|
var_6.team = self.team;
|
|
var_6.owner = self;
|
|
var_6.enemytrigger = spawn( "script_origin", var_4 );
|
|
var_6 thread glowsticksetupandwaitfordeath( self );
|
|
var_6.playerspawnpos = self.tispawnposition;
|
|
var_6 setotherent( self );
|
|
var_6 common_scripts\utility::make_entity_sentient_mp( self.team, 1 );
|
|
var_6 thread maps\mp\gametypes\_weapons::createbombsquadmodel( "weapon_light_stick_tactical_bombsquad", "tag_fire_fx", self );
|
|
var_6 maps\mp\gametypes\_weapons::explosivehandlemovers( var_5["entity"] );
|
|
maps\mp\gametypes\_weapons::ontacticalequipmentplanted( var_6 );
|
|
self.setspawnpoint = var_6;
|
|
return;
|
|
}
|
|
}
|
|
|
|
glowsticksetupandwaitfordeath( var_0 )
|
|
{
|
|
self setmodel( level.spawnglowmodel["enemy"] );
|
|
|
|
if ( level.teambased )
|
|
maps\mp\_entityheadicons::setteamheadicon( self.team, ( 0, 0, 20 ) );
|
|
else
|
|
maps\mp\_entityheadicons::setplayerheadicon( var_0, ( 0, 0, 20 ) );
|
|
|
|
thread glowstickdamagelistener( var_0 );
|
|
thread glowstickenemyuselistener( var_0 );
|
|
thread glowstickuselistener( var_0 );
|
|
thread glowstickwaitforownerdisconnect( var_0 );
|
|
var_1 = spawn( "script_model", self.origin + ( 0, 0, 0 ) );
|
|
var_1.angles = self.angles;
|
|
var_1 setmodel( level.spawnglowmodel["friendly"] );
|
|
var_1 setcontents( 0 );
|
|
var_1 linkto( self );
|
|
var_1 playloopsound( "emt_road_flare_burn" );
|
|
thread glowstickteamupdater( self, var_1, var_0 );
|
|
self waittill( "death" );
|
|
var_1 stoploopsound();
|
|
var_1 delete();
|
|
}
|
|
|
|
glowstickteamupdater( var_0, var_1, var_2 )
|
|
{
|
|
var_0 endon( "death" );
|
|
wait 0.05;
|
|
var_3 = [];
|
|
var_3["enemy"] = var_0;
|
|
var_3["friendly"] = var_1;
|
|
|
|
for (;;)
|
|
{
|
|
foreach ( var_5 in var_3 )
|
|
var_5 hide();
|
|
|
|
foreach ( var_8 in level.players )
|
|
{
|
|
var_9 = "friendly";
|
|
|
|
if ( var_2 maps\mp\_utility::isenemy( var_8 ) )
|
|
var_9 = "enemy";
|
|
|
|
var_5 = var_3[var_9];
|
|
var_5 show();
|
|
playfxontagforclients( level.spawnglow[var_9], var_5, "tag_fire_fx", var_8 );
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
|
|
level waittill( "joined_team" );
|
|
|
|
foreach ( var_9, var_5 in var_3 )
|
|
stopfxontag( level.spawnglow[var_9], var_5, "tag_fire_fx" );
|
|
|
|
common_scripts\utility::waitframe();
|
|
}
|
|
}
|
|
|
|
deleteondeath( var_0 )
|
|
{
|
|
self waittill( "death" );
|
|
|
|
if ( isdefined( var_0 ) )
|
|
var_0 delete();
|
|
}
|
|
|
|
glowstickdamagelistener( var_0 )
|
|
{
|
|
maps\mp\gametypes\_damage::monitordamage( 100, "tactical_insertion", ::glowstickmodifydamage, ::glowstickhandledeathdamage, 1 );
|
|
}
|
|
|
|
glowstickmodifydamage( var_0, var_1, var_2, var_3 )
|
|
{
|
|
return maps\mp\gametypes\_damage::handlemeleedamage( var_1, var_2 );
|
|
}
|
|
|
|
glowstickhandledeathdamage( var_0, var_1, var_2, var_3 )
|
|
{
|
|
if ( isdefined( self.owner ) && var_0 != self.owner )
|
|
{
|
|
var_0 notify( "destroyed_insertion", self.owner );
|
|
var_0 notify( "destroyed_equipment" );
|
|
self.owner thread maps\mp\_utility::leaderdialogonplayer( "ti_destroyed", undefined, undefined, self.origin );
|
|
}
|
|
|
|
var_0 thread deleteti( self );
|
|
}
|
|
|
|
glowstickuselistener( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
var_0 endon( "disconnect" );
|
|
self setcursorhint( "HINT_NOICON" );
|
|
self sethintstring( &"MP_PATCH_PICKUP_TI" );
|
|
thread updateenemyuse( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger", var_1 );
|
|
var_1 playsound( "tactical_insert_flare_pu" );
|
|
|
|
if ( !var_1 maps\mp\_utility::isjuggernaut() )
|
|
var_1 thread settacticalinsertion();
|
|
|
|
var_1 thread deleteti( self );
|
|
}
|
|
}
|
|
|
|
updateenemyuse( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
maps\mp\_utility::setselfusable( var_0 );
|
|
level common_scripts\utility::waittill_either( "joined_team", "player_spawned" );
|
|
}
|
|
}
|
|
|
|
glowstickwaitforownerdisconnect( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
var_0 waittill( "disconnect" );
|
|
thread deleteti( self );
|
|
}
|
|
|
|
deleteti( var_0 )
|
|
{
|
|
if ( isdefined( var_0.enemytrigger ) )
|
|
var_0.enemytrigger delete();
|
|
|
|
var_1 = var_0.origin;
|
|
var_2 = var_0.angles;
|
|
var_3 = var_0 getlinkedparent();
|
|
var_0 delete();
|
|
var_4 = spawn( "script_model", var_1 );
|
|
var_4.angles = var_2;
|
|
var_4 setmodel( level.spawnglowmodel["friendly"] );
|
|
var_4 setcontents( 0 );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_4 linkto( var_3 );
|
|
|
|
thread dummyglowstickdelete( var_4 );
|
|
}
|
|
|
|
dummyglowstickdelete( var_0 )
|
|
{
|
|
wait 2.5;
|
|
var_0 delete();
|
|
}
|
|
|
|
glowstickenemyuselistener( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
var_0 endon( "disconnect" );
|
|
self.enemytrigger setcursorhint( "HINT_NOICON" );
|
|
self.enemytrigger sethintstring( &"MP_PATCH_DESTROY_TI" );
|
|
self.enemytrigger maps\mp\_utility::makeenemyusable( var_0 );
|
|
|
|
for (;;)
|
|
{
|
|
self.enemytrigger waittill( "trigger", var_1 );
|
|
var_1 notify( "destroyed_insertion", var_0 );
|
|
var_1 notify( "destroyed_equipment" );
|
|
|
|
if ( isdefined( var_0 ) && var_1 != var_0 )
|
|
var_0 thread maps\mp\_utility::leaderdialogonplayer( "ti_destroyed", undefined, undefined, self.origin );
|
|
|
|
var_1 thread deleteti( self );
|
|
}
|
|
}
|
|
|
|
setlittlebirdsupport()
|
|
{
|
|
thread killstreakthink( "littlebird_support", 2, "end_littlebird_support_think" );
|
|
}
|
|
|
|
unsetlittlebirdsupport()
|
|
{
|
|
self notify( "end_littlebird_support_think" );
|
|
}
|
|
|
|
setpainted( var_0 )
|
|
{
|
|
if ( isplayer( self ) )
|
|
{
|
|
var_1 = 1;
|
|
|
|
if ( !maps\mp\_utility::_hasperk( "specialty_incog" ) )
|
|
{
|
|
self.painted = 1;
|
|
|
|
if ( level.teambased )
|
|
{
|
|
var_2 = maps\mp\_utility::outlineenableforteam( self, "orange", var_0.team, 0, "perk" );
|
|
thread watchpainted( var_2, var_1 );
|
|
thread watchpaintedagain( var_2 );
|
|
}
|
|
else
|
|
{
|
|
var_2 = maps\mp\_utility::outlineenableforplayer( self, "orange", var_0, 0, "perk" );
|
|
thread watchpainted( var_2, var_1 );
|
|
thread watchpaintedagain( var_2 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
watchpainted( var_0, var_1 )
|
|
{
|
|
self notify( "painted_again" );
|
|
self endon( "painted_again" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
common_scripts\utility::waittill_any_timeout( var_1, "death" );
|
|
self.painted = 0;
|
|
maps\mp\_utility::outlinedisable( var_0, self );
|
|
self notify( "painted_end" );
|
|
}
|
|
|
|
watchpaintedagain( var_0 )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
common_scripts\utility::waittill_any( "painted_again", "painted_end" );
|
|
maps\mp\_utility::outlinedisable( var_0, self );
|
|
}
|
|
|
|
ispainted()
|
|
{
|
|
return isdefined( self.painted ) && self.painted;
|
|
}
|
|
|
|
setassists()
|
|
{
|
|
|
|
}
|
|
|
|
unsetassists()
|
|
{
|
|
|
|
}
|
|
|
|
setrefillgrenades()
|
|
{
|
|
if ( isdefined( self.primarygrenade ) )
|
|
self givemaxammo( self.primarygrenade );
|
|
|
|
if ( isdefined( self.secondarygrenade ) )
|
|
self givemaxammo( self.secondarygrenade );
|
|
}
|
|
|
|
unsetrefillgrenades()
|
|
{
|
|
|
|
}
|
|
|
|
setrefillammo()
|
|
{
|
|
if ( isdefined( self.primaryweapon ) )
|
|
self givemaxammo( self.primaryweapon );
|
|
|
|
if ( isdefined( self.secondaryweapon ) )
|
|
self givemaxammo( self.secondaryweapon );
|
|
}
|
|
|
|
unsetrefillammo()
|
|
{
|
|
|
|
}
|
|
|
|
setgunsmith()
|
|
{
|
|
thread setgunsmithinternal();
|
|
}
|
|
|
|
setgunsmithinternal()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "death" );
|
|
level endon( "game_ended" );
|
|
self endon( "unsetGunsmith" );
|
|
self waittill( "giveLoadout" );
|
|
|
|
if ( self.loadoutprimaryattachments.size == 0 && self.loadoutsecondaryattachments.size == 0 )
|
|
return;
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_change", var_0 );
|
|
|
|
if ( var_0 == "none" )
|
|
continue;
|
|
|
|
if ( maps\mp\_utility::iskillstreakweapon( var_0 ) )
|
|
continue;
|
|
|
|
if ( !maps\mp\_utility::isstrstart( var_0, "iw5_" ) && !maps\mp\_utility::isstrstart( var_0, "iw6_" ) )
|
|
continue;
|
|
|
|
var_1 = undefined;
|
|
|
|
if ( maps\mp\_utility::getweaponclass( var_0 ) == "weapon_pistol" )
|
|
{
|
|
if ( self.loadoutsecondaryattachments.size > 0 )
|
|
var_1 = self.loadoutsecondaryattachments;
|
|
}
|
|
else if ( self.loadoutprimaryattachments.size > 0 )
|
|
var_1 = self.loadoutprimaryattachments;
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
continue;
|
|
|
|
var_2 = 0;
|
|
var_3 = maps\mp\_utility::getweaponattachmentsbasenames( var_0 );
|
|
|
|
if ( var_3.size == 0 )
|
|
var_2 = 1;
|
|
else
|
|
{
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
if ( !common_scripts\utility::array_contains( var_3, var_5 ) )
|
|
{
|
|
var_2 = 1;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !var_2 )
|
|
continue;
|
|
|
|
var_7 = [];
|
|
var_8 = maps\mp\_utility::getweaponattachmentarrayfromstats( var_0 );
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
if ( common_scripts\utility::array_contains( var_8, var_5 ) )
|
|
var_7[var_7.size] = var_5;
|
|
}
|
|
|
|
var_1 = var_7;
|
|
var_11 = [];
|
|
|
|
foreach ( var_13 in var_3 )
|
|
{
|
|
var_14 = 1;
|
|
|
|
foreach ( var_16 in var_1 )
|
|
{
|
|
if ( !maps\mp\_utility::attachmentscompatible( var_16, var_13 ) )
|
|
{
|
|
var_14 = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_14 )
|
|
var_11[var_11.size] = var_13;
|
|
}
|
|
|
|
var_3 = var_11;
|
|
var_19 = var_1.size + var_3.size;
|
|
|
|
if ( var_19 > 4 )
|
|
var_3 = common_scripts\utility::array_randomize( var_3 );
|
|
|
|
for ( var_20 = 0; var_1.size < 4 && var_20 < var_3.size; var_20++ )
|
|
var_1[var_1.size] = var_3[var_20];
|
|
|
|
var_21 = getweaponbasename( var_0 );
|
|
var_22 = var_21;
|
|
|
|
foreach ( var_20, var_5 in var_1 )
|
|
{
|
|
var_24 = maps\mp\_utility::attachmentmap_tounique( var_5, var_0 );
|
|
var_1[var_20] = var_24;
|
|
}
|
|
|
|
var_1 = common_scripts\utility::alphabetize( var_1 );
|
|
|
|
foreach ( var_5 in var_1 )
|
|
var_22 = var_22 + ( "_" + var_5 );
|
|
|
|
if ( var_22 != var_21 )
|
|
{
|
|
var_27 = self getweaponammoclip( var_0 );
|
|
var_28 = self getweaponammostock( var_0 );
|
|
self takeweapon( var_0 );
|
|
self giveweapon( var_22 );
|
|
self setweaponammoclip( var_22, var_27 );
|
|
self setweaponammostock( var_22, var_28 );
|
|
self switchtoweapon( var_22 );
|
|
}
|
|
}
|
|
}
|
|
|
|
unsetgunsmith()
|
|
{
|
|
self notify( "unsetGunsmith" );
|
|
}
|
|
|
|
setgambler()
|
|
{
|
|
self setclientomnvar( "ui_gambler_show", -1 );
|
|
setgamblerinternal();
|
|
}
|
|
|
|
setgamblerinternal()
|
|
{
|
|
level.abilitymaxval = [];
|
|
var_0 = maps\mp\gametypes\_class::getnumabilitycategories();
|
|
var_1 = maps\mp\gametypes\_class::getnumsubability();
|
|
var_2 = [];
|
|
var_3 = 0;
|
|
var_4 = undefined;
|
|
|
|
if ( isai( self ) )
|
|
var_4 = self.pers["loadoutPerks"];
|
|
|
|
if ( !isdefined( level.perknamesforgambler ) )
|
|
{
|
|
level.perknamesforgambler = [];
|
|
level.perkcostsforgambler = [];
|
|
level.perkrowsforgambler = [];
|
|
|
|
for ( var_5 = 0; var_5 < var_0; var_5++ )
|
|
{
|
|
for ( var_6 = 0; var_6 < var_1; var_6++ )
|
|
{
|
|
var_7 = tablelookup( "mp/cacAbilityTable.csv", 0, var_5 + 1, 4 + var_6 );
|
|
level.perknamesforgambler[var_5][var_6] = var_7;
|
|
|
|
for ( var_8 = 0; tablelookupbyrow( "mp/perktable.csv", var_8, 0 ) != ""; var_8++ )
|
|
{
|
|
if ( var_7 == tablelookupbyrow( "mp/perktable.csv", var_8, 1 ) )
|
|
{
|
|
level.perkcostsforgambler[var_5][var_6] = int( tablelookupbyrow( "mp/perktable.csv", var_8, 10 ) );
|
|
level.perkrowsforgambler[var_5][var_6] = var_8;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var_9 = gamblercommonchecker();
|
|
var_10 = 0;
|
|
|
|
if ( level.gametype == "infect" )
|
|
var_9 = 0;
|
|
|
|
if ( isdefined( self.teamname ) )
|
|
var_10 = getmatchrulesdata( "defaultClasses", self.teamname, self.class_num, "class", "abilitiesPicked", 6, 0 );
|
|
|
|
for ( var_5 = 0; var_5 < var_0; var_5++ )
|
|
{
|
|
for ( var_6 = 0; var_6 < var_1; var_6++ )
|
|
{
|
|
var_11 = level.perknamesforgambler[var_5][var_6];
|
|
var_12 = perkpickedchecker( var_11, var_5, var_6 );
|
|
|
|
if ( var_12 && ( self.streaktype == "specialist" || !self.perkpickedspecialist ) )
|
|
continue;
|
|
|
|
if ( !isdefined( var_11 ) )
|
|
continue;
|
|
|
|
if ( var_11 == "" )
|
|
continue;
|
|
|
|
if ( var_11 == "specialty_extra_attachment" || var_11 == "specialty_twoprimaries" )
|
|
continue;
|
|
|
|
if ( isdefined( var_9 ) && !var_9 && !var_10 )
|
|
{
|
|
if ( var_11 == "specialty_extraammo" || var_11 == "specialty_extra_equipment" || var_11 == "specialty_extra_deadly" )
|
|
continue;
|
|
}
|
|
|
|
if ( self.streaktype == "support" )
|
|
{
|
|
if ( var_11 == "specialty_hardline" )
|
|
continue;
|
|
}
|
|
|
|
if ( isai( self ) && isdefined( var_4 ) && common_scripts\utility::array_contains( var_4, var_11 ) )
|
|
continue;
|
|
|
|
var_13 = level.perkcostsforgambler[var_5][var_6];
|
|
var_8 = level.perkrowsforgambler[var_5][var_6];
|
|
|
|
switch ( var_13 )
|
|
{
|
|
case 1:
|
|
var_3 = 150;
|
|
break;
|
|
case 2:
|
|
var_3 = 40;
|
|
break;
|
|
case 3:
|
|
var_3 = 60;
|
|
break;
|
|
case 4:
|
|
var_3 = 20;
|
|
break;
|
|
case 5:
|
|
var_3 = 20;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var_2[var_2.size] = spawnstruct();
|
|
var_2[var_2.size - 1].row = var_8;
|
|
var_2[var_2.size - 1].id = var_11;
|
|
var_2[var_2.size - 1].weight = var_3;
|
|
}
|
|
}
|
|
|
|
self.perkpickedspecialist = undefined;
|
|
|
|
if ( var_2.size > 0 )
|
|
thread givegamblerchoice( var_2 );
|
|
}
|
|
|
|
gamblercommonchecker()
|
|
{
|
|
if ( !isai( self ) )
|
|
return self getcacplayerdata( "loadouts", self.class_num, "abilitiesPicked", 6, 0 );
|
|
else
|
|
{
|
|
var_0 = [];
|
|
|
|
if ( isdefined( self.pers["loadoutPerks"] ) )
|
|
var_0 = common_scripts\utility::array_combine( var_0, self.pers["loadoutPerks"] );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( maps\mp\_utility::getbaseperkname( var_2 ) == "specialty_gambler" )
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
perkpickedchecker( var_0, var_1, var_2 )
|
|
{
|
|
self.perkpickedspecialist = 0;
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return 0;
|
|
|
|
if ( var_0 == "" )
|
|
return 0;
|
|
|
|
if ( !isai( self ) )
|
|
{
|
|
var_3 = maps\mp\gametypes\_class::getnumabilitycategories();
|
|
var_4 = maps\mp\gametypes\_class::getnumsubability();
|
|
|
|
if ( self getcacplayerdata( "loadouts", self.class_num, "abilitiesPicked", var_1, var_2 ) )
|
|
return 1;
|
|
|
|
for ( var_5 = 0; var_5 < 3; var_5++ )
|
|
{
|
|
var_6 = self getcacplayerdata( "loadouts", self.class_num, "specialistStreaks", var_5 );
|
|
|
|
if ( isdefined( var_6 ) && var_6 != "none" )
|
|
{
|
|
var_7 = maps\mp\_utility::getbaseperkname( var_6 );
|
|
|
|
if ( var_7 == var_0 )
|
|
{
|
|
self.perkpickedspecialist = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_8 = self getcacplayerdata( "loadouts", self.class_num, "specialistBonusStreaks", var_1, var_2 );
|
|
|
|
if ( isdefined( var_8 ) && var_8 )
|
|
{
|
|
var_9 = level.perknamesforgambler[var_1][var_2];
|
|
|
|
if ( var_9 == var_0 )
|
|
{
|
|
self.perkpickedspecialist = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_10 = [];
|
|
|
|
if ( isdefined( self.pers["loadoutPerks"] ) )
|
|
var_10 = common_scripts\utility::array_combine( var_10, self.pers["loadoutPerks"] );
|
|
|
|
foreach ( var_12 in var_10 )
|
|
{
|
|
if ( maps\mp\_utility::getbaseperkname( var_12 ) == var_0 )
|
|
return 1;
|
|
}
|
|
|
|
var_10 = [];
|
|
|
|
if ( isdefined( self.pers["specialistStreaks"] ) )
|
|
var_10 = common_scripts\utility::array_combine( var_10, self.pers["specialistStreaks"] );
|
|
|
|
if ( isdefined( self.pers["specialistBonusStreaks"] ) )
|
|
var_10 = common_scripts\utility::array_combine( var_10, self.pers["specialistBonusStreaks"] );
|
|
|
|
foreach ( var_12 in var_10 )
|
|
{
|
|
if ( maps\mp\_utility::getbaseperkname( var_12 ) == var_0 )
|
|
{
|
|
self.perkpickedspecialist = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
givegamblerchoice( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetGambler" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( !maps\mp\_utility::gameflag( "prematch_done" ) )
|
|
maps\mp\_utility::gameflagwait( "prematch_done" );
|
|
else if ( maps\mp\_utility::gameflag( "prematch_done" ) && self.streaktype != "specialist" )
|
|
self waittill( "giveLoadout" );
|
|
|
|
if ( !isdefined( self.abilitychosen ) )
|
|
self.abilitychosen = 0;
|
|
|
|
if ( !self.abilitychosen )
|
|
{
|
|
var_1 = getrandomability( var_0 );
|
|
self.gamblerability = var_1;
|
|
}
|
|
else
|
|
var_1 = self.gamblerability;
|
|
|
|
maps\mp\_utility::giveperk( var_1.id, 0 );
|
|
|
|
if ( var_1.id == "specialty_hardline" )
|
|
maps\mp\killstreaks\_killstreaks::setstreakcounttonext();
|
|
|
|
if ( showgambler() )
|
|
{
|
|
self playlocalsound( "mp_suitcase_pickup" );
|
|
self setclientomnvar( "ui_gambler_show", var_1.row );
|
|
thread gambleranimwatcher();
|
|
}
|
|
|
|
if ( level.gametype != "infect" )
|
|
self.abilitychosen = 1;
|
|
}
|
|
|
|
showgambler()
|
|
{
|
|
var_0 = 1;
|
|
|
|
if ( !level.ingraceperiod && self.abilitychosen )
|
|
var_0 = 0;
|
|
|
|
if ( !maps\mp\_utility::allowclasschoice() && level.gametype != "infect" )
|
|
var_0 = 0;
|
|
|
|
return var_0;
|
|
}
|
|
|
|
gambleranimwatcher()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetGambler" );
|
|
level endon( "game_ended" );
|
|
self waittill( "luinotifyserver", var_0, var_1 );
|
|
|
|
if ( var_0 == "gambler_anim_complete" )
|
|
self setclientomnvar( "ui_gambler_show", -1 );
|
|
}
|
|
|
|
getrandomability( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_1 = thread sortbyweight( var_0 );
|
|
var_1 = thread setbucketval( var_1 );
|
|
var_2 = randomint( level.abilitymaxval["sum"] );
|
|
var_3 = undefined;
|
|
|
|
foreach ( var_5 in var_1 )
|
|
{
|
|
if ( !var_5.weight || var_5.id == "specialty_gambler" )
|
|
continue;
|
|
|
|
if ( var_5.weight > var_2 )
|
|
{
|
|
var_3 = var_5;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return var_3;
|
|
}
|
|
|
|
sortbyweight( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = [];
|
|
|
|
for ( var_3 = 1; var_3 < var_0.size; var_3++ )
|
|
{
|
|
var_4 = var_0[var_3].weight;
|
|
var_1 = var_0[var_3];
|
|
|
|
for ( var_5 = var_3 - 1; var_5 >= 0 && is_weight_a_less_than_b( var_0[var_5].weight, var_4 ); var_5-- )
|
|
{
|
|
var_2 = var_0[var_5];
|
|
var_0[var_5] = var_1;
|
|
var_0[var_5 + 1] = var_2;
|
|
}
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
is_weight_a_less_than_b( var_0, var_1 )
|
|
{
|
|
return var_0 < var_1;
|
|
}
|
|
|
|
setbucketval( var_0 )
|
|
{
|
|
level.abilitymaxval["sum"] = 0;
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( !var_2.weight )
|
|
continue;
|
|
|
|
level.abilitymaxval["sum"] = level.abilitymaxval["sum"] + var_2.weight;
|
|
var_2.weight = level.abilitymaxval["sum"];
|
|
}
|
|
|
|
return var_0;
|
|
}
|
|
|
|
unsetgambler()
|
|
{
|
|
self notify( "unsetGambler" );
|
|
}
|
|
|
|
setcomexp()
|
|
{
|
|
var_0 = level.comexpfuncs["giveComExpBenefits"];
|
|
self [[ var_0 ]]();
|
|
}
|
|
|
|
unsetcomexp()
|
|
{
|
|
var_0 = level.comexpfuncs["removeComExpBenefits"];
|
|
self [[ var_0 ]]();
|
|
}
|
|
|
|
settagger()
|
|
{
|
|
thread settaggerinternal();
|
|
}
|
|
|
|
settaggerinternal()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetTagger" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "eyesOn" );
|
|
var_0 = self getplayerssightingme();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( level.teambased && var_2.team == self.team )
|
|
continue;
|
|
|
|
if ( isalive( var_2 ) && var_2.sessionstate == "playing" )
|
|
{
|
|
if ( !isdefined( var_2.perkoutlined ) )
|
|
var_2.perkoutlined = 0;
|
|
|
|
if ( !var_2.perkoutlined )
|
|
var_2.perkoutlined = 1;
|
|
|
|
var_2 thread outlinewatcher( self );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
outlinewatcher( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "eyesOff" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
var_1 = 1;
|
|
var_2 = var_0 getplayerssightingme();
|
|
|
|
foreach ( var_4 in var_2 )
|
|
{
|
|
if ( var_4 == self )
|
|
{
|
|
var_1 = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( var_1 )
|
|
{
|
|
self.perkoutlined = 0;
|
|
self notify( "eyesOff" );
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
unsettagger()
|
|
{
|
|
self notify( "unsetTagger" );
|
|
}
|
|
|
|
setpitcher()
|
|
{
|
|
thread setpitcherinternal();
|
|
}
|
|
|
|
setpitcherinternal()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetPitcher" );
|
|
level endon( "game_ended" );
|
|
maps\mp\_utility::_setperk( "specialty_throwback", 0 );
|
|
self setgrenadecookscale( 1.5 );
|
|
|
|
for (;;)
|
|
{
|
|
self setgrenadethrowscale( 1.25 );
|
|
self waittill( "grenade_pullback", var_0 );
|
|
|
|
if ( var_0 == "airdrop_marker_mp" || var_0 == "killstreak_uplink_mp" || var_0 == "deployable_vest_marker_mp" || var_0 == "deployable_weapon_crate_marker_mp" || var_0 == "airdrop_juggernaut_mp" )
|
|
self setgrenadethrowscale( 1 );
|
|
|
|
self waittill( "grenade_fire", var_1, var_2 );
|
|
}
|
|
}
|
|
|
|
unsetpitcher()
|
|
{
|
|
self setgrenadecookscale( 1 );
|
|
self setgrenadethrowscale( 1 );
|
|
maps\mp\_utility::_unsetperk( "specialty_throwback" );
|
|
self notify( "unsetPitcher" );
|
|
}
|
|
|
|
setboom()
|
|
{
|
|
|
|
}
|
|
|
|
setboominternal( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetBoom" );
|
|
level endon( "game_ended" );
|
|
var_0 endon( "death" );
|
|
var_0 endon( "disconnect" );
|
|
common_scripts\utility::waitframe();
|
|
triggerportableradarping( self.origin, var_0 );
|
|
var_0 boomtrackplayers( self.origin );
|
|
}
|
|
|
|
boomtrackplayers( var_0 )
|
|
{
|
|
foreach ( var_2 in level.players )
|
|
{
|
|
if ( maps\mp\_utility::isenemy( var_2 ) && isalive( var_2 ) && !var_2 maps\mp\_utility::_hasperk( "specialty_gpsjammer" ) && distancesquared( var_0, var_2.origin ) <= 490000 )
|
|
var_2.markedbyboomperk[maps\mp\_utility::getuniqueid()] = gettime() + 2000;
|
|
}
|
|
}
|
|
|
|
unsetboom()
|
|
{
|
|
self notify( "unsetBoom" );
|
|
}
|
|
|
|
setsilentkill()
|
|
{
|
|
|
|
}
|
|
|
|
unsetsilentkill()
|
|
{
|
|
|
|
}
|
|
|
|
setbloodrush()
|
|
{
|
|
self.bloodrushregenspeedmod = 1;
|
|
self.bloodrushregenhealthmod = 1;
|
|
}
|
|
|
|
setbloodrushinternal()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetBloodrush" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( !isdefined( self.isjuiced ) || !self.isjuiced )
|
|
{
|
|
self.rushtime = 5;
|
|
thread customjuiced( self.rushtime );
|
|
self.bloodrushregenspeedmod = 0.25;
|
|
self.bloodrushregenhealthmod = 5;
|
|
self notify( "bloodrush_active" );
|
|
}
|
|
|
|
self waittill( "unset_custom_juiced" );
|
|
unsetbloodrush();
|
|
}
|
|
|
|
customjuiced( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "faux_spawn" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_custom_juiced" );
|
|
level endon( "game_ended" );
|
|
self.isjuiced = 1;
|
|
self.movespeedscaler = 1.1;
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
maps\mp\_utility::giveperk( "specialty_fastreload", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_quickdraw", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_stalker", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_fastoffhand", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_fastsprintrecovery", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_quickswap", 0 );
|
|
thread unsetcustomjuicedondeath();
|
|
thread unsetcustomjuicedonride();
|
|
thread unsetcustomjuicedonmatchend();
|
|
var_1 = var_0 * 1000 + gettime();
|
|
|
|
if ( !isai( self ) )
|
|
self setclientdvar( "ui_juiced_end_milliseconds", var_1 );
|
|
|
|
wait( var_0 );
|
|
unsetcustomjuiced();
|
|
}
|
|
|
|
unsetcustomjuiced( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
{
|
|
if ( maps\mp\_utility::isjuggernaut() )
|
|
{
|
|
if ( isdefined( self.juggmovespeedscaler ) )
|
|
self.movespeedscaler = self.juggmovespeedscaler;
|
|
else
|
|
self.movespeedscaler = 0.7;
|
|
}
|
|
else
|
|
{
|
|
self.movespeedscaler = 1;
|
|
|
|
if ( maps\mp\_utility::_hasperk( "specialty_lightweight" ) )
|
|
self.movespeedscaler = maps\mp\_utility::lightweightscalar();
|
|
}
|
|
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
|
|
maps\mp\_utility::_unsetperk( "specialty_fastreload" );
|
|
maps\mp\_utility::_unsetperk( "specialty_quickdraw" );
|
|
maps\mp\_utility::_unsetperk( "specialty_stalker" );
|
|
maps\mp\_utility::_unsetperk( "specialty_fastoffhand" );
|
|
maps\mp\_utility::_unsetperk( "specialty_fastsprintrecovery" );
|
|
maps\mp\_utility::_unsetperk( "specialty_quickswap" );
|
|
|
|
if ( isdefined( self.pers["loadoutPerks"] ) )
|
|
maps\mp\perks\_abilities::giveperksfromknownloadout( self.pers["loadoutPerks"] );
|
|
|
|
self.isjuiced = undefined;
|
|
|
|
if ( !isai( self ) )
|
|
self setclientdvar( "ui_juiced_end_milliseconds", 0 );
|
|
|
|
self notify( "unset_custom_juiced" );
|
|
}
|
|
|
|
unsetcustomjuicedonride()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_custom_juiced" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( maps\mp\_utility::isusingremote() )
|
|
{
|
|
thread unsetcustomjuiced();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
unsetcustomjuicedondeath()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_custom_juiced" );
|
|
common_scripts\utility::waittill_any( "death", "faux_spawn" );
|
|
thread unsetcustomjuiced( 1 );
|
|
}
|
|
|
|
unsetcustomjuicedonmatchend()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_custom_juiced" );
|
|
level common_scripts\utility::waittill_any( "round_end_finished", "game_ended" );
|
|
thread unsetcustomjuiced();
|
|
}
|
|
|
|
regenspeedwatcher()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetBloodrush" );
|
|
level endon( "game_ended" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "bloodrush_active" );
|
|
self.regenspeed = self.bloodrushregenspeedmod;
|
|
break;
|
|
}
|
|
}
|
|
|
|
unsetbloodrush()
|
|
{
|
|
self.bloodrushregenspeedmod = 1;
|
|
self.regenspeed = 1;
|
|
self notify( "unsetBloodrush" );
|
|
}
|
|
|
|
settriggerhappy()
|
|
{
|
|
|
|
}
|
|
|
|
settriggerhappyinternal()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unsetTriggerHappy" );
|
|
level endon( "game_ended" );
|
|
var_0 = self.lastdroppableweapon;
|
|
var_1 = self getweaponammostock( var_0 );
|
|
var_2 = self getweaponammoclip( var_0 );
|
|
self givestartammo( var_0 );
|
|
var_3 = self getweaponammoclip( var_0 );
|
|
var_4 = var_3 - var_2;
|
|
var_5 = var_1 - var_4;
|
|
|
|
if ( var_4 > var_1 )
|
|
{
|
|
self setweaponammoclip( var_0, var_2 + var_1 );
|
|
var_5 = 0;
|
|
}
|
|
|
|
self setweaponammostock( var_0, var_5 );
|
|
self playlocalsound( "ammo_crate_use" );
|
|
self setclientomnvar( "ui_trigger_happy", 1 );
|
|
wait 0.2;
|
|
self setclientomnvar( "ui_trigger_happy", 0 );
|
|
}
|
|
|
|
unsettriggerhappy()
|
|
{
|
|
self setclientomnvar( "ui_trigger_happy", 0 );
|
|
self notify( "unsetTriggerHappy" );
|
|
}
|
|
|
|
setdeadeye()
|
|
{
|
|
self.critchance = 10;
|
|
self.deadeyekillcount = 0;
|
|
}
|
|
|
|
setdeadeyeinternal()
|
|
{
|
|
if ( self.critchance < 50 )
|
|
self.critchance = ( self.deadeyekillcount + 1 ) * 10;
|
|
else
|
|
self.critchance = 50;
|
|
|
|
var_0 = randomint( 100 );
|
|
|
|
if ( var_0 <= self.critchance )
|
|
maps\mp\_utility::giveperk( "specialty_moredamage", 0 );
|
|
}
|
|
|
|
unsetdeadeye()
|
|
{
|
|
if ( maps\mp\_utility::_hasperk( "specialty_moredamage" ) )
|
|
maps\mp\_utility::_unsetperk( "specialty_moredamage" );
|
|
}
|
|
|
|
setincog()
|
|
{
|
|
|
|
}
|
|
|
|
unsetincog()
|
|
{
|
|
|
|
}
|
|
|
|
setblindeye()
|
|
{
|
|
|
|
}
|
|
|
|
unsetblindeye()
|
|
{
|
|
maps\mp\_utility::_unsetperk( "specialty_noplayertarget" );
|
|
self notify( "removed_specialty_noplayertarget" );
|
|
}
|
|
|
|
setquickswap()
|
|
{
|
|
|
|
}
|
|
|
|
unsetquickswap()
|
|
{
|
|
maps\mp\_utility::_unsetperk( "specialty_fastoffhand" );
|
|
}
|
|
|
|
setextraammo()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_extraammo" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( self.gettingloadout )
|
|
self waittill( "giveLoadout" );
|
|
|
|
var_0 = maps\mp\_utility::getvalidextraammoweapons();
|
|
|
|
foreach ( var_2 in var_0 )
|
|
{
|
|
if ( isdefined( var_2 ) && var_2 != "none" )
|
|
self givemaxammo( var_2 );
|
|
}
|
|
}
|
|
|
|
unsetextraammo()
|
|
{
|
|
self notify( "unset_extraammo" );
|
|
}
|
|
|
|
setextraequipment()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_extraequipment" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( self.gettingloadout )
|
|
self waittill( "giveLoadout" );
|
|
|
|
var_0 = self.loadoutperkoffhand;
|
|
|
|
if ( isdefined( var_0 ) && var_0 != "specialty_null" )
|
|
{
|
|
if ( var_0 != "specialty_tacticalinsertion" )
|
|
self setweaponammoclip( var_0, 2 );
|
|
}
|
|
}
|
|
|
|
unsetextraequipment()
|
|
{
|
|
self notify( "unset_extraequipment" );
|
|
}
|
|
|
|
setextradeadly()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_extradeadly" );
|
|
level endon( "game_ended" );
|
|
|
|
if ( self.gettingloadout )
|
|
self waittill( "giveLoadout" );
|
|
|
|
var_0 = self.loadoutperkequipment;
|
|
|
|
if ( isdefined( var_0 ) && var_0 != "specialty_null" )
|
|
self setweaponammoclip( var_0, 2 );
|
|
}
|
|
|
|
unsetextradeadly()
|
|
{
|
|
self notify( "unset_extradeadly" );
|
|
}
|
|
|
|
setfinalstand()
|
|
{
|
|
maps\mp\_utility::giveperk( "specialty_pistoldeath", 0 );
|
|
}
|
|
|
|
unsetfinalstand()
|
|
{
|
|
maps\mp\_utility::_unsetperk( "specialty_pistoldeath" );
|
|
}
|
|
|
|
setcarepackage()
|
|
{
|
|
thread maps\mp\killstreaks\_killstreaks::givekillstreak( "airdrop_assault", 0, 0, self );
|
|
}
|
|
|
|
unsetcarepackage()
|
|
{
|
|
|
|
}
|
|
|
|
setuav()
|
|
{
|
|
thread maps\mp\killstreaks\_killstreaks::givekillstreak( "uav", 0, 0, self );
|
|
}
|
|
|
|
unsetuav()
|
|
{
|
|
|
|
}
|
|
|
|
setstoppingpower()
|
|
{
|
|
maps\mp\_utility::giveperk( "specialty_bulletdamage", 0 );
|
|
thread watchstoppingpowerkill();
|
|
}
|
|
|
|
watchstoppingpowerkill()
|
|
{
|
|
self notify( "watchStoppingPowerKill" );
|
|
self endon( "watchStoppingPowerKill" );
|
|
self endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self waittill( "killed_enemy" );
|
|
unsetstoppingpower();
|
|
}
|
|
|
|
unsetstoppingpower()
|
|
{
|
|
maps\mp\_utility::_unsetperk( "specialty_bulletdamage" );
|
|
self notify( "watchStoppingPowerKill" );
|
|
}
|
|
|
|
setc4death()
|
|
{
|
|
if ( !maps\mp\_utility::_hasperk( "specialty_pistoldeath" ) )
|
|
maps\mp\_utility::giveperk( "specialty_pistoldeath", 0 );
|
|
}
|
|
|
|
unsetc4death()
|
|
{
|
|
if ( maps\mp\_utility::_hasperk( "specialty_pistoldeath" ) )
|
|
maps\mp\_utility::_unsetperk( "specialty_pistoldeath" );
|
|
}
|
|
|
|
setjuiced( var_0 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "faux_spawn" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_juiced" );
|
|
level endon( "game_ended" );
|
|
self.isjuiced = 1;
|
|
self.movespeedscaler = 1.25;
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
maps\mp\_utility::giveperk( "specialty_fastreload", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_quickdraw", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_stalker", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_fastoffhand", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_fastsprintrecovery", 0 );
|
|
maps\mp\_utility::giveperk( "specialty_quickswap", 0 );
|
|
thread unsetjuicedondeath();
|
|
thread unsetjuicedonride();
|
|
thread unsetjuicedonmatchend();
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 10;
|
|
|
|
var_1 = var_0 * 1000 + gettime();
|
|
|
|
if ( !isai( self ) )
|
|
self setclientdvar( "ui_juiced_end_milliseconds", var_1 );
|
|
|
|
wait( var_0 );
|
|
unsetjuiced();
|
|
}
|
|
|
|
unsetjuiced( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
{
|
|
if ( !maps\mp\_utility::is_aliens() )
|
|
{
|
|
|
|
}
|
|
|
|
if ( maps\mp\_utility::isjuggernaut() )
|
|
{
|
|
if ( isdefined( self.juggmovespeedscaler ) )
|
|
self.movespeedscaler = self.juggmovespeedscaler;
|
|
else
|
|
self.movespeedscaler = 0.7;
|
|
}
|
|
else
|
|
{
|
|
self.movespeedscaler = 1;
|
|
|
|
if ( maps\mp\_utility::_hasperk( "specialty_lightweight" ) )
|
|
self.movespeedscaler = maps\mp\_utility::lightweightscalar();
|
|
}
|
|
|
|
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
|
}
|
|
|
|
maps\mp\_utility::_unsetperk( "specialty_fastreload" );
|
|
maps\mp\_utility::_unsetperk( "specialty_quickdraw" );
|
|
maps\mp\_utility::_unsetperk( "specialty_stalker" );
|
|
maps\mp\_utility::_unsetperk( "specialty_fastoffhand" );
|
|
maps\mp\_utility::_unsetperk( "specialty_fastsprintrecovery" );
|
|
maps\mp\_utility::_unsetperk( "specialty_quickswap" );
|
|
|
|
if ( isdefined( self.pers["loadoutPerks"] ) )
|
|
maps\mp\perks\_abilities::giveperksfromknownloadout( self.pers["loadoutPerks"] );
|
|
|
|
self.isjuiced = undefined;
|
|
|
|
if ( !isai( self ) )
|
|
self setclientdvar( "ui_juiced_end_milliseconds", 0 );
|
|
|
|
self notify( "unset_juiced" );
|
|
}
|
|
|
|
unsetjuicedonride()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_juiced" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( maps\mp\_utility::isusingremote() )
|
|
{
|
|
thread unsetjuiced();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
unsetjuicedondeath()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_juiced" );
|
|
common_scripts\utility::waittill_any( "death", "faux_spawn" );
|
|
thread unsetjuiced( 1 );
|
|
}
|
|
|
|
unsetjuicedonmatchend()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_juiced" );
|
|
level common_scripts\utility::waittill_any( "round_end_finished", "game_ended" );
|
|
thread unsetjuiced();
|
|
}
|
|
|
|
hasjuiced()
|
|
{
|
|
return isdefined( self.isjuiced );
|
|
}
|
|
|
|
setcombathigh()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
self endon( "unset_combathigh" );
|
|
level endon( "end_game" );
|
|
self.damageblockedtotal = 0;
|
|
|
|
if ( level.splitscreen )
|
|
{
|
|
var_0 = 56;
|
|
var_1 = 21;
|
|
}
|
|
else
|
|
{
|
|
var_0 = 112;
|
|
var_1 = 32;
|
|
}
|
|
|
|
if ( isdefined( self.juicedtimer ) )
|
|
self.juicedtimer destroy();
|
|
|
|
if ( isdefined( self.juicedicon ) )
|
|
self.juicedicon destroy();
|
|
|
|
self.combathighoverlay = newclienthudelem( self );
|
|
self.combathighoverlay.x = 0;
|
|
self.combathighoverlay.y = 0;
|
|
self.combathighoverlay.alignx = "left";
|
|
self.combathighoverlay.aligny = "top";
|
|
self.combathighoverlay.horzalign = "fullscreen";
|
|
self.combathighoverlay.vertalign = "fullscreen";
|
|
self.combathighoverlay setshader( "combathigh_overlay", 640, 480 );
|
|
self.combathighoverlay.sort = -10;
|
|
self.combathighoverlay.archived = 1;
|
|
self.combathightimer = maps\mp\gametypes\_hud_util::createtimer( "hudsmall", 1.0 );
|
|
self.combathightimer maps\mp\gametypes\_hud_util::setpoint( "CENTER", "CENTER", 0, var_0 );
|
|
self.combathightimer settimer( 10.0 );
|
|
self.combathightimer.color = ( 0.8, 0.8, 0 );
|
|
self.combathightimer.archived = 0;
|
|
self.combathightimer.foreground = 1;
|
|
self.combathighicon = maps\mp\gametypes\_hud_util::createicon( "specialty_painkiller", var_1, var_1 );
|
|
self.combathighicon.alpha = 0;
|
|
self.combathighicon maps\mp\gametypes\_hud_util::setparent( self.combathightimer );
|
|
self.combathighicon maps\mp\gametypes\_hud_util::setpoint( "BOTTOM", "TOP" );
|
|
self.combathighicon.archived = 1;
|
|
self.combathighicon.sort = 1;
|
|
self.combathighicon.foreground = 1;
|
|
self.combathighoverlay.alpha = 0.0;
|
|
self.combathighoverlay fadeovertime( 1.0 );
|
|
self.combathighicon fadeovertime( 1.0 );
|
|
self.combathighoverlay.alpha = 1.0;
|
|
self.combathighicon.alpha = 0.85;
|
|
thread unsetcombathighondeath();
|
|
thread unsetcombathighonride();
|
|
wait 8;
|
|
self.combathighicon fadeovertime( 2.0 );
|
|
self.combathighicon.alpha = 0.0;
|
|
self.combathighoverlay fadeovertime( 2.0 );
|
|
self.combathighoverlay.alpha = 0.0;
|
|
self.combathightimer fadeovertime( 2.0 );
|
|
self.combathightimer.alpha = 0.0;
|
|
wait 2;
|
|
self.damageblockedtotal = undefined;
|
|
maps\mp\_utility::_unsetperk( "specialty_combathigh" );
|
|
}
|
|
|
|
unsetcombathighondeath()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_combathigh" );
|
|
self waittill( "death" );
|
|
thread maps\mp\_utility::_unsetperk( "specialty_combathigh" );
|
|
}
|
|
|
|
unsetcombathighonride()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "unset_combathigh" );
|
|
|
|
for (;;)
|
|
{
|
|
wait 0.05;
|
|
|
|
if ( maps\mp\_utility::isusingremote() )
|
|
{
|
|
thread maps\mp\_utility::_unsetperk( "specialty_combathigh" );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
unsetcombathigh()
|
|
{
|
|
self notify( "unset_combathigh" );
|
|
self.combathighoverlay destroy();
|
|
self.combathighicon destroy();
|
|
self.combathightimer destroy();
|
|
}
|
|
|
|
setlightarmor( var_0 )
|
|
{
|
|
self notify( "give_light_armor" );
|
|
|
|
if ( isdefined( self.lightarmorhp ) )
|
|
unsetlightarmor();
|
|
|
|
thread removelightarmorondeath();
|
|
thread removelightarmoronmatchend();
|
|
self.lightarmorhp = 150;
|
|
|
|
if ( isdefined( var_0 ) )
|
|
self.lightarmorhp = var_0;
|
|
|
|
if ( isplayer( self ) )
|
|
{
|
|
self setclientomnvar( "ui_light_armor", 1 );
|
|
maps\mp\_utility::_setnameplatematerial( "player_name_bg_green_vest", "player_name_bg_red_vest" );
|
|
}
|
|
}
|
|
|
|
removelightarmorondeath()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "give_light_armor" );
|
|
self endon( "remove_light_armor" );
|
|
self waittill( "death" );
|
|
unsetlightarmor();
|
|
}
|
|
|
|
unsetlightarmor()
|
|
{
|
|
self.lightarmorhp = undefined;
|
|
|
|
if ( isplayer( self ) )
|
|
{
|
|
self setclientomnvar( "ui_light_armor", 0 );
|
|
maps\mp\_utility::_restorepreviousnameplatematerial();
|
|
}
|
|
|
|
self notify( "remove_light_armor" );
|
|
}
|
|
|
|
removelightarmoronmatchend()
|
|
{
|
|
self endon( "disconnect" );
|
|
self endon( "remove_light_armor" );
|
|
level common_scripts\utility::waittill_any( "round_end_finished", "game_ended" );
|
|
thread unsetlightarmor();
|
|
}
|
|
|
|
haslightarmor()
|
|
{
|
|
return isdefined( self.lightarmorhp ) && self.lightarmorhp > 0;
|
|
}
|
|
|
|
hasheavyarmor( var_0 )
|
|
{
|
|
return isdefined( var_0.heavyarmorhp ) && var_0.heavyarmorhp > 0;
|
|
}
|
|
|
|
setheavyarmor( var_0 )
|
|
{
|
|
if ( isdefined( var_0 ) )
|
|
self.heavyarmorhp = var_0;
|
|
}
|
|
|
|
setrevenge()
|
|
{
|
|
self notify( "stopRevenge" );
|
|
wait 0.05;
|
|
|
|
if ( !isdefined( self.lastkilledby ) )
|
|
return;
|
|
|
|
if ( level.teambased && self.team == self.lastkilledby.team )
|
|
return;
|
|
|
|
var_0 = spawnstruct();
|
|
var_0.showto = self;
|
|
var_0.icon = "compassping_revenge";
|
|
var_0.offset = ( 0, 0, 64 );
|
|
var_0.width = 10;
|
|
var_0.height = 10;
|
|
var_0.archived = 0;
|
|
var_0.delay = 1.5;
|
|
var_0.constantsize = 0;
|
|
var_0.pintoscreenedge = 1;
|
|
var_0.fadeoutpinnedicon = 0;
|
|
var_0.is3d = 0;
|
|
self.revengeparams = var_0;
|
|
self.lastkilledby maps\mp\_entityheadicons::setheadicon( var_0.showto, var_0.icon, var_0.offset, var_0.width, var_0.height, var_0.archived, var_0.delay, var_0.constantsize, var_0.pintoscreenedge, var_0.fadeoutpinnedicon, var_0.is3d );
|
|
thread watchrevengedeath();
|
|
thread watchrevengekill();
|
|
thread watchrevengedisconnected();
|
|
thread watchrevengevictimdisconnected();
|
|
thread watchstoprevenge();
|
|
}
|
|
|
|
watchrevengedeath()
|
|
{
|
|
self endon( "stopRevenge" );
|
|
self endon( "disconnect" );
|
|
var_0 = self.lastkilledby;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 waittill( "spawned_player" );
|
|
var_0 maps\mp\_entityheadicons::setheadicon( self.revengeparams.showto, self.revengeparams.icon, self.revengeparams.offset, self.revengeparams.width, self.revengeparams.height, self.revengeparams.archived, self.revengeparams.delay, self.revengeparams.constantsize, self.revengeparams.pintoscreenedge, self.revengeparams.fadeoutpinnedicon, self.revengeparams.is3d );
|
|
}
|
|
}
|
|
|
|
watchrevengekill()
|
|
{
|
|
self endon( "stopRevenge" );
|
|
self waittill( "killed_enemy" );
|
|
self notify( "stopRevenge" );
|
|
}
|
|
|
|
watchrevengedisconnected()
|
|
{
|
|
self endon( "stopRevenge" );
|
|
self.lastkilledby waittill( "disconnect" );
|
|
self notify( "stopRevenge" );
|
|
}
|
|
|
|
watchstoprevenge()
|
|
{
|
|
var_0 = self.lastkilledby;
|
|
self waittill( "stopRevenge" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
foreach ( var_3, var_2 in var_0.entityheadicons )
|
|
{
|
|
if ( !isdefined( var_2 ) )
|
|
continue;
|
|
|
|
var_2 destroy();
|
|
}
|
|
}
|
|
|
|
watchrevengevictimdisconnected()
|
|
{
|
|
var_0 = self.objidfriendly;
|
|
var_1 = self.lastkilledby;
|
|
var_1 endon( "disconnect" );
|
|
level endon( "game_ended" );
|
|
self endon( "stopRevenge" );
|
|
self waittill( "disconnect" );
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
return;
|
|
|
|
foreach ( var_4, var_3 in var_1.entityheadicons )
|
|
{
|
|
if ( !isdefined( var_3 ) )
|
|
continue;
|
|
|
|
var_3 destroy();
|
|
}
|
|
}
|
|
|
|
unsetrevenge()
|
|
{
|
|
self notify( "stopRevenge" );
|
|
}
|