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

1793 lines
40 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _lighting.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 69
* Decompile Time: 1046 ms
* Timestamp: 4/22/2024 2:21:40 AM
*******************************************************************/
//Function Number: 1
light_init()
{
if(!isdefined(level._light))
{
level._light = spawnstruct();
light_setup_global_dvars();
light_setup_common_dof_presets();
light_setup_common_dof_viewmodel_presets();
light_setup_common_flickerlight_presets();
light_setup_pulse_presets();
light_message_init();
thread init_scriptable_primary_lights();
}
}
//Function Number: 2
init_scriptable_primary_lights()
{
level.scriptable_primary_light_override = 0;
level.scr_prim_light = undefined;
wait(0.05);
}
//Function Number: 3
execute_scriptable_primary_light(param_00)
{
var_01 = level.scr_prim_lght[param_00];
var_01.state = 0;
var_01.trans_time[0] = 0;
thread execute_primary_light_setkey_internal(0,var_01);
for(var_04 = 1;var_04 < var_01.trans_time.size;var_04++)
{
maps\_utility::delaythread(var_01.time[var_04],::execute_primary_light_setkey_internal,var_04,var_01);
}
}
//Function Number: 4
scriptable_primary_light_think(param_00,param_01)
{
var_02 = getdvarint("scr_prim_edit_lights");
var_03 = getdvarint("scr_prim_light_state");
var_04 = getdvarint("scr_prim_light_num");
var_05 = param_00.intensity["curr"];
while(param_00.active)
{
var_06 = param_00.pos["curr"];
var_07 = param_00.dir["curr"];
var_08 = vectornormalize(anglestoforward(param_00.dir["curr"]));
var_09 = param_00.pos["curr"];
var_0A = param_00.intensity["curr"];
var_0B = param_00.color["curr"];
var_0C = param_00.innercone["curr"];
var_0D = param_00.outercone["curr"];
var_0E = param_00.radius["curr"];
var_0F = param_00.light_number;
if(isdefined(param_00.attach_ent))
{
var_13 = param_00.attach_tag.origin;
var_14 = vectornormalize(anglestoforward(param_00.attach_tag.angles));
var_15 = vectornormalize(anglestoup(param_00.attach_tag.angles));
var_16 = vectornormalize(anglestoright(param_00.attach_tag.angles));
var_17 = vectornormalize(var_14 * var_08[0] + var_15 * var_08[2] - var_16 * var_08[1]);
var_18 = var_14 * var_06[0] + var_15 * var_06[2] - var_16 * var_06[1];
param_00.primary_light unlink();
param_00.primary_light.angles = vectortoangles(var_17);
param_00.primary_light.origin = var_13 + var_18;
if(isdefined(param_00.coi_ent))
{
var_19 = param_00.coi_ent gettagorigin(param_00.coi_bone);
param_00.primary_light.angles = vectortoangles(vectornormalize(var_19 - param_00.primary_light.origin));
}
if(isdefined(param_00.coi_pos))
{
param_00.primary_light.angles = vectortoangles(vectornormalize(param_00.coi_pos - param_00.primary_light.origin));
}
param_00.primary_light linkto(param_00.attach_tag);
}
else
{
param_00.primary_light.angles = var_07;
if(isdefined(param_00.coi_ent))
{
var_19 = param_00.coi_ent gettagorigin(param_00.coi_bone);
param_00.primary_light.angles = vectortoangles(vectornormalize(var_19 - param_00.primary_light.origin));
}
if(isdefined(param_00.coi_pos))
{
param_00.primary_light.angles = vectortoangles(vectornormalize(param_00.coi_pos - param_00.primary_light.origin));
}
param_00.primary_light.origin = var_06;
}
param_00.primary_light setlightintensity(var_0A);
param_00.primary_light setlightcolor(var_0B);
param_00.primary_light setlightfovrange(var_0D,var_0C);
param_00.primary_light setlightradius(var_0E);
wait(0.05);
}
}
//Function Number: 5
execute_primary_light_setkey_internal(param_00,param_01)
{
var_02 = param_01.trans_time[param_00] * 20;
var_03 = param_00 - 1;
for(var_04 = 0;var_04 < var_02;var_04++)
{
var_05 = float(var_04) / var_02;
var_06 = 1 - var_05;
param_01.pos["curr"] = param_01.pos[param_00] * var_05 + param_01.pos[var_03] * var_06;
param_01.dir["curr"] = param_01.dir[param_00] * var_05 + param_01.dir[var_03] * var_06;
param_01.intensity["curr"] = param_01.intensity[param_00] * var_05 + param_01.intensity[var_03] * var_06;
param_01.color["curr"] = param_01.color[param_00] * var_05 + param_01.color[var_03] * var_06;
param_01.innercone["curr"] = param_01.innercone[param_00] * var_05 + param_01.innercone[var_03] * var_06;
param_01.outercone["curr"] = param_01.outercone[param_00] * var_05 + param_01.outercone[var_03] * var_06;
param_01.radius["curr"] = param_01.radius[param_00] * var_05 + param_01.radius[var_03] * var_06;
wait(0.05);
}
param_01.pos["curr"] = param_01.pos[param_00];
param_01.dir["curr"] = param_01.dir[param_00];
param_01.intensity["curr"] = param_01.intensity[param_00];
param_01.color["curr"] = param_01.color[param_00];
param_01.innercone["curr"] = param_01.innercone[param_00];
param_01.outercone["curr"] = param_01.outercone[param_00];
param_01.radius["curr"] = param_01.radius[param_00];
param_01.state = param_00;
}
//Function Number: 6
stop_scriptable_primary_light(param_00)
{
var_01 = level.scr_prim_lght[param_00];
var_01.active = 0;
if(isdefined(var_01.attach_ent))
{
if(isdefined(var_01.primary_light))
{
var_01.primary_light unlink();
}
}
}
//Function Number: 7
setup_scriptable_primary_light(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
if(!isdefined(param_03))
{
param_03 = (0,0,0);
}
if(!isdefined(param_02))
{
param_02 = (0,0,0);
}
if(!isdefined(param_04))
{
param_04 = 5000;
}
if(!isdefined(param_05))
{
param_05 = (1,1,1);
}
if(!isdefined(param_06))
{
param_06 = 60;
}
if(!isdefined(param_07))
{
param_07 = 120;
}
if(!isdefined(param_0A))
{
param_0A = 50;
}
var_0B = spawnstruct();
var_0B.light_number = param_01;
var_0B.time[0] = 0;
var_0B.dir[0] = param_03;
var_0B.pos[0] = param_02;
var_0B.active = 1;
var_0B.color[0] = param_05;
var_0B.innercone[0] = param_06;
var_0B.outercone[0] = param_07;
var_0B.radius[0] = param_0A;
var_0B.intensity[0] = param_04;
var_0B.trans_time[0] = 0;
var_0B.dir["curr"] = param_03;
var_0B.pos["curr"] = param_02;
var_0B.color["curr"] = param_05;
var_0B.innercone["curr"] = param_06;
var_0B.outercone["curr"] = param_07;
var_0B.radius["curr"] = param_0A;
var_0B.intensity["curr"] = 0.1;
var_0B.state = -1;
var_0B.primary_light = getent(param_00,"targetname");
var_0B.attach_ent = undefined;
var_0B.attach_bone = undefined;
var_0C = undefined;
if(isstring(param_08))
{
if(isstring(param_08))
{
var_0C = getent(param_08,"targetname");
var_0B.attach_ent = var_0C;
}
}
else
{
var_0C = param_08;
}
if(isdefined(var_0C))
{
var_0B.attach_ent = var_0C;
if(!isdefined(var_0B.attach_ent))
{
var_0B.attach_ent = undefined;
}
if(isdefined(param_09) && isdefined(var_0B.attach_ent))
{
var_0B.attach_bone = param_09;
}
else
{
var_0B.attach_bone = undefined;
}
var_0B.attach_tag = common_scripts\utility::spawn_tag_origin();
if(isdefined(param_09))
{
var_0B.attach_tag.origin = var_0C gettagorigin(param_09);
var_0B.attach_tag linkto(var_0C,param_09,(0,0,0),(0,0,0));
}
else
{
var_0B.attach_tag.origin = var_0C.origin;
var_0B.attach_tag linkto(var_0C);
}
var_0D = var_0B.attach_tag.origin;
var_0E = vectornormalize(anglestoforward(var_0B.attach_tag.angles));
var_0F = vectornormalize(anglestoup(var_0B.attach_tag.angles));
var_10 = vectornormalize(anglestoright(var_0B.attach_tag.angles));
var_11 = vectornormalize(var_0E * param_03[0] + var_0F * param_03[2] - var_10 * param_03[1]);
var_12 = var_0E * param_02[0] + var_0F * param_02[2] - var_10 * param_02[1];
var_0B.primary_light.angles = vectortoangles(var_11);
var_0B.primary_light.origin = var_0D + var_12;
if(!isdefined(var_0B.primary_light.linkedtotag))
{
var_0B.primary_light.linkedtotag = 1;
var_0B.primary_light enablelinkto();
}
var_0B.primary_light linkto(var_0B.attach_tag);
}
else
{
var_0B.attach_ent = undefined;
var_0B.attach_bone = undefined;
}
var_13 = 0;
if(isdefined(level.scr_prim_lght))
{
var_13 = level.scr_prim_lght.size;
}
var_0B.id = var_13;
level.scr_prim_lght[var_13] = var_0B;
thread scriptable_primary_light_think(var_0B,var_0B.id);
return var_0B.id;
}
//Function Number: 8
scriptable_primary_light_centerofinterest(param_00,param_01,param_02,param_03)
{
var_04 = level.scr_prim_lght[param_00];
if(isdefined(param_02))
{
param_01 = undefined;
if(!isdefined(param_03))
{
param_03 = "tag_origin";
}
}
else if(!isdefined(param_01))
{
param_01 = (0,0,0);
}
level.scr_prim_lght[param_00].coi_bone = param_03;
level.scr_prim_lght[param_00].coi_pos = param_01;
level.scr_prim_lght[param_00].coi_ent = param_02;
}
//Function Number: 9
scriptable_primary_light_setstate_color(param_00,param_01,param_02,param_03)
{
scriptable_primary_light_setstate(param_00,param_01,undefined,undefined,undefined,param_02,undefined,undefined,undefined,param_03);
}
//Function Number: 10
scriptable_primary_light_setstate_pos(param_00,param_01,param_02,param_03)
{
scriptable_primary_light_setstate(param_00,param_01,param_02,undefined,undefined,undefined,undefined,undefined,undefined,param_03);
}
//Function Number: 11
scriptable_primary_light_setstate_dir(param_00,param_01,param_02,param_03)
{
scriptable_primary_light_setstate(param_00,param_01,undefined,param_02,undefined,undefined,undefined,undefined,undefined,param_03);
}
//Function Number: 12
scriptable_primary_light_setstate_intensity(param_00,param_01,param_02,param_03)
{
scriptable_primary_light_setstate(param_00,param_01,undefined,param_02,undefined,undefined,undefined,undefined,undefined,param_03);
}
//Function Number: 13
scriptable_primary_light_setstate_cone(param_00,param_01,param_02,param_03,param_04)
{
scriptable_primary_light_setstate(param_00,param_01,undefined,undefined,undefined,param_02,param_03,undefined,undefined,param_04);
}
//Function Number: 14
scriptable_primary_light_setstate_radius(param_00,param_01,param_02,param_03)
{
scriptable_primary_light_setstate(param_00,param_01,undefined,undefined,undefined,undefined,undefined,undefined,param_02,param_03);
}
//Function Number: 15
scriptable_primary_light_setstate(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
var_0A = level.scr_prim_lght[param_00];
var_0B = var_0A.time.size;
if(!isdefined(param_03))
{
param_03 = var_0A.dir[var_0B - 1];
}
if(!isdefined(param_02))
{
param_02 = var_0A.pos[var_0B - 1];
}
if(!isdefined(param_04))
{
param_04 = var_0A.intensity[var_0B - 1];
}
if(!isdefined(param_05))
{
param_05 = var_0A.color[var_0B - 1];
}
if(!isdefined(param_06))
{
param_06 = var_0A.innercone[var_0B - 1];
}
if(!isdefined(param_07))
{
param_07 = var_0A.outercone[var_0B - 1];
}
if(!isdefined(param_08))
{
param_08 = var_0A.radius[var_0B - 1];
}
var_0A.time[var_0B] = param_01;
var_0A.pos[var_0B] = param_02;
var_0A.dir[var_0B] = param_03;
var_0A.intensity[var_0B] = param_04;
var_0A.color[var_0B] = param_05;
var_0A.innercone[var_0B] = param_06;
var_0A.outercone[var_0B] = param_07;
var_0A.radius[var_0B] = param_08;
var_0A.trans_time[var_0B] = param_09;
}
//Function Number: 16
light_setup_global_dvars()
{
if(isusinghdr())
{
setsaveddvar("r_veil",1);
setsaveddvar("r_veilStrength",0.087);
setsaveddvar("r_tonemap",2);
setsaveddvar("r_tonemapBlack",0);
setsaveddvar("r_tonemapCrossover",1);
setsaveddvar("r_tonemapHighlightRange",16);
setsaveddvar("r_tonemapDarkEv",2.84);
setsaveddvar("r_tonemapMidEv",7.823);
setsaveddvar("r_tonemapLightEv",12.81);
setsaveddvar("r_tonemapDarkExposureAdjust",-3.17);
setsaveddvar("r_tonemapMidExposureAdjust",-0.0651);
setsaveddvar("r_tonemapLightExposureAdjust",1.47);
setsaveddvar("r_tonemapMinExposureAdjust",-3.17);
setsaveddvar("r_tonemapMaxExposureAdjust",2.3);
if(level.ps4)
{
setsaveddvar("r_tonemapShoulder",0.4);
}
else
{
setsaveddvar("r_tonemapShoulder",0.94);
}
setsaveddvar("r_tonemapToe",0);
setsaveddvar("r_tonemapWhite",512);
setsaveddvar("r_tonemapAdaptSpeed",0.02);
setsaveddvar("r_tonemapLockAutoExposureAdjust",0);
setsaveddvar("r_tonemapAutoExposureAdjust",0);
setsaveddvar("r_tonemapExposure",-10);
setsaveddvar("r_tonemapMaxExposure",-10);
}
if(isusingssao())
{
setsaveddvar("r_ssaoPower",12);
setsaveddvar("r_ssaoStrength",0.45);
setsaveddvar("r_ssaominstrengthdepth",25);
setsaveddvar("r_ssaomaxstrengthdepth",40);
}
}
//Function Number: 17
screen_effect_base(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
var_08 = newclienthudelem(level.player);
var_08.x = 0;
var_08.y = 0;
var_08.splatter = 1;
var_08.alignx = "left";
var_08.aligny = "top";
var_08.sort = 1;
var_08.foreground = 0;
var_08.horzalign = "fullscreen";
var_08.vertalign = "fullscreen";
var_08.alpha = param_04;
var_08 thread cleanup_overlay();
if(isdefined(param_05))
{
var_08.x = param_05;
}
if(isdefined(param_06))
{
var_08.y = param_06;
}
if(isdefined(param_07))
{
var_08.sort = param_07;
}
if(isarray(param_01))
{
foreach(var_0A in param_01)
{
var_08 setshader(var_0A,640,480);
}
}
else
{
var_08 setshader(param_01,640,480);
}
if(param_00 > 0)
{
var_08.alpha = 0;
var_0C = 1;
if(isdefined(param_02))
{
var_0C = param_02;
}
var_0D = 1;
if(isdefined(param_03))
{
var_0D = param_03;
}
var_0E = 1;
if(isdefined(param_04))
{
var_0E = clamp(param_04,0,1);
}
var_0F = 0.05;
if(var_0C > 0)
{
var_10 = 0;
var_11 = var_0E / var_0C / var_0F;
while(var_10 < var_0E)
{
var_08.alpha = var_10;
var_10 = var_10 + var_11;
wait(var_0F);
}
}
var_08.alpha = var_0E;
wait(param_00 - var_0C + var_0D);
if(var_0D > 0)
{
var_10 = var_0E;
var_12 = var_0E / var_0D / var_0F;
while(var_10 > 0)
{
var_08.alpha = var_10;
var_10 = var_10 - var_12;
wait(var_0F);
}
}
var_08.alpha = 0;
var_08 destroy();
}
level.overlay = var_08;
return level.overlay;
}
//Function Number: 18
cleanup_overlay()
{
level waittill("end_screen_effect");
self destroy();
}
//Function Number: 19
blood_splatter_simple()
{
}
//Function Number: 20
dirt_splatter_simple()
{
var_00 = newclienthudelem(level.player);
var_00.x = 0;
var_00.y = 0;
var_00 setshader("fullscreen_dirt_bottom",640,480);
var_00 setshader("fullscreen_dirt_bottom_b",640,480);
var_00 setshader("fullscreen_dirt_left",640,480);
var_00 setshader("fullscreen_dirt_right",640,480);
var_00.splatter = 1;
var_00.alignx = "left";
var_00.aligny = "top";
var_00.sort = 1;
var_00.foreground = 0;
var_00.horzalign = "fullscreen";
var_00.vertalign = "fullscreen";
var_00.alpha = 1;
var_00 fadeovertime(3);
var_00.alpha = 0;
}
//Function Number: 21
bob_mask(param_00)
{
self endon("stop_mask_bob");
var_01 = 0;
var_02 = level.player getplayerangles();
var_03 = 0;
var_04 = 0;
var_05 = param_00.y;
var_06 = param_00.x;
var_07 = 0.05;
for(;;)
{
if(isdefined(param_00))
{
var_08 = level.player getplayerangles();
var_09 = level.player getvelocity();
var_0A = var_09[2];
var_09 = var_09 - var_09 * (0,0,1);
var_0B = length(var_09);
var_0C = level.player getstance();
var_0D = clamp(var_0B,0,280) / 280;
var_0E = 0.1 + var_0D * 0.25;
var_0F = 0.1 + var_0D * 0.25;
var_10 = 1;
if(var_0C == "crouch")
{
var_10 = 0.75;
}
if(var_0C == "prone")
{
var_10 = 0.4;
}
if(var_0C == "stand")
{
var_10 = 1;
}
var_11 = 5;
var_12 = 0.9;
var_13 = level.player playerads();
var_14 = var_11 * 1 - var_13 + var_12 * var_13;
var_14 = var_14 * 1 + var_0D * 2;
var_15 = 5;
var_16 = var_15 * var_0E * var_10;
var_17 = var_15 * var_0F * var_10;
var_01 = var_01 + var_07 * 1000 * var_14;
var_18 = 57.29578;
var_19 = sin(var_01 * 0.001 * var_18);
var_1A = sin(var_01 * 0.0007 * var_18);
var_1B = angleclamp180(var_08[1] - var_02[1]);
var_1B = clamp(var_1B,-10,10);
var_1C = var_1B / 10 * var_15 * 1 - var_0E;
var_1D = var_1C - var_04;
var_04 = var_04 + clamp(var_1D,-1,1);
var_1E = clamp(var_0A,-200,200) / 200 * var_15 * 1 - var_0F;
var_1F = var_1E - var_03;
var_03 = var_03 + clamp(var_1F,-0.6,0.6);
param_00 moveovertime(0.05);
param_00.x = var_06 + clamp(var_19 * var_16 + var_04 - var_15,0 - 2 * var_15,0);
param_00.y = var_05 + clamp(var_1A * var_17 + var_03 - var_15,0 - 2 * var_15,0);
var_02 = var_08;
}
wait(var_07);
}
}
//Function Number: 22
gasmask_on_player(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_00))
{
param_00 = 1;
}
if(!isdefined(param_01))
{
param_01 = 0;
}
if(!isdefined(param_02))
{
param_02 = 1;
}
if(!isdefined(param_03))
{
param_03 = 0.25;
}
if(param_00)
{
maps\_hud_util::fade_out(param_01);
}
self.gasmask_hud_elem = newclienthudelem(self);
self.gasmask_hud_elem.x = 0;
self.gasmask_hud_elem.y = 0;
self.gasmask_hud_elem.horzalign = "fullscreen";
self.gasmask_hud_elem.vertalign = "fullscreen";
self.gasmask_hud_elem.foreground = 0;
self.gasmask_hud_elem.sort = -1;
self.gasmask_hud_elem setshader("gasmask_overlay_delta2_top",650,138);
self.gasmask_hud_elem.alpha = 1;
self.gasmask_hud_elem1 = newclienthudelem(self);
self.gasmask_hud_elem1.x = 0;
self.gasmask_hud_elem1.y = 352;
self.gasmask_hud_elem1.horzalign = "fullscreen";
self.gasmask_hud_elem1.vertalign = "fullscreen";
self.gasmask_hud_elem1.foreground = 0;
self.gasmask_hud_elem1.sort = -1;
self.gasmask_hud_elem1 setshader("gasmask_overlay_delta2_bottom",650,138);
self.gasmask_hud_elem1.alpha = 1;
level.player maps\_utility::delaythread(1,::gasmask_breathing);
thread bob_mask(self.gasmask_hud_elem);
thread bob_mask(self.gasmask_hud_elem1);
if(param_00)
{
wait(param_03);
maps\_hud_util::fade_in(param_02);
}
}
//Function Number: 23
gasmask_off_player()
{
maps\_hud_util::fade_out(0.25);
self notify("stop_mask_bob");
if(isdefined(self.gasmask_hud_elem))
{
self.gasmask_hud_elem destroy();
self.gasmask_hud_elem = undefined;
}
if(isdefined(self.gasmask_hud_elem1))
{
self.gasmask_hud_elem1 destroy();
self.gasmask_hud_elem1 = undefined;
}
level.player notify("stop_breathing");
wait(0.25);
maps\_hud_util::fade_in(1.5);
}
//Function Number: 24
gasmask_breathing()
{
var_00 = 1;
self endon("stop_breathing");
for(;;)
{
maps\_utility::play_sound_on_entity("breathing_gasmask");
wait(var_00);
}
}
//Function Number: 25
gasmask_on_npc()
{
self.gasmask = spawn("script_model",(0,0,0));
self.gasmask setmodel("prop_sas_gasmask");
self.gasmask linkto(self,"tag_eye",(-4,0,2),(120,0,0));
}
//Function Number: 26
gasmask_off_npc()
{
if(isdefined(self.gasmask))
{
self.gasmask delete();
}
}
//Function Number: 27
light_setup_common_flickerlight_presets()
{
create_flickerlight_preset("fire",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,8);
create_flickerlight_preset("blue_fire",(0.445098,0.62451,0.972549),(0.05,0.150451,0.3078432),0.005,0.2,8);
create_flickerlight_preset("white_fire",(0.972549,0.972549,0.972549),(0.2,0.2,0.2),0.005,0.2,8);
create_flickerlight_preset("white_fire_dim",(0.972549,0.972549,0.972549),(0.2,0.2,0.2),0.005,0.2,0.5);
create_flickerlight_preset("street_light",(0.972549,0.972549,0.972549),(0.572549,0.572549,0.572549),0.005,0.2,8);
create_flickerlight_preset("pulse",(0,0,0),(255,107,107),0.2,1,8);
create_flickerlight_preset("lightbulb",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,6);
create_flickerlight_preset("fluorescent",(0.972549,0.62451,0.345098),(0.2,0.1462746,0.0878432),0.005,0.2,7);
create_flickerlight_preset("static_screen",(0.63,0.72,0.92),(0.4,0.43,0.48),0.005,0.2,7);
create_flickerlight_preset("sfb_fire",(1,0.65,0.8),(0.4,0.24,0.3),0.005,0.2,8);
}
//Function Number: 28
create_flickerlight_motion_preset(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!isdefined(level._light.flicker_motion_presets))
{
level._light.flicker_motion_presets = [];
}
var_06 = spawnstruct();
var_06.color = param_01;
var_06.intensity = param_02;
var_06.maxmove = param_03;
var_06.mindelay = param_04;
var_06.maxdelay = param_05;
level._light.flicker_motion_presets[param_00] = var_06;
}
//Function Number: 29
get_flickerlight_motion_preset(param_00)
{
if(isdefined(level._light.flicker_motion_presets) && isdefined(level._light.flicker_motion_presets[param_00]))
{
return level._light.flicker_motion_presets[param_00];
}
return undefined;
}
//Function Number: 30
play_flickerlight_motion_preset(param_00,param_01)
{
var_02 = getent(param_01,"targetname");
if(!isdefined(var_02))
{
return;
}
var_03 = get_flickerlight_motion_preset(param_00);
if(!isdefined(var_03))
{
return;
}
var_02 setlightintensity(var_03.intensity);
var_02.islightflickering = 1;
var_02.islightflickerpaused = 0;
var_02 thread dyn_motion_flickerlight(var_03.color,var_03.intensity,var_03.maxmove,var_03.mindelay,var_03.maxdelay);
return var_02;
}
//Function Number: 31
create_flickerlight_preset(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!isdefined(level._light.flicker_presets))
{
level._light.flicker_presets = [];
}
var_06 = spawnstruct();
var_06.color0 = param_01;
var_06.color1 = param_02;
var_06.mindelay = param_03;
var_06.maxdelay = param_04;
var_06.intensity = param_05;
level._light.flicker_presets[param_00] = var_06;
}
//Function Number: 32
get_flickerlight_preset(param_00)
{
if(isdefined(level._light.flicker_presets) && isdefined(level._light.flicker_presets[param_00]))
{
return level._light.flicker_presets[param_00];
}
return undefined;
}
//Function Number: 33
play_flickerlight_preset(param_00,param_01,param_02)
{
var_03 = getent(param_01,"targetname");
if(!isdefined(var_03))
{
return;
}
var_04 = get_flickerlight_preset(param_00);
if(!isdefined(var_04))
{
return;
}
if(isdefined(param_02))
{
if(param_02 < 0)
{
param_02 = 0;
}
var_04.intensity = param_02;
}
var_03 setlightintensity(var_04.intensity);
var_03.islightflickering = 1;
var_03.islightflickerpaused = 0;
var_03 thread dyn_flickerlight(var_04.color0,var_04.color1,var_04.mindelay,var_04.maxdelay);
return var_03;
}
//Function Number: 34
stop_flickerlight(param_00,param_01,param_02)
{
var_03 = getent(param_01,"targetname");
if(!isdefined(var_03))
{
return;
}
if(!isdefined(var_03.islightflickering))
{
return;
}
if(isdefined(param_02))
{
if(param_02 < 0)
{
param_02 = 0;
}
}
var_03 setlightintensity(param_02);
var_03 notify("kill_flicker");
var_03.islightflickering = undefined;
}
//Function Number: 35
pause_flickerlight(param_00,param_01)
{
var_02 = getent(param_01,"targetname");
if(!isdefined(var_02))
{
return;
}
if(!isdefined(var_02.islightflickering))
{
return;
}
var_02.islightflickerpaused = 1;
}
//Function Number: 36
unpause_flickerlight(param_00,param_01)
{
var_02 = getent(param_01,"targetname");
if(!isdefined(var_02))
{
return;
}
if(!isdefined(var_02.islightflickering))
{
return;
}
var_02.islightflickerpaused = 0;
}
//Function Number: 37
dyn_flickerlight(param_00,param_01,param_02,param_03)
{
self endon("kill_flicker");
var_04 = param_00;
var_05 = 0;
for(;;)
{
if(self.islightflickerpaused)
{
wait(0.05);
continue;
}
var_06 = var_04;
var_04 = param_00 + param_01 - param_00 * randomfloat(1);
if(param_02 != param_03)
{
var_05 = var_05 + randomfloatrange(param_02,param_03);
}
else
{
var_05 = var_05 + param_02;
}
if(var_05 == 0)
{
var_05 = var_05 + 1E-07;
}
var_07 = var_06 - var_04 * 1 / var_05;
while(var_05 > 0 && !self.islightflickerpaused)
{
self setlightcolor(var_04 + var_07 * var_05);
wait(0.05);
var_05 = var_05 - 0.05;
}
}
}
//Function Number: 38
dyn_motion_flickerlight(param_00,param_01,param_02,param_03,param_04)
{
self endon("kill_flicker");
self setlightcolor(param_00);
self setlightintensity(param_01);
thread fire_flicker();
var_05 = self.origin;
var_06 = param_02;
var_07 = param_02;
var_08 = param_02;
var_09 = param_03;
var_0A = param_04;
for(;;)
{
var_0B = randomfloatrange(var_09,var_0A);
var_0C = var_06 * randomfloatrange(0.1,1);
var_0D = var_07 * randomfloatrange(0.1,1);
var_0E = var_08 * randomfloatrange(0.1,1);
var_0F = var_05 + (var_0C,var_0D,var_0E);
self moveto(var_0F,var_0B);
wait(var_0B);
while(self.islightflickerpaused)
{
wait(0.05);
}
}
}
//Function Number: 39
fire_flicker()
{
var_00 = self getlightintensity();
self endon("kill_flicker");
var_01 = var_00;
for(;;)
{
var_02 = randomfloatrange(var_00 * 0.5,var_00 * 1.2);
var_03 = randomfloatrange(0.2,1);
var_03 = var_03 * 0.75;
while(self.islightflickerpaused)
{
wait(0.05);
}
for(var_04 = 0;var_04 < var_03;var_04++)
{
var_05 = var_02 * var_04 / var_03 + var_01 * var_03 - var_04 / var_03;
self setlightintensity(var_05);
wait(0.05);
}
var_01 = var_02;
}
}
//Function Number: 40
create_light_object(param_00,param_01)
{
var_02 = spawnstruct();
var_03 = getentarray(param_00,"script_noteworthy");
var_02.lightents = [];
var_02.modelents = [];
foreach(var_05 in var_03)
{
if(var_05.classname == "script_model")
{
var_02.modelents[var_02.modelents.size] = var_05;
}
if(var_05.classname == "light_spot")
{
var_02.lightents[var_02.lightents.size] = var_05;
}
}
var_02.fxid = param_01;
return var_02;
}
//Function Number: 41
light_object_set_intensity(param_00,param_01,param_02)
{
foreach(var_04 in self.lightents)
{
var_04 setlightintensity(param_00);
var_04 setlightcolor(param_01);
}
if(param_02 && !isdefined(self.was_on))
{
common_scripts\_exploder::exploder(self.fxid);
foreach(var_07 in self.modelents)
{
var_07 show();
}
self.was_on = 1;
return;
}
if(isdefined(self.was_on) && !param_02)
{
maps\_utility::stop_exploder(self.fxid);
foreach(var_07 in self.modelents)
{
var_07 hide();
}
self.was_on = undefined;
}
}
//Function Number: 42
flickering_light(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
param_00 endon("kill_flicker");
var_07 = 0;
var_08 = 0;
for(;;)
{
var_09 = var_07;
var_07 = randomfloat(1);
if(param_05 != param_06)
{
var_08 = var_08 + randomfloatrange(param_05,param_06);
}
else
{
var_08 = var_08 + param_06;
}
if(var_08 == 0)
{
var_08 = var_08 + 1E-07;
}
var_0A = var_07 - var_09 / var_08;
while(var_08 > 0)
{
var_0B = var_07 - var_08 * var_0A;
var_0C = vectorlerp(param_01,param_03,var_0B);
var_0D = maps\_utility::linear_interpolate(var_0B,param_02,param_04);
var_0E = var_0B > 0.5;
param_00 light_object_set_intensity(var_0D,var_0C,var_0E);
wait(0.05);
var_08 = var_08 - 0.05;
}
}
}
//Function Number: 43
perlin_flickering_light(param_00,param_01,param_02,param_03,param_04)
{
var_05 = 2;
var_06 = 3;
var_07 = 5;
for(;;)
{
var_08 = clamp(perlinnoise2d(gettime() * 0.001 * var_05,0,var_06,2,var_07),0,1);
var_09 = vectorlerp(param_01,param_03,var_08);
var_0A = maps\_utility::linear_interpolate(var_08,param_02,param_04);
var_0B = var_08 > 0.5;
param_00 light_object_set_intensity(var_0A,var_09,var_0B);
wait(0.05);
}
}
//Function Number: 44
lerp_spot_intensity(param_00,param_01,param_02)
{
var_03 = getent(param_00,"targetname");
if(level.currentgen && isdefined(var_03) == 0)
{
return;
}
var_04 = var_03 getlightintensity();
var_03.endintensity = param_02;
var_05 = 0;
while(var_05 < param_01)
{
var_06 = var_04 + param_02 - var_04 * var_05 / param_01;
var_05 = var_05 + 0.05;
var_03 setlightintensity(var_06);
wait(0.05);
}
var_03 setlightintensity(param_02);
}
//Function Number: 45
lerp_spot_intensity_array(param_00,param_01,param_02)
{
var_03 = getentarray(param_00,"targetname");
foreach(var_05 in var_03)
{
var_06 = var_05 getlightintensity();
var_05.endintensity = param_02;
var_07 = 0;
while(var_07 < param_01)
{
var_08 = var_06 + param_02 - var_06 * var_07 / param_01;
var_07 = var_07 + 0.05;
var_05 setlightintensity(var_08);
wait(0.05);
}
var_05 setlightintensity(param_02);
}
}
//Function Number: 46
lerp_spot_radius(param_00,param_01,param_02)
{
var_03 = getent(param_00,"targetname");
if(level.currentgen && isdefined(var_03) == 0)
{
return;
}
var_04 = var_03 getlightradius();
var_03.endradius = param_02;
var_05 = 0;
while(var_05 < param_01)
{
var_06 = var_04 + param_02 - var_04 * var_05 / param_01;
var_05 = var_05 + 0.05;
var_03 setlightradius(var_06);
wait(0.05);
}
var_03 setlightradius(param_02);
}
//Function Number: 47
set_spot_intensity(param_00,param_01)
{
var_02 = getent(param_00,"targetname");
if(level.currentgen && isdefined(var_02) == 0)
{
return;
}
var_02 setlightintensity(param_01);
}
//Function Number: 48
lerp_spot_color(param_00,param_01,param_02)
{
var_03 = getent(param_00,"targetname");
if(level.currentgen && isdefined(var_03) == 0)
{
return;
}
var_04 = var_03 getlightcolor();
var_03.endcolor = param_02;
var_05 = 0;
while(var_05 < param_01)
{
var_06 = var_04 + param_02 - var_04 * var_05 / param_01;
var_05 = var_05 + 0.05;
var_03 setlightcolor(var_06);
wait(0.05);
}
var_03 setlightcolor(param_02);
}
//Function Number: 49
set_spot_color(param_00,param_01)
{
var_02 = getent(param_00,"targetname");
var_02 setlightcolor(param_01);
}
//Function Number: 50
light_setup_pulse_presets()
{
create_pulselight_preset("red",0.1,0.1,10000,(1,0.2,0.2),2);
create_pulselight_preset("red2",0.1,0.1,68200000,(1,0.2,0.2),2);
create_pulselight_preset("yellow",0.1,0.1,68200000,(1,0.7,0.2),2);
create_pulselight_preset("white",0.1,0.1,68200000,(1,1,1),2);
create_pulselight_preset("turbine_pulse",0.1,0.1,10000,(0.9,0.9,1),2);
}
//Function Number: 51
create_pulselight_preset(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!isdefined(level._light.pulse_presets))
{
level._light.pulse_presets = [];
}
var_06 = spawnstruct();
var_06.transition_on = param_01;
var_06.transition_off = param_02;
var_06.intensity = param_03;
var_06.color01 = param_04;
var_06.num = param_05;
level._light.pulse_presets[param_00] = var_06;
}
//Function Number: 52
get_pulselight_preset(param_00)
{
if(isdefined(level._light.pulse_presets) && isdefined(level._light.pulse_presets[param_00]))
{
return level._light.pulse_presets[param_00];
}
return undefined;
}
//Function Number: 53
play_pulse_preset(param_00,param_01,param_02,param_03)
{
var_04 = param_00 + param_01 + "_pulse";
level notify(var_04);
level endon(var_04);
var_05 = getent(param_01,"targetname");
if(!isdefined(var_05))
{
return;
}
var_06 = get_pulselight_preset(param_00);
if(!isdefined(var_06))
{
return;
}
if(isdefined(param_02))
{
if(param_02 < 0)
{
param_02 = 0;
}
var_06.intensity = param_02;
}
var_05 setlightintensity(var_06.intensity);
var_05 setlightcolor(var_06.color01);
var_07 = var_06.num;
var_08 = var_05 getlightintensity();
var_09 = 0.05;
var_0A = var_08;
var_0B = var_06.transition_on;
var_0C = var_06.transition_off;
var_0D = var_08 - var_09 / var_0B / 0.05;
var_0E = var_08 - var_09 / var_0C / 0.05;
var_0F = var_06.num;
for(;;)
{
var_10 = 1;
var_11 = 0;
while(var_11 < var_0C)
{
var_0A = var_0A - var_0E;
var_0A = clamp(var_0A,0,1000000000);
var_05 setlightintensity(var_0A);
var_11 = var_11 + 0.05;
wait(0.05);
}
if(isdefined(param_03))
{
maps\_utility::stop_exploder(param_03);
}
wait(0.8);
var_11 = 0;
while(var_11 < var_0B)
{
var_0A = var_0A + var_0D;
var_0A = clamp(var_0A,0,1000000000);
var_05 setlightintensity(var_0A);
var_11 = var_11 + 0.05;
wait(0.05);
}
if(isdefined(param_03))
{
common_scripts\_exploder::exploder(param_03);
}
wait(0.1);
while(var_10 < var_0F)
{
var_11 = 0;
while(var_11 < var_0C)
{
var_0A = var_0A - var_0E;
var_0A = clamp(var_0A,0,300000);
var_05 setlightintensity(var_0A);
var_11 = var_11 + 0.05;
wait(0.05);
}
wait(0.1);
var_11 = 0;
while(var_11 < var_0B)
{
var_0A = var_0A + var_0D;
var_0A = clamp(var_0A,0,300000);
var_05 setlightintensity(var_0A);
var_11 = var_11 + 0.05;
wait(0.05);
}
wait(0.1);
var_10 = var_10 + 1;
}
}
return var_05;
}
//Function Number: 54
model_flicker_preset(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B,param_0C)
{
self endon("death");
if(isdefined(param_0A))
{
level endon(param_0A);
}
var_0D = getentarray(param_00,"script_noteworthy");
if(!isdefined(var_0D))
{
return;
}
var_0E = [];
var_0F = [];
foreach(var_11 in var_0D)
{
if(var_11.classname == "script_model")
{
var_0F[var_0F.size] = var_11;
}
if(var_11.classname == "light_spot" || var_11.classname == "light_omni")
{
var_0E[var_0E.size] = var_11;
var_12 = param_02;
if(param_03 > param_02)
{
var_12 = randomfloatrange(param_02,param_03);
}
var_11 setlightintensity(var_12);
}
}
var_14 = 0;
var_15 = undefined;
var_16 = undefined;
var_17 = undefined;
var_18 = undefined;
var_19 = undefined;
var_1A = 1;
if(isarray(param_0B))
{
var_15 = param_0B["on"];
var_16 = param_0B["off"];
var_17 = param_0B["loop"];
var_19 = param_0B["vol_env"];
if(isstring(var_17))
{
var_18 = "model_flicker_preset_" + soundscripts\_snd::snd_new_guid();
}
}
var_1B = 0;
if(isdefined(param_04))
{
common_scripts\_exploder::exploder(param_04);
}
while(var_1B < param_01 || param_01 == 0)
{
var_1C = undefined;
if(isdefined(param_0C))
{
var_1D = param_0C;
}
else
{
var_1D = 0.05;
}
var_1E = 0;
if(isdefined(param_06) && isdefined(param_07))
{
var_1F = randomfloatrange(param_06,param_07);
}
else
{
var_1F = randomfloatrange(0.1,0.8);
}
if(isdefined(param_08) && isdefined(param_09))
{
var_20 = randomfloatrange(param_08,param_09);
}
else
{
var_20 = randomfloatrange(0.1,0.8);
}
if(isdefined(param_05))
{
foreach(var_22 in var_0E)
{
if(var_14)
{
if(isstring(var_18))
{
level notify(var_18);
}
if(isdefined(var_16))
{
var_22 soundscripts\_snd_playsound::snd_play_linked(var_16,undefined,undefined,undefined,var_1A);
}
var_14 = 0;
}
}
maps\_utility::stop_exploder(param_05);
}
foreach(var_25 in var_0F)
{
var_25 hide();
}
foreach(var_28 in var_0E)
{
var_1C = var_28 getlightintensity();
var_28 setlightintensity(var_1D);
}
wait(var_20);
if(isdefined(param_05))
{
foreach(var_22 in var_0E)
{
var_12 = param_02;
if(param_03 > param_02)
{
var_12 = randomfloatrange(param_02,param_03);
}
var_22 setlightintensity(var_12);
if(isdefined(var_15) && !var_14)
{
if(isarray(var_19))
{
var_1A = soundscripts\_snd::snd_map(var_12,var_19);
}
if(isdefined(var_15))
{
var_22 soundscripts\_snd_playsound::snd_play_linked(var_15,undefined,undefined,undefined,var_1A);
}
if(isdefined(var_17))
{
var_22 soundscripts\_snd_playsound::snd_play_loop_linked(var_17,var_18,0,0.1,var_1A);
}
var_14 = 1;
}
}
common_scripts\_exploder::exploder(param_05);
}
foreach(var_25 in var_0F)
{
var_25 show();
}
foreach(var_28 in var_0E)
{
var_28 setlightintensity(var_1C);
}
wait(var_1F);
if(param_01 != 0)
{
var_1B++;
}
}
}
//Function Number: 55
light_setup_common_dof_presets()
{
create_dof_preset("default",1,1,4.5,500,500,0.05,0.5);
create_dof_preset("viewmodel_blur",1,1,4.5,500,500,0.05,0.5);
create_dof_preset("close_none_viewmodel_blur",1,50,4,1000,7000,0.05,0.5);
create_dof_preset("river",1,104,4.5,500,500,1.8,0.5);
create_dof_preset("medium_none_viewmodel_blur",1,500,10,1000,7000,0.05,0.5);
}
//Function Number: 56
create_dof_preset(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(!isdefined(level._light.dof_presets))
{
level._light.dof_presets = [];
}
var_08 = [];
var_08["nearStart"] = param_01;
var_08["nearEnd"] = param_02;
var_08["nearBlur"] = param_03;
var_08["farStart"] = param_04;
var_08["farEnd"] = param_05;
var_08["farBlur"] = param_06;
var_08["bias"] = param_07;
level._light.dof_presets[param_00] = var_08;
}
//Function Number: 57
light_get_dof_preset(param_00)
{
if(isdefined(level._light.dof_presets) && isdefined(level._light.dof_presets[param_00]))
{
return level._light.dof_presets[param_00];
}
}
//Function Number: 58
blend_dof_presets(param_00,param_01,param_02)
{
if(isdefined(level._light.dof_presets))
{
var_03 = light_get_dof_preset(param_00);
var_04 = light_get_dof_preset(param_01);
if(isdefined(var_03) && isdefined(var_04))
{
maps\_art::dof_enable_script(var_04["nearStart"],var_04["nearEnd"],var_04["nearBlur"],var_04["farStart"],var_04["farEnd"],var_04["farBlur"],param_02,var_04["bias"]);
return;
}
}
}
//Function Number: 59
light_setup_common_dof_viewmodel_presets()
{
create_dof_viewmodel_preset("default",2,8);
create_dof_viewmodel_preset("viewmodel_blur",10,90);
create_dof_viewmodel_preset("max",2,128);
}
//Function Number: 60
create_dof_viewmodel_preset(param_00,param_01,param_02)
{
if(!isdefined(level._light.dof_viewmodel_presets))
{
level._light.dof_viewmodel_presets = [];
}
var_03["start"] = param_01;
var_03["end"] = param_02;
level.player.viewmodel_dof_start = var_03["start"];
level.player.viewmodel_dof_end = var_03["end"];
level._light.dof_viewmodel_presets[param_00] = var_03;
}
//Function Number: 61
light_get_dof_viewmodel_preset(param_00)
{
if(isdefined(level._light.dof_viewmodel_presets) && isdefined(level._light.dof_viewmodel_presets[param_00]))
{
return level._light.dof_viewmodel_presets[param_00];
}
}
//Function Number: 62
blend_dof_viewmodel_presets(param_00,param_01,param_02)
{
if(isdefined(level._light.dof_viewmodel_presets))
{
var_03 = light_get_dof_viewmodel_preset(param_00);
var_04 = light_get_dof_viewmodel_preset(param_01);
if(isdefined(var_03) && isdefined(var_04))
{
blend_viewmodel_dof(var_03,var_04,param_02);
return;
}
}
}
//Function Number: 63
blend_viewmodel_dof(param_00,param_01,param_02)
{
if(param_02 > 0)
{
var_03 = param_01["start"] - param_00["start"] * 0.05 / param_02;
var_04 = param_01["end"] - param_00["end"] * 0.05 / param_02;
thread lerp_viewmodel_dof(param_01,var_03,var_04);
return;
}
level.player.viewmodel_dof_start = param_01["start"];
level.player.viewmodel_dof_end = param_01["end"];
}
//Function Number: 64
lerp_viewmodel_dof(param_00,param_01,param_02)
{
level notify("lerp_viewmodel_dof");
level endon("lerp_viewmodel_dof");
var_03 = 0;
var_04 = 0;
while(!var_03 || !var_04)
{
if(!var_03)
{
level.player.viewmodel_dof_start = level.player.viewmodel_dof_start + param_01;
if((param_01 > 0 && level.player.viewmodel_dof_start > param_00["start"]) || param_01 < 0 && level.player.viewmodel_dof_start < param_00["start"])
{
level.player.viewmodel_dof_start = param_00["start"];
var_03 = 1;
}
}
if(!var_04)
{
level.player.viewmodel_dof_end = level.player.viewmodel_dof_end + param_02;
if((param_02 > 0 && level.player.viewmodel_dof_end > param_00["end"]) || param_02 < 0 && level.player.viewmodel_dof_end < param_00["end"])
{
level.player.viewmodel_dof_end = param_00["end"];
var_04 = 1;
}
}
level.player setviewmodeldepthoffield(level.player.viewmodel_dof_start,level.player.viewmodel_dof_end);
wait(0.05);
}
}
//Function Number: 65
light_message_init()
{
level._light.messages = [];
}
//Function Number: 66
light_debug_dvar_init()
{
}
//Function Number: 67
light_register_message(param_00,param_01)
{
level._light.messages[param_00] = param_01;
}
//Function Number: 68
light_message(param_00,param_01,param_02,param_03)
{
if(isdefined(level._light.messages[param_00]))
{
if(isdefined(param_03))
{
thread [[ level._light.messages[param_00] ]](param_01,param_02,param_03);
return;
}
if(isdefined(param_02))
{
thread [[ level._light.messages[param_00] ]](param_01,param_02);
return;
}
if(isdefined(param_01))
{
thread [[ level._light.messages[param_00] ]](param_01);
return;
}
thread [[ level._light.messages[param_00] ]]();
return;
}
}
//Function Number: 69
lerp_light_fov_range(param_00,param_01,param_02,param_03,param_04)
{
var_05 = 0;
while(var_05 <= param_04)
{
var_06 = var_05 / param_04;
self setlightfovrange(maps\_utility::linear_interpolate(var_06,param_00,param_02),maps\_utility::linear_interpolate(var_06,param_01,param_03));
wait 0.05;
var_05 = var_05 + 0.05;
}
}