IL-GSC/AW/PC/maps/_hms_utility.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

913 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _hms_utility.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 34
* Decompile Time: 599 ms
* Timestamp: 4/22/2024 2:21:27 AM
*******************************************************************/
//Function Number: 1
setupplayerinventory(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(level.map_without_loadout) || isdefined(level.map_without_loadout) && level.map_without_loadout == 0)
{
if(maps\_utility::is_default_start())
{
return;
}
}
level.player takeallweapons();
if(isdefined(param_00))
{
level.player giveweapon(param_00);
}
if(isdefined(param_01))
{
level.player giveweapon(param_01);
}
if(isdefined(param_02))
{
level.player setlethalweapon(param_02);
level.player giveweapon(param_02);
}
if(isdefined(param_03))
{
level.player settacticalweapon(param_03);
level.player giveweapon(param_03);
}
if(isdefined(param_04))
{
if(param_04 == param_00 || param_04 == param_01)
{
level.player switchtoweapon(param_04);
return;
}
level.player switchtoweapon(param_00);
}
}
//Function Number: 2
initializeallyarray()
{
level.allies = [];
}
//Function Number: 3
spawnandinitnamedally(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(level.allies))
{
initializeallyarray();
}
if(!isdefined(level.allies[param_00]))
{
if(isdefined(param_04))
{
var_05 = maps\_utility::spawn_targetname(param_04,1);
}
else
{
var_05 = maps\_utility::spawn_targetname(param_01,1);
}
var_05.name = param_00;
var_05.animname = param_00;
var_05.script_friendname = param_00;
var_05.script_parameters = param_00;
if(isdefined(param_02))
{
if(param_02 == 1)
{
var_05 thread maps\_utility::disable_surprise();
}
}
if(isdefined(param_03))
{
if(param_03 == 1)
{
var_05 thread maps\_utility::deletable_magic_bullet_shield();
}
}
level.allies[param_00] = var_05;
}
if(isdefined(param_01))
{
var_06 = common_scripts\utility::getstruct(param_01,"targetname");
if(isdefined(var_06))
{
level.allies[param_00] forceteleport(var_06.origin,var_06.angles);
}
}
}
//Function Number: 4
getnamedally(param_00)
{
var_01 = level.allies[param_00];
return var_01;
}
//Function Number: 5
updatenamedally(param_00,param_01)
{
level.allies[param_00] = param_01;
}
//Function Number: 6
getdialogai(param_00,param_01)
{
var_02 = filteraiarray(param_00,param_01);
if(var_02.size > 1)
{
return undefined;
}
return var_02[0];
}
//Function Number: 7
filteraiarray(param_00,param_01)
{
var_02 = getaispeciesarray("all","all");
var_03 = [];
foreach(var_05 in var_02)
{
if(!isalive(var_05))
{
continue;
}
switch(param_01)
{
case "script_parameters":
if(isdefined(var_05.script_parameters) && var_05.script_parameters == param_00)
{
var_03[var_03.size] = var_05;
}
break;
}
}
return var_03;
}
//Function Number: 8
allyredirectgotonode(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(level.allies[param_00].goalradius > 64)
{
level.allies[param_00].goalradius = 64;
}
var_08 = getnode(param_01,"targetname");
level.allies[param_00] maps\_utility::enable_ai_color();
level.allies[param_00] maps\_utility::set_goal_node(var_08);
if(isdefined(param_03))
{
executefunction(param_02,param_03,param_04,param_05,param_06,param_07);
}
}
//Function Number: 9
spawnsquadfunc(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = getentarray(param_00,"targetname");
maps\_utility::array_spawn_function(var_06,param_01,param_02,param_03,param_04,param_05);
maps\_utility::array_spawn(var_06,1);
}
//Function Number: 10
flagmonitor(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(!isdefined(param_01))
{
param_01 = 1;
}
common_scripts\utility::flag_wait(param_00);
executefunction(param_01,param_02,param_03,param_04,param_05,param_06);
}
//Function Number: 11
executefunction(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = 0;
if(isdefined(param_05))
{
var_06 = 4;
}
else if(isdefined(param_04))
{
var_06 = 3;
}
else if(isdefined(param_03))
{
var_06 = 2;
}
else if(isdefined(param_02))
{
var_06 = 1;
}
if(param_00 == 1)
{
switch(var_06)
{
case 0:
thread [[ param_01 ]]();
break;
case 1:
thread [[ param_01 ]](param_02);
break;
case 2:
thread [[ param_01 ]](param_02,param_03);
break;
case 3:
thread [[ param_01 ]](param_02,param_03,param_04);
break;
case 4:
thread [[ param_01 ]](param_02,param_03,param_04,param_05);
break;
}
return;
}
switch(var_06)
{
case 0:
[[ param_01 ]]();
break;
case 1:
[[ param_01 ]](param_02);
break;
case 2:
[[ param_01 ]](param_02,param_03);
break;
case 3:
[[ param_01 ]](param_02,param_03,param_04);
break;
case 4:
[[ param_01 ]](param_02,param_03,param_04,param_05);
break;
}
}
//Function Number: 12
objsetupdefault(param_00,param_01,param_02,param_03,param_04)
{
var_05 = getent(param_00,"targetname");
if(!isdefined(var_05))
{
var_05 = (0,0,0);
}
common_scripts\utility::flag_wait(param_02);
objective_add(maps\_utility::obj(param_00),"active",param_01,var_05.origin);
objective_current(maps\_utility::obj(param_00));
if(isdefined(param_04))
{
objective_setpointertextoverride(maps\_utility::obj(param_00),param_04);
}
common_scripts\utility::flag_wait(param_03);
maps\_utility::objective_complete(maps\_utility::obj(param_00));
}
//Function Number: 13
objsetupentity(param_00,param_01,param_02,param_03,param_04,param_05)
{
common_scripts\utility::flag_wait(param_03);
objective_add(maps\_utility::obj(param_00),"active",param_02,(0,0,0));
if(isdefined(param_01))
{
objective_onentity(maps\_utility::obj(param_00),param_01);
}
objective_current(maps\_utility::obj(param_00));
if(isdefined(param_05))
{
objective_setpointertextoverride(maps\_utility::obj(param_00),param_05);
}
common_scripts\utility::flag_wait(param_04);
maps\_utility::objective_complete(maps\_utility::obj(param_00));
}
//Function Number: 14
aideleteonflag(param_00,param_01,param_02)
{
var_03 = [];
var_03 = common_scripts\utility::add_to_array(var_03,self);
thread aiarraydeleteonflag(var_03,param_00,param_01,param_02);
}
//Function Number: 15
aiarraydeleteonflag(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_02))
{
param_02 = 2048;
}
if(!isdefined(param_03))
{
param_03 = 0;
}
common_scripts\utility::flag_wait(param_01);
param_00 = maps\_utility::remove_dead_from_array(param_00);
if(param_03 == 1)
{
maps\_utility::array_delete(param_00);
return;
}
thread maps\_utility::ai_delete_when_out_of_sight(param_00,param_02);
}
//Function Number: 16
aiarrayfallbackonflag(param_00,param_01,param_02,param_03,param_04)
{
param_00 = maps\_utility::remove_dead_from_array(param_00);
for(var_05 = 0;var_05 < param_00.size;var_05++)
{
param_00[var_05] thread aifallbackonflag(param_01,param_02,param_03,param_04);
}
}
//Function Number: 17
aifallbackonflag(param_00,param_01,param_02,param_03)
{
self endon("death");
var_04 = getent(param_01,"targetname");
if(!isdefined(param_02))
{
param_02 = 0;
}
if(!isdefined(param_03))
{
param_03 = 3;
}
common_scripts\utility::flag_wait(param_00);
if(param_02 == 0)
{
wait(randomfloat(param_03));
}
self cleargoalvolume();
self setgoalvolumeauto(var_04);
}
//Function Number: 18
printlnscreenandconsole(param_00)
{
if(isdefined(level.showdebugtoggle) && level.showdebugtoggle == 1)
{
iprintln(param_00);
}
}
//Function Number: 19
debugprint3dcontinuous(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(level.showdebugtoggle == 1)
{
param_01 endon("death");
if(isdefined(param_05) && isdefined(param_06))
{
param_05 endon(param_06);
}
if(!isdefined(param_04))
{
param_04 = 600000;
}
if(!isdefined(param_03))
{
param_03 = 3;
}
if(!isdefined(param_02))
{
param_02 = "green";
}
var_07 = (0,0,0);
switch(param_02)
{
case "white":
var_07 = (9,9,9);
break;
case "black":
var_07 = (0.5,0.5,0.5);
break;
case "red":
var_07 = (9,0.5,0.5);
break;
case "green":
var_07 = (0.5,9,0.5);
break;
case "blue":
var_07 = (0.5,0.5,9);
break;
case "yellow":
var_07 = (9,9,0.5);
break;
case "purple":
var_07 = (9,0.5,9);
break;
case "cyan":
var_07 = (0.5,9,9);
break;
}
for(var_08 = 0;var_08 < param_04 * 20;var_08++)
{
wait(0.05);
}
}
}
//Function Number: 20
transformpointbyentity(param_00,param_01)
{
return transformpoint(param_00,param_01.origin,param_01.angles);
}
//Function Number: 21
transformpoint(param_00,param_01,param_02)
{
var_03 = length(param_00);
var_04 = vectortoangles(param_00);
var_05 = combineangles(param_02,var_04);
var_06 = anglestoforward(var_05);
return param_01 + var_06 * var_03;
}
//Function Number: 22
playdialog(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
common_scripts\utility::create_dvar("display_placeholderdialog",0);
if(!isdefined(param_06))
{
param_06 = 0;
}
if(isdefined(param_03))
{
if(isdefined(param_04))
{
param_04 endon(param_03);
}
else
{
level endon(param_03);
}
}
if(isdefined(param_04) && isalive(param_04))
{
param_04 endon("death");
param_04 endon("dying");
}
if(!isdefined(param_02))
{
param_02 = param_01;
}
var_08 = tablelookuprownum(param_00,2,param_01 + "(Start)");
if(var_08 == -1)
{
var_09 = 1;
}
else
{
var_09 = 0;
}
if(var_09 == 1)
{
var_08 = tablelookuprownum(param_00,2,param_01);
var_0A = var_08;
}
else
{
var_0A = tablelookuprownum(param_01,2,param_02 + "(End)");
}
if(!isdefined(param_05))
{
param_05 = 0;
}
if(param_05 == 1)
{
var_0B = randomintrange(var_08,var_0A + 1);
_dialogtablelookup(param_00,var_0B,param_03,param_04,param_06,param_07);
}
else
{
for(var_0C = var_08;var_0C <= var_0A;var_0C++)
{
_dialogtablelookup(param_00,var_0C,param_03,param_04,param_06,param_07);
}
}
level notify(param_02);
}
//Function Number: 23
_dialogtablelookup(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = tablelookupbyrow(param_00,param_01,1);
var_07 = tablelookupbyrow(param_00,param_01,4);
var_08 = tablelookupbyrow(param_00,param_01,5);
if(var_08 == "")
{
var_08 = 2;
}
else
{
var_08 = float(var_08);
}
var_09 = tablelookupbyrow(param_00,param_01,6);
if(var_09 == "")
{
var_09 = 2;
}
var_09 = float(var_09);
var_0A = tablelookupbyrow(param_00,param_01,7);
var_0B = tablelookupbyrow(param_00,param_01,9);
var_0C = tablelookupbyrow(param_00,param_01,8);
if(var_08 == 1)
{
var_08 = "(whispering)";
}
else if(var_08 == 1.5)
{
var_08 = "(intense whispering)";
}
else if(var_08 == 2)
{
var_08 = "";
}
else if(var_08 == 2.5)
{
var_08 = "(loud voice)";
}
else if(var_08 == 3)
{
var_08 = "(shouting)";
}
else if(var_08 == 4)
{
var_08 = "(screaming)";
}
if(var_0A == "")
{
var_0A = "";
}
else
{
var_0A = "[" + var_0A + "]";
}
var_07 = var_0A + var_08 + var_07;
var_0D = tablelookupbyrow(param_00,param_01,12);
if(var_0C != "")
{
var_0C = float(var_0C);
wait(var_0C);
}
var_0E = getdvarint("display_placeholderdialog");
if(var_0E == 1)
{
thread maps\_utility::add_dialogue_line(var_06,var_07);
}
if(var_0D != "" && soundexists(var_0D))
{
if(var_0A == "[Radio]")
{
if(isdefined(param_03) && isai(param_03) && isalive(param_03))
{
param_03 thread _clearradiodialogondeath();
}
if(isdefined(level.scr_radio[var_0D]))
{
if(param_04 == 1)
{
if(isdefined(level.player_radio_emitter))
{
maps\_utility::radio_dialogue_overlap(var_0D);
}
else
{
maps\_utility::radio_dialogue(var_0D);
}
}
else
{
maps\_utility::radio_dialogue(var_0D);
}
level notify("RadioDialogFinished");
}
}
else if(var_0A == "[World]")
{
var_0F = getent(param_05,"targetname");
if(isdefined(param_02))
{
var_0F thread _clearworlddialogonnotify(param_02);
}
if(isdefined(level.scr_radio[var_0D]))
{
var_0F maps\_utility::play_sound_on_entity(var_0D);
}
level notify("WorldDialogFinished");
}
else
{
var_10 = getdialogai(var_06,"script_parameters");
if(isdefined(var_10) && isai(var_10))
{
var_10 endon("death");
if(isdefined(param_02))
{
var_10 thread _clearcharacterdialogonnotify(param_02);
}
if(isdefined(level.scr_sound[var_06][var_0D]))
{
var_10 thread _clearcharacterdialogondeath();
var_10 maps\_utility::dialogue_queue(var_0D);
}
level notify("CharacterDialogFinished");
}
}
}
if(var_0D == "" || !soundexists(var_0D))
{
wait(var_09);
}
if(var_0B == "")
{
var_0B = "";
return;
}
level notify(var_0B);
}
//Function Number: 24
waittillbcsdone(param_00)
{
self endon("death");
self endon("dying");
if(!isdefined(level.dds))
{
return;
}
if(!isdefined(self.dds_characterid))
{
return;
}
if(isdefined(self.dds_disable) && self.dds_disable == 1)
{
return;
}
for(;;)
{
wait 0.05;
if(maps\_dds::talker_is_talking_currently(self))
{
wait(0.5);
continue;
}
else
{
maps\_utility::set_battlechatter(0);
break;
}
}
}
//Function Number: 25
makeavailableforbcs(param_00)
{
self endon("death");
self endon("dying");
if(!isdefined(level.dds))
{
return;
}
if(!isdefined(self.dds_characterid))
{
return;
}
if(isdefined(self.dds_disable) && self.dds_disable == 1)
{
level.dds.characterid_is_talking_currently[self.dds_characterid] = 0;
return;
}
level.dds.characterid_is_talking_currently[self.dds_characterid] = 0;
}
//Function Number: 26
_clearradiodialogondeath()
{
level endon("RadioDialogFinished");
common_scripts\utility::waittill_either("death","pain_death");
maps\_utility::radio_dialogue_stop();
}
//Function Number: 27
_clearcharacterdialogondeath()
{
level endon("CharacterDialogFinished");
common_scripts\utility::waittill_any("death","pain_death");
if(isdefined(self))
{
self stopsounds();
}
}
//Function Number: 28
_clearcharacterdialogonnotify(param_00)
{
self endon("death");
self endon("pain_death");
level waittill(param_00);
self stopsounds();
}
//Function Number: 29
_clearworlddialogonnotify(param_00)
{
level endon("WorldDialogFinished");
level waittill(param_00);
var_01 = self getlinkedchildren(0);
if(!isdefined(var_01))
{
return;
}
foreach(var_03 in var_01)
{
var_03 stopsounds();
}
}
//Function Number: 30
displayruleofthirds()
{
level.player endon("death");
precacheshader("line_vertical");
common_scripts\utility::create_dvar("ruleofthirds","1");
var_00 = "line_vertical";
var_01 = [];
var_01[0] = _createhudline(213,0,1,480,var_00);
var_01[1] = _createhudline(426,0,1,480,var_00);
var_01[2] = _createhudline(0,160,640,1,var_00);
var_01[3] = _createhudline(0,320,640,1,var_00);
for(;;)
{
var_02 = getdvarint("ruleofthirds");
if(var_02 != 1)
{
foreach(var_04 in var_01)
{
var_04.alpha = 0;
}
}
else if(var_02 == 1)
{
foreach(var_04 in var_01)
{
var_04.alpha = 1;
}
}
wait(0.05);
}
}
//Function Number: 31
_createhudline(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = newclienthudelem(level.player);
var_07.x = param_00;
var_07.y = param_01;
var_07.sort = 1;
var_07.horzalign = "fullscreen";
var_07.vertalign = "fullscreen";
var_07.alpha = 1;
var_07 setshader(param_04,param_02,param_03);
return var_07;
}
//Function Number: 32
cointossweighted(param_00)
{
if(!isdefined(param_00))
{
param_00 = 50;
}
return randomint(100) <= param_00;
}
//Function Number: 33
_glass_physics_wakeup()
{
var_00 = getentarray("glass_phys_wakeup","targetname");
var_01 = 36;
if(var_00.size > 0)
{
foreach(var_03 in var_00)
{
if(!isdefined(var_03.target))
{
}
var_03.glass_id = getglass(var_03.target);
if(!isdefined(var_03.glass_id))
{
continue;
}
if(!isdefined(var_03.origin))
{
var_03.origin = (0,0,0);
}
var_03 thread _glass_physics_wakeup_update(var_01);
}
}
}
//Function Number: 34
_glass_physics_wakeup_update(param_00)
{
level waittillmatch(self.glass_id,"glass_destroyed");
var_01 = param_00;
if(isdefined(self.radius))
{
var_01 = self.radius;
}
wakeupphysicssphere(self.origin,var_01);
if(getdvarint("debug_glass_phys_wake",0))
{
iprintln("Glass physics wakeup occurred for glass " + self.glass_id + " at (" + self.origin[0] + "," + self.origin[1] + "," + self.origin[2] + ")" + " with radius: " + var_01);
}
}