Files
IL-GSC/MW3/PC/MP/maps/mp/_utility.gsc
InfinityLoader d559c1d414 Added MW3 Scripts
2023-10-27 03:47:01 -04:00

3876 lines
68 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_utility.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: PC
* Function Count: 230
* Decompile Time: 4048 ms
* Timestamp: 10/27/2023 2:15:21 AM
*******************************************************************/
//Function Number: 1
exploder_sound()
{
if(isdefined(self.script_delay))
{
wait self.script_delay;
}
self playsound(level.scr_sound[self.script_sound]);
}
//Function Number: 2
_beginlocationselection(param_00,param_01,param_02,param_03)
{
self setclientdvar("ui_selecting_location","1");
self beginlocationselection(param_01,param_02,param_03);
self.selectinglocation = 1;
self setblurforplayer(10.3,0.3);
thread endselectiononaction("cancel_location");
thread endselectiononaction("death");
thread endselectiononaction("disconnect");
thread endselectiononaction("used");
self endon("stop_location_selection");
thread endselectiononendgame();
thread endselectiononemp();
if(isdefined(param_00) && self.team != "spectator")
{
if(isdefined(self.streakmsg))
{
self.streakmsg destroy();
}
if(self issplitscreenplayer())
{
self.streakmsg = maps\mp\gametypes\_hud_util::createfontstring("hudbig",0.65);
self.streakmsg maps\mp\gametypes\_hud_util::setpoint("CENTER","CENTER",0,-98);
}
else
{
self.streakmsg = maps\mp\gametypes\_hud_util::createfontstring("bigfixed",0.8);
self.streakmsg maps\mp\gametypes\_hud_util::setpoint("CENTER","CENTER",0,-190);
}
var_04 = tablelookupistring("mp/killstreakTable.csv",1,param_00,2);
self.streakmsg settext(var_04);
}
}
//Function Number: 3
stoplocationselection(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "generic";
}
if(!param_00)
{
self setblurforplayer(0,0.3);
self endlocationselection();
self.selectinglocation = undefined;
if(isdefined(self.streakmsg))
{
self.streakmsg destroy();
}
}
self notify("stop_location_selection",param_01);
}
//Function Number: 4
endselectiononemp()
{
self endon("stop_location_selection");
for(;;)
{
level waittill("emp_update");
if(!isemped())
{
continue;
}
thread stoplocationselection(0,"emp");
}
}
//Function Number: 5
endselectiononaction(param_00)
{
self endon("stop_location_selection");
self waittill(param_00);
thread stoplocationselection(param_00 == "disconnect",param_00);
}
//Function Number: 6
endselectiononendgame()
{
self endon("stop_location_selection");
level waittill("game_ended");
thread stoplocationselection(0,"end_game");
}
//Function Number: 7
isattachment(param_00)
{
var_01 = tablelookup("mp/attachmentTable.csv",4,param_00,0);
if(isdefined(var_01) && var_01 != "")
{
return 1;
}
return 0;
}
//Function Number: 8
getattachmenttype(param_00)
{
var_01 = tablelookup("mp/attachmentTable.csv",4,param_00,2);
return var_01;
}
//Function Number: 9
delaythread(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
thread delaythread_proc(param_01,param_00,param_02,param_03,param_04,param_05,param_06);
}
//Function Number: 10
delaythread_proc(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
wait param_01;
if(!isdefined(param_02))
{
thread [[ param_00 ]]();
return;
}
if(!isdefined(param_03))
{
thread [[ param_00 ]](param_02);
return;
}
if(!isdefined(param_04))
{
thread [[ param_00 ]](param_02,param_03);
return;
}
if(!isdefined(param_05))
{
thread [[ param_00 ]](param_02,param_03,param_04);
return;
}
if(!isdefined(param_06))
{
thread [[ param_00 ]](param_02,param_03,param_04,param_05);
return;
}
thread [[ param_00 ]](param_02,param_03,param_04,param_05,param_06);
}
//Function Number: 11
getplant()
{
var_00 = self.origin + (0,0,10);
var_01 = 11;
var_02 = anglestoforward(self.angles);
var_02 = var_02 * var_01;
var_03[0] = var_00 + var_02;
var_04 = bullettrace(var_7B[0],var_7B[0] + (0,0,-18),0,undefined);
if(var_04["fraction"] < 1)
{
var_05 = spawnstruct();
var_05.origin = var_04["position"];
var_05.angles = orienttonormal(var_04["normal"]);
return var_05;
}
var_05 = bullettrace(var_04[1],var_04[1] + (0,0,-18),0,undefined);
if(var_05["fraction"] < 1)
{
var_05 = spawnstruct();
var_05.origin = var_04["position"];
var_05.angles = orienttonormal(var_04["normal"]);
return var_05;
}
var_04[2] = var_02 + (16,16,0);
var_04[3] = var_02 + (16,-16,0);
var_04[4] = var_02 + (-16,-16,0);
var_04[5] = var_02 + (-16,16,0);
var_06 = undefined;
var_07 = undefined;
for(var_08 = 0;var_08 < var_04.size;var_08++ = var_7B[1])
{
var_05 = bullettrace(var_04[var_08],var_04[var_08] + (0,0,-1000),0,undefined);
if(!isdefined(var_06) || var_05["fraction"] < var_06)
{
var_06 = var_05["fraction"];
var_07 = var_05["position"];
}
}
if(var_06 == 1)
{
var_07 = self.origin;
}
var_05 = spawnstruct();
var_08.origin = var_06;
var_08.angles = orienttonormal(var_04["normal"]);
return var_08;
}
//Function Number: 12
orienttonormal(param_00)
{
var_01 = (param_00[0],param_00[1],0);
var_02 = length(var_01);
if(!var_02)
{
return (0,0,0);
}
var_03 = vectornormalize(var_01);
var_04 = param_00[2] * -1;
var_05 = (var_03[0] * var_04,var_03[1] * var_04,var_02);
var_06 = vectortoangles(var_05);
return var_06;
}
//Function Number: 13
deleteplacedentity(param_00)
{
var_01 = getentarray(param_00,"classname");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_01[var_02] delete();
}
}
//Function Number: 14
playsoundonplayers(param_00,param_01,param_02)
{
if(level.splitscreen)
{
if(isdefined(level.players[0]))
{
level.players[0] playlocalsound(param_00);
return;
}
return;
}
if(isdefined(param_01))
{
if(isdefined(param_02))
{
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
if(var_04 issplitscreenplayer() && !var_04 issplitscreenplayerprimary())
{
continue;
}
if(isdefined(var_04.pers["team"]) && var_04.pers["team"] == param_01 && !isexcluded(var_04,param_02))
{
var_04 playlocalsound(param_00);
}
}
return;
}
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
if(var_04 issplitscreenplayer() && !var_04 issplitscreenplayerprimary())
{
continue;
}
if(isdefined(var_04.pers["team"]) && var_04.pers["team"] == param_01)
{
var_04 playlocalsound(param_00);
}
}
return;
}
if(isdefined(var_03))
{
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
if(level.players[var_03] issplitscreenplayer() && !level.players[var_03] issplitscreenplayerprimary())
{
continue;
}
if(!isexcluded(level.players[var_03],param_02))
{
level.players[var_03] playlocalsound(param_00);
}
}
return;
}
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
if(level.players[var_03] issplitscreenplayer() && !level.players[var_03] issplitscreenplayerprimary())
{
continue;
}
level.players[var_03] playlocalsound(param_00);
}
}
//Function Number: 15
sortlowermessages()
{
for(var_00 = 1;var_00 < self.lowermessages.size;var_00++)
{
var_01 = self.lowermessages[var_00];
var_02 = var_01.priority;
for(var_03 = var_00 - 1;var_03 >= 0 && var_02 > self.lowermessages[var_03].priority;var_03--)
{
self.lowermessages[var_03 + 1] = self.lowermessages[var_03];
}
self.lowermessages[var_03 + 1] = var_01;
}
}
//Function Number: 16
addlowermessage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
var_09 = undefined;
foreach(var_0B in self.lowermessages)
{
if(var_0B.name == param_00)
{
if(var_0B.text == param_01 && var_0B.priority == param_03)
{
return;
}
var_09 = var_0B;
break;
}
}
if(!isdefined(var_09))
{
var_09 = spawnstruct();
self.lowermessages[self.lowermessages.size] = var_09;
}
var_09.name = param_00;
var_09.text = param_01;
var_09.time = param_02;
var_09.addtime = gettime();
var_09.priority = param_03;
var_09.showtimer = param_04;
var_09.shouldfade = param_05;
var_09.fadetoalpha = param_06;
var_09.fadetoalphatime = param_07;
var_09.hidewhenindemo = param_08;
sortlowermessages();
}
//Function Number: 17
removelowermessage(param_00)
{
if(isdefined(self.lowermessages))
{
for(var_01 = self.lowermessages.size;var_01 > 0;var_01--)
{
if(self.lowermessages[var_01 - 1].name != param_00)
{
continue;
}
var_02 = self.lowermessages[var_01 - 1];
for(var_03 = var_01;var_03 < self.lowermessages.size;var_03++)
{
if(isdefined(self.lowermessages[var_03]))
{
self.lowermessages[var_03 - 1] = self.lowermessages[var_03];
}
}
self.lowermessages[self.lowermessages.size - 1] = undefined;
}
sortlowermessages();
}
}
//Function Number: 18
getlowermessage()
{
return self.lowermessages[0];
}
//Function Number: 19
setlowermessage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
if(!isdefined(param_03))
{
param_03 = 1;
}
if(!isdefined(param_02))
{
param_02 = 0;
}
if(!isdefined(param_04))
{
param_04 = 0;
}
if(!isdefined(param_05))
{
param_05 = 0;
}
if(!isdefined(param_06))
{
param_06 = 0.85;
}
if(!isdefined(param_07))
{
param_07 = 3;
}
if(!isdefined(param_08))
{
param_08 = 0;
}
addlowermessage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
updatelowermessage();
}
//Function Number: 20
updatelowermessage()
{
var_00 = getlowermessage();
if(!isdefined(var_00))
{
self.lowermessage.alpha = 0;
self.lowertimer.alpha = 0;
return;
}
self.lowermessage settext(var_00.text);
self.lowermessage.alpha = 0.85;
self.lowertimer.alpha = 1;
self.lowermessage.hidewhenindemo = var_00.hidewhenindemo;
if(var_00.shouldfade)
{
self.lowermessage fadeovertime(min(var_00.fadetoalphatime,60));
self.lowermessage.alpha = var_00.fadetoalpha;
}
if(var_00.time > 0 && var_00.showtimer)
{
self.lowertimer settimer(max(var_00.time - gettime() - var_00.addtime / 1000,0.1));
return;
}
if(var_00.time > 0 && !var_00.showtimer)
{
self.lowertimer settext("");
self.lowermessage fadeovertime(min(var_00.time,60));
self.lowermessage.alpha = 0;
thread clearondeath(var_00);
thread clearafterfade(var_00);
return;
}
self.lowertimer settext("");
}
//Function Number: 21
clearondeath(param_00)
{
self notify("message_cleared");
self endon("message_cleared");
self endon("disconnect");
level endon("game_ended");
self waittill("death");
clearlowermessage(param_00.name);
}
//Function Number: 22
clearafterfade(param_00)
{
wait param_00.time;
clearlowermessage(param_00.name);
self notify("message_cleared");
}
//Function Number: 23
clearlowermessage(param_00)
{
removelowermessage(param_00);
updatelowermessage();
}
//Function Number: 24
clearlowermessages()
{
for(var_00 = 0;var_00 < self.lowermessages.size;var_00++)
{
self.lowermessages[var_00] = undefined;
}
if(!isdefined(self.lowermessage))
{
return;
}
updatelowermessage();
}
//Function Number: 25
printonteam(param_00,param_01)
{
foreach(var_03 in level.players)
{
if(var_03.team != param_01)
{
continue;
}
var_03 iprintln(param_00);
}
}
//Function Number: 26
printboldonteam(param_00,param_01)
{
for(var_02 = 0;var_02 < level.players.size;var_02++)
{
var_03 = level.players[var_02];
if(isdefined(var_03.pers["team"]) && var_03.pers["team"] == param_01)
{
var_03 iprintlnbold(param_00);
}
}
}
//Function Number: 27
printboldonteamarg(param_00,param_01,param_02)
{
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
if(isdefined(var_04.pers["team"]) && var_04.pers["team"] == param_01)
{
var_04 iprintlnbold(param_00,param_02);
}
}
}
//Function Number: 28
printonteamarg(param_00,param_01,param_02)
{
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
if(isdefined(var_04.pers["team"]) && var_04.pers["team"] == param_01)
{
var_04 iprintln(param_00,param_02);
}
}
}
//Function Number: 29
printonplayers(param_00,param_01)
{
var_02 = level.players;
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
if(isdefined(param_01))
{
if(isdefined(var_02[var_03].pers["team"]) && var_02[var_03].pers["team"] == param_01)
{
var_02[var_03] iprintln(param_00);
}
continue;
}
var_02[var_03] iprintln(param_00);
}
}
//Function Number: 30
printandsoundoneveryone(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = isdefined(param_04);
var_08 = 0;
if(isdefined(param_05))
{
var_08 = 1;
}
if(level.splitscreen || !var_07)
{
for(var_09 = 0;var_09 < level.players.size;var_09++)
{
var_0A = level.players[var_09];
var_0B = var_0A.pers["team"];
if(isdefined(var_0B))
{
if(var_0B == param_00 && isdefined(param_02))
{
var_0A iprintln(param_02,param_06);
continue;
}
if(var_0B == param_01 && isdefined(param_03))
{
var_0A iprintln(param_03,param_06);
}
}
}
if(var_07)
{
level.players[0] playlocalsound(param_04);
return;
}
return;
}
if(var_0B)
{
for(var_09 = 0;var_09 < level.players.size;var_09++)
{
var_0A = level.players[var_09];
var_0B = var_0A.pers["team"];
if(isdefined(var_0B))
{
if(var_0B == param_00)
{
if(isdefined(param_02))
{
var_0A iprintln(param_02,param_06);
}
var_0A playlocalsound(param_04);
continue;
}
if(var_0B == param_01)
{
if(isdefined(param_03))
{
var_0A iprintln(param_03,param_06);
}
var_0A playlocalsound(param_05);
}
}
}
return;
}
for(var_09 = 0;var_09 < level.players.size;var_09++)
{
var_0A = level.players[var_09];
var_0B = var_0A.pers["team"];
if(isdefined(var_0B))
{
if(var_0B == param_00)
{
if(isdefined(param_02))
{
var_0A iprintln(param_02,param_06);
}
var_0A playlocalsound(param_04);
continue;
}
if(var_0B == param_01)
{
if(isdefined(param_03))
{
var_0A iprintln(param_03,param_06);
}
}
}
}
}
//Function Number: 31
printandsoundonteam(param_00,param_01,param_02)
{
foreach(var_04 in level.players)
{
if(var_04.team != param_00)
{
continue;
}
var_04 printandsoundonplayer(param_01,param_02);
}
}
//Function Number: 32
printandsoundonplayer(param_00,param_01)
{
self iprintln(param_00);
self playlocalsound(param_01);
}
//Function Number: 33
_playlocalsound(param_00)
{
if(level.splitscreen && self getentitynumber() != 0)
{
return;
}
self playlocalsound(param_00);
}
//Function Number: 34
dvarintvalue(param_00,param_01,param_02,param_03)
{
param_00 = "scr_" + level.gametype + "_" + param_00;
if(getdvar(param_00) == "")
{
setdvar(param_00,param_01);
return param_01;
}
var_04 = getdvarint(param_00);
if(var_04 > param_03)
{
var_04 = param_03;
}
else if(var_04 < param_02)
{
var_04 = param_02;
}
else
{
return var_04;
}
setdvar(param_00,var_04);
return var_04;
}
//Function Number: 35
dvarfloatvalue(param_00,param_01,param_02,param_03)
{
param_00 = "scr_" + level.gametype + "_" + param_00;
if(getdvar(param_00) == "")
{
setdvar(param_00,param_01);
return param_01;
}
var_04 = getdvarfloat(param_00);
if(var_04 > param_03)
{
var_04 = param_03;
}
else if(var_04 < param_02)
{
var_04 = param_02;
}
else
{
return var_04;
}
setdvar(param_00,var_04);
return var_04;
}
//Function Number: 36
play_sound_on_tag(param_00,param_01)
{
if(isdefined(param_01))
{
playsoundatpos(self gettagorigin(param_01),param_00);
return;
}
playsoundatpos(self.origin,param_00);
}
//Function Number: 37
getotherteam(param_00)
{
if(param_00 == "allies")
{
return "axis";
}
else if(param_00 == "axis")
{
return "allies";
}
}
//Function Number: 38
wait_endon(param_00,param_01,param_02,param_03)
{
self endon(param_01);
if(isdefined(param_02))
{
self endon(param_02);
}
if(isdefined(param_03))
{
self endon(param_03);
}
wait param_00;
}
//Function Number: 39
initpersstat(param_00)
{
if(!isdefined(self.pers[param_00]))
{
self.pers[param_00] = 0;
}
}
//Function Number: 40
getpersstat(param_00)
{
return self.pers[param_00];
}
//Function Number: 41
incpersstat(param_00,param_01)
{
self.pers[param_00] = self.pers[param_00] + param_01;
maps\mp\gametypes\_persistance::statadd(param_00,param_01);
}
//Function Number: 42
setpersstat(param_00,param_01)
{
self.pers[param_00] = param_01;
}
//Function Number: 43
initplayerstat(param_00,param_01)
{
if(!isdefined(self.stats["stats_" + param_00]))
{
if(!isdefined(param_01))
{
param_01 = 0;
}
self.stats["stats_" + param_00] = spawnstruct();
self.stats["stats_" + param_00].value = param_01;
}
}
//Function Number: 44
incplayerstat(param_00,param_01)
{
var_02 = self.stats["stats_" + param_00];
var_02.value = var_02.value + param_01;
}
//Function Number: 45
setplayerstat(param_00,param_01)
{
var_02 = self.stats["stats_" + param_00];
var_02.value = param_01;
var_02.time = gettime();
}
//Function Number: 46
getplayerstat(param_00)
{
return self.stats["stats_" + param_00].value;
}
//Function Number: 47
getplayerstattime(param_00)
{
return self.stats["stats_" + param_00].time;
}
//Function Number: 48
setplayerstatifgreater(param_00,param_01)
{
var_02 = getplayerstat(param_00);
if(param_01 > var_02)
{
setplayerstat(param_00,param_01);
}
}
//Function Number: 49
setplayerstatiflower(param_00,param_01)
{
var_02 = getplayerstat(param_00);
if(param_01 < var_02)
{
setplayerstat(param_00,param_01);
}
}
//Function Number: 50
updatepersratio(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_persistance::statget(param_01);
var_04 = maps\mp\gametypes\_persistance::statget(param_02);
if(var_04 == 0)
{
var_04 = 1;
}
maps\mp\gametypes\_persistance::statset(param_00,int(var_03 * 1000 / var_04));
}
//Function Number: 51
updatepersratiobuffered(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_persistance::statgetbuffered(param_01);
var_04 = maps\mp\gametypes\_persistance::statgetbuffered(param_02);
if(var_04 == 0)
{
var_04 = 1;
}
maps\mp\gametypes\_persistance::statsetbuffered(param_00,int(var_03 * 1000 / var_04));
}
//Function Number: 52
waittillslowprocessallowed(param_00)
{
if(level.lastslowprocessframe == gettime())
{
if(isdefined(param_00) && param_00)
{
while(level.lastslowprocessframe == gettime())
{
wait 0.05;
}
}
else
{
wait 0.05;
if(level.lastslowprocessframe == gettime())
{
wait 0.05;
if(level.lastslowprocessframe == gettime())
{
wait 0.05;
if(level.lastslowprocessframe == gettime())
{
wait 0.05;
}
}
}
}
}
level.lastslowprocessframe = gettime();
}
//Function Number: 53
waitfortimeornotify(param_00,param_01)
{
self endon(param_01);
wait param_00;
}
//Function Number: 54
isexcluded(param_00,param_01)
{
for(var_02 = 0;var_02 < param_01.size;var_02++)
{
if(param_00 == param_01[var_02])
{
return 1;
}
}
return 0;
}
//Function Number: 55
leaderdialog(param_00,param_01,param_02,param_03)
{
if(level.splitscreen)
{
return;
}
if(param_00 == "null")
{
return;
}
if(!isdefined(param_01))
{
leaderdialogbothteams(param_00,"allies",param_00,"axis",param_02,param_03);
return;
}
if(level.splitscreen)
{
if(level.players.size)
{
level.players[0] leaderdialogonplayer(param_00,param_02);
}
return;
}
if(isdefined(param_03))
{
for(var_04 = 0;var_04 < level.players.size;var_04++)
{
var_05 = level.players[var_04];
if(isdefined(var_05.pers["team"]) && var_05.pers["team"] == param_01 && !isexcluded(var_05,param_03))
{
if(var_05 issplitscreenplayer() && !var_05 issplitscreenplayerprimary())
{
continue;
}
var_05 leaderdialogonplayer(param_00,param_02);
}
}
return;
}
for(var_04 = 0;var_04 < level.players.size;var_04++)
{
var_05 = level.players[var_04];
if(isdefined(var_05.pers["team"]) && var_05.pers["team"] == param_01)
{
if(var_05 issplitscreenplayer() && !var_05 issplitscreenplayerprimary())
{
continue;
}
var_05 leaderdialogonplayer(param_00,param_02);
}
}
}
//Function Number: 56
leaderdialogbothteams(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(level.splitscreen)
{
return;
}
if(level.splitscreen)
{
if(level.players.size)
{
level.players[0] leaderdialogonplayer(param_00,param_04);
}
return;
}
if(isdefined(param_05))
{
for(var_06 = 0;var_06 < level.players.size;var_06++)
{
var_07 = level.players[var_06];
var_08 = var_07.pers["team"];
if(!isdefined(var_08))
{
continue;
}
if(isexcluded(var_07,param_05))
{
continue;
}
if(var_07 issplitscreenplayer() && !var_07 issplitscreenplayerprimary())
{
continue;
}
if(var_08 == param_01)
{
var_07 leaderdialogonplayer(param_00,param_04);
continue;
}
if(var_08 == param_03)
{
var_07 leaderdialogonplayer(param_02,param_04);
}
}
return;
}
for(var_06 = 0;var_06 < level.players.size;var_06++)
{
var_07 = level.players[var_06];
var_08 = var_07.pers["team"];
if(!isdefined(var_08))
{
continue;
}
if(var_07 issplitscreenplayer() && !var_07 issplitscreenplayerprimary())
{
continue;
}
if(var_08 == param_01)
{
var_07 leaderdialogonplayer(param_00,param_04);
continue;
}
if(var_08 == param_03)
{
var_07 leaderdialogonplayer(param_02,param_04);
}
}
}
//Function Number: 57
leaderdialogonplayers(param_00,param_01,param_02)
{
foreach(var_04 in param_01)
{
var_04 leaderdialogonplayer(param_00,param_02);
}
}
//Function Number: 58
leaderdialogonplayer(param_00,param_01,param_02)
{
if(!isdefined(param_02))
{
param_02 = 0;
}
var_03 = self.pers["team"];
if(level.splitscreen)
{
return;
}
if(!isdefined(var_03))
{
return;
}
if(var_03 != "allies" && var_03 != "axis")
{
return;
}
if(isdefined(param_01))
{
if(self.leaderdialoggroup == param_01)
{
if(param_02)
{
self stoplocalsound(self.leaderdialogactive);
thread playleaderdialogonplayer(param_00,var_03);
}
return;
}
var_04 = isdefined(self.leaderdialoggroups[param_01]);
self.leaderdialoggroups[param_01] = param_00;
param_00 = param_01;
if(var_04)
{
return;
}
}
if(self.leaderdialogactive == "")
{
thread playleaderdialogonplayer(param_00,var_03);
return;
}
self.leaderdialogqueue[self.leaderdialogqueue.size] = param_00;
}
//Function Number: 59
playleaderdialogonplayer(param_00,param_01)
{
self endon("disconnect");
self notify("playLeaderDialogOnPlayer");
self endon("playLeaderDialogOnPlayer");
if(isdefined(self.leaderdialoggroups[param_00]))
{
var_02 = param_00;
param_00 = self.leaderdialoggroups[var_02];
self.leaderdialoggroups[var_02] = undefined;
self.leaderdialoggroup = var_02;
}
if(issubstr(game["dialog"][param_00],"null"))
{
return;
}
self.leaderdialogactive = game["voice"][param_01] + game["dialog"][param_00];
self playlocalsound(game["voice"][param_01] + game["dialog"][param_00]);
wait 3;
self.leaderdialoglocalsound = "";
self.leaderdialogactive = "";
self.leaderdialoggroup = "";
if(self.leaderdialogqueue.size > 0)
{
var_03 = self.leaderdialogqueue[0];
for(var_04 = 1;var_04 < self.leaderdialogqueue.size;var_04++)
{
self.leaderdialogqueue[var_04 - 1] = self.leaderdialogqueue[var_04];
}
self.leaderdialogqueue[var_04 - 1] = undefined;
thread playleaderdialogonplayer(var_03,param_01);
}
}
//Function Number: 60
updatemainmenu()
{
if(self.pers["team"] == "spectator")
{
self setclientdvar("g_scriptMainMenu",game["menu_team"]);
return;
}
self setclientdvar("g_scriptMainMenu",game["menu_class_" + self.pers["team"]]);
}
//Function Number: 61
updateobjectivetext()
{
if(self.pers["team"] == "spectator")
{
self setclientdvar("cg_objectiveText","");
return;
}
if(getwatcheddvar("scorelimit") > 0 && !isobjectivebased())
{
if(level.splitscreen)
{
self setclientdvar("cg_objectiveText",getobjectivescoretext(self.pers["team"]));
return;
}
self setclientdvar("cg_objectiveText",getobjectivescoretext(self.pers["team"]),getwatcheddvar("scorelimit"));
return;
}
self setclientdvar("cg_objectiveText",getobjectivetext(self.pers["team"]));
}
//Function Number: 62
setobjectivetext(param_00,param_01)
{
game["strings"]["objective_" + param_00] = param_01;
precachestring(param_01);
}
//Function Number: 63
setobjectivescoretext(param_00,param_01)
{
game["strings"]["objective_score_" + param_00] = param_01;
precachestring(param_01);
}
//Function Number: 64
setobjectivehinttext(param_00,param_01)
{
game["strings"]["objective_hint_" + param_00] = param_01;
precachestring(param_01);
}
//Function Number: 65
getobjectivetext(param_00)
{
return game["strings"]["objective_" + param_00];
}
//Function Number: 66
getobjectivescoretext(param_00)
{
return game["strings"]["objective_score_" + param_00];
}
//Function Number: 67
getobjectivehinttext(param_00)
{
return game["strings"]["objective_hint_" + param_00];
}
//Function Number: 68
gettimepassed()
{
if(!isdefined(level.starttime) || !isdefined(level.discardtime))
{
return 0;
}
if(level.timerstopped)
{
return level.timerpausetime - level.starttime - level.discardtime;
}
return gettime() - level.starttime - level.discardtime;
}
//Function Number: 69
getsecondspassed()
{
return gettimepassed() / 1000;
}
//Function Number: 70
getminutespassed()
{
return getsecondspassed() / 60;
}
//Function Number: 71
clearkillcamstate()
{
self.forcespectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;
}
//Function Number: 72
isinkillcam()
{
return self.forcespectatorclient != -1 || self.killcamentity != -1;
}
//Function Number: 73
isvalidclass(param_00)
{
return isdefined(param_00) && param_00 != "";
}
//Function Number: 74
getvalueinrange(param_00,param_01,param_02)
{
if(param_00 > param_02)
{
return param_02;
}
if(param_00 < param_01)
{
return param_01;
}
return param_00;
}
//Function Number: 75
waitfortimeornotifies(param_00)
{
var_01 = gettime();
var_02 = gettime() - var_01 / 1000;
if(var_02 < param_00)
{
wait param_00 - var_02;
return param_00;
}
return var_02;
}
//Function Number: 76
closemenus()
{
self closepopupmenu();
self closeingamemenu();
}
//Function Number: 77
logxpgains()
{
if(!isdefined(self.xpgains))
{
return;
}
var_00 = getarraykeys(self.xpgains);
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_02 = self.xpgains[var_00[var_01]];
if(!var_02)
{
continue;
}
self logstring("xp " + var_00[var_01] + ": " + var_02);
}
}
//Function Number: 78
registerroundswitchdvar(param_00,param_01,param_02,param_03)
{
registerwatchdvarint("roundswitch",param_01);
param_00 = "scr_" + param_00 + "_roundswitch";
level.roundswitchdvar = param_00;
level.roundswitchmin = param_02;
level.roundswitchmax = param_03;
level.roundswitch = getdvarint(param_00,param_01);
if(level.roundswitch < param_02)
{
level.roundswitch = param_02;
return;
}
if(level.roundswitch > param_03)
{
level.roundswitch = param_03;
}
}
//Function Number: 79
registerroundlimitdvar(param_00,param_01)
{
registerwatchdvarint("roundlimit",param_01);
}
//Function Number: 80
registerwinlimitdvar(param_00,param_01)
{
registerwatchdvarint("winlimit",param_01);
}
//Function Number: 81
registerscorelimitdvar(param_00,param_01)
{
registerwatchdvarint("scorelimit",param_01);
}
//Function Number: 82
registertimelimitdvar(param_00,param_01)
{
registerwatchdvarfloat("timelimit",param_01);
makedvarserverinfo("ui_timelimit",gettimelimit());
}
//Function Number: 83
registerhalftimedvar(param_00,param_01)
{
registerwatchdvarint("halftime",param_01);
makedvarserverinfo("ui_halftime",gethalftime());
}
//Function Number: 84
registernumlivesdvar(param_00,param_01)
{
registerwatchdvarint("numlives",param_01);
}
//Function Number: 85
setovertimelimitdvar(param_00)
{
makedvarserverinfo("overtimeTimeLimit",param_00);
}
//Function Number: 86
get_damageable_player(param_00,param_01)
{
var_02 = spawnstruct();
var_02.isplayer = 1;
var_02.isadestructable = 0;
var_02.entity = param_00;
var_02.damagecenter = param_01;
return var_02;
}
//Function Number: 87
get_damageable_sentry(param_00,param_01)
{
var_02 = spawnstruct();
var_02.isplayer = 0;
var_02.isadestructable = 0;
var_02.issentry = 1;
var_02.entity = param_00;
var_02.damagecenter = param_01;
return var_02;
}
//Function Number: 88
get_damageable_grenade(param_00,param_01)
{
var_02 = spawnstruct();
var_02.isplayer = 0;
var_02.isadestructable = 0;
var_02.entity = param_00;
var_02.damagecenter = param_01;
return var_02;
}
//Function Number: 89
get_damageable_mine(param_00,param_01)
{
var_02 = spawnstruct();
var_02.isplayer = 0;
var_02.isadestructable = 0;
var_02.entity = param_00;
var_02.damagecenter = param_01;
return var_02;
}
//Function Number: 90
get_damageable_player_pos(param_00)
{
return param_00.origin + (0,0,32);
}
//Function Number: 91
getstancecenter()
{
if(self getstance() == "crouch")
{
var_00 = self.origin + (0,0,24);
}
else if(self getstance() == "prone")
{
var_00 = self.origin + (0,0,10);
}
else
{
var_00 = self.origin + (0,0,32);
}
return var_00;
}
//Function Number: 92
get_damageable_grenade_pos(param_00)
{
return param_00.origin;
}
//Function Number: 93
getdvarvec(param_00)
{
var_01 = getdvar(param_00);
if(var_01 == "")
{
return (0,0,0);
}
var_02 = strtok(var_01," ");
if(var_02.size < 3)
{
return (0,0,0);
}
setdvar("tempR",var_02[0]);
setdvar("tempG",var_02[1]);
setdvar("tempB",var_02[2]);
return (getdvarfloat("tempR"),getdvarfloat("tempG"),getdvarfloat("tempB"));
}
//Function Number: 94
strip_suffix(param_00,param_01)
{
if(param_00.size <= param_01.size)
{
return param_00;
}
if(getsubstr(param_00,param_00.size - param_01.size,param_00.size) == param_01)
{
return getsubstr(param_00,0,param_00.size - param_01.size);
}
return param_00;
}
//Function Number: 95
_takeweaponsexcept(param_00)
{
var_01 = self getweaponslistall();
foreach(var_03 in var_01)
{
if(var_03 == param_00)
{
continue;
}
else
{
self takeweapon(var_03);
}
}
}
//Function Number: 96
savedata()
{
var_00 = spawnstruct();
var_00.offhandclass = self getoffhandsecondaryclass();
var_00.actionslots = self.saved_actionslotdata;
var_00.currentweapon = self getcurrentweapon();
var_01 = self getweaponslistall();
var_00.weapons = [];
foreach(var_03 in var_01)
{
if(weaponinventorytype(var_03) == "exclusive")
{
continue;
}
if(weaponinventorytype(var_03) == "altmode")
{
continue;
}
var_04 = spawnstruct();
var_04.name = var_03;
var_04.clipammor = self getweaponammoclip(var_03,"right");
var_04.clipammol = self getweaponammoclip(var_03,"left");
var_04.stockammo = self getweaponammostock(var_03);
if(isdefined(self.throwinggrenade) && self.throwinggrenade == var_03)
{
var_04.stockammo--;
}
var_00.weapons[var_00.weapons.size] = var_04;
}
self.script_savedata = var_00;
}
//Function Number: 97
restoredata()
{
var_00 = self.script_savedata;
self setoffhandsecondaryclass(var_00.offhandclass);
foreach(var_02 in var_00.weapons)
{
_giveweapon(var_02.name,int(tablelookup("mp/camoTable.csv",1,self.loadoutprimarycamo,0)));
self setweaponammoclip(var_02.name,var_02.clipammor,"right");
if(issubstr(var_02.name,"akimbo"))
{
self setweaponammoclip(var_02.name,var_02.clipammol,"left");
}
self setweaponammostock(var_02.name,var_02.stockammo);
}
foreach(var_06, var_05 in var_00.actionslots)
{
_setactionslot(var_06,var_05.type,var_05.item);
}
if(self getcurrentweapon() == "none")
{
var_02 = var_00.currentweapon;
if(var_02 == "none")
{
var_02 = common_scripts\utility::getlastweapon();
}
self setspawnweapon(var_02);
self switchtoweapon(var_02);
}
}
//Function Number: 98
_setactionslot(param_00,param_01,param_02)
{
self.saved_actionslotdata[param_00].type = param_01;
self.saved_actionslotdata[param_00].item = param_02;
self setactionslot(param_00,param_01,param_02);
}
//Function Number: 99
isfloat(param_00)
{
if(int(param_00) != param_00)
{
return 1;
}
return 0;
}
//Function Number: 100
registerwatchdvarint(param_00,param_01)
{
var_02 = "scr_" + level.gametype + "_" + param_00;
level.watchdvars[var_02] = spawnstruct();
level.watchdvars[var_02].value = getdvarint(var_02,param_01);
level.watchdvars[var_02].type = "int";
level.watchdvars[var_02].notifystring = "update_" + param_00;
}
//Function Number: 101
registerwatchdvarfloat(param_00,param_01)
{
var_02 = "scr_" + level.gametype + "_" + param_00;
level.watchdvars[var_02] = spawnstruct();
level.watchdvars[var_02].value = getdvarfloat(var_02,param_01);
level.watchdvars[var_02].type = "float";
level.watchdvars[var_02].notifystring = "update_" + param_00;
}
//Function Number: 102
registerwatchdvar(param_00,param_01)
{
var_02 = "scr_" + level.gametype + "_" + param_00;
level.watchdvars[var_02] = spawnstruct();
level.watchdvars[var_02].value = getdvar(var_02,param_01);
level.watchdvars[var_02].type = "string";
level.watchdvars[var_02].notifystring = "update_" + param_00;
}
//Function Number: 103
setoverridewatchdvar(param_00,param_01)
{
param_00 = "scr_" + level.gametype + "_" + param_00;
level.overridewatchdvars[param_00] = param_01;
}
//Function Number: 104
getwatcheddvar(param_00)
{
param_00 = "scr_" + level.gametype + "_" + param_00;
if(isdefined(level.overridewatchdvars) && isdefined(level.overridewatchdvars[param_00]))
{
return level.overridewatchdvars[param_00];
}
return level.watchdvars[param_00].value;
}
//Function Number: 105
updatewatcheddvars()
{
while(game["state"] == "playing")
{
var_00 = getarraykeys(level.watchdvars);
foreach(var_02 in var_00)
{
if(level.watchdvars[var_02].type == "string")
{
var_03 = getproperty(var_02,level.watchdvars[var_02].value);
}
else if(level.watchdvars[var_02].type == "float")
{
var_03 = getfloatproperty(var_02,level.watchdvars[var_02].value);
}
else
{
var_03 = getintproperty(var_02,level.watchdvars[var_02].value);
}
if(var_03 != level.watchdvars[var_02].value)
{
level.watchdvars[var_02].value = var_03;
level notify(level.watchdvars[var_02].notifystring,var_03);
}
}
wait 1;
}
}
//Function Number: 106
isroundbased()
{
if(!level.teambased)
{
return 0;
}
if(getwatcheddvar("winlimit") != 1 && getwatcheddvar("roundlimit") != 1)
{
return 1;
}
return 0;
}
//Function Number: 107
islastround()
{
if(!level.teambased)
{
return 1;
}
if(getwatcheddvar("roundlimit") > 1 && game["roundsPlayed"] >= getwatcheddvar("roundlimit") - 1)
{
return 1;
}
if(getwatcheddvar("winlimit") > 1 && game["roundsWon"]["allies"] >= getwatcheddvar("winlimit") - 1 && game["roundsWon"]["axis"] >= getwatcheddvar("winlimit") - 1)
{
return 1;
}
return 0;
}
//Function Number: 108
wasonlyround()
{
if(!level.teambased)
{
return 1;
}
if(isdefined(level.onlyroundoverride))
{
return 0;
}
if(getwatcheddvar("winlimit") == 1 && hitwinlimit())
{
return 1;
}
if(getwatcheddvar("roundlimit") == 1)
{
return 1;
}
return 0;
}
//Function Number: 109
waslastround()
{
if(level.forcedend)
{
return 1;
}
if(!level.teambased)
{
return 1;
}
if(hitroundlimit() || hitwinlimit())
{
return 1;
}
return 0;
}
//Function Number: 110
hitroundlimit()
{
if(getwatcheddvar("roundlimit") <= 0)
{
return 0;
}
return game["roundsPlayed"] >= getwatcheddvar("roundlimit");
}
//Function Number: 111
hitscorelimit()
{
if(isobjectivebased())
{
return 0;
}
if(getwatcheddvar("scorelimit") <= 0)
{
return 0;
}
if(level.teambased)
{
if(game["teamScores"]["allies"] >= getwatcheddvar("scorelimit") || game["teamScores"]["axis"] >= getwatcheddvar("scorelimit"))
{
return 1;
}
}
else
{
for(var_00 = 0;var_00 < level.players.size;var_00++)
{
var_01 = level.players[var_00];
if(isdefined(var_01.score) && var_01.score >= getwatcheddvar("scorelimit"))
{
return 1;
}
}
}
return 0;
}
//Function Number: 112
hitwinlimit()
{
if(getwatcheddvar("winlimit") <= 0)
{
return 0;
}
if(!level.teambased)
{
return 1;
}
if(getroundswon("allies") >= getwatcheddvar("winlimit") || getroundswon("axis") >= getwatcheddvar("winlimit"))
{
return 1;
}
return 0;
}
//Function Number: 113
getscorelimit()
{
if(isroundbased())
{
if(getwatcheddvar("roundlimit"))
{
return getwatcheddvar("roundlimit");
}
return getwatcheddvar("winlimit");
}
return getwatcheddvar("scorelimit");
}
//Function Number: 114
getroundswon(param_00)
{
return game["roundsWon"][param_00];
}
//Function Number: 115
isobjectivebased()
{
return level.objectivebased;
}
//Function Number: 116
gettimelimit()
{
if(inovertime() && !isdefined(game["inNukeOvertime"]) || !game["inNukeOvertime"])
{
var_00 = int(getdvar("overtimeTimeLimit"));
if(isdefined(var_00))
{
return var_00;
}
return 1;
}
if(isdefined(level.dd) && level.dd && isdefined(level.bombexploded) && level.bombexploded > 0)
{
return getwatcheddvar("timelimit") + level.bombexploded * level.ddtimetoadd;
}
return getwatcheddvar("timelimit");
}
//Function Number: 117
gethalftime()
{
if(inovertime())
{
return 0;
}
if(isdefined(game["inNukeOvertime"]) && game["inNukeOvertime"])
{
return 0;
}
return getwatcheddvar("halftime");
}
//Function Number: 118
inovertime()
{
return isdefined(game["status"]) && game["status"] == "overtime";
}
//Function Number: 119
gamehasstarted()
{
if(level.teambased)
{
return level.hasspawned["axis"] && level.hasspawned["allies"];
}
return level.maxplayercount > 1;
}
//Function Number: 120
getaverageorigin(param_00)
{
var_01 = (0,0,0);
if(!param_00.size)
{
return undefined;
}
foreach(var_03 in param_00)
{
var_01 = var_01 + var_03.origin;
}
var_05 = int(var_01[0] / param_00.size);
var_06 = int(var_01[1] / param_00.size);
var_07 = int(var_01[2] / param_00.size);
var_01 = (var_05,var_06,var_07);
return var_01;
}
//Function Number: 121
getlivingplayers(param_00)
{
var_01 = [];
foreach(var_03 in level.players)
{
if(!isalive(var_03))
{
continue;
}
if(level.teambased && isdefined(param_00))
{
if(param_00 == var_03.pers["team"])
{
var_01[var_01.size] = var_03;
}
continue;
}
var_01[var_01.size] = var_03;
}
return var_01;
}
//Function Number: 122
setusingremote(param_00)
{
if(isdefined(self.carryicon))
{
self.carryicon.alpha = 0;
}
self.usingremote = param_00;
common_scripts\utility::_disableoffhandweapons();
self notify("using_remote");
}
//Function Number: 123
getremotename()
{
return self.usingremote;
}
//Function Number: 124
freezecontrolswrapper(param_00)
{
if(isdefined(level.hostmigrationtimer))
{
self freezecontrols(1);
return;
}
self freezecontrols(param_00);
}
//Function Number: 125
clearusingremote()
{
if(isdefined(self.carryicon))
{
self.carryicon.alpha = 1;
}
self.usingremote = undefined;
common_scripts\utility::_enableoffhandweapons();
var_00 = self getcurrentweapon();
if(var_00 == "none" || iskillstreakweapon(var_00))
{
self switchtoweapon(common_scripts\utility::getlastweapon());
}
freezecontrolswrapper(0);
self notify("stopped_using_remote");
}
//Function Number: 126
isusingremote()
{
return isdefined(self.usingremote);
}
//Function Number: 127
queuecreate(param_00)
{
if(!isdefined(level.queues))
{
level.queues = [];
}
level.queues[param_00] = [];
}
//Function Number: 128
queueadd(param_00,param_01)
{
level.queues[param_00][level.queues[param_00].size] = param_01;
}
//Function Number: 129
queueremovefirst(param_00)
{
var_01 = undefined;
var_02 = [];
foreach(var_04 in level.queues[param_00])
{
if(!isdefined(var_04))
{
continue;
}
if(!isdefined(var_01))
{
var_01 = var_04;
continue;
}
var_02[var_02.size] = var_04;
}
level.queues[param_00] = var_02;
return var_01;
}
//Function Number: 130
_giveweapon(param_00,param_01,param_02)
{
if(!isdefined(param_01))
{
param_01 = -1;
}
if(issubstr(param_00,"_akimbo") || isdefined(param_02) && param_02 == 1)
{
self giveweapon(param_00,param_01,1);
return;
}
self giveweapon(param_00,param_01,0);
}
//Function Number: 131
_hasperk(param_00)
{
if(isdefined(self.perks[param_00]))
{
return 1;
}
return 0;
}
//Function Number: 132
giveperk(param_00,param_01)
{
if(issubstr(param_00,"_mp"))
{
switch(param_00)
{
case "frag_grenade_mp":
self setoffhandprimaryclass("frag");
break;
case "throwingknife_mp":
self setoffhandprimaryclass("throwingknife");
break;
case "trophy_mp":
self setoffhandsecondaryclass("flash");
break;
}
_giveweapon(param_00,0);
self givestartammo(param_00);
_setperk(param_00,param_01);
return;
}
if(issubstr(param_00,"specialty_weapon_"))
{
_setperk(param_00,param_01);
return;
}
_setperk(param_00,param_01);
_setextraperks(param_00);
}
//Function Number: 133
_setperk(param_00,param_01)
{
self.perks[param_00] = 1;
if(isdefined(level.perksetfuncs[param_00]))
{
self thread [[ level.perksetfuncs[param_00] ]]();
}
self setperk(param_00,!isdefined(level.scriptperks[param_00]),param_01);
}
//Function Number: 134
_setextraperks(param_00)
{
if(param_00 == "specialty_coldblooded")
{
giveperk("specialty_heartbreaker",0);
}
if(param_00 == "specialty_fasterlockon")
{
giveperk("specialty_armorpiercing",0);
}
if(param_00 == "specialty_spygame")
{
giveperk("specialty_empimmune",0);
}
if(param_00 == "specialty_rollover")
{
giveperk("specialty_assists",0);
}
}
//Function Number: 135
_unsetperk(param_00)
{
self.perks[param_00] = undefined;
if(isdefined(level.perkunsetfuncs[param_00]))
{
self thread [[ level.perkunsetfuncs[param_00] ]]();
}
self unsetperk(param_00,!isdefined(level.scriptperks[param_00]));
}
//Function Number: 136
_unsetextraperks(param_00)
{
if(param_00 == "specialty_bulletaccuracy")
{
_unsetperk("specialty_steadyaimpro");
}
if(param_00 == "specialty_coldblooded")
{
_unsetperk("specialty_heartbreaker");
}
if(param_00 == "specialty_fasterlockon")
{
_unsetperk("specialty_armorpiercing");
}
if(param_00 == "specialty_spygame")
{
_unsetperk("specialty_empimmune");
}
if(param_00 == "specialty_rollover")
{
_unsetperk("specialty_assists");
}
}
//Function Number: 137
_clearperks()
{
foreach(var_02, var_01 in self.perks)
{
if(isdefined(level.perkunsetfuncs[var_02]))
{
self [[ level.perkunsetfuncs[var_02] ]]();
}
}
self.perks = [];
self clearperks();
}
//Function Number: 138
quicksort(param_00)
{
return quicksortmid(param_00,0,param_00.size - 1);
}
//Function Number: 139
quicksortmid(param_00,param_01,param_02)
{
var_03 = param_01;
var_04 = param_02;
if(param_02 - param_01 >= 1)
{
var_05 = param_00[param_01];
while(var_04 > var_03)
{
while(param_00[var_03] <= var_05 && var_03 <= param_02 && var_04 > var_03)
{
var_03++;
}
while(param_00[var_04] > var_05 && var_04 >= param_01 && var_04 >= var_03)
{
var_04--;
}
if(var_04 > var_03)
{
param_00 = swap(param_00,var_03,var_04);
}
}
param_00 = swap(param_00,param_01,var_04);
param_00 = quicksortmid(param_00,param_01,var_04 - 1);
param_00 = quicksortmid(param_00,var_04 + 1,param_02);
}
else
{
return param_01;
}
return param_00;
}
//Function Number: 140
swap(param_00,param_01,param_02)
{
var_03 = param_00[param_01];
param_00[param_01] = param_00[param_02];
param_00[param_02] = var_03;
return param_00;
}
//Function Number: 141
_suicide()
{
if(isusingremote() && !isdefined(self.fauxdead))
{
thread maps\mp\gametypes\_damage::playerkilled_internal(self,self,self,10000,"MOD_SUICIDE","frag_grenade_mp",(0,0,0),"none",0,1116,1);
return;
}
if(!isusingremote() && !isdefined(self.fauxdead))
{
self suicide();
}
}
//Function Number: 142
isreallyalive(param_00)
{
if(isalive(param_00) && !isdefined(param_00.fauxdead))
{
return 1;
}
return 0;
}
//Function Number: 143
playdeathsound()
{
var_00 = randomintrange(1,8);
if(self.team == "axis")
{
self playsound("generic_death_russian_" + var_00);
return;
}
self playsound("generic_death_american_" + var_00);
}
//Function Number: 144
rankingenabled()
{
return level.rankedmatch && !self.usingonlinedataoffline;
}
//Function Number: 145
privatematch()
{
return level.onlinegame && getdvarint("xblive_privatematch");
}
//Function Number: 146
matchmakinggame()
{
return level.onlinegame && !getdvarint("xblive_privatematch");
}
//Function Number: 147
setaltsceneobj(param_00,param_01,param_02,param_03)
{
}
//Function Number: 148
endsceneondeath(param_00)
{
self endon("altscene");
param_00 waittill("death");
self notify("end_altScene");
}
//Function Number: 149
getgametypenumlives()
{
return getwatcheddvar("numlives");
}
//Function Number: 150
givecombathigh(param_00)
{
self.combathigh = param_00;
}
//Function Number: 151
arrayinsertion(param_00,param_01,param_02)
{
if(param_00.size != 0)
{
for(var_03 = param_00.size;var_03 >= param_02;var_03--)
{
param_00[var_03 + 1] = param_00[var_03];
}
}
param_00[param_02] = param_01;
}
//Function Number: 152
getproperty(param_00,param_01)
{
var_02 = param_01;
var_02 = getdvar(param_00,param_01);
return var_02;
}
//Function Number: 153
getintproperty(param_00,param_01)
{
var_02 = param_01;
var_02 = getdvarint(param_00,param_01);
return var_02;
}
//Function Number: 154
getfloatproperty(param_00,param_01)
{
var_02 = param_01;
var_02 = getdvarfloat(param_00,param_01);
return var_02;
}
//Function Number: 155
statusmenu(param_00)
{
self endon("disconnect");
if(!isdefined(self._statusmenu))
{
self.statusmenu = 0;
}
if(self.statusmenu)
{
return;
}
self.statusmenu = 1;
self openpopupmenu("status_update");
wait param_00;
self closepopupmenu("status_update");
wait 10;
self.statusmenu = 0;
}
//Function Number: 156
ischangingweapon()
{
return isdefined(self.changingweapon);
}
//Function Number: 157
killshouldaddtokillstreak(param_00)
{
if(_hasperk("specialty_explosivebullets"))
{
return 0;
}
if(isdefined(self.isjuggernautrecon) && self.isjuggernautrecon == 1)
{
return 0;
}
if(isdefined(level.killstreakchainingweapons[param_00]))
{
for(var_01 = 1;var_01 < 4;var_01++)
{
if(isdefined(self.pers["killstreaks"][var_01]) && isdefined(self.pers["killstreaks"][var_01].streakname) && self.pers["killstreaks"][var_01].streakname == level.killstreakchainingweapons[param_00] && isdefined(self.pers["killstreaks"][var_01].lifeid) && self.pers["killstreaks"][var_01].lifeid == self.pers["deaths"])
{
return streakshouldchain(level.killstreakchainingweapons[param_00]);
}
}
return 0;
}
return !iskillstreakweapon(var_01);
}
//Function Number: 158
streakshouldchain(param_00)
{
var_01 = maps\mp\killstreaks\_killstreaks::getstreakcost(param_00);
var_02 = maps\mp\killstreaks\_killstreaks::getnextstreakname();
var_03 = maps\mp\killstreaks\_killstreaks::getstreakcost(var_02);
return var_01 < var_03;
}
//Function Number: 159
isjuggernaut()
{
if(isdefined(self.isjuggernaut) && self.isjuggernaut == 1)
{
return 1;
}
if(isdefined(self.isjuggernautdef) && self.isjuggernautdef == 1)
{
return 1;
}
if(isdefined(self.isjuggernautgl) && self.isjuggernautgl == 1)
{
return 1;
}
if(isdefined(self.isjuggernautrecon) && self.isjuggernautrecon == 1)
{
return 1;
}
return 0;
}
//Function Number: 160
iskillstreakweapon(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(param_00 == "none")
{
return 0;
}
var_01 = strtok(param_00,"_");
var_02 = 0;
if(param_00 != "destructible_car" && param_00 != "barrel_mp")
{
foreach(var_04 in var_01)
{
if(var_04 == "mp")
{
var_02 = 1;
break;
}
}
if(!var_02)
{
param_00 = param_00 + "_mp";
}
}
if(issubstr(param_00,"destructible"))
{
return 0;
}
if(issubstr(param_00,"killstreak"))
{
return 1;
}
if(maps\mp\killstreaks\_airdrop::isairdropmarker(param_00))
{
return 1;
}
if(isdefined(level.killstreakweildweapons[param_00]))
{
return 1;
}
if(isdefined(weaponinventorytype(param_00)) && weaponinventorytype(param_00) == "exclusive" && param_00 != "destructible_car" && param_00 != "barrel_mp")
{
return 1;
}
return 0;
}
//Function Number: 161
isenvironmentweapon(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(param_00 == "turret_minigun_mp")
{
return 1;
}
if(issubstr(param_00,"_bipod_"))
{
return 1;
}
return 0;
}
//Function Number: 162
getweaponclass(param_00)
{
var_01 = strtok(param_00,"_");
if(var_01[0] == "iw5")
{
var_02 = var_01[0] + "_" + var_01[1];
var_03 = tablelookup("mp/statstable.csv",4,var_02,2);
}
else if(var_03[0] == "alt")
{
var_02 = var_03[1] + "_" + var_03[2];
var_03 = tablelookup("mp/statstable.csv",4,var_02,2);
}
else
{
var_03 = tablelookup("mp/statstable.csv",4,var_03[0],2);
}
if(var_03 == "")
{
var_04 = strip_suffix(param_00,"_mp");
var_03 = tablelookup("mp/statstable.csv",4,var_04,2);
}
if(isenvironmentweapon(param_00))
{
var_03 = "weapon_mg";
}
else if(iskillstreakweapon(param_00))
{
var_03 = "killstreak";
}
else if(isdeathstreakweapon(param_00))
{
var_03 = "deathstreak";
}
else if(param_00 == "none")
{
var_03 = "other";
}
else if(var_03 == "")
{
var_03 = "other";
}
return var_03;
}
//Function Number: 163
isdeathstreakweapon(param_00)
{
if(param_00 == "c4death_mp" || param_00 == "frag_grenade_short_mp")
{
return 1;
}
return 0;
}
//Function Number: 164
getbaseweaponname(param_00)
{
var_01 = strtok(param_00,"_");
if(var_01[0] == "iw5")
{
}
else if(var_7B[0] == "alt")
{
}
return var_7B[0];
}
//Function Number: 165
fixakimbostring(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 1;
}
var_02 = 0;
for(var_03 = 0;var_03 < param_00.size;var_03++)
{
if(param_00[var_03] == "a" && param_00[var_03 + 1] == "k" && param_00[var_03 + 2] == "i" && param_00[var_03 + 3] == "m" && param_00[var_03 + 4] == "b" && param_00[var_03 + 5] == "o")
{
var_02 = var_03;
break;
}
}
param_00 = getsubstr(param_00,0,var_02) + getsubstr(param_00,var_02 + 6,param_00.size);
if(param_01)
{
param_00 = param_00 + "_akimbo";
}
return param_00;
}
//Function Number: 166
playsoundinspace(param_00,param_01)
{
playsoundatpos(param_01,param_00);
}
//Function Number: 167
limitdecimalplaces(param_00,param_01)
{
var_02 = 1;
for(var_03 = 0;var_03 < param_01;var_03++)
{
var_02 = var_02 * 10;
}
var_04 = param_00 * var_02;
var_04 = int(var_04);
var_04 = var_04 / var_02;
return var_04;
}
//Function Number: 168
rounddecimalplaces(param_00,param_01,param_02)
{
if(!isdefined(param_02))
{
param_02 = "nearest";
}
var_03 = 1;
for(var_04 = 0;var_04 < param_01;var_04++)
{
var_03 = var_03 * 10;
}
var_05 = param_00 * var_03;
if(param_02 == "up")
{
var_06 = ceil(var_05);
}
else if(var_03 == "down")
{
var_06 = floor(var_06);
}
else
{
var_06 = var_06 + 0.5;
}
var_05 = int(var_06);
var_05 = var_05 / var_03;
return var_05;
}
//Function Number: 169
playerforclientid(param_00)
{
foreach(var_02 in level.players)
{
if(var_02.clientid == param_00)
{
return var_02;
}
}
return undefined;
}
//Function Number: 170
isrested()
{
if(!rankingenabled())
{
return 0;
}
return self getplayerdata("restXPGoal") > self getplayerdata("experience");
}
//Function Number: 171
stringtofloat(param_00)
{
var_01 = strtok(param_00,".");
var_02 = int(var_01[0]);
if(isdefined(var_01[1]))
{
var_03 = 1;
for(var_04 = 0;var_04 < var_01[1].size;var_04++)
{
var_03 = var_03 * 0.1;
}
var_02 = var_02 + int(var_01[1]) * var_03;
}
return var_02;
}
//Function Number: 172
setselfusable(param_00)
{
self makeusable();
foreach(var_02 in level.players)
{
if(var_02 != param_00)
{
self disableplayeruse(var_02);
continue;
}
self enableplayeruse(var_02);
}
}
//Function Number: 173
maketeamusable(param_00)
{
self makeusable();
thread _updateteamusable(param_00);
}
//Function Number: 174
_updateteamusable(param_00)
{
self endon("death");
for(;;)
{
foreach(var_02 in level.players)
{
if(var_02.team == param_00)
{
self enableplayeruse(var_02);
continue;
}
self disableplayeruse(var_02);
}
level waittill("joined_team");
}
}
//Function Number: 175
makeenemyusable(param_00)
{
self makeusable();
thread _updateenemyusable(param_00);
}
//Function Number: 176
_updateenemyusable(param_00)
{
self endon("death");
var_01 = param_00.team;
for(;;)
{
if(level.teambased)
{
foreach(var_03 in level.players)
{
if(var_03.team != var_01)
{
self enableplayeruse(var_03);
continue;
}
self disableplayeruse(var_03);
}
}
else
{
foreach(var_03 in level.players)
{
if(var_03 != param_00)
{
self enableplayeruse(var_03);
continue;
}
self disableplayeruse(var_03);
}
}
level waittill("joined_team");
}
}
//Function Number: 177
getnextlifeid()
{
var_00 = getmatchdata("lifeCount");
if(var_00 < level.maxlives)
{
setmatchdata("lifeCount",var_00 + 1);
}
return var_00;
}
//Function Number: 178
initgameflags()
{
if(!isdefined(game["flags"]))
{
game["flags"] = [];
}
}
//Function Number: 179
gameflaginit(param_00,param_01)
{
game["flags"][param_00] = param_01;
}
//Function Number: 180
gameflag(param_00)
{
return game["flags"][param_00];
}
//Function Number: 181
gameflagset(param_00)
{
game["flags"][param_00] = 1;
level notify(param_00);
}
//Function Number: 182
gameflagclear(param_00)
{
game["flags"][param_00] = 0;
}
//Function Number: 183
gameflagwait(param_00)
{
while(!gameflag(param_00))
{
level waittill(param_00);
}
}
//Function Number: 184
isprimarydamage(param_00)
{
if(param_00 == "MOD_RIFLE_BULLET" || param_00 == "MOD_PISTOL_BULLET")
{
return 1;
}
return 0;
}
//Function Number: 185
isbulletdamage(param_00)
{
var_01 = "MOD_RIFLE_BULLET MOD_PISTOL_BULLET MOD_HEAD_SHOT";
if(issubstr(var_01,param_00))
{
return 1;
}
return 0;
}
//Function Number: 186
initlevelflags()
{
if(!isdefined(level.levelflags))
{
level.levelflags = [];
}
}
//Function Number: 187
levelflaginit(param_00,param_01)
{
level.levelflags[param_00] = param_01;
}
//Function Number: 188
levelflag(param_00)
{
return level.levelflags[param_00];
}
//Function Number: 189
levelflagset(param_00)
{
level.levelflags[param_00] = 1;
level notify(param_00);
}
//Function Number: 190
levelflagclear(param_00)
{
level.levelflags[param_00] = 0;
level notify(param_00);
}
//Function Number: 191
levelflagwait(param_00)
{
while(!levelflag(param_00))
{
level waittill(param_00);
}
}
//Function Number: 192
levelflagwaitopen(param_00)
{
while(levelflag(param_00))
{
level waittill(param_00);
}
}
//Function Number: 193
getweaponattachments(param_00)
{
var_01 = strtok(param_00,"_");
var_02 = [];
foreach(var_04 in var_01)
{
if(issubstr(var_04,"scopevz"))
{
var_02[var_02.size] = "vzscope";
}
if(maps\mp\gametypes\_class::isvalidattachment(var_04,0))
{
var_02[var_02.size] = var_04;
}
}
return var_02;
}
//Function Number: 194
isemped()
{
if(self.team == "spectator")
{
return 0;
}
if(level.teambased)
{
return level.teamemped[self.team] || isdefined(self.empgrenaded) && self.empgrenaded || level.teamnukeemped[self.team];
}
return (isdefined(level.empplayer) && level.empplayer != self) || isdefined(self.empgrenaded) && self.empgrenaded || isdefined(level.nukeinfo.player) && self != level.nukeinfo.player && level.teamnukeemped[self.team];
}
//Function Number: 195
isairdenied()
{
return 0;
}
//Function Number: 196
isnuked()
{
if(self.team == "spectator")
{
return 0;
}
return isdefined(self.nuked);
}
//Function Number: 197
getplayerforguid(param_00)
{
foreach(var_02 in level.players)
{
if(var_02.guid == param_00)
{
return var_02;
}
}
return undefined;
}
//Function Number: 198
teamplayercardsplash(param_00,param_01,param_02)
{
if(level.hardcoremode)
{
return;
}
foreach(var_04 in level.players)
{
if(isdefined(param_02) && var_04.team != param_02)
{
continue;
}
var_04 thread maps\mp\gametypes\_hud_message::playercardsplashnotify(param_00,param_01);
}
}
//Function Number: 199
iscacprimaryweapon(param_00)
{
switch(getweaponclass(param_00))
{
case "weapon_shotgun":
case "weapon_lmg":
case "weapon_sniper":
case "weapon_riot":
case "weapon_assault":
case "weapon_smg":
return 1;
default:
return 0;
}
}
//Function Number: 200
iscacsecondaryweapon(param_00)
{
switch(getweaponclass(param_00))
{
case "weapon_machine_pistol":
case "weapon_pistol":
case "weapon_projectile":
return 1;
default:
return 0;
}
}
//Function Number: 201
getlastlivingplayer(param_00)
{
var_01 = undefined;
foreach(var_03 in level.players)
{
if(isdefined(param_00) && var_03.team != param_00)
{
continue;
}
if(!isreallyalive(var_03) && !var_03 maps\mp\gametypes\_playerlogic::mayspawn())
{
continue;
}
var_01 = var_03;
}
return var_01;
}
//Function Number: 202
getpotentiallivingplayers()
{
var_00 = [];
foreach(var_02 in level.players)
{
if(!isreallyalive(var_02) && !var_02 maps\mp\gametypes\_playerlogic::mayspawn())
{
continue;
}
var_00[var_00.size] = var_02;
}
return var_00;
}
//Function Number: 203
waittillrecoveredhealth(param_00,param_01)
{
self endon("death");
self endon("disconnect");
var_02 = 0;
if(!isdefined(param_01))
{
param_01 = 0.05;
}
if(!isdefined(param_00))
{
param_00 = 0;
}
for(;;)
{
if(self.health != self.maxhealth)
{
var_02 = 0;
}
else
{
var_02 = var_02 + param_01;
}
wait param_01;
if(self.health == self.maxhealth && var_02 >= param_00)
{
break;
}
}
}
//Function Number: 204
attachmentmap(param_00,param_01)
{
var_02 = tablelookup("mp/statstable.csv",4,param_01,2);
switch(var_02)
{
case "weapon_smg":
if(param_00 == "reflex")
{
return "reflexsmg";
}
else if(param_00 == "eotech")
{
return "eotechsmg";
}
else if(param_00 == "acog")
{
return "acogsmg";
}
else if(param_00 == "thermal")
{
return "thermalsmg";
}
break;
case "weapon_lmg":
if(param_00 == "reflex")
{
return "reflexlmg";
}
else if(param_00 == "eotech")
{
return "eotechlmg";
}
break;
case "weapon_machine_pistol":
if(param_00 == "reflex")
{
return "reflexsmg";
}
else if(param_00 == "eotech")
{
return "eotechsmg";
}
break;
default:
return param_00;
}
}
//Function Number: 205
validateattachment(param_00)
{
switch(param_00)
{
case "silencer03":
case "silencer02":
return "silencer";
case "gp25":
case "m320":
return "gl";
case "reflexlmg":
case "reflexsmg":
return "reflex";
case "eotechlmg":
case "eotechsmg":
return "eotech";
case "acogsmg":
return "acog";
case "thermalsmg":
return "thermal";
default:
return param_00;
}
}
//Function Number: 206
_objective_delete(param_00)
{
objective_delete(param_00);
if(!isdefined(level.reclaimedreservedobjectives))
{
level.reclaimedreservedobjectives = [];
level.reclaimedreservedobjectives[0] = param_00;
return;
}
level.reclaimedreservedobjectives[level.reclaimedreservedobjectives.size] = param_00;
}
//Function Number: 207
touchingbadtrigger()
{
var_00 = getentarray("trigger_hurt","classname");
foreach(var_02 in var_00)
{
if(self istouching(var_02))
{
return 1;
}
}
var_04 = getentarray("radiation","targetname");
foreach(var_02 in var_04)
{
if(self istouching(var_02))
{
return 1;
}
}
return 0;
}
//Function Number: 208
setthirdpersondof(param_00)
{
if(param_00)
{
self setdepthoffield(0,110,512,4096,6,1.8);
return;
}
self setdepthoffield(0,0,512,512,4,0);
}
//Function Number: 209
killtrigger(param_00,param_01,param_02)
{
var_03 = spawn("trigger_radius",param_00,0,param_01,param_02);
for(;;)
{
var_03 waittill("trigger",var_04);
if(!isplayer(var_04))
{
continue;
}
var_04 suicide();
}
}
//Function Number: 210
findisfacing(param_00,param_01,param_02)
{
var_03 = cos(param_02);
var_04 = anglestoforward(param_00.angles);
var_05 = param_01.origin - param_00.origin;
var_04 = var_04 * (1,1,0);
var_05 = var_05 * (1,1,0);
var_05 = vectornormalize(var_05);
var_04 = vectornormalize(var_04);
var_06 = vectordot(var_05,var_04);
if(var_06 >= var_03)
{
return 1;
}
return 0;
}
//Function Number: 211
combinearrays(param_00,param_01)
{
if(!isdefined(param_00) && isdefined(param_01))
{
return param_01;
}
if(!isdefined(param_01) && isdefined(param_00))
{
return param_00;
}
foreach(var_03 in param_01)
{
param_00[param_00.size] = var_03;
}
return param_00;
}
//Function Number: 212
setrecoilscale(param_00,param_01)
{
if(!isdefined(param_00))
{
param_00 = 0;
}
if(!isdefined(self.recoilscale))
{
self.recoilscale = param_00;
}
else
{
self.recoilscale = self.recoilscale + param_00;
}
if(isdefined(param_01))
{
if(isdefined(self.recoilscale) && param_01 < self.recoilscale)
{
param_01 = self.recoilscale;
}
var_02 = 100 - param_01;
}
else
{
var_02 = 100 - self.recoilscale;
}
if(var_02 < 0)
{
var_02 = 0;
}
if(var_02 > 100)
{
var_02 = 100;
}
if(var_02 == 100)
{
self player_recoilscaleoff();
return;
}
self player_recoilscaleon(var_02);
}
//Function Number: 213
cleanarray(param_00)
{
var_01 = [];
foreach(var_04, var_03 in param_00)
{
if(!isdefined(var_03))
{
continue;
}
var_01[var_01.size] = param_00[var_04];
}
return var_01;
}
//Function Number: 214
notusableforjoiningplayers(param_00)
{
self endon("death");
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("death");
for(;;)
{
level waittill("player_spawned",var_01);
if(isdefined(var_01) && var_01 != param_00)
{
self disableplayeruse(var_01);
}
}
}
//Function Number: 215
isstrstart(param_00,param_01)
{
return getsubstr(param_00,0,param_01.size) == param_01;
}
//Function Number: 216
validateusestreak()
{
if(isdefined(self.laststand) && !_hasperk("specialty_finalstand"))
{
self iprintlnbold(&"MP_UNAVILABLE_IN_LASTSTAND");
return 0;
}
if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
if(isusingremote())
{
return 0;
}
if(isemped())
{
return 0;
}
return 1;
}
//Function Number: 217
currentactivevehiclecount(param_00)
{
if(!isdefined(param_00))
{
param_00 = 0;
}
var_01 = param_00;
if(isdefined(level.helis))
{
var_01 = var_01 + level.helis.size;
}
if(isdefined(level.littlebirds))
{
var_01 = var_01 + level.littlebirds.size;
}
if(isdefined(level.ugvs))
{
var_01 = var_01 + level.ugvs.size;
}
return var_01;
}
//Function Number: 218
maxvehiclesallowed()
{
return 8;
}
//Function Number: 219
incrementfauxvehiclecount()
{
level.fauxvehiclecount++;
}
//Function Number: 220
decrementfauxvehiclecount()
{
level.fauxvehiclecount--;
if(level.fauxvehiclecount < 0)
{
level.fauxvehiclecount = 0;
}
}
//Function Number: 221
lightweightscalar()
{
return 1.1;
}
//Function Number: 222
allowteamchoice()
{
var_00 = int(tablelookup("mp/gametypesTable.csv",0,level.gametype,4));
return var_00;
}
//Function Number: 223
allowclasschoice()
{
var_00 = int(tablelookup("mp/gametypesTable.csv",0,level.gametype,5));
return var_00;
}
//Function Number: 224
isbuffunlockedforweapon(param_00,param_01)
{
var_02 = 4;
var_03 = 0;
var_04 = 4;
var_05 = self getplayerdata("weaponRank",param_01);
var_06 = int(tablelookup("mp/weaponRankTable.csv",var_03,getweaponclass(param_01),var_04));
var_07 = tablelookup("mp/weaponRankTable.csv",var_06,param_00,var_02);
if(var_07 != "")
{
if(var_05 >= int(var_07))
{
return 1;
}
}
return 0;
}
//Function Number: 225
isbuffequippedonweapon(param_00,param_01)
{
if(isdefined(self.loadoutprimary) && self.loadoutprimary == param_01)
{
if(isdefined(self.loadoutprimarybuff) && self.loadoutprimarybuff == param_00)
{
return 1;
}
}
else if(isdefined(self.loadoutsecondary) && self.loadoutsecondary == param_01)
{
if(isdefined(self.loadoutsecondarybuff) && self.loadoutsecondarybuff == param_00)
{
return 1;
}
}
return 0;
}
//Function Number: 226
setcommonrulesfrommatchrulesdata(param_00)
{
var_01 = getmatchrulesdata("commonOption","timeLimit");
setdynamicdvar("scr_" + level.gametype + "_timeLimit",var_01);
registertimelimitdvar(level.gametype,var_01);
var_02 = getmatchrulesdata("commonOption","scoreLimit");
setdynamicdvar("scr_" + level.gametype + "_scoreLimit",var_02);
registerscorelimitdvar(level.gametype,var_02);
var_03 = getmatchrulesdata("commonOption","numLives");
setdynamicdvar("scr_" + level.gametype + "_numLives",var_03);
registernumlivesdvar(level.gametype,var_03);
setdynamicdvar("scr_player_maxhealth",getmatchrulesdata("commonOption","maxHealth"));
setdynamicdvar("scr_player_healthregentime",getmatchrulesdata("commonOption","healthRegen"));
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
setdynamicdvar("scr_game_spectatetype",getmatchrulesdata("commonOption","spectateModeAllowed"));
setdynamicdvar("scr_game_allowkillcam",getmatchrulesdata("commonOption","showKillcam"));
setdynamicdvar("scr_game_forceuav",getmatchrulesdata("commonOption","radarAlwaysOn"));
setdynamicdvar("scr_" + level.gametype + "_playerrespawndelay",getmatchrulesdata("commonOption","respawnDelay"));
setdynamicdvar("scr_" + level.gametype + "_waverespawndelay",getmatchrulesdata("commonOption","waveRespawnDelay"));
setdynamicdvar("scr_player_forcerespawn",getmatchrulesdata("commonOption","forceRespawn"));
level.matchrules_allowcustomclasses = getmatchrulesdata("commonOption","allowCustomClasses");
setdynamicdvar("scr_game_hardpoints",getmatchrulesdata("commonOption","allowKillstreaks"));
setdynamicdvar("scr_game_perks",getmatchrulesdata("commonOption","allowPerks"));
setdynamicdvar("g_hardcore",getmatchrulesdata("commonOption","hardcoreModeOn"));
setdynamicdvar("scr_thirdPerson",getmatchrulesdata("commonOption","forceThirdPersonView"));
setdynamicdvar("camera_thirdPerson",getmatchrulesdata("commonOption","forceThirdPersonView"));
setdynamicdvar("scr_game_onlyheadshots",getmatchrulesdata("commonOption","headshotsOnly"));
if(!isdefined(param_00))
{
setdynamicdvar("scr_team_fftype",getmatchrulesdata("commonOption","friendlyFire"));
}
if(getmatchrulesdata("commonOption","hardcoreModeOn"))
{
setdynamicdvar("scr_team_fftype",1);
setdynamicdvar("scr_player_maxhealth",30);
setdynamicdvar("scr_player_healthregentime",0);
setdynamicdvar("scr_player_respawndelay",10);
setdynamicdvar("scr_game_allowkillcam",0);
setdynamicdvar("scr_game_forceuav",0);
}
}
//Function Number: 227
reinitializematchrulesonmigration()
{
for(;;)
{
level waittill("host_migration_begin");
[[ level.initializematchrules ]]();
}
}
//Function Number: 228
reinitializethermal(param_00)
{
self endon("disconnect");
if(isdefined(param_00))
{
param_00 endon("death");
}
for(;;)
{
level waittill("host_migration_begin");
if(isdefined(self.lastvisionsetthermal))
{
self visionsetthermalforplayer(self.lastvisionsetthermal,0);
}
}
}
//Function Number: 229
getmatchrulesspecialclass(param_00,param_01)
{
var_02 = [];
if(var_7B["loadoutOffhand"] == "specialty_null")
{
}
var_03 = getmatchrulesdata("defaultClasses",param_01,var_02,"class","perks",5);
if(var_03 != "specialty_null")
{
var_7B["loadoutStreakType"] = var_03;
var_7B["loadoutKillstreak1"] = maps\mp\gametypes\_class::recipe_getkillstreak(param_01,var_02,var_03,0);
var_7B["loadoutKillstreak2"] = maps\mp\gametypes\_class::recipe_getkillstreak(param_01,var_02,var_03,1);
var_7B["loadoutKillstreak3"] = maps\mp\gametypes\_class::recipe_getkillstreak(param_01,var_02,var_03,2);
}
var_7B["loadoutDeathstreak"] = getmatchrulesdata("defaultClasses",param_01,var_02,"class","deathstreak");
var_7B["loadoutJuggernaut"] = getmatchrulesdata("defaultClasses",param_01,var_02,"juggernaut");
return var_7B;
}
//Function Number: 230
recipeclassapplyjuggernaut()
{
level endon("game_ended");
self endon("disconnect");
self waittill("spawned_player");
if(!isdefined(self.isjuiced))
{
self.movespeedscaler = 0.7;
maps\mp\gametypes\_weapons::updatemovespeedscale();
}
self.juggmovespeedscaler = 0.7;
self disableweaponpickup();
if(!getdvarint("camera_thirdPerson"))
{
self.juggernautoverlay = newclienthudelem(self);
self.juggernautoverlay.x = 0;
self.juggernautoverlay.y = 0;
self.juggernautoverlay.alignx = "left";
self.juggernautoverlay.aligny = "top";
self.juggernautoverlay.horzalign = "fullscreen";
self.juggernautoverlay.vertalign = "fullscreen";
self.juggernautoverlay setshader(level.juggsettings["juggernaut"].overlay,640,480);
self.juggernautoverlay.sort = -10;
self.juggernautoverlay.archived = 1;
self.juggernautoverlay.hidein3rdperson = 1;
}
thread maps\mp\killstreaks\_juggernaut::juggernautsounds();
if(level.gametype != "jugg" || isdefined(level.matchrules_showjuggradaricon) && level.matchrules_showjuggradaricon)
{
self setperk("specialty_radarjuggernaut",1,0);
}
if(isdefined(self.isjuggmodejuggernaut) && self.isjuggmodejuggernaut)
{
var_00 = spawn("script_model",self.origin);
var_00.team = self.team;
var_00 makeportableradar(self);
self.personalradar = var_00;
thread maps\mp\killstreaks\_juggernaut::radarmover(var_00);
}
level notify("juggernaut_equipped",self);
thread maps\mp\killstreaks\_juggernaut::juggremover();
}